// Copyright (c) 2022 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "asset/AssetManager.hpp" #include "poker/PokerPlayer.hpp" #include "scene/components/Components.hpp" #include "visualnovel/components/VisualNovelCharacter.hpp" #include "display/animation/TiledSpriteAnimation.hpp" namespace Dawn { class VNPenny { public: static std::vector getAssets(AssetManager *assMan) { return std::vector{ assMan->get("texture_penny"), assMan->get("tileset_penny") }; } static SceneItem * create(Scene *scene) { auto item = scene->createSceneItem(); auto textureAsset = scene->game->assetManager.get("texture_penny"); auto tilesetAsset = scene->game->assetManager.get("tileset_penny"); auto meshRenderer = item->addComponent(); auto material = item->addComponent(); auto meshHost = item->addComponent(); auto tiledSprite = item->addComponent(); auto animation = item->addComponent(); auto pokerPlayer = item->addComponent(); auto vnCharacter = item->addComponent(); vnCharacter->nameKey = "character.penny.name"; auto param = material->getShader()->getParameterByName("u_Text"); material->textureValues[param] = &textureAsset->texture; tiledSprite->setTilesetAndSize(&tilesetAsset->tileset); auto anim = new TiledSpriteAnimation(tiledSprite); anim->addSequentialKeyframes(0.1f, 0, 22); anim->loop = true; animation->animation = anim; return item; } }; }