// Copyright (c) 2022 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "scene/Scene.hpp" #include "game/DawnGame.hpp" #include "util/array.hpp" #include "scene/components/Components.hpp" #include "ui/PokerGameTextbox.hpp" #include "visualnovel/VisualNovelManager.hpp" #include "visualnovel/events/VisualNovelTextboxEvent.hpp" #include "poker/PokerGame.hpp" #include "visualnovel/events/PokerBetLoopEvent.hpp" #include "visualnovel/events/PokerInitialEvent.hpp" #include "visualnovel/events/SimpleLoopEvent.hpp" #include "ui/PokerPlayerDisplay.hpp" namespace Dawn { class TestScene : public Scene { public: TestScene(DawnGame *game) : Scene(game) { } std::vector getRequiredAssets() override { auto assMan = &this->game->assetManager; std::vector assets; vectorAppend(&assets, &PokerGameTextbox::getAssets(assMan)); return assets; } void stage() override { // Camera auto camera = Camera::create(this); camera->transform->lookAt(glm::vec3(50, 50, 50), glm::vec3(0, 0, 0)); // UI auto canvas = UICanvas::createCanvas(this); auto textbox = PokerGameTextbox::create(canvas); // VN Manager auto vnManagerItem = this->createSceneItem(); auto vnManager = vnManagerItem->addComponent(); // Poker Test auto pokerGameItem = this->createSceneItem(); auto pokerGame = pokerGameItem->addComponent(); for(int32_t i = 0; i < 4; i++) { auto pokerPlayerInstance = this->createSceneItem(); auto pokerPlayer = pokerPlayerInstance->addComponent(); auto uiPlayer = canvas->addElement(); uiPlayer->setTransform(UI_COMPONENT_ALIGN_STRETCH, UI_COMPONENT_ALIGN_STRETCH, glm::vec4(0, 0, 0, 0), 0); uiPlayer->setPlayer(pokerPlayer); } auto betting = vnManager ->setEvent(new VisualNovelTextboxEvent(vnManager, "Starting Game")) ->then(new PokerNewGameEvent(vnManager)) ->then(new VisualNovelTextboxEvent(vnManager, "Game Started")) ->then(new PokerInitialEvent(vnManager)) ; } }; }