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