// // Created by hbenjamin on 15/06/2021. // #include #include "System/Movable/MovableSystem.hpp" #include #include #include #include #include "Component/Button/ButtonComponent.hpp" #include "Component/Renderer/CameraComponent.hpp" #include "Component/Renderer/Drawable2DComponent.hpp" #include "Runner.hpp" #include "Models/GameState.hpp" #include #include #include #include #include "System/Music/MusicSystem.hpp" #include "Component/Lobby/LobbyComponent.hpp" namespace RAY3D = RAY::Drawables::Drawables3D; namespace RAY2D = RAY::Drawables::Drawables2D; namespace BBM { std::shared_ptr Runner::loadResumeLobbyScene() { static const std::map sounds = { {SoundComponent::BOMB, "assets/sounds/click.ogg"} }; auto scene = std::make_shared(); addMenuControl(*scene); scene->addEntity("Control entity") .addComponent("assets/musics/music_player_select.ogg") .addComponent(sounds); scene->addEntity("background") .addComponent() .addComponent("assets/backgrounds/menu.png"); scene->addEntity("white background") .addComponent(200, 300, 0) .addComponent(Vector2f(), Vector2f(1525, 325), RAY::Color(WHITE).setA(150)); scene->addEntity("lobby text") .addComponent(1920 / 2.75, 100, 0) .addComponent("Get Ready", 120, RAY::Vector2(), ORANGE); auto &play = scene->addEntity("play button") .addComponent(1920 / 2.5, 1080 - 180, 0) .addComponent("assets/buttons/button_new_game.png") .addComponent([](WAL::Entity &entity, WAL::Wal &wal) { auto *texture = dynamic_cast(entity.getComponent().drawable.get()); texture->use("assets/buttons/button_new_game.png"); }) .addComponent([](WAL::Entity &entity, WAL::Wal &wal) { auto *texture = dynamic_cast(entity.getComponent().drawable.get()); texture->use("assets/buttons/button_new_game_hovered.png"); }) .addComponent([](WAL::Entity &entity, WAL::Wal &wal) { if (Runner::gameState.currentScene != GameState::ResumeLobbyScene || !ResumeLobbySystem::playersAreReady(*wal.getScene())) return; ResumeLobbySystem::resumeToGame(wal); }) .addComponent>(); auto &back = scene->addEntity("back to menu") .addComponent(10, 1080 - 85, 0) .addComponent("assets/buttons/button_back.png") .addComponent([](WAL::Entity &entity, WAL::Wal &wal) { wal.getSystem().unloadLobbyFromResume(); gameState.nextScene = BBM::GameState::SceneID::MainMenuScene; }) .addComponent([](WAL::Entity &entity, WAL::Wal &) { RAY::Texture *texture = dynamic_cast(entity.getComponent().drawable.get()); texture->use("assets/buttons/button_back.png"); }) .addComponent([](WAL::Entity &entity, WAL::Wal &) { RAY::Texture *texture = dynamic_cast(entity.getComponent().drawable.get()); texture->use("assets/buttons/button_back_hovered.png"); }); scene->addEntity("camera") .addComponent(8, 20, 7) .addComponent(Vector3f(8, 0, 8)); play.getComponent().setButtonLinks(nullptr, &back, &back); back.getComponent().setButtonLinks(&play, nullptr, nullptr, &play); return scene; } }