fixed inventory choosing
This commit is contained in:
parent
512e912471
commit
cfc96f645e
@ -269,7 +269,7 @@ void GameObjectManager::handleEvent(const SDL_Event& event) {
|
|||||||
{
|
{
|
||||||
|
|
||||||
UnselectAllItems();
|
UnselectAllItems();
|
||||||
if (InventoryItem* item = GetItemByHotkey(hot_key)) {
|
if (InventoryItem* item = GetItemByHotkey(event.key.keysym.sym - SDLK_1 + 1)) {
|
||||||
item->isSelected = true;
|
item->isSelected = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace ZL
|
namespace ZL
|
||||||
{
|
{
|
||||||
std::unordered_map<int, InventoryItem> gInventoryMap;
|
std::unordered_map<std::string, InventoryItem> gInventoryMap;
|
||||||
|
|
||||||
void AddItemToInventory(const std::string& name, std::shared_ptr<Texture> tex, int slot_index)
|
void AddItemToInventory(const std::string& name, std::shared_ptr<Texture> tex, int slot_index)
|
||||||
{
|
{
|
||||||
@ -16,27 +16,38 @@ namespace ZL
|
|||||||
item.hot_key = slot_index;
|
item.hot_key = slot_index;
|
||||||
item.scale = 1.0f;
|
item.scale = 1.0f;
|
||||||
|
|
||||||
gInventoryMap[slot_index] = item;
|
gInventoryMap[name] = item;
|
||||||
std::cout << "Added item to slot " << slot_index << std::endl;
|
std::cout << "Added item to slot " << slot_index << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveItemFromInventory(int slot_index)
|
void RemoveItemFromInventory(const std::string& name)
|
||||||
{
|
{
|
||||||
gInventoryMap.erase(slot_index);
|
// erase вернёт количество удалённых элементов, если нужно проверить
|
||||||
|
gInventoryMap.erase(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
InventoryItem* GetItemByIndex(int slot_index)
|
|
||||||
|
InventoryItem* GetItemByName(const std::string name)
|
||||||
{
|
{
|
||||||
auto it = gInventoryMap.find(slot_index);
|
// Пытаемся найти элемент по ключу
|
||||||
if (it != gInventoryMap.end()) {
|
auto it = gInventoryMap.find(name);
|
||||||
|
if (it != gInventoryMap.end())
|
||||||
|
{
|
||||||
|
// Возвращаем адрес найденного InventoryItem
|
||||||
return &it->second;
|
return &it->second;
|
||||||
}
|
}
|
||||||
|
// Если не нашли – nullptr
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
InventoryItem* GetItemByHotkey(int hotkey)
|
InventoryItem* GetItemByHotkey(int hotkey)
|
||||||
{
|
{
|
||||||
return GetItemByIndex(hotkey); // Now we can just use the index directly
|
for (auto& [_, item] : gInventoryMap) {
|
||||||
|
if (item.hot_key == hotkey) {
|
||||||
|
return &item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
InventoryItem* GetItemSelected(bool selected)
|
InventoryItem* GetItemSelected(bool selected)
|
||||||
@ -66,7 +77,7 @@ namespace ZL
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::unordered_map<int, InventoryItem>& ReturnInventory()
|
const std::unordered_map<std::string, InventoryItem>& ReturnInventory()
|
||||||
{
|
{
|
||||||
return gInventoryMap;
|
return gInventoryMap;
|
||||||
}
|
}
|
||||||
|
|||||||
10
Inventory.h
10
Inventory.h
@ -21,7 +21,7 @@ namespace ZL
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Глобальное хранилище предметов
|
// Глобальное хранилище предметов
|
||||||
extern std::unordered_map<int, InventoryItem> gInventoryMap; // Changed key type from string to int
|
extern std::unordered_map<std::string, InventoryItem> gInventoryMap; // Changed key type from string to int
|
||||||
|
|
||||||
// Добавить предмет в инвентарь
|
// Добавить предмет в инвентарь
|
||||||
void AddItemToInventory(const std::string& name, std::shared_ptr<Texture> tex, int slot_index);
|
void AddItemToInventory(const std::string& name, std::shared_ptr<Texture> tex, int slot_index);
|
||||||
@ -30,15 +30,15 @@ namespace ZL
|
|||||||
void RemoveItemFromInventory(int slot_index);
|
void RemoveItemFromInventory(int slot_index);
|
||||||
|
|
||||||
// Поиск предмета по индексу (возвращает указатель или nullptr)
|
// Поиск предмета по индексу (возвращает указатель или nullptr)
|
||||||
InventoryItem* GetItemByIndex(int slot_index);
|
InventoryItem* GetItemByHotkey(int hot_key);
|
||||||
|
InventoryItem* GetItemSelected(bool isSelected);
|
||||||
|
InventoryItem* GetItemByName(std::string name);
|
||||||
|
|
||||||
// Вывести весь инвентарь в консоль
|
// Вывести весь инвентарь в консоль
|
||||||
void PrintInventory();
|
void PrintInventory();
|
||||||
|
|
||||||
const std::unordered_map<int, InventoryItem>& ReturnInventory();
|
const std::unordered_map<std::string, InventoryItem>& ReturnInventory();
|
||||||
|
|
||||||
// Add these new functions
|
// Add these new functions
|
||||||
void UnselectAllItems();
|
void UnselectAllItems();
|
||||||
InventoryItem* GetItemByHotkey(int hotkey);
|
|
||||||
InventoryItem* GetItemSelected(bool isSelected);
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user