(svn r14313) -Codechange: Move functions dealing with the EngineRenew pool to their own file.
authorfrosch
Sat, 13 Sep 2008 15:49:29 +0000
changeset 10127 4f53c1cfcfe9
parent 10126 48162ce1b642
child 10128 a4db5a618fc5
(svn r14313) -Codechange: Move functions dealing with the EngineRenew pool to their own file.
projects/openttd_vs80.vcproj
projects/openttd_vs90.vcproj
source.list
src/autoreplace.cpp
src/autoreplace_base.h
src/engine.cpp
src/engine_type.h
src/misc.cpp
src/saveload.cpp
--- a/projects/openttd_vs80.vcproj	Sat Sep 13 12:40:31 2008 +0000
+++ b/projects/openttd_vs80.vcproj	Sat Sep 13 15:49:29 2008 +0000
@@ -456,6 +456,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\autoreplace.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\aystar.cpp"
 				>
 			</File>
@@ -1576,6 +1580,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\vehicle_gui_base.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\vehicle_type.h"
 				>
 			</File>
@@ -2044,6 +2052,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\table\palette_convert.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\table\railtypes.h"
 				>
 			</File>
--- a/projects/openttd_vs90.vcproj	Sat Sep 13 12:40:31 2008 +0000
+++ b/projects/openttd_vs90.vcproj	Sat Sep 13 15:49:29 2008 +0000
@@ -453,6 +453,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\autoreplace.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\aystar.cpp"
 				>
 			</File>
@@ -1573,6 +1577,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\vehicle_gui_base.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\vehicle_type.h"
 				>
 			</File>
@@ -2041,6 +2049,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\table\palette_convert.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\table\railtypes.h"
 				>
 			</File>
--- a/source.list	Sat Sep 13 12:40:31 2008 +0000
+++ b/source.list	Sat Sep 13 15:49:29 2008 +0000
@@ -2,6 +2,7 @@
 airport.cpp
 animated_tile.cpp
 articulated_vehicles.cpp
+autoreplace.cpp
 aystar.cpp
 bmp.cpp
 callback_table.cpp
@@ -321,6 +322,7 @@
 vehicle_base.h
 vehicle_func.h
 vehicle_gui.h
+vehicle_gui_base.h
 vehicle_type.h
 vehiclelist.h
 viewport_func.h
@@ -456,6 +458,7 @@
 table/landscape_sprite.h
 table/namegen.h
 table/palettes.h
+table/palette_convert.h
 table/railtypes.h
 table/road_land.h
 table/roadveh_movement.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/autoreplace.cpp	Sat Sep 13 15:49:29 2008 +0000
