// 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 "visualnovel/events/VisualNovelPauseEvent.hpp" #include "visualnovel/events/VisualNovelFadeEvent.hpp" #include "visualnovel/events/VisualNovelChangeSimpleBackgroundEvent.hpp" #include "poker/PokerGame.hpp" #include "visualnovel/events/PokerBetLoopEvent.hpp" #include "visualnovel/events/PokerInitialEvent.hpp" #include "ui/PokerPlayerDisplay.hpp" #include "prefabs/VNPenny.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)); vectorAppend(&assets, &PokerPlayerDisplay::getAssets(assMan)); vectorAppend(&assets, &VNPenny::getAssets(assMan)); assets.push_back(assMan->get("texture_tavern_night")); return assets; } void stage() override { // Camera auto camera = Camera::create(this); camera->transform->lookAtPixelPerfect( glm::vec3(0, 0, 0), glm::vec3(0, 0, 0), 1.0f, camera->fov ); // UI auto canvas = UICanvas::createCanvas(this); auto textbox = PokerGameTextbox::create(canvas); auto background = SimpleVisualNovelBackground::create(this); // 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 < 5; i++) { auto player = VNPenny::create(this); auto uiPlayer = canvas->addElement(); uiPlayer->setTransform(UI_COMPONENT_ALIGN_START, UI_COMPONENT_ALIGN_START, glm::vec4(i * 220, 0, 220, 200), 0); uiPlayer->setPlayer(player->getComponent()); } auto vnFader = VisualNovelFader::create(canvas); auto texture = this->game->assetManager.get("texture_tavern_night"); auto betting = vnManager ->setEvent(new VisualNovelChangeSimpleBackgroundEvent( vnManager, &texture->texture )) ->then(new VisualNovelPauseEvent(vnManager, 1.0f)) ->then(new VisualNovelFadeEvent( vnManager, COLOR_BLACK, false, &easeOutCubic, 1.0f )) ->then(new VisualNovelTextboxEvent(vnManager, "Starting Game")) ->then(new PokerNewGameEvent(vnManager)) ->then(new VisualNovelTextboxEvent(vnManager, "Game Started")) ->then(new PokerInitialEvent(vnManager)) ; } }; }