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@10208: #include "company_base.h" rubidium@8212: rubidium@8212: /** rubidium@10207: * Remove all engine replacement settings for the company. rubidium@10207: * @param erl The renewlist for a given company. rubidium@10207: * @return The new renewlist for the company. 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@10207: * Remove all engine replacement settings for the given company. rubidium@10207: * @param c the company. rubidium@8212: */ rubidium@10207: static inline void RemoveAllEngineReplacementForCompany(Company *c) rubidium@8212: { rubidium@10207: RemoveAllEngineReplacement(&c->engine_renew_list); rubidium@8212: } rubidium@8212: rubidium@8212: /** rubidium@10207: * Retrieve the engine replacement for the given company and original engine type. rubidium@10207: * @param c company. 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@10207: static inline EngineID EngineReplacementForCompany(const Company *c, EngineID engine, GroupID group) rubidium@8212: { rubidium@10207: return EngineReplacement(c->engine_renew_list, engine, group); rubidium@8212: } rubidium@8212: rubidium@8212: /** rubidium@10207: * Check if a company has a replacement set up for the given engine. rubidium@10207: * @param c Company. rubidium@8212: * @param engine Engine type to be replaced. rubidium@8212: * @return true if a replacement was set up, false otherwise. rubidium@8212: */ rubidium@10207: static inline bool EngineHasReplacementForCompany(const Company *c, EngineID engine, GroupID group) rubidium@8212: { rubidium@10207: return EngineReplacementForCompany(c, engine, group) != INVALID_ENGINE; rubidium@8212: } rubidium@8212: rubidium@8212: /** rubidium@10207: * Add an engine replacement for the company. rubidium@10207: * @param c Company. 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@10207: static inline CommandCost AddEngineReplacementForCompany(Company *c, EngineID old_engine, EngineID new_engine, GroupID group, uint32 flags) rubidium@8212: { rubidium@10207: return AddEngineReplacement(&c->engine_renew_list, old_engine, new_engine, group, flags); rubidium@8212: } rubidium@8212: rubidium@8212: /** rubidium@10207: * Remove an engine replacement for the company. rubidium@10207: * @param c Company. 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@10207: static inline CommandCost RemoveEngineReplacementForCompany(Company *c, EngineID engine, GroupID group, uint32 flags) rubidium@8212: { rubidium@10207: return RemoveEngineReplacement(&c->engine_renew_list, engine, group, flags); rubidium@8212: } rubidium@8212: rubidium@10207: bool CheckAutoreplaceValidity(EngineID from, EngineID to, CompanyID company); frosch@9889: rubidium@8212: #endif /* AUTOREPLACE_FUNC_H */