Changeset - r15765:a259baeea62f
[Not reviewed]
master
0 9 1
rubidium - 14 years ago 2010-08-11 18:57:48
rubidium@openttd.org
(svn r20449) -Codechange: unduplicate saving/loading of NewGRF ID + local id -> OpenTTD spec mappings
10 files changed with 90 insertions and 111 deletions:
0 comments (0 inline, 0 general)
projects/openttd_vs100.vcxproj
Show inline comments
 
@@ -724,6 +724,7 @@
 
    <ClCompile Include="..\src\saveload\map_sl.cpp" />
 
    <ClCompile Include="..\src\saveload\misc_sl.cpp" />
 
    <ClCompile Include="..\src\saveload\newgrf_sl.cpp" />
 
    <ClInclude Include="..\src\saveload\newgrf_sl.h" />
 
    <ClCompile Include="..\src\saveload\oldloader.cpp" />
 
    <ClInclude Include="..\src\saveload\oldloader.h" />
 
    <ClCompile Include="..\src\saveload\oldloader_sl.cpp" />
projects/openttd_vs100.vcxproj.filters
Show inline comments
 
@@ -1375,6 +1375,9 @@
 
    <ClCompile Include="..\src\saveload\newgrf_sl.cpp">
 
      <Filter>Save/Load handlers</Filter>
 
    </ClCompile>
 
    <ClInclude Include="..\src\saveload\newgrf_sl.h">
 
      <Filter>Save/Load handlers</Filter>
 
    </ClInclude>
 
    <ClCompile Include="..\src\saveload\oldloader.cpp">
 
      <Filter>Save/Load handlers</Filter>
 
    </ClCompile>
projects/openttd_vs80.vcproj
Show inline comments
 
@@ -2184,6 +2184,10 @@
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\saveload\newgrf_sl.h"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\saveload\oldloader.cpp"
 
				>
 
			</File>
projects/openttd_vs90.vcproj
Show inline comments
 
@@ -2181,6 +2181,10 @@
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\saveload\newgrf_sl.h"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\saveload\oldloader.cpp"
 
				>
 
			</File>
source.list
Show inline comments
 
@@ -475,6 +475,7 @@ saveload/labelmaps_sl.cpp
 
saveload/map_sl.cpp
 
saveload/misc_sl.cpp
 
saveload/newgrf_sl.cpp
 
saveload/newgrf_sl.h
 
saveload/oldloader.cpp
 
saveload/oldloader.h
 
saveload/oldloader_sl.cpp
src/saveload/airport_sl.cpp
Show inline comments
 
@@ -10,45 +10,18 @@
 
/** @file airport_sl.cpp Code handling saving and loading airport ids */
 

	
 
#include "../stdafx.h"
 
#include "../newgrf_commons.h"
 

	
 
#include "saveload.h"
 

	
 
/**
 
 * Save and load the mapping between the airport id in the AirportSpec array
 
 * and the grf file it came from.
 
 */
 
static const SaveLoad _airport_id_mapping_desc[] = {
 
	SLE_VAR(EntityIDMapping, grfid,         SLE_UINT32),
 
	SLE_VAR(EntityIDMapping, entity_id,     SLE_UINT8),
 
	SLE_VAR(EntityIDMapping, substitute_id, SLE_UINT8),
 
	SLE_END()
 
};
 
#include "newgrf_sl.h"
 

	
 
static void Save_APID()
 
{
 
	uint i;
 
	uint j = _airport_mngr.GetMaxMapping();
 

	
 
	for (i = 0; i < j; i++) {
 
		SlSetArrayIndex(i);
 
		SlObject(&_airport_mngr.mapping_ID[i], _airport_id_mapping_desc);
 
	}
 
	Save_NewGRFMapping(_airport_mngr);
 
}
 

	
 
static void Load_APID()
 
{
 
	/* clear the current mapping stored.
 
	 * This will create the manager if ever it is not yet done */
 
	_airport_mngr.ResetMapping();
 

	
 
	uint max_id = _airport_mngr.GetMaxMapping();
 

	
 
	int index;
 
	while ((index = SlIterateArray()) != -1) {
 
		if ((uint)index >= max_id) break;
 
		SlObject(&_airport_mngr.mapping_ID[index], _airport_id_mapping_desc);
 
	}
 
	Load_NewGRFMapping(_airport_mngr);
 
}
 

	
 
