First pass at scene 1

This commit is contained in:
2023-02-16 08:09:50 -08:00
parent 1179c96233
commit a7cc75b512
7 changed files with 295 additions and 140 deletions

View File

@ -1,91 +0,0 @@
<locale>
<language name="en" />
<group key="scene">
<group key="1">
<group key="1">
<string lang="en">...Huh? Where am I?</string>
</group>
</group>
<group key="2">
<string lang="en">This scene has you waking in the new world</string>
</group>
<group key="3">
<string lang="en">This is the scene to prep you for the first game</string>
</group>
<group key="4">
<string lang="en">First Poker Game with friendlies</string>
</group>
<group key="5">
<string lang="en">After first game, wind up maybe shop instructions or something</string>
</group>
<group key="6">
<string lang="en">Talk with death probably, check in on you, etc.</string>
</group>
<group key="7">
<string lang="en">Pre-Orc Battle</string>
</group>
<group key="8">
<string lang="en">Orc Battle</string>
</group>
<group key="9">
<string lang="en">Immediately Post Orc Battle</string>
</group>
<group key="10">
<string lang="en">Morning after orc battle and some foreshadowing</string>
</group>
<group key="11">
<string lang="en">Pre battle with theif</string>
</group>
<group key="12">
<string lang="en">Battle with theif</string>
</group>
<group key="13">
<string lang="en">There needs to be the big bad here.</string>
</group>
<group key="14">
<string lang="en">After battle with theif, things cool off a bit.</string>
</group>
<group key="15">
<string lang="en">Harem times maybe</string>
</group>
<group key="16">
<string lang="en">Harem times interrupted by some chaos</string>
</group>
<group key="17">
<string lang="en">I'm putting chaos here but this scene is probably redundant.</string>
</group>
<group key="18">
<string lang="en">Chaos battle</string>
</group>
<group key="19">
<string lang="en">Post Chaos Battle, things are still gloomy</string>
</group>
<group key="20">
<string lang="en">Another big bad here probably.</string>
</group>
<group key="21">
<string lang="en">Pre King Arrival, rumours</string>
</group>
<group key="22">
<string lang="en">King Arrival, Everyone's annoyed</string>
</group>
<group key="23">
<string lang="en">King in the bar, running his mouth</string>
</group>
<group key="24">
<string lang="en">King Fight</string>
</group>
<group key="25">
<string lang="en">Post King Fight, angry he leaves, town rallies around you</string>
</group>
<group key="26">
<string lang="en">Go to one of the kingsmen who's working with the big bad, he's worried that the townspeople know more than they let on.</string>
</group>
<group key="27">
<string lang="en">Something here has to bring the big bad to town.</string>
</group>
<group key="28">
<string lang="en">It's revealed that death knows the big bad</string>
</group>
</group>
</locale>

View File

