]> git.localhorst.tv Git - l2e.git/blobdiff - src/menu/CapsuleMenu.cpp
added capsule feed menu dummy
[l2e.git] / src / menu / CapsuleMenu.cpp
index 7837ea5976e3e6143256cfdd9c6488c8f4ed4928..6d0fba8f0a68a3b518428d557e3df494e8f29379 100644 (file)
@@ -1,5 +1,6 @@
 #include "CapsuleMenu.h"
 
+#include "CapsuleFeedMenu.h"
 #include "PartyMenu.h"
 #include "Resources.h"
 #include "../app/Application.h"
@@ -23,10 +24,10 @@ namespace menu {
 
 CapsuleMenu::CapsuleMenu(PartyMenu *parent)
 : parent(parent)
-, menu(*parent->Res().capsuleMenuProperties) {
-       menu.Add(parent->Res().capsuleFeedLabel, 0);
-       menu.Add(parent->Res().capsuleChangeLabel, 1);
-       menu.Add(parent->Res().capsuleNameLabel, 2);
+, menu(*Res().capsuleMenuProperties) {
+       menu.Add(Res().capsuleFeedLabel, CHOICE_FEED);
+       menu.Add(Res().capsuleChangeLabel, CHOICE_CHANGE);
+       menu.Add(Res().capsuleNameLabel, CHOICE_NAME);
 }
 
 
@@ -39,7 +40,7 @@ void CapsuleMenu::OnExitState(SDL_Surface *) {
 }
 
 void CapsuleMenu::OnResumeState(SDL_Surface *) {
-
+       menu.SetActive();
 }
 
 void CapsuleMenu::OnPauseState(SDL_Surface *) {
@@ -60,7 +61,22 @@ void CapsuleMenu::HandleEvents(const Input &input) {
                menu.NextItem();
        }
 
-       if (input.JustPressed(Input::ACTION_B)) {
+       if (input.JustPressed(Input::ACTION_A)) {
+               switch (menu.Selected()) {
+                       case CHOICE_FEED:
+                               Ctrl().PushState(new CapsuleFeedMenu(this));
+                               menu.SetSelected();
+                               break;
+                       case CHOICE_CHANGE:
+                               // push change menu
+                               menu.SetSelected();
+                               break;
+                       case CHOICE_NAME:
+                               // push name menu
+                               menu.SetSelected();
+                               break;
+               }
+       } else if (input.JustPressed(Input::ACTION_B)) {
                Ctrl().PopState();
        }
 }
@@ -70,7 +86,7 @@ void CapsuleMenu::UpdateWorld(float deltaT) {
 }
 
 void CapsuleMenu::Render(SDL_Surface *screen) {
-       const Font &font(*parent->Res().statusFont);
+       const Font &font(*Res().statusFont);
        const Vector<int> offset((screen->w - Width()) / 2, (screen->h - Height()) / 2);
        const Vector<int> capsuleOffset(
                        6 * font.CharWidth(),
@@ -96,7 +112,7 @@ void CapsuleMenu::Render(SDL_Surface *screen) {
 }
 
 void CapsuleMenu::RenderBackground(SDL_Surface *screen) const {
-       parent->Res().capsulebg->Render(screen, Vector<int>(), Vector<int>(screen->w, screen->h));
+       Res().capsulebg->Render(screen, Vector<int>(), Vector<int>(screen->w, screen->h));
 }
 
 void CapsuleMenu::RenderCapsule(SDL_Surface *screen, const Vector<int> &offset) const {
@@ -105,56 +121,56 @@ void CapsuleMenu::RenderCapsule(SDL_Surface *screen, const Vector<int> &offset)
 
 void CapsuleMenu::RenderInfo(SDL_Surface *screen, const Vector<int> &offset) const {
        const Capsule &capsule(GetCapsule());
-       const Font &font(*parent->Res().statusFont);
+       const Font &font(*Res().statusFont);
        const Vector<int> delimiterOffset(5 * font.CharWidth(), 0);
        const Vector<int> valueOffset(6 * font.CharWidth(), 0);
        const Vector<int> lineBreak(0, font.CharHeight() + font.CharHeight() / 2);
        Vector<int> lineHead(offset);
 
-       font.DrawString(parent->Res().capsuleNameLabel, screen, lineHead, 5);
+       font.DrawString(Res().capsuleNameLabel, screen, lineHead, 5);
        font.DrawChar(':', screen, lineHead + delimiterOffset);
        font.DrawString(capsule.Name(), screen, lineHead + valueOffset);
 
        lineHead += lineBreak;
-       font.DrawString(parent->Res().capsuleClassLabel, screen, lineHead, 5);
+       font.DrawString(Res().capsuleClassLabel, screen, lineHead, 5);
        font.DrawChar(':', screen, lineHead + delimiterOffset);
        font.DrawString(capsule.ClassName(), screen, lineHead + valueOffset);
 
        lineHead += lineBreak;
-       font.DrawString(parent->Res().capsuleAlignmentLabel, screen, lineHead, 5);
+       font.DrawString(Res().capsuleAlignmentLabel, screen, lineHead, 5);
        font.DrawChar(':', screen, lineHead + delimiterOffset);
        font.DrawString(capsule.Alignment(), screen, lineHead + valueOffset);
 
        lineHead += lineBreak;
-       font.DrawString(parent->Res().capsuleTribeLabel, screen, lineHead, 5);
+       font.DrawString(Res().capsuleTribeLabel, screen, lineHead, 5);
        font.DrawChar(':', screen, lineHead + delimiterOffset);
        font.DrawString(capsule.Tribe(), screen, lineHead + valueOffset);
 
        lineHead += lineBreak;
-       font.DrawString(parent->Res().capsuleAttack1Label, screen, lineHead, 5);
+       font.DrawString(Res().capsuleAttack1Label, screen, lineHead, 5);
        font.DrawChar(':', screen, lineHead + delimiterOffset);
        if (capsule.Attack1()) {
                font.DrawString(capsule.Attack1()->Name(), screen, lineHead + valueOffset);
        } else {
-               font.DrawString(parent->Res().capsuleNoAttackText, screen, lineHead + valueOffset);
+               font.DrawString(Res().capsuleNoAttackText, screen, lineHead + valueOffset);
        }
 
        lineHead += lineBreak;
-       font.DrawString(parent->Res().capsuleAttack1Label, screen, lineHead, 5);
+       font.DrawString(Res().capsuleAttack1Label, screen, lineHead, 5);
        font.DrawChar(':', screen, lineHead + delimiterOffset);
        if (capsule.Attack2()) {
                font.DrawString(capsule.Attack2()->Name(), screen, lineHead + valueOffset);
        } else {
-               font.DrawString(parent->Res().capsuleNoAttackText, screen, lineHead + valueOffset);
+               font.DrawString(Res().capsuleNoAttackText, screen, lineHead + valueOffset);
        }
 
        lineHead += lineBreak;
-       font.DrawString(parent->Res().capsuleAttack1Label, screen, lineHead, 5);
+       font.DrawString(Res().capsuleAttack1Label, screen, lineHead, 5);
        font.DrawChar(':', screen, lineHead + delimiterOffset);
        if (capsule.Attack3()) {
                font.DrawString(capsule.Attack3()->Name(), screen, lineHead + valueOffset);
        } else {
-               font.DrawString(parent->Res().capsuleNoAttackText, screen, lineHead + valueOffset);
+               font.DrawString(Res().capsuleNoAttackText, screen, lineHead + valueOffset);
        }
 }
 
@@ -165,42 +181,42 @@ void CapsuleMenu::RenderWheel(SDL_Surface *screen, const Vector<int> &offset) co
 void CapsuleMenu::RenderStats(SDL_Surface *screen, const Vector<int> &offset) const {
        const Capsule &capsule(GetCapsule());
        Stats stats(capsule.GetStats());
-       const Font &font(*parent->Res().statusFont);
+       const Font &font(*Res().statusFont);
        const Vector<int> lineBreak(0, font.CharHeight());
        Vector<int> lineHead(offset);
 
-       RenderStatsLine(screen, lineHead, parent->Res().hpLabel, capsule.MaxHealth());
+       RenderStatsLine(screen, lineHead, Res().hpLabel, capsule.MaxHealth());
        lineHead += lineBreak;
-       RenderStatsLine(screen, lineHead, parent->Res().atpLabel, stats.Attack());
+       RenderStatsLine(screen, lineHead, Res().atpLabel, stats.Attack());
        lineHead += lineBreak;
-       RenderStatsLine(screen, lineHead, parent->Res().dfpLabel, stats.Defense());
+       RenderStatsLine(screen, lineHead, Res().dfpLabel, stats.Defense());
        lineHead += lineBreak;
-       RenderStatsLine(screen, lineHead, parent->Res().strLabel, stats.Strength());
+       RenderStatsLine(screen, lineHead, Res().strLabel, stats.Strength());
        lineHead += lineBreak;
-       RenderStatsLine(screen, lineHead, parent->Res().aglLabel, stats.Agility());
+       RenderStatsLine(screen, lineHead, Res().aglLabel, stats.Agility());
        lineHead += lineBreak;
-       RenderStatsLine(screen, lineHead, parent->Res().intLabel, stats.Intelligence());
+       RenderStatsLine(screen, lineHead, Res().intLabel, stats.Intelligence());
        lineHead += lineBreak;
-       RenderStatsLine(screen, lineHead, parent->Res().gutLabel, stats.Gut());
+       RenderStatsLine(screen, lineHead, Res().gutLabel, stats.Gut());
        lineHead += lineBreak;
-       RenderStatsLine(screen, lineHead, parent->Res().mgrLabel, stats.MagicResistance());
+       RenderStatsLine(screen, lineHead, Res().mgrLabel, stats.MagicResistance());
 
        lineHead = offset + Vector<int>(18 * font.CharWidth(), 0);
-       font.DrawStringRight(parent->Res().levelLabel, screen, lineHead);
+       font.DrawStringRight(Res().levelLabel, screen, lineHead);
        lineHead += lineBreak;
        font.DrawNumberRight(capsule.Level(), screen, lineHead);
        lineHead += 2 * lineBreak;
-       font.DrawStringRight(parent->Res().experienceLabel, screen, lineHead);
+       font.DrawStringRight(Res().experienceLabel, screen, lineHead);
        lineHead += lineBreak;
        font.DrawNumberRight(capsule.Experience(), screen, lineHead);
        lineHead += 2 * lineBreak;
-       font.DrawStringRight(parent->Res().nextLevelLabel, screen, lineHead);
+       font.DrawStringRight(Res().nextLevelLabel, screen, lineHead);
        lineHead += lineBreak;
        font.DrawNumberRight(capsule.NextLevel(), screen, lineHead);
 }
 
 void CapsuleMenu::RenderStatsLine(SDL_Surface *screen, const geometry::Vector<int> &offset, const char *name, int value) const {
-       const Font &font(*parent->Res().statusFont);
+       const Font &font(*Res().statusFont);
        const Vector<int> numberOffset(4 * font.CharWidth(), 0);
 
        font.DrawString(name, screen, offset, 4);
@@ -208,14 +224,32 @@ void CapsuleMenu::RenderStatsLine(SDL_Surface *screen, const geometry::Vector<in
 }
 
 void CapsuleMenu::RenderMenu(SDL_Surface *screen, const Vector<int> &offset) const {
-       const Font &font(*parent->Res().normalFont);
-       const Frame &frame(*parent->Res().statusFrame);
+       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();
+}
+
+
 int CapsuleMenu::Width() const {
        return parent->Width();
 }
@@ -225,7 +259,7 @@ int CapsuleMenu::Height() const {
 }
 
 const Capsule &CapsuleMenu::GetCapsule() const {
-       return *parent->Game().state->capsule;
+       return *Game().state->capsule;
 }
 
 }