diff --git a/GameObjectManager.cpp b/GameObjectManager.cpp index be3e023..7c111da 100644 --- a/GameObjectManager.cpp +++ b/GameObjectManager.cpp @@ -62,29 +62,26 @@ void GameObjectManager::initialize() { ao1.activeObjectScreenMesh = CreateRect2D({ 0.f, 0.f }, { 64.f, 64.f }, 0.5); ao1.activeObjectScreenMeshMutable.AssignFrom(ao1.activeObjectScreenMesh); ao1.activeObjectScreenMeshMutable.RefreshVBO(); - activeObjects.push_back(ao1); Room room_1; room_1.roomTexture = std::make_shared(CreateTextureDataFromBmp24("./Kitchen_ceramics.bmp")); -// room_1.objects = ao1; + room_1.objects.push_back(ao1); + room_1.sound_name = "file_example_OOG_5MG.ogg"; rooms.push_back(room_1); Room room_2; - room_2.roomTexture = std::make_shared(CreateTextureDataFromBmp24("./Kitchen_ceramics.bmp")); + room_2.roomTexture = std::make_shared(CreateTextureDataFromBmp24("./background.bmp")); + room_2.sound_name = "Symphony No.6 (1st movement).ogg"; rooms.push_back(room_2); - - std::cout << "Hello x5" << std::endl; - + activeObjects = rooms[current_room_index].objects; // Initialize audio audioPlayer = std::make_unique(); if (audioPlayer) { - audioPlayer->playMusic("Symphony No.6 (1st movement).ogg"); + audioPlayer->playMusic(rooms[current_room_index].sound_name); } - std::cout << "Hello x6" << std::endl; - // Initialize inventory inventoryIconMesh = CreateRect2D( {0.0f, 0.0f}, @@ -94,8 +91,6 @@ void GameObjectManager::initialize() { inventoryIconMeshMutable.AssignFrom(inventoryIconMesh); inventoryIconMeshMutable.RefreshVBO(); - std::cout << "Hello x7" << std::endl; - // Add test items to inventory auto testRoomTexture = std::make_shared(CreateTextureDataFromBmp24("./Kitchen_ceramics.bmp")); @@ -103,22 +98,31 @@ void GameObjectManager::initialize() { AddItemToInventory("RoomCeramics", testRoomTexture); AddItemToInventory("Cone", testConeTexture); - std::cout << "Hello x8" << std::endl; - roomTexturePtr = rooms[current_room_index].roomTexture; - std::cout << "Current room" << current_room_index << std::endl; } +void GameObjectManager::switch_room(int index){ + current_room_index = index; + + roomTexturePtr = rooms[current_room_index].roomTexture; + + if (audioPlayer) { + audioPlayer->stop(); + audioPlayer->playMusic(rooms[current_room_index].sound_name); + } + + activeObjects = rooms[current_room_index].objects; + + std::cout << "Current music" << rooms[current_room_index].sound_name << std::endl; +} + + void GameObjectManager::handleEvent(const SDL_Event& event) { // debug room switching if (event.type == SDL_MOUSEBUTTONDOWN && event.button.button == SDL_BUTTON_RIGHT) { - - current_room_index = 1; - std::cout << "Current room" << current_room_index << std::endl; - - + switch_room(1); } else if (event.type == SDL_MOUSEBUTTONDOWN) { bx.Interpolate(animationCounter); diff --git a/GameObjectManager.h b/GameObjectManager.h index 5ddd02b..44878e7 100644 --- a/GameObjectManager.h +++ b/GameObjectManager.h @@ -14,6 +14,8 @@ class GameObjectManager { public: void initialize(); + void switch_room(int index); + void handleEvent(const SDL_Event& event); void updateScene(size_t ms); void checkMouseIntersection(int mouseX, int mouseY, const Matrix4f& projectionModelView); // Добавляем новый метод diff --git a/Room.h b/Room.h index 65dad7d..e3db5b2 100644 --- a/Room.h +++ b/Room.h @@ -9,5 +9,6 @@ namespace ZL struct Room{ std::shared_ptr roomTexture; std::vector objects; + std::string sound_name; }; } diff --git a/sounds/file_example_OOG_5MG.ogg b/sounds/file_example_OOG_5MG.ogg new file mode 100644 index 0000000..2a9b95d Binary files /dev/null and b/sounds/file_example_OOG_5MG.ogg differ