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();
}