/** ******************************************************************************* @file /gui/engine/BuildingControllers.h @brief Kontrolery na ovladani budov @author Vajicek @version 0.1 ******************************************************************************/ #ifndef BUILDINGCONTROLLERS_H #define BUILDINGCONTROLLERS_H #include "common/mm.h" // #include "gui/common/mymath.h" // #include "gui/engine/Controllers.h" // #include namespace gui{ //FWD class TBuilding; class TUnit; class TSceneScript; /** Typy akci */ enum TBuildingControllerAction { bcaIdle, ///< prazdna akce bcaDestruction, ///< animace destrukce budovy bcaRemove, ///< odstraneni budovy ze sceny bcaScript ///< scenar }; /** Ovlada budovu. */ class TBuildingController: public TScheduler { public: /// Akce //@{ /** Naplanuje spusteni scenare. Smaze vsechny naplanovane spusteni scenare. @param c Scenar. @param startAt Cas spusteni, -1 za posledni akci. */ void script(TSceneScript* c, int startAt = -1); /** Destrukce. Spusti vybuch a propadne se do zeme a nakonec odstrani ze sceny. @param startAt Cas spusteni, -1 za posledni akci. */ void destruction(int startAt = -1); /** Odstraneni ze sceny. @param startAt Cas spusteni, -1 za posledni akci. */ void remove(int startAt = -1); //@} /** Vytoreni akce. @param act Typ akce. @param data Pridruzeny data. @param start Cas spusteni. @param dur Doba trvani. @return Vytvorena akce. */ TSheduledAction* createAction(int act, void* data, int start, int dur); /** Uvolni akci z pameti. @param ac Akce. */ void disposeAction(TSheduledAction* ac); /** Update akce. @param rtime Relativni cas ke startu. @param sa Akce. */ virtual int updateAction(int rtime, TSheduledAction* sa); /** Konstruktor. @param b Budova. */ TBuildingController(TBuilding* b); }; }//namespace #endif /*****************************************************************************/