void BattleState::EnterState(Application &ctrl, SDL_Surface *screen) {
- monstersLayout->CalculatePositions(background->w, background->h, monsterPositions);
- heroesLayout->CalculatePositions(background->w, background->h, heroesPositions);
for (int i(0); i < 4; ++i) {
+ heroes[i].Position() = heroesLayout->CalculatePosition(i, background->w, background->h);
heroes[i].SpellMenu() = res->spellMenuPrototype;
heroes[i].UpdateSpellMenu();
heroes[i].IkariMenu() = res->ikariMenuPrototype;
smallHeroTags[i] = SmallHeroTag(this, i);
}
+ for (int i(0); i < int(monsters.size()); ++i) {
+ monsters[i].Position() = monstersLayout->CalculatePosition(i, background->w, background->h);
+ }
+
int tagHeight(attackTypeMenu.Height());
int tagWidth(attackTypeMenu.Width() * 2 + attackTypeMenu.Width() / 2);
int xOffset((Width() - 2 * tagWidth) / 2);
for (vector<Monster>::size_type i(0), end(monsters.size()); i < end; ++i) {
if (MonsterPositionOccupied(i)) {
if (monsters[i].GetAnimation().Running()) {
- monsters[i].GetAnimation().DrawCenter(screen, monsterPositions[i] + offset);
+ monsters[i].GetAnimation().DrawCenter(screen, monsters[i].Position() + offset);
} else {
- monsters[i].Sprite()->DrawCenter(screen, monsterPositions[i] + offset);
+ monsters[i].Sprite()->DrawCenter(screen, monsters[i].Position() + offset);
}
}
}
assert(screen);
for (int i(0); i < numHeroes; ++i) {
if (heroes[i].GetAnimation().Running()) {
- heroes[i].GetAnimation().DrawCenter(screen, heroesPositions[i] + offset);
+ heroes[i].GetAnimation().DrawCenter(screen, heroes[i].Position() + offset);
} else {
int row(heroes[i].Health() > 0 ? 0 : 2);
- heroes[i].Sprite()->DrawCenter(screen, heroesPositions[i] + offset, 1, row);
+ heroes[i].Sprite()->DrawCenter(screen, heroes[i].Position() + offset, 1, row);
}
}
}