From 1c21c152614b582724873baf611623a4f1e6101f Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Tue, 18 Apr 2023 09:55:11 -0700 Subject: [PATCH 1/9] Starting new VN Structure --- .../visualnovel/CMakeLists.txt | 0 .../visualnovel/VisualNovelManager.cpp | 0 .../visualnovel/VisualNovelManager.hpp | 0 .../visualnovel/components/CMakeLists.txt | 0 .../SimpleVisualNovelBackground.cpp | 0 .../SimpleVisualNovelBackground.hpp | 0 .../components/VisualNovelCharacter.cpp | 0 .../components/VisualNovelCharacter.hpp | 0 .../visualnovel/events/CMakeLists.txt | 0 .../events/VisualNovelCallbackEvent.hpp | 0 ...VisualNovelChangeSimpleBackgroundEvent.cpp | 0 ...VisualNovelChangeSimpleBackgroundEvent.hpp | 0 .../events/VisualNovelEmptyEvent.cpp | 0 .../events/VisualNovelEmptyEvent.hpp | 0 .../events/VisualNovelFadeEvent.cpp | 0 .../events/VisualNovelFadeEvent.hpp | 0 .../events/VisualNovelTextboxEvent.cpp | 0 .../events/VisualNovelTextboxEvent.hpp | 0 .../events/animation/CMakeLists.txt | 0 .../animation/VisualNovelAnimationEvent.cpp | 0 .../animation/VisualNovelAnimationEvent.hpp | 0 .../VisualNovelSimpleAnimationEvent.hpp | 0 ...isualNovelSimpleCallbackAnimationEvent.hpp | 0 .../events/characters/CMakeLists.txt | 0 .../VisualNovelFadeCharacterEvent.cpp | 0 .../VisualNovelFadeCharacterEvent.hpp | 0 .../VisualNovelTransformItemEvent.cpp | 0 .../VisualNovelTransformItemEvent.hpp | 0 .../visualnovel/events/timing/CMakeLists.txt | 0 .../events/timing/VisualNovelBatchEvent.cpp | 0 .../events/timing/VisualNovelBatchEvent.hpp | 0 .../events/timing/VisualNovelPauseEvent.cpp | 0 .../events/timing/VisualNovelPauseEvent.hpp | 0 .../visualnovel/scene/CMakeLists.txt | 0 .../visualnovel/scene/SimpleVNScene.cpp | 0 .../visualnovel/scene/SimpleVNScene.hpp | 0 .../visualnovel/ui/CMakeLists.txt | 0 .../visualnovel/ui/VisualNovelFader.cpp | 0 .../visualnovel/ui/VisualNovelFader.hpp | 0 .../visualnovel/ui/VisualNovelTextbox.cpp | 0 .../visualnovel/ui/VisualNovelTextbox.hpp | 0 assets/games/liminal/example-scene.xml | 101 ++++++++++++++++++ .../CMakeLists.txt | 10 ++ src/dawn/games/CMakeLists.txt | 4 +- src/dawn/games/vn/CMakeLists.txt | 8 ++ src/dawn/games/vn/components/CMakeLists.txt | 10 ++ src/dawn/games/vn/components/VNManager.cpp | 36 +++++++ src/dawn/games/vn/components/VNManager.hpp | 60 +++++++++++ src/dawn/games/vn/events/CMakeLists.txt | 10 ++ src/dawn/games/vn/events/VNDummyEvent.hpp | 17 +++ src/dawn/games/vn/events/VNEvent.cpp | 38 +++++++ src/dawn/games/vn/events/VNEvent.hpp | 79 ++++++++++++++ src/dawn/prefabs/SimpleSpinningCubePrefab.hpp | 4 +- src/dawn/state/State.hpp | 56 ++++++---- src/dawnliminal/CMakeLists.txt | 17 +++ src/dawnliminal/game/CMakeLists.txt | 10 ++ src/dawnliminal/game/LiminalGame.cpp | 13 +++ src/dawnliminal/input/InputBinds.hpp | 19 ++++ src/dawnliminal/save/CMakeLists.txt | 10 ++ src/dawnliminal/save/LiminalSave.cpp | 12 +++ src/dawnliminal/scenes/HelloWorldScene.hpp | 48 +++++++++ src/dawnrose/scene/components/HurtHazard.cpp | 2 - .../components/entity/EntityInteractable.cpp | 17 +++ .../components/entity/EntityInteractable.hpp | 20 ++++ .../components/entity/EntityInteractor.cpp | 27 +++++ .../components/entity/EntityInteractor.hpp | 21 ++++ src/dawntools/CMakeLists.txt | 3 +- src/dawntools/vnscenetool/CMakeLists.txt | 63 +++++++++++ .../vnscenetool/VNSceneEventsParser.cpp | 42 ++++++++ .../vnscenetool/VNSceneEventsParser.hpp | 26 +++++ src/dawntools/vnscenetool/VNSceneParser.cpp | 44 ++++++++ src/dawntools/vnscenetool/VNSceneParser.hpp | 25 +++++ src/dawntools/vnscenetool/VNSceneTool.cpp | 43 ++++++++ src/dawntools/vnscenetool/VNSceneTool.hpp | 20 ++++ .../vnscenetool/events/CMakeLists.txt | 10 ++ .../vnscenetool/events/VNPositionParser.cpp | 25 +++++ .../vnscenetool/events/VNPositionParser.hpp | 6 ++ 77 files changed, 929 insertions(+), 27 deletions(-) rename {src/dawn/games => archive}/visualnovel/CMakeLists.txt (100%) rename {src/dawn/games => archive}/visualnovel/VisualNovelManager.cpp (100%) rename {src/dawn/games => archive}/visualnovel/VisualNovelManager.hpp (100%) rename {src/dawn/games => archive}/visualnovel/components/CMakeLists.txt (100%) rename {src/dawn/games => archive}/visualnovel/components/SimpleVisualNovelBackground.cpp (100%) rename {src/dawn/games => archive}/visualnovel/components/SimpleVisualNovelBackground.hpp (100%) rename {src/dawn/games => archive}/visualnovel/components/VisualNovelCharacter.cpp (100%) rename {src/dawn/games => archive}/visualnovel/components/VisualNovelCharacter.hpp (100%) rename {src/dawn/games => archive}/visualnovel/events/CMakeLists.txt (100%) rename {src/dawn/games => archive}/visualnovel/events/VisualNovelCallbackEvent.hpp (100%) rename {src/dawn/games => archive}/visualnovel/events/VisualNovelChangeSimpleBackgroundEvent.cpp (100%) rename {src/dawn/games => archive}/visualnovel/events/VisualNovelChangeSimpleBackgroundEvent.hpp (100%) rename {src/dawn/games => archive}/visualnovel/events/VisualNovelEmptyEvent.cpp (100%) rename {src/dawn/games => archive}/visualnovel/events/VisualNovelEmptyEvent.hpp (100%) rename {src/dawn/games => archive}/visualnovel/events/VisualNovelFadeEvent.cpp (100%) rename {src/dawn/games => archive}/visualnovel/events/VisualNovelFadeEvent.hpp (100%) rename {src/dawn/games => archive}/visualnovel/events/VisualNovelTextboxEvent.cpp (100%) rename {src/dawn/games => archive}/visualnovel/events/VisualNovelTextboxEvent.hpp (100%) rename {src/dawn/games => archive}/visualnovel/events/animation/CMakeLists.txt (100%) rename {src/dawn/games => archive}/visualnovel/events/animation/VisualNovelAnimationEvent.cpp (100%) rename {src/dawn/games => archive}/visualnovel/events/animation/VisualNovelAnimationEvent.hpp (100%) rename {src/dawn/games => archive}/visualnovel/events/animation/VisualNovelSimpleAnimationEvent.hpp (100%) rename {src/dawn/games => archive}/visualnovel/events/animation/VisualNovelSimpleCallbackAnimationEvent.hpp (100%) rename {src/dawn/games => archive}/visualnovel/events/characters/CMakeLists.txt (100%) rename {src/dawn/games => archive}/visualnovel/events/characters/VisualNovelFadeCharacterEvent.cpp (100%) rename {src/dawn/games => archive}/visualnovel/events/characters/VisualNovelFadeCharacterEvent.hpp (100%) rename {src/dawn/games => archive}/visualnovel/events/characters/VisualNovelTransformItemEvent.cpp (100%) rename {src/dawn/games => archive}/visualnovel/events/characters/VisualNovelTransformItemEvent.hpp (100%) rename {src/dawn/games => archive}/visualnovel/events/timing/CMakeLists.txt (100%) rename {src/dawn/games => archive}/visualnovel/events/timing/VisualNovelBatchEvent.cpp (100%) rename {src/dawn/games => archive}/visualnovel/events/timing/VisualNovelBatchEvent.hpp (100%) rename {src/dawn/games => archive}/visualnovel/events/timing/VisualNovelPauseEvent.cpp (100%) rename {src/dawn/games => archive}/visualnovel/events/timing/VisualNovelPauseEvent.hpp (100%) rename {src/dawn/games => archive}/visualnovel/scene/CMakeLists.txt (100%) rename {src/dawn/games => archive}/visualnovel/scene/SimpleVNScene.cpp (100%) rename {src/dawn/games => archive}/visualnovel/scene/SimpleVNScene.hpp (100%) rename {src/dawn/games => archive}/visualnovel/ui/CMakeLists.txt (100%) rename {src/dawn/games => archive}/visualnovel/ui/VisualNovelFader.cpp (100%) rename {src/dawn/games => archive}/visualnovel/ui/VisualNovelFader.hpp (100%) rename {src/dawn/games => archive}/visualnovel/ui/VisualNovelTextbox.cpp (100%) rename {src/dawn/games => archive}/visualnovel/ui/VisualNovelTextbox.hpp (100%) create mode 100644 assets/games/liminal/example-scene.xml create mode 100644 cmake/targets/target-liminal-linux64-glfw/CMakeLists.txt create mode 100644 src/dawn/games/vn/CMakeLists.txt create mode 100644 src/dawn/games/vn/components/CMakeLists.txt create mode 100644 src/dawn/games/vn/components/VNManager.cpp create mode 100644 src/dawn/games/vn/components/VNManager.hpp create mode 100644 src/dawn/games/vn/events/CMakeLists.txt create mode 100644 src/dawn/games/vn/events/VNDummyEvent.hpp create mode 100644 src/dawn/games/vn/events/VNEvent.cpp create mode 100644 src/dawn/games/vn/events/VNEvent.hpp create mode 100644 src/dawnliminal/CMakeLists.txt create mode 100644 src/dawnliminal/game/CMakeLists.txt create mode 100644 src/dawnliminal/game/LiminalGame.cpp create mode 100644 src/dawnliminal/input/InputBinds.hpp create mode 100644 src/dawnliminal/save/CMakeLists.txt create mode 100644 src/dawnliminal/save/LiminalSave.cpp create mode 100644 src/dawnliminal/scenes/HelloWorldScene.hpp create mode 100644 src/dawnrose/scene/components/entity/EntityInteractable.cpp create mode 100644 src/dawnrose/scene/components/entity/EntityInteractable.hpp create mode 100644 src/dawnrose/scene/components/entity/EntityInteractor.cpp create mode 100644 src/dawnrose/scene/components/entity/EntityInteractor.hpp create mode 100644 src/dawntools/vnscenetool/CMakeLists.txt create mode 100644 src/dawntools/vnscenetool/VNSceneEventsParser.cpp create mode 100644 src/dawntools/vnscenetool/VNSceneEventsParser.hpp create mode 100644 src/dawntools/vnscenetool/VNSceneParser.cpp create mode 100644 src/dawntools/vnscenetool/VNSceneParser.hpp create mode 100644 src/dawntools/vnscenetool/VNSceneTool.cpp create mode 100644 src/dawntools/vnscenetool/VNSceneTool.hpp create mode 100644 src/dawntools/vnscenetool/events/CMakeLists.txt create mode 100644 src/dawntools/vnscenetool/events/VNPositionParser.cpp create mode 100644 src/dawntools/vnscenetool/events/VNPositionParser.hpp diff --git a/src/dawn/games/visualnovel/CMakeLists.txt b/archive/visualnovel/CMakeLists.txt similarity index 100% rename from src/dawn/games/visualnovel/CMakeLists.txt rename to archive/visualnovel/CMakeLists.txt diff --git a/src/dawn/games/visualnovel/VisualNovelManager.cpp b/archive/visualnovel/VisualNovelManager.cpp similarity index 100% rename from src/dawn/games/visualnovel/VisualNovelManager.cpp rename to archive/visualnovel/VisualNovelManager.cpp diff --git a/src/dawn/games/visualnovel/VisualNovelManager.hpp b/archive/visualnovel/VisualNovelManager.hpp similarity index 100% rename from src/dawn/games/visualnovel/VisualNovelManager.hpp rename to archive/visualnovel/VisualNovelManager.hpp diff --git a/src/dawn/games/visualnovel/components/CMakeLists.txt b/archive/visualnovel/components/CMakeLists.txt similarity index 100% rename from src/dawn/games/visualnovel/components/CMakeLists.txt rename to archive/visualnovel/components/CMakeLists.txt diff --git a/src/dawn/games/visualnovel/components/SimpleVisualNovelBackground.cpp b/archive/visualnovel/components/SimpleVisualNovelBackground.cpp similarity index 100% rename from src/dawn/games/visualnovel/components/SimpleVisualNovelBackground.cpp rename to archive/visualnovel/components/SimpleVisualNovelBackground.cpp diff --git a/src/dawn/games/visualnovel/components/SimpleVisualNovelBackground.hpp b/archive/visualnovel/components/SimpleVisualNovelBackground.hpp similarity index 100% rename from src/dawn/games/visualnovel/components/SimpleVisualNovelBackground.hpp rename to archive/visualnovel/components/SimpleVisualNovelBackground.hpp diff --git a/src/dawn/games/visualnovel/components/VisualNovelCharacter.cpp b/archive/visualnovel/components/VisualNovelCharacter.cpp similarity index 100% rename from src/dawn/games/visualnovel/components/VisualNovelCharacter.cpp rename to archive/visualnovel/components/VisualNovelCharacter.cpp diff --git a/src/dawn/games/visualnovel/components/VisualNovelCharacter.hpp b/archive/visualnovel/components/VisualNovelCharacter.hpp similarity index 100% rename from src/dawn/games/visualnovel/components/VisualNovelCharacter.hpp rename to archive/visualnovel/components/VisualNovelCharacter.hpp diff --git a/src/dawn/games/visualnovel/events/CMakeLists.txt b/archive/visualnovel/events/CMakeLists.txt similarity index 100% rename from src/dawn/games/visualnovel/events/CMakeLists.txt rename to archive/visualnovel/events/CMakeLists.txt diff --git a/src/dawn/games/visualnovel/events/VisualNovelCallbackEvent.hpp b/archive/visualnovel/events/VisualNovelCallbackEvent.hpp similarity index 100% rename from src/dawn/games/visualnovel/events/VisualNovelCallbackEvent.hpp rename to archive/visualnovel/events/VisualNovelCallbackEvent.hpp diff --git a/src/dawn/games/visualnovel/events/VisualNovelChangeSimpleBackgroundEvent.cpp b/archive/visualnovel/events/VisualNovelChangeSimpleBackgroundEvent.cpp similarity index 100% rename from src/dawn/games/visualnovel/events/VisualNovelChangeSimpleBackgroundEvent.cpp rename to archive/visualnovel/events/VisualNovelChangeSimpleBackgroundEvent.cpp diff --git a/src/dawn/games/visualnovel/events/VisualNovelChangeSimpleBackgroundEvent.hpp b/archive/visualnovel/events/VisualNovelChangeSimpleBackgroundEvent.hpp similarity index 100% rename from src/dawn/games/visualnovel/events/VisualNovelChangeSimpleBackgroundEvent.hpp rename to archive/visualnovel/events/VisualNovelChangeSimpleBackgroundEvent.hpp diff --git a/src/dawn/games/visualnovel/events/VisualNovelEmptyEvent.cpp b/archive/visualnovel/events/VisualNovelEmptyEvent.cpp similarity index 100% rename from src/dawn/games/visualnovel/events/VisualNovelEmptyEvent.cpp rename to archive/visualnovel/events/VisualNovelEmptyEvent.cpp diff --git a/src/dawn/games/visualnovel/events/VisualNovelEmptyEvent.hpp b/archive/visualnovel/events/VisualNovelEmptyEvent.hpp similarity index 100% rename from src/dawn/games/visualnovel/events/VisualNovelEmptyEvent.hpp rename to archive/visualnovel/events/VisualNovelEmptyEvent.hpp diff --git a/src/dawn/games/visualnovel/events/VisualNovelFadeEvent.cpp b/archive/visualnovel/events/VisualNovelFadeEvent.cpp similarity index 100% rename from src/dawn/games/visualnovel/events/VisualNovelFadeEvent.cpp rename to archive/visualnovel/events/VisualNovelFadeEvent.cpp diff --git a/src/dawn/games/visualnovel/events/VisualNovelFadeEvent.hpp b/archive/visualnovel/events/VisualNovelFadeEvent.hpp similarity index 100% rename from src/dawn/games/visualnovel/events/VisualNovelFadeEvent.hpp rename to archive/visualnovel/events/VisualNovelFadeEvent.hpp diff --git a/src/dawn/games/visualnovel/events/VisualNovelTextboxEvent.cpp b/archive/visualnovel/events/VisualNovelTextboxEvent.cpp similarity index 100% rename from src/dawn/games/visualnovel/events/VisualNovelTextboxEvent.cpp rename to archive/visualnovel/events/VisualNovelTextboxEvent.cpp diff --git a/src/dawn/games/visualnovel/events/VisualNovelTextboxEvent.hpp b/archive/visualnovel/events/VisualNovelTextboxEvent.hpp similarity index 100% rename from src/dawn/games/visualnovel/events/VisualNovelTextboxEvent.hpp rename to archive/visualnovel/events/VisualNovelTextboxEvent.hpp diff --git a/src/dawn/games/visualnovel/events/animation/CMakeLists.txt b/archive/visualnovel/events/animation/CMakeLists.txt similarity index 100% rename from src/dawn/games/visualnovel/events/animation/CMakeLists.txt rename to archive/visualnovel/events/animation/CMakeLists.txt diff --git a/src/dawn/games/visualnovel/events/animation/VisualNovelAnimationEvent.cpp b/archive/visualnovel/events/animation/VisualNovelAnimationEvent.cpp similarity index 100% rename from src/dawn/games/visualnovel/events/animation/VisualNovelAnimationEvent.cpp rename to archive/visualnovel/events/animation/VisualNovelAnimationEvent.cpp diff --git a/src/dawn/games/visualnovel/events/animation/VisualNovelAnimationEvent.hpp b/archive/visualnovel/events/animation/VisualNovelAnimationEvent.hpp similarity index 100% rename from src/dawn/games/visualnovel/events/animation/VisualNovelAnimationEvent.hpp rename to archive/visualnovel/events/animation/VisualNovelAnimationEvent.hpp diff --git a/src/dawn/games/visualnovel/events/animation/VisualNovelSimpleAnimationEvent.hpp b/archive/visualnovel/events/animation/VisualNovelSimpleAnimationEvent.hpp similarity index 100% rename from src/dawn/games/visualnovel/events/animation/VisualNovelSimpleAnimationEvent.hpp rename to archive/visualnovel/events/animation/VisualNovelSimpleAnimationEvent.hpp diff --git a/src/dawn/games/visualnovel/events/animation/VisualNovelSimpleCallbackAnimationEvent.hpp b/archive/visualnovel/events/animation/VisualNovelSimpleCallbackAnimationEvent.hpp similarity index 100% rename from src/dawn/games/visualnovel/events/animation/VisualNovelSimpleCallbackAnimationEvent.hpp rename to archive/visualnovel/events/animation/VisualNovelSimpleCallbackAnimationEvent.hpp diff --git a/src/dawn/games/visualnovel/events/characters/CMakeLists.txt b/archive/visualnovel/events/characters/CMakeLists.txt similarity index 100% rename from src/dawn/games/visualnovel/events/characters/CMakeLists.txt rename to archive/visualnovel/events/characters/CMakeLists.txt diff --git a/src/dawn/games/visualnovel/events/characters/VisualNovelFadeCharacterEvent.cpp b/archive/visualnovel/events/characters/VisualNovelFadeCharacterEvent.cpp similarity index 100% rename from src/dawn/games/visualnovel/events/characters/VisualNovelFadeCharacterEvent.cpp rename to archive/visualnovel/events/characters/VisualNovelFadeCharacterEvent.cpp diff --git a/src/dawn/games/visualnovel/events/characters/VisualNovelFadeCharacterEvent.hpp b/archive/visualnovel/events/characters/VisualNovelFadeCharacterEvent.hpp similarity index 100% rename from src/dawn/games/visualnovel/events/characters/VisualNovelFadeCharacterEvent.hpp rename to archive/visualnovel/events/characters/VisualNovelFadeCharacterEvent.hpp diff --git a/src/dawn/games/visualnovel/events/characters/VisualNovelTransformItemEvent.cpp b/archive/visualnovel/events/characters/VisualNovelTransformItemEvent.cpp similarity index 100% rename from src/dawn/games/visualnovel/events/characters/VisualNovelTransformItemEvent.cpp rename to archive/visualnovel/events/characters/VisualNovelTransformItemEvent.cpp diff --git a/src/dawn/games/visualnovel/events/characters/VisualNovelTransformItemEvent.hpp b/archive/visualnovel/events/characters/VisualNovelTransformItemEvent.hpp similarity index 100% rename from src/dawn/games/visualnovel/events/characters/VisualNovelTransformItemEvent.hpp rename to archive/visualnovel/events/characters/VisualNovelTransformItemEvent.hpp diff --git a/src/dawn/games/visualnovel/events/timing/CMakeLists.txt b/archive/visualnovel/events/timing/CMakeLists.txt similarity index 100% rename from src/dawn/games/visualnovel/events/timing/CMakeLists.txt rename to archive/visualnovel/events/timing/CMakeLists.txt diff --git a/src/dawn/games/visualnovel/events/timing/VisualNovelBatchEvent.cpp b/archive/visualnovel/events/timing/VisualNovelBatchEvent.cpp similarity index 100% rename from src/dawn/games/visualnovel/events/timing/VisualNovelBatchEvent.cpp rename to archive/visualnovel/events/timing/VisualNovelBatchEvent.cpp diff --git a/src/dawn/games/visualnovel/events/timing/VisualNovelBatchEvent.hpp b/archive/visualnovel/events/timing/VisualNovelBatchEvent.hpp similarity index 100% rename from src/dawn/games/visualnovel/events/timing/VisualNovelBatchEvent.hpp rename to archive/visualnovel/events/timing/VisualNovelBatchEvent.hpp diff --git a/src/dawn/games/visualnovel/events/timing/VisualNovelPauseEvent.cpp b/archive/visualnovel/events/timing/VisualNovelPauseEvent.cpp similarity index 100% rename from src/dawn/games/visualnovel/events/timing/VisualNovelPauseEvent.cpp rename to archive/visualnovel/events/timing/VisualNovelPauseEvent.cpp diff --git a/src/dawn/games/visualnovel/events/timing/VisualNovelPauseEvent.hpp b/archive/visualnovel/events/timing/VisualNovelPauseEvent.hpp similarity index 100% rename from src/dawn/games/visualnovel/events/timing/VisualNovelPauseEvent.hpp rename to archive/visualnovel/events/timing/VisualNovelPauseEvent.hpp diff --git a/src/dawn/games/visualnovel/scene/CMakeLists.txt b/archive/visualnovel/scene/CMakeLists.txt similarity index 100% rename from src/dawn/games/visualnovel/scene/CMakeLists.txt rename to archive/visualnovel/scene/CMakeLists.txt diff --git a/src/dawn/games/visualnovel/scene/SimpleVNScene.cpp b/archive/visualnovel/scene/SimpleVNScene.cpp similarity index 100% rename from src/dawn/games/visualnovel/scene/SimpleVNScene.cpp rename to archive/visualnovel/scene/SimpleVNScene.cpp diff --git a/src/dawn/games/visualnovel/scene/SimpleVNScene.hpp b/archive/visualnovel/scene/SimpleVNScene.hpp similarity index 100% rename from src/dawn/games/visualnovel/scene/SimpleVNScene.hpp rename to archive/visualnovel/scene/SimpleVNScene.hpp diff --git a/src/dawn/games/visualnovel/ui/CMakeLists.txt b/archive/visualnovel/ui/CMakeLists.txt similarity index 100% rename from src/dawn/games/visualnovel/ui/CMakeLists.txt rename to archive/visualnovel/ui/CMakeLists.txt diff --git a/src/dawn/games/visualnovel/ui/VisualNovelFader.cpp b/archive/visualnovel/ui/VisualNovelFader.cpp similarity index 100% rename from src/dawn/games/visualnovel/ui/VisualNovelFader.cpp rename to archive/visualnovel/ui/VisualNovelFader.cpp diff --git a/src/dawn/games/visualnovel/ui/VisualNovelFader.hpp b/archive/visualnovel/ui/VisualNovelFader.hpp similarity index 100% rename from src/dawn/games/visualnovel/ui/VisualNovelFader.hpp rename to archive/visualnovel/ui/VisualNovelFader.hpp diff --git a/src/dawn/games/visualnovel/ui/VisualNovelTextbox.cpp b/archive/visualnovel/ui/VisualNovelTextbox.cpp similarity index 100% rename from src/dawn/games/visualnovel/ui/VisualNovelTextbox.cpp rename to archive/visualnovel/ui/VisualNovelTextbox.cpp diff --git a/src/dawn/games/visualnovel/ui/VisualNovelTextbox.hpp b/archive/visualnovel/ui/VisualNovelTextbox.hpp similarity index 100% rename from src/dawn/games/visualnovel/ui/VisualNovelTextbox.hpp rename to archive/visualnovel/ui/VisualNovelTextbox.hpp diff --git a/assets/games/liminal/example-scene.xml b/assets/games/liminal/example-scene.xml new file mode 100644 index 00000000..b1c198d8 --- /dev/null +++ b/assets/games/liminal/example-scene.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + Hi, I'm Ethereality. + + + + + + Hi, I'm Craig. + + + + + + + + + + + + + + + + + <string lang="en">Do you think Craig is cool?</string> + + + Yes + + + No + + + Maybe + + + + + + + Are you unsure? + + + + + + + I agree, Craig is cool. + + + + + I disagree, Craig is cool. + + + + + + + + + + + + + \ No newline at end of file diff --git a/cmake/targets/target-liminal-linux64-glfw/CMakeLists.txt b/cmake/targets/target-liminal-linux64-glfw/CMakeLists.txt new file mode 100644 index 00000000..559b577e --- /dev/null +++ b/cmake/targets/target-liminal-linux64-glfw/CMakeLists.txt @@ -0,0 +1,10 @@ +# Copyright (c) 2023 Dominic Masters +# +# This software is released under the MIT License. +# https://opensource.org/licenses/MIT + +set(DAWN_BUILDING dawnliminal CACHE INTERNAL ${DAWN_CACHE_TARGET}) +set(DAWN_TARGET_LINUX64 true CACHE INTERNAL ${DAWN_CACHE_TARGET}) +set(DAWN_TARGET_GLFW true CACHE INTERNAL ${DAWN_CACHE_TARGET}) +set(DAWN_TARGET_NAME "Liminal" CACHE INTERNAL ${DAWN_CACHE_TARGET}) +set(DAWN_VISUAL_NOVEL true CACHE INTERNAL ${DAWN_CACHE_TARGET}) \ No newline at end of file diff --git a/src/dawn/games/CMakeLists.txt b/src/dawn/games/CMakeLists.txt index d3f4878f..302c92e9 100644 --- a/src/dawn/games/CMakeLists.txt +++ b/src/dawn/games/CMakeLists.txt @@ -4,9 +4,9 @@ # https://opensource.org/licenses/MIT # Subdirs -add_subdirectory(poker) +# add_subdirectory(poker) add_subdirectory(tictactoe) if(DAWN_VISUAL_NOVEL) - add_subdirectory(visualnovel) + add_subdirectory(vn) endif() \ No newline at end of file diff --git a/src/dawn/games/vn/CMakeLists.txt b/src/dawn/games/vn/CMakeLists.txt new file mode 100644 index 00000000..87a903f2 --- /dev/null +++ b/src/dawn/games/vn/CMakeLists.txt @@ -0,0 +1,8 @@ +# Copyright (c) 2023 Dominic Masters +# +# This software is released under the MIT License. +# https://opensource.org/licenses/MIT + +# Subdirs +add_subdirectory(components) +add_subdirectory(events) \ No newline at end of file diff --git a/src/dawn/games/vn/components/CMakeLists.txt b/src/dawn/games/vn/components/CMakeLists.txt new file mode 100644 index 00000000..582b4b69 --- /dev/null +++ b/src/dawn/games/vn/components/CMakeLists.txt @@ -0,0 +1,10 @@ +# Copyright (c) 2023 Dominic Masters +# +# This software is released under the MIT License. +# https://opensource.org/licenses/MIT + +# Sources +target_sources(${DAWN_TARGET_NAME} + PRIVATE + VNManager.cpp +) \ No newline at end of file diff --git a/src/dawn/games/vn/components/VNManager.cpp b/src/dawn/games/vn/components/VNManager.cpp new file mode 100644 index 00000000..9f6a655f --- /dev/null +++ b/src/dawn/games/vn/components/VNManager.cpp @@ -0,0 +1,36 @@ +// Copyright (c) 2022 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "VNManager.hpp" +#include "games/vn/events/VNEvent.hpp" + +using namespace Dawn; + +VNManager::VNManager(SceneItem *item) : + SceneItemComponent(item) +{ +} + +void VNManager::onStart() { + if(this->currentEvent != nullptr) { + this->currentEvent->start(nullptr); + } +} + +void VNManager::setEvent(VNEvent *event) { + this->currentEvent = event; +} + +void VNManager::nextEvent() { + if(this->currentEvent == nullptr) return; + auto old = this->currentEvent; + old->end(); + this->currentEvent = old->getNextEvent(); + if(this->currentEvent != nullptr) this->currentEvent->start(old); +} + +void VNManager::onDispose() { + +} \ No newline at end of file diff --git a/src/dawn/games/vn/components/VNManager.hpp b/src/dawn/games/vn/components/VNManager.hpp new file mode 100644 index 00000000..8f999ffb --- /dev/null +++ b/src/dawn/games/vn/components/VNManager.hpp @@ -0,0 +1,60 @@ +// Copyright (c) 2022 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "scene/SceneItemComponent.hpp" + +namespace Dawn { + class VNEvent; + + class VNManager : public SceneItemComponent { + protected: + std::vector events; + VNEvent *currentEvent = nullptr; + + public: + /** + * Constructs a visual novel manager, scene item component. + * + * @param item Item that the VN manager belongs to. + */ + VNManager(SceneItem *item); + + /** + * Creats an event for you to decide how to queue. + */ + template + T * createEvent() { + auto event = new T(); + event->init(this); + this->events.push_back(event); + return event; + } + + /** + * Sets the currently active visual novel event. This is assumed to be + * the only way to handle events (no multiples currently). + * + * @param event Event to set. + */ + void setEvent(VNEvent *event); + + void nextEvent(); + + // template + // T * setEvent(T *event) { + // auto oldCurrent = this->currentEvent; + // this->currentEvent = event; + // if(this->hasInitialized && event != nullptr) event->start(oldCurrent); + // delete oldCurrent; + // return event; + // } + + void onStart() override; + void onDispose() override; + + friend class VNEvent; + }; +} \ No newline at end of file diff --git a/src/dawn/games/vn/events/CMakeLists.txt b/src/dawn/games/vn/events/CMakeLists.txt new file mode 100644 index 00000000..e80f467c --- /dev/null +++ b/src/dawn/games/vn/events/CMakeLists.txt @@ -0,0 +1,10 @@ +# Copyright (c) 2023 Dominic Masters +# +# This software is released under the MIT License. +# https://opensource.org/licenses/MIT + +# Sources +target_sources(${DAWN_TARGET_NAME} + PRIVATE + VNEvent.cpp +) \ No newline at end of file diff --git a/src/dawn/games/vn/events/VNDummyEvent.hpp b/src/dawn/games/vn/events/VNDummyEvent.hpp new file mode 100644 index 00000000..9a525be1 --- /dev/null +++ b/src/dawn/games/vn/events/VNDummyEvent.hpp @@ -0,0 +1,17 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "VNEvent.hpp" + +namespace Dawn { + class VNDummyEvent : public VNEvent { + protected: + void onStart() override { + std::cout << "Test" << std::endl; + this->next(); + } + }; +} \ No newline at end of file diff --git a/src/dawn/games/vn/events/VNEvent.cpp b/src/dawn/games/vn/events/VNEvent.cpp new file mode 100644 index 00000000..9212b795 --- /dev/null +++ b/src/dawn/games/vn/events/VNEvent.cpp @@ -0,0 +1,38 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "VNEvent.hpp" + +using namespace Dawn; + +void VNEvent::init(VNManager *manager) { + this->manager = manager; +} + +void VNEvent::start(VNEvent *previous) { + this->onStart(); +} + +Scene * VNEvent::getScene() { + return this->manager->getScene(); +} + +VNEvent * VNEvent::getNextEvent() { + return this->doNext; +} + +void VNEvent::next() { + assertNotNull(this->manager); + assertTrue(this->manager->currentEvent == this); + this->manager->nextEvent(); +} + +void VNEvent::end() { + this->unsubscribeAllEvents(); + this->onEnd(); +} + +void VNEvent::onStart() {} +void VNEvent::onEnd() {} \ No newline at end of file diff --git a/src/dawn/games/vn/events/VNEvent.hpp b/src/dawn/games/vn/events/VNEvent.hpp new file mode 100644 index 00000000..6dd4ae3e --- /dev/null +++ b/src/dawn/games/vn/events/VNEvent.hpp @@ -0,0 +1,79 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "games/vn/components/VNManager.hpp" + +namespace Dawn { + class VNEvent : public StateOwner { + protected: + VNManager *manager = nullptr; + VNEvent *doNext = nullptr; + VNEvent *previous = nullptr; + + /** + * Initializes the event. This is called by the VNManager, and should not + * be called by anything else. + * @param manager The VNManager that is running this event. + */ + void init(VNManager *manager); + + /** + * Invoked by the VNManager, this is the start of the event. + * @param previous The previous event that was running before this one. + */ + void start(VNEvent *previous); + + /** + * Invoked by the VNManager, this is the end of the event. Perform the + * necessary cleanup, but remember that events may be re-started again + * later. + */ + void end(); + + /** + * Overrideable method that is called when the event is started. + */ + virtual void onStart(); + + /** + * Overrideable method that is called when the event is ended. + */ + virtual void onEnd(); + + public: + /** + * Returns the scene this event is running in. + * @return Pointer to the scene. + */ + Scene * getScene(); + + /** + * End this event and move on to the next event. + */ + void next(); + + /** + * Returns the next event to be executed after this one. Can be overridden + * to return a different event other than the doNext event. + * @return Pointer to the next event. + */ + virtual VNEvent * getNextEvent(); + + /** + * Chains an event to be executed after this event has finished. + * + * @param next Event to process next. + * @return Whatever you pass in to next. + */ + template + T * then(T *next) { + this->doNext = next; + return next; + } + + friend class VNManager; + }; +} \ No newline at end of file diff --git a/src/dawn/prefabs/SimpleSpinningCubePrefab.hpp b/src/dawn/prefabs/SimpleSpinningCubePrefab.hpp index 888a2fdc..cfb41cb3 100644 --- a/src/dawn/prefabs/SimpleSpinningCubePrefab.hpp +++ b/src/dawn/prefabs/SimpleSpinningCubePrefab.hpp @@ -6,8 +6,8 @@ #pragma once #include "prefab/SceneItemPrefab.hpp" #include "display/mesh/CubeMesh.hpp" -#include "scene/components/display/MeshRenderer.hpp" -#include "scene/components/display/CubeMeshHost.hpp" +#include "scene/components/display/mesh/MeshRenderer.hpp" +#include "scene/components/display/mesh/CubeMeshHost.hpp" #include "scene/components/display/material/SimpleTexturedMaterial.hpp" #include "scene/components/example/ExampleSpin.hpp" #include "scene/components/physics/3d/CubeCollider.hpp" diff --git a/src/dawn/state/State.hpp b/src/dawn/state/State.hpp index 757156c3..281873c2 100644 --- a/src/dawn/state/State.hpp +++ b/src/dawn/state/State.hpp @@ -44,6 +44,36 @@ namespace Dawn { private: std::vector eventsSubscribed; std::vector eventLegacyBridge; + + protected: + /** + * Removes all currently subscribed effects and events. + */ + void unsubscribeAllEvents() { + auto providers = this->_stateProviderListeners; + auto itProvider = providers.begin(); + while(itProvider != providers.end()) { + (*itProvider)(); + ++itProvider; + } + + auto it = this->eventsSubscribed.begin(); + while(it != this->eventsSubscribed.end()) { + (*it)->_stateOwnerDestroyed(this); + ++it; + } + + auto itBridge = this->eventLegacyBridge.begin(); + while(itBridge != this->eventLegacyBridge.end()) { + (*itBridge)->removeListener(); + delete *itBridge; + ++itBridge; + } + + this->_stateProviderListeners.clear(); + this->eventsSubscribed.clear(); + this->eventLegacyBridge.clear(); + } public: std::vector> _stateProviderListeners; @@ -123,7 +153,11 @@ namespace Dawn { auto itProp = props.begin(); while(itProp != props.end()) { auto property = *itProp; - if(property->owner == nullptr) { property->owner = this; } else { assertTrue(property->owner == this); } + if(property->owner == nullptr) { + property->owner = this; + } else { + assertTrue(property->owner == this); + } property->_effectListners.push_back(fn); ++itProp; } @@ -230,25 +264,7 @@ namespace Dawn { * useEffects or useEvents. */ virtual ~StateOwner() { - auto providers = this->_stateProviderListeners; - auto itProvider = providers.begin(); - while(itProvider != providers.end()) { - (*itProvider)(); - ++itProvider; - } - - auto it = this->eventsSubscribed.begin(); - while(it != this->eventsSubscribed.end()) { - (*it)->_stateOwnerDestroyed(this); - ++it; - } - - auto itBridge = this->eventLegacyBridge.begin(); - while(itBridge != this->eventLegacyBridge.end()) { - (*itBridge)->removeListener(); - delete *itBridge; - ++itBridge; - } + this->unsubscribeAllEvents(); } }; } \ No newline at end of file diff --git a/src/dawnliminal/CMakeLists.txt b/src/dawnliminal/CMakeLists.txt new file mode 100644 index 00000000..8de667f3 --- /dev/null +++ b/src/dawnliminal/CMakeLists.txt @@ -0,0 +1,17 @@ +# Copyright (c) 2023 Dominic Masters +# +# This software is released under the MIT License. +# https://opensource.org/licenses/MIT + +# Build Project +add_executable(${DAWN_TARGET_NAME}) + +# Includes +target_include_directories(${DAWN_TARGET_NAME} + PUBLIC + ${CMAKE_CURRENT_LIST_DIR} +) + +# Subdirs +add_subdirectory(game) +add_subdirectory(save) \ No newline at end of file diff --git a/src/dawnliminal/game/CMakeLists.txt b/src/dawnliminal/game/CMakeLists.txt new file mode 100644 index 00000000..6ab23ef2 --- /dev/null +++ b/src/dawnliminal/game/CMakeLists.txt @@ -0,0 +1,10 @@ +# Copyright (c) 2023 Dominic Masters +# +# This software is released under the MIT License. +# https://opensource.org/licenses/MIT + +# Sources +target_sources(${DAWN_TARGET_NAME} + PRIVATE + LiminalGame.cpp +) \ No newline at end of file diff --git a/src/dawnliminal/game/LiminalGame.cpp b/src/dawnliminal/game/LiminalGame.cpp new file mode 100644 index 00000000..105be5d3 --- /dev/null +++ b/src/dawnliminal/game/LiminalGame.cpp @@ -0,0 +1,13 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "game/DawnGame.hpp" +#include "scenes/HelloWorldScene.hpp" + +using namespace Dawn; + +Scene * Dawn::dawnGameGetInitialScene(DawnGame *game) { + return new HelloWorldScene(game); +} \ No newline at end of file diff --git a/src/dawnliminal/input/InputBinds.hpp b/src/dawnliminal/input/InputBinds.hpp new file mode 100644 index 00000000..32fc1016 --- /dev/null +++ b/src/dawnliminal/input/InputBinds.hpp @@ -0,0 +1,19 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "input/InputManager.hpp" + +#define INPUT_BIND(n) ((inputbind_t)n) + +#define INPUT_BIND_ACCEPT INPUT_BIND(1) +#define INPUT_BIND_NEGATIVE_X INPUT_BIND(2) +#define INPUT_BIND_POSITIVE_X INPUT_BIND(3) +#define INPUT_BIND_NEGATIVE_Y INPUT_BIND(4) +#define INPUT_BIND_POSITIVE_Y INPUT_BIND(5) +#define INPUT_BIND_MOUSE_X INPUT_BIND(6) +#define INPUT_BIND_MOUSE_Y INPUT_BIND(7) +#define INPUT_BIND_MOUSE_CLICK INPUT_BIND(8) +#define INPUT_BIND_CANCEL INPUT_BIND(9) \ No newline at end of file diff --git a/src/dawnliminal/save/CMakeLists.txt b/src/dawnliminal/save/CMakeLists.txt new file mode 100644 index 00000000..97158e97 --- /dev/null +++ b/src/dawnliminal/save/CMakeLists.txt @@ -0,0 +1,10 @@ +# Copyright (c) 2023 Dominic Masters +# +# This software is released under the MIT License. +# https://opensource.org/licenses/MIT + +# Sources +target_sources(${DAWN_TARGET_NAME} + PRIVATE + LiminalSave.cpp +) \ No newline at end of file diff --git a/src/dawnliminal/save/LiminalSave.cpp b/src/dawnliminal/save/LiminalSave.cpp new file mode 100644 index 00000000..3c029bd4 --- /dev/null +++ b/src/dawnliminal/save/LiminalSave.cpp @@ -0,0 +1,12 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "save/SaveManager.hpp" + +using namespace Dawn; + +bool_t Dawn::saveValidateFile(struct SaveFile raw) { + return false; +} \ No newline at end of file diff --git a/src/dawnliminal/scenes/HelloWorldScene.hpp b/src/dawnliminal/scenes/HelloWorldScene.hpp new file mode 100644 index 00000000..8629fddd --- /dev/null +++ b/src/dawnliminal/scenes/HelloWorldScene.hpp @@ -0,0 +1,48 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "scene/Scene.hpp" +#include "scene/components/display/Camera.hpp" +#include "prefabs/SimpleSpinningCubePrefab.hpp" +#include "games/vn/components/VNManager.hpp" +#include "games/vn/events/VNDummyEvent.hpp" + +namespace Dawn { + class HelloWorldScene : public Scene { + protected: + Camera *camera; + UICanvas *canvas; + + void stage() override { + canvas = UICanvas::create(this); + + camera = Camera::create(this); + camera->fov = 0.436332f; + camera->transform->lookAt(glm::vec3(10, 10, 10), glm::vec3(0, 0, 0)); + + auto cube = SimpleSpinningCubePrefab::create(this); + + auto vnItem = this->createSceneItem(); + auto vnManager = vnItem->addComponent(); + + auto eventTest = vnManager->createEvent(); + eventTest + ->then(vnManager->createEvent()) + ->then(vnManager->createEvent()) + ; + vnManager->setEvent(eventTest); + } + + std::vector getRequiredAssets() override { + auto assMan = &this->game->assetManager; + std::vector assets; + return assets; + } + + public: + HelloWorldScene(DawnGame *game) : Scene(game) {} + }; +} \ No newline at end of file diff --git a/src/dawnrose/scene/components/HurtHazard.cpp b/src/dawnrose/scene/components/HurtHazard.cpp index 05cd6ebe..bd4c6a1d 100644 --- a/src/dawnrose/scene/components/HurtHazard.cpp +++ b/src/dawnrose/scene/components/HurtHazard.cpp @@ -40,8 +40,6 @@ void HurtHazard::onStart() { otherHealth->damage({ .amount = damage }); - - std::cout << "Trigger" << std::endl; }, this->trigger->eventTriggerEnter); }, this->trigger)(); } \ No newline at end of file diff --git a/src/dawnrose/scene/components/entity/EntityInteractable.cpp b/src/dawnrose/scene/components/entity/EntityInteractable.cpp new file mode 100644 index 00000000..e52dec04 --- /dev/null +++ b/src/dawnrose/scene/components/entity/EntityInteractable.cpp @@ -0,0 +1,17 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "EntityInteractable.hpp" + +using namespace Dawn; + +EntityInteractable::EntityInteractable(SceneItem* item) : SceneItemComponent(item) { + +} + + +void EntityInteractable::interact() { + std::cout << "Interact!" << std::endl; +} \ No newline at end of file diff --git a/src/dawnrose/scene/components/entity/EntityInteractable.hpp b/src/dawnrose/scene/components/entity/EntityInteractable.hpp new file mode 100644 index 00000000..bb8fef80 --- /dev/null +++ b/src/dawnrose/scene/components/entity/EntityInteractable.hpp @@ -0,0 +1,20 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "scene/SceneItemComponent.hpp" +#include "scene/components/physics/2d/TriggerController2D.hpp" + +namespace Dawn { + class EntityInteractable : public SceneItemComponent { + public: + EntityInteractable(SceneItem *item); + + /** + * Called when one entity interacts with this entity. + */ + void interact(); + }; +} \ No newline at end of file diff --git a/src/dawnrose/scene/components/entity/EntityInteractor.cpp b/src/dawnrose/scene/components/entity/EntityInteractor.cpp new file mode 100644 index 00000000..2e675c2d --- /dev/null +++ b/src/dawnrose/scene/components/entity/EntityInteractor.cpp @@ -0,0 +1,27 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "EntityInteractor.hpp" + +using namespace Dawn; + +EntityInteractor::EntityInteractor(SceneItem* item) : + trigger(nullptr), + SceneItemComponent(item) +{ +} + +void EntityInteractor::onStart() { + this->evtTriggerEnter = [&]{}; + + useEffect([&]{ + this->evtTriggerEnter(); + if(this->trigger == nullptr) return; + + this->evtTriggerEnter = useEvent([&](EntityInteractable *interactable) { + interactable->interact(); + }, this->trigger->eventTriggerEnter); + }, this->trigger)(); +} diff --git a/src/dawnrose/scene/components/entity/EntityInteractor.hpp b/src/dawnrose/scene/components/entity/EntityInteractor.hpp new file mode 100644 index 00000000..05e1abe7 --- /dev/null +++ b/src/dawnrose/scene/components/entity/EntityInteractor.hpp @@ -0,0 +1,21 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "EntityInteractable.hpp" + +namespace Dawn { + class EntityInteractor : public SceneItemComponent { + private: + std::function evtTriggerEnter; + + public: + // @optional + StateProperty trigger; + + EntityInteractor(SceneItem* item); + void onStart() override; + }; +} \ No newline at end of file diff --git a/src/dawntools/CMakeLists.txt b/src/dawntools/CMakeLists.txt index 0cec211a..e915ff6b 100644 --- a/src/dawntools/CMakeLists.txt +++ b/src/dawntools/CMakeLists.txt @@ -20,4 +20,5 @@ include(util/CMakeLists.txt) # Tools add_subdirectory(prefabtool) -add_subdirectory(texturetool) \ No newline at end of file +add_subdirectory(texturetool) +# add_subdirectory(vnscenetool) \ No newline at end of file diff --git a/src/dawntools/vnscenetool/CMakeLists.txt b/src/dawntools/vnscenetool/CMakeLists.txt new file mode 100644 index 00000000..83b8fefd --- /dev/null +++ b/src/dawntools/vnscenetool/CMakeLists.txt @@ -0,0 +1,63 @@ +# Copyright (c) 2023 Dominic Msters +# +# This software is released under the MIT License. +# https://opensource.org/licenses/MIT + +# Texture Build Tool +project(vnscenetool VERSION 1.0) +add_executable(vnscenetool) + +# Subdirs +add_subdirectory(events) + +# Sources +target_sources(vnscenetool + PRIVATE + ${DAWN_SHARED_SOURCES} + ${DAWN_TOOL_SOURCES} + VNSceneTool.cpp + VNSceneParser.cpp + VNSceneEventsParser.cpp +) + +# Includes +target_include_directories(vnscenetool + PUBLIC + ${DAWN_SHARED_INCLUDES} + ${DAWN_TOOL_INCLUDES} + ${CMAKE_CURRENT_LIST_DIR} +) + +# Definitions +target_compile_definitions(vnscenetool + PUBLIC + ${DAWN_SHARED_DEFINITIONS} + DAWN_TOOL_INSTANCE=VNSceneTool + DAWN_TOOL_HEADER="VNSceneTool.hpp" +) + +# Libraries +target_link_libraries(vnscenetool + PUBLIC + ${DAWN_BUILD_HOST_LIBS} +) + +# Tool Function +function(tool_vnscene in) + set(DEPS "") + if(DAWN_BUILD_TOOLS) + set(DEPS vnscenetool) + endif() + + STRING(REGEX REPLACE "[\.|\\|\/]" "-" prefab_name ${in}) + add_custom_target(prefab_${prefab_name} + COMMAND vnscenetool --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" + COMMENT "Generating prefab from ${in}" + DEPENDS ${DEPS} + ) + target_include_directories(${DAWN_TARGET_NAME} + PUBLIC + ${DAWN_GENERATED_DIR}/generatedprefabs + ) + add_dependencies(${DAWN_TARGET_NAME} prefab_${prefab_name}) +endfunction() \ No newline at end of file diff --git a/src/dawntools/vnscenetool/VNSceneEventsParser.cpp b/src/dawntools/vnscenetool/VNSceneEventsParser.cpp new file mode 100644 index 00000000..281a0a6e --- /dev/null +++ b/src/dawntools/vnscenetool/VNSceneEventsParser.cpp @@ -0,0 +1,42 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "VNSceneEventsParser.hpp" + +using namespace Dawn; + +std::vector VNSceneEventsParser::getRequiredAttributes() { + return { }; +} + +std::map VNSceneEventsParser::getOptionalAttributes() { + return { }; +} + +int32_t VNSceneEventsParser::onParse( + Xml *node, + std::map values, + struct VNSceneEvent *out, + std::string *error +) { + int32_t ret; + + auto itChildren = node->children.begin(); + while(itChildren != node->children.end()) { + Xml *child = *itChildren; + + // Parse event(s) + if(child->node == "position") { + struct VNPosition position; + ret = (VNPositionParser()).parse(child, &position, error); + if(ret != 0) return ret; + out->position = position; + } + + itChildren++; + } + + return 0; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/VNSceneEventsParser.hpp b/src/dawntools/vnscenetool/VNSceneEventsParser.hpp new file mode 100644 index 00000000..7c35cc6c --- /dev/null +++ b/src/dawntools/vnscenetool/VNSceneEventsParser.hpp @@ -0,0 +1,26 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "util/XmlParser.hpp" +#include "events/VNPositionParser.hpp" + +namespace Dawn { + struct VNSceneEvent { + int32_t bruh; + }; + + class VNSceneEventsParser : public XmlParser { + protected: + std::vector getRequiredAttributes() override; + std::map getOptionalAttributes() override; + int32_t onParse( + Xml *node, + std::map values, + struct VNSceneEvent *out, + std::string *error + ) override; + }; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/VNSceneParser.cpp b/src/dawntools/vnscenetool/VNSceneParser.cpp new file mode 100644 index 00000000..16c901ca --- /dev/null +++ b/src/dawntools/vnscenetool/VNSceneParser.cpp @@ -0,0 +1,44 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "VNSceneParser.hpp" + +using namespace Dawn; + +std::vector VNSceneParser::getRequiredAttributes() { + return { }; +} + +std::map VNSceneParser::getOptionalAttributes() { + return { }; +} + +int32_t VNSceneParser::onParse( + Xml *node, + std::map values, + struct VNScene *out, + std::string *error +) { + // + int32_t ret; + + auto itChildren = node->children.begin(); + while(itChildren != node->children.end()) { + Xml *child = *itChildren; + + // Parse event(s) + if(child->node == "events") { + struct VNSceneEvent scene; + ret = (VNSceneEventsParser()).parse(child, &scene, error); + if(ret != 0) return ret; + out->events.push_back(scene); + } + + + itChildren++; + } + + return 0; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/VNSceneParser.hpp b/src/dawntools/vnscenetool/VNSceneParser.hpp new file mode 100644 index 00000000..e4140ac3 --- /dev/null +++ b/src/dawntools/vnscenetool/VNSceneParser.hpp @@ -0,0 +1,25 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "VNSceneEventsParser.hpp" + +namespace Dawn { + struct VNScene { + std::vector events; + }; + + class VNSceneParser : public XmlParser { + protected: + std::vector getRequiredAttributes() override; + std::map getOptionalAttributes() override; + int32_t onParse( + Xml *node, + std::map values, + struct VNScene *out, + std::string *error + ) override; + }; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/VNSceneTool.cpp b/src/dawntools/vnscenetool/VNSceneTool.cpp new file mode 100644 index 00000000..79f9a69b --- /dev/null +++ b/src/dawntools/vnscenetool/VNSceneTool.cpp @@ -0,0 +1,43 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "VNSceneTool.hpp" + +using namespace Dawn; + +std::vector VNSceneTool::getRequiredFlags() { + return { "input" }; +} + +std::map VNSceneTool::getOptionalFlags() { + return std::map(); +} + +int32_t VNSceneTool::start() { + File input = File(flags["input"]); + if(!input.exists()) { + std::cout << "Input file does not exist!" << std::endl; + return 1; + } + + std::string data; + if(!input.readString(&data)) { + std::cout << "Failed to read input file!" << std::endl; + return 1; + } + + auto xml = Xml::load(data); + std::string error; + struct VNScene scene; + auto result = ((VNSceneParser()).parse(&xml, &scene, &error)); + if(result != 0) { + std::cout << "Failed to parse scene: " << error << std::endl; + return result; + } + + // Generate output + + return 0; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/VNSceneTool.hpp b/src/dawntools/vnscenetool/VNSceneTool.hpp new file mode 100644 index 00000000..b6da5ec1 --- /dev/null +++ b/src/dawntools/vnscenetool/VNSceneTool.hpp @@ -0,0 +1,20 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "util/DawnTool.hpp" +#include "VNSceneParser.hpp" +#include "util/File.hpp" + +namespace Dawn { + class VNSceneTool : public DawnTool { + protected: + std::vector getRequiredFlags() override; + std::map getOptionalFlags() override; + + public: + int32_t start(); + }; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/events/CMakeLists.txt b/src/dawntools/vnscenetool/events/CMakeLists.txt new file mode 100644 index 00000000..825fa31d --- /dev/null +++ b/src/dawntools/vnscenetool/events/CMakeLists.txt @@ -0,0 +1,10 @@ +# Copyright (c) 2023 Dominic Masters +# +# This software is released under the MIT License. +# https://opensource.org/licenses/MIT + +# Sources +target_sources(vnscenetool + PRIVATE + VNPositionParser.cpp +) \ No newline at end of file diff --git a/src/dawntools/vnscenetool/events/VNPositionParser.cpp b/src/dawntools/vnscenetool/events/VNPositionParser.cpp new file mode 100644 index 00000000..380abc39 --- /dev/null +++ b/src/dawntools/vnscenetool/events/VNPositionParser.cpp @@ -0,0 +1,25 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "VNPositionParser.hpp" + +using namespace Dawn; + +std::vector VNPositionParser::getRequiredAttributes() { + return { }; +} + +std::map VNPositionParser::getOptionalAttributes() { + return { }; +} + +int32_t VNPositionParser::onParse( + Xml *node, + std::map values, + struct VNPosition *out, + std::string *error +) { + return 0; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/events/VNPositionParser.hpp b/src/dawntools/vnscenetool/events/VNPositionParser.hpp new file mode 100644 index 00000000..55bff476 --- /dev/null +++ b/src/dawntools/vnscenetool/events/VNPositionParser.hpp @@ -0,0 +1,6 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once From 36119645d5360da0a3b24657e2baf8d8f5438367 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Thu, 20 Apr 2023 14:08:02 -0700 Subject: [PATCH 2/9] Moved more files around, working on VN engine --- .../assets archive}/Poker Gamedoc.docx | Bin .../models/Poker Chip/Single Chip.blend | Bin .../models/Poker Chip/Single Chip.blend1 | Bin .../archive/models/Poker Chip/Single Chip.obj | 0 .../archive/models/Poker Chip/Texture.pdn | Bin .../archive/models/Poker Chip/Texture.png | Bin .../archive/models/Poker Chip/UV Wrap.png | Bin .../archive/models/Poker Chip/pokerchip.png | Bin .../models/Poker Table/Poker Table.blend | Bin .../models/Poker Table/Poker Table.blend1 | Bin .../models/Poker Table/Poker Table.fbx | Bin .../models/Poker Table/Poker Table.obj | 0 .../archive/models/Poker Table/Texture.pdn | Bin .../archive/models/Poker Table/Texture.png | Bin .../archive/models/Poker Table/UV Layout.png | Bin .../poker table_del/poker_table.blend | Bin .../poker table_del/poker_table.fbx | Bin .../poker table_del/poker_table.mtl | 0 .../poker table_del/poker_table.obj | 0 .../textures/fabric2_albedo.jpg | Bin .../poker table_del/textures/fabric_AO.jpg | Bin .../textures/fabric_albedo.jpg | Bin .../textures/fabric_metallic.jpg | Bin .../textures/fabric_normal.png | Bin .../textures/fabric_roughness.jpg | Bin .../poker table_del/textures/wood_AO.jpg | Bin .../poker table_del/textures/wood_albedo.jpg | Bin .../textures/wood_metallic.jpg | Bin .../poker table_del/textures/wood_normal.png | Bin .../textures/wood_roughness.jpg | Bin .../archive/models/Poker Table/pokertable.png | Bin .../archive/world/chunks/0_0_0.txt | 0 .../assets archive}/archive/world/world.txt | 0 .../assets archive}/betting mockup.png | Bin .../assets archive}/locale/language/en-US.csv | 0 .../assets archive}/palette_color.png | Bin .../assets archive}/penny-blink.png | Bin .../assets archive}/poker/cards_normal.png | Bin .../poker/characters/jenny/Design/bot.psd | Bin .../jenny/Design/screen_composition.png | Bin .../characters/jenny/Design/sprite_base.png | Bin .../characters/jenny/Design/sprite_main.png | Bin .../poker/characters/jenny/character.xml | 0 .../jenny/concept/Attachment_1635756337.png | Bin .../jenny/concept/Attachment_1635800652.png | Bin .../jenny/concept/Attachment_1635903680.png | Bin .../jenny/concept/Attachment_1635915517.png | Bin .../jenny/concept/Attachment_1635983572.png | Bin .../jenny/concept/Attachment_1635992183.png | Bin .../jenny/concept/Attachment_1635992915.png | Bin .../jenny/concept/Attachment_1635995171.png | Bin .../characters/jenny/concept/gdf8rgvc.jpg | Bin .../poker/characters/jenny/sprites/base.png | Bin .../characters/jenny/sprites/eyes/eyes0.png | Bin .../characters/jenny/sprites/eyes/eyes1.png | Bin .../characters/jenny/sprites/eyes/eyes2.png | Bin .../jenny/sprites/visors/visor0.png | Bin .../jenny/sprites/visors/visor1.png | Bin .../jenny/sprites/visors/visor2.png | Bin .../poker/characters/julie/character.xml | 0 .../poker/characters/julie/concept/idol2s.png | Bin .../julie/concept/idol_sample_b.png | Bin .../characters/julie/concept/shotgun.png | Bin .../poker/characters/julie/concept/test2.png | Bin .../poker/characters/julie/design/idol.psd | Bin .../julie/design/screen_composition.png | Bin .../julie/design/screen_composition_b.png | Bin .../characters/julie/design/sprite_base.png | Bin .../characters/julie/design/sprite_main_a.png | Bin .../characters/julie/design/sprite_main_b.png | Bin .../poker/characters/julie/sprites/base.png | Bin .../julie/sprites/eyebrows/eyebrows_0.png | Bin .../julie/sprites/eyebrows/eyebrows_1.png | Bin .../julie/sprites/eyebrows/eyebrows_2.png | Bin .../julie/sprites/eyebrows/eyebrows_3.png | Bin .../characters/julie/sprites/eyes/eyes_0.png | Bin .../characters/julie/sprites/eyes/eyes_1.png | Bin .../characters/julie/sprites/eyes/eyes_2.png | Bin .../characters/julie/sprites/eyes/eyes_3.png | Bin .../julie/sprites/mouth/mouth_0_0.png | Bin .../julie/sprites/mouth/mouth_0_1.png | Bin .../julie/sprites/mouth/mouth_0_2.png | Bin .../julie/sprites/mouth/mouth_1_0.png | Bin .../julie/sprites/mouth/mouth_1_1.png | Bin .../julie/sprites/mouth/mouth_1_2.png | Bin .../julie/sprites/mouth/mouth_2_0.png | Bin .../julie/sprites/mouth/mouth_2_1.png | Bin .../julie/sprites/mouth/mouth_2_2.png | Bin .../julie/sprites/mouth/mouth_3_0.png | Bin .../julie/sprites/mouth/mouth_3_1.png | Bin .../julie/sprites/mouth/mouth_3_2.png | Bin .../julie/sprites/sunglasses/sunglasses_0.png | Bin .../julie/sprites/sunglasses/sunglasses_1.png | Bin .../poker/characters/lucy/character.xml | 0 .../lucy/concept/Attachment_1636071085.png | Bin .../lucy/concept/Attachment_1636083467.png | Bin .../lucy/concept/Attachment_1636182023.png | Bin ...EpCG6PxebbH-OaMg4mA7dhzCzjwjTiVX80AcfI.png | Bin .../lucy/design/Attachment_1636255946.png | Bin .../characters/lucy/design/height_chart.png | Bin .../lucy/design/screen_composition.png | Bin .../characters/lucy/design/sprite_base.png | Bin .../characters/lucy/design/sprite_main.png | Bin .../poker/characters/lucy/design/taker.psd | Bin .../poker/characters/lucy/sprites/base.png | Bin .../lucy/sprites/eyebrows/eyebrows_0.png | Bin .../lucy/sprites/eyebrows/eyebrows_1.png | Bin .../lucy/sprites/eyebrows/eyebrows_2.png | Bin .../lucy/sprites/eyebrows/eyebrows_3.png | Bin .../lucy/sprites/eyebrows/eyebrows_4.png | Bin .../characters/lucy/sprites/eyes/eyes_0.png | Bin .../characters/lucy/sprites/eyes/eyes_1.png | Bin .../characters/lucy/sprites/eyes/eyes_2.png | Bin .../characters/lucy/sprites/eyes/eyes_3.png | Bin .../characters/lucy/sprites/eyes/eyes_4.png | Bin .../lucy/sprites/mouth/mouth_0_0.png | Bin .../lucy/sprites/mouth/mouth_0_1.png | Bin .../lucy/sprites/mouth/mouth_0_2.png | Bin .../lucy/sprites/mouth/mouth_1_0.png | Bin .../lucy/sprites/mouth/mouth_1_1.png | Bin .../lucy/sprites/mouth/mouth_1_2.png | Bin .../lucy/sprites/mouth/mouth_2_0.png | Bin .../lucy/sprites/mouth/mouth_2_1.png | Bin .../lucy/sprites/mouth/mouth_2_2.png | Bin .../lucy/sprites/mouth/mouth_3_0.png | Bin .../lucy/sprites/mouth/mouth_3_1.png | Bin .../lucy/sprites/mouth/mouth_3_2.png | Bin .../Animation_Loop_Blink1.png | Bin .../Animation_Loop_Blink10.png | Bin .../Animation_Loop_Blink11.png | Bin .../Animation_Loop_Blink12.png | Bin .../Animation_Loop_Blink13.png | Bin .../Animation_Loop_Blink14.png | Bin .../Animation_Loop_Blink15.png | Bin .../Animation_Loop_Blink16.png | Bin .../Animation_Loop_Blink17.png | Bin .../Animation_Loop_Blink18.png | Bin .../Animation_Loop_Blink19.png | Bin .../Animation_Loop_Blink2.png | Bin .../Animation_Loop_Blink20.png | Bin .../Animation_Loop_Blink21.png | Bin .../Animation_Loop_Blink22.png | Bin .../Animation_Loop_Blink3.png | Bin .../Animation_Loop_Blink4.png | Bin .../Animation_Loop_Blink5.png | Bin .../Animation_Loop_Blink6.png | Bin .../Animation_Loop_Blink7.png | Bin .../Animation_Loop_Blink8.png | Bin .../Animation_Loop_Blink9.png | Bin .../Animation_Loop_Blink/animation-loop.png | Bin .../poker/characters/penny/border.png | Bin .../poker/characters/penny/character.xml | 0 .../First Concept/Attachment_1620525335.png | Bin .../First Concept/Attachment_1620705080.png | Bin .../First Concept/Attachment_1620772632.png | Bin .../PSD Source/Expressions.psd | Bin ...ull Expressions and Eyes, Mouth Closed.psb | Bin .../PSD Source/Original File.psd | Bin .../PSD Source/Test Animation Talking.psd | Bin ...artSelect_20210519-170421_ibisPaint20X.png | Bin .../High Quality Concept/Sprites/body.png | Bin .../High Quality Concept/Sprites/body_sm.png | Bin .../High Quality Concept/Sprites/eyes.png | Bin .../High Quality Concept/Sprites/eyes_sm.png | Bin .../High Quality Concept/Sprites/face.png | Bin .../High Quality Concept/Sprites/face_sm.png | Bin .../High Quality Concept/Sprites/mouth.png | Bin .../High Quality Concept/Sprites/mouth_sm.png | Bin .../Untitled317_20210521111636.png | Bin .../Vector Version/Vector File.ai | 0 .../Vector Version/Vector SVG.svg | 0 .../Vector Version/test.ai | 0 .../penny/concept/Moe Concept/dealer.png | Bin .../penny/design/animation_pattern_1.gif | Bin .../penny/design/animation_pattern_2.gif | Bin .../poker/characters/penny/design/dealer.psd | Bin .../penny/design/screen_composition.png | Bin .../characters/penny/design/sprite_base.png | Bin .../characters/penny/design/sprite_main.png | Bin .../poker/characters/penny/sprites/dealer.png | Bin .../penny/sprites/eyebrows/eyebrows_1.png | Bin .../penny/sprites/eyebrows/eyebrows_2.png | Bin .../penny/sprites/eyebrows/eyebrows_3.png | Bin .../penny/sprites/eyebrows/eyebrows_4.png | Bin .../penny/sprites/eyebrows/eyebrows_5.png | Bin .../characters/penny/sprites/eyes/eyes_1.png | Bin .../characters/penny/sprites/eyes/eyes_2.png | Bin .../characters/penny/sprites/eyes/eyes_3.png | Bin .../characters/penny/sprites/eyes/eyes_4.png | Bin .../penny/sprites/mouths/mouth_1_1.png | Bin .../penny/sprites/mouths/mouth_1_2.png | Bin .../penny/sprites/mouths/mouth_1_3.png | Bin .../penny/sprites/mouths/mouth_2_1.png | Bin .../penny/sprites/mouths/mouth_2_2.png | Bin .../penny/sprites/mouths/mouth_2_3.png | Bin .../penny/sprites/mouths/mouth_3_1.png | Bin .../penny/sprites/mouths/mouth_3_2.png | Bin .../penny/sprites/mouths/mouth_3_3.png | Bin .../penny/sprites/mouths/mouth_4_1.png | Bin .../penny/sprites/mouths/mouth_4_2.png | Bin .../penny/sprites/mouths/mouth_4_3.png | Bin .../poker/characters/penny/sprites/sheet.png | Bin .../poker/characters/sammy/character.xml | 0 .../poker/characters/sammy/concept/cop2.png | Bin .../poker/characters/sammy/concept/cop3a.png | Bin .../poker/characters/sammy/concept/cop3b.png | Bin .../poker/characters/sammy/concept/cop3c.png | Bin .../sammy/concept/coppa_sample_a.png | Bin .../sammy/concept/coppa_sample_b.png | Bin .../sammy/concept/coppa_sample_b2.png | Bin .../poker/characters/sammy/design/coppa.psd | Bin .../sammy/design/screen_composition.png | Bin .../characters/sammy/design/sprite_base.png | Bin .../characters/sammy/design/sprite_main.png | Bin .../poker/characters/sammy/sprites/base.png | Bin .../sammy/sprites/eyebrows/eyebrows_0.png | Bin .../sammy/sprites/eyebrows/eyebrows_1.png | Bin .../sammy/sprites/eyebrows/eyebrows_2.png | Bin .../sammy/sprites/eyebrows/eyebrows_3.png | Bin .../sammy/sprites/eyebrows/eyebrows_4.png | Bin .../characters/sammy/sprites/eyes/eyes_0.png | Bin .../characters/sammy/sprites/eyes/eyes_1.png | Bin .../characters/sammy/sprites/eyes/eyes_2.png | Bin .../characters/sammy/sprites/eyes/eyes_3.png | Bin .../sammy/sprites/mouth/mouth_0_0.png | Bin .../sammy/sprites/mouth/mouth_0_1.png | Bin .../sammy/sprites/mouth/mouth_0_2.png | Bin .../sammy/sprites/mouth/mouth_1_0.png | Bin .../sammy/sprites/mouth/mouth_1_1.png | Bin .../sammy/sprites/mouth/mouth_1_2.png | Bin .../sammy/sprites/mouth/mouth_2_0.png | Bin .../sammy/sprites/mouth/mouth_2_1.png | Bin .../sammy/sprites/mouth/mouth_2_2.png | Bin .../sammy/sprites/mouth/mouth_3_0.png | Bin .../sammy/sprites/mouth/mouth_3_1.png | Bin .../sammy/sprites/mouth/mouth_3_2.png | Bin .../unused/cissnei/Attachment_1621537997.png | Bin ...martSelect_20210604-133433_ibisPaint_X.jpg | Bin .../cissnei/Untitled337_20210606164342.png | Bin .../poker/world/pub/Concept/floor.png | Bin .../poker/world/pub/Concept/top.png | Bin .../poker/world/pub/pub_skywal_upscaledl.png | Bin .../poker/world/pub/pub_skywall.png | Bin .../poker/world/pub/pub_skywall_low.png | Bin .../poker/world/pub/pub_skywall_original.png | Bin .../assets archive}/pokergame/cards.png | Bin .../pokergame/characters/death/a.wav | Bin .../pokergame/characters/death/com.wav | Bin .../pokergame/characters/death/ie.wav | Bin .../pokergame/characters/death/or.wav | Bin .../pokergame/characters/death/ray.wav | Bin .../pokergame/characters/death/sheet.png | Bin .../pokergame/characters/penny/sheet.png | Bin .../pokergame/font/BIZUDPGothic-Bold.ttf | Bin .../pokergame/font/BIZUDPGothic-Regular.ttf | Bin .../assets archive}/pokergame/font/OFL.txt | 0 .../assets archive}/pokergame/scripty.docx | Bin .../assets archive}/pokergame/vn/Scene_1.xml | 0 .../shared/fonts/opensans/OpenSans-Bold.ttf | Bin .../fonts/opensans/OpenSans-BoldItalic.ttf | Bin .../fonts/opensans/OpenSans-ExtraBold.ttf | Bin .../opensans/OpenSans-ExtraBoldItalic.ttf | Bin .../shared/fonts/opensans/OpenSans-Italic.ttf | Bin .../shared/fonts/opensans/OpenSans-Light.ttf | Bin .../fonts/opensans/OpenSans-LightItalic.ttf | Bin .../fonts/opensans/OpenSans-Regular.ttf | Bin .../fonts/opensans/OpenSans-Semibold.ttf | Bin .../opensans/OpenSans-SemiboldItalic.ttf | Bin .../shared/shaders/singlerenderlist.frag | 0 .../shared/shaders/singlerenderlist.vert | 0 .../shared/shaders/textured.frag | 0 .../shared/shaders/textured.vert | 0 .../shared/textures/test_texture.png | Bin .../tictactoe/font/BIZUDPGothic-Bold.ttf | Bin .../tictactoe/font/BIZUDPGothic-Regular.ttf | Bin .../assets archive}/tictactoe/font/OFL.txt | 0 .../assets archive}/tictactoe/locale/en.xml | 0 .../assets archive}/tictactoe/test.xml | 0 .../assets archive}/tictactoe/xo.png | Bin assets/games/liminal/example-scene.xml | 2 +- .../animation/SimplerCallbackAnimation.hpp | 31 ++++++++++ src/dawn/games/vn/components/VNManager.hpp | 12 +--- src/dawn/games/vn/events/VNPositionEvent.hpp | 58 ++++++++++++++++++ src/dawn/state/StateEvent.hpp | 5 +- src/dawnliminal/scenes/HelloWorldScene.hpp | 8 +++ 285 files changed, 104 insertions(+), 12 deletions(-) rename {assets/archive => archive/assets archive}/Poker Gamedoc.docx (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Chip/Single Chip.blend (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Chip/Single Chip.blend1 (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Chip/Single Chip.obj (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Chip/Texture.pdn (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Chip/Texture.png (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Chip/UV Wrap.png (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Chip/pokerchip.png (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/Poker Table.blend (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/Poker Table.blend1 (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/Poker Table.fbx (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/Poker Table.obj (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/Texture.pdn (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/Texture.png (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/UV Layout.png (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/poker_table.blend (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/poker_table.fbx (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/poker_table.mtl (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/poker_table.obj (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/textures/fabric2_albedo.jpg (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/textures/fabric_AO.jpg (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/textures/fabric_albedo.jpg (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/textures/fabric_metallic.jpg (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/textures/fabric_normal.png (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/textures/fabric_roughness.jpg (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/textures/wood_AO.jpg (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/textures/wood_albedo.jpg (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/textures/wood_metallic.jpg (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/textures/wood_normal.png (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/poker table_del/textures/wood_roughness.jpg (100%) rename {assets/archive => archive/assets archive}/archive/models/Poker Table/pokertable.png (100%) rename {assets/archive => archive/assets archive}/archive/world/chunks/0_0_0.txt (100%) rename {assets/archive => archive/assets archive}/archive/world/world.txt (100%) rename {assets/archive => archive/assets archive}/betting mockup.png (100%) rename {assets/archive => archive/assets archive}/locale/language/en-US.csv (100%) rename {assets/archive => archive/assets archive}/palette_color.png (100%) rename {assets/archive => archive/assets archive}/penny-blink.png (100%) rename {assets/archive => archive/assets archive}/poker/cards_normal.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/Design/bot.psd (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/Design/screen_composition.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/Design/sprite_base.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/Design/sprite_main.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/character.xml (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/concept/Attachment_1635756337.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/concept/Attachment_1635800652.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/concept/Attachment_1635903680.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/concept/Attachment_1635915517.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/concept/Attachment_1635983572.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/concept/Attachment_1635992183.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/concept/Attachment_1635992915.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/concept/Attachment_1635995171.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/concept/gdf8rgvc.jpg (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/sprites/base.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/sprites/eyes/eyes0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/sprites/eyes/eyes1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/sprites/eyes/eyes2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/sprites/visors/visor0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/sprites/visors/visor1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/jenny/sprites/visors/visor2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/character.xml (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/concept/idol2s.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/concept/idol_sample_b.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/concept/shotgun.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/concept/test2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/design/idol.psd (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/design/screen_composition.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/design/screen_composition_b.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/design/sprite_base.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/design/sprite_main_a.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/design/sprite_main_b.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/base.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/eyebrows/eyebrows_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/eyebrows/eyebrows_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/eyebrows/eyebrows_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/eyebrows/eyebrows_3.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/eyes/eyes_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/eyes/eyes_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/eyes/eyes_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/eyes/eyes_3.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/mouth/mouth_0_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/mouth/mouth_0_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/mouth/mouth_0_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/mouth/mouth_1_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/mouth/mouth_1_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/mouth/mouth_1_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/mouth/mouth_2_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/mouth/mouth_2_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/mouth/mouth_2_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/mouth/mouth_3_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/mouth/mouth_3_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/mouth/mouth_3_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/sunglasses/sunglasses_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/julie/sprites/sunglasses/sunglasses_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/character.xml (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/concept/Attachment_1636071085.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/concept/Attachment_1636083467.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/concept/Attachment_1636182023.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/concept/p0I6XK6wXtaUD6eZwVONLazwDXkfSgW-M0y0Ex_BnMTFEzgp6Hk36o3UZzZp18EpCG6PxebbH-OaMg4mA7dhzCzjwjTiVX80AcfI.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/design/Attachment_1636255946.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/design/height_chart.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/design/screen_composition.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/design/sprite_base.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/design/sprite_main.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/design/taker.psd (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/base.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/eyebrows/eyebrows_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/eyebrows/eyebrows_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/eyebrows/eyebrows_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/eyebrows/eyebrows_3.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/eyebrows/eyebrows_4.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/eyes/eyes_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/eyes/eyes_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/eyes/eyes_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/eyes/eyes_3.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/eyes/eyes_4.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/mouth/mouth_0_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/mouth/mouth_0_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/mouth/mouth_0_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/mouth/mouth_1_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/mouth/mouth_1_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/mouth/mouth_1_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/mouth/mouth_2_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/mouth/mouth_2_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/mouth/mouth_2_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/mouth/mouth_3_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/mouth/mouth_3_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/lucy/sprites/mouth/mouth_3_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink10.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink11.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink12.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink13.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink14.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink15.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink16.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink17.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink18.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink19.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink20.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink21.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink22.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink3.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink4.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink5.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink6.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink7.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink8.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink9.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/Animation_Loop_Blink/animation-loop.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/border.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/character.xml (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/First Concept/Attachment_1620525335.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/First Concept/Attachment_1620705080.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/First Concept/Attachment_1620772632.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/PSD Source/Expressions.psd (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/PSD Source/Full Expressions and Eyes, Mouth Closed.psb (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/PSD Source/Original File.psd (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/PSD Source/Test Animation Talking.psd (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/SmartSelect_20210519-170421_ibisPaint20X.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/Sprites/body.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/Sprites/body_sm.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/Sprites/eyes.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/Sprites/eyes_sm.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/Sprites/face.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/Sprites/face_sm.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/Sprites/mouth.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/Sprites/mouth_sm.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/Untitled317_20210521111636.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/Vector Version/Vector File.ai (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/Vector Version/Vector SVG.svg (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/High Quality Concept/Vector Version/test.ai (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/concept/Moe Concept/dealer.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/design/animation_pattern_1.gif (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/design/animation_pattern_2.gif (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/design/dealer.psd (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/design/screen_composition.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/design/sprite_base.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/design/sprite_main.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/dealer.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/eyebrows/eyebrows_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/eyebrows/eyebrows_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/eyebrows/eyebrows_3.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/eyebrows/eyebrows_4.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/eyebrows/eyebrows_5.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/eyes/eyes_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/eyes/eyes_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/eyes/eyes_3.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/eyes/eyes_4.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/mouths/mouth_1_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/mouths/mouth_1_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/mouths/mouth_1_3.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/mouths/mouth_2_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/mouths/mouth_2_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/mouths/mouth_2_3.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/mouths/mouth_3_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/mouths/mouth_3_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/mouths/mouth_3_3.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/mouths/mouth_4_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/mouths/mouth_4_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/mouths/mouth_4_3.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/penny/sprites/sheet.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/character.xml (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/concept/cop2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/concept/cop3a.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/concept/cop3b.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/concept/cop3c.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/concept/coppa_sample_a.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/concept/coppa_sample_b.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/concept/coppa_sample_b2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/design/coppa.psd (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/design/screen_composition.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/design/sprite_base.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/design/sprite_main.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/base.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/eyebrows/eyebrows_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/eyebrows/eyebrows_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/eyebrows/eyebrows_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/eyebrows/eyebrows_3.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/eyebrows/eyebrows_4.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/eyes/eyes_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/eyes/eyes_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/eyes/eyes_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/eyes/eyes_3.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/mouth/mouth_0_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/mouth/mouth_0_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/mouth/mouth_0_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/mouth/mouth_1_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/mouth/mouth_1_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/mouth/mouth_1_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/mouth/mouth_2_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/mouth/mouth_2_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/mouth/mouth_2_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/mouth/mouth_3_0.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/mouth/mouth_3_1.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/sammy/sprites/mouth/mouth_3_2.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/unused/cissnei/Attachment_1621537997.png (100%) rename {assets/archive => archive/assets archive}/poker/characters/unused/cissnei/SmartSelect_20210604-133433_ibisPaint_X.jpg (100%) rename {assets/archive => archive/assets archive}/poker/characters/unused/cissnei/Untitled337_20210606164342.png (100%) rename {assets/archive => archive/assets archive}/poker/world/pub/Concept/floor.png (100%) rename {assets/archive => archive/assets archive}/poker/world/pub/Concept/top.png (100%) rename {assets/archive => archive/assets archive}/poker/world/pub/pub_skywal_upscaledl.png (100%) rename {assets/archive => archive/assets archive}/poker/world/pub/pub_skywall.png (100%) rename {assets/archive => archive/assets archive}/poker/world/pub/pub_skywall_low.png (100%) rename {assets/archive => archive/assets archive}/poker/world/pub/pub_skywall_original.png (100%) rename {assets/archive => archive/assets archive}/pokergame/cards.png (100%) rename {assets/archive => archive/assets archive}/pokergame/characters/death/a.wav (100%) rename {assets/archive => archive/assets archive}/pokergame/characters/death/com.wav (100%) rename {assets/archive => archive/assets archive}/pokergame/characters/death/ie.wav (100%) rename {assets/archive => archive/assets archive}/pokergame/characters/death/or.wav (100%) rename {assets/archive => archive/assets archive}/pokergame/characters/death/ray.wav (100%) rename {assets/archive => archive/assets archive}/pokergame/characters/death/sheet.png (100%) rename {assets/archive => archive/assets archive}/pokergame/characters/penny/sheet.png (100%) rename {assets/archive => archive/assets archive}/pokergame/font/BIZUDPGothic-Bold.ttf (100%) rename {assets/archive => archive/assets archive}/pokergame/font/BIZUDPGothic-Regular.ttf (100%) rename {assets/archive => archive/assets archive}/pokergame/font/OFL.txt (100%) rename {assets/archive => archive/assets archive}/pokergame/scripty.docx (100%) rename {assets/archive => archive/assets archive}/pokergame/vn/Scene_1.xml (100%) rename {assets/archive => archive/assets archive}/shared/fonts/opensans/OpenSans-Bold.ttf (100%) rename {assets/archive => archive/assets archive}/shared/fonts/opensans/OpenSans-BoldItalic.ttf (100%) rename {assets/archive => archive/assets archive}/shared/fonts/opensans/OpenSans-ExtraBold.ttf (100%) rename {assets/archive => archive/assets archive}/shared/fonts/opensans/OpenSans-ExtraBoldItalic.ttf (100%) rename {assets/archive => archive/assets archive}/shared/fonts/opensans/OpenSans-Italic.ttf (100%) rename {assets/archive => archive/assets archive}/shared/fonts/opensans/OpenSans-Light.ttf (100%) rename {assets/archive => archive/assets archive}/shared/fonts/opensans/OpenSans-LightItalic.ttf (100%) rename {assets/archive => archive/assets archive}/shared/fonts/opensans/OpenSans-Regular.ttf (100%) rename {assets/archive => archive/assets archive}/shared/fonts/opensans/OpenSans-Semibold.ttf (100%) rename {assets/archive => archive/assets archive}/shared/fonts/opensans/OpenSans-SemiboldItalic.ttf (100%) rename {assets/archive => archive/assets archive}/shared/shaders/singlerenderlist.frag (100%) rename {assets/archive => archive/assets archive}/shared/shaders/singlerenderlist.vert (100%) rename {assets/archive => archive/assets archive}/shared/shaders/textured.frag (100%) rename {assets/archive => archive/assets archive}/shared/shaders/textured.vert (100%) rename {assets/archive => archive/assets archive}/shared/textures/test_texture.png (100%) rename {assets/archive => archive/assets archive}/tictactoe/font/BIZUDPGothic-Bold.ttf (100%) rename {assets/archive => archive/assets archive}/tictactoe/font/BIZUDPGothic-Regular.ttf (100%) rename {assets/archive => archive/assets archive}/tictactoe/font/OFL.txt (100%) rename {assets/archive => archive/assets archive}/tictactoe/locale/en.xml (100%) rename {assets/archive => archive/assets archive}/tictactoe/test.xml (100%) rename {assets/archive => archive/assets archive}/tictactoe/xo.png (100%) create mode 100644 src/dawn/display/animation/SimplerCallbackAnimation.hpp create mode 100644 src/dawn/games/vn/events/VNPositionEvent.hpp diff --git a/assets/archive/Poker Gamedoc.docx b/archive/assets archive/Poker Gamedoc.docx similarity index 100% rename from assets/archive/Poker Gamedoc.docx rename to archive/assets archive/Poker Gamedoc.docx diff --git a/assets/archive/archive/models/Poker Chip/Single Chip.blend b/archive/assets archive/archive/models/Poker Chip/Single Chip.blend similarity index 100% rename from assets/archive/archive/models/Poker Chip/Single Chip.blend rename to archive/assets archive/archive/models/Poker Chip/Single Chip.blend diff --git a/assets/archive/archive/models/Poker Chip/Single Chip.blend1 b/archive/assets archive/archive/models/Poker Chip/Single Chip.blend1 similarity index 100% rename from assets/archive/archive/models/Poker Chip/Single Chip.blend1 rename to archive/assets archive/archive/models/Poker Chip/Single Chip.blend1 diff --git a/assets/archive/archive/models/Poker Chip/Single Chip.obj b/archive/assets archive/archive/models/Poker Chip/Single Chip.obj similarity index 100% rename from assets/archive/archive/models/Poker Chip/Single Chip.obj rename to archive/assets archive/archive/models/Poker Chip/Single Chip.obj diff --git a/assets/archive/archive/models/Poker Chip/Texture.pdn b/archive/assets archive/archive/models/Poker Chip/Texture.pdn similarity index 100% rename from assets/archive/archive/models/Poker Chip/Texture.pdn rename to archive/assets archive/archive/models/Poker Chip/Texture.pdn diff --git a/assets/archive/archive/models/Poker Chip/Texture.png b/archive/assets archive/archive/models/Poker Chip/Texture.png similarity index 100% rename from assets/archive/archive/models/Poker Chip/Texture.png rename to archive/assets archive/archive/models/Poker Chip/Texture.png diff --git a/assets/archive/archive/models/Poker Chip/UV Wrap.png b/archive/assets archive/archive/models/Poker Chip/UV Wrap.png similarity index 100% rename from assets/archive/archive/models/Poker Chip/UV Wrap.png rename to archive/assets archive/archive/models/Poker Chip/UV Wrap.png diff --git a/assets/archive/archive/models/Poker Chip/pokerchip.png b/archive/assets archive/archive/models/Poker Chip/pokerchip.png similarity index 100% rename from assets/archive/archive/models/Poker Chip/pokerchip.png rename to archive/assets archive/archive/models/Poker Chip/pokerchip.png diff --git a/assets/archive/archive/models/Poker Table/Poker Table.blend b/archive/assets archive/archive/models/Poker Table/Poker Table.blend similarity index 100% rename from assets/archive/archive/models/Poker Table/Poker Table.blend rename to archive/assets archive/archive/models/Poker Table/Poker Table.blend diff --git a/assets/archive/archive/models/Poker Table/Poker Table.blend1 b/archive/assets archive/archive/models/Poker Table/Poker Table.blend1 similarity index 100% rename from assets/archive/archive/models/Poker Table/Poker Table.blend1 rename to archive/assets archive/archive/models/Poker Table/Poker Table.blend1 diff --git a/assets/archive/archive/models/Poker Table/Poker Table.fbx b/archive/assets archive/archive/models/Poker Table/Poker Table.fbx similarity index 100% rename from assets/archive/archive/models/Poker Table/Poker Table.fbx rename to archive/assets archive/archive/models/Poker Table/Poker Table.fbx diff --git a/assets/archive/archive/models/Poker Table/Poker Table.obj b/archive/assets archive/archive/models/Poker Table/Poker Table.obj similarity index 100% rename from assets/archive/archive/models/Poker Table/Poker Table.obj rename to archive/assets archive/archive/models/Poker Table/Poker Table.obj diff --git a/assets/archive/archive/models/Poker Table/Texture.pdn b/archive/assets archive/archive/models/Poker Table/Texture.pdn similarity index 100% rename from assets/archive/archive/models/Poker Table/Texture.pdn rename to archive/assets archive/archive/models/Poker Table/Texture.pdn diff --git a/assets/archive/archive/models/Poker Table/Texture.png b/archive/assets archive/archive/models/Poker Table/Texture.png similarity index 100% rename from assets/archive/archive/models/Poker Table/Texture.png rename to archive/assets archive/archive/models/Poker Table/Texture.png diff --git a/assets/archive/archive/models/Poker Table/UV Layout.png b/archive/assets archive/archive/models/Poker Table/UV Layout.png similarity index 100% rename from assets/archive/archive/models/Poker Table/UV Layout.png rename to archive/assets archive/archive/models/Poker Table/UV Layout.png diff --git a/assets/archive/archive/models/Poker Table/poker table_del/poker_table.blend b/archive/assets archive/archive/models/Poker Table/poker table_del/poker_table.blend similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/poker_table.blend rename to archive/assets archive/archive/models/Poker Table/poker table_del/poker_table.blend diff --git a/assets/archive/archive/models/Poker Table/poker table_del/poker_table.fbx b/archive/assets archive/archive/models/Poker Table/poker table_del/poker_table.fbx similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/poker_table.fbx rename to archive/assets archive/archive/models/Poker Table/poker table_del/poker_table.fbx diff --git a/assets/archive/archive/models/Poker Table/poker table_del/poker_table.mtl b/archive/assets archive/archive/models/Poker Table/poker table_del/poker_table.mtl similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/poker_table.mtl rename to archive/assets archive/archive/models/Poker Table/poker table_del/poker_table.mtl diff --git a/assets/archive/archive/models/Poker Table/poker table_del/poker_table.obj b/archive/assets archive/archive/models/Poker Table/poker table_del/poker_table.obj similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/poker_table.obj rename to archive/assets archive/archive/models/Poker Table/poker table_del/poker_table.obj diff --git a/assets/archive/archive/models/Poker Table/poker table_del/textures/fabric2_albedo.jpg b/archive/assets archive/archive/models/Poker Table/poker table_del/textures/fabric2_albedo.jpg similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/textures/fabric2_albedo.jpg rename to archive/assets archive/archive/models/Poker Table/poker table_del/textures/fabric2_albedo.jpg diff --git a/assets/archive/archive/models/Poker Table/poker table_del/textures/fabric_AO.jpg b/archive/assets archive/archive/models/Poker Table/poker table_del/textures/fabric_AO.jpg similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/textures/fabric_AO.jpg rename to archive/assets archive/archive/models/Poker Table/poker table_del/textures/fabric_AO.jpg diff --git a/assets/archive/archive/models/Poker Table/poker table_del/textures/fabric_albedo.jpg b/archive/assets archive/archive/models/Poker Table/poker table_del/textures/fabric_albedo.jpg similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/textures/fabric_albedo.jpg rename to archive/assets archive/archive/models/Poker Table/poker table_del/textures/fabric_albedo.jpg diff --git a/assets/archive/archive/models/Poker Table/poker table_del/textures/fabric_metallic.jpg b/archive/assets archive/archive/models/Poker Table/poker table_del/textures/fabric_metallic.jpg similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/textures/fabric_metallic.jpg rename to archive/assets archive/archive/models/Poker Table/poker table_del/textures/fabric_metallic.jpg diff --git a/assets/archive/archive/models/Poker Table/poker table_del/textures/fabric_normal.png b/archive/assets archive/archive/models/Poker Table/poker table_del/textures/fabric_normal.png similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/textures/fabric_normal.png rename to archive/assets archive/archive/models/Poker Table/poker table_del/textures/fabric_normal.png diff --git a/assets/archive/archive/models/Poker Table/poker table_del/textures/fabric_roughness.jpg b/archive/assets archive/archive/models/Poker Table/poker table_del/textures/fabric_roughness.jpg similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/textures/fabric_roughness.jpg rename to archive/assets archive/archive/models/Poker Table/poker table_del/textures/fabric_roughness.jpg diff --git a/assets/archive/archive/models/Poker Table/poker table_del/textures/wood_AO.jpg b/archive/assets archive/archive/models/Poker Table/poker table_del/textures/wood_AO.jpg similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/textures/wood_AO.jpg rename to archive/assets archive/archive/models/Poker Table/poker table_del/textures/wood_AO.jpg diff --git a/assets/archive/archive/models/Poker Table/poker table_del/textures/wood_albedo.jpg b/archive/assets archive/archive/models/Poker Table/poker table_del/textures/wood_albedo.jpg similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/textures/wood_albedo.jpg rename to archive/assets archive/archive/models/Poker Table/poker table_del/textures/wood_albedo.jpg diff --git a/assets/archive/archive/models/Poker Table/poker table_del/textures/wood_metallic.jpg b/archive/assets archive/archive/models/Poker Table/poker table_del/textures/wood_metallic.jpg similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/textures/wood_metallic.jpg rename to archive/assets archive/archive/models/Poker Table/poker table_del/textures/wood_metallic.jpg diff --git a/assets/archive/archive/models/Poker Table/poker table_del/textures/wood_normal.png b/archive/assets archive/archive/models/Poker Table/poker table_del/textures/wood_normal.png similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/textures/wood_normal.png rename to archive/assets archive/archive/models/Poker Table/poker table_del/textures/wood_normal.png diff --git a/assets/archive/archive/models/Poker Table/poker table_del/textures/wood_roughness.jpg b/archive/assets archive/archive/models/Poker Table/poker table_del/textures/wood_roughness.jpg similarity index 100% rename from assets/archive/archive/models/Poker Table/poker table_del/textures/wood_roughness.jpg rename to archive/assets archive/archive/models/Poker Table/poker table_del/textures/wood_roughness.jpg diff --git a/assets/archive/archive/models/Poker Table/pokertable.png b/archive/assets archive/archive/models/Poker Table/pokertable.png similarity index 100% rename from assets/archive/archive/models/Poker Table/pokertable.png rename to archive/assets archive/archive/models/Poker Table/pokertable.png diff --git a/assets/archive/archive/world/chunks/0_0_0.txt b/archive/assets archive/archive/world/chunks/0_0_0.txt similarity index 100% rename from assets/archive/archive/world/chunks/0_0_0.txt rename to archive/assets archive/archive/world/chunks/0_0_0.txt diff --git a/assets/archive/archive/world/world.txt b/archive/assets archive/archive/world/world.txt similarity index 100% rename from assets/archive/archive/world/world.txt rename to archive/assets archive/archive/world/world.txt diff --git a/assets/archive/betting mockup.png b/archive/assets archive/betting mockup.png similarity index 100% rename from assets/archive/betting mockup.png rename to archive/assets archive/betting mockup.png diff --git a/assets/archive/locale/language/en-US.csv b/archive/assets archive/locale/language/en-US.csv similarity index 100% rename from assets/archive/locale/language/en-US.csv rename to archive/assets archive/locale/language/en-US.csv diff --git a/assets/archive/palette_color.png b/archive/assets archive/palette_color.png similarity index 100% rename from assets/archive/palette_color.png rename to archive/assets archive/palette_color.png diff --git a/assets/archive/penny-blink.png b/archive/assets archive/penny-blink.png similarity index 100% rename from assets/archive/penny-blink.png rename to archive/assets archive/penny-blink.png diff --git a/assets/archive/poker/cards_normal.png b/archive/assets archive/poker/cards_normal.png similarity index 100% rename from assets/archive/poker/cards_normal.png rename to archive/assets archive/poker/cards_normal.png diff --git a/assets/archive/poker/characters/jenny/Design/bot.psd b/archive/assets archive/poker/characters/jenny/Design/bot.psd similarity index 100% rename from assets/archive/poker/characters/jenny/Design/bot.psd rename to archive/assets archive/poker/characters/jenny/Design/bot.psd diff --git a/assets/archive/poker/characters/jenny/Design/screen_composition.png b/archive/assets archive/poker/characters/jenny/Design/screen_composition.png similarity index 100% rename from assets/archive/poker/characters/jenny/Design/screen_composition.png rename to archive/assets archive/poker/characters/jenny/Design/screen_composition.png diff --git a/assets/archive/poker/characters/jenny/Design/sprite_base.png b/archive/assets archive/poker/characters/jenny/Design/sprite_base.png similarity index 100% rename from assets/archive/poker/characters/jenny/Design/sprite_base.png rename to archive/assets archive/poker/characters/jenny/Design/sprite_base.png diff --git a/assets/archive/poker/characters/jenny/Design/sprite_main.png b/archive/assets archive/poker/characters/jenny/Design/sprite_main.png similarity index 100% rename from assets/archive/poker/characters/jenny/Design/sprite_main.png rename to archive/assets archive/poker/characters/jenny/Design/sprite_main.png diff --git a/assets/archive/poker/characters/jenny/character.xml b/archive/assets archive/poker/characters/jenny/character.xml similarity index 100% rename from assets/archive/poker/characters/jenny/character.xml rename to archive/assets archive/poker/characters/jenny/character.xml diff --git a/assets/archive/poker/characters/jenny/concept/Attachment_1635756337.png b/archive/assets archive/poker/characters/jenny/concept/Attachment_1635756337.png similarity index 100% rename from assets/archive/poker/characters/jenny/concept/Attachment_1635756337.png rename to archive/assets archive/poker/characters/jenny/concept/Attachment_1635756337.png diff --git a/assets/archive/poker/characters/jenny/concept/Attachment_1635800652.png b/archive/assets archive/poker/characters/jenny/concept/Attachment_1635800652.png similarity index 100% rename from assets/archive/poker/characters/jenny/concept/Attachment_1635800652.png rename to archive/assets archive/poker/characters/jenny/concept/Attachment_1635800652.png diff --git a/assets/archive/poker/characters/jenny/concept/Attachment_1635903680.png b/archive/assets archive/poker/characters/jenny/concept/Attachment_1635903680.png similarity index 100% rename from assets/archive/poker/characters/jenny/concept/Attachment_1635903680.png rename to archive/assets archive/poker/characters/jenny/concept/Attachment_1635903680.png diff --git a/assets/archive/poker/characters/jenny/concept/Attachment_1635915517.png b/archive/assets archive/poker/characters/jenny/concept/Attachment_1635915517.png similarity index 100% rename from assets/archive/poker/characters/jenny/concept/Attachment_1635915517.png rename to archive/assets archive/poker/characters/jenny/concept/Attachment_1635915517.png diff --git a/assets/archive/poker/characters/jenny/concept/Attachment_1635983572.png b/archive/assets archive/poker/characters/jenny/concept/Attachment_1635983572.png similarity index 100% rename from assets/archive/poker/characters/jenny/concept/Attachment_1635983572.png rename to archive/assets archive/poker/characters/jenny/concept/Attachment_1635983572.png diff --git a/assets/archive/poker/characters/jenny/concept/Attachment_1635992183.png b/archive/assets archive/poker/characters/jenny/concept/Attachment_1635992183.png similarity index 100% rename from assets/archive/poker/characters/jenny/concept/Attachment_1635992183.png rename to archive/assets archive/poker/characters/jenny/concept/Attachment_1635992183.png diff --git a/assets/archive/poker/characters/jenny/concept/Attachment_1635992915.png b/archive/assets archive/poker/characters/jenny/concept/Attachment_1635992915.png similarity index 100% rename from assets/archive/poker/characters/jenny/concept/Attachment_1635992915.png rename to archive/assets archive/poker/characters/jenny/concept/Attachment_1635992915.png diff --git a/assets/archive/poker/characters/jenny/concept/Attachment_1635995171.png b/archive/assets archive/poker/characters/jenny/concept/Attachment_1635995171.png similarity index 100% rename from assets/archive/poker/characters/jenny/concept/Attachment_1635995171.png rename to archive/assets archive/poker/characters/jenny/concept/Attachment_1635995171.png diff --git a/assets/archive/poker/characters/jenny/concept/gdf8rgvc.jpg b/archive/assets archive/poker/characters/jenny/concept/gdf8rgvc.jpg similarity index 100% rename from assets/archive/poker/characters/jenny/concept/gdf8rgvc.jpg rename to archive/assets archive/poker/characters/jenny/concept/gdf8rgvc.jpg diff --git a/assets/archive/poker/characters/jenny/sprites/base.png b/archive/assets archive/poker/characters/jenny/sprites/base.png similarity index 100% rename from assets/archive/poker/characters/jenny/sprites/base.png rename to archive/assets archive/poker/characters/jenny/sprites/base.png diff --git a/assets/archive/poker/characters/jenny/sprites/eyes/eyes0.png b/archive/assets archive/poker/characters/jenny/sprites/eyes/eyes0.png similarity index 100% rename from assets/archive/poker/characters/jenny/sprites/eyes/eyes0.png rename to archive/assets archive/poker/characters/jenny/sprites/eyes/eyes0.png diff --git a/assets/archive/poker/characters/jenny/sprites/eyes/eyes1.png b/archive/assets archive/poker/characters/jenny/sprites/eyes/eyes1.png similarity index 100% rename from assets/archive/poker/characters/jenny/sprites/eyes/eyes1.png rename to archive/assets archive/poker/characters/jenny/sprites/eyes/eyes1.png diff --git a/assets/archive/poker/characters/jenny/sprites/eyes/eyes2.png b/archive/assets archive/poker/characters/jenny/sprites/eyes/eyes2.png similarity index 100% rename from assets/archive/poker/characters/jenny/sprites/eyes/eyes2.png rename to archive/assets archive/poker/characters/jenny/sprites/eyes/eyes2.png diff --git a/assets/archive/poker/characters/jenny/sprites/visors/visor0.png b/archive/assets archive/poker/characters/jenny/sprites/visors/visor0.png similarity index 100% rename from assets/archive/poker/characters/jenny/sprites/visors/visor0.png rename to archive/assets archive/poker/characters/jenny/sprites/visors/visor0.png diff --git a/assets/archive/poker/characters/jenny/sprites/visors/visor1.png b/archive/assets archive/poker/characters/jenny/sprites/visors/visor1.png similarity index 100% rename from assets/archive/poker/characters/jenny/sprites/visors/visor1.png rename to archive/assets archive/poker/characters/jenny/sprites/visors/visor1.png diff --git a/assets/archive/poker/characters/jenny/sprites/visors/visor2.png b/archive/assets archive/poker/characters/jenny/sprites/visors/visor2.png similarity index 100% rename from assets/archive/poker/characters/jenny/sprites/visors/visor2.png rename to archive/assets archive/poker/characters/jenny/sprites/visors/visor2.png diff --git a/assets/archive/poker/characters/julie/character.xml b/archive/assets archive/poker/characters/julie/character.xml similarity index 100% rename from assets/archive/poker/characters/julie/character.xml rename to archive/assets archive/poker/characters/julie/character.xml diff --git a/assets/archive/poker/characters/julie/concept/idol2s.png b/archive/assets archive/poker/characters/julie/concept/idol2s.png similarity index 100% rename from assets/archive/poker/characters/julie/concept/idol2s.png rename to archive/assets archive/poker/characters/julie/concept/idol2s.png diff --git a/assets/archive/poker/characters/julie/concept/idol_sample_b.png b/archive/assets archive/poker/characters/julie/concept/idol_sample_b.png similarity index 100% rename from assets/archive/poker/characters/julie/concept/idol_sample_b.png rename to archive/assets archive/poker/characters/julie/concept/idol_sample_b.png diff --git a/assets/archive/poker/characters/julie/concept/shotgun.png b/archive/assets archive/poker/characters/julie/concept/shotgun.png similarity index 100% rename from assets/archive/poker/characters/julie/concept/shotgun.png rename to archive/assets archive/poker/characters/julie/concept/shotgun.png diff --git a/assets/archive/poker/characters/julie/concept/test2.png b/archive/assets archive/poker/characters/julie/concept/test2.png similarity index 100% rename from assets/archive/poker/characters/julie/concept/test2.png rename to archive/assets archive/poker/characters/julie/concept/test2.png diff --git a/assets/archive/poker/characters/julie/design/idol.psd b/archive/assets archive/poker/characters/julie/design/idol.psd similarity index 100% rename from assets/archive/poker/characters/julie/design/idol.psd rename to archive/assets archive/poker/characters/julie/design/idol.psd diff --git a/assets/archive/poker/characters/julie/design/screen_composition.png b/archive/assets archive/poker/characters/julie/design/screen_composition.png similarity index 100% rename from assets/archive/poker/characters/julie/design/screen_composition.png rename to archive/assets archive/poker/characters/julie/design/screen_composition.png diff --git a/assets/archive/poker/characters/julie/design/screen_composition_b.png b/archive/assets archive/poker/characters/julie/design/screen_composition_b.png similarity index 100% rename from assets/archive/poker/characters/julie/design/screen_composition_b.png rename to archive/assets archive/poker/characters/julie/design/screen_composition_b.png diff --git a/assets/archive/poker/characters/julie/design/sprite_base.png b/archive/assets archive/poker/characters/julie/design/sprite_base.png similarity index 100% rename from assets/archive/poker/characters/julie/design/sprite_base.png rename to archive/assets archive/poker/characters/julie/design/sprite_base.png diff --git a/assets/archive/poker/characters/julie/design/sprite_main_a.png b/archive/assets archive/poker/characters/julie/design/sprite_main_a.png similarity index 100% rename from assets/archive/poker/characters/julie/design/sprite_main_a.png rename to archive/assets archive/poker/characters/julie/design/sprite_main_a.png diff --git a/assets/archive/poker/characters/julie/design/sprite_main_b.png b/archive/assets archive/poker/characters/julie/design/sprite_main_b.png similarity index 100% rename from assets/archive/poker/characters/julie/design/sprite_main_b.png rename to archive/assets archive/poker/characters/julie/design/sprite_main_b.png diff --git a/assets/archive/poker/characters/julie/sprites/base.png b/archive/assets archive/poker/characters/julie/sprites/base.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/base.png rename to archive/assets archive/poker/characters/julie/sprites/base.png diff --git a/assets/archive/poker/characters/julie/sprites/eyebrows/eyebrows_0.png b/archive/assets archive/poker/characters/julie/sprites/eyebrows/eyebrows_0.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/eyebrows/eyebrows_0.png rename to archive/assets archive/poker/characters/julie/sprites/eyebrows/eyebrows_0.png diff --git a/assets/archive/poker/characters/julie/sprites/eyebrows/eyebrows_1.png b/archive/assets archive/poker/characters/julie/sprites/eyebrows/eyebrows_1.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/eyebrows/eyebrows_1.png rename to archive/assets archive/poker/characters/julie/sprites/eyebrows/eyebrows_1.png diff --git a/assets/archive/poker/characters/julie/sprites/eyebrows/eyebrows_2.png b/archive/assets archive/poker/characters/julie/sprites/eyebrows/eyebrows_2.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/eyebrows/eyebrows_2.png rename to archive/assets archive/poker/characters/julie/sprites/eyebrows/eyebrows_2.png diff --git a/assets/archive/poker/characters/julie/sprites/eyebrows/eyebrows_3.png b/archive/assets archive/poker/characters/julie/sprites/eyebrows/eyebrows_3.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/eyebrows/eyebrows_3.png rename to archive/assets archive/poker/characters/julie/sprites/eyebrows/eyebrows_3.png diff --git a/assets/archive/poker/characters/julie/sprites/eyes/eyes_0.png b/archive/assets archive/poker/characters/julie/sprites/eyes/eyes_0.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/eyes/eyes_0.png rename to archive/assets archive/poker/characters/julie/sprites/eyes/eyes_0.png diff --git a/assets/archive/poker/characters/julie/sprites/eyes/eyes_1.png b/archive/assets archive/poker/characters/julie/sprites/eyes/eyes_1.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/eyes/eyes_1.png rename to archive/assets archive/poker/characters/julie/sprites/eyes/eyes_1.png diff --git a/assets/archive/poker/characters/julie/sprites/eyes/eyes_2.png b/archive/assets archive/poker/characters/julie/sprites/eyes/eyes_2.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/eyes/eyes_2.png rename to archive/assets archive/poker/characters/julie/sprites/eyes/eyes_2.png diff --git a/assets/archive/poker/characters/julie/sprites/eyes/eyes_3.png b/archive/assets archive/poker/characters/julie/sprites/eyes/eyes_3.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/eyes/eyes_3.png rename to archive/assets archive/poker/characters/julie/sprites/eyes/eyes_3.png diff --git a/assets/archive/poker/characters/julie/sprites/mouth/mouth_0_0.png b/archive/assets archive/poker/characters/julie/sprites/mouth/mouth_0_0.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/mouth/mouth_0_0.png rename to archive/assets archive/poker/characters/julie/sprites/mouth/mouth_0_0.png diff --git a/assets/archive/poker/characters/julie/sprites/mouth/mouth_0_1.png b/archive/assets archive/poker/characters/julie/sprites/mouth/mouth_0_1.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/mouth/mouth_0_1.png rename to archive/assets archive/poker/characters/julie/sprites/mouth/mouth_0_1.png diff --git a/assets/archive/poker/characters/julie/sprites/mouth/mouth_0_2.png b/archive/assets archive/poker/characters/julie/sprites/mouth/mouth_0_2.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/mouth/mouth_0_2.png rename to archive/assets archive/poker/characters/julie/sprites/mouth/mouth_0_2.png diff --git a/assets/archive/poker/characters/julie/sprites/mouth/mouth_1_0.png b/archive/assets archive/poker/characters/julie/sprites/mouth/mouth_1_0.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/mouth/mouth_1_0.png rename to archive/assets archive/poker/characters/julie/sprites/mouth/mouth_1_0.png diff --git a/assets/archive/poker/characters/julie/sprites/mouth/mouth_1_1.png b/archive/assets archive/poker/characters/julie/sprites/mouth/mouth_1_1.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/mouth/mouth_1_1.png rename to archive/assets archive/poker/characters/julie/sprites/mouth/mouth_1_1.png diff --git a/assets/archive/poker/characters/julie/sprites/mouth/mouth_1_2.png b/archive/assets archive/poker/characters/julie/sprites/mouth/mouth_1_2.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/mouth/mouth_1_2.png rename to archive/assets archive/poker/characters/julie/sprites/mouth/mouth_1_2.png diff --git a/assets/archive/poker/characters/julie/sprites/mouth/mouth_2_0.png b/archive/assets archive/poker/characters/julie/sprites/mouth/mouth_2_0.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/mouth/mouth_2_0.png rename to archive/assets archive/poker/characters/julie/sprites/mouth/mouth_2_0.png diff --git a/assets/archive/poker/characters/julie/sprites/mouth/mouth_2_1.png b/archive/assets archive/poker/characters/julie/sprites/mouth/mouth_2_1.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/mouth/mouth_2_1.png rename to archive/assets archive/poker/characters/julie/sprites/mouth/mouth_2_1.png diff --git a/assets/archive/poker/characters/julie/sprites/mouth/mouth_2_2.png b/archive/assets archive/poker/characters/julie/sprites/mouth/mouth_2_2.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/mouth/mouth_2_2.png rename to archive/assets archive/poker/characters/julie/sprites/mouth/mouth_2_2.png diff --git a/assets/archive/poker/characters/julie/sprites/mouth/mouth_3_0.png b/archive/assets archive/poker/characters/julie/sprites/mouth/mouth_3_0.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/mouth/mouth_3_0.png rename to archive/assets archive/poker/characters/julie/sprites/mouth/mouth_3_0.png diff --git a/assets/archive/poker/characters/julie/sprites/mouth/mouth_3_1.png b/archive/assets archive/poker/characters/julie/sprites/mouth/mouth_3_1.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/mouth/mouth_3_1.png rename to archive/assets archive/poker/characters/julie/sprites/mouth/mouth_3_1.png diff --git a/assets/archive/poker/characters/julie/sprites/mouth/mouth_3_2.png b/archive/assets archive/poker/characters/julie/sprites/mouth/mouth_3_2.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/mouth/mouth_3_2.png rename to archive/assets archive/poker/characters/julie/sprites/mouth/mouth_3_2.png diff --git a/assets/archive/poker/characters/julie/sprites/sunglasses/sunglasses_0.png b/archive/assets archive/poker/characters/julie/sprites/sunglasses/sunglasses_0.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/sunglasses/sunglasses_0.png rename to archive/assets archive/poker/characters/julie/sprites/sunglasses/sunglasses_0.png diff --git a/assets/archive/poker/characters/julie/sprites/sunglasses/sunglasses_1.png b/archive/assets archive/poker/characters/julie/sprites/sunglasses/sunglasses_1.png similarity index 100% rename from assets/archive/poker/characters/julie/sprites/sunglasses/sunglasses_1.png rename to archive/assets archive/poker/characters/julie/sprites/sunglasses/sunglasses_1.png diff --git a/assets/archive/poker/characters/lucy/character.xml b/archive/assets archive/poker/characters/lucy/character.xml similarity index 100% rename from assets/archive/poker/characters/lucy/character.xml rename to archive/assets archive/poker/characters/lucy/character.xml diff --git a/assets/archive/poker/characters/lucy/concept/Attachment_1636071085.png b/archive/assets archive/poker/characters/lucy/concept/Attachment_1636071085.png similarity index 100% rename from assets/archive/poker/characters/lucy/concept/Attachment_1636071085.png rename to archive/assets archive/poker/characters/lucy/concept/Attachment_1636071085.png diff --git a/assets/archive/poker/characters/lucy/concept/Attachment_1636083467.png b/archive/assets archive/poker/characters/lucy/concept/Attachment_1636083467.png similarity index 100% rename from assets/archive/poker/characters/lucy/concept/Attachment_1636083467.png rename to archive/assets archive/poker/characters/lucy/concept/Attachment_1636083467.png diff --git a/assets/archive/poker/characters/lucy/concept/Attachment_1636182023.png b/archive/assets archive/poker/characters/lucy/concept/Attachment_1636182023.png similarity index 100% rename from assets/archive/poker/characters/lucy/concept/Attachment_1636182023.png rename to archive/assets archive/poker/characters/lucy/concept/Attachment_1636182023.png diff --git a/assets/archive/poker/characters/lucy/concept/p0I6XK6wXtaUD6eZwVONLazwDXkfSgW-M0y0Ex_BnMTFEzgp6Hk36o3UZzZp18EpCG6PxebbH-OaMg4mA7dhzCzjwjTiVX80AcfI.png b/archive/assets archive/poker/characters/lucy/concept/p0I6XK6wXtaUD6eZwVONLazwDXkfSgW-M0y0Ex_BnMTFEzgp6Hk36o3UZzZp18EpCG6PxebbH-OaMg4mA7dhzCzjwjTiVX80AcfI.png similarity index 100% rename from assets/archive/poker/characters/lucy/concept/p0I6XK6wXtaUD6eZwVONLazwDXkfSgW-M0y0Ex_BnMTFEzgp6Hk36o3UZzZp18EpCG6PxebbH-OaMg4mA7dhzCzjwjTiVX80AcfI.png rename to archive/assets archive/poker/characters/lucy/concept/p0I6XK6wXtaUD6eZwVONLazwDXkfSgW-M0y0Ex_BnMTFEzgp6Hk36o3UZzZp18EpCG6PxebbH-OaMg4mA7dhzCzjwjTiVX80AcfI.png diff --git a/assets/archive/poker/characters/lucy/design/Attachment_1636255946.png b/archive/assets archive/poker/characters/lucy/design/Attachment_1636255946.png similarity index 100% rename from assets/archive/poker/characters/lucy/design/Attachment_1636255946.png rename to archive/assets archive/poker/characters/lucy/design/Attachment_1636255946.png diff --git a/assets/archive/poker/characters/lucy/design/height_chart.png b/archive/assets archive/poker/characters/lucy/design/height_chart.png similarity index 100% rename from assets/archive/poker/characters/lucy/design/height_chart.png rename to archive/assets archive/poker/characters/lucy/design/height_chart.png diff --git a/assets/archive/poker/characters/lucy/design/screen_composition.png b/archive/assets archive/poker/characters/lucy/design/screen_composition.png similarity index 100% rename from assets/archive/poker/characters/lucy/design/screen_composition.png rename to archive/assets archive/poker/characters/lucy/design/screen_composition.png diff --git a/assets/archive/poker/characters/lucy/design/sprite_base.png b/archive/assets archive/poker/characters/lucy/design/sprite_base.png similarity index 100% rename from assets/archive/poker/characters/lucy/design/sprite_base.png rename to archive/assets archive/poker/characters/lucy/design/sprite_base.png diff --git a/assets/archive/poker/characters/lucy/design/sprite_main.png b/archive/assets archive/poker/characters/lucy/design/sprite_main.png similarity index 100% rename from assets/archive/poker/characters/lucy/design/sprite_main.png rename to archive/assets archive/poker/characters/lucy/design/sprite_main.png diff --git a/assets/archive/poker/characters/lucy/design/taker.psd b/archive/assets archive/poker/characters/lucy/design/taker.psd similarity index 100% rename from assets/archive/poker/characters/lucy/design/taker.psd rename to archive/assets archive/poker/characters/lucy/design/taker.psd diff --git a/assets/archive/poker/characters/lucy/sprites/base.png b/archive/assets archive/poker/characters/lucy/sprites/base.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/base.png rename to archive/assets archive/poker/characters/lucy/sprites/base.png diff --git a/assets/archive/poker/characters/lucy/sprites/eyebrows/eyebrows_0.png b/archive/assets archive/poker/characters/lucy/sprites/eyebrows/eyebrows_0.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/eyebrows/eyebrows_0.png rename to archive/assets archive/poker/characters/lucy/sprites/eyebrows/eyebrows_0.png diff --git a/assets/archive/poker/characters/lucy/sprites/eyebrows/eyebrows_1.png b/archive/assets archive/poker/characters/lucy/sprites/eyebrows/eyebrows_1.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/eyebrows/eyebrows_1.png rename to archive/assets archive/poker/characters/lucy/sprites/eyebrows/eyebrows_1.png diff --git a/assets/archive/poker/characters/lucy/sprites/eyebrows/eyebrows_2.png b/archive/assets archive/poker/characters/lucy/sprites/eyebrows/eyebrows_2.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/eyebrows/eyebrows_2.png rename to archive/assets archive/poker/characters/lucy/sprites/eyebrows/eyebrows_2.png diff --git a/assets/archive/poker/characters/lucy/sprites/eyebrows/eyebrows_3.png b/archive/assets archive/poker/characters/lucy/sprites/eyebrows/eyebrows_3.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/eyebrows/eyebrows_3.png rename to archive/assets archive/poker/characters/lucy/sprites/eyebrows/eyebrows_3.png diff --git a/assets/archive/poker/characters/lucy/sprites/eyebrows/eyebrows_4.png b/archive/assets archive/poker/characters/lucy/sprites/eyebrows/eyebrows_4.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/eyebrows/eyebrows_4.png rename to archive/assets archive/poker/characters/lucy/sprites/eyebrows/eyebrows_4.png diff --git a/assets/archive/poker/characters/lucy/sprites/eyes/eyes_0.png b/archive/assets archive/poker/characters/lucy/sprites/eyes/eyes_0.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/eyes/eyes_0.png rename to archive/assets archive/poker/characters/lucy/sprites/eyes/eyes_0.png diff --git a/assets/archive/poker/characters/lucy/sprites/eyes/eyes_1.png b/archive/assets archive/poker/characters/lucy/sprites/eyes/eyes_1.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/eyes/eyes_1.png rename to archive/assets archive/poker/characters/lucy/sprites/eyes/eyes_1.png diff --git a/assets/archive/poker/characters/lucy/sprites/eyes/eyes_2.png b/archive/assets archive/poker/characters/lucy/sprites/eyes/eyes_2.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/eyes/eyes_2.png rename to archive/assets archive/poker/characters/lucy/sprites/eyes/eyes_2.png diff --git a/assets/archive/poker/characters/lucy/sprites/eyes/eyes_3.png b/archive/assets archive/poker/characters/lucy/sprites/eyes/eyes_3.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/eyes/eyes_3.png rename to archive/assets archive/poker/characters/lucy/sprites/eyes/eyes_3.png diff --git a/assets/archive/poker/characters/lucy/sprites/eyes/eyes_4.png b/archive/assets archive/poker/characters/lucy/sprites/eyes/eyes_4.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/eyes/eyes_4.png rename to archive/assets archive/poker/characters/lucy/sprites/eyes/eyes_4.png diff --git a/assets/archive/poker/characters/lucy/sprites/mouth/mouth_0_0.png b/archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_0_0.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/mouth/mouth_0_0.png rename to archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_0_0.png diff --git a/assets/archive/poker/characters/lucy/sprites/mouth/mouth_0_1.png b/archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_0_1.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/mouth/mouth_0_1.png rename to archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_0_1.png diff --git a/assets/archive/poker/characters/lucy/sprites/mouth/mouth_0_2.png b/archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_0_2.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/mouth/mouth_0_2.png rename to archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_0_2.png diff --git a/assets/archive/poker/characters/lucy/sprites/mouth/mouth_1_0.png b/archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_1_0.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/mouth/mouth_1_0.png rename to archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_1_0.png diff --git a/assets/archive/poker/characters/lucy/sprites/mouth/mouth_1_1.png b/archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_1_1.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/mouth/mouth_1_1.png rename to archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_1_1.png diff --git a/assets/archive/poker/characters/lucy/sprites/mouth/mouth_1_2.png b/archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_1_2.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/mouth/mouth_1_2.png rename to archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_1_2.png diff --git a/assets/archive/poker/characters/lucy/sprites/mouth/mouth_2_0.png b/archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_2_0.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/mouth/mouth_2_0.png rename to archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_2_0.png diff --git a/assets/archive/poker/characters/lucy/sprites/mouth/mouth_2_1.png b/archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_2_1.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/mouth/mouth_2_1.png rename to archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_2_1.png diff --git a/assets/archive/poker/characters/lucy/sprites/mouth/mouth_2_2.png b/archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_2_2.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/mouth/mouth_2_2.png rename to archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_2_2.png diff --git a/assets/archive/poker/characters/lucy/sprites/mouth/mouth_3_0.png b/archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_3_0.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/mouth/mouth_3_0.png rename to archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_3_0.png diff --git a/assets/archive/poker/characters/lucy/sprites/mouth/mouth_3_1.png b/archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_3_1.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/mouth/mouth_3_1.png rename to archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_3_1.png diff --git a/assets/archive/poker/characters/lucy/sprites/mouth/mouth_3_2.png b/archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_3_2.png similarity index 100% rename from assets/archive/poker/characters/lucy/sprites/mouth/mouth_3_2.png rename to archive/assets archive/poker/characters/lucy/sprites/mouth/mouth_3_2.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink1.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink1.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink1.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink1.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink10.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink10.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink10.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink10.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink11.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink11.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink11.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink11.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink12.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink12.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink12.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink12.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink13.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink13.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink13.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink13.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink14.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink14.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink14.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink14.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink15.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink15.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink15.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink15.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink16.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink16.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink16.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink16.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink17.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink17.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink17.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink17.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink18.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink18.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink18.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink18.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink19.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink19.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink19.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink19.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink2.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink2.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink2.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink2.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink20.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink20.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink20.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink20.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink21.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink21.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink21.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink21.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink22.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink22.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink22.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink22.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink3.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink3.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink3.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink3.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink4.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink4.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink4.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink4.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink5.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink5.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink5.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink5.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink6.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink6.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink6.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink6.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink7.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink7.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink7.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink7.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink8.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink8.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink8.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink8.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink9.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink9.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink9.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/Animation_Loop_Blink9.png diff --git a/assets/archive/poker/characters/penny/Animation_Loop_Blink/animation-loop.png b/archive/assets archive/poker/characters/penny/Animation_Loop_Blink/animation-loop.png similarity index 100% rename from assets/archive/poker/characters/penny/Animation_Loop_Blink/animation-loop.png rename to archive/assets archive/poker/characters/penny/Animation_Loop_Blink/animation-loop.png diff --git a/assets/archive/poker/characters/penny/border.png b/archive/assets archive/poker/characters/penny/border.png similarity index 100% rename from assets/archive/poker/characters/penny/border.png rename to archive/assets archive/poker/characters/penny/border.png diff --git a/assets/archive/poker/characters/penny/character.xml b/archive/assets archive/poker/characters/penny/character.xml similarity index 100% rename from assets/archive/poker/characters/penny/character.xml rename to archive/assets archive/poker/characters/penny/character.xml diff --git a/assets/archive/poker/characters/penny/concept/First Concept/Attachment_1620525335.png b/archive/assets archive/poker/characters/penny/concept/First Concept/Attachment_1620525335.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/First Concept/Attachment_1620525335.png rename to archive/assets archive/poker/characters/penny/concept/First Concept/Attachment_1620525335.png diff --git a/assets/archive/poker/characters/penny/concept/First Concept/Attachment_1620705080.png b/archive/assets archive/poker/characters/penny/concept/First Concept/Attachment_1620705080.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/First Concept/Attachment_1620705080.png rename to archive/assets archive/poker/characters/penny/concept/First Concept/Attachment_1620705080.png diff --git a/assets/archive/poker/characters/penny/concept/First Concept/Attachment_1620772632.png b/archive/assets archive/poker/characters/penny/concept/First Concept/Attachment_1620772632.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/First Concept/Attachment_1620772632.png rename to archive/assets archive/poker/characters/penny/concept/First Concept/Attachment_1620772632.png diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Expressions.psd b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Expressions.psd similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Expressions.psd rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Expressions.psd diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Full Expressions and Eyes, Mouth Closed.psb b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Full Expressions and Eyes, Mouth Closed.psb similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Full Expressions and Eyes, Mouth Closed.psb rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Full Expressions and Eyes, Mouth Closed.psb diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Original File.psd b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Original File.psd similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Original File.psd rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Original File.psd diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Test Animation Talking.psd b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Test Animation Talking.psd similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Test Animation Talking.psd rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/PSD Source/Test Animation Talking.psd diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/SmartSelect_20210519-170421_ibisPaint20X.png b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/SmartSelect_20210519-170421_ibisPaint20X.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/SmartSelect_20210519-170421_ibisPaint20X.png rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/SmartSelect_20210519-170421_ibisPaint20X.png diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/body.png b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/body.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/body.png rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/body.png diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/body_sm.png b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/body_sm.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/body_sm.png rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/body_sm.png diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/eyes.png b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/eyes.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/eyes.png rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/eyes.png diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/eyes_sm.png b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/eyes_sm.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/eyes_sm.png rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/eyes_sm.png diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/face.png b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/face.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/face.png rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/face.png diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/face_sm.png b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/face_sm.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/face_sm.png rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/face_sm.png diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/mouth.png b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/mouth.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/mouth.png rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/mouth.png diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/mouth_sm.png b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/mouth_sm.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/Sprites/mouth_sm.png rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/Sprites/mouth_sm.png diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/Untitled317_20210521111636.png b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/Untitled317_20210521111636.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/Untitled317_20210521111636.png rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/Untitled317_20210521111636.png diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/Vector Version/Vector File.ai b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/Vector Version/Vector File.ai similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/Vector Version/Vector File.ai rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/Vector Version/Vector File.ai diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/Vector Version/Vector SVG.svg b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/Vector Version/Vector SVG.svg similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/Vector Version/Vector SVG.svg rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/Vector Version/Vector SVG.svg diff --git a/assets/archive/poker/characters/penny/concept/High Quality Concept/Vector Version/test.ai b/archive/assets archive/poker/characters/penny/concept/High Quality Concept/Vector Version/test.ai similarity index 100% rename from assets/archive/poker/characters/penny/concept/High Quality Concept/Vector Version/test.ai rename to archive/assets archive/poker/characters/penny/concept/High Quality Concept/Vector Version/test.ai diff --git a/assets/archive/poker/characters/penny/concept/Moe Concept/dealer.png b/archive/assets archive/poker/characters/penny/concept/Moe Concept/dealer.png similarity index 100% rename from assets/archive/poker/characters/penny/concept/Moe Concept/dealer.png rename to archive/assets archive/poker/characters/penny/concept/Moe Concept/dealer.png diff --git a/assets/archive/poker/characters/penny/design/animation_pattern_1.gif b/archive/assets archive/poker/characters/penny/design/animation_pattern_1.gif similarity index 100% rename from assets/archive/poker/characters/penny/design/animation_pattern_1.gif rename to archive/assets archive/poker/characters/penny/design/animation_pattern_1.gif diff --git a/assets/archive/poker/characters/penny/design/animation_pattern_2.gif b/archive/assets archive/poker/characters/penny/design/animation_pattern_2.gif similarity index 100% rename from assets/archive/poker/characters/penny/design/animation_pattern_2.gif rename to archive/assets archive/poker/characters/penny/design/animation_pattern_2.gif diff --git a/assets/archive/poker/characters/penny/design/dealer.psd b/archive/assets archive/poker/characters/penny/design/dealer.psd similarity index 100% rename from assets/archive/poker/characters/penny/design/dealer.psd rename to archive/assets archive/poker/characters/penny/design/dealer.psd diff --git a/assets/archive/poker/characters/penny/design/screen_composition.png b/archive/assets archive/poker/characters/penny/design/screen_composition.png similarity index 100% rename from assets/archive/poker/characters/penny/design/screen_composition.png rename to archive/assets archive/poker/characters/penny/design/screen_composition.png diff --git a/assets/archive/poker/characters/penny/design/sprite_base.png b/archive/assets archive/poker/characters/penny/design/sprite_base.png similarity index 100% rename from assets/archive/poker/characters/penny/design/sprite_base.png rename to archive/assets archive/poker/characters/penny/design/sprite_base.png diff --git a/assets/archive/poker/characters/penny/design/sprite_main.png b/archive/assets archive/poker/characters/penny/design/sprite_main.png similarity index 100% rename from assets/archive/poker/characters/penny/design/sprite_main.png rename to archive/assets archive/poker/characters/penny/design/sprite_main.png diff --git a/assets/archive/poker/characters/penny/sprites/dealer.png b/archive/assets archive/poker/characters/penny/sprites/dealer.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/dealer.png rename to archive/assets archive/poker/characters/penny/sprites/dealer.png diff --git a/assets/archive/poker/characters/penny/sprites/eyebrows/eyebrows_1.png b/archive/assets archive/poker/characters/penny/sprites/eyebrows/eyebrows_1.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/eyebrows/eyebrows_1.png rename to archive/assets archive/poker/characters/penny/sprites/eyebrows/eyebrows_1.png diff --git a/assets/archive/poker/characters/penny/sprites/eyebrows/eyebrows_2.png b/archive/assets archive/poker/characters/penny/sprites/eyebrows/eyebrows_2.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/eyebrows/eyebrows_2.png rename to archive/assets archive/poker/characters/penny/sprites/eyebrows/eyebrows_2.png diff --git a/assets/archive/poker/characters/penny/sprites/eyebrows/eyebrows_3.png b/archive/assets archive/poker/characters/penny/sprites/eyebrows/eyebrows_3.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/eyebrows/eyebrows_3.png rename to archive/assets archive/poker/characters/penny/sprites/eyebrows/eyebrows_3.png diff --git a/assets/archive/poker/characters/penny/sprites/eyebrows/eyebrows_4.png b/archive/assets archive/poker/characters/penny/sprites/eyebrows/eyebrows_4.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/eyebrows/eyebrows_4.png rename to archive/assets archive/poker/characters/penny/sprites/eyebrows/eyebrows_4.png diff --git a/assets/archive/poker/characters/penny/sprites/eyebrows/eyebrows_5.png b/archive/assets archive/poker/characters/penny/sprites/eyebrows/eyebrows_5.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/eyebrows/eyebrows_5.png rename to archive/assets archive/poker/characters/penny/sprites/eyebrows/eyebrows_5.png diff --git a/assets/archive/poker/characters/penny/sprites/eyes/eyes_1.png b/archive/assets archive/poker/characters/penny/sprites/eyes/eyes_1.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/eyes/eyes_1.png rename to archive/assets archive/poker/characters/penny/sprites/eyes/eyes_1.png diff --git a/assets/archive/poker/characters/penny/sprites/eyes/eyes_2.png b/archive/assets archive/poker/characters/penny/sprites/eyes/eyes_2.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/eyes/eyes_2.png rename to archive/assets archive/poker/characters/penny/sprites/eyes/eyes_2.png diff --git a/assets/archive/poker/characters/penny/sprites/eyes/eyes_3.png b/archive/assets archive/poker/characters/penny/sprites/eyes/eyes_3.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/eyes/eyes_3.png rename to archive/assets archive/poker/characters/penny/sprites/eyes/eyes_3.png diff --git a/assets/archive/poker/characters/penny/sprites/eyes/eyes_4.png b/archive/assets archive/poker/characters/penny/sprites/eyes/eyes_4.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/eyes/eyes_4.png rename to archive/assets archive/poker/characters/penny/sprites/eyes/eyes_4.png diff --git a/assets/archive/poker/characters/penny/sprites/mouths/mouth_1_1.png b/archive/assets archive/poker/characters/penny/sprites/mouths/mouth_1_1.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/mouths/mouth_1_1.png rename to archive/assets archive/poker/characters/penny/sprites/mouths/mouth_1_1.png diff --git a/assets/archive/poker/characters/penny/sprites/mouths/mouth_1_2.png b/archive/assets archive/poker/characters/penny/sprites/mouths/mouth_1_2.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/mouths/mouth_1_2.png rename to archive/assets archive/poker/characters/penny/sprites/mouths/mouth_1_2.png diff --git a/assets/archive/poker/characters/penny/sprites/mouths/mouth_1_3.png b/archive/assets archive/poker/characters/penny/sprites/mouths/mouth_1_3.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/mouths/mouth_1_3.png rename to archive/assets archive/poker/characters/penny/sprites/mouths/mouth_1_3.png diff --git a/assets/archive/poker/characters/penny/sprites/mouths/mouth_2_1.png b/archive/assets archive/poker/characters/penny/sprites/mouths/mouth_2_1.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/mouths/mouth_2_1.png rename to archive/assets archive/poker/characters/penny/sprites/mouths/mouth_2_1.png diff --git a/assets/archive/poker/characters/penny/sprites/mouths/mouth_2_2.png b/archive/assets archive/poker/characters/penny/sprites/mouths/mouth_2_2.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/mouths/mouth_2_2.png rename to archive/assets archive/poker/characters/penny/sprites/mouths/mouth_2_2.png diff --git a/assets/archive/poker/characters/penny/sprites/mouths/mouth_2_3.png b/archive/assets archive/poker/characters/penny/sprites/mouths/mouth_2_3.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/mouths/mouth_2_3.png rename to archive/assets archive/poker/characters/penny/sprites/mouths/mouth_2_3.png diff --git a/assets/archive/poker/characters/penny/sprites/mouths/mouth_3_1.png b/archive/assets archive/poker/characters/penny/sprites/mouths/mouth_3_1.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/mouths/mouth_3_1.png rename to archive/assets archive/poker/characters/penny/sprites/mouths/mouth_3_1.png diff --git a/assets/archive/poker/characters/penny/sprites/mouths/mouth_3_2.png b/archive/assets archive/poker/characters/penny/sprites/mouths/mouth_3_2.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/mouths/mouth_3_2.png rename to archive/assets archive/poker/characters/penny/sprites/mouths/mouth_3_2.png diff --git a/assets/archive/poker/characters/penny/sprites/mouths/mouth_3_3.png b/archive/assets archive/poker/characters/penny/sprites/mouths/mouth_3_3.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/mouths/mouth_3_3.png rename to archive/assets archive/poker/characters/penny/sprites/mouths/mouth_3_3.png diff --git a/assets/archive/poker/characters/penny/sprites/mouths/mouth_4_1.png b/archive/assets archive/poker/characters/penny/sprites/mouths/mouth_4_1.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/mouths/mouth_4_1.png rename to archive/assets archive/poker/characters/penny/sprites/mouths/mouth_4_1.png diff --git a/assets/archive/poker/characters/penny/sprites/mouths/mouth_4_2.png b/archive/assets archive/poker/characters/penny/sprites/mouths/mouth_4_2.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/mouths/mouth_4_2.png rename to archive/assets archive/poker/characters/penny/sprites/mouths/mouth_4_2.png diff --git a/assets/archive/poker/characters/penny/sprites/mouths/mouth_4_3.png b/archive/assets archive/poker/characters/penny/sprites/mouths/mouth_4_3.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/mouths/mouth_4_3.png rename to archive/assets archive/poker/characters/penny/sprites/mouths/mouth_4_3.png diff --git a/assets/archive/poker/characters/penny/sprites/sheet.png b/archive/assets archive/poker/characters/penny/sprites/sheet.png similarity index 100% rename from assets/archive/poker/characters/penny/sprites/sheet.png rename to archive/assets archive/poker/characters/penny/sprites/sheet.png diff --git a/assets/archive/poker/characters/sammy/character.xml b/archive/assets archive/poker/characters/sammy/character.xml similarity index 100% rename from assets/archive/poker/characters/sammy/character.xml rename to archive/assets archive/poker/characters/sammy/character.xml diff --git a/assets/archive/poker/characters/sammy/concept/cop2.png b/archive/assets archive/poker/characters/sammy/concept/cop2.png similarity index 100% rename from assets/archive/poker/characters/sammy/concept/cop2.png rename to archive/assets archive/poker/characters/sammy/concept/cop2.png diff --git a/assets/archive/poker/characters/sammy/concept/cop3a.png b/archive/assets archive/poker/characters/sammy/concept/cop3a.png similarity index 100% rename from assets/archive/poker/characters/sammy/concept/cop3a.png rename to archive/assets archive/poker/characters/sammy/concept/cop3a.png diff --git a/assets/archive/poker/characters/sammy/concept/cop3b.png b/archive/assets archive/poker/characters/sammy/concept/cop3b.png similarity index 100% rename from assets/archive/poker/characters/sammy/concept/cop3b.png rename to archive/assets archive/poker/characters/sammy/concept/cop3b.png diff --git a/assets/archive/poker/characters/sammy/concept/cop3c.png b/archive/assets archive/poker/characters/sammy/concept/cop3c.png similarity index 100% rename from assets/archive/poker/characters/sammy/concept/cop3c.png rename to archive/assets archive/poker/characters/sammy/concept/cop3c.png diff --git a/assets/archive/poker/characters/sammy/concept/coppa_sample_a.png b/archive/assets archive/poker/characters/sammy/concept/coppa_sample_a.png similarity index 100% rename from assets/archive/poker/characters/sammy/concept/coppa_sample_a.png rename to archive/assets archive/poker/characters/sammy/concept/coppa_sample_a.png diff --git a/assets/archive/poker/characters/sammy/concept/coppa_sample_b.png b/archive/assets archive/poker/characters/sammy/concept/coppa_sample_b.png similarity index 100% rename from assets/archive/poker/characters/sammy/concept/coppa_sample_b.png rename to archive/assets archive/poker/characters/sammy/concept/coppa_sample_b.png diff --git a/assets/archive/poker/characters/sammy/concept/coppa_sample_b2.png b/archive/assets archive/poker/characters/sammy/concept/coppa_sample_b2.png similarity index 100% rename from assets/archive/poker/characters/sammy/concept/coppa_sample_b2.png rename to archive/assets archive/poker/characters/sammy/concept/coppa_sample_b2.png diff --git a/assets/archive/poker/characters/sammy/design/coppa.psd b/archive/assets archive/poker/characters/sammy/design/coppa.psd similarity index 100% rename from assets/archive/poker/characters/sammy/design/coppa.psd rename to archive/assets archive/poker/characters/sammy/design/coppa.psd diff --git a/assets/archive/poker/characters/sammy/design/screen_composition.png b/archive/assets archive/poker/characters/sammy/design/screen_composition.png similarity index 100% rename from assets/archive/poker/characters/sammy/design/screen_composition.png rename to archive/assets archive/poker/characters/sammy/design/screen_composition.png diff --git a/assets/archive/poker/characters/sammy/design/sprite_base.png b/archive/assets archive/poker/characters/sammy/design/sprite_base.png similarity index 100% rename from assets/archive/poker/characters/sammy/design/sprite_base.png rename to archive/assets archive/poker/characters/sammy/design/sprite_base.png diff --git a/assets/archive/poker/characters/sammy/design/sprite_main.png b/archive/assets archive/poker/characters/sammy/design/sprite_main.png similarity index 100% rename from assets/archive/poker/characters/sammy/design/sprite_main.png rename to archive/assets archive/poker/characters/sammy/design/sprite_main.png diff --git a/assets/archive/poker/characters/sammy/sprites/base.png b/archive/assets archive/poker/characters/sammy/sprites/base.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/base.png rename to archive/assets archive/poker/characters/sammy/sprites/base.png diff --git a/assets/archive/poker/characters/sammy/sprites/eyebrows/eyebrows_0.png b/archive/assets archive/poker/characters/sammy/sprites/eyebrows/eyebrows_0.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/eyebrows/eyebrows_0.png rename to archive/assets archive/poker/characters/sammy/sprites/eyebrows/eyebrows_0.png diff --git a/assets/archive/poker/characters/sammy/sprites/eyebrows/eyebrows_1.png b/archive/assets archive/poker/characters/sammy/sprites/eyebrows/eyebrows_1.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/eyebrows/eyebrows_1.png rename to archive/assets archive/poker/characters/sammy/sprites/eyebrows/eyebrows_1.png diff --git a/assets/archive/poker/characters/sammy/sprites/eyebrows/eyebrows_2.png b/archive/assets archive/poker/characters/sammy/sprites/eyebrows/eyebrows_2.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/eyebrows/eyebrows_2.png rename to archive/assets archive/poker/characters/sammy/sprites/eyebrows/eyebrows_2.png diff --git a/assets/archive/poker/characters/sammy/sprites/eyebrows/eyebrows_3.png b/archive/assets archive/poker/characters/sammy/sprites/eyebrows/eyebrows_3.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/eyebrows/eyebrows_3.png rename to archive/assets archive/poker/characters/sammy/sprites/eyebrows/eyebrows_3.png diff --git a/assets/archive/poker/characters/sammy/sprites/eyebrows/eyebrows_4.png b/archive/assets archive/poker/characters/sammy/sprites/eyebrows/eyebrows_4.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/eyebrows/eyebrows_4.png rename to archive/assets archive/poker/characters/sammy/sprites/eyebrows/eyebrows_4.png diff --git a/assets/archive/poker/characters/sammy/sprites/eyes/eyes_0.png b/archive/assets archive/poker/characters/sammy/sprites/eyes/eyes_0.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/eyes/eyes_0.png rename to archive/assets archive/poker/characters/sammy/sprites/eyes/eyes_0.png diff --git a/assets/archive/poker/characters/sammy/sprites/eyes/eyes_1.png b/archive/assets archive/poker/characters/sammy/sprites/eyes/eyes_1.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/eyes/eyes_1.png rename to archive/assets archive/poker/characters/sammy/sprites/eyes/eyes_1.png diff --git a/assets/archive/poker/characters/sammy/sprites/eyes/eyes_2.png b/archive/assets archive/poker/characters/sammy/sprites/eyes/eyes_2.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/eyes/eyes_2.png rename to archive/assets archive/poker/characters/sammy/sprites/eyes/eyes_2.png diff --git a/assets/archive/poker/characters/sammy/sprites/eyes/eyes_3.png b/archive/assets archive/poker/characters/sammy/sprites/eyes/eyes_3.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/eyes/eyes_3.png rename to archive/assets archive/poker/characters/sammy/sprites/eyes/eyes_3.png diff --git a/assets/archive/poker/characters/sammy/sprites/mouth/mouth_0_0.png b/archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_0_0.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/mouth/mouth_0_0.png rename to archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_0_0.png diff --git a/assets/archive/poker/characters/sammy/sprites/mouth/mouth_0_1.png b/archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_0_1.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/mouth/mouth_0_1.png rename to archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_0_1.png diff --git a/assets/archive/poker/characters/sammy/sprites/mouth/mouth_0_2.png b/archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_0_2.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/mouth/mouth_0_2.png rename to archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_0_2.png diff --git a/assets/archive/poker/characters/sammy/sprites/mouth/mouth_1_0.png b/archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_1_0.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/mouth/mouth_1_0.png rename to archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_1_0.png diff --git a/assets/archive/poker/characters/sammy/sprites/mouth/mouth_1_1.png b/archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_1_1.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/mouth/mouth_1_1.png rename to archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_1_1.png diff --git a/assets/archive/poker/characters/sammy/sprites/mouth/mouth_1_2.png b/archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_1_2.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/mouth/mouth_1_2.png rename to archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_1_2.png diff --git a/assets/archive/poker/characters/sammy/sprites/mouth/mouth_2_0.png b/archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_2_0.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/mouth/mouth_2_0.png rename to archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_2_0.png diff --git a/assets/archive/poker/characters/sammy/sprites/mouth/mouth_2_1.png b/archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_2_1.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/mouth/mouth_2_1.png rename to archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_2_1.png diff --git a/assets/archive/poker/characters/sammy/sprites/mouth/mouth_2_2.png b/archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_2_2.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/mouth/mouth_2_2.png rename to archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_2_2.png diff --git a/assets/archive/poker/characters/sammy/sprites/mouth/mouth_3_0.png b/archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_3_0.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/mouth/mouth_3_0.png rename to archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_3_0.png diff --git a/assets/archive/poker/characters/sammy/sprites/mouth/mouth_3_1.png b/archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_3_1.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/mouth/mouth_3_1.png rename to archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_3_1.png diff --git a/assets/archive/poker/characters/sammy/sprites/mouth/mouth_3_2.png b/archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_3_2.png similarity index 100% rename from assets/archive/poker/characters/sammy/sprites/mouth/mouth_3_2.png rename to archive/assets archive/poker/characters/sammy/sprites/mouth/mouth_3_2.png diff --git a/assets/archive/poker/characters/unused/cissnei/Attachment_1621537997.png b/archive/assets archive/poker/characters/unused/cissnei/Attachment_1621537997.png similarity index 100% rename from assets/archive/poker/characters/unused/cissnei/Attachment_1621537997.png rename to archive/assets archive/poker/characters/unused/cissnei/Attachment_1621537997.png diff --git a/assets/archive/poker/characters/unused/cissnei/SmartSelect_20210604-133433_ibisPaint_X.jpg b/archive/assets archive/poker/characters/unused/cissnei/SmartSelect_20210604-133433_ibisPaint_X.jpg similarity index 100% rename from assets/archive/poker/characters/unused/cissnei/SmartSelect_20210604-133433_ibisPaint_X.jpg rename to archive/assets archive/poker/characters/unused/cissnei/SmartSelect_20210604-133433_ibisPaint_X.jpg diff --git a/assets/archive/poker/characters/unused/cissnei/Untitled337_20210606164342.png b/archive/assets archive/poker/characters/unused/cissnei/Untitled337_20210606164342.png similarity index 100% rename from assets/archive/poker/characters/unused/cissnei/Untitled337_20210606164342.png rename to archive/assets archive/poker/characters/unused/cissnei/Untitled337_20210606164342.png diff --git a/assets/archive/poker/world/pub/Concept/floor.png b/archive/assets archive/poker/world/pub/Concept/floor.png similarity index 100% rename from assets/archive/poker/world/pub/Concept/floor.png rename to archive/assets archive/poker/world/pub/Concept/floor.png diff --git a/assets/archive/poker/world/pub/Concept/top.png b/archive/assets archive/poker/world/pub/Concept/top.png similarity index 100% rename from assets/archive/poker/world/pub/Concept/top.png rename to archive/assets archive/poker/world/pub/Concept/top.png diff --git a/assets/archive/poker/world/pub/pub_skywal_upscaledl.png b/archive/assets archive/poker/world/pub/pub_skywal_upscaledl.png similarity index 100% rename from assets/archive/poker/world/pub/pub_skywal_upscaledl.png rename to archive/assets archive/poker/world/pub/pub_skywal_upscaledl.png diff --git a/assets/archive/poker/world/pub/pub_skywall.png b/archive/assets archive/poker/world/pub/pub_skywall.png similarity index 100% rename from assets/archive/poker/world/pub/pub_skywall.png rename to archive/assets archive/poker/world/pub/pub_skywall.png diff --git a/assets/archive/poker/world/pub/pub_skywall_low.png b/archive/assets archive/poker/world/pub/pub_skywall_low.png similarity index 100% rename from assets/archive/poker/world/pub/pub_skywall_low.png rename to archive/assets archive/poker/world/pub/pub_skywall_low.png diff --git a/assets/archive/poker/world/pub/pub_skywall_original.png b/archive/assets archive/poker/world/pub/pub_skywall_original.png similarity index 100% rename from assets/archive/poker/world/pub/pub_skywall_original.png rename to archive/assets archive/poker/world/pub/pub_skywall_original.png diff --git a/assets/archive/pokergame/cards.png b/archive/assets archive/pokergame/cards.png similarity index 100% rename from assets/archive/pokergame/cards.png rename to archive/assets archive/pokergame/cards.png diff --git a/assets/archive/pokergame/characters/death/a.wav b/archive/assets archive/pokergame/characters/death/a.wav similarity index 100% rename from assets/archive/pokergame/characters/death/a.wav rename to archive/assets archive/pokergame/characters/death/a.wav diff --git a/assets/archive/pokergame/characters/death/com.wav b/archive/assets archive/pokergame/characters/death/com.wav similarity index 100% rename from assets/archive/pokergame/characters/death/com.wav rename to archive/assets archive/pokergame/characters/death/com.wav diff --git a/assets/archive/pokergame/characters/death/ie.wav b/archive/assets archive/pokergame/characters/death/ie.wav similarity index 100% rename from assets/archive/pokergame/characters/death/ie.wav rename to archive/assets archive/pokergame/characters/death/ie.wav diff --git a/assets/archive/pokergame/characters/death/or.wav b/archive/assets archive/pokergame/characters/death/or.wav similarity index 100% rename from assets/archive/pokergame/characters/death/or.wav rename to archive/assets archive/pokergame/characters/death/or.wav diff --git a/assets/archive/pokergame/characters/death/ray.wav b/archive/assets archive/pokergame/characters/death/ray.wav similarity index 100% rename from assets/archive/pokergame/characters/death/ray.wav rename to archive/assets archive/pokergame/characters/death/ray.wav diff --git a/assets/archive/pokergame/characters/death/sheet.png b/archive/assets archive/pokergame/characters/death/sheet.png similarity index 100% rename from assets/archive/pokergame/characters/death/sheet.png rename to archive/assets archive/pokergame/characters/death/sheet.png diff --git a/assets/archive/pokergame/characters/penny/sheet.png b/archive/assets archive/pokergame/characters/penny/sheet.png similarity index 100% rename from assets/archive/pokergame/characters/penny/sheet.png rename to archive/assets archive/pokergame/characters/penny/sheet.png diff --git a/assets/archive/pokergame/font/BIZUDPGothic-Bold.ttf b/archive/assets archive/pokergame/font/BIZUDPGothic-Bold.ttf similarity index 100% rename from assets/archive/pokergame/font/BIZUDPGothic-Bold.ttf rename to archive/assets archive/pokergame/font/BIZUDPGothic-Bold.ttf diff --git a/assets/archive/pokergame/font/BIZUDPGothic-Regular.ttf b/archive/assets archive/pokergame/font/BIZUDPGothic-Regular.ttf similarity index 100% rename from assets/archive/pokergame/font/BIZUDPGothic-Regular.ttf rename to archive/assets archive/pokergame/font/BIZUDPGothic-Regular.ttf diff --git a/assets/archive/pokergame/font/OFL.txt b/archive/assets archive/pokergame/font/OFL.txt similarity index 100% rename from assets/archive/pokergame/font/OFL.txt rename to archive/assets archive/pokergame/font/OFL.txt diff --git a/assets/archive/pokergame/scripty.docx b/archive/assets archive/pokergame/scripty.docx similarity index 100% rename from assets/archive/pokergame/scripty.docx rename to archive/assets archive/pokergame/scripty.docx diff --git a/assets/archive/pokergame/vn/Scene_1.xml b/archive/assets archive/pokergame/vn/Scene_1.xml similarity index 100% rename from assets/archive/pokergame/vn/Scene_1.xml rename to archive/assets archive/pokergame/vn/Scene_1.xml diff --git a/assets/archive/shared/fonts/opensans/OpenSans-Bold.ttf b/archive/assets archive/shared/fonts/opensans/OpenSans-Bold.ttf similarity index 100% rename from assets/archive/shared/fonts/opensans/OpenSans-Bold.ttf rename to archive/assets archive/shared/fonts/opensans/OpenSans-Bold.ttf diff --git a/assets/archive/shared/fonts/opensans/OpenSans-BoldItalic.ttf b/archive/assets archive/shared/fonts/opensans/OpenSans-BoldItalic.ttf similarity index 100% rename from assets/archive/shared/fonts/opensans/OpenSans-BoldItalic.ttf rename to archive/assets archive/shared/fonts/opensans/OpenSans-BoldItalic.ttf diff --git a/assets/archive/shared/fonts/opensans/OpenSans-ExtraBold.ttf b/archive/assets archive/shared/fonts/opensans/OpenSans-ExtraBold.ttf similarity index 100% rename from assets/archive/shared/fonts/opensans/OpenSans-ExtraBold.ttf rename to archive/assets archive/shared/fonts/opensans/OpenSans-ExtraBold.ttf diff --git a/assets/archive/shared/fonts/opensans/OpenSans-ExtraBoldItalic.ttf b/archive/assets archive/shared/fonts/opensans/OpenSans-ExtraBoldItalic.ttf similarity index 100% rename from assets/archive/shared/fonts/opensans/OpenSans-ExtraBoldItalic.ttf rename to archive/assets archive/shared/fonts/opensans/OpenSans-ExtraBoldItalic.ttf diff --git a/assets/archive/shared/fonts/opensans/OpenSans-Italic.ttf b/archive/assets archive/shared/fonts/opensans/OpenSans-Italic.ttf similarity index 100% rename from assets/archive/shared/fonts/opensans/OpenSans-Italic.ttf rename to archive/assets archive/shared/fonts/opensans/OpenSans-Italic.ttf diff --git a/assets/archive/shared/fonts/opensans/OpenSans-Light.ttf b/archive/assets archive/shared/fonts/opensans/OpenSans-Light.ttf similarity index 100% rename from assets/archive/shared/fonts/opensans/OpenSans-Light.ttf rename to archive/assets archive/shared/fonts/opensans/OpenSans-Light.ttf diff --git a/assets/archive/shared/fonts/opensans/OpenSans-LightItalic.ttf b/archive/assets archive/shared/fonts/opensans/OpenSans-LightItalic.ttf similarity index 100% rename from assets/archive/shared/fonts/opensans/OpenSans-LightItalic.ttf rename to archive/assets archive/shared/fonts/opensans/OpenSans-LightItalic.ttf diff --git a/assets/archive/shared/fonts/opensans/OpenSans-Regular.ttf b/archive/assets archive/shared/fonts/opensans/OpenSans-Regular.ttf similarity index 100% rename from assets/archive/shared/fonts/opensans/OpenSans-Regular.ttf rename to archive/assets archive/shared/fonts/opensans/OpenSans-Regular.ttf diff --git a/assets/archive/shared/fonts/opensans/OpenSans-Semibold.ttf b/archive/assets archive/shared/fonts/opensans/OpenSans-Semibold.ttf similarity index 100% rename from assets/archive/shared/fonts/opensans/OpenSans-Semibold.ttf rename to archive/assets archive/shared/fonts/opensans/OpenSans-Semibold.ttf diff --git a/assets/archive/shared/fonts/opensans/OpenSans-SemiboldItalic.ttf b/archive/assets archive/shared/fonts/opensans/OpenSans-SemiboldItalic.ttf similarity index 100% rename from assets/archive/shared/fonts/opensans/OpenSans-SemiboldItalic.ttf rename to archive/assets archive/shared/fonts/opensans/OpenSans-SemiboldItalic.ttf diff --git a/assets/archive/shared/shaders/singlerenderlist.frag b/archive/assets archive/shared/shaders/singlerenderlist.frag similarity index 100% rename from assets/archive/shared/shaders/singlerenderlist.frag rename to archive/assets archive/shared/shaders/singlerenderlist.frag diff --git a/assets/archive/shared/shaders/singlerenderlist.vert b/archive/assets archive/shared/shaders/singlerenderlist.vert similarity index 100% rename from assets/archive/shared/shaders/singlerenderlist.vert rename to archive/assets archive/shared/shaders/singlerenderlist.vert diff --git a/assets/archive/shared/shaders/textured.frag b/archive/assets archive/shared/shaders/textured.frag similarity index 100% rename from assets/archive/shared/shaders/textured.frag rename to archive/assets archive/shared/shaders/textured.frag diff --git a/assets/archive/shared/shaders/textured.vert b/archive/assets archive/shared/shaders/textured.vert similarity index 100% rename from assets/archive/shared/shaders/textured.vert rename to archive/assets archive/shared/shaders/textured.vert diff --git a/assets/archive/shared/textures/test_texture.png b/archive/assets archive/shared/textures/test_texture.png similarity index 100% rename from assets/archive/shared/textures/test_texture.png rename to archive/assets archive/shared/textures/test_texture.png diff --git a/assets/archive/tictactoe/font/BIZUDPGothic-Bold.ttf b/archive/assets archive/tictactoe/font/BIZUDPGothic-Bold.ttf similarity index 100% rename from assets/archive/tictactoe/font/BIZUDPGothic-Bold.ttf rename to archive/assets archive/tictactoe/font/BIZUDPGothic-Bold.ttf diff --git a/assets/archive/tictactoe/font/BIZUDPGothic-Regular.ttf b/archive/assets archive/tictactoe/font/BIZUDPGothic-Regular.ttf similarity index 100% rename from assets/archive/tictactoe/font/BIZUDPGothic-Regular.ttf rename to archive/assets archive/tictactoe/font/BIZUDPGothic-Regular.ttf diff --git a/assets/archive/tictactoe/font/OFL.txt b/archive/assets archive/tictactoe/font/OFL.txt similarity index 100% rename from assets/archive/tictactoe/font/OFL.txt rename to archive/assets archive/tictactoe/font/OFL.txt diff --git a/assets/archive/tictactoe/locale/en.xml b/archive/assets archive/tictactoe/locale/en.xml similarity index 100% rename from assets/archive/tictactoe/locale/en.xml rename to archive/assets archive/tictactoe/locale/en.xml diff --git a/assets/archive/tictactoe/test.xml b/archive/assets archive/tictactoe/test.xml similarity index 100% rename from assets/archive/tictactoe/test.xml rename to archive/assets archive/tictactoe/test.xml diff --git a/assets/archive/tictactoe/xo.png b/archive/assets archive/tictactoe/xo.png similarity index 100% rename from assets/archive/tictactoe/xo.png rename to archive/assets archive/tictactoe/xo.png diff --git a/assets/games/liminal/example-scene.xml b/assets/games/liminal/example-scene.xml index b1c198d8..69c5c707 100644 --- a/assets/games/liminal/example-scene.xml +++ b/assets/games/liminal/example-scene.xml @@ -36,7 +36,7 @@ --> - + diff --git a/src/dawn/display/animation/SimplerCallbackAnimation.hpp b/src/dawn/display/animation/SimplerCallbackAnimation.hpp new file mode 100644 index 00000000..4ccf45c4 --- /dev/null +++ b/src/dawn/display/animation/SimplerCallbackAnimation.hpp @@ -0,0 +1,31 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "SimpleAnimation.hpp" + +namespace Dawn { + template + struct SimplerCallbackAnimation : public SimpleAnimation { + protected: + T value; + + void onValueModified() override { + SimpleAnimation::onValueModified(); + this->callback(this->value); + } + + public: + std::function callback = std::function(); + + /** + * Construct a new Simple Function Animation object + */ + SimplerCallbackAnimation() : + SimpleAnimation(&value) + { + } + }; +} \ No newline at end of file diff --git a/src/dawn/games/vn/components/VNManager.hpp b/src/dawn/games/vn/components/VNManager.hpp index 8f999ffb..7f5f1748 100644 --- a/src/dawn/games/vn/components/VNManager.hpp +++ b/src/dawn/games/vn/components/VNManager.hpp @@ -41,17 +41,11 @@ namespace Dawn { */ void setEvent(VNEvent *event); + /** + * Ends the current event, and moves to the next one. + */ void nextEvent(); - // template - // T * setEvent(T *event) { - // auto oldCurrent = this->currentEvent; - // this->currentEvent = event; - // if(this->hasInitialized && event != nullptr) event->start(oldCurrent); - // delete oldCurrent; - // return event; - // } - void onStart() override; void onDispose() override; diff --git a/src/dawn/games/vn/events/VNPositionEvent.hpp b/src/dawn/games/vn/events/VNPositionEvent.hpp new file mode 100644 index 00000000..c3d359fe --- /dev/null +++ b/src/dawn/games/vn/events/VNPositionEvent.hpp @@ -0,0 +1,58 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "VNEvent.hpp" +#include "scene/SceneItem.hpp" +#include "display/animation/SimplerCallbackAnimation.hpp" + +#define VN_POSITION_EVENT_VALUE_UNCHANGED -123456789 + +namespace Dawn { + class VNPositionEvent : public VNEvent { + public: + float_t x = VN_POSITION_EVENT_VALUE_UNCHANGED; + float_t y = VN_POSITION_EVENT_VALUE_UNCHANGED; + float_t z = VN_POSITION_EVENT_VALUE_UNCHANGED; + SceneItem *item = nullptr; + float_t duration; + + protected: + SimplerCallbackAnimation animation; + + void onStart() override { + assertNotNull(item); + + auto start = item->transform.getLocalPosition(); + auto destination = glm::vec3( + x == VN_POSITION_EVENT_VALUE_UNCHANGED ? start.x : x, + y == VN_POSITION_EVENT_VALUE_UNCHANGED ? start.y : y, + z == VN_POSITION_EVENT_VALUE_UNCHANGED ? start.z : z + ); + + if(duration > 0) { + animation.clear(); + + animation.addKeyframe(0, start); + animation.addKeyframe(duration, destination); + + animation.callback = [&](glm::vec3 v){ + this->item->transform.setLocalPosition(v); + }; + + useEvent([&]() { + this->next(); + }, animation.event2AnimationEnd); + + useEvent([&](float_t delta) { + animation.tick(delta); + }, getScene()->eventSceneUpdate); + } else { + this->item->transform.setLocalPosition(destination); + this->next(); + } + } + }; +} \ No newline at end of file diff --git a/src/dawn/state/StateEvent.hpp b/src/dawn/state/StateEvent.hpp index 5d75f387..d54ed9ae 100644 --- a/src/dawn/state/StateEvent.hpp +++ b/src/dawn/state/StateEvent.hpp @@ -39,8 +39,9 @@ namespace Dawn { * @param args Arguments for this event to pass to the listeners. */ void invoke(A... args) { - auto it = this->_eventListeners.begin(); - while(it != this->_eventListeners.end()) { + auto copy = this->_eventListeners; + auto it = copy.begin(); + while(it != copy.end()) { it->listener(args...); ++it; } diff --git a/src/dawnliminal/scenes/HelloWorldScene.hpp b/src/dawnliminal/scenes/HelloWorldScene.hpp index 8629fddd..a62c843d 100644 --- a/src/dawnliminal/scenes/HelloWorldScene.hpp +++ b/src/dawnliminal/scenes/HelloWorldScene.hpp @@ -9,6 +9,7 @@ #include "prefabs/SimpleSpinningCubePrefab.hpp" #include "games/vn/components/VNManager.hpp" #include "games/vn/events/VNDummyEvent.hpp" +#include "games/vn/events/VNPositionEvent.hpp" namespace Dawn { class HelloWorldScene : public Scene { @@ -29,7 +30,14 @@ namespace Dawn { auto vnManager = vnItem->addComponent(); auto eventTest = vnManager->createEvent(); + + auto positionEvent = vnManager->createEvent(); + positionEvent->x = 2.0f; + positionEvent->item = cube; + positionEvent->duration = 3.0f; + eventTest + ->then(positionEvent) ->then(vnManager->createEvent()) ->then(vnManager->createEvent()) ; From 23d5e131788cd5057f2eef628c1886bfdde230c5 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Fri, 21 Apr 2023 23:30:33 -0700 Subject: [PATCH 3/9] VNEvents --- assets/games/liminal/example-scene.xml | 12 ++-- src/dawn/games/vn/components/VNManager.hpp | 2 +- src/dawn/games/vn/events/VNAnimateEvent.hpp | 49 ++++++++++++++++ src/dawn/games/vn/events/VNEvent.hpp | 1 + src/dawn/games/vn/events/VNPositionEvent.hpp | 61 +++++++++----------- src/dawn/games/vn/events/VNSetEvent.hpp | 27 +++++++++ src/dawn/games/vn/events/VNTextEvent.hpp | 20 +++++++ src/dawn/games/vn/events/VNWaitEvent.hpp | 18 ++++++ src/dawnliminal/scenes/HelloWorldScene.hpp | 17 +++++- 9 files changed, 163 insertions(+), 44 deletions(-) create mode 100644 src/dawn/games/vn/events/VNAnimateEvent.hpp create mode 100644 src/dawn/games/vn/events/VNSetEvent.hpp create mode 100644 src/dawn/games/vn/events/VNTextEvent.hpp create mode 100644 src/dawn/games/vn/events/VNWaitEvent.hpp diff --git a/assets/games/liminal/example-scene.xml b/assets/games/liminal/example-scene.xml index 69c5c707..5d3fdab1 100644 --- a/assets/games/liminal/example-scene.xml +++ b/assets/games/liminal/example-scene.xml @@ -16,7 +16,7 @@ - + @@ -24,7 +24,7 @@ - + Hi, I'm Craig. @@ -35,12 +35,12 @@ at the same time. This will make craig exit screen left. --> - - + + - + @@ -90,7 +90,7 @@ - + + + + + + + + + + + + Hi, I'm Ethereality. - + + + + Hi, I'm Craig. + \ No newline at end of file diff --git a/src/dawn/display/Color.hpp b/src/dawn/display/Color.hpp index 7daedd0d..aee9147f 100644 --- a/src/dawn/display/Color.hpp +++ b/src/dawn/display/Color.hpp @@ -18,6 +18,33 @@ namespace Dawn { (float_t)a / 100.0f }; } + + struct Color operator * (const float_t &x) { + return { + (uint8_t)(r * x), + (uint8_t)(g * x), + (uint8_t)(b * x), + (uint8_t)(a * x) + }; + } + + struct Color operator - (const struct Color &color) { + return { + (uint8_t)(r - color.r), + (uint8_t)(g - color.g), + (uint8_t)(b - color.b), + (uint8_t)(a - color.a) + }; + } + + struct Color operator + (const struct Color &color) { + return { + (uint8_t)(r + color.r), + (uint8_t)(g + color.g), + (uint8_t)(b + color.b), + (uint8_t)(a + color.a) + }; + } }; #define COLOR_WHITE { 255, 255, 255, 100 } diff --git a/src/dawntools/vnscenetool/CMakeLists.txt b/src/dawntools/vnscenetool/CMakeLists.txt index ff3749d2..865f7454 100644 --- a/src/dawntools/vnscenetool/CMakeLists.txt +++ b/src/dawntools/vnscenetool/CMakeLists.txt @@ -19,6 +19,7 @@ target_sources(vnscenetool VNSceneParser.cpp VNSceneEventsParser.cpp VNSceneGen.cpp + VNSceneItemParser.cpp ) # Includes diff --git a/src/dawntools/vnscenetool/VNSceneEventsParser.cpp b/src/dawntools/vnscenetool/VNSceneEventsParser.cpp index 154860b4..fe8223e7 100644 --- a/src/dawntools/vnscenetool/VNSceneEventsParser.cpp +++ b/src/dawntools/vnscenetool/VNSceneEventsParser.cpp @@ -41,6 +41,13 @@ int32_t VNSceneEventsParser::onParse( ret = (VNPositionEventParser()).parse(child, &event.position, error); if(ret != 0) return ret; + } else if(child->node == "set") { + VNSetEvent parser; + event.type = VN_SCENE_EVENT_TYPE_SET; + ret = (VNSetEventParser()).parse(child, &event.set, error); + if(ret != 0) return ret; + + } else { *error = "Unknown child node '" + child->node + "'"; return -1; diff --git a/src/dawntools/vnscenetool/VNSceneEventsParser.hpp b/src/dawntools/vnscenetool/VNSceneEventsParser.hpp index a004c298..33849d9d 100644 --- a/src/dawntools/vnscenetool/VNSceneEventsParser.hpp +++ b/src/dawntools/vnscenetool/VNSceneEventsParser.hpp @@ -6,11 +6,13 @@ #pragma once #include "events/VNTextEventParser.hpp" #include "events/VNPositionEventParser.hpp" +#include "events/VNSetEventParser.hpp" namespace Dawn { enum VNSceneEventType { VN_SCENE_EVENT_TYPE_TEXT, - VN_SCENE_EVENT_TYPE_POSITION + VN_SCENE_EVENT_TYPE_POSITION, + VN_SCENE_EVENT_TYPE_SET }; struct VNSceneEvent { @@ -18,6 +20,7 @@ namespace Dawn { struct VNTextEvent text; struct VNPositionEvent position; + struct VNSetEvent set; }; struct VNSceneEventList { diff --git a/src/dawntools/vnscenetool/VNSceneGen.cpp b/src/dawntools/vnscenetool/VNSceneGen.cpp index 183bf5f6..7b439e7f 100644 --- a/src/dawntools/vnscenetool/VNSceneGen.cpp +++ b/src/dawntools/vnscenetool/VNSceneGen.cpp @@ -41,10 +41,21 @@ void VNSceneGen::generate( line(&methodStage.body, "auto camera = Camera::create(this);", ""); line(&methodStage.body, "camera->fov = 0.436332f;", ""); line(&methodStage.body, "camera->transform->lookAt(glm::vec3(10, 10, 10), glm::vec3(0, 0, 0));", ""); - line(&methodStage.body, "", ""); - classInfo.includes.push_back("prefabs/SimpleSpinningCubePrefab.hpp"); - line(&methodStage.body, "auto cube = SimpleSpinningCubePrefab::create(this);", ""); + // Items + int32_t itemRefIndex = 0; + auto itItems = scene->items.begin(); + while(itItems != scene->items.end()) { + struct VNSceneItem item = *itItems; + if(item.ref.empty()) item.ref = "item" + std::to_string(itemRefIndex++); + classInfo.includes.push_back(item.prefab + ".hpp"); + + line(&methodStage.body, "", ""); + line(&methodStage.body, "auto " + item.ref + " = " + item.className + "::create(this);", ""); + + ++itItems; + } + line(&methodStage.body, "", ""); // Events @@ -60,27 +71,42 @@ void VNSceneGen::generate( std::string eventName = "event" + std::to_string(eventIndex); std::string initType = ""; std::string initArgs = ""; + std::string toInclude = ""; std::string prev = "previous"; std::vector afterLines; switch(itEvents->type) { case VN_SCENE_EVENT_TYPE_TEXT: initType = "VNTextEvent"; + toInclude = "games/vn/events/VNTextEvent.hpp"; line(&afterLines, eventName + "->" + "text = \"" + itEvents->text.texts.begin()->text + "\";", ""); break; case VN_SCENE_EVENT_TYPE_POSITION: initType = "VNPositionEvent"; + toInclude = "games/vn/events/VNPositionEvent.hpp"; line(&afterLines, eventName + "->item = " + itEvents->position.item + ";", ""); if(itEvents->position.x != "") line(&afterLines, eventName + "->" + "to.x = " + itEvents->position.x + ";", ""); if(itEvents->position.y != "") line(&afterLines, eventName + "->" + "to.y = " + itEvents->position.y + ";", ""); if(itEvents->position.z != "") line(&afterLines, eventName + "->" + "to.z = " + itEvents->position.z + ";", ""); break; + case VN_SCENE_EVENT_TYPE_SET: + initType = "VNSetEvent<" + itEvents->set.type + ">"; + toInclude = "games/vn/events/VNSetEvent.hpp"; + line(&afterLines, eventName + "->modifies = &" + itEvents->set.property + ";", ""); + line(&afterLines, eventName + "->to = " + itEvents->set.to + ";", ""); + if(itEvents->set.from != "") line(&afterLines, eventName + "->from = " + itEvents->set.from + ";", ""); + if(itEvents->set.duration != "") line(&afterLines, eventName + "->duration = " + itEvents->set.duration + ";", ""); + break; + + default: + std::cout << "Unknown event type: " << itEvents->type << std::endl; assertUnreachable(); } + if(!toInclude.empty()) classInfo.includes.push_back(toInclude); line(&methodStage.body, "", ""); line( &methodStage.body, diff --git a/src/dawntools/vnscenetool/VNSceneItemParser.cpp b/src/dawntools/vnscenetool/VNSceneItemParser.cpp new file mode 100644 index 00000000..e903e57a --- /dev/null +++ b/src/dawntools/vnscenetool/VNSceneItemParser.cpp @@ -0,0 +1,47 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "VNSceneItemParser.hpp" + +using namespace Dawn; + +std::vector VNSceneItemParser::getRequiredAttributes() { + return { "prefab" }; +} + +std::map VNSceneItemParser::getOptionalAttributes() { + return { + { "ref", "" } + }; +} + +int32_t VNSceneItemParser::onParse( + Xml *node, + std::map values, + struct VNSceneItem *out, + std::string *error +) { + out->ref = values["ref"]; + out->prefab = values["prefab"]; + + // Split prefab by / and use the last part as the class name + std::string clazz = out->prefab; + size_t pos = clazz.find_last_of('/'); + if(pos != std::string::npos) clazz = clazz.substr(pos+1); + out->className = clazz; + + // Make sure prefab and className is not empty + if(out->prefab.empty()) { + *error = "Prefab cannot be empty."; + return -1; + } + + if(out->className.empty()) { + *error = "Class name cannot be empty."; + return -1; + } + + return 0; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/VNSceneItemParser.hpp b/src/dawntools/vnscenetool/VNSceneItemParser.hpp new file mode 100644 index 00000000..02515e9b --- /dev/null +++ b/src/dawntools/vnscenetool/VNSceneItemParser.hpp @@ -0,0 +1,27 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "util/XmlParser.hpp" + +namespace Dawn { + struct VNSceneItem { + std::string ref; + std::string prefab; + std::string className; + }; + + class VNSceneItemParser : public XmlParser { + protected: + std::vector getRequiredAttributes() override; + std::map getOptionalAttributes() override; + int32_t onParse( + Xml *node, + std::map values, + struct VNSceneItem *out, + std::string *error + ) override; + }; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/VNSceneParser.cpp b/src/dawntools/vnscenetool/VNSceneParser.cpp index dd77240d..736ec8c5 100644 --- a/src/dawntools/vnscenetool/VNSceneParser.cpp +++ b/src/dawntools/vnscenetool/VNSceneParser.cpp @@ -29,9 +29,20 @@ int32_t VNSceneParser::onParse( Xml *child = *itChildren; // Parse event(s) - if(child->node == "events") { + if(child->node == "item") { + struct VNSceneItem item; + ret = (VNSceneItemParser()).parse(child, &item, error); + if(ret != 0) return ret; + out->items.push_back(item); + + } else if(child->node == "events") { ret = (VNSceneEventsParser()).parse(child, &out->events, error); if(ret != 0) return ret; + + } else { + // Unknown node + *error = "Unknown node '" + child->node + "' in "; + return -1; } itChildren++; } diff --git a/src/dawntools/vnscenetool/VNSceneParser.hpp b/src/dawntools/vnscenetool/VNSceneParser.hpp index 49bd3c5c..8a391919 100644 --- a/src/dawntools/vnscenetool/VNSceneParser.hpp +++ b/src/dawntools/vnscenetool/VNSceneParser.hpp @@ -4,10 +4,12 @@ // https://opensource.org/licenses/MIT #pragma once +#include "VNSceneItemParser.hpp" #include "VNSceneEventsParser.hpp" namespace Dawn { struct VNScene { + std::vector items; struct VNSceneEventList events; }; diff --git a/src/dawntools/vnscenetool/events/CMakeLists.txt b/src/dawntools/vnscenetool/events/CMakeLists.txt index aa7a159b..31ac61e8 100644 --- a/src/dawntools/vnscenetool/events/CMakeLists.txt +++ b/src/dawntools/vnscenetool/events/CMakeLists.txt @@ -8,4 +8,5 @@ target_sources(vnscenetool PRIVATE VNPositionEventParser.cpp VNTextEventParser.cpp + VNSetEventParser.cpp ) \ No newline at end of file diff --git a/src/dawntools/vnscenetool/events/VNSetEventParser.cpp b/src/dawntools/vnscenetool/events/VNSetEventParser.cpp new file mode 100644 index 00000000..878dcd7b --- /dev/null +++ b/src/dawntools/vnscenetool/events/VNSetEventParser.cpp @@ -0,0 +1,45 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "VNSetEventParser.hpp" + +using namespace Dawn; + +std::vector VNSetEventParser::getRequiredAttributes() { + return { "property", "type" }; +} + +std::map VNSetEventParser::getOptionalAttributes() { + return { + { "to", "" }, + { "value", "" }, + { "from", "" }, + { "duration", "" }, + { "curve", "" } + }; +} + +int32_t VNSetEventParser::onParse( + Xml *node, + std::map values, + struct VNSetEvent *out, + std::string *error +) { + if(values["to"] != "") { + out->to = values["to"]; + } else if(values["value"] != "") { + out->to = values["value"]; + } else { + *error = "Either 'to' or 'value' must be specified"; + return -1; + } + + out->type = values["type"]; + out->property = values["property"]; + out->from = values["from"]; + out->duration = values["duration"]; + out->curve = values["curve"]; + return 0; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/events/VNSetEventParser.hpp b/src/dawntools/vnscenetool/events/VNSetEventParser.hpp new file mode 100644 index 00000000..d085fa54 --- /dev/null +++ b/src/dawntools/vnscenetool/events/VNSetEventParser.hpp @@ -0,0 +1,30 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "util/XmlParser.hpp" + +namespace Dawn { + struct VNSetEvent { + std::string property = ""; + std::string to = ""; + std::string from = ""; + std::string duration = ""; + std::string curve = ""; + std::string type = ""; + }; + + class VNSetEventParser : public XmlParser { + protected: + std::vector getRequiredAttributes() override; + std::map getOptionalAttributes() override; + int32_t onParse( + Xml *node, + std::map values, + struct VNSetEvent *out, + std::string *error + ) override; + }; +} \ No newline at end of file From d105f9e4ab7b4ac7df510d2befd04433c600774d Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Sun, 23 Apr 2023 21:43:17 -0700 Subject: [PATCH 6/9] Parallel event --- src/dawn/games/vn/components/VNManager.cpp | 10 +---- src/dawn/games/vn/components/VNManager.hpp | 16 ++++---- src/dawn/games/vn/events/VNEvent.cpp | 18 +++++++-- src/dawn/games/vn/events/VNEvent.hpp | 23 +++++++++--- src/dawn/games/vn/events/VNParallelEvent.hpp | 39 ++++++++++++++++++++ src/dawn/games/vn/events/VNWaitEvent.hpp | 4 +- src/dawnliminal/game/LiminalGame.cpp | 4 +- src/dawnliminal/scenes/HelloWorldScene.hpp | 17 +++++++-- 8 files changed, 98 insertions(+), 33 deletions(-) create mode 100644 src/dawn/games/vn/events/VNParallelEvent.hpp diff --git a/src/dawn/games/vn/components/VNManager.cpp b/src/dawn/games/vn/components/VNManager.cpp index 169cd0f5..8aacf0a9 100644 --- a/src/dawn/games/vn/components/VNManager.cpp +++ b/src/dawn/games/vn/components/VNManager.cpp @@ -15,7 +15,7 @@ VNManager::VNManager(SceneItem *item) : void VNManager::onStart() { if(this->currentEvent != nullptr) { - this->currentEvent->start(nullptr); + this->currentEvent->start(this, nullptr); } } @@ -32,14 +32,6 @@ std::string VNManager::getFlag(std::string key) { return this->flags[key]; } -void VNManager::nextEvent() { - if(this->currentEvent == nullptr) return; - auto old = this->currentEvent; - old->end(); - this->currentEvent = old->getNextEvent(); - if(this->currentEvent != nullptr) this->currentEvent->start(old); -} - void VNManager::onDispose() { } \ No newline at end of file diff --git a/src/dawn/games/vn/components/VNManager.hpp b/src/dawn/games/vn/components/VNManager.hpp index 0485fea8..b000bb1d 100644 --- a/src/dawn/games/vn/components/VNManager.hpp +++ b/src/dawn/games/vn/components/VNManager.hpp @@ -9,10 +9,17 @@ namespace Dawn { class VNEvent; - class VNManager : public SceneItemComponent { + class IVNEventParent { + public: + VNEvent *currentEvent = nullptr; + }; + + class VNManager : + public SceneItemComponent, + public IVNEventParent + { protected: std::vector events; - VNEvent *currentEvent = nullptr; std::map flags; public: @@ -42,11 +49,6 @@ namespace Dawn { */ void setEvent(VNEvent *event); - /** - * Ends the current event, and moves to the next one. - */ - void nextEvent(); - /** * Sets a flag for the visual novel. * diff --git a/src/dawn/games/vn/events/VNEvent.cpp b/src/dawn/games/vn/events/VNEvent.cpp index 9212b795..a524be8f 100644 --- a/src/dawn/games/vn/events/VNEvent.cpp +++ b/src/dawn/games/vn/events/VNEvent.cpp @@ -11,7 +11,12 @@ void VNEvent::init(VNManager *manager) { this->manager = manager; } -void VNEvent::start(VNEvent *previous) { +void VNEvent::start( + IVNEventParent *parent, + VNEvent *previous +) { + this->parent = parent; + finished = false; this->onStart(); } @@ -25,13 +30,20 @@ VNEvent * VNEvent::getNextEvent() { void VNEvent::next() { assertNotNull(this->manager); - assertTrue(this->manager->currentEvent == this); - this->manager->nextEvent(); + assertNotNull(this->parent); + + this->end(); + auto next = this->getNextEvent(); + this->manager->currentEvent = next; + if(next != nullptr) next->start(this->parent, this); } void VNEvent::end() { + this->finished = true; this->unsubscribeAllEvents(); this->onEnd(); + + this->eventFinished.invoke(); } void VNEvent::onStart() {} diff --git a/src/dawn/games/vn/events/VNEvent.hpp b/src/dawn/games/vn/events/VNEvent.hpp index 50840513..4ced5e1c 100644 --- a/src/dawn/games/vn/events/VNEvent.hpp +++ b/src/dawn/games/vn/events/VNEvent.hpp @@ -9,24 +9,35 @@ namespace Dawn { class VNEvent : public StateOwner { + public: + StateEvent<> eventFinished; + + /** + * Invoked by a parent VN Manager. This is the start of the event. + * + * @param parent The VN Event Parent. Usually the manager but not always. + * @param previous The previous event that was running before this one. + */ + void start( + IVNEventParent *parent, + VNEvent *previous + ); + protected: VNManager *manager = nullptr; + IVNEventParent *parent = nullptr; VNEvent *doNext = nullptr; VNEvent *previous = nullptr; + bool_t finished = false; /** * Initializes the event. This is called by the VNManager, and should not * be called by anything else. + * * @param manager The VNManager that is running this event. */ void init(VNManager *manager); - /** - * Invoked by the VNManager, this is the start of the event. - * @param previous The previous event that was running before this one. - */ - void start(VNEvent *previous); - /** * Invoked by the VNManager, this is the end of the event. Perform the * necessary cleanup, but remember that events may be re-started again diff --git a/src/dawn/games/vn/events/VNParallelEvent.hpp b/src/dawn/games/vn/events/VNParallelEvent.hpp new file mode 100644 index 00000000..f751fddd --- /dev/null +++ b/src/dawn/games/vn/events/VNParallelEvent.hpp @@ -0,0 +1,39 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "VNEvent.hpp" + +namespace Dawn { + class VNParallelEvent : + public VNEvent, + public IVNEventParent + { + public: + std::vector events; + + protected: + int32_t eventCount; + int32_t eventCompleteCount; + + void onStart() override { + eventCount = 0; + eventCompleteCount = 0; + + auto itEvents = this->events.begin(); + while(itEvents != this->events.end()) { + auto event = *itEvents; + event->start(this, this); + eventCount++; + + useEvent([&]{ + eventCompleteCount++; + if(eventCompleteCount >= eventCount) this->next(); + }, event->eventFinished); + itEvents++; + } + } + }; +} \ No newline at end of file diff --git a/src/dawn/games/vn/events/VNWaitEvent.hpp b/src/dawn/games/vn/events/VNWaitEvent.hpp index e03f2302..a0233574 100644 --- a/src/dawn/games/vn/events/VNWaitEvent.hpp +++ b/src/dawn/games/vn/events/VNWaitEvent.hpp @@ -8,10 +8,8 @@ namespace Dawn { class VNWaitEvent : public VNAnimateEvent { - public: - protected: - void setValue(T value) override { + void setValue(float_t value) override { // Do nothing } }; diff --git a/src/dawnliminal/game/LiminalGame.cpp b/src/dawnliminal/game/LiminalGame.cpp index 7bec3cab..4c28a4cb 100644 --- a/src/dawnliminal/game/LiminalGame.cpp +++ b/src/dawnliminal/game/LiminalGame.cpp @@ -10,6 +10,6 @@ using namespace Dawn; Scene * Dawn::dawnGameGetInitialScene(DawnGame *game) { - // return new HelloWorldScene(game); - return new TestScene(game); + return new HelloWorldScene(game); + // return new TestScene(game); } \ No newline at end of file diff --git a/src/dawnliminal/scenes/HelloWorldScene.hpp b/src/dawnliminal/scenes/HelloWorldScene.hpp index 14359484..6daa3b5e 100644 --- a/src/dawnliminal/scenes/HelloWorldScene.hpp +++ b/src/dawnliminal/scenes/HelloWorldScene.hpp @@ -13,6 +13,8 @@ #include "games/vn/events/VNPositionEvent.hpp" #include "games/vn/events/VNSetEvent.hpp" #include "games/vn/events/VNChoiceEvent.hpp" +#include "games/vn/events/VNParallelEvent.hpp" +#include "games/vn/events/VNWaitEvent.hpp" namespace Dawn { class HelloWorldScene : public Scene { @@ -55,12 +57,21 @@ namespace Dawn { choiceEvent->choices["state2"] = "State 2"; choiceEvent->choices["state3"] = "State 3"; + auto parallelEvent = vnManager->createEvent(); + auto wait0 = vnManager->createEvent(); + wait0->duration = 1.0f; + parallelEvent->events.push_back(wait0); + + auto wait1 = vnManager->createEvent(); + wait1->duration = 3.0f; + parallelEvent->events.push_back(wait1); eventTest + ->then(parallelEvent) ->then(positionEvent) - ->then(vnTextEvent) - ->then(setPropertyEvent) - ->then(choiceEvent) + // ->then(vnTextEvent) + // ->then(setPropertyEvent) + // ->then(choiceEvent) ; vnManager->setEvent(eventTest); } From 87d12982d1d64f2186db6c85c7d947104af49129 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Mon, 24 Apr 2023 20:04:31 -0700 Subject: [PATCH 7/9] Parallel event processing --- assets/games/liminal/test.xml | 22 +-- src/dawnliminal/game/LiminalGame.cpp | 4 +- src/dawntools/vnscenetool/CMakeLists.txt | 1 - src/dawntools/vnscenetool/VNSceneGen.cpp | 130 +++++++++++------- src/dawntools/vnscenetool/VNSceneGen.hpp | 8 ++ src/dawntools/vnscenetool/VNSceneParser.hpp | 2 +- .../vnscenetool/events/CMakeLists.txt | 3 + .../events/VNParallelEventParser.cpp | 27 ++++ .../events/VNParallelEventParser.hpp | 23 ++++ .../{ => events}/VNSceneEventsParser.cpp | 13 +- .../{ => events}/VNSceneEventsParser.hpp | 28 ++-- .../vnscenetool/events/VNWaitEventParser.cpp | 35 +++++ .../vnscenetool/events/VNWaitEventParser.hpp | 25 ++++ 13 files changed, 243 insertions(+), 78 deletions(-) create mode 100644 src/dawntools/vnscenetool/events/VNParallelEventParser.cpp create mode 100644 src/dawntools/vnscenetool/events/VNParallelEventParser.hpp rename src/dawntools/vnscenetool/{ => events}/VNSceneEventsParser.cpp (77%) rename src/dawntools/vnscenetool/{ => events}/VNSceneEventsParser.hpp (68%) create mode 100644 src/dawntools/vnscenetool/events/VNWaitEventParser.cpp create mode 100644 src/dawntools/vnscenetool/events/VNWaitEventParser.hpp diff --git a/assets/games/liminal/test.xml b/assets/games/liminal/test.xml index 8d24a594..60cee144 100644 --- a/assets/games/liminal/test.xml +++ b/assets/games/liminal/test.xml @@ -3,23 +3,11 @@ - - - - - - - + - - - Hi, I'm Ethereality. - - - - - - Hi, I'm Craig. - + + + + \ No newline at end of file diff --git a/src/dawnliminal/game/LiminalGame.cpp b/src/dawnliminal/game/LiminalGame.cpp index 4c28a4cb..7bec3cab 100644 --- a/src/dawnliminal/game/LiminalGame.cpp +++ b/src/dawnliminal/game/LiminalGame.cpp @@ -10,6 +10,6 @@ using namespace Dawn; Scene * Dawn::dawnGameGetInitialScene(DawnGame *game) { - return new HelloWorldScene(game); - // return new TestScene(game); + // return new HelloWorldScene(game); + return new TestScene(game); } \ No newline at end of file diff --git a/src/dawntools/vnscenetool/CMakeLists.txt b/src/dawntools/vnscenetool/CMakeLists.txt index 865f7454..028c7b4b 100644 --- a/src/dawntools/vnscenetool/CMakeLists.txt +++ b/src/dawntools/vnscenetool/CMakeLists.txt @@ -17,7 +17,6 @@ target_sources(vnscenetool ${DAWN_TOOL_SOURCES} VNSceneTool.cpp VNSceneParser.cpp - VNSceneEventsParser.cpp VNSceneGen.cpp VNSceneItemParser.cpp ) diff --git a/src/dawntools/vnscenetool/VNSceneGen.cpp b/src/dawntools/vnscenetool/VNSceneGen.cpp index 7b439e7f..cfa55f0e 100644 --- a/src/dawntools/vnscenetool/VNSceneGen.cpp +++ b/src/dawntools/vnscenetool/VNSceneGen.cpp @@ -7,6 +7,81 @@ using namespace Dawn; +void VNSceneGen::test( + std::string eventName, + struct VNSceneEvent *event, + int32_t *eventIndex, + std::vector *body, + std::vector *includes +) { + std::string initType = ""; + std::string toInclude = ""; + std::string initArgs = ""; + std::vector afterLines; + + switch(event->type) { + case VN_SCENE_EVENT_TYPE_TEXT: + initType = "VNTextEvent"; + toInclude = "games/vn/events/VNTextEvent.hpp"; + line(body, eventName + "->" + "text = \"" + event->text.texts.begin()->text + "\";", ""); + break; + + case VN_SCENE_EVENT_TYPE_POSITION: + initType = "VNPositionEvent"; + toInclude = "games/vn/events/VNPositionEvent.hpp"; + line(&afterLines, eventName + "->item = " + event->position.item + ";", ""); + if(event->position.x != "") line(&afterLines, eventName + "->" + "to.x = " + event->position.x + ";", ""); + if(event->position.y != "") line(&afterLines, eventName + "->" + "to.y = " + event->position.y + ";", ""); + if(event->position.z != "") line(&afterLines, eventName + "->" + "to.z = " + event->position.z + ";", ""); + break; + + case VN_SCENE_EVENT_TYPE_SET: + initType = "VNSetEvent<" + event->set.type + ">"; + toInclude = "games/vn/events/VNSetEvent.hpp"; + line(&afterLines, eventName + "->modifies = &" + event->set.property + ";", ""); + line(&afterLines, eventName + "->to = " + event->set.to + ";", ""); + if(event->set.from != "") line(&afterLines, eventName + "->from = " + event->set.from + ";", ""); + if(event->set.duration != "") line(&afterLines, eventName + "->duration = " + event->set.duration + ";", ""); + break; + + case VN_SCENE_EVENT_TYPE_WAIT: + initType = "VNWaitEvent"; + toInclude = "games/vn/events/VNWaitEvent.hpp"; + line(&afterLines, eventName + "->duration = " + event->wait.duration + ";", ""); + break; + + case VN_SCENE_EVENT_TYPE_PARALLEL: { + initType = "VNParallelEvent"; + toInclude = "games/vn/events/VNParallelEvent.hpp"; + + auto itParallel = event->parallel.events.events.begin(); + while(itParallel != event->parallel.events.events.end()) { + std::string pEventName = "pEvent" + std::to_string((*eventIndex)++); + VNSceneGen::test( + pEventName, + &(*itParallel), + eventIndex, + &afterLines, + includes + ); + line(&afterLines, eventName + "->events.push_back(" + pEventName + ");", ""); + line(&afterLines, "", ""); + ++itParallel; + } + break; + } + + default: + std::cout << "Unknown event type: " << event->type << std::endl; + assertUnreachable(); + } + + if(!toInclude.empty()) includes->push_back(toInclude); + + line(body, "auto " + eventName + " = vnManager->createEvent<" + initType + ">(" + initArgs + ");", ""); + lines(body, afterLines, ""); +} + void VNSceneGen::generate( std::vector *out, struct VNScene *scene, @@ -67,56 +142,19 @@ void VNSceneGen::generate( int32_t eventIndex = 0; auto itEvents = scene->events.events.begin(); + std::string previous = "eventStart"; while(itEvents != scene->events.events.end()) { - std::string eventName = "event" + std::to_string(eventIndex); - std::string initType = ""; - std::string initArgs = ""; - std::string toInclude = ""; - std::string prev = "previous"; - std::vector afterLines; - - switch(itEvents->type) { - case VN_SCENE_EVENT_TYPE_TEXT: - initType = "VNTextEvent"; - toInclude = "games/vn/events/VNTextEvent.hpp"; - line(&afterLines, eventName + "->" + "text = \"" + itEvents->text.texts.begin()->text + "\";", ""); - break; - - case VN_SCENE_EVENT_TYPE_POSITION: - initType = "VNPositionEvent"; - toInclude = "games/vn/events/VNPositionEvent.hpp"; - line(&afterLines, eventName + "->item = " + itEvents->position.item + ";", ""); - if(itEvents->position.x != "") line(&afterLines, eventName + "->" + "to.x = " + itEvents->position.x + ";", ""); - if(itEvents->position.y != "") line(&afterLines, eventName + "->" + "to.y = " + itEvents->position.y + ";", ""); - if(itEvents->position.z != "") line(&afterLines, eventName + "->" + "to.z = " + itEvents->position.z + ";", ""); - break; - - case VN_SCENE_EVENT_TYPE_SET: - initType = "VNSetEvent<" + itEvents->set.type + ">"; - toInclude = "games/vn/events/VNSetEvent.hpp"; - line(&afterLines, eventName + "->modifies = &" + itEvents->set.property + ";", ""); - line(&afterLines, eventName + "->to = " + itEvents->set.to + ";", ""); - if(itEvents->set.from != "") line(&afterLines, eventName + "->from = " + itEvents->set.from + ";", ""); - if(itEvents->set.duration != "") line(&afterLines, eventName + "->duration = " + itEvents->set.duration + ";", ""); - break; - - - default: - std::cout << "Unknown event type: " << itEvents->type << std::endl; - assertUnreachable(); - } - - if(!toInclude.empty()) classInfo.includes.push_back(toInclude); line(&methodStage.body, "", ""); - line( + std::string eventName = "event" + std::to_string(eventIndex++); + VNSceneGen::test( + eventName, + &(*itEvents), + &eventIndex, &methodStage.body, - "auto " + eventName + " = " + prev + "->then(vnManager->createEvent<" + initType + ">(" + initArgs + "));", - "" + &classInfo.includes ); - line(&methodStage.body, "previous = " + eventName + ";", ""); - lines(&methodStage.body, afterLines, ""); - - eventIndex++; + line(&methodStage.body, previous + "->then(" + eventName + ");", ""); + previous = eventName; ++itEvents; } diff --git a/src/dawntools/vnscenetool/VNSceneGen.hpp b/src/dawntools/vnscenetool/VNSceneGen.hpp index 8a704b89..c70c9aed 100644 --- a/src/dawntools/vnscenetool/VNSceneGen.hpp +++ b/src/dawntools/vnscenetool/VNSceneGen.hpp @@ -10,6 +10,14 @@ namespace Dawn { class VNSceneGen : public CodeGen { public: + static void test( + std::string eventName, + struct VNSceneEvent *event, + int32_t *eventIndex, + std::vector *body, + std::vector *includes + ); + static void generate( std::vector *out, struct VNScene *scene, diff --git a/src/dawntools/vnscenetool/VNSceneParser.hpp b/src/dawntools/vnscenetool/VNSceneParser.hpp index 8a391919..17f661c4 100644 --- a/src/dawntools/vnscenetool/VNSceneParser.hpp +++ b/src/dawntools/vnscenetool/VNSceneParser.hpp @@ -5,7 +5,7 @@ #pragma once #include "VNSceneItemParser.hpp" -#include "VNSceneEventsParser.hpp" +#include "events/VNSceneEventsParser.hpp" namespace Dawn { struct VNScene { diff --git a/src/dawntools/vnscenetool/events/CMakeLists.txt b/src/dawntools/vnscenetool/events/CMakeLists.txt index 31ac61e8..9703f802 100644 --- a/src/dawntools/vnscenetool/events/CMakeLists.txt +++ b/src/dawntools/vnscenetool/events/CMakeLists.txt @@ -6,7 +6,10 @@ # Sources target_sources(vnscenetool PRIVATE + VNSceneEventsParser.cpp VNPositionEventParser.cpp VNTextEventParser.cpp VNSetEventParser.cpp + VNWaitEventParser.cpp + VNParallelEventParser.cpp ) \ No newline at end of file diff --git a/src/dawntools/vnscenetool/events/VNParallelEventParser.cpp b/src/dawntools/vnscenetool/events/VNParallelEventParser.cpp new file mode 100644 index 00000000..a811bc65 --- /dev/null +++ b/src/dawntools/vnscenetool/events/VNParallelEventParser.cpp @@ -0,0 +1,27 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "VNParallelEventParser.hpp" +#include "VNSceneEventsParser.hpp" + +using namespace Dawn; + +std::vector VNParallelEventParser::getRequiredAttributes() { + return std::vector(); +} + +std::map VNParallelEventParser::getOptionalAttributes() { + return std::map(); +} + +int32_t VNParallelEventParser::onParse( + Xml *node, + std::map values, + struct VNParallelEvent *out, + std::string *error +) { + // Parse all children + return (VNSceneEventsParser()).parse(node, &out->events, error); +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/events/VNParallelEventParser.hpp b/src/dawntools/vnscenetool/events/VNParallelEventParser.hpp new file mode 100644 index 00000000..07169f91 --- /dev/null +++ b/src/dawntools/vnscenetool/events/VNParallelEventParser.hpp @@ -0,0 +1,23 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "util/XmlParser.hpp" + +namespace Dawn { + struct VNParallelEvent; + + class VNParallelEventParser : public XmlParser { + protected: + std::vector getRequiredAttributes() override; + std::map getOptionalAttributes() override; + int32_t onParse( + Xml *node, + std::map values, + struct VNParallelEvent *out, + std::string *error + ) override; + }; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/VNSceneEventsParser.cpp b/src/dawntools/vnscenetool/events/VNSceneEventsParser.cpp similarity index 77% rename from src/dawntools/vnscenetool/VNSceneEventsParser.cpp rename to src/dawntools/vnscenetool/events/VNSceneEventsParser.cpp index fe8223e7..e4c6ab34 100644 --- a/src/dawntools/vnscenetool/VNSceneEventsParser.cpp +++ b/src/dawntools/vnscenetool/events/VNSceneEventsParser.cpp @@ -4,6 +4,7 @@ // https://opensource.org/licenses/MIT #include "VNSceneEventsParser.hpp" +#include "VNParallelEventParser.hpp" using namespace Dawn; @@ -30,23 +31,29 @@ int32_t VNSceneEventsParser::onParse( // Parse event(s) if(child->node == "text") { - VNTextEventParser parser; event.type = VN_SCENE_EVENT_TYPE_TEXT; ret = (VNTextEventParser()).parse(child, &event.text, error); if(ret != 0) return ret; } else if(child->node == "position") { - VNPositionEventParser parser; event.type = VN_SCENE_EVENT_TYPE_POSITION; ret = (VNPositionEventParser()).parse(child, &event.position, error); if(ret != 0) return ret; } else if(child->node == "set") { - VNSetEvent parser; event.type = VN_SCENE_EVENT_TYPE_SET; ret = (VNSetEventParser()).parse(child, &event.set, error); if(ret != 0) return ret; + } else if(child->node == "wait") { + event.type = VN_SCENE_EVENT_TYPE_WAIT; + ret = (VNWaitEventParser()).parse(child, &event.wait, error); + if(ret != 0) return ret; + + } else if(child->node == "parallel") { + event.type = VN_SCENE_EVENT_TYPE_PARALLEL; + ret = (VNParallelEventParser()).parse(child, &event.parallel, error); + if(ret != 0) return ret; } else { *error = "Unknown child node '" + child->node + "'"; diff --git a/src/dawntools/vnscenetool/VNSceneEventsParser.hpp b/src/dawntools/vnscenetool/events/VNSceneEventsParser.hpp similarity index 68% rename from src/dawntools/vnscenetool/VNSceneEventsParser.hpp rename to src/dawntools/vnscenetool/events/VNSceneEventsParser.hpp index 33849d9d..77f83642 100644 --- a/src/dawntools/vnscenetool/VNSceneEventsParser.hpp +++ b/src/dawntools/vnscenetool/events/VNSceneEventsParser.hpp @@ -4,15 +4,29 @@ // https://opensource.org/licenses/MIT #pragma once -#include "events/VNTextEventParser.hpp" -#include "events/VNPositionEventParser.hpp" -#include "events/VNSetEventParser.hpp" +#include "VNTextEventParser.hpp" +#include "VNPositionEventParser.hpp" +#include "VNSetEventParser.hpp" +#include "VNWaitEventParser.hpp" +#include "VNParallelEventParser.hpp" namespace Dawn { + struct VNSceneEvent; + + struct VNSceneEventList { + std::vector events; + }; + enum VNSceneEventType { VN_SCENE_EVENT_TYPE_TEXT, VN_SCENE_EVENT_TYPE_POSITION, - VN_SCENE_EVENT_TYPE_SET + VN_SCENE_EVENT_TYPE_SET, + VN_SCENE_EVENT_TYPE_WAIT, + VN_SCENE_EVENT_TYPE_PARALLEL + }; + + struct VNParallelEvent { + struct VNSceneEventList events; }; struct VNSceneEvent { @@ -21,10 +35,8 @@ namespace Dawn { struct VNTextEvent text; struct VNPositionEvent position; struct VNSetEvent set; - }; - - struct VNSceneEventList { - std::vector events; + struct VNWaitEvent wait; + struct VNParallelEvent parallel; }; class VNSceneEventsParser : public XmlParser { diff --git a/src/dawntools/vnscenetool/events/VNWaitEventParser.cpp b/src/dawntools/vnscenetool/events/VNWaitEventParser.cpp new file mode 100644 index 00000000..f4cf8f65 --- /dev/null +++ b/src/dawntools/vnscenetool/events/VNWaitEventParser.cpp @@ -0,0 +1,35 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "VNWaitEventParser.hpp" + +using namespace Dawn; + +std::vector VNWaitEventParser::getRequiredAttributes() { + return { }; +} + +std::map VNWaitEventParser::getOptionalAttributes() { + return { { "duration", "" }, { "time", "" } }; +} + +int32_t VNWaitEventParser::onParse( + Xml *node, + std::map values, + VNWaitEvent *out, + std::string *error +) { + //Get the duration + if(!values["duration"].empty()) { + out->duration = values["duration"]; + } else if(!values["time"].empty()) { + out->duration = values["time"]; + } else { + *error = "No duration specified."; + return -1; + } + + return 0; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/events/VNWaitEventParser.hpp b/src/dawntools/vnscenetool/events/VNWaitEventParser.hpp new file mode 100644 index 00000000..75d2bf6b --- /dev/null +++ b/src/dawntools/vnscenetool/events/VNWaitEventParser.hpp @@ -0,0 +1,25 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "util/XmlParser.hpp" + +namespace Dawn { + struct VNWaitEvent { + std::string duration; + }; + + class VNWaitEventParser : public XmlParser { + protected: + std::vector getRequiredAttributes() override; + std::map getOptionalAttributes() override; + int32_t onParse( + Xml *node, + std::map values, + VNWaitEvent *out, + std::string *error + ) override; + }; +} \ No newline at end of file From a231b14df487f21e1e9a987dfede68c798c04f46 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Mon, 24 Apr 2023 22:35:45 -0700 Subject: [PATCH 8/9] Fixed parallel event bug --- assets/games/liminal/test.xml | 34 +++++++++++++++++-- src/dawn/games/vn/events/VNParallelEvent.hpp | 3 +- src/dawntools/vnscenetool/VNSceneGen.cpp | 2 +- .../vnscenetool/events/VNMarkerParser.hpp | 25 ++++++++++++++ 4 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 src/dawntools/vnscenetool/events/VNMarkerParser.hpp diff --git a/assets/games/liminal/test.xml b/assets/games/liminal/test.xml index 60cee144..b9cb7c1f 100644 --- a/assets/games/liminal/test.xml +++ b/assets/games/liminal/test.xml @@ -4,10 +4,40 @@ + + + + + + + + + + Hi, I'm Ethereality. + + + + + + Hi, I'm Craig. + + + - - + + + + + + + + + \ No newline at end of file diff --git a/src/dawn/games/vn/events/VNParallelEvent.hpp b/src/dawn/games/vn/events/VNParallelEvent.hpp index f751fddd..e511ed69 100644 --- a/src/dawn/games/vn/events/VNParallelEvent.hpp +++ b/src/dawn/games/vn/events/VNParallelEvent.hpp @@ -25,13 +25,14 @@ namespace Dawn { auto itEvents = this->events.begin(); while(itEvents != this->events.end()) { auto event = *itEvents; - event->start(this, this); eventCount++; useEvent([&]{ eventCompleteCount++; if(eventCompleteCount >= eventCount) this->next(); }, event->eventFinished); + + event->start(this, this); itEvents++; } } diff --git a/src/dawntools/vnscenetool/VNSceneGen.cpp b/src/dawntools/vnscenetool/VNSceneGen.cpp index cfa55f0e..83a7c999 100644 --- a/src/dawntools/vnscenetool/VNSceneGen.cpp +++ b/src/dawntools/vnscenetool/VNSceneGen.cpp @@ -23,7 +23,7 @@ void VNSceneGen::test( case VN_SCENE_EVENT_TYPE_TEXT: initType = "VNTextEvent"; toInclude = "games/vn/events/VNTextEvent.hpp"; - line(body, eventName + "->" + "text = \"" + event->text.texts.begin()->text + "\";", ""); + line(&afterLines, eventName + "->" + "text = \"" + event->text.texts.begin()->text + "\";", ""); break; case VN_SCENE_EVENT_TYPE_POSITION: diff --git a/src/dawntools/vnscenetool/events/VNMarkerParser.hpp b/src/dawntools/vnscenetool/events/VNMarkerParser.hpp new file mode 100644 index 00000000..f9b05c68 --- /dev/null +++ b/src/dawntools/vnscenetool/events/VNMarkerParser.hpp @@ -0,0 +1,25 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "util/XmlParser.hpp" + +namespace Dawn { + struct VNMarker { + std::string name; + }; + + class VNMarkerParser : public XmlParser { + protected: + std::vector getRequiredAttributes() override; + std::map getOptionalAttributes() override; + int32_t onParse( + Xml *node, + std::map values, + struct VNMarker *out, + std::string *error + ) override; + }; +} \ No newline at end of file From 88f4c5684a7bbdc5505f60e986c55789b74e2731 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Tue, 25 Apr 2023 18:22:55 -0700 Subject: [PATCH 9/9] Marker progress --- assets/games/liminal/test.xml | 5 +-- src/dawntools/vnscenetool/VNSceneGen.cpp | 6 ++++ .../vnscenetool/events/CMakeLists.txt | 1 + .../events/VNGoToMarkerEventParser.cpp | 26 +++++++++++++++ .../events/VNGoToMarkerEventParser.hpp | 25 +++++++++++++++ .../vnscenetool/events/VNMarkerParser.cpp | 32 +++++++++++++++++++ .../vnscenetool/events/VNMarkerParser.hpp | 1 + .../events/VNSceneEventsParser.cpp | 5 +++ .../events/VNSceneEventsParser.hpp | 5 ++- 9 files changed, 103 insertions(+), 3 deletions(-) create mode 100644 src/dawntools/vnscenetool/events/VNGoToMarkerEventParser.cpp create mode 100644 src/dawntools/vnscenetool/events/VNGoToMarkerEventParser.hpp create mode 100644 src/dawntools/vnscenetool/events/VNMarkerParser.cpp diff --git a/assets/games/liminal/test.xml b/assets/games/liminal/test.xml index b9cb7c1f..f70a0f40 100644 --- a/assets/games/liminal/test.xml +++ b/assets/games/liminal/test.xml @@ -18,6 +18,8 @@ + + Hi, I'm Craig. @@ -37,7 +39,6 @@ - - + \ No newline at end of file diff --git a/src/dawntools/vnscenetool/VNSceneGen.cpp b/src/dawntools/vnscenetool/VNSceneGen.cpp index 83a7c999..0c70a001 100644 --- a/src/dawntools/vnscenetool/VNSceneGen.cpp +++ b/src/dawntools/vnscenetool/VNSceneGen.cpp @@ -71,6 +71,12 @@ void VNSceneGen::test( break; } + case VN_SCENE_EVENT_TYPE_MARKER: + initType = "VNDummyEvent"; + toInclude = "games/vn/events/VNDummyEvent.hpp"; + line(&afterLines, "auto marker_" + event->marker.name + " = " + eventName + ";", ""); + break; + default: std::cout << "Unknown event type: " << event->type << std::endl; assertUnreachable(); diff --git a/src/dawntools/vnscenetool/events/CMakeLists.txt b/src/dawntools/vnscenetool/events/CMakeLists.txt index 9703f802..42d57e61 100644 --- a/src/dawntools/vnscenetool/events/CMakeLists.txt +++ b/src/dawntools/vnscenetool/events/CMakeLists.txt @@ -6,6 +6,7 @@ # Sources target_sources(vnscenetool PRIVATE + VNMarkerParser.cpp VNSceneEventsParser.cpp VNPositionEventParser.cpp VNTextEventParser.cpp diff --git a/src/dawntools/vnscenetool/events/VNGoToMarkerEventParser.cpp b/src/dawntools/vnscenetool/events/VNGoToMarkerEventParser.cpp new file mode 100644 index 00000000..3aa025c3 --- /dev/null +++ b/src/dawntools/vnscenetool/events/VNGoToMarkerEventParser.cpp @@ -0,0 +1,26 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "VNGoToMarkerEventParser.hpp" + +using namespace Dawn; + +std::vector VNGoToMarkerEventParser::getRequiredAttributes() { + return { "name" }; +} + +std::map VNGoToMarkerEventParser::getOptionalAttributes() { + return {}; +} + +int32_t VNGoToMarkerEventParser::onParse( + Xml *node, + std::map values, + struct VNGoToMarkerEvent *out, + std::string *error +) { + out->name = values["name"]; + return 0; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/events/VNGoToMarkerEventParser.hpp b/src/dawntools/vnscenetool/events/VNGoToMarkerEventParser.hpp new file mode 100644 index 00000000..e44d0630 --- /dev/null +++ b/src/dawntools/vnscenetool/events/VNGoToMarkerEventParser.hpp @@ -0,0 +1,25 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#pragma once +#include "util/XmlParser.hpp" + +namespace Dawn { + struct VNGoToMarkerEvent { + std::string name; + }; + + class VNGoToMarkerEventParser : public XmlParser { + protected: + std::vector getRequiredAttributes() override; + std::map getOptionalAttributes() override; + int32_t onParse( + Xml *node, + std::map values, + struct VNGoToMarkerEvent *out, + std::string *error + ) override; + }; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/events/VNMarkerParser.cpp b/src/dawntools/vnscenetool/events/VNMarkerParser.cpp new file mode 100644 index 00000000..93921925 --- /dev/null +++ b/src/dawntools/vnscenetool/events/VNMarkerParser.cpp @@ -0,0 +1,32 @@ +// Copyright (c) 2023 Dominic Masters +// +// This software is released under the MIT License. +// https://opensource.org/licenses/MIT + +#include "VNMarkerParser.hpp" + +using namespace Dawn; + +std::vector VNMarkerParser::getRequiredAttributes() { + return { "name" }; +} + +std::map VNMarkerParser::getOptionalAttributes() { + return {}; +} + +int32_t VNMarkerParser::onParse( + Xml *node, + std::map values, + struct VNMarker *out, + std::string *error +) { + // Ensure name only contains letters, and numbers, no spaces or symbols + if(!std::regex_match(values["name"], std::regex("^[a-zA-Z0-9]+$"))) { + *error = "Marker name " + values["name"] + " must only contain letters and numbers."; + return -1; + } + + out->name = values["name"]; + return 0; +} \ No newline at end of file diff --git a/src/dawntools/vnscenetool/events/VNMarkerParser.hpp b/src/dawntools/vnscenetool/events/VNMarkerParser.hpp index f9b05c68..8fcc7840 100644 --- a/src/dawntools/vnscenetool/events/VNMarkerParser.hpp +++ b/src/dawntools/vnscenetool/events/VNMarkerParser.hpp @@ -5,6 +5,7 @@ #pragma once #include "util/XmlParser.hpp" +#include namespace Dawn { struct VNMarker { diff --git a/src/dawntools/vnscenetool/events/VNSceneEventsParser.cpp b/src/dawntools/vnscenetool/events/VNSceneEventsParser.cpp index e4c6ab34..51dd7532 100644 --- a/src/dawntools/vnscenetool/events/VNSceneEventsParser.cpp +++ b/src/dawntools/vnscenetool/events/VNSceneEventsParser.cpp @@ -55,6 +55,11 @@ int32_t VNSceneEventsParser::onParse( ret = (VNParallelEventParser()).parse(child, &event.parallel, error); if(ret != 0) return ret; + } else if(child->node == "marker") { + event.type = VN_SCENE_EVENT_TYPE_MARKER; + ret = (VNMarkerParser()).parse(child, &event.marker, error); + if(ret != 0) return ret; + } else { *error = "Unknown child node '" + child->node + "'"; return -1; diff --git a/src/dawntools/vnscenetool/events/VNSceneEventsParser.hpp b/src/dawntools/vnscenetool/events/VNSceneEventsParser.hpp index 77f83642..49698b49 100644 --- a/src/dawntools/vnscenetool/events/VNSceneEventsParser.hpp +++ b/src/dawntools/vnscenetool/events/VNSceneEventsParser.hpp @@ -9,6 +9,7 @@ #include "VNSetEventParser.hpp" #include "VNWaitEventParser.hpp" #include "VNParallelEventParser.hpp" +#include "VNMarkerParser.hpp" namespace Dawn { struct VNSceneEvent; @@ -22,7 +23,8 @@ namespace Dawn { VN_SCENE_EVENT_TYPE_POSITION, VN_SCENE_EVENT_TYPE_SET, VN_SCENE_EVENT_TYPE_WAIT, - VN_SCENE_EVENT_TYPE_PARALLEL + VN_SCENE_EVENT_TYPE_PARALLEL, + VN_SCENE_EVENT_TYPE_MARKER }; struct VNParallelEvent { @@ -37,6 +39,7 @@ namespace Dawn { struct VNSetEvent set; struct VNWaitEvent wait; struct VNParallelEvent parallel; + struct VNMarker marker; }; class VNSceneEventsParser : public XmlParser {