(svn r16444) -Codechange: Set all company settings to their default value for a new company instead of zeroing them.

This commit is contained in:
yexo 2009-05-26 23:14:02 +00:00
parent 118d444be2
commit d982ec81df
4 changed files with 16 additions and 6 deletions

View File

@ -436,11 +436,7 @@ Company *DoStartupNewCompany(bool is_ai)
c->inaugurated_year = _cur_year;
RandomCompanyManagerFaceBits(c->face, (GenderEthnicity)Random(), false); // create a random company manager face
/* Settings for non-ai companies are copied from the client settings later. */
if (is_ai) {
c->settings.engine_renew_money = 100000;
c->settings.engine_renew_months = 6;
}
SetDefaultCompanySettings(c->index);
GeneratePresidentName(c);

View File

@ -7,7 +7,6 @@
#include "heightmap.h"
#include "gui.h"
#include "variables.h"
#include "settings_func.h"
#include "debug.h"
#include "genworld.h"
#include "network/network.h"
@ -27,6 +26,7 @@
#include "querystring_gui.h"
#include "town.h"
#include "thread.h"
#include "settings_func.h"
#include "table/strings.h"
#include "table/sprites.h"

View File

@ -1507,6 +1507,19 @@ void SetCompanySetting(uint index, int32 value)
}
}
/**
* Set the company settings for a new company to their default values.
*/
void SetDefaultCompanySettings(CompanyID cid)
{
Company *c = Company::Get(cid);
const SettingDesc *sd;
for (sd = _company_settings; sd->save.cmd != SL_END; sd++) {
void *var = GetVariableAddress(&c->settings, &sd->save);
Write_ValidateSetting(var, sd, (int32)sd->desc.def);
}
}
/**
* Sync all company settings in a multiplayer game.
*/

View File

@ -27,5 +27,6 @@ void DeleteGRFPresetFromConfig(const char *config_name);
uint GetCompanySettingIndex(const char *name);
void SyncCompanySettings();
void SetDefaultCompanySettings(CompanyID cid);
#endif /* SETTINGS_FUNC_H */