#ifndef _CARDSELECTOR_H_ #define _CARDSELECTOR_H_ #include #include "GuiLayers.h" #include "DuelLayers.h" #include "Pos.h" using std::vector; class PlayGuiObject; class DuelLayers; template struct LimitorFunctor { virtual bool select(T*) = 0; virtual bool greyout(T*) = 0; typedef T Target; }; template class ObjectSelector : public GuiLayer { protected: vector cards; T* active; bool showBig; DuelLayers* duel; LimitorFunctor* limitor; Pos bigpos; public: ObjectSelector(DuelLayers*); void Add(T*); void Remove(T*); bool CheckUserInput(u32 key); void Update(float dt); void Render(); void Limit(LimitorFunctor* limitor); typedef T Target; }; typedef ObjectSelector<> CardSelector; typedef LimitorFunctor Limitor; struct Exp { static inline bool test(CardSelector::Target*, CardSelector::Target*); }; #endif