@@ -0,0 +1,150 @@
+/* $Id$ */
+
+/** @file autoreplace.cpp Management of replacement lists. */
+
+#include "stdafx.h"
+#include "openttd.h"
+#include "debug.h"
+#include "command_func.h"
+#include "saveload.h"
+#include "group.h"
+#include "autoreplace_base.h"
+#include "oldpool_func.h"
+
+DEFINE_OLD_POOL_GENERIC(EngineRenew, EngineRenew)
+
+/**
+ * Retrieves the EngineRenew that specifies the replacement of the given
+ * engine type from the given renewlist */
+static EngineRenew *GetEngineReplacement(EngineRenewList erl, EngineID engine, GroupID group)
+{
+	EngineRenew *er = (EngineRenew *)erl;
+
+	while (er) {
+		if (er->from == engine && er->group_id == group) return er;
+		er = er->next;
+	}
+	return NULL;
+}
+
+void RemoveAllEngineReplacement(EngineRenewList *erl)
+{
+	EngineRenew *er = (EngineRenew *)(*erl);
+	EngineRenew *next;
+
+	while (er != NULL) {
+		next = er->next;
+		delete er;
+		er = next;
+	}
+	*erl = NULL; // Empty list
+}
+
+EngineID EngineReplacement(EngineRenewList erl, EngineID engine, GroupID group)
+{
+	const EngineRenew *er = GetEngineReplacement(erl, engine, group);
+	if (er == NULL && (group == DEFAULT_GROUP || (IsValidGroupID(group) && !GetGroup(group)->replace_protection))) {
+		/* We didn't find anything useful in the vehicle's own group so we will try ALL_GROUP */
+		er = GetEngineReplacement(erl, engine, ALL_GROUP);
+	}
+	return er == NULL ? INVALID_ENGINE : er->to;
+}
+
+CommandCost AddEngineReplacement(EngineRenewList *erl, EngineID old_engine, EngineID new_engine, GroupID group, uint32 flags)
+{
+	EngineRenew *er;
+
+	/* Check if the old vehicle is already in the list */
+	er = GetEngineReplacement(*erl, old_engine, group);
+	if (er != NULL) {
+		if (flags & DC_EXEC) er->to = new_engine;
+		return CommandCost();
+	}
+
+	if (!EngineRenew::CanAllocateItem()) return CMD_ERROR;
+
+	if (flags & DC_EXEC) {
+		er = new EngineRenew(old_engine, new_engine);
+		er->group_id = group;
+
+		/* Insert before the first element */
+		er->next = (EngineRenew *)(*erl);
+		*erl = (EngineRenewList)er;
+	}
+
+	return CommandCost();
+}
+
+CommandCost RemoveEngineReplacement(EngineRenewList *erl, EngineID engine, GroupID group, uint32 flags)
+{
+	EngineRenew *er = (EngineRenew *)(*erl);
+	EngineRenew *prev = NULL;
+
+	while (er)
+	{
+		if (er->from == engine && er->group_id == group) {
+			if (flags & DC_EXEC) {
+				if (prev == NULL) { // First element
+					/* The second becomes the new first element */
+					*erl = (EngineRenewList)er->next;
+				} else {
+					/* Cut this element out */
+					prev->next = er->next;
+				}
+				delete er;
+			}
+			return CommandCost();
+		}
+		prev = er;
+		er = er->next;
+	}
+
+	return CMD_ERROR;
+}
+
+static const SaveLoad _engine_renew_desc[] = {
+	    SLE_VAR(EngineRenew, from,     SLE_UINT16),
+	    SLE_VAR(EngineRenew, to,       SLE_UINT16),
+
+	    SLE_REF(EngineRenew, next,     REF_ENGINE_RENEWS),
+	SLE_CONDVAR(EngineRenew, group_id, SLE_UINT16, 60, SL_MAX_VERSION),
+	SLE_END()
+};
+
+static void Save_ERNW()
+{
+	EngineRenew *er;
+
+	FOR_ALL_ENGINE_RENEWS(er) {
+		SlSetArrayIndex(er->index);
+		SlObject(er, _engine_renew_desc);
+	}
+}
+
+static void Load_ERNW()
+{
+	int index;
+
+	while ((index = SlIterateArray()) != -1) {
+		EngineRenew *er = new (index) EngineRenew();
+		SlObject(er, _engine_renew_desc);
+
+		/* Advanced vehicle lists, ungrouped vehicles got added */
+		if (CheckSavegameVersion(60)) {
+			er->group_id = ALL_GROUP;
+		} else if (CheckSavegameVersion(71)) {
+			if (er->group_id == DEFAULT_GROUP) er->group_id = ALL_GROUP;
+		}
+	}
+}
+
+extern const ChunkHandler _autoreplace_chunk_handlers[] = {
+	{ 'ERNW', Save_ERNW,     Load_ERNW,     CH_ARRAY | CH_LAST},
+};
+
+void InitializeEngineRenews()
+{
+	/* Clean the engine renew pool and create 1 block in it */
+	_EngineRenew_pool.CleanPool();
+	_EngineRenew_pool.AddBlockToPool();
+}
--- a/src/autoreplace_base.h	Sat Sep 13 12:40:31 2008 +0000
+++ b/src/autoreplace_base.h	Sat Sep 13 15:49:29 2008 +0000
@@ -8,6 +8,8 @@
 #include "oldpool.h"
 #include "autoreplace_type.h"
 
