rubidium@8212: /* $Id$ */ rubidium@8212: rubidium@8212: /** @file autoreplace_func.h Functions related to autoreplacing. */ rubidium@8212: rubidium@8212: #ifndef AUTOREPLACE_FUNC_H rubidium@8212: #define AUTOREPLACE_FUNC_H rubidium@8212: rubidium@8212: #include "autoreplace_type.h" rubidium@8254: #include "player_base.h" rubidium@8212: rubidium@8212: /** rubidium@8212: * Remove all engine replacement settings for the player. rubidium@8212: * @param erl The renewlist for a given player. rubidium@8212: * @return The new renewlist for the player. rubidium@8212: */ rubidium@8212: void RemoveAllEngineReplacement(EngineRenewList *erl); rubidium@8212: rubidium@8212: /** rubidium@8212: * Retrieve the engine replacement in a given renewlist for an original engine type. rubidium@8212: * @param erl The renewlist to search in. rubidium@8212: * @param engine Engine type to be replaced. rubidium@8212: * @return The engine type to replace with, or INVALID_ENGINE if no rubidium@8212: * replacement is in the list. rubidium@8212: */ rubidium@8212: EngineID EngineReplacement(EngineRenewList erl, EngineID engine, GroupID group); rubidium@8212: rubidium@8212: /** rubidium@8212: * Add an engine replacement to the given renewlist. rubidium@8212: * @param erl The renewlist to add to. rubidium@8212: * @param old_engine The original engine type. rubidium@8212: * @param new_engine The replacement engine type. rubidium@8212: * @param flags The calling command flags. rubidium@8212: * @return 0 on success, CMD_ERROR on failure. rubidium@8212: */ rubidium@8212: CommandCost AddEngineReplacement(EngineRenewList *erl, EngineID old_engine, EngineID new_engine, GroupID group, uint32 flags); rubidium@8212: rubidium@8212: /** rubidium@8212: * Remove an engine replacement from a given renewlist. rubidium@8212: * @param erl The renewlist from which to remove the replacement rubidium@8212: * @param engine The original engine type. rubidium@8212: * @param flags The calling command flags. rubidium@8212: * @return 0 on success, CMD_ERROR on failure. rubidium@8212: */ rubidium@8212: CommandCost RemoveEngineReplacement(EngineRenewList *erl, EngineID engine, GroupID group, uint32 flags); rubidium@8212: rubidium@8212: /** rubidium@8212: * Remove all engine replacement settings for the given player. rubidium@8212: * @param p Player. rubidium@8212: */ rubidium@8212: static inline void RemoveAllEngineReplacementForPlayer(Player *p) rubidium@8212: { rubidium@8212: RemoveAllEngineReplacement(&p->engine_renew_list); rubidium@8212: } rubidium@8212: rubidium@8212: /** rubidium@8212: * Retrieve the engine replacement for the given player and original engine type. rubidium@8212: * @param p Player. rubidium@8212: * @param engine Engine type. rubidium@8212: * @return The engine type to replace with, or INVALID_ENGINE if no rubidium@8212: * replacement is in the list. rubidium@8212: */ rubidium@8212: static inline EngineID EngineReplacementForPlayer(const Player *p, EngineID engine, GroupID group) rubidium@8212: { rubidium@8212: return EngineReplacement(p->engine_renew_list, engine, group); rubidium@8212: } rubidium@8212: rubidium@8212: /** rubidium@8212: * Check if a player has a replacement set up for the given engine. rubidium@8212: * @param p Player. rubidium@8212: * @param engine Engine type to be replaced. rubidium@8212: * @return true if a replacement was set up, false otherwise. rubidium@8212: */ rubidium@8212: static inline bool EngineHasReplacementForPlayer(const Player *p, EngineID engine, GroupID group) rubidium@8212: { rubidium@8212: return EngineReplacementForPlayer(p, engine, group) != INVALID_ENGINE; rubidium@8212: } rubidium@8212: rubidium@8212: /** rubidium@8212: * Add an engine replacement for the player. rubidium@8212: * @param p Player. rubidium@8212: * @param old_engine The original engine type. rubidium@8212: * @param new_engine The replacement engine type. rubidium@8212: * @param flags The calling command flags. rubidium@8212: * @return 0 on success, CMD_ERROR on failure. rubidium@8212: */ rubidium@8212: static inline CommandCost AddEngineReplacementForPlayer(Player *p, EngineID old_engine, EngineID new_engine, GroupID group, uint32 flags) rubidium@8212: { rubidium@8212: return AddEngineReplacement(&p->engine_renew_list, old_engine, new_engine, group, flags); rubidium@8212: } rubidium@8212: rubidium@8212: /** rubidium@8212: * Remove an engine replacement for the player. rubidium@8212: * @param p Player. rubidium@8212: * @param engine The original engine type. rubidium@8212: * @param flags The calling command flags. rubidium@8212: * @return 0 on success, CMD_ERROR on failure. rubidium@8212: */ rubidium@8212: static inline CommandCost RemoveEngineReplacementForPlayer(Player *p, EngineID engine, GroupID group, uint32 flags) rubidium@8212: { rubidium@8212: return RemoveEngineReplacement(&p->engine_renew_list, engine, group, flags); rubidium@8212: } rubidium@8212: rubidium@8212: #endif /* AUTOREPLACE_FUNC_H */