ai_event_types.hpp

Go to the documentation of this file.
00001 /* $Id$ */
00002 
00003 /*
00004  * This file is part of OpenTTD.
00005  * 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.
00006  * 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.
00007  * 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/>.
00008  */
00009 
00012 #ifndef AI_EVENT_TYPES_HPP
00013 #define AI_EVENT_TYPES_HPP
00014 
00015 #include "ai_object.hpp"
00016 #include "ai_event.hpp"
00017 #include "ai_company.hpp"
00018 
00023 class AIEventVehicleCrashed : public AIEvent {
00024 public:
00025   static const char *GetClassName() { return "AIEventVehicleCrashed"; }
00026 
00030   enum CrashReason {
00031     CRASH_TRAIN,                
00032     CRASH_RV_LEVEL_CROSSING,    
00033     CRASH_RV_UFO,               
00034     CRASH_PLANE_LANDING,        
00035     CRASH_AIRCRAFT_NO_AIRPORT,  
00036     CRASH_FLOODED,              
00037   };
00038 
00044   AIEventVehicleCrashed(VehicleID vehicle, TileIndex crash_site, CrashReason crash_reason) :
00045     AIEvent(AI_ET_VEHICLE_CRASHED),
00046     crash_site(crash_site),
00047     vehicle(vehicle),
00048     crash_reason(crash_reason)
00049   {}
00050 
00056   static AIEventVehicleCrashed *Convert(AIEvent *instance) { return (AIEventVehicleCrashed *)instance; }
00057 
00062   VehicleID GetVehicleID() { return this->vehicle; }
00063 
00068   TileIndex GetCrashSite() { return this->crash_site; }
00069 
00074   CrashReason GetCrashReason() { return this->crash_reason; }
00075 
00076 private:
00077   TileIndex crash_site;
00078   VehicleID vehicle;
00079   CrashReason crash_reason;
00080 };
00081 
00085 class AIEventSubsidyOffer : public AIEvent {
00086 public:
00087   static const char *GetClassName() { return "AIEventSubsidyOffer"; }
00088 
00092   AIEventSubsidyOffer(SubsidyID subsidy_id) :
00093     AIEvent(AI_ET_SUBSIDY_OFFER),
00094     subsidy_id(subsidy_id)
00095   {}
00096 
00102   static AIEventSubsidyOffer *Convert(AIEvent *instance) { return (AIEventSubsidyOffer *)instance; }
00103 
00108   SubsidyID GetSubsidyID() { return this->subsidy_id; }
00109 
00110 private:
00111   SubsidyID subsidy_id;
00112 };
00113 
00117 class AIEventSubsidyOfferExpired : public AIEvent {
00118 public:
00119   static const char *GetClassName() { return "AIEventSubsidyOfferExpired"; }
00120 
00124   AIEventSubsidyOfferExpired(SubsidyID subsidy_id) :
00125     AIEvent(AI_ET_SUBSIDY_OFFER_EXPIRED),
00126     subsidy_id(subsidy_id)
00127   {}
00128 
00134   static AIEventSubsidyOfferExpired *Convert(AIEvent *instance) { return (AIEventSubsidyOfferExpired *)instance; }
00135 
00140   SubsidyID GetSubsidyID() { return this->subsidy_id; }
00141 
00142 private:
00143   SubsidyID subsidy_id;
00144 };
00145 
00149 class AIEventSubsidyAwarded : public AIEvent {
00150 public:
00151   static const char *GetClassName() { return "AIEventSubsidyAwarded"; }
00152 
00156   AIEventSubsidyAwarded(SubsidyID subsidy_id) :
00157     AIEvent(AI_ET_SUBSIDY_AWARDED),
00158     subsidy_id(subsidy_id)
00159   {}
00160 
00166   static AIEventSubsidyAwarded *Convert(AIEvent *instance) { return (AIEventSubsidyAwarded *)instance; }
00167 
00172   SubsidyID GetSubsidyID() { return this->subsidy_id; }
00173 
00174 private:
00175   SubsidyID subsidy_id;
00176 };
00177 
00181 class AIEventSubsidyExpired : public AIEvent {
00182 public:
00183   static const char *GetClassName() { return "AIEventSubsidyExpired"; }
00184 
00188   AIEventSubsidyExpired(SubsidyID subsidy_id) :
00189     AIEvent(AI_ET_SUBSIDY_EXPIRED),
00190     subsidy_id(subsidy_id)
00191   {}
00192 
00198   static AIEventSubsidyExpired *Convert(AIEvent *instance) { return (AIEventSubsidyExpired *)instance; }
00199 
00204    SubsidyID GetSubsidyID() { return this->subsidy_id; }
00205 
00206 private:
00207   SubsidyID subsidy_id;
00208 };
00209 
00215 class AIEventEnginePreview : public AIEvent {
00216 public:
00217   static const char *GetClassName() { return "AIEventEnginePreview"; }
00218 
00222   AIEventEnginePreview(EngineID engine) :
00223     AIEvent(AI_ET_ENGINE_PREVIEW),
00224     engine(engine)
00225   {}
00226 
00232   static AIEventEnginePreview *Convert(AIEvent *instance) { return (AIEventEnginePreview *)instance; }
00233 
00238   char *GetName();
00239 
00245   CargoID GetCargoType();
00246 
00252   int32 GetCapacity();
00253 
00261   int32 GetMaxSpeed();
00262 
00267   Money GetPrice();
00268 
00274   Money GetRunningCost();
00275 
00276 #ifdef DOXYGEN_SKIP
00277 
00281   AIVehicle::VehicleType GetVehicleType();
00282 #else
00283   int32 GetVehicleType();
00284 #endif
00285 
00290   bool AcceptPreview();
00291 
00292 private:
00293   EngineID engine;
00294 };
00295 
00299 class AIEventCompanyNew : public AIEvent {
00300 public:
00301   static const char *GetClassName() { return "AIEventCompanyNew"; }
00302 
00306   AIEventCompanyNew(Owner owner) :
00307     AIEvent(AI_ET_COMPANY_NEW),
00308     owner((AICompany::CompanyID)owner)
00309   {}
00310 
00316   static AIEventCompanyNew *Convert(AIEvent *instance) { return (AIEventCompanyNew *)instance; }
00317 
00322   AICompany::CompanyID GetCompanyID() { return this->owner; }
00323 
00324 private:
00325   AICompany::CompanyID owner;
00326 };
00327 
00332 class AIEventCompanyInTrouble : public AIEvent {
00333 public:
00334   static const char *GetClassName() { return "AIEventCompanyInTrouble"; }
00335 
00339   AIEventCompanyInTrouble(Owner owner) :
00340     AIEvent(AI_ET_COMPANY_IN_TROUBLE),
00341     owner((AICompany::CompanyID)owner)
00342   {}
00343 
00349   static AIEventCompanyInTrouble *Convert(AIEvent *instance) { return (AIEventCompanyInTrouble *)instance; }
00350 
00355   AICompany::CompanyID GetCompanyID() { return this->owner; }
00356 
00357 private:
00358   AICompany::CompanyID owner;
00359 };
00360 
00364 class AIEventCompanyAskMerger : public AIEvent {
00365 public:
00366   static const char *GetClassName() { return "AIEventCompanyAskMerger"; }
00367 
00372   AIEventCompanyAskMerger(Owner owner, int32 value) :
00373     AIEvent(AI_ET_COMPANY_MERGER),
00374     owner((AICompany::CompanyID)owner),
00375     value(value)
00376   {}
00377 
00383   static AIEventCompanyAskMerger *Convert(AIEvent *instance) { return (AIEventCompanyAskMerger *)instance; }
00384 
00390   AICompany::CompanyID GetCompanyID() { return this->owner; }
00391 
00396   int32 GetValue() { return this->value; }
00397 
00402   bool AcceptMerger();
00403 
00404 private:
00405   AICompany::CompanyID owner;
00406   int32 value;
00407 };
00408 
00413 class AIEventCompanyMerger : public AIEvent {
00414 public:
00415   static const char *GetClassName() { return "AIEventCompanyMerger"; }
00416 
00421   AIEventCompanyMerger(Owner old_owner, Owner new_owner) :
00422     AIEvent(AI_ET_COMPANY_MERGER),
00423     old_owner((AICompany::CompanyID)old_owner),
00424     new_owner((AICompany::CompanyID)new_owner)
00425   {}
00426 
00432   static AIEventCompanyMerger *Convert(AIEvent *instance) { return (AIEventCompanyMerger *)instance; }
00433 
00441   AICompany::CompanyID GetOldCompanyID() { return this->old_owner; }
00442 
00447   AICompany::CompanyID GetNewCompanyID() { return this->new_owner; }
00448 
00449 private:
00450   AICompany::CompanyID old_owner;
00451   AICompany::CompanyID new_owner;
00452 };
00453 
00457 class AIEventCompanyBankrupt : public AIEvent {
00458 public:
00459   static const char *GetClassName() { return "AIEventCompanyBankrupt"; }
00460 
00464   AIEventCompanyBankrupt(Owner owner) :
00465     AIEvent(AI_ET_COMPANY_BANKRUPT),
00466     owner((AICompany::CompanyID)owner)
00467   {}
00468 
00474   static AIEventCompanyBankrupt *Convert(AIEvent *instance) { return (AIEventCompanyBankrupt *)instance; }
00475 
00480   AICompany::CompanyID GetCompanyID() { return this->owner; }
00481 
00482 private:
00483   AICompany::CompanyID owner;
00484 };
00485 
00489 class AIEventVehicleLost : public AIEvent {
00490 public:
00491   static const char *GetClassName() { return "AIEventVehicleLost"; }
00492 
00496   AIEventVehicleLost(VehicleID vehicle_id) :
00497     AIEvent(AI_ET_VEHICLE_LOST),
00498     vehicle_id(vehicle_id)
00499   {}
00500 
00506   static AIEventVehicleLost *Convert(AIEvent *instance) { return (AIEventVehicleLost *)instance; }
00507 
00512   VehicleID GetVehicleID() { return this->vehicle_id; }
00513 
00514 private:
00515   VehicleID vehicle_id;
00516 };
00517 
00521 class AIEventVehicleWaitingInDepot : public AIEvent {
00522 public:
00523   static const char *GetClassName() { return "AIEventVehicleWaitingInDepot"; }
00524 
00528   AIEventVehicleWaitingInDepot(VehicleID vehicle_id) :
00529     AIEvent(AI_ET_VEHICLE_WAITING_IN_DEPOT),
00530     vehicle_id(vehicle_id)
00531   {}
00532 
00538   static AIEventVehicleWaitingInDepot *Convert(AIEvent *instance) { return (AIEventVehicleWaitingInDepot *)instance; }
00539 
00544   VehicleID GetVehicleID() { return this->vehicle_id; }
00545 
00546 private:
00547   VehicleID vehicle_id;
00548 };
00549 
00553 class AIEventVehicleUnprofitable : public AIEvent {
00554 public:
00555   static const char *GetClassName() { return "AIEventVehicleUnprofitable"; }
00556 
00560   AIEventVehicleUnprofitable(VehicleID vehicle_id) :
00561     AIEvent(AI_ET_VEHICLE_UNPROFITABLE),
00562     vehicle_id(vehicle_id)
00563   {}
00564 
00570   static AIEventVehicleUnprofitable *Convert(AIEvent *instance) { return (AIEventVehicleUnprofitable *)instance; }
00571 
00576   VehicleID GetVehicleID() { return this->vehicle_id; }
00577 
00578 private:
00579   VehicleID vehicle_id;
00580 };
00581 
00585 class AIEventIndustryOpen : public AIEvent {
00586 public:
00587   static const char *GetClassName() { return "AIEventIndustryOpen"; }
00588 
00592   AIEventIndustryOpen(IndustryID industry_id) :
00593     AIEvent(AI_ET_INDUSTRY_OPEN),
00594     industry_id(industry_id)
00595   {}
00596 
00602   static AIEventIndustryOpen *Convert(AIEvent *instance) { return (AIEventIndustryOpen *)instance; }
00603 
00608   IndustryID GetIndustryID() { return this->industry_id; }
00609 
00610 private:
00611   IndustryID industry_id;
00612 };
00613 
00617 class AIEventIndustryClose : public AIEvent {
00618 public:
00619   static const char *GetClassName() { return "AIEventIndustryClose"; }
00620 
00624   AIEventIndustryClose(IndustryID industry_id) :
00625     AIEvent(AI_ET_INDUSTRY_CLOSE),
00626     industry_id(industry_id)
00627   {}
00628 
00634   static AIEventIndustryClose *Convert(AIEvent *instance) { return (AIEventIndustryClose *)instance; }
00635 
00640   IndustryID GetIndustryID() { return this->industry_id; }
00641 
00642 private:
00643   IndustryID industry_id;
00644 };
00645 
00649 class AIEventEngineAvailable : public AIEvent {
00650 public:
00651   static const char *GetClassName() { return "AIEventEngineAvailable"; }
00652 
00656   AIEventEngineAvailable(EngineID engine) :
00657     AIEvent(AI_ET_ENGINE_AVAILABLE),
00658     engine(engine)
00659   {}
00660 
00666   static AIEventEngineAvailable *Convert(AIEvent *instance) { return (AIEventEngineAvailable *)instance; }
00667 
00672   EngineID GetEngineID() { return this->engine; }
00673 
00674 private:
00675   EngineID engine;
00676 };
00677 
00681 class AIEventStationFirstVehicle : public AIEvent {
00682 public:
00683   static const char *GetClassName() { return "AIEventStationFirstVehicle"; }
00684 
00689   AIEventStationFirstVehicle(StationID station, VehicleID vehicle) :
00690     AIEvent(AI_ET_STATION_FIRST_VEHICLE),
00691     station(station),
00692     vehicle(vehicle)
00693   {}
00694 
00700   static AIEventStationFirstVehicle *Convert(AIEvent *instance) { return (AIEventStationFirstVehicle *)instance; }
00701 
00706   StationID GetStationID() { return this->station; }
00707 
00712   VehicleID GetVehicleID() { return this->vehicle; }
00713 
00714 private:
00715   StationID station;
00716   VehicleID vehicle;
00717 };
00718 
00722 class AIEventDisasterZeppelinerCrashed : public AIEvent {
00723 public:
00724   static const char *GetClassName() { return "AIEventDisasterZeppelinerCrashed"; }
00725 
00729   AIEventDisasterZeppelinerCrashed(StationID station) :
00730     AIEvent(AI_ET_DISASTER_ZEPPELINER_CRASHED),
00731     station(station)
00732   {}
00733 
00739   static AIEventDisasterZeppelinerCrashed *Convert(AIEvent *instance) { return (AIEventDisasterZeppelinerCrashed *)instance; }
00740 
00745   StationID GetStationID() { return this->station; }
00746 
00747 private:
00748   StationID station;
00749 };
00750 
00754 class AIEventDisasterZeppelinerCleared : public AIEvent {
00755 public:
00756   static const char *GetClassName() { return "AIEventDisasterZeppelinerCleared"; }
00757 
00761   AIEventDisasterZeppelinerCleared(StationID station) :
00762     AIEvent(AI_ET_DISASTER_ZEPPELINER_CLEARED),
00763     station(station)
00764   {}
00765 
00771   static AIEventDisasterZeppelinerCleared *Convert(AIEvent *instance) { return (AIEventDisasterZeppelinerCleared *)instance; }
00772 
00777   StationID GetStationID() { return this->station; }
00778 
00779 private:
00780   StationID station;
00781 };
00782 
00783 #endif /* AI_EVENT_TYPES_HPP */

Generated on Sat Dec 26 20:05:58 2009 for OpenTTD by  doxygen 1.5.6