removing object from map after adding to inventory
This commit is contained in:
parent
eb0bae44aa
commit
1e3be66495
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -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 {}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user