+ monsters[i].Sprite()->DrawCenterBottom(screen, monsterPositions[i] + offset);
+ }
+}
+
+void BattleState::RenderHeroes(SDL_Surface *screen, const Vector<int> &offset) {
+ for (vector<Hero>::size_type i(0), end(heroes.size()); i < end; ++i) {
+ heroes[i].Sprite()->DrawCenterBottom(screen, heroesPositions[i] + offset);
+ }
+}
+
+void BattleState::RenderHeroTags(SDL_Surface *screen, const Vector<int> &offset) {
+ int tagHeight(attackTypeMenu.Height());
+ int tagWidth(attackTypeMenu.Width() * 2 + attackTypeMenu.Width() / 2);
+ int xOffset((BackgroundWidth() - 2 * tagWidth) / 2);
+
+ Point<int> tagPosition[4];
+ tagPosition[0] = Point<int>(xOffset, BackgroundHeight() - 2 * tagHeight);
+ tagPosition[1] = Point<int>(xOffset + tagWidth, BackgroundHeight() - 2 * tagHeight);
+ tagPosition[2] = Point<int>(xOffset, BackgroundHeight() - tagHeight);
+ tagPosition[3] = Point<int>(xOffset + tagWidth, BackgroundHeight() - tagHeight);
+
+ for (vector<HeroTag>::size_type i(0), end(heroTags.size()); i < end; ++i) {
+ heroTags[i].Render(screen, tagWidth, tagHeight, tagPosition[i] + offset, (int)i == activeHero);