X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fbattle%2Fstates%2FSelectMoveAction.cpp;h=79aa8b949feab80f216c93bb2e02466c83f2b086;hb=9a7ac49b7e3b7cd4a09b016ceec116830a3458f9;hp=2ec582214c6262d266a4cd22b452c053bfa0f48d;hpb=092a2dd175a4001a495c84ee85211734fb928c83;p=l2e.git diff --git a/src/battle/states/SelectMoveAction.cpp b/src/battle/states/SelectMoveAction.cpp index 2ec5822..79aa8b9 100644 --- a/src/battle/states/SelectMoveAction.cpp +++ b/src/battle/states/SelectMoveAction.cpp @@ -1,10 +1,3 @@ -/* - * SelectMoveAction.cpp - * - * Created on: Aug 7, 2012 - * Author: holy - */ - #include "SelectMoveAction.h" #include "RunState.h" @@ -22,8 +15,15 @@ using math::Vector; namespace battle { -void SelectMoveAction::OnEnterState(SDL_Surface *screen) { +SelectMoveAction::SelectMoveAction(Battle *battle, BattleState *parent) +: battle(battle) +, parent(parent) { + +} + +void SelectMoveAction::OnEnterState(SDL_Surface *screen) { + OnResize(screen->w, screen->h); } void SelectMoveAction::OnExitState(SDL_Surface *screen) { @@ -40,30 +40,32 @@ void SelectMoveAction::OnPauseState(SDL_Surface *screen) { void SelectMoveAction::OnResize(int width, int height) { - + position = parent->ScreenOffset() + Vector( + (parent->Width() - parent->GetMoveMenu().Width()) / 2, + parent->Height() - parent->GetMoveMenu().Height() - parent->GetMoveMenu().Height() / 2); } void SelectMoveAction::HandleEvents(const Input &input) { if (input.IsDown(Input::PAD_UP)) { - battle->GetMoveMenu().Select(MoveMenu::CHANGE); + parent->GetMoveMenu().Select(MoveMenu::CHANGE); } else if (input.IsDown(Input::PAD_DOWN)) { - battle->GetMoveMenu().Select(MoveMenu::RUN); + parent->GetMoveMenu().Select(MoveMenu::RUN); } else { - battle->GetMoveMenu().Select(MoveMenu::ATTACK); + parent->GetMoveMenu().Select(MoveMenu::ATTACK); } if (input.JustPressed(Input::ACTION_A)) { - switch (battle->GetMoveMenu().Selected()) { + switch (parent->GetMoveMenu().Selected()) { case MoveMenu::ATTACK: - Ctrl().ChangeState(new SelectAttackType(battle)); + Ctrl().ChangeState(new SelectAttackType(battle, parent)); battle->NextHero(); break; case MoveMenu::CHANGE: Ctrl().PushState(new SwapHeroes(battle, this)); break; case MoveMenu::RUN: - Ctrl().ChangeState(new RunState(battle)); + Ctrl().ChangeState(new RunState(parent)); break; } } @@ -74,18 +76,31 @@ void SelectMoveAction::UpdateWorld(Uint32 deltaT) { } void SelectMoveAction::Render(SDL_Surface *screen) { - Vector offset(battle->CalculateScreenOffset(screen)); - battle->RenderBackground(screen, offset); - battle->RenderMonsters(screen, offset); - battle->RenderHeroTags(screen, offset); - RenderMenu(screen, offset); + parent->RenderBackground(screen); + parent->RenderMonsters(screen); + parent->RenderHeroTags(screen); + RenderMenu(screen); +} + +void SelectMoveAction::RenderMenu(SDL_Surface *screen) { + parent->GetMoveMenu().Render(screen, position); +} + + +const Resources &SelectMoveAction::Res() const { + return parent->Res(); +} + +const Vector &SelectMoveAction::ScreenOffset() const { + return parent->ScreenOffset(); +} + +const HeroTag &SelectMoveAction::HeroTagAt(int index) const { + return parent->HeroTagAt(index); } -void SelectMoveAction::RenderMenu(SDL_Surface *screen, const Vector &offset) { - Vector position( - (battle->Width() - battle->GetMoveMenu().Width()) / 2, - battle->Height() - battle->GetMoveMenu().Height() - battle->GetMoveMenu().Height() / 2); - battle->GetMoveMenu().Render(screen, position + offset); +const Vector &SelectMoveAction::HeroTagPositionAt(int index) const { + return parent->HeroTagPositionAt(index); } }