Changeset - r15328:95a3e6ee8244
[Not reviewed]
master
0 3 0
frosch - 14 years ago 2010-06-13 14:15:11
frosch@openttd.org
(svn r19979) -Codechange: Separate static loadable fields from Company into separate struct.
3 files changed with 68 insertions and 50 deletions:
0 comments (0 inline, 0 general)
src/company_base.h
Show inline comments
 
@@ -33,10 +33,8 @@ typedef Pool<Company, CompanyByte, 1, MA
 
extern CompanyPool _company_pool;
 

	
 

	
 
struct Company : CompanyPool::PoolItem<&_company_pool> {
 
	Company(uint16 name_1 = 0, bool is_ai = false);
 
	~Company();
 

	
 
/** Statically loadable part of Company pool item */
 
struct CompanyProperties {
 
	uint32 name_2;
 
	uint16 name_1;
 
	char *name;
 
@@ -52,9 +50,9 @@ struct Company : CompanyPool::PoolItem<&
 
	Money current_loan;
 

	
 
	byte colour;
 
	Livery livery[LS_END];
 

	
 
	RailTypes avail_railtypes;
 
	RoadTypes avail_roadtypes;
 

	
 
	byte block_preview;
 

	
 
	uint32 cargo_types; ///< which cargo types were transported the last year
 
@@ -74,12 +72,29 @@ struct Company : CompanyPool::PoolItem<&
 

	
 
	bool is_ai;
 

	
 
	Money yearly_expenses[3][EXPENSES_END];
 
	CompanyEconomyEntry cur_economy;
 
	CompanyEconomyEntry old_economy[MAX_HISTORY_MONTHS];
 

	
 
	CompanyProperties() : name(NULL), president_name(NULL) {}
 

	
 
	~CompanyProperties()
 
	{
 
		free(this->name);
 
		free(this->president_name);
 
	}
 
};
 

	
 
struct Company : CompanyPool::PoolItem<&_company_pool>, CompanyProperties {
 
	Company(uint16 name_1 = 0, bool is_ai = false);
 
	~Company();
 

	
 
	Livery livery[LS_END];
 
	RoadTypes avail_roadtypes;
 

	
 
	class AIInstance *ai_instance;
 
	class AIInfo *ai_info;
 

	
 
	Money yearly_expenses[3][EXPENSES_END];
 
	CompanyEconomyEntry cur_economy;
 
	CompanyEconomyEntry old_economy[MAX_HISTORY_MONTHS];
 
	EngineRenewList engine_renew_list; ///< Defined later
 
	CompanySettings settings;          ///< settings specific for each company
 
	uint16 *num_engines; ///< caches the number of engines of each type the company owns (no need to save this)
src/company_cmd.cpp
Show inline comments
 
@@ -50,19 +50,17 @@ uint _cur_company_tick_index;           
 
CompanyPool _company_pool("Company");
 
INSTANTIATE_POOL_METHODS(Company)
 

	
 
Company::Company(uint16 name_1, bool is_ai) :
 
	name_1(name_1),
 
	location_of_HQ(INVALID_TILE),
 
