Changeset - r8212:13ec7a6b1407
[Not reviewed]
master
0 18 4
rubidium - 16 years ago 2008-01-07 09:19:53
rubidium@openttd.org
(svn r11775) -Codechange: move all autoreplace/autorenew functions to a single location.
22 files changed with 195 insertions and 126 deletions:
0 comments (0 inline, 0 general)
src/aircraft_cmd.cpp
Show inline comments
 
@@ -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)
 
{
src/autoreplace_base.h
Show inline comments
 
new file 100644
 
/* $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 */
src/autoreplace_cmd.cpp
Show inline comments
 
@@ -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
src/autoreplace_func.h
Show inline comments
 
new file 100644
 
/* $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 */
src/autoreplace_gui.cpp
Show inline comments
 
@@ -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;
 

	
src/autoreplace_gui.h
Show inline comments
 
new file 100644
 
/* $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 */
src/autoreplace_type.h
Show inline comments
 
new file 100644
 
/* $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 */
src/engine.cpp
Show inline comments
 
@@ -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];
src/engine.h
Show inline comments
 
@@ -262,84 +262,6 @@ static inline const RoadVehicleInfo* Roa
 
	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
src/group_cmd.cpp
Show inline comments
 
@@ -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
src/group_gui.cpp
Show inline comments
 
@@ -21,6 +21,7 @@
 
#include "core/alloc_func.hpp"
 
#include "window_func.h"
 
#include "vehicle_func.h"
 
#include "autoreplace_gui.h"
 

	
 

	
 
struct Sorting {
src/oldloader.cpp
Show inline comments
 
@@ -25,6 +25,7 @@
 
#include "date_func.h"
 
#include "vehicle_func.h"
 
#include "variables.h"
 
#include "autoreplace_gui.h"
 

	
 
enum {
 
	HEADER_SIZE = 49,
src/player.h
Show inline comments
 
@@ -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.
src/players.cpp
Show inline comments
 
@@ -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
src/roadveh_cmd.cpp
Show inline comments
 
@@ -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] = {
src/saveload.cpp
Show inline comments
 
@@ -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;
src/ship_cmd.cpp
Show inline comments
 
@@ -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};
src/train_cmd.cpp
Show inline comments
 
@@ -44,6 +44,7 @@
 
#include "vehicle_func.h"
 
#include "sound_func.h"
 
#include "variables.h"
 
#include "autoreplace_gui.h"
 

	
 

	
 
static bool TrainCheckIfLineEnds(Vehicle *v);
src/vehicle.cpp
Show inline comments
 
@@ -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))
src/vehicle_func.h
Show inline comments
 
@@ -76,8 +76,6 @@ void BuildDepotVehicleList(VehicleType t
 
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);
 

	
src/vehicle_gui.cpp
Show inline comments
 
@@ -32,6 +32,7 @@
 
#include "functions.h"
 
#include "window_func.h"
 
#include "vehicle_func.h"
 
#include "autoreplace_gui.h"
 

	
 
struct Sorting {
 
	Listing aircraft;
src/vehicle_gui.h
Show inline comments
 
@@ -67,9 +67,7 @@ void ShowVehicleListWindow(PlayerID play
 
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);
 

	
0 comments (0 inline, 0 general)