]> git.localhorst.tv Git - l2e.git/blobdiff - src/battle/BattleState.cpp
moved spell and ikari menu initialization to Hero
[l2e.git] / src / battle / BattleState.cpp
index b7017c98824246b1251d8431d7223ea31e98055b..65bdb9180b56e86dbff54a64a5f21f356f06f4e7 100644 (file)
@@ -75,9 +75,9 @@ void BattleState::EnterState(Application &ctrl, SDL_Surface *screen) {
        heroesLayout->CalculatePositions(background->w, background->h, heroesPositions);
        for (int i(0); i < 4; ++i) {
                heroes[i].SpellMenu() = res->spellMenuPrototype;
-               LoadSpellMenu(i);
+               heroes[i].UpdateSpellMenu();
                heroes[i].IkariMenu() = res->ikariMenuPrototype;
-               LoadIkariMenu(i);
+               heroes[i].UpdateIkariMenu(res);
                heroTags[i] = HeroTag(this, i);
                smallHeroTags[i] = SmallHeroTag(this, i);
        }
@@ -103,94 +103,6 @@ void BattleState::EnterState(Application &ctrl, SDL_Surface *screen) {
        LoadInventory();
 }
 
-void BattleState::LoadSpellMenu(vector<Hero>::size_type index) {
-       assert(index >= 0 && index < 4);
-       heroes[index].SpellMenu().Clear();
-       heroes[index].SpellMenu().Reserve(HeroAt(index).Spells().size());
-       for (vector<const Spell *>::const_iterator i(HeroAt(index).Spells().begin()), end(HeroAt(index).Spells().end()); i != end; ++i) {
-               bool enabled((*i)->CanUseInBattle() && (*i)->Cost() <= HeroAt(index).Mana());
-               heroes[index].SpellMenu().Add((*i)->Name(), *i, enabled, 0, (*i)->Cost());
-       }
-}
-
-void BattleState::LoadIkariMenu(vector<Hero>::size_type index) {
-       assert(index >= 0 && index < 4);
-       heroes[index].IkariMenu().Clear();
-       heroes[index].IkariMenu().Reserve(6);
-
-       if (HeroAt(index).HasWeapon()) {
-               heroes[index].IkariMenu().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 {
-               heroes[index].IkariMenu().Add(res->noEquipmentText, 0, false, res->weaponMenuIcon);
-       }
-
-       if (HeroAt(index).HasArmor()) {
-               heroes[index].IkariMenu().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 {
-               heroes[index].IkariMenu().Add(res->noEquipmentText, 0, false, res->armorMenuIcon);
-       }
-
-       if (HeroAt(index).HasShield()) {
-               heroes[index].IkariMenu().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 {
-               heroes[index].IkariMenu().Add(res->noEquipmentText, 0, false, res->shieldMenuIcon);
-       }
-
-       if (HeroAt(index).HasHelmet()) {
-               heroes[index].IkariMenu().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 {
-               heroes[index].IkariMenu().Add(res->noEquipmentText, 0, false, res->helmetMenuIcon);
-       }
-
-       if (HeroAt(index).HasRing()) {
-               heroes[index].IkariMenu().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 {
-               heroes[index].IkariMenu().Add(res->noEquipmentText, 0, false, res->ringMenuIcon);
-       }
-
-       if (HeroAt(index).HasJewel()) {
-               heroes[index].IkariMenu().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 {
-               heroes[index].IkariMenu().Add(res->noEquipmentText, 0, false, res->jewelMenuIcon);
-       }
-}
-
 void BattleState::LoadInventory() {
        const Inventory &inv(*res->inventory);
        itemMenu.Clear();