]> git.localhorst.tv Git - l2e.git/blobdiff - src/menu/StatusMenu.cpp
added experience display in status screen
[l2e.git] / src / menu / StatusMenu.cpp
index c56e796f13f5fe4fc21652657f5d7919d198674e..f155c160b1fb71ab85d5a16a2be42956a7398b41 100644 (file)
@@ -85,12 +85,16 @@ void StatusMenu::Render(SDL_Surface *screen) {
        Vector<int> equipOffset(
                        17 * parent->Res().statusFont->CharWidth(),
                        4 * parent->Res().statusFont->CharHeight() - parent->Res().statusFont->CharHeight() / 8);
+       Vector<int> experienceOffset(
+                       11 * parent->Res().statusFont->CharWidth(),
+                       17 * parent->Res().statusFont->CharHeight() - parent->Res().statusFont->CharHeight() / 8);
 
        parent->RenderBackground(screen);
        parent->Res().shoulderNav->Draw(screen, offset + shoulderNavOffset);
        RenderStatus(screen, offset + parent->StatusOffset(0));
        RenderStats(screen, offset + statsOffset);
        RenderEquipment(screen, offset + equipOffset);
+       RenderExperience(screen, experienceOffset);
 }
 
 int StatusMenu::Width() const {
@@ -106,7 +110,7 @@ void StatusMenu::RenderStatus(SDL_Surface *screen, const Vector<int> &offset) co
 }
 
 void StatusMenu::RenderStats(SDL_Surface *screen, const Vector<int> &offset) const {
-       const Stats &stats(parent->Game().state->party[cursor]->GetStats());
+       const Stats &stats(GetHero().GetStats());
        Vector<int> lineBreak(0, parent->Res().statusFont->CharHeight());
 
        Vector<int> position(offset);
@@ -140,7 +144,7 @@ void StatusMenu::RenderStatsLine(const char *label, int number, SDL_Surface *scr
 }
 
 void StatusMenu::RenderEquipment(SDL_Surface *screen, const Vector<int> &offset) const {
-       const Hero &hero(*parent->Game().state->party[cursor]);
+       const Hero &hero(GetHero());
        Vector<int> lineBreak(0, 2 * parent->Res().statusFont->CharHeight());
 
        Vector<int> position(offset);
@@ -175,6 +179,14 @@ void StatusMenu::RenderEquipmentLine(const Item *item, SDL_Surface *screen, cons
        }
 }
 
+void StatusMenu::RenderExperience(SDL_Surface *screen, const geometry::Vector<int> &offset) const {
+       const Font &font(*parent->Res().statusFont);
+       font.DrawStringRight(parent->Res().experienceLabel, screen, offset, 10);
+
+       Vector<int> numberOffset(offset.X(), offset.Y() + font.CharHeight());
+       font.DrawNumberRight(GetHero().Experience(), screen, numberOffset, 7);
+}
+
 
 void StatusMenu::NextHero() {
        cursor = (cursor + 1) % parent->Game().state->partySize;
@@ -184,4 +196,8 @@ void StatusMenu::PreviousHero() {
        cursor = (cursor + parent->Game().state->partySize - 1) % parent->Game().state->partySize;
 }
 
+const Hero &StatusMenu::GetHero() const {
+       return *parent->Game().state->party[cursor];
+}
+
 }