adding inventory

This commit is contained in:
maka70vv 2025-03-02 03:00:50 +06:00
parent a4aea4163a
commit eb0bae44aa
5 changed files with 24 additions and 11 deletions

View File

@ -5,6 +5,7 @@
namespace ZL {
struct ActiveObject {
std::string name;
std::shared_ptr<ZL::Texture> activeObjectTexturePtr;
ZL::VertexDataStruct activeObjectMesh;
ZL::VertexRenderStruct activeObjectMeshMutable;

View File

@ -52,6 +52,7 @@ void GameObjectManager::initialize() {
// Create active object
ActiveObject ao1;
ao1.name = "book";
ao1.activeObjectMesh = ZL::LoadFromTextFile("./book001.txt"); // Add ZL:: namespace
ao1.activeObjectMesh.Scale(4);
ao1.activeObjectMeshMutable.AssignFrom(ao1.activeObjectMesh);
@ -91,13 +92,6 @@ void GameObjectManager::initialize() {
inventoryIconMeshMutable.AssignFrom(inventoryIconMesh);
inventoryIconMeshMutable.RefreshVBO();
// Add test items to inventory
auto testRoomTexture = std::make_shared<Texture>(CreateTextureDataFromBmp24("./Kitchen_ceramics.bmp"));
auto testConeTexture = std::make_shared<Texture>(CreateTextureDataFromBmp24("./conus.bmp"));
AddItemToInventory("RoomCeramics", testRoomTexture);
AddItemToInventory("Cone", testConeTexture);
roomTexturePtr = rooms[current_room_index].roomTexture;
}
@ -127,8 +121,14 @@ void GameObjectManager::handleEvent(const SDL_Event& event) {
switch_room(1);
}
else if (event.type == SDL_MOUSEBUTTONDOWN) {
bx.Interpolate(animationCounter);
animationCounter += 2;
for (auto& ao : activeObjects) {
if (ao.highlighted){
AddItemToInventory(ao.name, ao.activeObjectTexturePtr);
PrintInventory();
}
}
// bx.Interpolate(animationCounter);
// animationCounter += 2;
}
else if (event.type == SDL_MOUSEWHEEL) {

View File

@ -11,7 +11,7 @@ namespace ZL
gInventory.push_back({ name, tex });
}
void RemoveItemFromInventory(const std::string& name)
void RemoveItemFromInventory(const std::string name)
{
gInventory.erase(
std::remove_if(gInventory.begin(), gInventory.end(),
@ -32,6 +32,15 @@ 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,6 +24,9 @@ namespace ZL
// Удалить предмет из инвентаря
void RemoveItemFromInventory(const std::string& name);
// todo check if object exists
bool HasObject(const std::string name);
// Вывести все предметы в инвентаре
void PrintInventory();

View File

@ -20,7 +20,7 @@ public:
private:
void drawWorld(const GameObjectManager& gameObjects);
void drawUI(const GameObjectManager& gameObjects);
Renderer renderer;
ShaderManager shaderManager;
Matrix4f currentProjectionModelView; // Добавлено для хранения матрицы между drawWorld и drawUI