summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/windows/equipmentwindow.cpp109
-rw-r--r--src/gui/windows/equipmentwindow.h4
2 files changed, 19 insertions, 94 deletions
diff --git a/src/gui/windows/equipmentwindow.cpp b/src/gui/windows/equipmentwindow.cpp
index c5933b106..e37d623d6 100644
--- a/src/gui/windows/equipmentwindow.cpp
+++ b/src/gui/windows/equipmentwindow.cpp
@@ -45,6 +45,7 @@
#include "gui/widgets/playerbox.h"
#include "gui/widgets/tabstrip.h"
+#include "resources/equipmentslots.h"
#include "resources/imageset.h"
#include "resources/itemslot.h"
@@ -57,6 +58,7 @@
EquipmentWindow *equipmentWindow = nullptr;
EquipmentWindow *beingEquipmentWindow = nullptr;
static const int BOX_COUNT = 22;
+std::map<std::string, int> EquipmentWindow::mSlotNames;
EquipmentWindow::EquipmentWindow(Equipment *const equipment,
Being *const being,
@@ -644,104 +646,23 @@ void EquipmentWindow::loadSlot(const XmlNodePtr slotNode,
mMaxY = y + mBoxSize;
}
-int EquipmentWindow::parseSlotName(const std::string &name)
+void EquipmentWindow::prepareSlotNames()
{
- int id = -1;
- if (name == "shoes" || name == "boot"
- || name == "boots" || name == "slot4")
- {
- id = 4;
- }
- else if (name == "bottomclothes" || name == "bottom"
- || name == "pants" || name == "slot3")
- {
- id = 3;
- }
- else if (name == "topclothes" || name == "top"
- || name == "torso" || name == "body" || name == "slot0")
- {
- id = 0;
- }
- else if (name == "misc1" || name == "cape" || name == "slot5")
- {
- id = 5;
- }
- else if (name == "misc2" || name == "scarf"
- || name == "scarfs" || name == "slot7")
- {
- id = 7;
- }
- else if (name == "hat" || name == "hats" || name == "slot2")
- {
- id = 2;
- }
- else if (name == "wings" || name == "slot6")
- {
- id = 6;
- }
- else if (name == "glove" || name == "gloves" || name == "slot1")
- {
- id = 1;
- }
- else if (name == "weapon" || name == "weapons" || name == "slot8")
- {
- id = 8;
- }
- else if (name == "shield" || name == "shields" || name == "slot9")
- {
- id = 9;
- }
- else if (name == "amulet" || name == "amulets" || name == "slot11")
- {
- id = 11;
- }
- else if (name == "ring" || name == "rings" || name == "slot12")
+ const int sz = sizeof(equipmentSlots) / sizeof(EquipmentSlotMap);
+ mSlotNames.clear();
+ for (int f = 0; f < sz; f ++)
{
- id = 12;
- }
- else if (name == "arrow" || name == "arrows"
- || name == "ammo" || name == "slot10")
- {
- id = 10;
- }
- else if (name == "slot13")
- {
- id = 13;
- }
- else if (name == "slot14")
- {
- id = 14;
- }
- else if (name == "slot15")
- {
- id = 15;
- }
- else if (name == "slot16")
- {
- id = 16;
- }
- else if (name == "slot17")
- {
- id = 17;
- }
- else if (name == "slot18")
- {
- id = 18;
- }
- else if (name == "slot19")
- {
- id = 19;
- }
- else if (name == "slot20")
- {
- id = 20;
- }
- else if (name == "slot21")
- {
- id = 21;
+ const EquipmentSlotMap &slotMap = equipmentSlots[f];
+ mSlotNames[slotMap.name] = slotMap.id;
}
+}
- return id;
+int EquipmentWindow::parseSlotName(const std::string &name)
+{
+ std::map<std::string, int>::const_iterator it = mSlotNames.find(name);
+ if (it != mSlotNames.end())
+ return (*it).second;
+ return -1;
}
void EquipmentWindow::fillDefault()
diff --git a/src/gui/windows/equipmentwindow.h b/src/gui/windows/equipmentwindow.h
index 8c77b6d28..5295e20b5 100644
--- a/src/gui/windows/equipmentwindow.h
+++ b/src/gui/windows/equipmentwindow.h
@@ -94,6 +94,8 @@ class EquipmentWindow final : public Window,
void recalcSize();
+ static void prepareSlotNames();
+
private:
Item *getItem(const int x, const int y) const A_WARN_UNUSED;
@@ -123,6 +125,8 @@ class EquipmentWindow final : public Window,
static int parseSlotName(const std::string &name) A_WARN_UNUSED;
+ static std::map<std::string, int> mSlotNames;
+
Equipment *mEquipment;
PlayerBox *mPlayerBox;