1 #ifndef __EVENTS_H__
2 #define __EVENTS_H__
3 
4 #include "../SharedDefines.h"
5 #include "../Scene/SceneNodes.h"
6 #include "../Scene/HUDSceneNode.h"
7 
8 #include "EventMgr.h"
9 
10 // Auxiliary data decls ...
11 //
12 // data that is passed per-event in the userData parameter
13 //
14 // ( for some, but not all, events )
15 
16 //-- new object notification
17 
18 
19 //void RegisterEngineScriptEvents(void);
20 
21 #define STRINGIFY2(X) #X
22 #define STRINGIFY(X) STRINGIFY2(X)
23 
24 #define MAKE_EVENT_0_PARAM(EVENT_NAME) \
25 class EventData_##EVENT_NAME## : public BaseEventData \
26 { \
27 public: \
28     static const EventType sk_EventType; \
29     \
30     EventData_##EVENT_NAME##() { } \
31     \
32     virtual const EventType& VGetEventType() const { return sk_EventType; } \
33     virtual IEventDataPtr VCopy() const { return IEventDataPtr(new EventData_##EVENT_NAME##()); } \
34     virtual void VSerialize(std::ostringstream& out) const { } \
35     virtual void VDeserialize(std::istringstream& in) { } \
36     virtual const char* GetName(void) const { return ("EventData_" STRINGIFY(EVENT_NAME)); } \
37 }; \
38 
39 #define MAKE_EVENT_1_PARAM(EVENT_NAME, PARAM1_TYPE, PARAM1_NAME) \
40 class EventData_##EVENT_NAME## : public BaseEventData \
41 { \
42 public: \
43     static const EventType sk_EventType; \
44     \
45     EventData_##EVENT_NAME##() { } \
46     EventData_##EVENT_NAME##(PARAM1_TYPE PARAM1_NAME) { m_##PARAM1_NAME## = PARAM1_NAME; } \
47     \
48     virtual const EventType& VGetEventType() const { return sk_EventType; } \
49     virtual IEventDataPtr VCopy() const { return IEventDataPtr(new EventData_##EVENT_NAME##()); } \
50     virtual void VSerialize(std::ostringstream& out) const { } \
51     virtual void VDeserialize(std::istringstream& in) { } \
52     PARAM1_TYPE Get##PARAM1_NAME##() const { return m_##PARAM1_NAME##; } \
53     virtual const char* GetName(void) const { return ("EventData_" STRINGIFY(EVENT_NAME)); } \
54 private: \
55     PARAM1_TYPE m_##PARAM1_NAME##; \
56 }; \
57 
58 //MAKE_EVENT_0_PARAM(yolo)
59 
60 //MAKE_EVENT_1_PARAM(Stop_Jump, bool, Now)
61 
62 //---------------------------------------------------------------------------------------------------------------------
63 // EventData_NewActor - This event is sent out when an actor is *actually* created.
64 //---------------------------------------------------------------------------------------------------------------------
65 class EventData_New_Actor : public BaseEventData
66 {
67 public:
68     static const EventType sk_EventType;
69 
EventData_New_Actor(void)70     EventData_New_Actor(void)
71     {
72         m_ActorId = INVALID_ACTOR_ID;
73         m_ViewId = INVALID_GAME_VIEW_ID;
74     }
75 
76     explicit EventData_New_Actor(uint32_t actorId, uint32_t viewId = INVALID_GAME_VIEW_ID)
m_ActorId(actorId)77         : m_ActorId(actorId),
78         m_ViewId(viewId)
79     {
80     }
81 
VDeserialize(std::istringstream & in)82     virtual void VDeserialize(std::istringstream& in)
83     {
84         in >> m_ActorId;
85         in >> m_ViewId;
86     }
87 
VSerialize(std::ostringstream & out)88     virtual void VSerialize(std::ostringstream& out) const
89     {
90         out << m_ActorId << " ";
91         out << m_ViewId << " ";
92     }
93 
VGetEventType(void)94     virtual const EventType& VGetEventType(void) const
95     {
96         return sk_EventType;
97     }
98 
VCopy(void)99     virtual IEventDataPtr VCopy(void) const
100     {
101         return IEventDataPtr(new EventData_New_Actor(m_ActorId, m_ViewId));
102     }
103 
GetName(void)104     virtual const char* GetName(void) const
105     {
106         return "EventData_New_Actor";
107     }
108 
Getuint32_t(void)109     const uint32_t Getuint32_t(void) const
110     {
111         return m_ActorId;
112     }
113 
GetViewId(void)114     uint32_t GetViewId(void) const
115     {
116         return m_ViewId;
117     }
118 
119 private:
120     uint32_t m_ActorId;
121     uint32_t m_ViewId;
122 };
123 
124 
125 //---------------------------------------------------------------------------------------------------------------------
126 // EventData_Destroy_Actor - sent when actors are destroyed
127 //---------------------------------------------------------------------------------------------------------------------
128 class EventData_Destroy_Actor : public BaseEventData
129 {
130 public:
131     static const EventType sk_EventType;
132 
133     explicit EventData_Destroy_Actor(uint32_t id = INVALID_ACTOR_ID)
m_Id(id)134         : m_Id(id)
135     {
136         //
137     }
138 
VGetEventType(void)139     virtual const EventType& VGetEventType(void) const
140     {
141         return sk_EventType;
142     }
143 
VCopy(void)144     virtual IEventDataPtr VCopy(void) const
145     {
146         return IEventDataPtr(new EventData_Destroy_Actor(m_Id));
147     }
148 
VSerialize(std::ostringstream & out)149     virtual void VSerialize(std::ostringstream &out) const
150     {
151         out << m_Id;
152     }
153 
VDeserialize(std::istringstream & in)154     virtual void VDeserialize(std::istringstream& in)
155     {
156         in >> m_Id;
157     }
158 
GetName(void)159     virtual const char* GetName(void) const
160     {
161         return "EventData_Destroy_Actor";
162     }
163 
GetActorId(void)164     uint32_t GetActorId(void) const { return m_Id; }
165 
166 private:
167     uint32_t m_Id;
168 };
169 
170 
171 //---------------------------------------------------------------------------------------------------------------------
172 // EventData_Move_Actor - sent when actors are moved
173 //---------------------------------------------------------------------------------------------------------------------
174 class EventData_Move_Actor : public BaseEventData
175 {
176 public:
177     static const EventType sk_EventType;
178 
VGetEventType(void)179     virtual const EventType& VGetEventType(void) const
180     {
181         return sk_EventType;
182     }
183 
EventData_Move_Actor(void)184     EventData_Move_Actor(void)
185     {
186         m_Id = INVALID_ACTOR_ID;
187     }
188 
EventData_Move_Actor(uint32_t id,const Point & move)189     EventData_Move_Actor(uint32_t id, const Point& move)
190         : m_Id(id), m_Move(move)
191     {
192         //
193     }
194 
VSerialize(std::ostringstream & out)195     virtual void VSerialize(std::ostringstream &out) const
196     {
197         out << m_Id << " ";
198         out << m_Move.x << " ";
199         out << m_Move.y << " ";
200     }
201 
VDeserialize(std::istringstream & in)202     virtual void VDeserialize(std::istringstream& in)
203     {
204         in >> m_Id;
205         in >> m_Move.x;
206         in >> m_Move.y;
207     }
208 
VCopy()209     virtual IEventDataPtr VCopy() const
210     {
211         return IEventDataPtr(new EventData_Move_Actor(m_Id, m_Move));
212     }
213 
GetName(void)214     virtual const char* GetName(void) const
215     {
216         return "EventData_Move_Actor";
217     }
218 
GetActorId(void)219     uint32_t GetActorId(void) const
220     {
221         return m_Id;
222     }
223 
GetMove(void)224     Point GetMove(void) const
225     {
226         return m_Move;
227     }
228 
229 private:
230     uint32_t m_Id;
231     Point m_Move;
232 };
233 
234 
235 //---------------------------------------------------------------------------------------------------------------------
236 // EventData_New_Render_Component - This event is sent out when an actor is *actually* created.
237 //---------------------------------------------------------------------------------------------------------------------
238 class EventData_New_Render_Component : public BaseEventData
239 {
240 public:
241     static const EventType sk_EventType;
242 
EventData_New_Render_Component(void)243     EventData_New_Render_Component(void)
244     {
245         m_ActorId = INVALID_ACTOR_ID;
246     }
247 
EventData_New_Render_Component(uint32_t actorId,shared_ptr<SceneNode> pSceneNode)248     explicit EventData_New_Render_Component(uint32_t actorId, shared_ptr<SceneNode> pSceneNode)
249         : m_ActorId(actorId),
250         m_pSceneNode(pSceneNode)
251     {
252     }
253 
VSerialize(std::ostringstream & out)254     virtual void VSerialize(std::ostringstream& out) const
255     {
256         LOG_ERROR(GetName() + std::string(" should not be serialzied!"));
257     }
258 
VDeserialize(std::istringstream & in)259     virtual void VDeserialize(std::istringstream& in)
260     {
261         LOG_ERROR(GetName() + std::string(" should not be serialzied!"));
262     }
263 
VGetEventType(void)264     virtual const EventType& VGetEventType(void) const
265     {
266         return sk_EventType;
267     }
268 
VCopy(void)269     virtual IEventDataPtr VCopy(void) const
270     {
271         return IEventDataPtr(new EventData_New_Render_Component(m_ActorId, m_pSceneNode));
272     }
273 
GetName(void)274     virtual const char* GetName(void) const
275     {
276         return "EventData_New_Render_Component";
277     }
278 
GetActorId(void)279     const uint32_t GetActorId(void) const
280     {
281         return m_ActorId;
282     }
283 
GetSceneNode(void)284     shared_ptr<SceneNode> GetSceneNode(void) const
285     {
286         return m_pSceneNode;
287     }
288 
289 private:
290     uint32_t m_ActorId;
291     shared_ptr<SceneNode> m_pSceneNode;
292 };
293 
294 
295 //---------------------------------------------------------------------------------------------------------------------
296 // EventData_Modified_Render_Component - This event is sent out when a render component is changed
297 //---------------------------------------------------------------------------------------------------------------------
298 class EventData_Modified_Render_Component : public BaseEventData
299 {
300 public:
301     static const EventType sk_EventType;
302 
VGetEventType(void)303     virtual const EventType& VGetEventType(void) const
304     {
305         return sk_EventType;
306     }
307 
EventData_Modified_Render_Component(void)308     EventData_Modified_Render_Component(void)
309     {
310         m_ActorId = INVALID_ACTOR_ID;
311     }
312 
EventData_Modified_Render_Component(uint32_t id)313     EventData_Modified_Render_Component(uint32_t id)
314         : m_ActorId(id)
315     {
316     }
317 
VSerialize(std::ostringstream & out)318     virtual void VSerialize(std::ostringstream &out) const
319     {
320         out << m_ActorId;
321     }
322 
VDeserialize(std::istringstream & in)323     virtual void VDeserialize(std::istringstream& in)
324     {
325         in >> m_ActorId;
326     }
327 
VCopy()328     virtual IEventDataPtr VCopy() const
329     {
330         return IEventDataPtr(new EventData_Modified_Render_Component(m_ActorId));
331     }
332 
GetName(void)333     virtual const char* GetName(void) const
334     {
335         return "EventData_Modified_Render_Component";
336     }
337 
Getuint32_t(void)338     uint32_t Getuint32_t(void) const
339     {
340         return m_ActorId;
341     }
342 
343 private:
344     uint32_t m_ActorId;
345 };
346 
347 
348 
349 //---------------------------------------------------------------------------------------------------------------------
350 // EventData_Environment_Loaded - this event is sent when a new game is started
351 //---------------------------------------------------------------------------------------------------------------------
352 class EventData_Environment_Loaded : public BaseEventData
353 {
354 public:
355     static const EventType sk_EventType;
356 
EventData_Environment_Loaded(void)357     EventData_Environment_Loaded(void) { }
VGetEventType(void)358     virtual const EventType& VGetEventType(void) const    { return sk_EventType; }
VCopy(void)359     virtual IEventDataPtr VCopy(void) const
360     {
361         return IEventDataPtr(new EventData_Environment_Loaded());
362     }
GetName(void)363     virtual const char* GetName(void) const  { return "EventData_Environment_Loaded"; }
364 };
365 
366 
367 //---------------------------------------------------------------------------------------------------------------------
368 // EventData_Environment_Loaded - this event is sent when a client has loaded its environment
369 //   This is special because we only want this event to go from client to server, and stop there. The
370 //   EventData_Environment_Loaded is received by server and proxy logics alike. Thy to do this with just the above
371 //   event and you'll get into an endless loop of the EventData_Environment_Loaded event making infinite round trips
372 //   from client to server.
373 //
374 // FUTURE_WORK: It would be an interesting idea to add a "Private" type of event that is addressed only to a specific
375 //              listener. Of course, that might be a really dumb idea too - someone will have to try it!
376 //---------------------------------------------------------------------------------------------------------------------
377 class EventData_Remote_Environment_Loaded : public BaseEventData
378 {
379 public:
380     static const EventType sk_EventType;
381 
EventData_Remote_Environment_Loaded(void)382     EventData_Remote_Environment_Loaded(void) { }
VGetEventType(void)383     virtual const EventType& VGetEventType(void) const    { return sk_EventType; }
VCopy(void)384     virtual IEventDataPtr VCopy(void) const
385     {
386         return IEventDataPtr(new EventData_Remote_Environment_Loaded());
387     }
GetName(void)388     virtual const char* GetName(void) const  { return "EventData_Remote_Environment_Loaded"; }
389 };
390 
391 
392 //---------------------------------------------------------------------------------------------------------------------
393 // EventData_Request_Start_Game - this is sent by the authoritative game logic to all views so they will load a game level.
394 //---------------------------------------------------------------------------------------------------------------------
395 class EventData_Request_Start_Game : public BaseEventData
396 {
397 
398 public:
399     static const EventType sk_EventType;
400 
EventData_Request_Start_Game(void)401     EventData_Request_Start_Game(void) { }
402 
VGetEventType(void)403     virtual const EventType& VGetEventType(void) const
404     {
405         return sk_EventType;
406     }
407 
VCopy()408     virtual IEventDataPtr VCopy() const
409     {
410         return IEventDataPtr(new EventData_Request_Start_Game());
411     }
412 
GetName(void)413     virtual const char* GetName(void) const
414     {
415         return "EventData_Request_Start_Game";
416     }
417 };
418 
419 
420 /**** HOLY CRAP THIS ISN"T USED ANYMORE????
421 //---------------------------------------------------------------------------------------------------------------------
422 // EventData_Game_State - sent whenever the game state is changed (look for "BGS_" to see the different states)
423 //---------------------------------------------------------------------------------------------------------------------
424 class EventData_Game_State : public BaseEventData
425 {
426 BaseGameState m_gameState;
427 std::string m_parameter;
428 
429 public:
430 static const EventType sk_EventType;
431 
432 EventData_Game_State(void)
433 {
434 m_gameState = BGS_Invalid;
435 }
436 
437 explicit EventData_Game_State(const BaseGameState gameState, const std::string &parameter)
438 : m_gameState(gameState), m_parameter(parameter)
439 {
440 }
441 
442 virtual const EventType & VGetEventType( void ) const
443 {
444 return sk_EventType;
445 }
446 
447 virtual IEventDataPtr VCopy() const
448 {
449 return IEventDataPtr( new EventData_Game_State( m_gameState, m_parameter ) );
450 }
451 
452 virtual void VSerialize(std::ostringstream &out) const
453 {
454 const int tempVal = static_cast< int >( m_gameState );
455 out << tempVal << " ";
456 out << m_parameter;
457 }
458 
459 virtual void VDeserialize(std::istringstream &in)
460 {
461 int tempVal;
462 in >> tempVal;
463 m_gameState = static_cast<BaseGameState>( tempVal );
464 in >> m_parameter;
465 }
466 
467 virtual const char* GetName(void) const
468 {
469 return "EventData_Game_State";
470 }
471 
472 BaseGameState GetGameState(void) const
473 {
474 return m_gameState;
475 }
476 
477 const std::string GetParameter(void) const
478 {
479 return m_parameter;
480 }
481 };
482 **********************/
483 
484 
485 //---------------------------------------------------------------------------------------------------------------------
486 // EventData_Remote_Client                        - Chapter 19, page 687
487 //
488 //   Sent whenever a new client attaches to a game logic acting as a server
489 //---------------------------------------------------------------------------------------------------------------------
490 class EventData_Remote_Client : public BaseEventData
491 {
492 public:
493     static const EventType sk_EventType;
494 
EventData_Remote_Client(void)495     EventData_Remote_Client(void)
496     {
497         m_SocketId = 0;
498         m_IpAddress = 0;
499     }
500 
EventData_Remote_Client(const int socketid,const int ipaddress)501     EventData_Remote_Client(const int socketid, const int ipaddress)
502         : m_SocketId(socketid), m_IpAddress(ipaddress)
503     {
504     }
505 
VGetEventType(void)506     virtual const EventType & VGetEventType(void) const
507     {
508         return sk_EventType;
509     }
510 
VCopy()511     virtual IEventDataPtr VCopy() const
512     {
513         return IEventDataPtr(new EventData_Remote_Client(m_SocketId, m_IpAddress));
514     }
515 
GetName(void)516     virtual const char* GetName(void) const
517     {
518         return "EventData_Remote_Client";
519     }
520 
VSerialize(std::ostringstream & out)521     virtual void VSerialize(std::ostringstream &out) const
522     {
523         out << m_SocketId << " ";
524         out << m_IpAddress;
525     }
526 
VDeserialize(std::istringstream & in)527     virtual void VDeserialize(std::istringstream &in)
528     {
529         in >> m_SocketId;
530         in >> m_IpAddress;
531     }
532 
GetSocketId(void)533     int GetSocketId(void) const
534     {
535         return m_SocketId;
536     }
537 
GetIpAddress(void)538     int GetIpAddress(void) const
539     {
540         return m_IpAddress;
541     }
542 
543 private:
544     int m_SocketId;
545     int m_IpAddress;
546 };
547 
548 
549 //---------------------------------------------------------------------------------------------------------------------
550 // EventData_Update_Tick - sent by the game logic each game tick
551 //---------------------------------------------------------------------------------------------------------------------
552 class EventData_Update_Tick : public BaseEventData
553 {
554 public:
555     static const EventType sk_EventType;
556 
EventData_Update_Tick(const int deltaMilliseconds)557     explicit EventData_Update_Tick(const int deltaMilliseconds)
558         : m_DeltaMilliseconds(deltaMilliseconds)
559     {
560     }
561 
VGetEventType(void)562     virtual const EventType& VGetEventType(void) const
563     {
564         return sk_EventType;
565     }
566 
VCopy()567     virtual IEventDataPtr VCopy() const
568     {
569         return IEventDataPtr(new EventData_Update_Tick(m_DeltaMilliseconds));
570     }
571 
VSerialize(std::ostringstream & out)572     virtual void VSerialize(std::ostringstream & out)
573     {
574         LOG_ERROR("You should not be serializing update ticks!");
575     }
576 
GetName(void)577     virtual const char* GetName(void) const
578     {
579         return "EventData_Update_Tick";
580     }
581 
582 private:
583     int m_DeltaMilliseconds;
584 };
585 
586 
587 //---------------------------------------------------------------------------------------------------------------------
588 // EventData_Network_Player_Actor_Assignment - sent by the server to the clients when a network view is assigned a player number
589 //---------------------------------------------------------------------------------------------------------------------
590 class EventData_Network_Player_Actor_Assignment : public BaseEventData
591 {
592 public:
593     static const EventType sk_EventType;
594 
EventData_Network_Player_Actor_Assignment()595     EventData_Network_Player_Actor_Assignment()
596     {
597         m_ActorId = INVALID_ACTOR_ID;
598         m_SocketId = -1;
599     }
600 
EventData_Network_Player_Actor_Assignment(const uint32_t actorId,const int socketId)601     explicit EventData_Network_Player_Actor_Assignment(const uint32_t actorId, const int socketId)
602         : m_ActorId(actorId), m_SocketId(socketId)
603 
604     {
605     }
606 
VGetEventType(void)607     virtual const EventType & VGetEventType(void) const
608     {
609         return sk_EventType;
610     }
611 
VCopy()612     virtual IEventDataPtr VCopy() const
613     {
614         return IEventDataPtr(new EventData_Network_Player_Actor_Assignment(m_ActorId, m_SocketId));
615     }
616 
GetName(void)617     virtual const char* GetName(void) const
618     {
619         return "EventData_Network_Player_Actor_Assignment";
620     }
621 
622 
VSerialize(std::ostringstream & out)623     virtual void VSerialize(std::ostringstream &out) const
624     {
625         out << m_ActorId << " ";
626         out << m_SocketId;
627     }
628 
VDeserialize(std::istringstream & in)629     virtual void VDeserialize(std::istringstream &in)
630     {
631         in >> m_ActorId;
632         in >> m_SocketId;
633     }
634 
Getuint32_t(void)635     uint32_t Getuint32_t(void) const
636     {
637         return m_ActorId;
638     }
639 
GetSocketId(void)640     uint32_t GetSocketId(void) const
641     {
642         return m_SocketId;
643     }
644 
645 private:
646     uint32_t m_ActorId;
647     int m_SocketId;
648 };
649 
650 
651 //---------------------------------------------------------------------------------------------------------------------
652 // EventData_Decompress_Request - sent to a multithreaded game event listener to decompress something in the resource file
653 //---------------------------------------------------------------------------------------------------------------------
654 class EventData_Decompress_Request : public BaseEventData
655 {
656 public:
657     static const EventType sk_EventType;
658 
EventData_Decompress_Request(std::wstring zipFileName,std::string filename)659     explicit EventData_Decompress_Request(std::wstring zipFileName, std::string filename)
660         : m_ResourceFileName(zipFileName),
661         m_FileName(filename)
662     {
663     }
664 
VGetEventType(void)665     virtual const EventType& VGetEventType(void) const
666     {
667         return sk_EventType;
668     }
669 
VCopy()670     virtual IEventDataPtr VCopy() const
671     {
672         return IEventDataPtr(new EventData_Decompress_Request(m_ResourceFileName, m_FileName));
673     }
674 
VSerialize(std::ostringstream & out)675     virtual void VSerialize(std::ostringstream & out)
676     {
677         LOG_ERROR("You should not be serializing decompression requests!");
678     }
679 
GetZipFilename(void)680     const std::wstring& GetZipFilename(void) const
681     {
682         return m_ResourceFileName;
683     }
684 
GetFilename(void)685     const std::string& GetFilename(void) const
686     {
687         return m_FileName;
688     }
GetName(void)689     virtual const char* GetName(void) const
690     {
691         return "EventData_Decompress_Request";
692     }
693 
694 private:
695     std::wstring m_ResourceFileName;
696     std::string m_FileName;
697 };
698 
699 
700 //---------------------------------------------------------------------------------------------------------------------
701 // EventData_Decompression_Progress - sent by the decompression thread to report progress
702 //---------------------------------------------------------------------------------------------------------------------
703 class EventData_Decompression_Progress : public BaseEventData
704 {
705 public:
706     static const EventType sk_EventType;
707 
EventData_Decompression_Progress(int progress,std::wstring zipFileName,std::string filename,void * buffer)708     EventData_Decompression_Progress(int progress, std::wstring zipFileName, std::string filename, void *buffer)
709         : m_Progress(progress),
710         m_ResourceFileName(zipFileName),
711         m_FileName(filename),
712         m_pBuffer(buffer)
713     {
714     }
715 
VGetEventType(void)716     virtual const EventType & VGetEventType(void) const
717     {
718         return sk_EventType;
719     }
720 
VCopy()721     virtual IEventDataPtr VCopy() const
722     {
723         return IEventDataPtr(new EventData_Decompression_Progress(m_Progress, m_ResourceFileName, m_FileName, m_pBuffer));
724     }
725 
VSerialize(std::ostringstream & out)726     virtual void VSerialize(std::ostringstream & out)
727     {
728         LOG_ERROR("You should not be serializing decompression progress events!");
729     }
730 
GetName(void)731     virtual const char* GetName(void) const
732     {
733         return "EventData_Decompression_Progress";
734     }
735 
736 private:
737     int m_Progress;
738     std::wstring m_ResourceFileName;
739     std::string m_FileName;
740     void *m_pBuffer;
741 };
742 
743 
744 //---------------------------------------------------------------------------------------------------------------------
745 // class EventData_Request_New_Actor
746 // This event is sent by a server asking Client proxy logics to create new actors from their local resources.
747 // It can be sent from script or via code.
748 // This event is also sent from the server game logic to client logics AFTER it has created a new actor. The logics will allow follow suit to stay in sync.
749 //---------------------------------------------------------------------------------------------------------------------
750 class EventData_Request_New_Actor : public BaseEventData
751 {
752 public:
753     static const EventType sk_EventType;
754 
EventData_Request_New_Actor()755     EventData_Request_New_Actor()
756     {
757         m_ActorResource = "";
758         m_HasInitialPosition = false;
759         m_InitialPosition = Point(0, 0);
760         m_ServerActorId = -1;
761         m_ViewId = INVALID_GAME_VIEW_ID;
762     }
763 
764     explicit EventData_Request_New_Actor(const std::string &actorResource, const Point *pInitialPosition = NULL, const uint32_t actorId = INVALID_ACTOR_ID, const uint32_t viewId = INVALID_GAME_VIEW_ID)
765     {
766         m_ActorResource = actorResource;
767         if (pInitialPosition)
768         {
769             m_HasInitialPosition = true;
770             m_InitialPosition = *pInitialPosition;
771         }
772         else
773             m_HasInitialPosition = false;
774 
775         m_ServerActorId = actorId;
776         m_ViewId = viewId;
777     }
778 
VGetEventType(void)779     virtual const EventType& VGetEventType(void) const
780     {
781         return sk_EventType;
782     }
783 
VDeserialize(std::istringstream & in)784     virtual void VDeserialize(std::istringstream & in)
785     {
786         in >> m_ActorResource;
787         in >> m_HasInitialPosition;
788         if (m_HasInitialPosition)
789         {
790             in >> m_InitialPosition.x;
791             in >> m_InitialPosition.y;
792         }
793         in >> m_ServerActorId;
794         in >> m_ViewId;
795     }
796 
VCopy()797     virtual IEventDataPtr VCopy() const
798     {
799         return IEventDataPtr(new EventData_Request_New_Actor(m_ActorResource, (m_HasInitialPosition) ? &m_InitialPosition : NULL, m_ServerActorId, m_ViewId));
800     }
801 
VSerialize(std::ostringstream & out)802     virtual void VSerialize(std::ostringstream & out) const
803     {
804         out << m_ActorResource << " ";
805         out << m_HasInitialPosition << " ";
806         if (m_HasInitialPosition)
807         {
808             out << m_InitialPosition.x << " ";
809             out << m_InitialPosition.y << " ";
810         }
811         out << m_ServerActorId << " ";
812         out << m_ViewId << " ";
813     }
814 
GetName(void)815     virtual const char* GetName(void) const { return "EventData_Request_New_Actor"; }
816 
GetActorResource(void)817     const std::string &GetActorResource(void) const { return m_ActorResource; }
GetInitialTransform(void)818     const Point *GetInitialTransform(void) const { return (m_HasInitialPosition) ? &m_InitialPosition : NULL; }
GetServerActorId(void)819     const uint32_t GetServerActorId(void) const     { return m_ServerActorId; }
GetViewId(void)820     uint32_t GetViewId(void) const { return m_ViewId; }
821 
822 private:
823     std::string m_ActorResource;
824     bool m_HasInitialPosition;
825     Point m_InitialPosition;
826     uint32_t m_ServerActorId;
827     uint32_t m_ViewId;
828 };
829 
830 /*
831 //---------------------------------------------------------------------------------------------------------------------
832 // EventData_Request_Destroy_Actor - sent by any system requesting that the game logic destroy an actor
833 //    FUTURE WORK - This event shouldn't really exist - subsystems should never ask the game logic to destroy something through an event, should they?
834 //---------------------------------------------------------------------------------------------------------------------
835 class EventData_Request_Destroy_Actor : public ScriptEvent
836 {
837     uint32_t m_ActorId;
838 
839 public:
840     static const EventType sk_EventType;
841 
842     EventData_Request_Destroy_Actor()
843     {
844         m_ActorId = INVALID_ACTOR_ID;
845     }
846 
847     EventData_Request_Destroy_Actor(uint32_t actorId)
848     {
849         m_ActorId = actorId;
850     }
851 
852     virtual const EventType& VGetEventType(void) const
853     {
854         return sk_EventType;
855     }
856 
857     virtual void VDeserialize(std::istringstream & in)
858     {
859         in >> m_ActorId;
860     }
861 
862     virtual IEventDataPtr VCopy() const
863     {
864         return IEventDataPtr(new EventData_Request_Destroy_Actor(m_ActorId));
865     }
866 
867     virtual void VSerialize(std::ostringstream & out) const
868     {
869         out << m_ActorId;
870     }
871 
872     virtual const char* GetName(void) const
873     {
874         return "EventData_Request_Destroy_Actor";
875     }
876 
877     uint32_t Getuint32_t(void) const
878     {
879         return m_ActorId;
880     }
881 
882     virtual bool VBuildEventFromScript(void)
883     {
884         if (m_eventData.IsInteger())
885         {
886             m_ActorId = m_eventData.GetInteger();
887             return true;
888         }
889         return false;
890     }
891 };
892 */
893 
894 //---------------------------------------------------------------------------------------------------------------------
895 // EventData_PlaySound - sent by any system wishing for a HumanView to play a sound
896 //---------------------------------------------------------------------------------------------------------------------
897 class EventData_PlaySound : public BaseEventData
898 {
899 public:
900     static const EventType sk_EventType;
901 
EventData_PlaySound(void)902     EventData_PlaySound(void) { }
EventData_PlaySound(const std::string & soundResource)903     EventData_PlaySound(const std::string& soundResource)
904         : m_SoundResource(soundResource)
905     {
906     }
907 
VGetEventType(void)908     virtual const EventType& VGetEventType(void) const
909     {
910         return sk_EventType;
911     }
912 
VCopy()913     virtual IEventDataPtr VCopy() const
914     {
915         return IEventDataPtr(new EventData_PlaySound(m_SoundResource));
916     }
917 
VSerialize(std::ostringstream & out)918     virtual void VSerialize(std::ostringstream& out) const
919     {
920         out << m_SoundResource;
921     }
922 
VDeserialize(std::istringstream & in)923     virtual void VDeserialize(std::istringstream& in)
924     {
925         in >> m_SoundResource;
926     }
927 
GetResource(void)928     const std::string& GetResource(void) const
929     {
930         return m_SoundResource;
931     }
932 
GetName(void)933     virtual const char* GetName(void) const
934     {
935         return "EventData_PlaySound";
936     }
937 
938     //virtual bool VBuildEventFromScript(void);
939 
940 private:
941     std::string m_SoundResource;
942 };
943 
944 //=====================================================================================================================
945 // My events begin here
946 //=====================================================================================================================
947 
948 //---------------------------------------------------------------------------------------------------------------------
949 // EventData_Attach_Actor - sent when controllable actor is loaded
950 //---------------------------------------------------------------------------------------------------------------------
951 class EventData_Attach_Actor : public BaseEventData
952 {
953 public:
954     static const EventType sk_EventType;
955 
EventData_Attach_Actor(void)956     EventData_Attach_Actor(void)
957     {
958         m_ActorId = INVALID_ACTOR_ID;
959     }
960 
EventData_Attach_Actor(uint32 actorId)961     EventData_Attach_Actor(uint32 actorId)
962     {
963         m_ActorId = actorId;
964     }
965 
VGetEventType(void)966     virtual const EventType& VGetEventType(void) const
967     {
968         return sk_EventType;
969     }
970 
VCopy()971     virtual IEventDataPtr VCopy() const
972     {
973         return IEventDataPtr(new EventData_Attach_Actor(m_ActorId));
974     }
975 
VSerialize(std::ostringstream & out)976     virtual void VSerialize(std::ostringstream& out) const
977     {
978         out << m_ActorId;
979     }
980 
VDeserialize(std::istringstream & in)981     virtual void VDeserialize(std::istringstream& in)
982     {
983         in >> m_ActorId;
984     }
985 
GetActorId(void)986     uint32 GetActorId(void) const
987     {
988         return m_ActorId;
989     }
990 
GetName(void)991     virtual const char* GetName(void) const
992     {
993         return "EventData_Attach_Actor";
994     }
995 
996     //virtual bool VBuildEventFromScript(void);
997 
998 private:
999     uint32 m_ActorId;
1000 };
1001 
1002 //---------------------------------------------------------------------------------------------------------------------
1003 // EventData_Collideable_Tile_Created - sent when collidable tile has been created
1004 //---------------------------------------------------------------------------------------------------------------------
1005 class EventData_Collideable_Tile_Created : public BaseEventData
1006 {
1007 public:
1008     static const EventType sk_EventType;
1009 
EventData_Collideable_Tile_Created(void)1010     EventData_Collideable_Tile_Created(void)
1011     {
1012         m_TileId = -1;
1013         m_PositionX = 0;
1014         m_PositionY = 0;
1015         m_TilesCount = 0;
1016     }
1017 
EventData_Collideable_Tile_Created(int32 tileId,int32 positionX,int32 positionY,int tilesCount)1018     EventData_Collideable_Tile_Created(int32 tileId, int32 positionX, int32 positionY, int tilesCount)
1019     {
1020         m_TileId = tileId;
1021         m_PositionX = positionX;
1022         m_PositionY = positionY;
1023         m_TilesCount = tilesCount;
1024     }
1025 
VGetEventType(void)1026     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
1027 
VCopy()1028     virtual IEventDataPtr VCopy() const
1029     {
1030         return IEventDataPtr(new EventData_Collideable_Tile_Created(m_TileId, m_PositionX, m_PositionY, m_TilesCount));
1031     }
1032 
VSerialize(std::ostringstream & out)1033     virtual void VSerialize(std::ostringstream& out) const { out << m_TileId << " " << m_PositionX << " " << m_PositionY << m_TilesCount; }
VDeserialize(std::istringstream & in)1034     virtual void VDeserialize(std::istringstream& in) { in >> m_TileId >> m_PositionX >> m_PositionY >> m_TilesCount; }
GetName(void)1035     virtual const char* GetName(void) const { return "EventData_Collideable_Tile_Created"; }
1036 
GetTileId(void)1037     int32 GetTileId(void) const { return m_TileId; }
GetPositionX(void)1038     int32 GetPositionX(void) const { return m_PositionX; }
GetPositionY(void)1039     int32 GetPositionY(void) const { return m_PositionY; }
GetTilesCount()1040     int32 GetTilesCount() { return m_TilesCount; }
1041 
1042 private:
1043     int32 m_TileId;
1044     int32 m_PositionX;
1045     int32 m_PositionY;
1046     int32 m_TilesCount;
1047 };
1048 
1049 //---------------------------------------------------------------------------------------------------------------------
1050 // EventData_Add_Static_Geometry
1051 //---------------------------------------------------------------------------------------------------------------------
1052 class EventData_Add_Static_Geometry : public BaseEventData
1053 {
1054 public:
1055     static const EventType sk_EventType;
1056 
EventData_Add_Static_Geometry(Point position,Point size,CollisionType collisonType)1057     EventData_Add_Static_Geometry(Point position, Point size, CollisionType collisonType)
1058     {
1059         m_Position = position;
1060         m_Size = size;
1061         m_CollisionType = collisonType;
1062     }
1063 
VGetEventType(void)1064     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()1065     virtual IEventDataPtr VCopy() const
1066     {
1067         return IEventDataPtr(new EventData_Add_Static_Geometry(m_Position, m_Size, m_CollisionType));
1068     }
VSerialize(std::ostringstream & out)1069     virtual void VSerialize(std::ostringstream& out) const { out << m_Position.x << m_Position.y << m_Size.x << m_Size.y << (int)m_CollisionType; }
VDeserialize(std::istringstream & in)1070     virtual void VDeserialize(std::istringstream& in) { /* TODO: in >> m_Position.x >> m_Position.y >> m_Size.x >> m_Size.y >> (int)(m_CollisionType);*/ }
1071 
GetPosition()1072     Point GetPosition() { return m_Position; }
GetSize()1073     Point GetSize() { return m_Size; }
GetCollisionType()1074     CollisionType GetCollisionType() { return m_CollisionType; }
1075 
GetName(void)1076     virtual const char* GetName(void) const { return "EventData_Add_Static_Geometry"; }
1077 
1078 private:
1079     Point m_Position;
1080     Point m_Size;
1081     CollisionType m_CollisionType;
1082 };
1083 
1084 //---------------------------------------------------------------------------------------------------------------------
1085 // EventData_Start_Climb - sent when climb up or down is requested (down or up arrow is pressed)
1086 //---------------------------------------------------------------------------------------------------------------------
1087 class EventData_Start_Climb : public BaseEventData
1088 {
1089 public:
1090     static const EventType sk_EventType;
1091 
EventData_Start_Climb(void)1092     EventData_Start_Climb(void)
1093     {
1094         m_ActorId = INVALID_ACTOR_ID;
1095         m_ClimbMovement = Point(0, 0);
1096     }
1097 
EventData_Start_Climb(uint32 actorId,Point climbMovement)1098     EventData_Start_Climb(uint32 actorId, Point climbMovement)
1099     {
1100         m_ActorId = actorId;
1101         m_ClimbMovement = climbMovement;
1102     }
1103 
VGetEventType(void)1104     virtual const EventType& VGetEventType(void) const
1105     {
1106         return sk_EventType;
1107     }
1108 
VCopy()1109     virtual IEventDataPtr VCopy() const
1110     {
1111         return IEventDataPtr(new EventData_Start_Climb(m_ActorId, m_ClimbMovement));
1112     }
1113 
VSerialize(std::ostringstream & out)1114     virtual void VSerialize(std::ostringstream& out) const
1115     {
1116         out << m_ActorId;
1117     }
1118 
VDeserialize(std::istringstream & in)1119     virtual void VDeserialize(std::istringstream& in)
1120     {
1121         in >> m_ActorId;
1122     }
1123 
GetActorId(void)1124     uint32 GetActorId(void) const
1125     {
1126         return m_ActorId;
1127     }
1128 
GetClimbMovement()1129     Point GetClimbMovement() const
1130     {
1131         return m_ClimbMovement;
1132     }
1133 
GetName(void)1134     virtual const char* GetName(void) const
1135     {
1136         return "EventData_Start_Climb";
1137     }
1138 
1139     //virtual bool VBuildEventFromScript(void);
1140 
1141 private:
1142     uint32 m_ActorId;
1143     Point m_ClimbMovement;
1144 };
1145 
1146 //---------------------------------------------------------------------------------------------------------------------
1147 // EventData_Actor_Fire - Sent when Fire button is pressed. Fires projectile like pellet / magic
1148 //---------------------------------------------------------------------------------------------------------------------
1149 class EventData_Actor_Fire : public BaseEventData
1150 {
1151 public:
1152     static const EventType sk_EventType;
1153 
EventData_Actor_Fire(void)1154     EventData_Actor_Fire(void)
1155     {
1156         m_ActorId = INVALID_ACTOR_ID;
1157     }
1158 
EventData_Actor_Fire(uint32 actorId)1159     EventData_Actor_Fire(uint32 actorId)
1160     {
1161         m_ActorId = actorId;
1162     }
1163 
VGetEventType(void)1164     virtual const EventType& VGetEventType(void) const
1165     {
1166         return sk_EventType;
1167     }
1168 
VCopy()1169     virtual IEventDataPtr VCopy() const
1170     {
1171         return IEventDataPtr(new EventData_Actor_Fire(m_ActorId));
1172     }
1173 
VSerialize(std::ostringstream & out)1174     virtual void VSerialize(std::ostringstream& out) const
1175     {
1176         out << m_ActorId;
1177     }
1178 
VDeserialize(std::istringstream & in)1179     virtual void VDeserialize(std::istringstream& in)
1180     {
1181         in >> m_ActorId;
1182     }
1183 
GetActorId(void)1184     uint32 GetActorId(void) const
1185     {
1186         return m_ActorId;
1187     }
1188 
GetName(void)1189     virtual const char* GetName(void) const
1190     {
1191         return "EventData_Actor_Fire";
1192     }
1193 
1194 private:
1195     uint32 m_ActorId;
1196 };
1197 
1198 //---------------------------------------------------------------------------------------------------------------------
1199 // EventData_Actor_Fire_Ended - When fire button is released
1200 //---------------------------------------------------------------------------------------------------------------------
1201 class EventData_Actor_Fire_Ended : public BaseEventData
1202 {
1203 public:
1204     static const EventType sk_EventType;
1205 
EventData_Actor_Fire_Ended(uint32 actorId)1206     EventData_Actor_Fire_Ended(uint32 actorId) { m_ActorId = actorId; }
1207 
VGetEventType(void)1208     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()1209     virtual IEventDataPtr VCopy() const
1210     {
1211         return IEventDataPtr(new EventData_Actor_Fire_Ended(m_ActorId));
1212     }
VSerialize(std::ostringstream & out)1213     virtual void VSerialize(std::ostringstream& out) const { out << m_ActorId;  }
VDeserialize(std::istringstream & in)1214     virtual void VDeserialize(std::istringstream& in) { in >> m_ActorId; }
1215 
GetName(void)1216     virtual const char* GetName(void) const { return "EventData_Actor_Fire_Ended"; }
1217 
GetActorId()1218     uint32 GetActorId() { return m_ActorId; }
1219 
1220 private:
1221     uint32 m_ActorId;
1222 };
1223 
1224 //---------------------------------------------------------------------------------------------------------------------
1225 // EventData_Actor_Attack - Sent when attack button is pressed.
1226 //---------------------------------------------------------------------------------------------------------------------
1227 class EventData_Actor_Attack : public BaseEventData
1228 {
1229 public:
1230     static const EventType sk_EventType;
1231 
EventData_Actor_Attack(void)1232     EventData_Actor_Attack(void)
1233     {
1234         m_ActorId = INVALID_ACTOR_ID;
1235     }
1236 
EventData_Actor_Attack(uint32 actorId)1237     EventData_Actor_Attack(uint32 actorId)
1238     {
1239         m_ActorId = actorId;
1240     }
1241 
VGetEventType(void)1242     virtual const EventType& VGetEventType(void) const
1243     {
1244         return sk_EventType;
1245     }
1246 
VCopy()1247     virtual IEventDataPtr VCopy() const
1248     {
1249         return IEventDataPtr(new EventData_Actor_Attack(m_ActorId));
1250     }
1251 
VSerialize(std::ostringstream & out)1252     virtual void VSerialize(std::ostringstream& out) const
1253     {
1254         out << m_ActorId;
1255     }
1256 
VDeserialize(std::istringstream & in)1257     virtual void VDeserialize(std::istringstream& in)
1258     {
1259         in >> m_ActorId;
1260     }
1261 
GetActorId(void)1262     uint32 GetActorId(void) const
1263     {
1264         return m_ActorId;
1265     }
1266 
GetName(void)1267     virtual const char* GetName(void) const
1268     {
1269         return "EventData_Actor_Attack";
1270     }
1271 
1272 private:
1273     uint32 m_ActorId;
1274 };
1275 
1276 //---------------------------------------------------------------------------------------------------------------------
1277 // EventData_New_HUD_Element
1278 //---------------------------------------------------------------------------------------------------------------------
1279 class EventData_New_HUD_Element : public BaseEventData
1280 {
1281 public:
1282     static const EventType sk_EventType;
1283 
EventData_New_HUD_Element(void)1284     EventData_New_HUD_Element(void)
1285     {
1286         m_ActorId = INVALID_ACTOR_ID;
1287     }
1288 
EventData_New_HUD_Element(uint32 actorId,std::string key,shared_ptr<SDL2HUDSceneNode> pHUDSceneNode)1289     EventData_New_HUD_Element(uint32 actorId, std::string key, shared_ptr<SDL2HUDSceneNode> pHUDSceneNode)
1290     {
1291         m_ActorId = actorId;
1292         m_pHUDSceneNode = pHUDSceneNode;
1293         m_pKey = key;
1294     }
1295 
VGetEventType(void)1296     virtual const EventType& VGetEventType(void) const
1297     {
1298         return sk_EventType;
1299     }
1300 
VCopy()1301     virtual IEventDataPtr VCopy() const
1302     {
1303         return IEventDataPtr(new EventData_New_HUD_Element(m_ActorId, m_pKey, m_pHUDSceneNode));
1304     }
1305 
VSerialize(std::ostringstream & out)1306     virtual void VSerialize(std::ostringstream& out) const
1307     {
1308         LOG_ERROR(GetName() + std::string(" should not be serialzied!"));
1309     }
1310 
VDeserialize(std::istringstream & in)1311     virtual void VDeserialize(std::istringstream& in)
1312     {
1313         LOG_ERROR(GetName() + std::string(" should not be serialzied!"));
1314     }
1315 
GetActorId(void)1316     uint32 GetActorId(void) const
1317     {
1318         return m_ActorId;
1319     }
1320 
GetHUDElement()1321     shared_ptr<SDL2HUDSceneNode> GetHUDElement()
1322     {
1323         return m_pHUDSceneNode;
1324     }
1325 
GetHUDKey()1326     std::string GetHUDKey() { return m_pKey; }
1327 
GetName(void)1328     virtual const char* GetName(void) const
1329     {
1330         return "EventData_New_HUD_Element";
1331     }
1332 
1333 private:
1334     uint32 m_ActorId;
1335     shared_ptr<SDL2HUDSceneNode> m_pHUDSceneNode;
1336     std::string m_pKey;
1337 };
1338 
1339 //---------------------------------------------------------------------------------------------------------------------
1340 // EventData_Modify_Score
1341 //---------------------------------------------------------------------------------------------------------------------
1342 class EventData_Modify_Player_Stat : public BaseEventData
1343 {
1344 public:
1345     static const EventType sk_EventType;
1346 
EventData_Modify_Player_Stat(uint32 actorId,PlayerStat stat,int32 value,bool addToExistingStat)1347     EventData_Modify_Player_Stat(uint32 actorId, PlayerStat stat, int32 value, bool addToExistingStat)
1348     {
1349         m_ActorId = actorId;
1350         m_Stat = stat;
1351         m_Value = value;
1352         m_AddToExistingStat = addToExistingStat;
1353     }
1354 
VGetEventType(void)1355     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()1356     virtual IEventDataPtr VCopy() const
1357     {
1358         return IEventDataPtr(new EventData_Modify_Player_Stat(m_ActorId, PlayerStat(m_Stat), m_Value, m_AddToExistingStat));
1359     }
VSerialize(std::ostringstream & out)1360     virtual void VSerialize(std::ostringstream& out) const { out << m_ActorId << m_Stat << m_Value << m_AddToExistingStat; }
VDeserialize(std::istringstream & in)1361     virtual void VDeserialize(std::istringstream& in) { in >> m_ActorId >> m_Stat >> m_Value >> m_AddToExistingStat; }
1362 
GetActorId(void)1363     uint32 GetActorId(void) const { return m_ActorId; }
GetStatType()1364     PlayerStat GetStatType() const { return PlayerStat(m_Stat); }
GetStatValue(void)1365     int32 GetStatValue(void) const { return m_Value; }
AddToExistingStat(void)1366     bool AddToExistingStat(void) const { return m_AddToExistingStat; }
GetName(void)1367     virtual const char* GetName(void) const { return "EventData_Modify_Player_Stat"; }
1368 
1369 private:
1370     uint32 m_ActorId;
1371     int m_Stat;
1372     int32 m_Value;
1373     bool m_AddToExistingStat;
1374 };
1375 
1376 //---------------------------------------------------------------------------------------------------------------------
1377 // EventData_Updated_Score
1378 //---------------------------------------------------------------------------------------------------------------------
1379 class EventData_Updated_Score : public BaseEventData
1380 {
1381 public:
1382     static const EventType sk_EventType;
1383 
EventData_Updated_Score(uint32 actorId,uint32 oldScore,uint32 newScore,bool isInitialScore)1384     EventData_Updated_Score(uint32 actorId, uint32 oldScore, uint32 newScore, bool isInitialScore)
1385     {
1386         m_ActorId = actorId;
1387         m_OldScore = oldScore;
1388         m_NewScore = newScore;
1389         m_IsInitialScore = isInitialScore;
1390     }
1391 
VGetEventType(void)1392     virtual const EventType& VGetEventType(void) const
1393     {
1394         return sk_EventType;
1395     }
1396 
VCopy()1397     virtual IEventDataPtr VCopy() const
1398     {
1399         return IEventDataPtr(new EventData_Updated_Score(m_ActorId, m_OldScore, m_NewScore, m_IsInitialScore));
1400     }
1401 
VSerialize(std::ostringstream & out)1402     virtual void VSerialize(std::ostringstream& out) const
1403     {
1404         out << m_ActorId << m_NewScore << m_OldScore << m_IsInitialScore;
1405     }
1406 
VDeserialize(std::istringstream & in)1407     virtual void VDeserialize(std::istringstream& in)
1408     {
1409         in >> m_ActorId >> m_NewScore >> m_OldScore >> m_IsInitialScore;
1410     }
1411 
GetActorId(void)1412     uint32 GetActorId(void) const
1413     {
1414         return m_ActorId;
1415     }
1416 
GetNewScore(void)1417     uint32 GetNewScore(void) const
1418     {
1419         return m_NewScore;
1420     }
1421 
GetOldScore(void)1422     uint32 GetOldScore(void) const
1423     {
1424         return m_OldScore;
1425     }
1426 
IsInitialScore(void)1427     bool IsInitialScore(void) const
1428     {
1429         return m_IsInitialScore;
1430     }
1431 
GetName(void)1432     virtual const char* GetName(void) const
1433     {
1434         return "EventData_Updated_Score";
1435     }
1436 
1437 private:
1438     uint32 m_ActorId;
1439     uint32 m_OldScore;
1440     uint32 m_NewScore;
1441     bool m_IsInitialScore;
1442 };
1443 
1444 //---------------------------------------------------------------------------------------------------------------------
1445 // EventData_New_Life
1446 //---------------------------------------------------------------------------------------------------------------------
1447 class EventData_New_Life : public BaseEventData
1448 {
1449 public:
1450     static const EventType sk_EventType;
1451 
EventData_New_Life(void)1452     EventData_New_Life(void)
1453     {
1454         m_ActorId = INVALID_ACTOR_ID;
1455         m_NumNewLives = 1;
1456     }
1457 
EventData_New_Life(uint32 actorId,int numNewLives)1458     EventData_New_Life(uint32 actorId, int numNewLives)
1459     {
1460         m_ActorId = actorId;
1461         m_NumNewLives = numNewLives;
1462     }
1463 
VGetEventType(void)1464     virtual const EventType& VGetEventType(void) const
1465     {
1466         return sk_EventType;
1467     }
1468 
VCopy()1469     virtual IEventDataPtr VCopy() const
1470     {
1471         return IEventDataPtr(new EventData_New_Life(m_ActorId, m_NumNewLives));
1472     }
1473 
VSerialize(std::ostringstream & out)1474     virtual void VSerialize(std::ostringstream& out) const
1475     {
1476         out << m_NumNewLives;
1477     }
1478 
VDeserialize(std::istringstream & in)1479     virtual void VDeserialize(std::istringstream& in)
1480     {
1481         in >> m_NumNewLives;
1482     }
1483 
GetActorId()1484     uint32 GetActorId() const
1485     {
1486         return m_ActorId;
1487     }
1488 
GetNumNewLives(void)1489     int GetNumNewLives(void) const
1490     {
1491         return m_NumNewLives;
1492     }
1493 
GetName(void)1494     virtual const char* GetName(void) const
1495     {
1496         return "EventData_New_Life";
1497     }
1498 
1499 private:
1500     uint32 m_ActorId;
1501     int m_NumNewLives;
1502 };
1503 
1504 //---------------------------------------------------------------------------------------------------------------------
1505 // EventData_Updated_Lives
1506 //---------------------------------------------------------------------------------------------------------------------
1507 class EventData_Updated_Lives : public BaseEventData
1508 {
1509 public:
1510     static const EventType sk_EventType;
1511 
EventData_Updated_Lives(void)1512     EventData_Updated_Lives(void)
1513     {
1514         m_OldLivesCount = 0;
1515     }
1516 
EventData_Updated_Lives(uint32 oldLives,uint32 newLives,bool isInitialLives)1517     EventData_Updated_Lives(uint32 oldLives, uint32 newLives, bool isInitialLives)
1518     {
1519         m_OldLivesCount = oldLives;
1520         m_NewLivesCount = newLives;
1521         m_IsInitialLives = isInitialLives;
1522     }
1523 
VGetEventType(void)1524     virtual const EventType& VGetEventType(void) const
1525     {
1526         return sk_EventType;
1527     }
1528 
VCopy()1529     virtual IEventDataPtr VCopy() const
1530     {
1531         return IEventDataPtr(new EventData_Updated_Lives(m_OldLivesCount, m_NewLivesCount, m_IsInitialLives));
1532     }
1533 
VSerialize(std::ostringstream & out)1534     virtual void VSerialize(std::ostringstream& out) const
1535     {
1536         out << m_OldLivesCount << m_NewLivesCount << m_IsInitialLives;
1537     }
1538 
VDeserialize(std::istringstream & in)1539     virtual void VDeserialize(std::istringstream& in)
1540     {
1541         in >> m_OldLivesCount >> m_NewLivesCount >> m_IsInitialLives;
1542     }
1543 
GetNewLivesCount(void)1544     uint32 GetNewLivesCount(void) const
1545     {
1546         return m_NewLivesCount;
1547     }
1548 
GetOldLivesCount(void)1549     uint32 GetOldLivesCount(void) const
1550     {
1551         return m_OldLivesCount;
1552     }
1553 
IsInitialLives(void)1554     bool IsInitialLives(void) const
1555     {
1556         return m_IsInitialLives;
1557     }
1558 
GetName(void)1559     virtual const char* GetName(void) const
1560     {
1561         return "EventData_Updated_Lives";
1562     }
1563 
1564 private:
1565     uint32 m_OldLivesCount;
1566     uint32 m_NewLivesCount;
1567     bool m_IsInitialLives;
1568 };
1569 
1570 //---------------------------------------------------------------------------------------------------------------------
1571 // EventData_Updated_Health
1572 //---------------------------------------------------------------------------------------------------------------------
1573 class EventData_Updated_Health : public BaseEventData
1574 {
1575 public:
1576     static const EventType sk_EventType;
1577 
EventData_Updated_Health(uint32 oldHealth,int32 newHealth,bool isInitialHealth)1578     EventData_Updated_Health(uint32 oldHealth, int32 newHealth, bool isInitialHealth)
1579     {
1580         m_OldHealth = oldHealth;
1581         m_NewHealth = newHealth;
1582         m_IsInitialHealth = isInitialHealth;
1583     }
1584 
VGetEventType(void)1585     virtual const EventType& VGetEventType(void) const
1586     {
1587         return sk_EventType;
1588     }
1589 
VCopy()1590     virtual IEventDataPtr VCopy() const
1591     {
1592         return IEventDataPtr(new EventData_Updated_Health(m_OldHealth, m_NewHealth, m_IsInitialHealth));
1593     }
1594 
VSerialize(std::ostringstream & out)1595     virtual void VSerialize(std::ostringstream& out) const
1596     {
1597         out << m_OldHealth << m_NewHealth << m_IsInitialHealth;
1598     }
1599 
VDeserialize(std::istringstream & in)1600     virtual void VDeserialize(std::istringstream& in)
1601     {
1602         in >> m_OldHealth >> m_NewHealth >> m_IsInitialHealth;
1603     }
1604 
GetNewHealth(void)1605     int32 GetNewHealth(void) const
1606     {
1607         return m_NewHealth;
1608     }
1609 
GetOldHealth(void)1610     int32 GetOldHealth(void) const
1611     {
1612         return m_OldHealth;
1613     }
1614 
IsInitialHealth(void)1615     bool IsInitialHealth(void) const
1616     {
1617         return m_IsInitialHealth;
1618     }
1619 
GetName(void)1620     virtual const char* GetName(void) const
1621     {
1622         return "EventData_Updated_Health";
1623     }
1624 
1625 private:
1626     int32 m_OldHealth;
1627     int32 m_NewHealth;
1628     bool m_IsInitialHealth;
1629 };
1630 
1631 //---------------------------------------------------------------------------------------------------------------------
1632 // EventData_Update_Ammo
1633 //---------------------------------------------------------------------------------------------------------------------
1634 class EventData_Updated_Ammo : public BaseEventData
1635 {
1636 public:
1637     static const EventType sk_EventType;
1638 
EventData_Updated_Ammo(uint32 ammoType,uint32 ammoCount)1639     EventData_Updated_Ammo(uint32 ammoType, uint32 ammoCount)
1640     {
1641         m_AmmoType = ammoType;
1642         m_AmmoCount = ammoCount;
1643     }
1644 
VGetEventType(void)1645     virtual const EventType& VGetEventType(void) const
1646     {
1647         return sk_EventType;
1648     }
1649 
VCopy()1650     virtual IEventDataPtr VCopy() const
1651     {
1652         return IEventDataPtr(new EventData_Updated_Ammo(m_AmmoType, m_AmmoCount));
1653     }
1654 
VSerialize(std::ostringstream & out)1655     virtual void VSerialize(std::ostringstream& out) const
1656     {
1657         out << m_AmmoType << m_AmmoCount;
1658     }
1659 
VDeserialize(std::istringstream & in)1660     virtual void VDeserialize(std::istringstream& in)
1661     {
1662         in >> m_AmmoType >> m_AmmoCount;
1663     }
1664 
GetAmmoType(void)1665     uint32 GetAmmoType(void) const
1666     {
1667         return m_AmmoType;
1668     }
1669 
GetAmmoCount(void)1670     uint32 GetAmmoCount(void) const
1671     {
1672         return m_AmmoCount;
1673     }
1674 
GetName(void)1675     virtual const char* GetName(void) const
1676     {
1677         return "EventData_Updated_Ammo";
1678     }
1679 
1680 private:
1681     uint32 m_AmmoType;
1682     uint32 m_AmmoCount;
1683 };
1684 
1685 //---------------------------------------------------------------------------------------------------------------------
1686 // EventData_Request_Change_Ammo_Type
1687 //---------------------------------------------------------------------------------------------------------------------
1688 class EventData_Request_Change_Ammo_Type : public BaseEventData
1689 {
1690 public:
1691     static const EventType sk_EventType;
1692 
1693     EventData_Request_Change_Ammo_Type(uint32 actorId, uint32 ammoType = AmmoType_Max)
1694     {
1695         m_ActorId = actorId;
1696         m_AmmoType = ammoType;
1697     }
1698 
VGetEventType(void)1699     virtual const EventType& VGetEventType(void) const
1700     {
1701         return sk_EventType;
1702     }
1703 
VCopy()1704     virtual IEventDataPtr VCopy() const
1705     {
1706         return IEventDataPtr(new EventData_Request_Change_Ammo_Type(m_ActorId, m_AmmoType));
1707     }
1708 
VSerialize(std::ostringstream & out)1709     virtual void VSerialize(std::ostringstream& out) const
1710     {
1711         out << m_ActorId << m_AmmoType;
1712     }
1713 
VDeserialize(std::istringstream & in)1714     virtual void VDeserialize(std::istringstream& in)
1715     {
1716         in >> m_ActorId >> m_AmmoType;
1717     }
1718 
GetAmmoType(void)1719     uint32 GetAmmoType(void) const
1720     {
1721         return m_AmmoType;
1722     }
1723 
GetActorId(void)1724     uint32 GetActorId(void) const
1725     {
1726         return m_ActorId;
1727     }
1728 
GetName(void)1729     virtual const char* GetName(void) const
1730     {
1731         return "EventData_Request_Change_Ammo_Type";
1732     }
1733 
1734 private:
1735     uint32 m_AmmoType;
1736     uint32 m_ActorId;
1737 };
1738 
1739 //---------------------------------------------------------------------------------------------------------------------
1740 // EventData_Updated_Ammo_Type
1741 //---------------------------------------------------------------------------------------------------------------------
1742 class EventData_Updated_Ammo_Type : public BaseEventData
1743 {
1744 public:
1745     static const EventType sk_EventType;
1746 
EventData_Updated_Ammo_Type(uint32 actorId,uint32 ammoType)1747     EventData_Updated_Ammo_Type(uint32 actorId, uint32 ammoType)
1748     {
1749         m_ActorId = actorId;
1750         m_AmmoType = ammoType;
1751     }
1752 
VGetEventType(void)1753     virtual const EventType& VGetEventType(void) const
1754     {
1755         return sk_EventType;
1756     }
1757 
VCopy()1758     virtual IEventDataPtr VCopy() const
1759     {
1760         return IEventDataPtr(new EventData_Updated_Ammo_Type(m_ActorId, m_AmmoType));
1761     }
1762 
VSerialize(std::ostringstream & out)1763     virtual void VSerialize(std::ostringstream& out) const
1764     {
1765         out << m_ActorId << m_AmmoType;
1766     }
1767 
VDeserialize(std::istringstream & in)1768     virtual void VDeserialize(std::istringstream& in)
1769     {
1770         in >> m_ActorId >> m_AmmoType;
1771     }
1772 
GetAmmoType(void)1773     uint32 GetAmmoType(void) const
1774     {
1775         return m_AmmoType;
1776     }
1777 
GetActorId(void)1778     uint32 GetActorId(void) const
1779     {
1780         return m_ActorId;
1781     }
1782 
GetName(void)1783     virtual const char* GetName(void) const
1784     {
1785         return "EventData_Updated_Ammo_Type";
1786     }
1787 
1788 private:
1789     uint32 m_AmmoType;
1790     uint32 m_ActorId;
1791 };
1792 
1793 //---------------------------------------------------------------------------------------------------------------------
1794 // EventData_Teleport_Actor
1795 //---------------------------------------------------------------------------------------------------------------------
1796 class EventData_Teleport_Actor : public BaseEventData
1797 {
1798 public:
1799     static const EventType sk_EventType;
1800 
1801     EventData_Teleport_Actor(uint32 actorId, const Point& destination, bool hasScreenSfx = false)
1802     {
1803         m_ActorId = actorId;
1804         m_Destination = destination;
1805         m_bHasScreenSfx = hasScreenSfx;
1806     }
1807 
VGetEventType(void)1808     virtual const EventType& VGetEventType(void) const
1809     {
1810         return sk_EventType;
1811     }
1812 
VCopy()1813     virtual IEventDataPtr VCopy() const
1814     {
1815         return IEventDataPtr(new EventData_Teleport_Actor(m_ActorId, m_Destination, m_bHasScreenSfx));
1816     }
1817 
VSerialize(std::ostringstream & out)1818     virtual void VSerialize(std::ostringstream& out) const
1819     {
1820         out << m_ActorId << m_Destination.x << m_Destination.y << m_bHasScreenSfx;
1821     }
1822 
VDeserialize(std::istringstream & in)1823     virtual void VDeserialize(std::istringstream& in)
1824     {
1825         in >> m_ActorId >> m_Destination.x >> m_Destination.y >> m_bHasScreenSfx;
1826     }
1827 
GetActorId(void)1828     uint32 GetActorId(void) const
1829     {
1830         return m_ActorId;
1831     }
1832 
GetDestination(void)1833     Point GetDestination(void) const
1834     {
1835         return m_Destination;
1836     }
1837 
GetHasScreenSfx()1838     bool GetHasScreenSfx() const
1839     {
1840         return m_bHasScreenSfx;
1841     }
1842 
GetName(void)1843     virtual const char* GetName(void) const
1844     {
1845         return "EventData_Teleport_Actor";
1846     }
1847 
1848 private:
1849     uint32 m_ActorId;
1850     Point m_Destination;
1851     bool m_bHasScreenSfx;
1852 };
1853 
1854 //---------------------------------------------------------------------------------------------------------------------
1855 // EventData_Updated_Powerup_Time
1856 //---------------------------------------------------------------------------------------------------------------------
1857 class EventData_Updated_Powerup_Time : public BaseEventData
1858 {
1859 public:
1860     static const EventType sk_EventType;
1861 
EventData_Updated_Powerup_Time()1862     EventData_Updated_Powerup_Time()
1863     {
1864         m_ActorId = INVALID_ACTOR_ID;
1865         m_PowerupType = PowerupType_None;
1866         m_SecondsRemaining = 0;
1867     }
1868 
EventData_Updated_Powerup_Time(uint32 actorId,uint32 powerupType,int32 secondsRemaining)1869     EventData_Updated_Powerup_Time(uint32 actorId, uint32 powerupType, int32 secondsRemaining)
1870     {
1871         m_ActorId = actorId;
1872         m_PowerupType = powerupType;
1873         m_SecondsRemaining = secondsRemaining;
1874     }
1875 
VGetEventType(void)1876     virtual const EventType& VGetEventType(void) const
1877     {
1878         return sk_EventType;
1879     }
1880 
VCopy()1881     virtual IEventDataPtr VCopy() const
1882     {
1883         return IEventDataPtr(new EventData_Updated_Powerup_Time(m_ActorId, m_PowerupType, m_SecondsRemaining));
1884     }
1885 
VSerialize(std::ostringstream & out)1886     virtual void VSerialize(std::ostringstream& out) const
1887     {
1888         out << m_ActorId << m_PowerupType << m_SecondsRemaining;
1889     }
1890 
VDeserialize(std::istringstream & in)1891     virtual void VDeserialize(std::istringstream& in)
1892     {
1893         in >> m_ActorId >> m_PowerupType >> m_SecondsRemaining;
1894     }
1895 
GetPowerupType(void)1896     uint32 GetPowerupType(void) const
1897     {
1898         return m_PowerupType;
1899     }
1900 
GetActorId(void)1901     uint32 GetActorId(void) const
1902     {
1903         return m_ActorId;
1904     }
1905 
GetSecondsRemaining()1906     int32 GetSecondsRemaining() const
1907     {
1908         return m_SecondsRemaining;
1909     }
1910 
GetName(void)1911     virtual const char* GetName(void) const
1912     {
1913         return "EventData_Updated_Powerup_Time";
1914     }
1915 
1916 private:
1917     uint32 m_ActorId;
1918     uint32 m_PowerupType;
1919     int32 m_SecondsRemaining;
1920 };
1921 
1922 //---------------------------------------------------------------------------------------------------------------------
1923 // EventData_Updated_Powerup_Status
1924 //---------------------------------------------------------------------------------------------------------------------
1925 class EventData_Updated_Powerup_Status : public BaseEventData
1926 {
1927 public:
1928     static const EventType sk_EventType;
1929 
EventData_Updated_Powerup_Status()1930     EventData_Updated_Powerup_Status()
1931     {
1932         m_ActorId = INVALID_ACTOR_ID;
1933         m_PowerupType = PowerupType_None;
1934         m_IsPowerupFinished = false;
1935     }
1936 
EventData_Updated_Powerup_Status(uint32 actorId,PowerupType powerupType,bool isPowerupFinished)1937     EventData_Updated_Powerup_Status(uint32 actorId, PowerupType powerupType, bool isPowerupFinished)
1938     {
1939         m_ActorId = actorId;
1940         m_PowerupType = powerupType;
1941         m_IsPowerupFinished = isPowerupFinished;
1942     }
1943 
VGetEventType(void)1944     virtual const EventType& VGetEventType(void) const
1945     {
1946         return sk_EventType;
1947     }
1948 
VCopy()1949     virtual IEventDataPtr VCopy() const
1950     {
1951         return IEventDataPtr(new EventData_Updated_Powerup_Status(m_ActorId, PowerupType(m_PowerupType), m_IsPowerupFinished));
1952     }
1953 
VSerialize(std::ostringstream & out)1954     virtual void VSerialize(std::ostringstream& out) const
1955     {
1956         out << m_ActorId << m_PowerupType << m_IsPowerupFinished;
1957     }
1958 
VDeserialize(std::istringstream & in)1959     virtual void VDeserialize(std::istringstream& in)
1960     {
1961         in >> m_ActorId >> m_PowerupType >> m_IsPowerupFinished;
1962     }
1963 
GetActorId(void)1964     uint32 GetActorId(void) const
1965     {
1966         return m_ActorId;
1967     }
1968 
IsPowerupFinished()1969     bool IsPowerupFinished() const
1970     {
1971         return m_IsPowerupFinished;
1972     }
1973 
GetPowerupType()1974     PowerupType GetPowerupType() const { return PowerupType(m_PowerupType); }
1975 
GetName(void)1976     virtual const char* GetName(void) const
1977     {
1978         return "EventData_Updated_Powerup_Status";
1979     }
1980 
1981 private:
1982     uint32 m_ActorId;
1983     uint32 m_PowerupType;
1984     bool m_IsPowerupFinished;
1985 };
1986 
1987 //---------------------------------------------------------------------------------------------------------------------
1988 // EventData_Checkpoint_Reached
1989 //---------------------------------------------------------------------------------------------------------------------
1990 class EventData_Checkpoint_Reached : public BaseEventData
1991 {
1992 public:
1993     static const EventType sk_EventType;
1994 
EventData_Checkpoint_Reached(uint32 actorId,Point spawnPoint,bool isSaveCheckpoint,uint32 saveCheckpointNumber)1995     EventData_Checkpoint_Reached(uint32 actorId, Point spawnPoint, bool isSaveCheckpoint, uint32 saveCheckpointNumber)
1996     {
1997         m_ActorId = actorId;
1998         m_SpawnPoint = spawnPoint;
1999         m_IsSaveCheckpoint = isSaveCheckpoint;
2000         m_SaveCheckpointNumber = saveCheckpointNumber;
2001     }
2002 
VGetEventType(void)2003     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2004     virtual IEventDataPtr VCopy() const
2005     {
2006         return IEventDataPtr(new EventData_Checkpoint_Reached(m_ActorId, m_SpawnPoint, m_IsSaveCheckpoint, m_SaveCheckpointNumber));
2007     }
VSerialize(std::ostringstream & out)2008     virtual void VSerialize(std::ostringstream& out) const { out << m_ActorId << m_SpawnPoint.x << m_SpawnPoint.y << m_IsSaveCheckpoint << m_SaveCheckpointNumber; }
VDeserialize(std::istringstream & in)2009     virtual void VDeserialize(std::istringstream& in) { in >> m_ActorId >> m_SpawnPoint.x >> m_SpawnPoint.y >> m_IsSaveCheckpoint >> m_SaveCheckpointNumber; }
2010 
GetActorId(void)2011     uint32 GetActorId(void) const { return m_ActorId; }
GetSpawnPoint()2012     Point GetSpawnPoint() const { return m_SpawnPoint; }
IsSaveCheckpoint(void)2013     bool IsSaveCheckpoint(void) const { return m_IsSaveCheckpoint; }
GetSaveCheckpointNumber(void)2014     uint32 GetSaveCheckpointNumber(void) const { return m_SaveCheckpointNumber; }
GetName(void)2015     virtual const char* GetName(void) const { return "EventData_Checkpoint_Reached"; }
2016 
2017 private:
2018     uint32 m_ActorId;
2019     Point m_SpawnPoint;
2020     bool m_IsSaveCheckpoint;
2021     uint32 m_SaveCheckpointNumber;
2022 };
2023 
2024 //---------------------------------------------------------------------------------------------------------------------
2025 // EventData_Claw_Died
2026 //---------------------------------------------------------------------------------------------------------------------
2027 class EventData_Claw_Died : public BaseEventData
2028 {
2029 public:
2030     static const EventType sk_EventType;
2031 
EventData_Claw_Died(uint32 actorId,Point deathPosition,int remainingLives)2032     EventData_Claw_Died(uint32 actorId, Point deathPosition, int remainingLives)
2033     {
2034         m_ActorId = actorId;
2035         m_DeathPosition = deathPosition;
2036         m_RemainingLives = remainingLives;
2037     }
2038 
VGetEventType(void)2039     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2040     virtual IEventDataPtr VCopy() const
2041     {
2042         return IEventDataPtr(new EventData_Claw_Died(m_ActorId, m_DeathPosition, m_RemainingLives));
2043     }
VSerialize(std::ostringstream & out)2044     virtual void VSerialize(std::ostringstream& out) const { out << m_ActorId << m_DeathPosition.x << m_DeathPosition.y << m_RemainingLives; }
VDeserialize(std::istringstream & in)2045     virtual void VDeserialize(std::istringstream& in) { in >> m_ActorId >> m_DeathPosition.x >> m_DeathPosition.y >> m_RemainingLives; }
2046 
GetActorId(void)2047     uint32 GetActorId(void) const { return m_ActorId; }
GetDeathPosition()2048     Point GetDeathPosition() { return m_DeathPosition; }
GetRemainingLives()2049     int GetRemainingLives() { return m_RemainingLives; }
GetName(void)2050     virtual const char* GetName(void) const { return "EventData_Claw_Died"; }
2051 
2052 private:
2053     uint32 m_ActorId;
2054     Point m_DeathPosition;
2055     int m_RemainingLives;
2056 };
2057 
2058 //---------------------------------------------------------------------------------------------------------------------
2059 // EventData_Claw_Respawned
2060 //---------------------------------------------------------------------------------------------------------------------
2061 class EventData_Claw_Respawned : public BaseEventData
2062 {
2063 public:
2064     static const EventType sk_EventType;
2065 
EventData_Claw_Respawned(uint32 actorId)2066     EventData_Claw_Respawned(uint32 actorId)
2067     {
2068         m_ActorId = actorId;
2069     }
2070 
VGetEventType(void)2071     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2072     virtual IEventDataPtr VCopy() const
2073     {
2074         return IEventDataPtr(new EventData_Claw_Respawned(m_ActorId));
2075     }
VSerialize(std::ostringstream & out)2076     virtual void VSerialize(std::ostringstream& out) const { out << m_ActorId; }
VDeserialize(std::istringstream & in)2077     virtual void VDeserialize(std::istringstream& in) { in >> m_ActorId; }
2078 
GetActorId(void)2079     uint32 GetActorId(void) const { return m_ActorId; }
GetName(void)2080     virtual const char* GetName(void) const { return "EventData_Claw_Respawned"; }
2081 
2082 private:
2083     uint32 m_ActorId;
2084 };
2085 
2086 //---------------------------------------------------------------------------------------------------------------------
2087 // EventData_Claw_Health_Below_Zero
2088 //---------------------------------------------------------------------------------------------------------------------
2089 class EventData_Claw_Health_Below_Zero : public BaseEventData
2090 {
2091 public:
2092     static const EventType sk_EventType;
2093 
EventData_Claw_Health_Below_Zero(uint32 actorId)2094     EventData_Claw_Health_Below_Zero(uint32 actorId)
2095     {
2096         m_ActorId = actorId;
2097     }
2098 
VGetEventType(void)2099     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2100     virtual IEventDataPtr VCopy() const
2101     {
2102         return IEventDataPtr(new EventData_Claw_Health_Below_Zero(m_ActorId));
2103     }
VSerialize(std::ostringstream & out)2104     virtual void VSerialize(std::ostringstream& out) const { out << m_ActorId; }
VDeserialize(std::istringstream & in)2105     virtual void VDeserialize(std::istringstream& in) { in >> m_ActorId; }
2106 
GetActorId(void)2107     uint32 GetActorId(void) const { return m_ActorId; }
GetName(void)2108     virtual const char* GetName(void) const { return "EventData_Claw_Health_Below_Zero"; }
2109 
2110 private:
2111     uint32 m_ActorId;
2112 };
2113 
2114 //---------------------------------------------------------------------------------------------------------------------
2115 // EventData_Request_Play_Sound
2116 //---------------------------------------------------------------------------------------------------------------------
2117 class EventData_Request_Play_Sound : public BaseEventData
2118 {
2119 public:
2120     static const EventType sk_EventType;
2121 
2122     /*EventData_Request_Play_Sound(std::string soundPath, uint32 volume, bool isMusic = false, int loops = 0)
2123     {
2124         m_MusicPath = soundPath;
2125         m_Volume = volume;
2126         m_bIsMusic = isMusic;
2127         m_Loops = loops;
2128     }*/
2129 
EventData_Request_Play_Sound(const SoundInfo & soundInfo)2130     EventData_Request_Play_Sound(const SoundInfo& soundInfo)
2131     {
2132         m_SoundInfo = soundInfo;
2133     }
2134 
VGetEventType(void)2135     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2136     virtual IEventDataPtr VCopy() const
2137     {
2138         return IEventDataPtr(new EventData_Request_Play_Sound(m_SoundInfo));
2139     }
VSerialize(std::ostringstream & out)2140     virtual void VSerialize(std::ostringstream& out) const { assert(false && "Not serializable"); /*out << m_MusicPath << m_Volume << m_bIsMusic << m_Loops;*/ }
VDeserialize(std::istringstream & in)2141     virtual void VDeserialize(std::istringstream& in) { assert(false && "Not deserializable"); /*in >> m_MusicPath >> m_Volume >> m_bIsMusic >> m_Loops;*/ }
2142 
GetSoundInfo()2143     const SoundInfo* GetSoundInfo() { return &m_SoundInfo; }
2144 
2145     /*std::string GetSoundPath() const { return m_MusicPath; }
2146     uint32 GetVolume() const { return m_Volume; }
2147     bool IsMusic() const { return m_bIsMusic; }
2148     int GetNumLoops() const { return m_Loops; }*/
2149 
GetName(void)2150     virtual const char* GetName(void) const { return "EventData_Request_Play_Sound"; }
2151 
2152 private:
2153     SoundInfo m_SoundInfo;
2154 
2155     /*std::string m_MusicPath;
2156     uint32 m_Volume;
2157     int m_Loops;
2158     bool m_bIsMusic;*/
2159 };
2160 
2161 //---------------------------------------------------------------------------------------------------------------------
2162 // EventData_Request_Reset_Level
2163 //---------------------------------------------------------------------------------------------------------------------
2164 class EventData_Request_Reset_Level : public BaseEventData
2165 {
2166 public:
2167     static const EventType sk_EventType;
2168 
EventData_Request_Reset_Level()2169     EventData_Request_Reset_Level() { }
2170 
VGetEventType(void)2171     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2172     virtual IEventDataPtr VCopy() const { return IEventDataPtr(new EventData_Request_Reset_Level()); }
VSerialize(std::ostringstream & out)2173     virtual void VSerialize(std::ostringstream& out) const { assert(false && "This event CANNOT be serialized"); }
VDeserialize(std::istringstream & in)2174     virtual void VDeserialize(std::istringstream& in) { assert(false && "This event CANNOT be deserialized"); }
2175 
GetName(void)2176     virtual const char* GetName(void) const { return "EventData_Request_Reset_Level"; }
2177 };
2178 
2179 //---------------------------------------------------------------------------------------------------------------------
2180 // EventData_Menu_SwitchPage
2181 //---------------------------------------------------------------------------------------------------------------------
2182 class EventData_Menu_SwitchPage : public BaseEventData
2183 {
2184 public:
2185     static const EventType sk_EventType;
2186 
EventData_Menu_SwitchPage()2187     EventData_Menu_SwitchPage()
2188     {
2189 
2190     }
2191 
EventData_Menu_SwitchPage(std::string newPageName)2192     EventData_Menu_SwitchPage(std::string newPageName)
2193     {
2194         m_NewPageName = newPageName;
2195     }
2196 
VGetEventType(void)2197     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2198     virtual IEventDataPtr VCopy() const
2199     {
2200         return IEventDataPtr(new EventData_Menu_SwitchPage(m_NewPageName));
2201     }
VSerialize(std::ostringstream & out)2202     virtual void VSerialize(std::ostringstream& out) const { out << m_NewPageName; }
VDeserialize(std::istringstream & in)2203     virtual void VDeserialize(std::istringstream& in) { in >> m_NewPageName; }
2204 
GetNewPageName()2205     std::string GetNewPageName() const { return m_NewPageName; }
2206 
GetName(void)2207     virtual const char* GetName(void) const { return "EventData_Menu_SwitchPage"; }
2208 
2209 private:
2210     std::string m_NewPageName;
2211 };
2212 
2213 //---------------------------------------------------------------------------------------------------------------------
2214 // EventData_Menu_Modifiy_Item_Visibility
2215 //---------------------------------------------------------------------------------------------------------------------
2216 class EventData_Menu_Modifiy_Item_Visibility : public BaseEventData
2217 {
2218 public:
2219     static const EventType sk_EventType;
2220 
EventData_Menu_Modifiy_Item_Visibility()2221     EventData_Menu_Modifiy_Item_Visibility()
2222     {
2223 
2224     }
2225 
EventData_Menu_Modifiy_Item_Visibility(std::string menuItemName,bool visible)2226     EventData_Menu_Modifiy_Item_Visibility(std::string menuItemName, bool visible)
2227     {
2228         m_MenuItemName = menuItemName;
2229         m_bVisible = visible;
2230     }
2231 
VGetEventType(void)2232     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2233     virtual IEventDataPtr VCopy() const
2234     {
2235         return IEventDataPtr(new EventData_Menu_Modifiy_Item_Visibility(m_MenuItemName, m_bVisible));
2236     }
VSerialize(std::ostringstream & out)2237     virtual void VSerialize(std::ostringstream& out) const { out << m_MenuItemName << m_bVisible; }
VDeserialize(std::istringstream & in)2238     virtual void VDeserialize(std::istringstream& in) { in >> m_MenuItemName >> m_bVisible; }
2239 
GetMenuItemName()2240     std::string GetMenuItemName() const { return m_MenuItemName; }
GetIsVisible()2241     bool GetIsVisible() { return m_bVisible; }
2242 
GetName(void)2243     virtual const char* GetName(void) const { return "EventData_Menu_Modifiy_Item_Visibility"; }
2244 
2245 private:
2246     std::string m_MenuItemName;
2247     bool m_bVisible;
2248 };
2249 
2250 //---------------------------------------------------------------------------------------------------------------------
2251 // EventData_Menu_Modifiy_Item_State
2252 //---------------------------------------------------------------------------------------------------------------------
2253 class EventData_Menu_Modify_Item_State : public BaseEventData
2254 {
2255 public:
2256     static const EventType sk_EventType;
2257 
EventData_Menu_Modify_Item_State()2258     EventData_Menu_Modify_Item_State()
2259     {
2260 
2261     }
2262 
EventData_Menu_Modify_Item_State(std::string menuItemName,std::string menuItemStateStr)2263     EventData_Menu_Modify_Item_State(std::string menuItemName, std::string menuItemStateStr)
2264     {
2265         m_MenuItemName = menuItemName;
2266         m_MenuItemStateStr = menuItemStateStr;
2267     }
2268 
VGetEventType(void)2269     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2270     virtual IEventDataPtr VCopy() const
2271     {
2272         return IEventDataPtr(new EventData_Menu_Modify_Item_State(m_MenuItemName, m_MenuItemStateStr));
2273     }
VSerialize(std::ostringstream & out)2274     virtual void VSerialize(std::ostringstream& out) const { out << m_MenuItemName << m_MenuItemStateStr; }
VDeserialize(std::istringstream & in)2275     virtual void VDeserialize(std::istringstream& in) { in >> m_MenuItemName >> m_MenuItemStateStr; }
2276 
GetMenuItemName()2277     std::string GetMenuItemName() const { return m_MenuItemName; }
GetMenuItemState()2278     std::string GetMenuItemState() const { return m_MenuItemStateStr; }
2279 
GetName(void)2280     virtual const char* GetName(void) const { return "EventData_Menu_Modify_Item_State"; }
2281 
2282 private:
2283     std::string m_MenuItemName;
2284     std::string m_MenuItemStateStr;
2285 };
2286 
2287 //---------------------------------------------------------------------------------------------------------------------
2288 // EventData_Menu_LoadGame
2289 //---------------------------------------------------------------------------------------------------------------------
2290 class EventData_Menu_LoadGame : public BaseEventData
2291 {
2292 public:
2293     static const EventType sk_EventType;
2294 
EventData_Menu_LoadGame()2295     EventData_Menu_LoadGame()
2296     {
2297         m_bIsNewGame = false;
2298         m_LevelNumber = -1;
2299         m_CheckpointNumber = -1;
2300     }
2301 
EventData_Menu_LoadGame(int levelNumber,bool isNewGame,int checkpointNumber)2302     EventData_Menu_LoadGame(int levelNumber, bool isNewGame, int checkpointNumber)
2303     {
2304         m_bIsNewGame = isNewGame;
2305         m_LevelNumber = levelNumber;
2306         m_CheckpointNumber = checkpointNumber;
2307     }
2308 
VGetEventType(void)2309     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2310     virtual IEventDataPtr VCopy() const
2311     {
2312         return IEventDataPtr(new EventData_Menu_LoadGame(m_LevelNumber, m_bIsNewGame, m_CheckpointNumber));
2313     }
VSerialize(std::ostringstream & out)2314     virtual void VSerialize(std::ostringstream& out) const { out << m_LevelNumber << m_bIsNewGame << m_CheckpointNumber; }
VDeserialize(std::istringstream & in)2315     virtual void VDeserialize(std::istringstream& in) { in >> m_LevelNumber >> m_bIsNewGame >> m_CheckpointNumber; }
2316 
GetIsNewGame()2317     bool GetIsNewGame() { return m_bIsNewGame; }
GetLevelNumber()2318     int GetLevelNumber() { return m_LevelNumber; }
GetCheckpointNumber()2319     int GetCheckpointNumber() { return m_CheckpointNumber; }
2320 
GetName(void)2321     virtual const char* GetName(void) const { return "EventData_Menu_LoadGame"; }
2322 
2323 private:
2324     bool m_bIsNewGame;
2325     int m_LevelNumber;
2326     int m_CheckpointNumber;
2327 };
2328 
2329 //---------------------------------------------------------------------------------------------------------------------
2330 // EventData_Quit_Game
2331 //---------------------------------------------------------------------------------------------------------------------
2332 class EventData_Quit_Game : public BaseEventData
2333 {
2334 public:
2335     static const EventType sk_EventType;
2336 
EventData_Quit_Game()2337     EventData_Quit_Game() { }
2338 
VGetEventType(void)2339     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2340     virtual IEventDataPtr VCopy() const { return IEventDataPtr(new EventData_Request_Reset_Level()); }
VSerialize(std::ostringstream & out)2341     virtual void VSerialize(std::ostringstream& out) const { assert(false && "This event CANNOT be serialized"); }
VDeserialize(std::istringstream & in)2342     virtual void VDeserialize(std::istringstream& in) { assert(false && "This event CANNOT be deserialized"); }
2343 
GetName(void)2344     virtual const char* GetName(void) const { return "EventData_Quit_Game"; }
2345 };
2346 
2347 //---------------------------------------------------------------------------------------------------------------------
2348 // EventData_Set_Volume
2349 //---------------------------------------------------------------------------------------------------------------------
2350 class EventData_Set_Volume : public BaseEventData
2351 {
2352 public:
2353     static const EventType sk_EventType;
2354 
EventData_Set_Volume()2355     EventData_Set_Volume()
2356     {
2357         m_bIsMusicVolume = false;
2358         m_bIsDelta = false;
2359         m_Volume = -1;
2360     }
2361 
EventData_Set_Volume(int volume,bool isDelta,bool isForMusic)2362     EventData_Set_Volume(int volume, bool isDelta, bool isForMusic)
2363     {
2364         m_bIsMusicVolume = isForMusic;
2365         m_bIsDelta = isDelta;
2366         m_Volume = volume;
2367     }
2368 
VGetEventType(void)2369     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2370     virtual IEventDataPtr VCopy() const
2371     {
2372         return IEventDataPtr(new EventData_Set_Volume(m_Volume, m_bIsDelta, m_bIsMusicVolume));
2373     }
VSerialize(std::ostringstream & out)2374     virtual void VSerialize(std::ostringstream& out) const { out << m_Volume << m_bIsDelta << m_bIsMusicVolume; }
VDeserialize(std::istringstream & in)2375     virtual void VDeserialize(std::istringstream& in) { in >> m_Volume >> m_bIsDelta >> m_bIsMusicVolume; }
2376 
GetIsMusicVolume()2377     bool GetIsMusicVolume() { return m_bIsMusicVolume; }
GetIsDelta()2378     bool GetIsDelta() { return m_bIsDelta; }
GetVolume()2379     int GetVolume() { return m_Volume; }
2380 
GetName(void)2381     virtual const char* GetName(void) const { return "EventData_Set_Volume"; }
2382 
2383 private:
2384     bool m_bIsMusicVolume;
2385     bool m_bIsDelta;
2386     int m_Volume;
2387 };
2388 
2389 //---------------------------------------------------------------------------------------------------------------------
2390 // EventData_Sound_Enabled_Changed
2391 //---------------------------------------------------------------------------------------------------------------------
2392 class EventData_Sound_Enabled_Changed : public BaseEventData
2393 {
2394 public:
2395     static const EventType sk_EventType;
2396 
EventData_Sound_Enabled_Changed()2397     EventData_Sound_Enabled_Changed()
2398     {
2399         m_bIsEnabled = false;
2400         m_bIsMusic = false;
2401     }
2402 
EventData_Sound_Enabled_Changed(bool isEnabled,bool isMusic)2403     EventData_Sound_Enabled_Changed(bool isEnabled, bool isMusic)
2404     {
2405         m_bIsEnabled = isEnabled;
2406         m_bIsMusic = isMusic;
2407     }
2408 
VGetEventType(void)2409     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2410     virtual IEventDataPtr VCopy() const
2411     {
2412         return IEventDataPtr(new EventData_Sound_Enabled_Changed(m_bIsEnabled, m_bIsMusic));
2413     }
VSerialize(std::ostringstream & out)2414     virtual void VSerialize(std::ostringstream& out) const { out << m_bIsEnabled << m_bIsMusic; }
VDeserialize(std::istringstream & in)2415     virtual void VDeserialize(std::istringstream& in) { in >> m_bIsEnabled >> m_bIsMusic; }
2416 
GetIsEnabled()2417     bool GetIsEnabled() { return m_bIsEnabled; }
GetIsMusic()2418     bool GetIsMusic() { return m_bIsMusic; }
2419 
GetName(void)2420     virtual const char* GetName(void) const { return "EventData_Sound_Enabled_Changed"; }
2421 
2422 private:
2423     bool m_bIsEnabled;
2424     bool m_bIsMusic;
2425 };
2426 
2427 //---------------------------------------------------------------------------------------------------------------------
2428 // EventData_Enter_Menu
2429 //---------------------------------------------------------------------------------------------------------------------
2430 class EventData_Enter_Menu : public BaseEventData
2431 {
2432 public:
2433     static const EventType sk_EventType;
2434 
EventData_Enter_Menu()2435     EventData_Enter_Menu() { }
2436 
VGetEventType(void)2437     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2438     virtual IEventDataPtr VCopy() const
2439     {
2440         return IEventDataPtr(new EventData_Enter_Menu());
2441     }
VSerialize(std::ostringstream & out)2442     virtual void VSerialize(std::ostringstream& out) const { assert(false && "Cannot be serialized"); }
VDeserialize(std::istringstream & in)2443     virtual void VDeserialize(std::istringstream& in) { assert(false && "Cannot be serialized"); }
2444 
GetName(void)2445     virtual const char* GetName(void) const { return "EventData_Enter_Menu"; }
2446 };
2447 
2448 //---------------------------------------------------------------------------------------------------------------------
2449 // EventData_Finished_Level
2450 //---------------------------------------------------------------------------------------------------------------------
2451 class EventData_Finished_Level : public BaseEventData
2452 {
2453 public:
2454     static const EventType sk_EventType;
2455 
EventData_Finished_Level()2456     EventData_Finished_Level() { }
2457 
VGetEventType(void)2458     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2459     virtual IEventDataPtr VCopy() const
2460     {
2461         return IEventDataPtr(new EventData_Finished_Level());
2462     }
VSerialize(std::ostringstream & out)2463     virtual void VSerialize(std::ostringstream& out) const { assert(false && "Cannot be serialized"); }
VDeserialize(std::istringstream & in)2464     virtual void VDeserialize(std::istringstream& in) { assert(false && "Cannot be serialized"); }
2465 
GetName(void)2466     virtual const char* GetName(void) const { return "EventData_Finished_Level"; }
2467 };
2468 
2469 //---------------------------------------------------------------------------------------------------------------------
2470 // EventData_Item_Picked_Up
2471 //---------------------------------------------------------------------------------------------------------------------
2472 class EventData_Item_Picked_Up : public BaseEventData
2473 {
2474 public:
2475     static const EventType sk_EventType;
2476 
EventData_Item_Picked_Up(PickupType item)2477     EventData_Item_Picked_Up(PickupType item) { m_PickupType = item; }
2478 
VGetEventType(void)2479     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2480     virtual IEventDataPtr VCopy() const
2481     {
2482         return IEventDataPtr(new EventData_Item_Picked_Up(m_PickupType));
2483     }
VSerialize(std::ostringstream & out)2484     virtual void VSerialize(std::ostringstream& out) const { assert(false && "Cannot be serialized"); }
VDeserialize(std::istringstream & in)2485     virtual void VDeserialize(std::istringstream& in) { assert(false && "Cannot be serialized"); }
2486 
GetName(void)2487     virtual const char* GetName(void) const { return "EventData_Item_Picked_Up"; }
2488 
GetPickupType()2489     PickupType GetPickupType() { return m_PickupType; }
2490 
2491 private:
2492     PickupType m_PickupType;
2493 };
2494 
2495 //---------------------------------------------------------------------------------------------------------------------
2496 // EventData_Entered_Boss_Area
2497 //---------------------------------------------------------------------------------------------------------------------
2498 class EventData_Entered_Boss_Area : public BaseEventData
2499 {
2500 public:
2501     static const EventType sk_EventType;
2502 
EventData_Entered_Boss_Area(uint32 actorId,uint32 bossId)2503     EventData_Entered_Boss_Area(uint32 actorId, uint32 bossId)
2504     {
2505         m_ControllerId = actorId;
2506         m_BossId = bossId;
2507     }
2508 
VGetEventType(void)2509     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2510     virtual IEventDataPtr VCopy() const
2511     {
2512         return IEventDataPtr(new EventData_Entered_Boss_Area(m_ControllerId, m_BossId));
2513     }
VSerialize(std::ostringstream & out)2514     virtual void VSerialize(std::ostringstream& out) const { assert(false && "Cannot be serialized"); }
VDeserialize(std::istringstream & in)2515     virtual void VDeserialize(std::istringstream& in) { assert(false && "Cannot be serialized"); }
2516 
GetName(void)2517     virtual const char* GetName(void) const { return "EventData_Entered_Boss_Area"; }
2518 
GetControllerId()2519     uint32 GetControllerId() { return m_ControllerId; }
2520 
2521     // Unimplemented
GetBossId()2522     uint32 GetBossId() { assert(false && "Unimplemented"); return m_BossId; }
2523 
2524 private:
2525     uint32 m_ControllerId;
2526     uint32 m_BossId;
2527 };
2528 
2529 //---------------------------------------------------------------------------------------------------------------------
2530 // EventData_Boss_Fight_Started
2531 //---------------------------------------------------------------------------------------------------------------------
2532 class EventData_Boss_Fight_Started : public BaseEventData
2533 {
2534 public:
2535     static const EventType sk_EventType;
2536 
EventData_Boss_Fight_Started(uint32 controllerId,uint32 bossId)2537     EventData_Boss_Fight_Started(uint32 controllerId, uint32 bossId)
2538     {
2539         m_ControllerId = controllerId;
2540         m_BossId = bossId; }
2541 
VGetEventType(void)2542     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2543     virtual IEventDataPtr VCopy() const
2544     {
2545         return IEventDataPtr(new EventData_Boss_Fight_Started(m_ControllerId, m_BossId));
2546     }
VSerialize(std::ostringstream & out)2547     virtual void VSerialize(std::ostringstream& out) const { assert(false && "Cannot be serialized"); }
VDeserialize(std::istringstream & in)2548     virtual void VDeserialize(std::istringstream& in) { assert(false && "Cannot be serialized"); }
2549 
GetName(void)2550     virtual const char* GetName(void) const { return "EventData_Boss_Fight_Started"; }
2551 
GetControllerId()2552     uint32 GetControllerId() { return m_ControllerId; }
2553 
2554     // Unimplemented
GetBossId()2555     uint32 GetBossId() { assert(false && "Unimplemented"); return m_BossId; }
2556 
2557 private:
2558     uint32 m_ControllerId;
2559     uint32 m_BossId;
2560 };
2561 
2562 //---------------------------------------------------------------------------------------------------------------------
2563 // EventData_Boss_Fight_Ended
2564 //---------------------------------------------------------------------------------------------------------------------
2565 class EventData_Boss_Fight_Ended : public BaseEventData
2566 {
2567 public:
2568     static const EventType sk_EventType;
2569 
EventData_Boss_Fight_Ended(bool isBossDead)2570     EventData_Boss_Fight_Ended(bool isBossDead)
2571     {
2572         m_bIsBossDead = isBossDead;
2573     }
2574 
VGetEventType(void)2575     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2576     virtual IEventDataPtr VCopy() const
2577     {
2578         return IEventDataPtr(new EventData_Boss_Fight_Ended(m_bIsBossDead));
2579     }
VSerialize(std::ostringstream & out)2580     virtual void VSerialize(std::ostringstream& out) const { assert(false && "Cannot be serialized"); }
VDeserialize(std::istringstream & in)2581     virtual void VDeserialize(std::istringstream& in) { assert(false && "Cannot be serialized"); }
2582 
GetName(void)2583     virtual const char* GetName(void) const { return "EventData_Boss_Fight_Ended"; }
2584 
GetIsBossDead()2585     bool GetIsBossDead() { return m_bIsBossDead; }
2586 
2587 private:
2588     bool m_bIsBossDead;
2589 };
2590 
2591 //---------------------------------------------------------------------------------------------------------------------
2592 // EventData_Boss_Health_Changed
2593 //---------------------------------------------------------------------------------------------------------------------
2594 class EventData_Boss_Health_Changed : public BaseEventData
2595 {
2596 public:
2597     static const EventType sk_EventType;
2598 
EventData_Boss_Health_Changed(int newHealthPercentage,int newHealthLeft)2599     EventData_Boss_Health_Changed(int newHealthPercentage, int newHealthLeft)
2600     {
2601         m_HealthPercentage = newHealthPercentage;
2602         m_HealthLeft = newHealthLeft;
2603     }
2604 
VGetEventType(void)2605     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2606     virtual IEventDataPtr VCopy() const
2607     {
2608         return IEventDataPtr(new EventData_Boss_Health_Changed(m_HealthPercentage, m_HealthLeft));
2609     }
VSerialize(std::ostringstream & out)2610     virtual void VSerialize(std::ostringstream& out) const { assert(false && "Cannot be serialized"); }
VDeserialize(std::istringstream & in)2611     virtual void VDeserialize(std::istringstream& in) { assert(false && "Cannot be serialized"); }
2612 
GetName(void)2613     virtual const char* GetName(void) const { return "EventData_Boss_Health_Changed"; }
2614 
GetNewHealthPercentage()2615     int GetNewHealthPercentage() { return m_HealthPercentage; }
GetNewHealthLeft()2616     int GetNewHealthLeft() { return m_HealthLeft; }
2617 
2618 private:
2619     int m_HealthPercentage;
2620     int m_HealthLeft;
2621 };
2622 
2623 //---------------------------------------------------------------------------------------------------------------------
2624 // EventData_IngameMenu_Resume_Game
2625 //---------------------------------------------------------------------------------------------------------------------
2626 class EventData_IngameMenu_Resume_Game : public BaseEventData
2627 {
2628 public:
2629     static const EventType sk_EventType;
2630 
EventData_IngameMenu_Resume_Game()2631     EventData_IngameMenu_Resume_Game() { }
2632 
VGetEventType(void)2633     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2634     virtual IEventDataPtr VCopy() const
2635     {
2636         return IEventDataPtr(new EventData_IngameMenu_Resume_Game());
2637     }
VSerialize(std::ostringstream & out)2638     virtual void VSerialize(std::ostringstream& out) const { assert(false && "Cannot be serialized"); }
VDeserialize(std::istringstream & in)2639     virtual void VDeserialize(std::istringstream& in) { assert(false && "Cannot be serialized"); }
2640 
GetName(void)2641     virtual const char* GetName(void) const { return "EventData_IngameMenu_Resume_Game"; }
2642 };
2643 
2644 //---------------------------------------------------------------------------------------------------------------------
2645 // EventData_IngameMenu_End_Life
2646 //---------------------------------------------------------------------------------------------------------------------
2647 class EventData_IngameMenu_End_Life : public BaseEventData
2648 {
2649 public:
2650     static const EventType sk_EventType;
2651 
EventData_IngameMenu_End_Life()2652     EventData_IngameMenu_End_Life() { }
2653 
VGetEventType(void)2654     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2655     virtual IEventDataPtr VCopy() const
2656     {
2657         return IEventDataPtr(new EventData_IngameMenu_End_Life());
2658     }
VSerialize(std::ostringstream & out)2659     virtual void VSerialize(std::ostringstream& out) const { assert(false && "Cannot be serialized"); }
VDeserialize(std::istringstream & in)2660     virtual void VDeserialize(std::istringstream& in) { assert(false && "Cannot be serialized"); }
2661 
GetName(void)2662     virtual const char* GetName(void) const { return "EventData_IngameMenu_End_Life"; }
2663 };
2664 
2665 //---------------------------------------------------------------------------------------------------------------------
2666 // EventData_IngameMenu_End_Game
2667 //---------------------------------------------------------------------------------------------------------------------
2668 class EventData_IngameMenu_End_Game : public BaseEventData
2669 {
2670 public:
2671     static const EventType sk_EventType;
2672 
EventData_IngameMenu_End_Game()2673     EventData_IngameMenu_End_Game() { }
2674 
VGetEventType(void)2675     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2676     virtual IEventDataPtr VCopy() const
2677     {
2678         return IEventDataPtr(new EventData_IngameMenu_End_Game());
2679     }
VSerialize(std::ostringstream & out)2680     virtual void VSerialize(std::ostringstream& out) const { assert(false && "Cannot be serialized"); }
VDeserialize(std::istringstream & in)2681     virtual void VDeserialize(std::istringstream& in) { assert(false && "Cannot be serialized"); }
2682 
GetName(void)2683     virtual const char* GetName(void) const { return "EventData_IngameMenu_End_Game"; }
2684 };
2685 
2686 //---------------------------------------------------------------------------------------------------------------------
2687 // EventData_World_Finished_Loading
2688 //---------------------------------------------------------------------------------------------------------------------
2689 class EventData_World_Finished_Loading : public BaseEventData
2690 {
2691 public:
2692     static const EventType sk_EventType;
2693 
EventData_World_Finished_Loading()2694     EventData_World_Finished_Loading() { }
2695 
VGetEventType(void)2696     virtual const EventType& VGetEventType(void) const { return sk_EventType; }
VCopy()2697     virtual IEventDataPtr VCopy() const
2698     {
2699         return IEventDataPtr(new EventData_World_Finished_Loading());
2700     }
2701 
GetName(void)2702     virtual const char* GetName(void) const { return "EventData_World_Finished_Loading"; }
2703 };
2704 
2705 #endif