+void CapsuleMenu::RenderWheel(SDL_Surface *screen, const Vector<int> &offset) const {
+ Res().capsuleAlignmentWheel->DrawCenter(screen, offset);
+ Res().capsuleAlignmentCursor->DrawCenter(screen, offset + Game().state->GetCapsule().AlignmentOffset());
+}
+
+void CapsuleMenu::RenderStats(SDL_Surface *screen, const Vector<int> &offset) const {
+ const Capsule &capsule(GetCapsule());
+ Stats stats(capsule.GetStats());
+ const Font &font(*Res().statusFont);
+ const Vector<int> lineBreak(0, font.CharHeight());
+ Vector<int> lineHead(offset);
+
+ RenderStatsLine(screen, lineHead, Res().hpLabel, capsule.MaxHealth());
+ lineHead += lineBreak;
+ RenderStatsLine(screen, lineHead, Res().atpLabel, stats.Attack());
+ lineHead += lineBreak;
+ RenderStatsLine(screen, lineHead, Res().dfpLabel, stats.Defense());
+ lineHead += lineBreak;
+ RenderStatsLine(screen, lineHead, Res().strLabel, stats.Strength());
+ lineHead += lineBreak;
+ RenderStatsLine(screen, lineHead, Res().aglLabel, stats.Agility());
+ lineHead += lineBreak;
+ RenderStatsLine(screen, lineHead, Res().intLabel, stats.Intelligence());
+ lineHead += lineBreak;
+ RenderStatsLine(screen, lineHead, Res().gutLabel, stats.Gut());
+ lineHead += lineBreak;
+ RenderStatsLine(screen, lineHead, Res().mgrLabel, stats.MagicResistance());
+
+ lineHead = offset + Vector<int>(18 * font.CharWidth(), 0);
+ font.DrawStringRight(Res().levelLabel, screen, lineHead);
+ lineHead += lineBreak;
+ font.DrawNumberRight(capsule.Level(), screen, lineHead);
+ lineHead += 2 * lineBreak;
+ font.DrawStringRight(Res().experienceLabel, screen, lineHead);
+ lineHead += lineBreak;
+ font.DrawNumberRight(capsule.Experience(), screen, lineHead);
+ lineHead += 2 * lineBreak;
+ font.DrawStringRight(Res().nextLevelLabel, screen, lineHead);
+ lineHead += lineBreak;
+ font.DrawNumberRight(capsule.NextLevel(), screen, lineHead);
+}
+
+void CapsuleMenu::RenderStatsLine(SDL_Surface *screen, const math::Vector<int> &offset, const char *name, int value) const {
+ const Font &font(*Res().statusFont);
+ const Vector<int> numberOffset(4 * font.CharWidth(), 0);
+
+ font.DrawString(name, screen, offset, 4);
+ font.DrawNumber(value, screen, offset + numberOffset, 3);
+}
+
+void CapsuleMenu::RenderMenu(SDL_Surface *screen, const Vector<int> &offset) const {
+ const Font &font(*Res().normalFont);
+ const Frame &frame(*Res().statusFrame);
+ const Vector<int> menuOffset(3 * font.CharWidth(), font.CharHeight());
+
+ frame.Draw(screen, offset, 30 * font.CharWidth(), 3 * font.CharHeight());
+ menu.Draw(screen, offset + menuOffset);
+}
+
+
+common::GameConfig &CapsuleMenu::Game() {
+ return parent->Game();
+}
+
+const common::GameConfig &CapsuleMenu::Game() const {
+ return parent->Game();
+}
+
+Resources &CapsuleMenu::Res() {
+ return parent->Res();
+}
+
+const Resources &CapsuleMenu::Res() const {
+ return parent->Res();
+}
+
+