[Bastion-cvs] bastion/src/util EventBase.h,1.6,1.7 EventDispatcher.h,1.10,1.11 EventListener.h,1.8,1
Brought to you by:
jacek_kolodziej
|
From: Jacek K. <jac...@us...> - 2004-06-30 18:49:42
|
Update of /cvsroot/bastion/bastion/src/util In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24235/src/util Modified Files: EventBase.h EventDispatcher.h EventListener.h Log Message: - Zwyciestwo! Model gry jest oddzielony od jej wizualizacji. Dzieki temu moze istniec caly model swiata bez istnienia wizualizacji (nie testowalem czy mozna tick'ac swiat zanim zacznie sie go ogladac, ale nie powinno byc z tym problemow). W szczegolnosci nie da sie juz przejsc wskaznikami od klas swiata do klas widoku. Teraz metoda void* LoadingScreen::loadLevel(void *levelName) wyglada nader prosto: new World, new GameView(world). Pawel: masz czysty teren jesli chodzi o zapisywanie stanu gry. Sa dwa miejsca gdzie obiekty swiata posiadaja wskaznik do obiektow wizualizacji: UnitHandler oraz EventUnitSpotted (klasa przechowujaca informacje o jednostce w InformationCollectorze). Klasy te posiadaja wskazniki do figurek ("figure"). Przy zapisywaniu stanu gry, nalezy te wskazniki zapisac jako NULL - sa bowiem one poprawiane przy podpinaniu swiata do GameView. Mozna przyjac ze klasa MissileView ktora zajmuje sie renderingiem strzal tez powinna byc zapisywana w pliku. Alternatywnie, mozna odpowiedni wskaznik z klasy Missile zapisac jako NULL - tez powinno dzialac ok. A tak pozatym to gra dziala tak samo jak do tej pory. Index: EventDispatcher.h =================================================================== RCS file: /cvsroot/bastion/bastion/src/util/EventDispatcher.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** EventDispatcher.h 30 Jun 2004 13:52:38 -0000 1.10 --- EventDispatcher.h 30 Jun 2004 18:49:31 -0000 1.11 *************** *** 29,38 **** @author Jacek Kolodziej ! */ class EventDispatcher{ public: // ELastEvent musi byc zawsze ostatni - wyznacza ilosc kolejek eventow /// Mozliwe rodzaje eventow na ktore mozna sie rejestrowac ! enum EventType { ETeamEvents, EOnMapMouseClick, EOrderManipulation, EDied, EAttacked, EEnemySpotted, EOrderCompleted, ETeamDestroyed, EEnemyDefeated, EWorldChanged, ELastEvent}; // UWAGA: ELastEvent MUSI byc na koncu tej listy (!) --- 29,38 ---- @author Jacek Kolodziej ! // */ class EventDispatcher{ public: // ELastEvent musi byc zawsze ostatni - wyznacza ilosc kolejek eventow /// Mozliwe rodzaje eventow na ktore mozna sie rejestrowac ! enum EventType { ETeamEvents, EOnMapMouseClick, EOrderManipulation, EDied, EAttacked, EEnemySpotted, EOrderCompleted, ETeamDestroyed, EEnemyDefeated, EWorldChanged, ENeedAFigure, ELastEvent}; // UWAGA: ELastEvent MUSI byc na koncu tej listy (!) Index: EventBase.h =================================================================== RCS file: /cvsroot/bastion/bastion/src/util/EventBase.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** EventBase.h 31 May 2004 19:14:23 -0000 1.6 --- EventBase.h 30 Jun 2004 18:49:31 -0000 1.7 *************** *** 14,21 **** --- 14,24 ---- #include "EventListener.h" + #include <stdlib.h> class EventListener; class Team; class Unit; + class EventUnitSpotted; + class UnitHandler; /** \brief Klasa bazowa dla eventow. *************** *** 116,119 **** --- 119,137 ---- + class EventNeedAFigure: public EventBase{ + public: + EventUnitSpotted *eus; + UnitHandler *uhandler; + EventNeedAFigure(EventUnitSpotted *u) { eus=u; uhandler=NULL;} + EventNeedAFigure(UnitHandler *u) { uhandler=u; eus=NULL;} + + virtual void notify (EventListener *e) { + if(eus) e->eventNeedAFigure(eus); + if(uhandler) e->eventNeedAFigure(uhandler); + } + }; + + + /** \brief Index: EventListener.h =================================================================== RCS file: /cvsroot/bastion/bastion/src/util/EventListener.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** EventListener.h 26 May 2004 11:50:46 -0000 1.8 --- EventListener.h 30 Jun 2004 18:49:31 -0000 1.9 *************** *** 22,25 **** --- 22,27 ---- class Unit; class Ladder; + class EventUnitSpotted; + class UnitHandler; /** *************** *** 57,60 **** --- 59,67 ---- virtual void enemyDefeated(Team* team) {}; + /// Zgloszenie o checi dostania figurki + virtual void eventNeedAFigure(EventUnitSpotted *eus) {}; + /// Zgloszenie o checi dostania figurki + virtual void eventNeedAFigure(UnitHandler *uhandler) {}; + ~EventListener(); |