]> git.localhorst.tv Git - l2e.git/blob - src/battle/states/SelectAttackType.cpp
1d76b6c10894b4fa0dc0efa42ddbc4786fde43b2
[l2e.git] / src / battle / states / SelectAttackType.cpp
1 /*
2  * SelectAttackType.cpp
3  *
4  *  Created on: Aug 7, 2012
5  *      Author: holy
6  */
7
8 #include "SelectAttackType.h"
9
10 #include "../BattleState.h"
11 #include "../../app/Input.h"
12 #include "../../geometry/operators.h"
13
14 using app::Input;
15 using geometry::Point;
16 using geometry::Vector;
17
18 namespace battle {
19
20 void SelectAttackType::EnterState(app::Application &c, SDL_Surface *screen) {
21         ctrl = &c;
22 }
23
24 void SelectAttackType::ExitState() {
25         ctrl = 0;
26 }
27
28
29 void SelectAttackType::Resize(int width, int height) {
30
31 }
32
33
34 void SelectAttackType::HandleInput(const Input &input) {
35         if (input.IsDown(Input::PAD_UP)) {
36                 battle->GetAttackTypeMenu().Select(AttackTypeMenu::MAGIC);
37         } else if (input.IsDown(Input::PAD_RIGHT)) {
38                 battle->GetAttackTypeMenu().Select(AttackTypeMenu::DEFEND);
39         } else if (input.IsDown(Input::PAD_DOWN)) {
40                 battle->GetAttackTypeMenu().Select(AttackTypeMenu::IKARI);
41         } else if (input.IsDown(Input::PAD_LEFT)) {
42                 battle->GetAttackTypeMenu().Select(AttackTypeMenu::ITEM);
43         } else {
44                 battle->GetAttackTypeMenu().Select(AttackTypeMenu::SWORD);
45         }
46
47         if (input.JustPressed(Input::ACTION_A)) {
48                 switch (battle->GetAttackTypeMenu().Selected()) {
49                         case AttackTypeMenu::SWORD:
50                                 // TODO: switch to next character
51                                 break;
52                         case AttackTypeMenu::MAGIC:
53                                 // TODO: switch to spell select
54                                 break;
55                         case AttackTypeMenu::DEFEND:
56                                 // TODO: switch to next character
57                                 break;
58                         case AttackTypeMenu::IKARI:
59                                 // TODO: switch to ikari attack select
60                                 break;
61                         case AttackTypeMenu::ITEM:
62                                 // TODO: switch to item select
63                                 break;
64                 }
65         }
66 }
67
68 void SelectAttackType::UpdateWorld(float deltaT) {
69
70 }
71
72 void SelectAttackType::Render(SDL_Surface *screen) {
73         Vector<int> offset(battle->CalculateScreenOffset(screen));
74         battle->RenderBackground(screen, offset);
75         battle->RenderMonsters(screen, offset);
76         battle->RenderHeroTags(screen, offset);
77         RenderMenu(screen, offset);
78 }
79
80 void SelectAttackType::RenderMenu(SDL_Surface *screen, const Vector<int> &offset) {
81         Point<int> position(
82                         (battle->BackgroundWidth() - battle->GetAttackTypeMenu().Width()) / 2,
83                         (battle->BackgroundHeight() * 3 / 4) - (battle->GetAttackTypeMenu().Height() / 2));
84         battle->GetAttackTypeMenu().Render(screen, position + offset);
85 }
86
87 }