removing object from map after adding to inventory

This commit is contained in:
maka70vv 2025-03-02 03:10:01 +06:00
parent eb0bae44aa
commit 1e3be66495
4 changed files with 10 additions and 17 deletions

View File

@ -121,12 +121,15 @@ void GameObjectManager::handleEvent(const SDL_Event& event) {
switch_room(1);
}
else if (event.type == SDL_MOUSEBUTTONDOWN) {
for (auto& ao : activeObjects) {
if (ao.highlighted){
AddItemToInventory(ao.name, ao.activeObjectTexturePtr);
PrintInventory();
}
for (size_t i = 0; i < activeObjects.size(); ++i) {
auto& ao = activeObjects[i];
if (ao.highlighted) {
AddItemToInventory(ao.name, ao.activeObjectTexturePtr);
activeObjects.erase(activeObjects.begin() + i);
// Можно выйти из цикла, если объект удален, чтобы избежать ошибок индексации.
break;
}
}
// bx.Interpolate(animationCounter);
// animationCounter += 2;
}

View File

@ -32,15 +32,6 @@ namespace ZL
}
}
bool HasObject(const std::string& name){
for (const auto& item : gInventory) {
if (item.name == name) {
return true;
}
}
return false;
}
const std::vector<InventoryItem>& ReturnInventory()
{
return gInventory;

View File

@ -24,9 +24,6 @@ namespace ZL
// Удалить предмет из инвентаря
void RemoveItemFromInventory(const std::string& name);
// todo check if object exists
bool HasObject(const std::string name);
// Вывести все предметы в инвентаре
void PrintInventory();

View File

@ -94,6 +94,7 @@ void RenderSystem::drawUI(const GameObjectManager& gameObjects) {
// Draw highlighted objects UI
for (const auto& ao : gameObjects.activeObjects) {
if (ao.highlighted) {
if (ao.activeObjectScreenTexturePtr){
int screenX, screenY;
worldToScreenCoordinates(ao.objectPos, currentProjectionModelView,
Environment::width, Environment::height, screenX, screenY);
@ -102,6 +103,7 @@ void RenderSystem::drawUI(const GameObjectManager& gameObjects) {
glBindTexture(GL_TEXTURE_2D, ao.activeObjectScreenTexturePtr->getTexID());
renderer.DrawVertexRenderStruct(ao.activeObjectScreenMeshMutable);
renderer.PopMatrix();
} else {}
}
}