diff --git a/projects/mtg/include/CardSelector.h b/projects/mtg/include/CardSelector.h index 013e41df5..68e9b189a 100644 --- a/projects/mtg/include/CardSelector.h +++ b/projects/mtg/include/CardSelector.h @@ -30,6 +30,8 @@ class ObjectSelector : public GuiLayer LimitorFunctor* limitor; Pos bigpos; + T* handLast; T* playLast; + public: ObjectSelector(DuelLayers*); void Add(T*); diff --git a/projects/mtg/include/GuiHand.h b/projects/mtg/include/GuiHand.h index bbb3aba38..cc2c904c7 100644 --- a/projects/mtg/include/GuiHand.h +++ b/projects/mtg/include/GuiHand.h @@ -39,6 +39,7 @@ class GuiHand : public GuiLayer GuiHand(CardSelector* cs, MTGHand* hand); ~GuiHand(); void Update(float dt); + bool isInHand(CardView*); friend struct HandLimitor; }; diff --git a/projects/mtg/src/GuiHand.cpp b/projects/mtg/src/GuiHand.cpp index 8d38beba0..355f513f9 100644 --- a/projects/mtg/src/GuiHand.cpp +++ b/projects/mtg/src/GuiHand.cpp @@ -13,9 +13,9 @@ const float GuiHand::ClosedX = 494; bool HandLimitor::select(Target* t) { - vector::iterator it; - it = find(hand->cards.begin(), hand->cards.end(), t); - return (it != hand->cards.end()); + if (CardView* c = dynamic_cast(t)) + return hand->isInHand(c); + else return false; } bool HandLimitor::greyout(Target* t) { @@ -51,6 +51,13 @@ void GuiHand::Update(float dt) (*it)->Update(dt); } +bool GuiHand::isInHand(CardView* card) +{ + vector::iterator it; + it = find(cards.begin(), cards.end(), card); + return (it != cards.end()); +} + GuiHandOpponent::GuiHandOpponent(CardSelector* cs, MTGHand* hand) : GuiHand(cs, hand) {} void GuiHandOpponent::Render()