+typedef uint16 EngineRenewID;
+
 /**
  * Memory pool for engine renew elements. DO NOT USE outside of engine.c. Is
  * placed here so the only exception to this rule, the saveload code, can use
--- a/src/engine.cpp	Sat Sep 13 12:40:31 2008 +0000
+++ b/src/engine.cpp	Sat Sep 13 15:49:29 2008 +0000
@@ -21,7 +21,6 @@
 #include "functions.h"
 #include "window_func.h"
 #include "date_func.h"
-#include "autoreplace_base.h"
 #include "autoreplace_gui.h"
 #include "string_func.h"
 #include "settings_type.h"
@@ -569,137 +568,6 @@
 	}
 }
 
-/************************************************************************
- * Engine Replacement stuff
- ************************************************************************/
-
-DEFINE_OLD_POOL_GENERIC(EngineRenew, EngineRenew)
-
-/**
- * Retrieves the EngineRenew that specifies the replacement of the given
- * engine type from the given renewlist */
-static EngineRenew *GetEngineReplacement(EngineRenewList erl, EngineID engine, GroupID group)
-{
-	EngineRenew *er = (EngineRenew *)erl;
-
-	while (er) {
-		if (er->from == engine && er->group_id == group) return er;
-		er = er->next;
-	}
-	return NULL;
-}
-
-void RemoveAllEngineReplacement(EngineRenewList *erl)
-{
-	EngineRenew *er = (EngineRenew *)(*erl);
-	EngineRenew *next;
-
-	while (er != NULL) {
-		next = er->next;
-		delete er;
-		er = next;
-	}
-	*erl = NULL; // Empty list
-}
-
-EngineID EngineReplacement(EngineRenewList erl, EngineID engine, GroupID group)
-{
-	const EngineRenew *er = GetEngineReplacement(erl, engine, group);
-	if (er == NULL && (group == DEFAULT_GROUP || (IsValidGroupID(group) && !GetGroup(group)->replace_protection))) {
-		/* We didn't find anything useful in the vehicle's own group so we will try ALL_GROUP */
-		er = GetEngineReplacement(erl, engine, ALL_GROUP);
-	}
-	return er == NULL ? INVALID_ENGINE : er->to;
-}
-
-CommandCost AddEngineReplacement(EngineRenewList *erl, EngineID old_engine, EngineID new_engine, GroupID group, uint32 flags)
-{
-	EngineRenew *er;
-
-	/* Check if the old vehicle is already in the list */
-	er = GetEngineReplacement(*erl, old_engine, group);
-	if (er != NULL) {
-		if (flags & DC_EXEC) er->to = new_engine;
-		return CommandCost();
-	}
-
-	if (!EngineRenew::CanAllocateItem()) return CMD_ERROR;
-
-	if (flags & DC_EXEC) {
-		er = new EngineRenew(old_engine, new_engine);
-		er->group_id = group;
-
-		/* Insert before the first element */
-		er->next = (EngineRenew *)(*erl);
-		*erl = (EngineRenewList)er;
-	}
-
-	return CommandCost();
-}
-
-CommandCost RemoveEngineReplacement(EngineRenewList *erl, EngineID engine, GroupID group, uint32 flags)
-{
-	EngineRenew *er = (EngineRenew *)(*erl);
-	EngineRenew *prev = NULL;
-
-	while (er)
-	{
-		if (er->from == engine && er->group_id == group) {
-			if (flags & DC_EXEC) {
-				if (prev == NULL) { // First element
-					/* The second becomes the new first element */
-					*erl = (EngineRenewList)er->next;
-				} else {
-					/* Cut this element out */
-					prev->next = er->next;
-				}
-				delete er;
-			}
-			return CommandCost();
-		}
-		prev = er;
-		er = er->next;
-	}
-
-	return CMD_ERROR;
-}
-
-static const SaveLoad _engine_renew_desc[] = {
-	    SLE_VAR(EngineRenew, from,     SLE_UINT16),
-	    SLE_VAR(EngineRenew, to,       SLE_UINT16),
-
-	    SLE_REF(EngineRenew, next,     REF_ENGINE_RENEWS),
-	SLE_CONDVAR(EngineRenew, group_id, SLE_UINT16, 60, SL_MAX_VERSION),
-	SLE_END()
-};
-
-static void Save_ERNW()
-{
-	EngineRenew *er;
-
-	FOR_ALL_ENGINE_RENEWS(er) {
-		SlSetArrayIndex(er->index);
-		SlObject(er, _engine_renew_desc);
-	}
-}
-
-static void Load_ERNW()
-{
-	int index;
-
-	while ((index = SlIterateArray()) != -1) {
-		EngineRenew *er = new (index) EngineRenew();
-		SlObject(er, _engine_renew_desc);
-
-		/* Advanced vehicle lists, ungrouped vehicles got added */
-		if (CheckSavegameVersion(60)) {
-			er->group_id = ALL_GROUP;
-		} else if (CheckSavegameVersion(71)) {
-			if (er->group_id == DEFAULT_GROUP) er->group_id = ALL_GROUP;
-		}
-	}
-}
-
 static const SaveLoad _engine_desc[] = {
 	SLE_CONDVAR(Engine, intro_date,          SLE_FILE_U16 | SLE_VAR_I32,  0,  30),
 	SLE_CONDVAR(Engine, intro_date,          SLE_INT32,                  31, SL_MAX_VERSION),
@@ -805,13 +673,5 @@
 
 extern const ChunkHandler _engine_chunk_handlers[] = {
 	{ 'ENGN', Save_ENGN,     Load_ENGN,     CH_ARRAY          },
-	{ 'ENGS', NULL,          Load_ENGS,     CH_RIFF           },
-	{ 'ERNW', Save_ERNW,     Load_ERNW,     CH_ARRAY | CH_LAST},
+	{ 'ENGS', NULL,          Load_ENGS,     CH_RIFF | CH_LAST },
 };
-
-void InitializeEngines()
-{
-	/* Clean the engine renew pool and create 1 block in it */
-	_EngineRenew_pool.CleanPool();
-	_EngineRenew_pool.AddBlockToPool();
-}
--- a/src/engine_type.h	Sat Sep 13 12:40:31 2008 +0000
+++ b/src/engine_type.h	Sat Sep 13 15:49:29 2008 +0000
@@ -15,7 +15,6 @@
 #include "strings_type.h"
 
 typedef uint16 EngineID;
-typedef uint16 EngineRenewID;
 
 struct Engine;
 
--- a/src/misc.cpp	Sat Sep 13 12:40:31 2008 +0000
+++ b/src/misc.cpp	Sat Sep 13 15:49:29 2008 +0000
@@ -39,7 +39,7 @@
 void InitializeVehicles();
 void InitializeWaypoints();
 void InitializeDepots();
-void InitializeEngines();
+void InitializeEngineRenews();
 void InitializeOrders();
 void InitializeClearLand();
 void InitializeRailGui();
@@ -76,7 +76,7 @@
 		InitializeOldNames();
 	}
 
-	InitializeEngines();
+	InitializeEngineRenews();
 	InitializeVehicles();
 	InitializeWaypoints();
 	InitializeDepots();
--- a/src/saveload.cpp	Sat Sep 13 12:40:31 2008 +0000
+++ b/src/saveload.cpp	Sat Sep 13 15:49:29 2008 +0000
@@ -1315,6 +1315,7 @@
 extern const ChunkHandler _newgrf_chunk_handlers[];
 extern const ChunkHandler _group_chunk_handlers[];
 extern const ChunkHandler _cargopacket_chunk_handlers[];
+extern const ChunkHandler _autoreplace_chunk_handlers[];
 
 static const ChunkHandler * const _chunk_handlers[] = {
 	_gamelog_chunk_handlers,
@@ -1337,6 +1338,7 @@
 	_newgrf_chunk_handlers,
 	_group_chunk_handlers,
 	_cargopacket_chunk_handlers,
+	_autoreplace_chunk_handlers,
 	NULL,
 };