#include "../include/config.h" #include "../include/GameApp.h" #include "../include/GuiAvatars.h" #define LIB_GRAVE_OFFSET 230 GuiAvatars::GuiAvatars(CardSelector* cs) : cs(cs), active(NULL) { Add(self = NEW GuiAvatar (SCREEN_WIDTH, SCREEN_HEIGHT, false, GameObserver::GetInstance()->players[0], GuiAvatar::BOTTOM_RIGHT, this)); Add(selfGraveyard = NEW GuiGraveyard(SCREEN_WIDTH - GuiAvatar::Width - GuiGameZone::Width/2 - 5, SCREEN_HEIGHT - GuiAvatar::Height - 5, false, GameObserver::GetInstance()->players[0], this)); Add(selfLibrary = NEW GuiLibrary (SCREEN_WIDTH - GuiAvatar::Width - GuiGameZone::Width/2 - 5 , SCREEN_HEIGHT - GuiAvatar::Height - 5 + GuiGameZone::Height + 5, false, GameObserver::GetInstance()->players[0], this)); Add(opponent = NEW GuiAvatar (0, 0, false, GameObserver::GetInstance()->players[1], GuiAvatar::TOP_LEFT, this)); opponent->zoom = 0.9; Add(opponentGraveyard = NEW GuiGraveyard(5 + GuiAvatar::Width * 1.2 - GuiGameZone::Width / 2, 5, false, GameObserver::GetInstance()->players[1], this)); Add(opponentLibrary = NEW GuiLibrary (5 + GuiAvatar::Width *1.2 - GuiGameZone::Width / 2, 5 + GuiGameZone::Height + 5, false, GameObserver::GetInstance()->players[1], this)); cs->Add(self); cs->Add(selfGraveyard); cs->Add(selfLibrary); cs->Add(opponent); cs->Add(opponentGraveyard); cs->Add(opponentLibrary); selfGraveyard->alpha = selfLibrary->alpha = opponentGraveyard->alpha = opponentLibrary->alpha = 0; } float GuiAvatars::LeftBoundarySelf(){ return SCREEN_WIDTH - 10; } GuiAvatars::~GuiAvatars() { } void GuiAvatars::Activate(PlayGuiObject* c) { c->zoom = 1.2; c->mHasFocus = true; if ((opponentGraveyard == c) || (opponentLibrary == c) || (opponent == c)) { opponentGraveyard->alpha = opponentLibrary->alpha = 128; active = opponent; opponent->zoom = 1.2;} else if ((selfGraveyard == c) || (selfLibrary == c) || (self == c)) { selfGraveyard->alpha = selfLibrary->alpha = 128; self->zoom = 1.0; active = self; } if (opponent != c && self != c) c->alpha = 255; } void GuiAvatars::Deactivate(PlayGuiObject* c) { c->zoom = 1.0; c->mHasFocus = false; if ((opponentGraveyard == c) || (opponentLibrary == c) || (opponent == c)) { opponentGraveyard->alpha = opponentLibrary->alpha = 0; opponent->zoom = 0.9;} else if ((selfGraveyard == c) || (selfLibrary == c) || (self == c)) { selfGraveyard->alpha = selfLibrary->alpha = 0; self->zoom = 0.3; } active = NULL; } int GuiAvatars::receiveEventPlus(WEvent* e) { return selfGraveyard->receiveEventPlus(e) | opponentGraveyard->receiveEventPlus(e); } int GuiAvatars::receiveEventMinus(WEvent* e) { selfGraveyard->receiveEventMinus(e); opponentGraveyard->receiveEventMinus(e); return 1; } bool GuiAvatars::CheckUserInput(u32 key){ if (self->CheckUserInput(key)) return true; if (opponent->CheckUserInput(key)) return true; if (selfGraveyard->CheckUserInput(key)) return true; if (opponentGraveyard->CheckUserInput(key)) return true; if (selfLibrary->CheckUserInput(key)) return true; if (opponentLibrary->CheckUserInput(key)) return true; return false; } void GuiAvatars::Update(float dt) { self->Update(dt); opponent->Update(dt); selfGraveyard->Update(dt); opponentGraveyard->Update(dt); selfLibrary->Update(dt); opponentLibrary->Update(dt); } void GuiAvatars::Render() { JRenderer * r = JRenderer::GetInstance(); float w = 50; float h = 60; if (opponent == active){ r->FillRect(opponent->actX, opponent->actY, w * opponent->actZ , h * opponent->actZ, ARGB(200,0,0,0)); }else if (self == active){ r->FillRect(self->actX - w * self->actZ, self->actY - h * self->actZ, w * self->actZ , h * self->actZ, ARGB(200,0,0,0)); } GuiLayer::Render(); }