@ -5,39 +5,237 @@
<include path="prefabs/characters/DeathPrefab.hpp" />
<!-- Characters -->
<character class="DeathPrefab" name="death" />
<character class="DeathPrefab" name="nami" />
<character class="DeathPrefab" name="player" />
<character class="DeathPrefab" name="narrator" />
<!-- Extra Assets -->
<asset type="AudioAsset" name="audio_test" />
<!-- Scene -->
<scene type="SimpleVNScene" name="Scene_1" />
<!-- Defaults -->
<!-- <default type="animation-curve">out-quad</default> -->
</head>
<!-- Some other ideas I had:
<methods>
<method type="void" name="onSceneEnded">
// Literal CPP code here.
</method>
</methods>
-->
<events>
<!-- Start Invisible -->
<character-fade character="death" duration="0" fade="out" />
<pause duration="0.1" />
<text character="death" emotion="happy">
<character-fade character="nami" duration="0" fade="out" />
<character-fade character="player" duration="0" fade="out" />
<character-fade character="narrator" duration="0" fade="out" />
<text character="player" emotion="unset">
<string lang="en">AAAAH!</string>
</text>
<text character="player" emotion="unset">
<string lang="en">What is this sharp pain in my chest! I've never felt anything like this before!</string>
</text>
<!-- Stabbing sounds -->
<text character="player" emotion="unset">
<string lang="en">No... this can't be happening... I think-I think I was stabbed! N-No... I-I'm going cold now</string>
</text>
<!-- Thud noise -->
<text character="player" emotion="unset">
<string lang="en">
Hello World English
</string>
<string lang="jp">
Hello Japanese
Ok, Ok, calm down, let me think this through...
I was sitting at the table, I was playing another game of poker, I think it was at least the 20th deal of the night... When...
</string>
</text>
<character-fade character="death" duration="1.0" ease="out-quad" fade="in" />
<!-- <scene-transition scene="vnscene_2" /> -->
<text character="player" emotion="unset">
<string lang="en">
Yes that's right, I had got a winning hand! A straight flush! I can't believe I won, I was playing against that one man, he had just gone all in! I must have beat him. Then something happened...
</string>
</text>
<text character="player" emotion="unset">
<string lang="en">
I saw the man get up and point to someone behind me... After that... I can't remember anything else...
</string>
</text>
<!-- Fade in scene -->
<text character="player" emotion="unset">
<string lang="en">What the hell? Where am I?</string>
</text>
<text character="narrator" emotion="unset">
<string lang="en">
You are awaken to find yourself in a strange place. It is neither hot, nor cold, there is no smell in the air at all, and you are surrounded by a thick fog, but it does not feel humid.
</string>
</text>
<text character="narrator" emotion="unset">
<string lang="en">
Under your feet sits a dark floor, similar in appearance to granite that has not been polished, with a gritty texture. There are no other distinct features around you.
</string>
</text>
<!-- TODO: Player should say something here -->
<!-- Footsteps -->
<text character="player" emotion="unset">
<string lang="en">
I can hear a noise! It sounds like... footsteps? Who is that approaching?
</string>
</text>
<!-- Fade in Nami but keep her shadowed -->
<text character="player" emotion="unset">
<string lang="en">Who are you?</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">Please, relax child, your time has come, you've passed on to this other plane.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">Passed on?</string>
</text>
<text character="narrator" emotion="unset">
<string lang="en">
As you close your focus you can begin to make out the female figure in front of you. She is wearing a hood and carrying something sharp with a chain dangling off the end. As you cast your gaze towards her your chest tightens and your breathing becomes more difficult.
</string>
</text>
<character-fade character="nami" duration="1.0" ease="out-quad" fade="in" />
<text character="player" emotion="unset">
<string lang="en">Y-You... You're the Grim Reaper! Aren't you?!</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">I suppose you probably know me by that name. I have been known by many names over my time. Death, Santa Muerte, I have been called so many things.</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">You, however, may call me Nami if you wish. I am the reaper assigned to guide you to the afterlife.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">No... No, No! This can't be happening. I'm too young to die!</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">I read your information, it says you had been killed during a large poker match with a particularly nasty opponent. It seems he has been responsible for bringing several other lost souls here to me.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">So, I really was killed? I am actually dead now?!</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">I'm afraid you've played your last hand, and now you must pay your debt. There are no do-overs for life.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">I can't believe this is happening...</string>
</text>
<text character="player" emotion="unset">
<string lang="en">Do you have to take me? Will you force me to go on to the other side?</string>
</text>
<text character="nami" emotion="concerned">
<string lang="en">I do not like to think of me being forceful, I prefer to think of myself as a guide. My role is to help those who have passed on to make a smooth transition to the afterlife.</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">Ultimately it is not up to me what happens to you. I am sorry, I would normally give you a bit more time to adjust, but my schedule is quite full so we must send you to the other side quickly. Come, let us walk and talk along the way.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">She has a schedule? I'd hate to see how many people are on that list...</string>
</text>
<!-- TODO: Do I need some kind of transition here? -->
<text character="player" emotion="unset">
<string lang="en">Where are you taking me?</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">I am taking you to the afterlife, starting at the River Styx. My role is to guide you on your journey and ensure a smooth transition to the other side.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">The River Styx?</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">The River Styx is the boundary between the world of the living and the dead. It is a mystical river that must be crossed to reach the afterlife. It's a journey that every soul must make and I am here to guide you across, a journey through the underworld. It's said to be so powerful that even the gods fear its currents.</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">To journey you will need to pay a coin to the ferryman, Charon, it is a tradition that has been passed down for centuries.</string>
</text>
<!-- Nami Laughts -->
<text character="nami" emotion="happy">
<string lang="en">I'm sure he will take some of those chips you won in your last hand instead.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">...</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">Don't mind me having a bit of a joke. Once you have crossed the river, you will enter the underworld, the realm of the dead. There, you will face judgement from Cerberus and Persephone. If you are judged favourably you will be allowed to enter the Fields of Elysium. If you aren't well...</strong>
</text>
<text character="nami" emotion="surprised">
<string lang="en">Let's just say those bets that you have made may come back to bite you.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">That seems about my luck.</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">I must say, you're taking this better than most, usually lost souls like yourself are a bit more upset.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">Well, I've always been pretty good at keeping a poker face. Guess I just didn't know it would come in handy in this situation.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">I guess it's good she doesn't realise how much I'm freaking out right now.</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">It's nice to be able to be able to talk to someone for a change. Normally I have to drag people who cannot accept their fates.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">I never knew that death could enjoy such things, Nami.</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">It's been a non-stop ride lately, I haven't had much time to myself to enjoy anything. All of us grim reapers have been busy due to an unexpected influx of lost souls transitioning over.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">What do you mean?</string>
</text>
<!-- TODO: Allow empty emotion change here -->
<text character="nami" emotion="concerned">
<string lang="en">I actually manage a few worlds, not just the one that you come from.</string>
</text>
<text character="nami" emotion="concerned">
<string lang="en">In your world, people rely on technology and their own ability to progress civilisation for the betterment of everyone. In another world, I manage people who raise and tame small pocket sized creatures with different abilities to achieve the same goal.</string>
</text>
<text character="nami" emotion="concerned">
<string lang="en">However, one world I manage has been having some real troubles lately. This world contains humans alongside other intelligent creatures and species. They would be analogous to the medieval times in your world.</string>
</text>
<text character="nami" emotion="concerned">
<string lang="en">So far they have managed to keep a good balance by having some creatures wield weapons, and some use magical powers.</string>
</text>
<text character="nami" emotion="concerned">
<string lang="en">But lately there has been more cases of stronger creatures killing off the human population.</string>
</text>
<text character="nami" emotion="concerned">
<string lang="en">These problems have caused me to work overtime just to make sure I can get everyone where they need to go.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">I never knew the grim reaper would have to deal with so much, at least she is making my simple life seem less complex by comparison. I wonder if I can lighten the mood with some classic ice breakers. I only really know Poker puns though, unless...</string>
</text>
<text character="player" emotion="unset">
<string lang="en">Guess you could say you've had full deck lately.</string>
</text>
<!-- TODO: Transition Nami here -->
<text character="player" emotion="unset">
<string lang="en">She looked up! I think it's working</string>
</text>
<text character="player" emotion="unset">
<string lang="en">Perhaps you've had your hands full?</string>
</text>
<text character="player" emotion="unset">
<string lang="en">I think she smiled.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">Good to see you're somehow dealing still.</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">That's the spirit, I appreciate the poker puns.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">Good to see I picked up something useful over the years.</string>
</text>
<text character="nami" emotion="happy">
<string lang="en">Thank you for that, I appreciate it.</string>
</text>
<text character="player" emotion="unset">
<string lang="en">I wish I could help with your issue somehow, but I don't think I can do much beyond play my cards well.</string>
</text>
<!-- TODO: Nami gets excited -->
<text character="player" emotion="unset">
<string lang="en">Huh? Nami suddenly stopped. She seems to just be standing there staring off in to the distance.</string>
</text>
<text character="nami" emotion="surprised">
<string lang="en">Hmm… Actually, you may be able to help me.</string>
</text>
<!--
<scene-transition scene="vnscene_2" />
-->
</events>
</vnscene>