extern const ChunkHandler _airport_chunk_handlers[] = {
src/saveload/industry_sl.cpp
Show inline comments
 
@@ -11,9 +11,9 @@
 

	
 
#include "../stdafx.h"
 
#include "../industry.h"
 
#include "../newgrf_commons.h"
 

	
 
#include "saveload.h"
 
#include "newgrf_sl.h"
 

	
 
static const SaveLoad _industry_desc[] = {
 
	SLE_CONDVAR(Industry, location.tile,              SLE_FILE_U16 | SLE_VAR_U32,  0, 5),
 
@@ -71,35 +71,14 @@ static void Save_INDY()
 
	}
 
}
 

	
 
/* Save and load the mapping between the industry/tile id on the map, and the grf file
 
 * it came from. */
 
static const SaveLoad _industries_id_mapping_desc[] = {
 
	SLE_VAR(EntityIDMapping, grfid,         SLE_UINT32),
 
	SLE_VAR(EntityIDMapping, entity_id,     SLE_UINT8),
 
	SLE_VAR(EntityIDMapping, substitute_id, SLE_UINT8),
 
	SLE_END()
 
};
 

	
 
static void Save_IIDS()
 
{
 
	uint i;
 
	uint j = _industry_mngr.GetMaxMapping();
 

	
 
	for (i = 0; i < j; i++) {
 
		SlSetArrayIndex(i);
 
		SlObject(&_industry_mngr.mapping_ID[i], _industries_id_mapping_desc);
 
	}
 
	Save_NewGRFMapping(_industry_mngr);
 
}
 

	
 
static void Save_TIDS()
 
{
 
	uint i;
 
	uint j = _industile_mngr.GetMaxMapping();
 

	
 
	for (i = 0; i < j; i++) {
 
		SlSetArrayIndex(i);
 
		SlObject(&_industile_mngr.mapping_ID[i], _industries_id_mapping_desc);
 
	}
 
	Save_NewGRFMapping(_industile_mngr);
 
}
 

	
 
static void Load_INDY()
 
@@ -117,38 +96,12 @@ static void Load_INDY()
 

	
 
static void Load_IIDS()
 
{
 
	int index;
 
	uint max_id;
 

	
 
	/* clear the current mapping stored.
 
	 * This will create the manager if ever it is not yet done */
 
	_industry_mngr.ResetMapping();
 

	
 
	/* get boundary for the temporary map loader NUM_INDUSTRYTYPES? */
 
	max_id = _industry_mngr.GetMaxMapping();
 

	
 
	while ((index = SlIterateArray()) != -1) {
 
		if ((uint)index >= max_id) break;
 
		SlObject(&_industry_mngr.mapping_ID[index], _industries_id_mapping_desc);
 
	}
 
	Load_NewGRFMapping(_industry_mngr);
 
}
 

	
 
static void Load_TIDS()
 
{
 
	int index;
 
	uint max_id;
 

	
 
	/* clear the current mapping stored.
 
	 * This will create the manager if ever it is not yet done */
 
	_industile_mngr.ResetMapping();
 

	
 
	/* get boundary for the temporary map loader NUM_INDUSTILES? */
 
	max_id = _industile_mngr.GetMaxMapping();
 

	
 
	while ((index = SlIterateArray()) != -1) {
 
		if ((uint)index >= max_id) break;
 
		SlObject(&_industile_mngr.mapping_ID[index], _industries_id_mapping_desc);
 
	}
 
	Load_NewGRFMapping(_industile_mngr);
 
}
 

	
 
static void Ptrs_INDY()
src/saveload/newgrf_sl.cpp
Show inline comments
 
@@ -17,6 +17,39 @@
 
#include "../fios.h"
 

	
 
#include "saveload.h"
 
#include "newgrf_sl.h"
 

	
 
/** Save and load the mapping between a spec and the NewGRF it came from. */
 
static const SaveLoad _newgrf_mapping_desc[] = {
 
	SLE_VAR(EntityIDMapping, grfid,         SLE_UINT32),
 
	SLE_VAR(EntityIDMapping, entity_id,     SLE_UINT8),
 
	SLE_VAR(EntityIDMapping, substitute_id, SLE_UINT8),
 
	SLE_END()
 
};
 

	
 
void Save_NewGRFMapping(const OverrideManagerBase &mapping)
 
{
 
	for (uint i = 0; i < mapping.GetMaxMapping(); i++) {
 
		SlSetArrayIndex(i);
 
		SlObject(&mapping.mapping_ID[i], _newgrf_mapping_desc);
 
	}
 
}
 

	
 
