X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fbattle%2FBattleState.cpp;h=3f734f84d8ce5bc868f15ad8ea041f2439fce99b;hb=2d10e898ccd404a69be02f5e93cf97398de99984;hp=c54fecaca88dd10acdb79ff16b597fe82a6d7cf5;hpb=d872d756e64b8f1f57cba64ae19f479f8eab3927;p=l2e.git diff --git a/src/battle/BattleState.cpp b/src/battle/BattleState.cpp index c54feca..3f734f8 100644 --- a/src/battle/BattleState.cpp +++ b/src/battle/BattleState.cpp @@ -11,6 +11,7 @@ #include "states/SelectMoveAction.h" #include "../app/Application.h" #include "../app/Input.h" +#include "../common/Ikari.h" #include "../common/Inventory.h" #include "../common/Item.h" #include "../common/Spell.h" @@ -59,7 +60,7 @@ void BattleState::EnterState(Application &ctrl, SDL_Surface *screen) { spellMenus.push_back(res->spellMenuPrototype); LoadSpellMenu(i); ikariMenus.push_back(res->ikariMenuPrototype); - // TODO: insert ikari menu entries + LoadIkariMenu(i); heroTags[i] = HeroTag(&heroes[i], attackChoices + i, res, HeroTag::Alignment((i + 1) % 2)); } @@ -71,7 +72,6 @@ void BattleState::EnterState(Application &ctrl, SDL_Surface *screen) { heroTagPositions[2] = Point(xOffset, BackgroundHeight() - tagHeight); heroTagPositions[3] = Point(xOffset + tagWidth, BackgroundHeight() - tagHeight); - // TODO: insert item menu entries itemMenu = res->itemMenuPrototype; LoadInventory(); } @@ -85,6 +85,83 @@ void BattleState::LoadSpellMenu(vector::size_type index) { } } +void BattleState::LoadIkariMenu(vector::size_type index) { + ikariMenus[index].Clear(); + ikariMenus[index].Reserve(6); + + if (HeroAt(index).HasWeapon()) { + ikariMenus[index].Add( + HeroAt(index).Weapon()->Name(), + HeroAt(index).Weapon(), + HeroAt(index).Weapon()->HasIkari() && HeroAt(index).Weapon()->GetIkari()->Cost() <= HeroAt(index).IP(), + res->weaponMenuIcon, + 0, + HeroAt(index).Weapon()->HasIkari() ? HeroAt(index).Weapon()->GetIkari()->Name() : ""); + } else { + ikariMenus[index].Add(res->noEquipmentText, 0, false, res->weaponMenuIcon); + } + + if (HeroAt(index).HasArmor()) { + ikariMenus[index].Add( + HeroAt(index).Armor()->Name(), + HeroAt(index).Armor(), + HeroAt(index).Armor()->HasIkari() && HeroAt(index).Armor()->GetIkari()->Cost() <= HeroAt(index).IP(), + res->armorMenuIcon, + 0, + HeroAt(index).Armor()->HasIkari() ? HeroAt(index).Armor()->GetIkari()->Name() : ""); + } else { + ikariMenus[index].Add(res->noEquipmentText, 0, false, res->armorMenuIcon); + } + + if (HeroAt(index).HasShield()) { + ikariMenus[index].Add( + HeroAt(index).Shield()->Name(), + HeroAt(index).Shield(), + HeroAt(index).Shield()->HasIkari() && HeroAt(index).Shield()->GetIkari()->Cost() <= HeroAt(index).IP(), + res->shieldMenuIcon, + 0, + HeroAt(index).Shield()->HasIkari() ? HeroAt(index).Shield()->GetIkari()->Name() : ""); + } else { + ikariMenus[index].Add(res->noEquipmentText, 0, false, res->shieldMenuIcon); + } + + if (HeroAt(index).HasHelmet()) { + ikariMenus[index].Add( + HeroAt(index).Helmet()->Name(), + HeroAt(index).Helmet(), + HeroAt(index).Helmet()->HasIkari() && HeroAt(index).Helmet()->GetIkari()->Cost() <= HeroAt(index).IP(), + res->helmetMenuIcon, + 0, + HeroAt(index).Helmet()->HasIkari() ? HeroAt(index).Helmet()->GetIkari()->Name() : ""); + } else { + ikariMenus[index].Add(res->noEquipmentText, 0, false, res->helmetMenuIcon); + } + + if (HeroAt(index).HasRing()) { + ikariMenus[index].Add( + HeroAt(index).Ring()->Name(), + HeroAt(index).Ring(), + HeroAt(index).Ring()->HasIkari() && HeroAt(index).Ring()->GetIkari()->Cost() <= HeroAt(index).IP(), + res->ringMenuIcon, + 0, + HeroAt(index).Ring()->HasIkari() ? HeroAt(index).Ring()->GetIkari()->Name() : ""); + } else { + ikariMenus[index].Add(res->noEquipmentText, 0, false, res->ringMenuIcon); + } + + if (HeroAt(index).HasJewel()) { + ikariMenus[index].Add( + HeroAt(index).Jewel()->Name(), + HeroAt(index).Jewel(), + HeroAt(index).Jewel()->HasIkari() && HeroAt(index).Jewel()->GetIkari()->Cost() <= HeroAt(index).IP(), + res->jewelMenuIcon, + 0, + HeroAt(index).Jewel()->HasIkari() ? HeroAt(index).Jewel()->GetIkari()->Name() : ""); + } else { + ikariMenus[index].Add(res->noEquipmentText, 0, false, res->jewelMenuIcon); + } +} + void BattleState::LoadInventory() { const Inventory &inv(*res->inventory); itemMenu.Clear();