View File

@ -9,6 +9,7 @@ target_sources(${DAWN_TARGET_NAME}
VisualNovelFadeEvent.cpp
VisualNovelTextboxEvent.cpp
VisualNovelChangeSimpleBackgroundEvent.cpp
VisualNovelEmptyEvent.cpp
)
# Subdirs

View File

@ -0,0 +1,25 @@
// Copyright (c) 2023 Dominic Masters
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
#include "VisualNovelEmptyEvent.hpp"
using namespace Dawn;
VisualNovelEmptyEvent::VisualNovelEmptyEvent(VisualNovelManager *man) :
IVisualNovelEvent(man)
{
}
void VisualNovelEmptyEvent::onStart(IVisualNovelEvent *prev) {
}
bool_t VisualNovelEmptyEvent::onUpdate() {
return false;
}
void VisualNovelEmptyEvent::onEnd() {
}

View File

@ -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 "visualnovel/VisualNovelManager.hpp"
namespace Dawn {
class VisualNovelEmptyEvent : public IVisualNovelEvent {
protected:
void onStart(IVisualNovelEvent *previous) override;
bool_t onUpdate() override;
void onEnd() override;
public:
VisualNovelEmptyEvent(VisualNovelManager *manager);
};
}

View File

@ -1,28 +1,29 @@
// Copyright (c) 2023 Dominic Masters
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
#pragma once
#include "prefabs/characters/CharacterPrefab.hpp"
namespace Dawn {
class DeathPrefab : public CharacterPrefab<DeathPrefab> {
protected:
struct VisualNovelCharacterEmotion defineAndGetInitialEmotion(
AssetManager *man
) override;
public:
static std::string getCharacterTexture();
static std::string getCharacterTileset();
static std::string getLanguagePrefix();
struct VisualNovelCharacterEmotion emotionHappy;
struct VisualNovelCharacterEmotion emotionConcerned;
struct VisualNovelCharacterEmotion emotionSurprised;
DeathPrefab(Scene *s, sceneitemid_t i) : CharacterPrefab(s,i) {}
};
// Copyright (c) 2023 Dominic Masters
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
#pragma once
#include "prefabs/characters/CharacterPrefab.hpp"
namespace Dawn {
class DeathPrefab : public CharacterPrefab<DeathPrefab> {
protected:
struct VisualNovelCharacterEmotion defineAndGetInitialEmotion(
AssetManager *man
) override;
public:
static std::string getCharacterTexture();
static std::string getCharacterTileset();
static std::string getLanguagePrefix();
struct VisualNovelCharacterEmotion emotionHappy;
struct VisualNovelCharacterEmotion emotionConcerned;
struct VisualNovelCharacterEmotion emotionSurprised;
struct VisualNovelCharacterEmotion emotionUnset;
DeathPrefab(Scene *s, sceneitemid_t i) : CharacterPrefab(s,i) {}
};
}

View File

@ -48,6 +48,8 @@ namespace Dawn {
if(ret != 0) return ret;
++itChildren;
}
out->header.includes.push_back("visualnovel/events/VisualNovelEmptyEvent.hpp");
return ret;
}
@ -83,7 +85,7 @@ namespace Dawn {
getVNEvent.name = "getVNEvent";
getVNEvent.type = "IVisualNovelEvent *";
getVNEvent.isOverride = true;
line(&getVNEvent.body, "auto start = new VisualNovelPauseEvent(vnManager, 1.0f);", "");
line(&getVNEvent.body, "auto start = new VisualNovelEmptyEvent(vnManager);", "");
IncludeGen::generate(&c.includes, info->header.includes, "");
IncludeGen::generate(&c.includes, info->events.includes, "");