ai_event_types.hpp
Go to the documentation of this file.00001
00002
00005 #ifndef AI_EVENT_TYPES_HPP
00006 #define AI_EVENT_TYPES_HPP
00007
00008 #include "ai_object.hpp"
00009 #include "ai_event.hpp"
00010 #include "ai_town.hpp"
00011 #include "ai_industry.hpp"
00012 #include "ai_engine.hpp"
00013 #include "ai_subsidy.hpp"
00014
00019 class AIEventVehicleCrashed : public AIEvent {
00020 public:
00021 static const char *GetClassName() { return "AIEventVehicleCrashed"; }
00022
00026 enum CrashReason {
00027 CRASH_TRAIN,
00028 CRASH_RV_LEVEL_CROSSING,
00029 CRASH_RV_UFO,
00030 CRASH_PLANE_LANDING,
00031 CRASH_AIRCRAFT_NO_AIRPORT,
00032 CRASH_FLOODED,
00033 };
00034
00039 AIEventVehicleCrashed(VehicleID vehicle, TileIndex crash_site, CrashReason crash_reason) :
00040 AIEvent(AI_ET_VEHICLE_CRASHED),
00041 crash_site(crash_site),
00042 vehicle(vehicle),
00043 crash_reason(crash_reason)
00044 {}
00045
00051 static AIEventVehicleCrashed *Convert(AIEvent *instance) { return (AIEventVehicleCrashed *)instance; }
00052
00057 VehicleID GetVehicleID() { return vehicle; }
00058
00063 TileIndex GetCrashSite() { return crash_site; }
00064
00069 CrashReason GetCrashReason() { return crash_reason; }
00070
00071 private:
00072 TileIndex crash_site;
00073 VehicleID vehicle;
00074 CrashReason crash_reason;
00075 };
00076
00080 class AIEventSubsidyOffer : public AIEvent {
00081 public:
00082 static const char *GetClassName() { return "AIEventSubsidyOffer"; }
00083
00087 AIEventSubsidyOffer(SubsidyID subsidy_id) :
00088 AIEvent(AI_ET_SUBSIDY_OFFER),
00089 subsidy_id(subsidy_id)
00090 {}
00091
00097 static AIEventSubsidyOffer *Convert(AIEvent *instance) { return (AIEventSubsidyOffer *)instance; }
00098
00103 SubsidyID GetSubsidyID() { return subsidy_id; }
00104
00105 private:
00106 SubsidyID subsidy_id;
00107 };
00108
00112 class AIEventSubsidyOfferExpired : public AIEvent {
00113 public:
00114 static const char *GetClassName() { return "AIEventSubsidyOfferExpired"; }
00115
00119 AIEventSubsidyOfferExpired(SubsidyID subsidy_id) :
00120 AIEvent(AI_ET_SUBSIDY_OFFER_EXPIRED),
00121 subsidy_id(subsidy_id)
00122 {}
00123
00129 static AIEventSubsidyOfferExpired *Convert(AIEvent *instance) { return (AIEventSubsidyOfferExpired *)instance; }
00130
00135 SubsidyID GetSubsidyID() { return subsidy_id; }
00136
00137 private:
00138 SubsidyID subsidy_id;
00139 };
00140
00144 class AIEventSubsidyAwarded : public AIEvent {
00145 public:
00146 static const char *GetClassName() { return "AIEventSubsidyAwarded"; }
00147
00151 AIEventSubsidyAwarded(SubsidyID subsidy_id) :
00152 AIEvent(AI_ET_SUBSIDY_AWARDED),
00153 subsidy_id(subsidy_id)
00154 {}
00155
00161 static AIEventSubsidyAwarded *Convert(AIEvent *instance) { return (AIEventSubsidyAwarded *)instance; }
00162
00167 SubsidyID GetSubsidyID() { return subsidy_id; }
00168
00169 private:
00170 SubsidyID subsidy_id;
00171 };
00172
00176 class AIEventSubsidyExpired : public AIEvent {
00177 public:
00178 static const char *GetClassName() { return "AIEventSubsidyExpired"; }
00179
00183 AIEventSubsidyExpired(SubsidyID subsidy_id) :
00184 AIEvent(AI_ET_SUBSIDY_EXPIRED),
00185 subsidy_id(subsidy_id)
00186 {}
00187
00193 static AIEventSubsidyExpired *Convert(AIEvent *instance) { return (AIEventSubsidyExpired *)instance; }
00194
00199 SubsidyID GetSubsidyID() { return subsidy_id; }
00200
00201 private:
00202 SubsidyID subsidy_id;
00203 };
00204
00210 class AIEventEnginePreview : public AIEvent {
00211 public:
00212 static const char *GetClassName() { return "AIEventEnginePreview"; }
00213
00217 AIEventEnginePreview(EngineID engine) :
00218 AIEvent(AI_ET_ENGINE_PREVIEW),
00219 engine(engine)
00220 {}
00221
00227 static AIEventEnginePreview *Convert(AIEvent *instance) { return (AIEventEnginePreview *)instance; }
00228
00233 char *GetName();
00234
00240 CargoID GetCargoType();
00241
00247 int32 GetCapacity();
00248
00256 int32 GetMaxSpeed();
00257
00262 Money GetPrice();
00263
00269 Money GetRunningCost();
00270
00275 AIVehicle::VehicleType GetVehicleType();
00276
00281 bool AcceptPreview();
00282
00283 private:
00284 EngineID engine;
00285 };
00286
00290 class AIEventCompanyNew : public AIEvent {
00291 public:
00292 static const char *GetClassName() { return "AIEventCompanyNew"; }
00293
00297 AIEventCompanyNew(Owner owner) :
00298 AIEvent(AI_ET_COMPANY_NEW),
00299 owner((AICompany::CompanyID)(byte)owner)
00300 {}
00301
00307 static AIEventCompanyNew *Convert(AIEvent *instance) { return (AIEventCompanyNew *)instance; }
00308
00313 AICompany::CompanyID GetCompanyID() { return owner; }
00314
00315 private:
00316 AICompany::CompanyID owner;
00317 };
00318
00323 class AIEventCompanyInTrouble : public AIEvent {
00324 public:
00325 static const char *GetClassName() { return "AIEventCompanyInTrouble"; }
00326
00330 AIEventCompanyInTrouble(Owner owner) :
00331 AIEvent(AI_ET_COMPANY_IN_TROUBLE),
00332 owner((AICompany::CompanyID)(byte)owner)
00333 {}
00334
00340 static AIEventCompanyInTrouble *Convert(AIEvent *instance) { return (AIEventCompanyInTrouble *)instance; }
00341
00346 AICompany::CompanyID GetCompanyID() { return owner; }
00347
00348 private:
00349 AICompany::CompanyID owner;
00350 };
00351
00356 class AIEventCompanyMerger : public AIEvent {
00357 public:
00358 static const char *GetClassName() { return "AIEventCompanyMerger"; }
00359
00364 AIEventCompanyMerger(Owner old_owner, Owner new_owner) :
00365 AIEvent(AI_ET_COMPANY_MERGER),
00366 old_owner((AICompany::CompanyID)(byte)old_owner),
00367 new_owner((AICompany::CompanyID)(byte)new_owner)
00368 {}
00369
00375 static AIEventCompanyMerger *Convert(AIEvent *instance) { return (AIEventCompanyMerger *)instance; }
00376
00384 AICompany::CompanyID GetOldCompanyID() { return old_owner; }
00385
00390 AICompany::CompanyID GetNewCompanyID() { return new_owner; }
00391
00392 private:
00393 AICompany::CompanyID old_owner;
00394 AICompany::CompanyID new_owner;
00395 };
00396
00400 class AIEventCompanyBankrupt : public AIEvent {
00401 public:
00402 static const char *GetClassName() { return "AIEventCompanyBankrupt"; }
00403
00407 AIEventCompanyBankrupt(Owner owner) :
00408 AIEvent(AI_ET_COMPANY_BANKRUPT),
00409 owner((AICompany::CompanyID)(byte)owner)
00410 {}
00411
00417 static AIEventCompanyBankrupt *Convert(AIEvent *instance) { return (AIEventCompanyBankrupt *)instance; }
00418
00423 AICompany::CompanyID GetCompanyID() { return owner; }
00424
00425 private:
00426 AICompany::CompanyID owner;
00427 };
00428
00432 class AIEventVehicleLost : public AIEvent {
00433 public:
00434 static const char *GetClassName() { return "AIEventVehicleLost"; }
00435
00439 AIEventVehicleLost(VehicleID vehicle_id) :
00440 AIEvent(AI_ET_VEHICLE_LOST),
00441 vehicle_id(vehicle_id)
00442 {}
00443
00449 static AIEventVehicleLost *Convert(AIEvent *instance) { return (AIEventVehicleLost *)instance; }
00450
00455 VehicleID GetVehicleID() { return vehicle_id; }
00456
00457 private:
00458 VehicleID vehicle_id;
00459 };
00460
00464 class AIEventVehicleWaitingInDepot : public AIEvent {
00465 public:
00466 static const char *GetClassName() { return "AIEventVehicleWaitingInDepot"; }
00467
00471 AIEventVehicleWaitingInDepot(VehicleID vehicle_id) :
00472 AIEvent(AI_ET_VEHICLE_WAITING_IN_DEPOT),
00473 vehicle_id(vehicle_id)
00474 {}
00475
00481 static AIEventVehicleWaitingInDepot *Convert(AIEvent *instance) { return (AIEventVehicleWaitingInDepot *)instance; }
00482
00487 VehicleID GetVehicleID() { return vehicle_id; }
00488
00489 private:
00490 VehicleID vehicle_id;
00491 };
00492
00496 class AIEventVehicleUnprofitable : public AIEvent {
00497 public:
00498 static const char *GetClassName() { return "AIEventVehicleUnprofitable"; }
00499
00503 AIEventVehicleUnprofitable(VehicleID vehicle_id) :
00504 AIEvent(AI_ET_VEHICLE_UNPROFITABLE),
00505 vehicle_id(vehicle_id)
00506 {}
00507
00513 static AIEventVehicleUnprofitable *Convert(AIEvent *instance) { return (AIEventVehicleUnprofitable *)instance; }
00514
00519 VehicleID GetVehicleID() { return vehicle_id; }
00520
00521 private:
00522 VehicleID vehicle_id;
00523 };
00524
00528 class AIEventIndustryOpen : public AIEvent {
00529 public:
00530 static const char *GetClassName() { return "AIEventIndustryOpen"; }
00531
00535 AIEventIndustryOpen(IndustryID industry_id) :
00536 AIEvent(AI_ET_INDUSTRY_OPEN),
00537 industry_id(industry_id)
00538 {}
00539
00545 static AIEventIndustryOpen *Convert(AIEvent *instance) { return (AIEventIndustryOpen *)instance; }
00546
00551 IndustryID GetIndustryID() { return industry_id; }
00552
00553 private:
00554 IndustryID industry_id;
00555 };
00556
00560 class AIEventIndustryClose : public AIEvent {
00561 public:
00562 static const char *GetClassName() { return "AIEventIndustryClose"; }
00563
00567 AIEventIndustryClose(IndustryID industry_id) :
00568 AIEvent(AI_ET_INDUSTRY_CLOSE),
00569 industry_id(industry_id)
00570 {}
00571
00577 static AIEventIndustryClose *Convert(AIEvent *instance) { return (AIEventIndustryClose *)instance; }
00578
00583 IndustryID GetIndustryID() { return industry_id; }
00584
00585 private:
00586 IndustryID industry_id;
00587 };
00588
00592 class AIEventEngineAvailable : public AIEvent {
00593 public:
00594 static const char *GetClassName() { return "AIEventEngineAvailable"; }
00595
00599 AIEventEngineAvailable(EngineID engine) :
00600 AIEvent(AI_ET_ENGINE_AVAILABLE),
00601 engine(engine)
00602 {}
00603
00609 static AIEventEngineAvailable *Convert(AIEvent *instance) { return (AIEventEngineAvailable *)instance; }
00610
00615 EngineID GetEngineID() { return engine; }
00616
00617 private:
00618 EngineID engine;
00619 };
00620
00624 class AIEventStationFirstVehicle : public AIEvent {
00625 public:
00626 static const char *GetClassName() { return "AIEventStationFirstVehicle"; }
00627
00632 AIEventStationFirstVehicle(StationID station, VehicleID vehicle) :
00633 AIEvent(AI_ET_STATION_FIRST_VEHICLE),
00634 station(station),
00635 vehicle(vehicle)
00636 {}
00637
00643 static AIEventStationFirstVehicle *Convert(AIEvent *instance) { return (AIEventStationFirstVehicle *)instance; }
00644
00649 StationID GetStationID() { return station; }
00650
00655 VehicleID GetVehicleID() { return vehicle; }
00656
00657 private:
00658 StationID station;
00659 VehicleID vehicle;
00660 };
00661
00665 class AIEventDisasterZeppelinerCrashed : public AIEvent {
00666 public:
00667 static const char *GetClassName() { return "AIEventDisasterZeppelinerCrashed"; }
00668
00672 AIEventDisasterZeppelinerCrashed(StationID station) :
00673 AIEvent(AI_ET_DISASTER_ZEPPELINER_CRASHED),
00674 station(station)
00675 {}
00676
00682 static AIEventDisasterZeppelinerCrashed *Convert(AIEvent *instance) { return (AIEventDisasterZeppelinerCrashed *)instance; }
00683
00688 StationID GetStationID() { return station; }
00689
00690 private:
00691 StationID station;
00692 };
00693
00697 class AIEventDisasterZeppelinerCleared : public AIEvent {
00698 public:
00699 static const char *GetClassName() { return "AIEventDisasterZeppelinerCleared"; }
00700
00704 AIEventDisasterZeppelinerCleared(StationID station) :
00705 AIEvent(AI_ET_DISASTER_ZEPPELINER_CLEARED),
00706 station(station)
00707 {}
00708
00714 static AIEventDisasterZeppelinerCleared *Convert(AIEvent *instance) { return (AIEventDisasterZeppelinerCleared *)instance; }
00715
00720 StationID GetStationID() { return station; }
00721
00722 private:
00723 StationID station;
00724 };
00725
00726 #endif