#include "states/PerformAttacks.h"
#include "../app/Application.h"
#include "../app/Input.h"
+#include "../common/GameState.h"
#include "../common/Ikari.h"
#include "../common/Inventory.h"
#include "../common/Item.h"
using common::Inventory;
using common::Item;
using common::Spell;
+using common::Stats;
using geometry::Vector;
using graphics::Menu;
}
-void BattleState::Resize(int w, int h) {
+void BattleState::OnResize(int w, int h) {
}
-void BattleState::EnterState(Application &ctrl, SDL_Surface *screen) {
+void BattleState::OnEnterState(SDL_Surface *screen) {
for (int i(0); i < 4; ++i) {
heroes[i].Position() = heroesLayout->CalculatePosition(i, background->w, background->h);
- heroes[i].SpellMenu() = res->spellMenuPrototype;
+ heroes[i].SpellMenu() = *res->spellMenuProperties;
heroes[i].UpdateSpellMenu();
- heroes[i].IkariMenu() = res->ikariMenuPrototype;
+ heroes[i].IkariMenu() = *res->ikariMenuProperties;
heroes[i].UpdateIkariMenu(res);
heroTags[i] = HeroTag(this, i);
smallHeroTags[i] = SmallHeroTag(this, i);
smallHeroTagPositions[2] = Vector<int>(xOffset + tagWidth, yOffset);
smallHeroTagPositions[3] = Vector<int>(xOffset + 3 * tagWidth, yOffset);
- itemMenu = res->itemMenuPrototype;
+ itemMenu = *res->itemMenuProperties;
LoadInventory();
+ ClearAllAttacks();
}
void BattleState::LoadInventory() {
- const Inventory &inv(*res->inventory);
+ const Inventory &inv(game->state->inventory);
itemMenu.Clear();
itemMenu.Reserve(inv.MaxItems());
for (int i(0); i < inv.MaxItems(); ++i) {
itemMenu.AddEmptyEntry();
}
}
- ClearAllAttacks();
}
-void BattleState::ExitState(Application &ctrl, SDL_Surface *screen) {
+void BattleState::OnExitState(SDL_Surface *screen) {
}
-void BattleState::ResumeState(Application &ctrl, SDL_Surface *screen) {
+void BattleState::OnResumeState(SDL_Surface *screen) {
if (ranAway) {
- ctrl.PopState(); // quit the battle scene
+ Ctrl().PopState(); // quit the battle scene
return;
}
if (Victory()) {
- ctrl.PopState();
+ Ctrl().PopState();
return;
}
if (Defeat()) {
- ctrl.PopState();
+ Ctrl().PopState();
return;
}
// TODO: this should not push a state while quitting
if (AttackSelectionDone()) {
- ctrl.PushState(new PerformAttacks(this));
+ Ctrl().PushState(new PerformAttacks(this));
} else {
- ctrl.PushState(new SelectMoveAction(this));
+ Ctrl().PushState(new SelectMoveAction(this));
}
}
return true;
}
-void BattleState::PauseState(Application &ctrl, SDL_Surface *screen) {
+void BattleState::OnPauseState(SDL_Surface *screen) {
}
SDL_FillRect(screen, &rect, SDL_MapRGB(screen->format, 0, 0, 0));
rect.y += res->normalFont->CharHeight() / 8;
rect.h -= res->normalFont->CharHeight() / 4;
- SDL_FillRect(screen, &rect, res->heroesBgColor);
+ SDL_FillRect(screen, &rect, res->heroesBgColor.MapRGB(screen->format));
for (int i(0); i < numHeroes; ++i) {
smallHeroTags[i].Render(screen, tagWidth, tagHeight, smallHeroTagPositions[i] + offset);