graphics::Font *normalFont;
+ const char *spellMenuHeadline;
graphics::Menu</* Spell */ void *> spellMenuPrototype;
, selectFrame(0)
, normalFont(0)
+
+ , spellMenuHeadline("")
{ }
};
parent->Render(screen);
Vector<int> offset(battle->CalculateScreenOffset(screen));
RenderFrame(screen, offset);
+ RenderHeadline(screen, offset);
RenderMenu(screen, offset);
}
frame->Draw(screen, position + offset, width, height);
}
+void SelectSpell::RenderHeadline(SDL_Surface *screen, const Vector<int> &offset) {
+ const Resources &res(battle->Res());
+ Point<int> position(
+ 2 * res.selectFrame->BorderWidth() + res.normalFont->CharWidth(),
+ 2 * res.selectFrame->BorderHeight());
+ res.normalFont->DrawString(res.spellMenuHeadline, screen, position + offset);
+}
+
void SelectSpell::RenderMenu(SDL_Surface *screen, const Vector<int> &offset) {
- Point<int> position(2 * battle->Res().selectFrame->BorderWidth(), 2 * battle->Res().selectFrame->BorderHeight());
+ const Resources &res(battle->Res());
+ Point<int> position(
+ 2 * res.selectFrame->BorderWidth() + res.normalFont->CharWidth(),
+ 2 * res.selectFrame->BorderHeight() + 2 * res.normalFont->CharHeight());
battle->GetSpellMenu().Draw(screen, position + offset);
}
private:
void RenderFrame(SDL_Surface *, const geometry::Vector<int> &offset);
+ void RenderHeadline(SDL_Surface *, const geometry::Vector<int> &offset);
void RenderMenu(SDL_Surface *, const geometry::Vector<int> &offset);
private:
normalFont.MapChar(':', 10, 0);
normalFont.MapChar('!', 10, 0);
normalFont.MapChar('?', 10, 0);
+ // TODO: add '.' character
battleRes.normalFont = &normalFont;
+ battleRes.spellMenuHeadline = "Please choose a spell.";
battleRes.spellMenuPrototype = Menu</* Spell */ void *>(&normalFont, 12, 6, 8, 2, 32);
BattleState *battleState(new BattleState(bg, monstersLayout, heroesLayout, &battleRes));