]> git.localhorst.tv Git - l2e.git/blobdiff - src/menu/EquipMenu.cpp
converted equipment from explicit members to array
[l2e.git] / src / menu / EquipMenu.cpp
index bfc262430023643d5051c97a974103a2b799680f..df924b18a024ade156e66fdc6784c2184665b9df 100644 (file)
@@ -246,119 +246,40 @@ const Hero &EquipMenu::GetHero() const {
 
 void EquipMenu::LoadEquipment() {
        equipmentMenu.Clear();
-       if (GetHero().HasWeapon()) {
-               equipmentMenu.Add(GetHero().Weapon()->Name(), GetHero().Weapon(), true, GetHero().Weapon()->MenuIcon());
-       } else {
-               equipmentMenu.Add(parent->Res().noEquipmentText, 0, false);
-       }
-       if (GetHero().HasArmor()) {
-               equipmentMenu.Add(GetHero().Armor()->Name(), GetHero().Armor(), true, GetHero().Armor()->MenuIcon());
-       } else {
-               equipmentMenu.Add(parent->Res().noEquipmentText, 0, false);
-       }
-       if (GetHero().HasShield()) {
-               equipmentMenu.Add(GetHero().Shield()->Name(), GetHero().Shield(), true, GetHero().Shield()->MenuIcon());
-       } else {
-               equipmentMenu.Add(parent->Res().noEquipmentText, 0, false);
-       }
-       if (GetHero().HasHelmet()) {
-               equipmentMenu.Add(GetHero().Helmet()->Name(), GetHero().Helmet(), true, GetHero().Helmet()->MenuIcon());
-       } else {
-               equipmentMenu.Add(parent->Res().noEquipmentText, 0, false);
-       }
-       if (GetHero().HasRing()) {
-               equipmentMenu.Add(GetHero().Ring()->Name(), GetHero().Ring(), true, GetHero().Ring()->MenuIcon());
-       } else {
-               equipmentMenu.Add(parent->Res().noEquipmentText, 0, false);
-       }
-       if (GetHero().HasJewel()) {
-               equipmentMenu.Add(GetHero().Jewel()->Name(), GetHero().Jewel(), true, GetHero().Jewel()->MenuIcon());
-       } else {
-               equipmentMenu.Add(parent->Res().noEquipmentText, 0, false);
+       for (int i = 0; i < Hero::EQUIP_COUNT; ++i) {
+               if (GetHero().Equipped(Hero::EquipSlot(i))) {
+                       const Item *item(GetHero().Equipment(Hero::EquipSlot(i)));
+                       equipmentMenu.Add(item->Name(), item, true, item->MenuIcon());
+               } else {
+                       equipmentMenu.Add(parent->Res().noEquipmentText, 0, false);
+               }
        }
 }
 
 void EquipMenu::RemoveAllEquipment() {
        Inventory &inv(parent->Game().state->inventory);
-       if (GetHero().HasWeapon() && inv.Add(GetHero().Weapon(), 1)) {
-               GetHero().RemoveWeapon();
-       }
-       if (GetHero().HasArmor() && inv.Add(GetHero().Armor(), 1)) {
-               GetHero().RemoveArmor();
-       }
-       if (GetHero().HasShield() && inv.Add(GetHero().Shield(), 1)) {
-               GetHero().RemoveShield();
-       }
-       if (GetHero().HasHelmet() && inv.Add(GetHero().Helmet(), 1)) {
-               GetHero().RemoveHelmet();
-       }
-       if (GetHero().HasRing() && inv.Add(GetHero().Ring(), 1)) {
-               GetHero().RemoveRing();
-       }
-       if (GetHero().HasJewel() && inv.Add(GetHero().Jewel(), 1)) {
-               GetHero().RemoveJewel();
+       for (int i = 0; i < Hero::EQUIP_COUNT; ++i) {
+               if (GetHero().Equipped(Hero::EquipSlot(i))
+                               && inv.Add(GetHero().Equipment(Hero::EquipSlot(i)), 1)) {
+                       GetHero().RemoveEquipment(Hero::EquipSlot(i));
+               }
        }
        LoadEquipment();
 }
 
 void EquipMenu::RemoveItem() {
        Inventory &inv(parent->Game().state->inventory);
-       switch (equipmentMenu.SelectedIndex()) {
-               case 0:
-                       if (GetHero().HasWeapon() && inv.Add(GetHero().Weapon(), 1)) {
-                               GetHero().RemoveWeapon();
-                       }
-                       break;
-               case 1:
-                       if (GetHero().HasArmor() && inv.Add(GetHero().Armor(), 1)) {
-                               GetHero().RemoveArmor();
-                       }
-                       break;
-               case 2:
-                       if (GetHero().HasShield() && inv.Add(GetHero().Shield(), 1)) {
-                               GetHero().RemoveShield();
-                       }
-                       break;
-               case 3:
-                       if (GetHero().HasHelmet() && inv.Add(GetHero().Helmet(), 1)) {
-                               GetHero().RemoveHelmet();
-                       }
-                       break;
-               case 4:
-                       if (GetHero().HasRing() && inv.Add(GetHero().Ring(), 1)) {
-                               GetHero().RemoveRing();
-                       }
-                       break;
-               case 5:
-                       if (GetHero().HasJewel() && inv.Add(GetHero().Jewel(), 1)) {
-                               GetHero().RemoveJewel();
-                       }
-                       break;
+       Hero::EquipSlot slot = Hero::EquipSlot(equipmentMenu.SelectedIndex());
+
+       if (GetHero().Equipped(slot) && inv.Add(GetHero().Equipment(slot), 1)) {
+               GetHero().RemoveEquipment(slot);
        }
+
        LoadEquipment();
 }
 
 void EquipMenu::DropItem() {
-       switch (equipmentMenu.SelectedIndex()) {
-               case 0:
-                       GetHero().RemoveWeapon();
-                       break;
-               case 1:
-                       GetHero().RemoveArmor();
-                       break;
-               case 2:
-                       GetHero().RemoveShield();
-                       break;
-               case 3:
-                       GetHero().RemoveHelmet();
-                       break;
-               case 4:
-                       GetHero().RemoveRing();
-                       break;
-               case 5:
-                       GetHero().RemoveJewel();
-                       break;
-       }
+       GetHero().RemoveEquipment(Hero::EquipSlot(equipmentMenu.SelectedIndex()));
        LoadEquipment();
 }