/** ******************************************************************************* @file /gui/model/selection.h @brief vyber objektu na scene @author Pavel + Vajicek @version 0.1 ******************************************************************************/ #ifndef SELECTION_H #define SELECTION_H // #include // #include "common/mm.h" namespace gui{ //FWD class TProxyObject; class TSelection; /// predek pro sceneobject, ktery osetruje oznacovani objektu class TSelectableObject //## { protected: /// Odkaz na instanci vyberu. TSelection* selecton; /// Priznak int iTag; public: /// pokud by se pri kliknuti mohly vybrat dva objekty rozhoduje priorita (0 nejnizsi ) int iPriorityOfSelection; /// indikator, zda je tenhle objekt oznacen bool selected; /// indikator, zda je tenhle objekt zvyraznen bool preselected; /// je mozne tenhle objekt oznacit bool selectable; /** Konstruktor. */ TSelectableObject(); /** Destruktor. */ ~TSelectableObject(); ///udalosti GUI, volano z mapy,.. //@{ /** Co se provede po kliknuti na tenhle objekt. */ virtual void onClick(); /** Co se provede kdyz je mys nad danym objektem. */ virtual void onMouseOver(); //@} ///zmeny stavu, zachytitelne objekty //@{ /** Oznaceni objektu. */ virtual void select(); /** Odznaceni objektu. */ virtual void unselect(); /** Zvyrazneni objektu pred kliknutim. */ virtual void preselect(); /** Odzvyrazneni objektu pred kliknutim. */ virtual void preunselect(); //@} }; /** Registr pro vsechny vybery */ class TSelection //## { private: /// vektor vybranych objektu typedef std::vector Tvso; /** Nalezeni vybraneho objektu. @param o Objekt. @return Index do vektoru. */ int findSelObj(TSelectableObject* o); /** Nalezeni vybraneho objektu. @param o Objekt. @return Iterator do vektoru. */ Tvso::iterator findSelObj2(TSelectableObject* o); public: /// vybrane objekty std::vector selection; /// predvybrany objekt TSelectableObject* preselection; /** Oznac objekt. */ void select(TSelectableObject* o); /** Odoznac objekt. */ void unselect(TSelectableObject* o); /** Odoznac vsechny objekty. */ void unselectAll(); /** Predoznac objekt. */ void preselect(TSelectableObject* o); /** Odpredoznac objekt. */ void preunselect(); /** Konstruktor. */ TSelection(); /// Jedina instance toho objektu, bude lepe pristupny ostatnim objektum static TSelection* sel; /** Inicializuje instanci vyberu. */ static void initSelection(); /** Uvolni vyber z pameti. */ static void destroySelection(); }; /** Zvyrazneni objektu na mape - hexy, cesta, jednotky, budovy. */ class THighlighting //## { public: /// Stav zvurazneni int highlightState; /** Zapnuti/ vypnuti zvyrazneni. @param on Zda zapnout, nebo Vypnout. */ virtual void highlight(int on); /** Prepnuti. */ virtual void highlightSwitch(); /** Vykresli zvyrazneni. */ virtual void drawHighlight(); /** Konstruktor. */ THighlighting(); }; } // namespace; #endif /*****************************************************************************/