void Load_NewGRFMapping(OverrideManagerBase &mapping)
 
{
 
	/* Clear the current mapping stored.
 
	 * This will create the manager if ever it is not yet done */
 
	mapping.ResetMapping();
 

	
 
	uint max_id = mapping.GetMaxMapping();
 

	
 
	int index;
 
	while ((index = SlIterateArray()) != -1) {
 
		if ((uint)index >= max_id) break;
 
		SlObject(&mapping.mapping_ID[index], _newgrf_mapping_desc);
 
	}
 
}
 

	
 

	
 
static const SaveLoad _grfconfig_desc[] = {
 
	    SLE_STR(GRFConfig, filename,         SLE_STR,    0x40),
src/saveload/newgrf_sl.h
Show inline comments
 
new file 100644
 
/* $Id$ */
 

	
 
/*
 
 * This file is part of OpenTTD.
 
 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
 
 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
 
 */
 

	
 
/** @file newgrf_sl.h Code handling saving and loading of NewGRF mappings. */
 

	
 
#ifndef SAVELOAD_NEWGRF_SL_H
 
#define SAVELOAD_NEWGRF_SL_H
 

	
 
#include "../newgrf_commons.h"
 

	
 
/**
 
 * Save a GRF ID + local id -> OpenTTD's id mapping.
 
 * @param mapping The mapping to save.
 
 */
 
void Save_NewGRFMapping(const OverrideManagerBase &mapping);
 

	
 
/**
 
 * Load a GRF ID + local id -> OpenTTD's id mapping.
 
 * @param mapping The mapping to load.
 
 */
 
void Load_NewGRFMapping(OverrideManagerBase &mapping);
 

	
 
#endif /* SAVELOAD_NEWGRF_SL_H */
src/saveload/town_sl.cpp
Show inline comments
 
@@ -11,10 +11,10 @@
 

	
 
#include "../stdafx.h"
 
#include "../newgrf_house.h"
 
#include "../newgrf_commons.h"
 
#include "../town.h"
 

	
 
#include "saveload.h"
 
#include "newgrf_sl.h"
 

	
 
/**
 
 * Check and update town and house values.
 
@@ -139,36 +139,14 @@ static const SaveLoad _town_desc[] = {
 
	SLE_END()
 
};
 

	
 
/* Save and load the mapping between the house id on the map, and the grf file
 
 * it came from. */
 
static const SaveLoad _house_id_mapping_desc[] = {
 
	SLE_VAR(EntityIDMapping, grfid,         SLE_UINT32),
 
	SLE_VAR(EntityIDMapping, entity_id,     SLE_UINT8),
 
	SLE_VAR(EntityIDMapping, substitute_id, SLE_UINT8),
 
	SLE_END()
 
};
 

	
 
static void Save_HOUSEIDS()
 
static void Save_HIDS()
 
{
 
	uint j = _house_mngr.GetMaxMapping();
 

	
 
	for (uint i = 0; i < j; i++) {
 
		SlSetArrayIndex(i);
 
		SlObject(&_house_mngr.mapping_ID[i], _house_id_mapping_desc);
 
	}
 
	Save_NewGRFMapping(_house_mngr);
 
}
 

	
 
static void Load_HOUSEIDS()
 
static void Load_HIDS()
 
{
 
	int index;
 

	
 
	_house_mngr.ResetMapping();
 
	uint max_id = _house_mngr.GetMaxMapping();
 

	
 
	while ((index = SlIterateArray()) != -1) {
 
		if ((uint)index >= max_id) break;
 
		SlObject(&_house_mngr.mapping_ID[index], _house_id_mapping_desc);
 
	}
 
	Load_NewGRFMapping(_house_mngr);
 
}
 

	
 
static void Save_TOWN()
 
@@ -192,6 +170,6 @@ static void Load_TOWN()
 
}
 

	
 
extern const ChunkHandler _town_chunk_handlers[] = {
 
	{ 'HIDS', Save_HOUSEIDS, Load_HOUSEIDS, NULL, NULL, CH_ARRAY },
 
	{ 'CITY', Save_TOWN,     Load_TOWN,     NULL, NULL, CH_ARRAY | CH_LAST},
 
	{ 'HIDS', Save_HIDS, Load_HIDS, NULL, NULL, CH_ARRAY },
 
	{ 'CITY', Save_TOWN, Load_TOWN, NULL, NULL, CH_ARRAY | CH_LAST},
 
};
0 comments (0 inline, 0 general)