X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fbattle%2Fstates%2FSelectMoveAction.cpp;h=79aa8b949feab80f216c93bb2e02466c83f2b086;hb=087783315ac5955c17bb3b051c9351f321653df6;hp=c728db0e61c6bd51502329e2ba7a84026d0fa7c1;hpb=185c6c79f8ba30981aad4e1d66f98143a344b95e;p=l2e.git diff --git a/src/battle/states/SelectMoveAction.cpp b/src/battle/states/SelectMoveAction.cpp index c728db0..79aa8b9 100644 --- a/src/battle/states/SelectMoveAction.cpp +++ b/src/battle/states/SelectMoveAction.cpp @@ -1,90 +1,106 @@ -/* - * SelectMoveAction.cpp - * - * Created on: Aug 7, 2012 - * Author: holy - */ - #include "SelectMoveAction.h" +#include "RunState.h" #include "SelectAttackType.h" +#include "SwapHeroes.h" #include "../BattleState.h" #include "../MoveMenu.h" #include "../../app/Application.h" #include "../../app/Input.h" -#include "../../geometry/operators.h" +#include "../../math/Vector.h" using app::Application; using app::Input; -using geometry::Point; -using geometry::Vector; +using math::Vector; namespace battle { -void SelectMoveAction::EnterState(Application &c, SDL_Surface *screen) { - ctrl = &c; +SelectMoveAction::SelectMoveAction(Battle *battle, BattleState *parent) +: battle(battle) +, parent(parent) { + } -void SelectMoveAction::ExitState(Application &c, SDL_Surface *screen) { - ctrl = 0; + +void SelectMoveAction::OnEnterState(SDL_Surface *screen) { + OnResize(screen->w, screen->h); } -void SelectMoveAction::ResumeState(Application &ctrl, SDL_Surface *screen) { +void SelectMoveAction::OnExitState(SDL_Surface *screen) { } -void SelectMoveAction::PauseState(Application &ctrl, SDL_Surface *screen) { +void SelectMoveAction::OnResumeState(SDL_Surface *screen) { } +void SelectMoveAction::OnPauseState(SDL_Surface *screen) { -void SelectMoveAction::Resize(int width, int height) { +} + +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::HandleInput(const Input &input) { +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: - // TODO: switch to change state + Ctrl().PushState(new SwapHeroes(battle, this)); break; case MoveMenu::RUN: - // TODO: switch to run state + Ctrl().ChangeState(new RunState(parent)); break; } } } -void SelectMoveAction::UpdateWorld(float deltaT) { +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) { - Point position( - (battle->BackgroundWidth() - battle->GetMoveMenu().Width()) / 2, - battle->BackgroundHeight() - battle->GetMoveMenu().Height() - battle->GetMoveMenu().Height() / 2); - battle->GetMoveMenu().Render(screen, position + offset); +const Vector &SelectMoveAction::HeroTagPositionAt(int index) const { + return parent->HeroTagPositionAt(index); } }