summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/aircraft_cmd.cpp2
-rw-r--r--src/autoreplace_base.h38
-rw-r--r--src/autoreplace_cmd.cpp1
-rw-r--r--src/autoreplace_func.h103
-rw-r--r--src/autoreplace_gui.cpp1
-rw-r--r--src/autoreplace_gui.h19
-rw-r--r--src/autoreplace_type.h15
-rw-r--r--src/engine.cpp2
-rw-r--r--src/engine.h78
-rw-r--r--src/group_cmd.cpp2
-rw-r--r--src/group_gui.cpp1
-rw-r--r--src/oldloader.cpp1
-rw-r--r--src/player.h45
-rw-r--r--src/players.cpp2
-rw-r--r--src/roadveh_cmd.cpp1
-rw-r--r--src/saveload.cpp1
-rw-r--r--src/ship_cmd.cpp1
-rw-r--r--src/train_cmd.cpp1
-rw-r--r--src/vehicle.cpp2
-rw-r--r--src/vehicle_func.h2
-rw-r--r--src/vehicle_gui.cpp1
-rw-r--r--src/vehicle_gui.h2
22 files changed, 195 insertions, 126 deletions
diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp
index 6cd274111..f9c0f9502 100644
--- a/src/aircraft_cmd.cpp
+++ b/src/aircraft_cmd.cpp
@@ -34,6 +34,8 @@
#include "sound_func.h"
#include "functions.h"
#include "variables.h"
+#include "autoreplace_func.h"
+#include "autoreplace_gui.h"
void Aircraft::UpdateDeltaXY(Direction direction)
{
diff --git a/src/autoreplace_base.h b/src/autoreplace_base.h
new file mode 100644
index 000000000..065cc5661
--- /dev/null
+++ b/src/autoreplace_base.h
@@ -0,0 +1,38 @@
+/* $Id$ */
+
+/** @file autoreplace_base.h Base class for autoreplaces/autorenews. */
+
+#ifndef AUTOREPLACE_BASE_H
+#define AUTOREPLACE_BASE_H
+
+#include "oldpool.h"
+#include "autoreplace_type.h"
+
+/**
+ * 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
+ * it.
+ */
+DECLARE_OLD_POOL(EngineRenew, EngineRenew, 3, 8000)
+
+/**
+ * Struct to store engine replacements. DO NOT USE outside of engine.c. Is
+ * placed here so the only exception to this rule, the saveload code, can use
+ * it.
+ */
+struct EngineRenew : PoolItem<EngineRenew, EngineRenewID, &_EngineRenew_pool> {
+ EngineID from;
+ EngineID to;
+ EngineRenew *next;
+ GroupID group_id;
+
+ EngineRenew(EngineID from = INVALID_ENGINE, EngineID to = INVALID_ENGINE) : from(from), to(to), next(NULL) {}
+ ~EngineRenew() { this->from = INVALID_ENGINE; }
+
+ inline bool IsValid() const { return this->from != INVALID_ENGINE; }
+};
+
+#define FOR_ALL_ENGINE_RENEWS_FROM(er, start) for (er = GetEngineRenew(start); er != NULL; er = (er->index + 1U < GetEngineRenewPoolSize()) ? GetEngineRenew(er->index + 1U) : NULL) if (er->IsValid())
+#define FOR_ALL_ENGINE_RENEWS(er) FOR_ALL_ENGINE_RENEWS_FROM(er, 0)
+
+#endif /* AUTOREPLACE_BASE_H */
diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp
index c2ca04b7f..5b53cdb84 100644
--- a/src/autoreplace_cmd.cpp
+++ b/src/autoreplace_cmd.cpp
@@ -21,6 +21,7 @@
#include "vehicle_func.h"
#include "functions.h"
#include "variables.h"
+#include "autoreplace_func.h"
/*
* move the cargo from one engine to another if possible
diff --git a/src/autoreplace_func.h b/src/autoreplace_func.h
new file mode 100644
index 000000000..cc1cdf194
--- /dev/null
+++ b/src/autoreplace_func.h
@@ -0,0 +1,103 @@
+/* $Id$ */
+
+/** @file autoreplace_func.h Functions related to autoreplacing. */
+
+#ifndef AUTOREPLACE_FUNC_H
+#define AUTOREPLACE_FUNC_H
+
+#include "autoreplace_type.h"
+#include "player.h"
+
+/**
+ * Remove all engine replacement settings for the player.
+ * @param erl The renewlist for a given player.
+ * @return The new renewlist for the player.
+ */
+void RemoveAllEngineReplacement(EngineRenewList *erl);
+
+/**
+ * Retrieve the engine replacement in a given renewlist for an original engine type.
+ * @param erl The renewlist to search in.
+ * @param engine Engine type to be replaced.
+ * @return The engine type to replace with, or INVALID_ENGINE if no
+ * replacement is in the list.
+ */
+EngineID EngineReplacement(EngineRenewList erl, EngineID engine, GroupID group);
+
+/**
+ * Add an engine replacement to the given renewlist.
+ * @param erl The renewlist to add to.
+ * @param old_engine The original engine type.
+ * @param new_engine The replacement engine type.
+ * @param flags The calling command flags.
+ * @return 0 on success, CMD_ERROR on failure.
+ */
+CommandCost AddEngineReplacement(EngineRenewList *erl, EngineID old_engine, EngineID new_engine, GroupID group, uint32 flags);
+
+/**
+ * Remove an engine replacement from a given renewlist.
+ * @param erl The renewlist from which to remove the replacement
+ * @param engine The original engine type.
+ * @param flags The calling command flags.
+ * @return 0 on success, CMD_ERROR on failure.
+ */
+CommandCost RemoveEngineReplacement(EngineRenewList *erl, EngineID engine, GroupID group, uint32 flags);
+
+/**
+ * Remove all engine replacement settings for the given player.
+ * @param p Player.
+ */
+static inline void RemoveAllEngineReplacementForPlayer(Player *p)
+{
+ RemoveAllEngineReplacement(&p->engine_renew_list);
+}
+
+/**
+ * Retrieve the engine replacement for the given player and original engine type.
+ * @param p Player.
+ * @param engine Engine type.
+ * @return The engine type to replace with, or INVALID_ENGINE if no
+ * replacement is in the list.
+ */
+static inline EngineID EngineReplacementForPlayer(const Player *p, EngineID engine, GroupID group)
+{
+ return EngineReplacement(p->engine_renew_list, engine, group);
+}
+
+/**
+ * Check if a player has a replacement set up for the given engine.
+ * @param p Player.
+ * @param engine Engine type to be replaced.
+ * @return true if a replacement was set up, false otherwise.
+ */
+static inline bool EngineHasReplacementForPlayer(const Player *p, EngineID engine, GroupID group)
+{
+ return EngineReplacementForPlayer(p, engine, group) != INVALID_ENGINE;
+}
+
+/**
+ * Add an engine replacement for the player.
+ * @param p Player.
+ * @param old_engine The original engine type.
+ * @param new_engine The replacement engine type.
+ * @param flags The calling command flags.
+ * @return 0 on success, CMD_ERROR on failure.
+ */
+static inline CommandCost AddEngineReplacementForPlayer(Player *p, EngineID old_engine, EngineID new_engine, GroupID group, uint32 flags)
+{
+ return AddEngineReplacement(&p->engine_renew_list, old_engine, new_engine, group, flags);
+}
+
+/**
+ * Remove an engine replacement for the player.
+ * @param p Player.
+ * @param engine The original engine type.
+ * @param flags The calling command flags.
+ * @return 0 on success, CMD_ERROR on failure.
+ */
+static inline CommandCost RemoveEngineReplacementForPlayer(Player *p, EngineID engine, GroupID group, uint32 flags)
+{
+ return RemoveEngineReplacement(&p->engine_renew_list, engine, group, flags);
+}
+
+#endif /* AUTOREPLACE_FUNC_H */
diff --git a/src/autoreplace_gui.cpp b/src/autoreplace_gui.cpp
index fd9070f7c..128bfe5cf 100644
--- a/src/autoreplace_gui.cpp
+++ b/src/autoreplace_gui.cpp
@@ -17,6 +17,7 @@
#include "strings_func.h"
#include "window_func.h"
#include "vehicle_func.h"
+#include "autoreplace_func.h"
static RailType _railtype_selected_in_replace_gui;
diff --git a/src/autoreplace_gui.h b/src/autoreplace_gui.h
new file mode 100644
index 000000000..f34a4cd5e
--- /dev/null
+++ b/src/autoreplace_gui.h
@@ -0,0 +1,19 @@
+/* $Id$ */
+
+/** @file autoreplace_gui.h Functions related to the autoreplace GUIs*/
+
+#ifndef AUTOREPLACE_GUI_H
+#define AUTOREPLACE_GUI_H
+
+#include "vehicle_type.h"
+
+/**
+ * When an engine is made buildable or is removed from being buildable, add/remove it from the build/autoreplace lists
+ * @param type The type of engine
+ */
+void AddRemoveEngineFromAutoreplaceAndBuildWindows(VehicleType type);
+void InvalidateAutoreplaceWindow(EngineID e, GroupID id_g);
+void ShowReplaceVehicleWindow(VehicleType vehicletype);
+void ShowReplaceGroupVehicleWindow(GroupID group, VehicleType veh);
+
+#endif /* AUTOREPLACE_GUI_H */
diff --git a/src/autoreplace_type.h b/src/autoreplace_type.h
new file mode 100644
index 000000000..6dbdd5299
--- /dev/null
+++ b/src/autoreplace_type.h
@@ -0,0 +1,15 @@
+/* $Id$ */
+
+/** @file autoreplace_type.h Types related to autoreplacing. */
+
+#ifndef AUTOREPLACE_TYPE_H
+#define AUTOREPLACE_TYPE_H
+
+struct EngineRenew;
+
+/**
+ * A list to group EngineRenew directives together (such as per-player).
+ */
+typedef EngineRenew* EngineRenewList;
+
+#endif /* AUTOREPLACE_TYPE_H */
diff --git a/src/engine.cpp b/src/engine.cpp
index 44f05a63e..f816113b7 100644
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -24,6 +24,8 @@
#include "functions.h"
#include "window_func.h"
#include "date_func.h"
+#include "autoreplace_base.h"
+#include "autoreplace_gui.h"
EngineInfo _engine_info[TOTAL_NUM_ENGINES];
RailVehicleInfo _rail_vehicle_info[NUM_TRAIN_ENGINES];
diff --git a/src/engine.h b/src/engine.h
index 65dd82ca2..ef9d608fc 100644
--- a/src/engine.h
+++ b/src/engine.h
@@ -262,84 +262,6 @@ static inline const RoadVehicleInfo* RoadVehInfo(EngineID e)
return &_road_vehicle_info[e - ROAD_ENGINES_INDEX];
}
-/************************************************************************
- * Engine Replacement stuff
- ************************************************************************/
-
-struct EngineRenew;
-/**
- * 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
- * it.
- */
-DECLARE_OLD_POOL(EngineRenew, EngineRenew, 3, 8000)
-
-/**
- * Struct to store engine replacements. DO NOT USE outside of engine.c. Is
- * placed here so the only exception to this rule, the saveload code, can use
- * it.
- */
-struct EngineRenew : PoolItem<EngineRenew, EngineRenewID, &_EngineRenew_pool> {
- EngineID from;
- EngineID to;
- EngineRenew *next;
- GroupID group_id;
-
- EngineRenew(EngineID from = INVALID_ENGINE, EngineID to = INVALID_ENGINE) : from(from), to(to), next(NULL) {}
- ~EngineRenew() { this->from = INVALID_ENGINE; }
-
- inline bool IsValid() const { return this->from != INVALID_ENGINE; }
-};
-
-#define FOR_ALL_ENGINE_RENEWS_FROM(er, start) for (er = GetEngineRenew(start); er != NULL; er = (er->index + 1U < GetEngineRenewPoolSize()) ? GetEngineRenew(er->index + 1U) : NULL) if (er->IsValid())
-#define FOR_ALL_ENGINE_RENEWS(er) FOR_ALL_ENGINE_RENEWS_FROM(er, 0)
-
-
-/**
- * A list to group EngineRenew directives together (such as per-player).
- */
-typedef EngineRenew* EngineRenewList;
-
-/**
- * Remove all engine replacement settings for the player.
- * @param erl The renewlist for a given player.
- * @return The new renewlist for the player.
- */
-void RemoveAllEngineReplacement(EngineRenewList *erl);
-
-/**
- * Retrieve the engine replacement in a given renewlist for an original engine type.
- * @param erl The renewlist to search in.
- * @param engine Engine type to be replaced.
- * @return The engine type to replace with, or INVALID_ENGINE if no
- * replacement is in the list.
- */
-EngineID EngineReplacement(EngineRenewList erl, EngineID engine, GroupID group);
-
-/**
- * Add an engine replacement to the given renewlist.
- * @param erl The renewlist to add to.
- * @param old_engine The original engine type.
- * @param new_engine The replacement engine type.
- * @param flags The calling command flags.
- * @return 0 on success, CMD_ERROR on failure.
- */
-CommandCost AddEngineReplacement(EngineRenewList *erl, EngineID old_engine, EngineID new_engine, GroupID group, uint32 flags);
-
-/**
- * Remove an engine replacement from a given renewlist.
- * @param erl The renewlist from which to remove the replacement
- * @param engine The original engine type.
- * @param flags The calling command flags.
- * @return 0 on success, CMD_ERROR on failure.
- */
-CommandCost RemoveEngineReplacement(EngineRenewList *erl, EngineID engine, GroupID group, uint32 flags);
-
-/** When an engine is made buildable or is removed from being buildable, add/remove it from the build/autoreplace lists
- * @param type The type of engine
- */
-void AddRemoveEngineFromAutoreplaceAndBuildWindows(VehicleType type);
-
/* Engine list manipulators - current implementation is only C wrapper of CBlobT<EngineID> class (helpers.cpp) */
void EngList_Create(EngineList *el); ///< Creates engine list
void EngList_Destroy(EngineList *el); ///< Deallocate and destroy engine list
diff --git a/src/group_cmd.cpp b/src/group_cmd.cpp
index 1e4f31001..c39d86280 100644
--- a/src/group_cmd.cpp
+++ b/src/group_cmd.cpp
@@ -20,6 +20,8 @@
#include "functions.h"
#include "window_func.h"
#include "vehicle_func.h"
+#include "autoreplace_base.h"
+#include "autoreplace_func.h"
/**
* Update the num engines of a groupID. Decrease the old one and increase the new one
diff --git a/src/group_gui.cpp b/src/group_gui.cpp
index e7368312c..ec0d66713 100644
--- a/src/group_gui.cpp
+++ b/src/group_gui.cpp
@@ -21,6 +21,7 @@
#include "core/alloc_func.hpp"
#include "window_func.h"
#include "vehicle_func.h"
+#include "autoreplace_gui.h"
struct Sorting {
diff --git a/src/oldloader.cpp b/src/oldloader.cpp
index 36eeb5f3d..3a85d7f89 100644
--- a/src/oldloader.cpp
+++ b/src/oldloader.cpp
@@ -25,6 +25,7 @@
#include "date_func.h"
#include "vehicle_func.h"
#include "variables.h"
+#include "autoreplace_gui.h"
enum {
HEADER_SIZE = 49,
diff --git a/src/player.h b/src/player.h
index b53e21299..2cc7c7485 100644
--- a/src/player.h
+++ b/src/player.h
@@ -15,6 +15,7 @@
#include "engine.h"
#include "livery.h"
#include "genworld.h"
+#include "autoreplace_type.h"
struct PlayerEconomyEntry {
Money income;
@@ -330,50 +331,6 @@ void LoadFromHighScore();
int8 SaveHighScoreValue(const Player *p);
int8 SaveHighScoreValueNetwork();
-/* Engine Replacement Functions */
-
-/**
- * Remove all engine replacement settings for the given player.
- * @param p Player.
- */
-static inline void RemoveAllEngineReplacementForPlayer(Player *p) { RemoveAllEngineReplacement(&p->engine_renew_list); }
-
-/**
- * Retrieve the engine replacement for the given player and original engine type.
- * @param p Player.
- * @param engine Engine type.
- * @return The engine type to replace with, or INVALID_ENGINE if no
- * replacement is in the list.
- */
-static inline EngineID EngineReplacementForPlayer(const Player *p, EngineID engine, GroupID group) { return EngineReplacement(p->engine_renew_list, engine, group); }
-
-/**
- * Check if a player has a replacement set up for the given engine.
- * @param p Player.
- * @param engine Engine type to be replaced.
- * @return true if a replacement was set up, false otherwise.
- */
-static inline bool EngineHasReplacementForPlayer(const Player *p, EngineID engine, GroupID group) { return EngineReplacementForPlayer(p, engine, group) != INVALID_ENGINE; }
-
-/**
- * Add an engine replacement for the player.
- * @param p Player.
- * @param old_engine The original engine type.
- * @param new_engine The replacement engine type.
- * @param flags The calling command flags.
- * @return 0 on success, CMD_ERROR on failure.
- */
-static inline CommandCost AddEngineReplacementForPlayer(Player *p, EngineID old_engine, EngineID new_engine, GroupID group, uint32 flags) { return AddEngineReplacement(&p->engine_renew_list, old_engine, new_engine, group, flags); }
-
-/**
- * Remove an engine replacement for the player.
- * @param p Player.
- * @param engine The original engine type.
- * @param flags The calling command flags.
- * @return 0 on success, CMD_ERROR on failure.
- */
-static inline CommandCost RemoveEngineReplacementForPlayer(Player *p, EngineID engine, GroupID group, uint32 flags) {return RemoveEngineReplacement(&p->engine_renew_list, engine, group, flags); }
-
/**
* Reset the livery schemes to the player's primary colour.
* This is used on loading games without livery information and on new player start up.
diff --git a/src/players.cpp b/src/players.cpp
index 46ce0aa4d..1b014651f 100644
--- a/src/players.cpp
+++ b/src/players.cpp
@@ -28,6 +28,8 @@
#include "date_func.h"
#include "vehicle_func.h"
#include "sound_func.h"
+#include "autoreplace_func.h"
+#include "autoreplace_gui.h"
/**
* Sets the local player and updates the patch settings that are set on a
diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp
index 3d8135464..49f83f974 100644
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -39,6 +39,7 @@
#include "vehicle_func.h"
#include "sound_func.h"
#include "variables.h"
+#include "autoreplace_gui.h"
static const uint16 _roadveh_images[63] = {
diff --git a/src/saveload.cpp b/src/saveload.cpp
index a84721314..cf34fbcb4 100644
--- a/src/saveload.cpp
+++ b/src/saveload.cpp
@@ -31,6 +31,7 @@
#include "functions.h"
#include "core/endian_func.hpp"
#include "vehicle_base.h"
+#include "autoreplace_base.h"
#include <list>
extern const uint16 SAVEGAME_VERSION = 83;
diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp
index cc2f872d5..8d5e5081f 100644
--- a/src/ship_cmd.cpp
+++ b/src/ship_cmd.cpp
@@ -35,6 +35,7 @@
#include "vehicle_func.h"
#include "sound_func.h"
#include "variables.h"
+#include "autoreplace_gui.h"
static const uint16 _ship_sprites[] = {0x0E5D, 0x0E55, 0x0E65, 0x0E6D};
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp
index 8351a77a2..36b452372 100644
--- a/src/train_cmd.cpp
+++ b/src/train_cmd.cpp
@@ -44,6 +44,7 @@
#include "vehicle_func.h"
#include "sound_func.h"
#include "variables.h"
+#include "autoreplace_gui.h"
static bool TrainCheckIfLineEnds(Vehicle *v);
diff --git a/src/vehicle.cpp b/src/vehicle.cpp
index 612268bba..b9d32e7a1 100644
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -44,6 +44,8 @@
#include "vehicle_func.h"
#include "sound_func.h"
#include "variables.h"
+#include "autoreplace_func.h"
+#include "autoreplace_gui.h"
#define INVALID_COORD (0x7fffffff)
#define GEN_HASH(x, y) ((GB((y), 6, 6) << 6) + GB((x), 7, 6))
diff --git a/src/vehicle_func.h b/src/vehicle_func.h
index 73fb7d310..2925f0602 100644
--- a/src/vehicle_func.h
+++ b/src/vehicle_func.h
@@ -76,8 +76,6 @@ void BuildDepotVehicleList(VehicleType type, TileIndex tile, Vehicle ***engine_l
CommandCost SendAllVehiclesToDepot(VehicleType type, uint32 flags, bool service, PlayerID owner, uint16 vlw_flag, uint32 id);
void VehicleEnterDepot(Vehicle *v);
-void InvalidateAutoreplaceWindow(EngineID e, GroupID id_g);
-
CommandCost MaybeReplaceVehicle(Vehicle *v, bool check, bool display_costs);
bool CanBuildVehicleInfrastructure(VehicleType type);
diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp
index fb30a8618..518c09283 100644
--- a/src/vehicle_gui.cpp
+++ b/src/vehicle_gui.cpp
@@ -32,6 +32,7 @@
#include "functions.h"
#include "window_func.h"
#include "vehicle_func.h"
+#include "autoreplace_gui.h"
struct Sorting {
Listing aircraft;
diff --git a/src/vehicle_gui.h b/src/vehicle_gui.h
index cc16f17dd..64d2fe5d5 100644
--- a/src/vehicle_gui.h
+++ b/src/vehicle_gui.h
@@ -67,9 +67,7 @@ void ShowVehicleListWindow(PlayerID player, VehicleType vehicle_type);
void ShowVehicleListWindow(PlayerID player, VehicleType vehicle_type, StationID station);
void ShowVehicleListWindow(PlayerID player, VehicleType vehicle_type, TileIndex depot_tile);
-void ShowReplaceVehicleWindow(VehicleType vehicletype);
void DrawSmallOrderList(const Vehicle *v, int x, int y);
-void ShowReplaceGroupVehicleWindow(GroupID group, VehicleType veh);
void DrawVehicleImage(const Vehicle *v, int x, int y, VehicleID selection, int count, int skip);