diff options
Diffstat (limited to 'src/ai/api/ai_event_types.hpp')
-rw-r--r-- | src/ai/api/ai_event_types.hpp | 778 |
1 files changed, 0 insertions, 778 deletions
diff --git a/src/ai/api/ai_event_types.hpp b/src/ai/api/ai_event_types.hpp deleted file mode 100644 index 92d7e3cfe..000000000 --- a/src/ai/api/ai_event_types.hpp +++ /dev/null @@ -1,778 +0,0 @@ -/* $Id$ */ - -/* - * This file is part of OpenTTD. - * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. - * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. - */ - -/** @file ai_event_types.hpp The detailed types of all events. */ - -#ifndef AI_EVENT_TYPES_HPP -#define AI_EVENT_TYPES_HPP - -#include "ai_event.hpp" -#include "ai_company.hpp" - -/** - * Event Vehicle Crash, indicating a vehicle of yours is crashed. - * It contains the crash site, the crashed vehicle and the reason for the crash. - */ -class AIEventVehicleCrashed : public AIEvent { -public: - /** - * The reasons for vehicle crashes - */ - enum CrashReason { - CRASH_TRAIN, ///< Two trains collided - CRASH_RV_LEVEL_CROSSING, ///< Road vehicle got under a train - CRASH_RV_UFO, ///< Road vehicle got under a landing ufo - CRASH_PLANE_LANDING, ///< Plane crashed on landing - CRASH_AIRCRAFT_NO_AIRPORT, ///< Aircraft crashed after it found not a single airport for landing - CRASH_FLOODED, ///< Vehicle was flooded - }; - - /** - * @param vehicle The vehicle that crashed. - * @param crash_site Where the vehicle crashed. - * @param crash_reason The reason why the vehicle crashed. - */ - AIEventVehicleCrashed(VehicleID vehicle, TileIndex crash_site, CrashReason crash_reason) : - AIEvent(AI_ET_VEHICLE_CRASHED), - crash_site(crash_site), - vehicle(vehicle), - crash_reason(crash_reason) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventVehicleCrashed *Convert(AIEvent *instance) { return (AIEventVehicleCrashed *)instance; } - - /** - * Get the VehicleID of the crashed vehicle. - * @return The crashed vehicle. - */ - VehicleID GetVehicleID() { return this->vehicle; } - - /** - * Find the tile the vehicle crashed. - * @return The crash site. - */ - TileIndex GetCrashSite() { return this->crash_site; } - - /** - * Get the reason for crashing - * @return The reason for crashing - */ - CrashReason GetCrashReason() { return this->crash_reason; } - -private: - TileIndex crash_site; ///< The location of the crash. - VehicleID vehicle; ///< The crashed vehicle. - CrashReason crash_reason; ///< The reason for crashing. -}; - -/** - * Event Subsidy Offered, indicating someone offered a subsidy. - */ -class AIEventSubsidyOffer : public AIEvent { -public: - /** - * @param subsidy_id The index of this subsidy in the _subsidies array. - */ - AIEventSubsidyOffer(SubsidyID subsidy_id) : - AIEvent(AI_ET_SUBSIDY_OFFER), - subsidy_id(subsidy_id) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventSubsidyOffer *Convert(AIEvent *instance) { return (AIEventSubsidyOffer *)instance; } - - /** - * Get the SubsidyID of the subsidy. - * @return The subsidy id. - */ - SubsidyID GetSubsidyID() { return this->subsidy_id; } - -private: - SubsidyID subsidy_id; ///< The subsidy that got offered. -}; - -/** - * Event Subsidy Offer Expired, indicating a subsidy will no longer be awarded. - */ -class AIEventSubsidyOfferExpired : public AIEvent { -public: - /** - * @param subsidy_id The index of this subsidy in the _subsidies array. - */ - AIEventSubsidyOfferExpired(SubsidyID subsidy_id) : - AIEvent(AI_ET_SUBSIDY_OFFER_EXPIRED), - subsidy_id(subsidy_id) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventSubsidyOfferExpired *Convert(AIEvent *instance) { return (AIEventSubsidyOfferExpired *)instance; } - - /** - * Get the SubsidyID of the subsidy. - * @return The subsidy id. - */ - SubsidyID GetSubsidyID() { return this->subsidy_id; } - -private: - SubsidyID subsidy_id; ///< The subsidy offer that expired. -}; - -/** - * Event Subidy Awarded, indicating a subsidy is awarded to some company. - */ -class AIEventSubsidyAwarded : public AIEvent { -public: - /** - * @param subsidy_id The index of this subsidy in the _subsidies array. - */ - AIEventSubsidyAwarded(SubsidyID subsidy_id) : - AIEvent(AI_ET_SUBSIDY_AWARDED), - subsidy_id(subsidy_id) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventSubsidyAwarded *Convert(AIEvent *instance) { return (AIEventSubsidyAwarded *)instance; } - - /** - * Get the SubsidyID of the subsidy. - * @return The subsidy id. - */ - SubsidyID GetSubsidyID() { return this->subsidy_id; } - -private: - SubsidyID subsidy_id; ///< The subsidy that was awared. -}; - -/** - * Event Subsidy Expired, indicating a route that was once subsidized no longer is. - */ -class AIEventSubsidyExpired : public AIEvent { -public: - /** - * @param subsidy_id The index of this subsidy in the _subsidies array. - */ - AIEventSubsidyExpired(SubsidyID subsidy_id) : - AIEvent(AI_ET_SUBSIDY_EXPIRED), - subsidy_id(subsidy_id) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventSubsidyExpired *Convert(AIEvent *instance) { return (AIEventSubsidyExpired *)instance; } - - /** - * Get the SubsidyID of the subsidy. - * @return The subsidy id. - */ - SubsidyID GetSubsidyID() { return this->subsidy_id; } - -private: - SubsidyID subsidy_id; ///< The subsidy that expired. -}; - -/** - * Event Engine Preview, indicating a manufacturer offer you to test a new engine. - * You can get the same information about the offered engine as a real user - * would see in the offer window. And you can also accept the offer. - */ -class AIEventEnginePreview : public AIEvent { -public: - /** - * @param engine The engine offered to test. - */ - AIEventEnginePreview(EngineID engine) : - AIEvent(AI_ET_ENGINE_PREVIEW), - engine(engine) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventEnginePreview *Convert(AIEvent *instance) { return (AIEventEnginePreview *)instance; } - - /** - * Get the name of the offered engine. - * @return The name the engine has. - */ - char *GetName(); - - /** - * Get the cargo-type of the offered engine. In case it can transport multiple cargos, it - * returns the first/main. - * @return The cargo-type of the engine. - */ - CargoID GetCargoType(); - - /** - * Get the capacity of the offered engine. In case it can transport multiple cargos, it - * returns the first/main. - * @return The capacity of the engine. - */ - int32 GetCapacity(); - - /** - * Get the maximum speed of the offered engine. - * @return The maximum speed the engine has. - * @note The speed is in OpenTTD's internal speed unit. - * This is mph / 1.6, which is roughly km/h. - * To get km/h multiply this number by 1.00584. - */ - int32 GetMaxSpeed(); - - /** - * Get the new cost of the offered engine. - * @return The new cost the engine has. - */ - Money GetPrice(); - - /** - * Get the running cost of the offered engine. - * @return The running cost of the vehicle per year. - * @note Cost is per year; divide by 365 to get per day. - */ - Money GetRunningCost(); - - /** - * Get the type of the offered engine. - * @return The type the engine has. - */ -#ifdef DOXYGEN_AI_DOCS - AIVehicle::VehicleType GetVehicleType(); -#else - int32 GetVehicleType(); -#endif - - /** - * Accept the engine preview. - * @return True when the accepting succeeded. - */ - bool AcceptPreview(); - -private: - EngineID engine; ///< The engine the preview is for. - - /** - * Check whether the engine from this preview is still valid. - * @return True iff the engine is still valid. - */ - bool IsEngineValid() const; -}; - -/** - * Event Company New, indicating a new company has been created. - */ -class AIEventCompanyNew : public AIEvent { -public: - /** - * @param owner The new company. - */ - AIEventCompanyNew(Owner owner) : - AIEvent(AI_ET_COMPANY_NEW), - owner((AICompany::CompanyID)owner) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventCompanyNew *Convert(AIEvent *instance) { return (AIEventCompanyNew *)instance; } - - /** - * Get the CompanyID of the company that has been created. - * @return The CompanyID of the company. - */ - AICompany::CompanyID GetCompanyID() { return this->owner; } - -private: - AICompany::CompanyID owner; ///< The new company. -}; - -/** - * Event Company In Trouble, indicating a company is in trouble and might go - * bankrupt soon. - */ -class AIEventCompanyInTrouble : public AIEvent { -public: - /** - * @param owner The company that is in trouble. - */ - AIEventCompanyInTrouble(Owner owner) : - AIEvent(AI_ET_COMPANY_IN_TROUBLE), - owner((AICompany::CompanyID)owner) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventCompanyInTrouble *Convert(AIEvent *instance) { return (AIEventCompanyInTrouble *)instance; } - - /** - * Get the CompanyID of the company that is in trouble. - * @return The CompanyID of the company in trouble. - */ - AICompany::CompanyID GetCompanyID() { return this->owner; } - -private: - AICompany::CompanyID owner; ///< The company that is in trouble. -}; - -/** - * Event Company Ask Merger, indicating a company can be bought (cheaply) by you. - */ -class AIEventCompanyAskMerger : public AIEvent { -public: - /** - * @param owner The company that can be bough. - * @param value The value/costs of buying the company. - */ - AIEventCompanyAskMerger(Owner owner, int32 value) : - AIEvent(AI_ET_COMPANY_ASK_MERGER), - owner((AICompany::CompanyID)owner), - value(value) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventCompanyAskMerger *Convert(AIEvent *instance) { return (AIEventCompanyAskMerger *)instance; } - - /** - * Get the CompanyID of the company that can be bought. - * @return The CompanyID of the company that can be bought. - * @note If the company is bought this will become invalid. - */ - AICompany::CompanyID GetCompanyID() { return this->owner; } - - /** - * Get the value of the new company. - * @return The value of the new company. - */ - int32 GetValue() { return this->value; } - - /** - * Take over the company for this merger. - * @return true if the merger was a success. - */ - bool AcceptMerger(); - -private: - AICompany::CompanyID owner; ///< The company that is in trouble. - int32 value; ///< The value of the company, i.e. the amount you would pay. -}; - -/** - * Event Company Merger, indicating a company has been bought by another - * company. - */ -class AIEventCompanyMerger : public AIEvent { -public: - /** - * @param old_owner The company bought off. - * @param new_owner The company that bougth owner. - */ - AIEventCompanyMerger(Owner old_owner, Owner new_owner) : - AIEvent(AI_ET_COMPANY_MERGER), - old_owner((AICompany::CompanyID)old_owner), - new_owner((AICompany::CompanyID)new_owner) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventCompanyMerger *Convert(AIEvent *instance) { return (AIEventCompanyMerger *)instance; } - - /** - * Get the CompanyID of the company that has been bought. - * @return The CompanyID of the company that has been bought. - * @note: The value below is not valid anymore as CompanyID, and - * AICompany::ResolveCompanyID will return COMPANY_COMPANY. It's - * only usefull if you're keeping track of company's yourself. - */ - AICompany::CompanyID GetOldCompanyID() { return this->old_owner; } - - /** - * Get the CompanyID of the new owner. - * @return The CompanyID of the new owner. - */ - AICompany::CompanyID GetNewCompanyID() { return this->new_owner; } - -private: - AICompany::CompanyID old_owner; ///< The company that ended to exist. - AICompany::CompanyID new_owner; ///< The company that's the end result of the merger. -}; - -/** - * Event Company Bankrupt, indicating a company has gone bankrupt. - */ -class AIEventCompanyBankrupt : public AIEvent { -public: - /** - * @param owner The company that has gone bankrupt. - */ - AIEventCompanyBankrupt(Owner owner) : - AIEvent(AI_ET_COMPANY_BANKRUPT), - owner((AICompany::CompanyID)owner) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventCompanyBankrupt *Convert(AIEvent *instance) { return (AIEventCompanyBankrupt *)instance; } - - /** - * Get the CompanyID of the company that has gone bankrupt. - * @return The CompanyID of the company that has gone bankrupt. - */ - AICompany::CompanyID GetCompanyID() { return this->owner; } - -private: - AICompany::CompanyID owner; ///< The company that has gone bankrupt. -}; - -/** - * Event Vehicle Lost, indicating a vehicle can't find its way to its destination. - */ -class AIEventVehicleLost : public AIEvent { -public: - /** - * @param vehicle_id The vehicle that is lost. - */ - AIEventVehicleLost(VehicleID vehicle_id) : - AIEvent(AI_ET_VEHICLE_LOST), - vehicle_id(vehicle_id) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventVehicleLost *Convert(AIEvent *instance) { return (AIEventVehicleLost *)instance; } - - /** - * Get the VehicleID of the vehicle that is lost. - * @return The VehicleID of the vehicle that is lost. - */ - VehicleID GetVehicleID() { return this->vehicle_id; } - -private: - VehicleID vehicle_id; ///< The vehicle that is lost. -}; - -/** - * Event VehicleWaitingInDepot, indicating a vehicle has arrived a depot and is now waiting there. - */ -class AIEventVehicleWaitingInDepot : public AIEvent { -public: - /** - * @param vehicle_id The vehicle that is waiting in a depot. - */ - AIEventVehicleWaitingInDepot(VehicleID vehicle_id) : - AIEvent(AI_ET_VEHICLE_WAITING_IN_DEPOT), - vehicle_id(vehicle_id) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventVehicleWaitingInDepot *Convert(AIEvent *instance) { return (AIEventVehicleWaitingInDepot *)instance; } - - /** - * Get the VehicleID of the vehicle that is waiting in a depot. - * @return The VehicleID of the vehicle that is waiting in a depot. - */ - VehicleID GetVehicleID() { return this->vehicle_id; } - -private: - VehicleID vehicle_id; ///< The vehicle that is waiting in the depot. -}; - -/** - * Event Vehicle Unprofitable, indicating a vehicle lost money last year. - */ -class AIEventVehicleUnprofitable : public AIEvent { -public: - /** - * @param vehicle_id The vehicle that was unprofitable. - */ - AIEventVehicleUnprofitable(VehicleID vehicle_id) : - AIEvent(AI_ET_VEHICLE_UNPROFITABLE), - vehicle_id(vehicle_id) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventVehicleUnprofitable *Convert(AIEvent *instance) { return (AIEventVehicleUnprofitable *)instance; } - - /** - * Get the VehicleID of the vehicle that lost money. - * @return The VehicleID of the vehicle that lost money. - */ - VehicleID GetVehicleID() { return this->vehicle_id; } - -private: - VehicleID vehicle_id; ///< The vehicle that is unprofitable. -}; - -/** - * Event Industry Open, indicating a new industry has been created. - */ -class AIEventIndustryOpen : public AIEvent { -public: - /** - * @param industry_id The new industry. - */ - AIEventIndustryOpen(IndustryID industry_id) : - AIEvent(AI_ET_INDUSTRY_OPEN), - industry_id(industry_id) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventIndustryOpen *Convert(AIEvent *instance) { return (AIEventIndustryOpen *)instance; } - - /** - * Get the IndustryID of the new industry. - * @return The IndustryID of the industry. - */ - IndustryID GetIndustryID() { return this->industry_id; } - -private: - IndustryID industry_id; ///< The industry that opened. -}; - -/** - * Event Industry Close, indicating an industry is going to be closed. - */ -class AIEventIndustryClose : public AIEvent { -public: - /** - * @param industry_id The new industry. - */ - AIEventIndustryClose(IndustryID industry_id) : - AIEvent(AI_ET_INDUSTRY_CLOSE), - industry_id(industry_id) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventIndustryClose *Convert(AIEvent *instance) { return (AIEventIndustryClose *)instance; } - - /** - * Get the IndustryID of the closing industry. - * @return The IndustryID of the industry. - */ - IndustryID GetIndustryID() { return this->industry_id; } - -private: - IndustryID industry_id; ///< The industry that closed. -}; - -/** - * Event Engine Available, indicating a new engine is available. - */ -class AIEventEngineAvailable : public AIEvent { -public: - /** - * @param engine The engine that is available. - */ - AIEventEngineAvailable(EngineID engine) : - AIEvent(AI_ET_ENGINE_AVAILABLE), - engine(engine) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventEngineAvailable *Convert(AIEvent *instance) { return (AIEventEngineAvailable *)instance; } - - /** - * Get the EngineID of the new engine. - * @return The EngineID of the new engine. - */ - EngineID GetEngineID() { return this->engine; } - -private: - EngineID engine; ///< The engine that became available. -}; - -/** - * Event Station First Vehicle, indicating a station has been visited by a vehicle for the first time. - */ -class AIEventStationFirstVehicle : public AIEvent { -public: - /** - * @param station The station visited for the first time. - * @param vehicle The vehicle visiting the station. - */ - AIEventStationFirstVehicle(StationID station, VehicleID vehicle) : - AIEvent(AI_ET_STATION_FIRST_VEHICLE), - station(station), - vehicle(vehicle) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventStationFirstVehicle *Convert(AIEvent *instance) { return (AIEventStationFirstVehicle *)instance; } - - /** - * Get the StationID of the visited station. - * @return The StationID of the visited station. - */ - StationID GetStationID() { return this->station; } - - /** - * Get the VehicleID of the first vehicle. - * @return The VehicleID of the first vehicle. - */ - VehicleID GetVehicleID() { return this->vehicle; } - -private: - StationID station; ///< The station the vehicle arived at. - VehicleID vehicle; ///< The vehicle that arrived at the station. -}; - -/** - * Event Disaster Zeppeliner Crashed, indicating a zeppeliner has crashed on an airport and is blocking the runway. - */ -class AIEventDisasterZeppelinerCrashed : public AIEvent { -public: - /** - * @param station The station containing the affected airport - */ - AIEventDisasterZeppelinerCrashed(StationID station) : - AIEvent(AI_ET_DISASTER_ZEPPELINER_CRASHED), - station(station) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventDisasterZeppelinerCrashed *Convert(AIEvent *instance) { return (AIEventDisasterZeppelinerCrashed *)instance; } - - /** - * Get the StationID of the station containing the affected airport. - * @return The StationID of the station containing the affected airport. - */ - StationID GetStationID() { return this->station; } - -private: - StationID station; ///< The station the zeppeliner crashed. -}; - -/** - * Event Disaster Zeppeliner Cleared, indicating a previously crashed zeppeliner has been removed, and the airport is operating again. - */ -class AIEventDisasterZeppelinerCleared : public AIEvent { -public: - /** - * @param station The station containing the affected airport - */ - AIEventDisasterZeppelinerCleared(StationID station) : - AIEvent(AI_ET_DISASTER_ZEPPELINER_CLEARED), - station(station) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventDisasterZeppelinerCleared *Convert(AIEvent *instance) { return (AIEventDisasterZeppelinerCleared *)instance; } - - /** - * Get the StationID of the station containing the affected airport. - * @return The StationID of the station containing the affected airport. - */ - StationID GetStationID() { return this->station; } - -private: - StationID station; ///< The station the zeppeliner crashed. -}; - -/** - * Event Town Founded, indicating a new town has been created. - */ -class AIEventTownFounded : public AIEvent { -public: - /** - * @param town The town that was created. - */ - AIEventTownFounded(TownID town) : - AIEvent(AI_ET_TOWN_FOUNDED), - town(town) - {} - - /** - * Convert an AIEvent to the real instance. - * @param instance The instance to convert. - * @return The converted instance. - */ - static AIEventTownFounded *Convert(AIEvent *instance) { return (AIEventTownFounded *)instance; } - - /** - * Get the TownID of the town. - * @return The TownID of the town that was created. - */ - TownID GetTownID() { return this->town; } - -private: - TownID town; ///< The town that got founded. -}; - -#endif /* AI_EVENT_TYPES_HPP */ |