Emergency 20 Dokumentation  4.2.0
GangsterArsonist.h
Go to the documentation of this file.
1 // Copyright (C) 2012-2018 Promotion Software GmbH
2 
3 
4 //[-------------------------------------------------------]
5 //[ Header guard ]
6 //[-------------------------------------------------------]
7 #pragma once
8 
9 
10 //[-------------------------------------------------------]
11 //[ Includes ]
12 //[-------------------------------------------------------]
14 
15 
16 //[-------------------------------------------------------]
17 //[ Forward declarations ]
18 //[-------------------------------------------------------]
19 namespace em5
20 {
21  class BuildingComponent;
22 }
23 
24 
25 //[-------------------------------------------------------]
26 //[ Namespace ]
27 //[-------------------------------------------------------]
28 namespace em5
29 {
30 
31 
32  //[-------------------------------------------------------]
33  //[ Classes ]
34  //[-------------------------------------------------------]
40  {
41 
42 
43  //[-------------------------------------------------------]
44  //[ Public definitions ]
45  //[-------------------------------------------------------]
46  public:
47  static const uint32 GAMELOGIC_TYPE_ID; // "em5::GangsterArsonist" game logic type ID
48 
49 
50  //[-------------------------------------------------------]
51  //[ Public methods ]
52  //[-------------------------------------------------------]
53  public:
55  void setCheeringTime(qsf::Time val) { mCheeringTime = val; }
56 
57 
58  //[-------------------------------------------------------]
59  //[ Protected virtual em5::GangsterBaseLogic methods ]
60  //[-------------------------------------------------------]
61  protected:
62  virtual void onSimulationUpdate(const qsf::JobArguments& jobArguments) override;
63 
64  // Note: Don't simply save the list because there is no possibility to make sure that the entity references stay valid after the method returns
65  virtual void onUnitsSpotted(std::vector<SpottedUnit>& sightedPoliceUnits) override;
66 
67  // Notifies us when no more police units are within range. We use that to change the gangster back from "killer taskforce" to his last gangster logic
68  virtual void onNoUnitsSpotted() override;
69 
70 
71  //[-------------------------------------------------------]
72  //[ Private methods ]
73  //[-------------------------------------------------------]
74  private:
75  BuildingComponent* findBuildingCandidate() const;
76  bool checkBuildingCandidate(qsf::Entity& building) const;
77 
78 
79  //[-------------------------------------------------------]
80  //[ Private data ]
81  //[-------------------------------------------------------]
82  private:
83  uint64 mCurrentTargetId;
84  qsf::Time mCheeringTime;
85 
86  enum NextAction
87  {
88  UNDEFINED = 0,
89  GO_TO_NEXT_BUILDING,
90  SET_BUILDING_ON_FIRE,
91  WATCH_AND_CHEER,
92  DO_NOTHING
93  };
94  NextAction mNextAction;
95 
96 
97  //[-------------------------------------------------------]
98  //[ CAMP reflection system ]
99  //[-------------------------------------------------------]
100  QSF_CAMP_RTTI() // Only adds the virtual method "campClassId()", nothing more
101 
102 
103  };
104 
105 
106 //[-------------------------------------------------------]
107 //[ Namespace ]
108 //[-------------------------------------------------------]
109 } // em5
110 
111 
112 //[-------------------------------------------------------]
113 //[ CAMP reflection system ]
114 //[-------------------------------------------------------]
Definition: ActionPriority.h:13
EMERGENCY 5 building component class.
Definition: BuildingComponent.h:56
void setCheeringTime(qsf::Time val)
Definition: GangsterArsonist.h:55
Entity class.
Definition: Entity.h:46
unsigned int uint32
Definition: PlatformTypes.h:181
#define EM5_API_EXPORT
Definition: Export.h:28
uint64_t uint64
Definition: PlatformTypes.h:184
Job arguments class: holds data to be passed to the called job method by the job manager.
Definition: JobArguments.h:40
#define QSF_CAMP_RTTI()
Only adds the virtual method "campClassId()", nothing more.
Definition: CampClass.h:75
#define QSF_CAMP_TYPE_NONCOPYABLE(type)
See "CAMP_TYPE_NONCOPYABLE" for details.
Definition: CampClass.h:112
static const uint32 GAMELOGIC_TYPE_ID
Definition: GangsterArsonist.h:47
Base game logic for gangster.
Definition: GangsterBaseLogic.h:52
Game logic for gangster type "Arsonist".
Definition: GangsterArsonist.h:39
Data type for encapsulating time information. It might represents points in time and time spans...
Definition: Time.h:32