	is_ai(is_ai)
 
Company::Company(uint16 name_1, bool is_ai)
 
{
 
	this->name_1 = name_1;
 
	this->location_of_HQ = INVALID_TILE;
 
	this->is_ai = is_ai;
 
	for (uint j = 0; j < 4; j++) this->share_owners[j] = COMPANY_SPECTATOR;
 
	InvalidateWindowData(WC_PERFORMANCE_DETAIL, 0, INVALID_COMPANY);
 
}
 

	
 
Company::~Company()
 
{
 
	free(this->name);
 
	free(this->president_name);
 
	free(this->num_engines);
 

	
 
	if (CleaningPool()) return;
src/saveload/company_sl.cpp
Show inline comments
 
@@ -88,56 +88,60 @@ CompanyManagerFace ConvertFromOldCompany
 

	
 
/* Save/load of companies */
 
static const SaveLoad _company_desc[] = {
 
	    SLE_VAR(Company, name_2,          SLE_UINT32),
 
	    SLE_VAR(Company, name_1,          SLE_STRINGID),
 
	SLE_CONDSTR(Company, name,            SLE_STR, 0,                       84, SL_MAX_VERSION),
 
	    SLE_VAR(CompanyProperties, name_2,          SLE_UINT32),
 
	    SLE_VAR(CompanyProperties, name_1,          SLE_STRINGID),
 
	SLE_CONDSTR(CompanyProperties, name,            SLE_STR, 0,                       84, SL_MAX_VERSION),
 

	
 
	    SLE_VAR(Company, president_name_1, SLE_UINT16),
 
	    SLE_VAR(Company, president_name_2, SLE_UINT32),
 
	SLE_CONDSTR(Company, president_name,  SLE_STR, 0,                       84, SL_MAX_VERSION),
 
	    SLE_VAR(CompanyProperties, president_name_1, SLE_UINT16),
 
	    SLE_VAR(CompanyProperties, president_name_2, SLE_UINT32),
 
	SLE_CONDSTR(CompanyProperties, president_name,  SLE_STR, 0,                       84, SL_MAX_VERSION),
 

	
 
	    SLE_VAR(Company, face,            SLE_UINT32),
 
	    SLE_VAR(CompanyProperties, face,            SLE_UINT32),
 

	
 
	/* money was changed to a 64 bit field in savegame version 1. */
 
	SLE_CONDVAR(Company, money,                 SLE_VAR_I64 | SLE_FILE_I32,  0, 0),
 
	SLE_CONDVAR(Company, money,                 SLE_INT64,                   1, SL_MAX_VERSION),
 
	SLE_CONDVAR(CompanyProperties, money,                 SLE_VAR_I64 | SLE_FILE_I32,  0, 0),
 
	SLE_CONDVAR(CompanyProperties, money,                 SLE_INT64,                   1, SL_MAX_VERSION),
 

	
 
	SLE_CONDVAR(Company, current_loan,          SLE_VAR_I64 | SLE_FILE_I32,  0, 64),
 
	SLE_CONDVAR(Company, current_loan,          SLE_INT64,                  65, SL_MAX_VERSION),
 
	SLE_CONDVAR(CompanyProperties, current_loan,          SLE_VAR_I64 | SLE_FILE_I32,  0, 64),
 
	SLE_CONDVAR(CompanyProperties, current_loan,          SLE_INT64,                  65, SL_MAX_VERSION),
 

	
 
	    SLE_VAR(Company, colour,                SLE_UINT8),
 
	    SLE_VAR(Company, money_fraction,        SLE_UINT8),
 
	SLE_CONDVAR(Company, avail_railtypes,       SLE_UINT8,                   0, 57),
 
	    SLE_VAR(Company, block_preview,         SLE_UINT8),
 
	    SLE_VAR(CompanyProperties, colour,                SLE_UINT8),
 
	    SLE_VAR(CompanyProperties, money_fraction,        SLE_UINT8),
 
	SLE_CONDVAR(CompanyProperties, avail_railtypes,       SLE_UINT8,                   0, 57),
 
	    SLE_VAR(CompanyProperties, block_preview,         SLE_UINT8),
 

	
 
	SLE_CONDVAR(Company, cargo_types,           SLE_FILE_U16 | SLE_VAR_U32,  0, 93),
 
	SLE_CONDVAR(Company, cargo_types,           SLE_UINT32,                 94, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, location_of_HQ,        SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
 
	SLE_CONDVAR(Company, location_of_HQ,        SLE_UINT32,                  6, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, last_build_coordinate, SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
 
	SLE_CONDVAR(Company, last_build_coordinate, SLE_UINT32,                  6, SL_MAX_VERSION),
 
	SLE_CONDVAR(Company, inaugurated_year,      SLE_FILE_U8  | SLE_VAR_I32,  0, 30),
 
	SLE_CONDVAR(Company, inaugurated_year,      SLE_INT32,                  31, SL_MAX_VERSION),
 
	SLE_CONDVAR(CompanyProperties, cargo_types,           SLE_FILE_U16 | SLE_VAR_U32,  0, 93),
 
	SLE_CONDVAR(CompanyProperties, cargo_types,           SLE_UINT32,                 94, SL_MAX_VERSION),
 
	SLE_CONDVAR(CompanyProperties, location_of_HQ,        SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
 
	SLE_CONDVAR(CompanyProperties, location_of_HQ,        SLE_UINT32,                  6, SL_MAX_VERSION),
 
	SLE_CONDVAR(CompanyProperties, last_build_coordinate, SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
 
	SLE_CONDVAR(CompanyProperties, last_build_coordinate, SLE_UINT32,                  6, SL_MAX_VERSION),
 
	SLE_CONDVAR(CompanyProperties, inaugurated_year,      SLE_FILE_U8  | SLE_VAR_I32,  0, 30),
 
	SLE_CONDVAR(CompanyProperties, inaugurated_year,      SLE_INT32,                  31, SL_MAX_VERSION),
 

	
 
	    SLE_ARR(Company, share_owners,          SLE_UINT8, 4),
 
	    SLE_ARR(CompanyProperties, share_owners,          SLE_UINT8, 4),
 

	
 
	    SLE_VAR(Company, num_valid_stat_ent,    SLE_UINT8),
 
	    SLE_VAR(CompanyProperties, num_valid_stat_ent,    SLE_UINT8),
 

	
 
	    SLE_VAR(Company, quarters_of_bankruptcy,SLE_UINT8),
 
	SLE_CONDVAR(Company, bankrupt_asked,        SLE_FILE_U8  | SLE_VAR_U16,  0, 103),
 
	SLE_CONDVAR(Company, bankrupt_asked,        SLE_UINT16,                104, SL_MAX_VERSION),
 
	    SLE_VAR(Company, bankrupt_timeout,      SLE_INT16),
 
	SLE_CONDVAR(Company, bankrupt_value,        SLE_VAR_I64 | SLE_FILE_I32,  0, 64),
 
	SLE_CONDVAR(Company, bankrupt_value,        SLE_INT64,                  65, SL_MAX_VERSION),
 
	    SLE_VAR(CompanyProperties, quarters_of_bankruptcy,SLE_UINT8),
 
	SLE_CONDVAR(CompanyProperties, bankrupt_asked,        SLE_FILE_U8  | SLE_VAR_U16,  0, 103),
 
	SLE_CONDVAR(CompanyProperties, bankrupt_asked,        SLE_UINT16,                104, SL_MAX_VERSION),
 
	    SLE_VAR(CompanyProperties, bankrupt_timeout,      SLE_INT16),
 
	SLE_CONDVAR(CompanyProperties, bankrupt_value,        SLE_VAR_I64 | SLE_FILE_I32,  0, 64),
 
	SLE_CONDVAR(CompanyProperties, bankrupt_value,        SLE_INT64,                  65, SL_MAX_VERSION),
 

	
 
	/* yearly expenses was changed to 64-bit in savegame version 2. */
 
	SLE_CONDARR(Company, yearly_expenses,       SLE_FILE_I32 | SLE_VAR_I64, 3 * 13, 0, 1),
 
	SLE_CONDARR(Company, yearly_expenses,       SLE_INT64, 3 * 13,                  2, SL_MAX_VERSION),
 
	SLE_CONDARR(CompanyProperties, yearly_expenses,       SLE_FILE_I32 | SLE_VAR_I64, 3 * 13, 0, 1),
 
	SLE_CONDARR(CompanyProperties, yearly_expenses,       SLE_INT64, 3 * 13,                  2, SL_MAX_VERSION),
 

	
 
	SLE_CONDVAR(Company, is_ai,                 SLE_BOOL,                    2, SL_MAX_VERSION),
 
	SLE_CONDVAR(CompanyProperties, is_ai,                 SLE_BOOL,                    2, SL_MAX_VERSION),
 
	SLE_CONDNULL(1, 107, 111), ///< is_noai
 
	SLE_CONDNULL(1, 4, 99),
 

	
 
	SLE_END()
 
};
 

	
 
static const SaveLoad _company_settings_desc[] = {
 
	/* Engine renewal settings */
 
	SLE_CONDNULL(512, 16, 18),
 
	SLE_CONDREF(Company, engine_renew_list,            REF_ENGINE_RENEWS,   19, SL_MAX_VERSION),
 
@@ -230,7 +234,8 @@ static void SaveLoad_PLYR(Company *c)
 
{
 
	int i;
 

	
 
	SlObject(c, _company_desc);
 
	SlObject((CompanyProperties *)c, _company_desc);
 
	SlObject(c, _company_settings_desc);
 

	
 
	/* Keep backwards compatible for savegames, so load the old AI block */
 
	if (CheckSavegameVersion(107) && c->is_ai) {
0 comments (0 inline, 0 general)