X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmenu%2FCapsuleMenu.cpp;h=6d0fba8f0a68a3b518428d557e3df494e8f29379;hb=7a14d357d9d05c2bac1efcdcf57365a4ce13729a;hp=7837ea5976e3e6143256cfdd9c6488c8f4ed4928;hpb=7f0a586b8238c7093a8942ff5b5c4122edd386fc;p=l2e.git diff --git a/src/menu/CapsuleMenu.cpp b/src/menu/CapsuleMenu.cpp index 7837ea5..6d0fba8 100644 --- a/src/menu/CapsuleMenu.cpp +++ b/src/menu/CapsuleMenu.cpp @@ -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 offset((screen->w - Width()) / 2, (screen->h - Height()) / 2); const Vector 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(), Vector(screen->w, screen->h)); + Res().capsulebg->Render(screen, Vector(), Vector(screen->w, screen->h)); } void CapsuleMenu::RenderCapsule(SDL_Surface *screen, const Vector &offset) const { @@ -105,56 +121,56 @@ void CapsuleMenu::RenderCapsule(SDL_Surface *screen, const Vector &offset) void CapsuleMenu::RenderInfo(SDL_Surface *screen, const Vector &offset) const { const Capsule &capsule(GetCapsule()); - const Font &font(*parent->Res().statusFont); + const Font &font(*Res().statusFont); const Vector delimiterOffset(5 * font.CharWidth(), 0); const Vector valueOffset(6 * font.CharWidth(), 0); const Vector lineBreak(0, font.CharHeight() + font.CharHeight() / 2); Vector 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 &offset) co void CapsuleMenu::RenderStats(SDL_Surface *screen, const Vector &offset) const { const Capsule &capsule(GetCapsule()); Stats stats(capsule.GetStats()); - const Font &font(*parent->Res().statusFont); + const Font &font(*Res().statusFont); const Vector lineBreak(0, font.CharHeight()); Vector 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(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 &offset, const char *name, int value) const { - const Font &font(*parent->Res().statusFont); + const Font &font(*Res().statusFont); const Vector numberOffset(4 * font.CharWidth(), 0); font.DrawString(name, screen, offset, 4); @@ -208,14 +224,32 @@ void CapsuleMenu::RenderStatsLine(SDL_Surface *screen, const geometry::Vector &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 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; } }