define sing-a-longs for all poems
This commit is contained in:
parent
b7fbcd6a9c
commit
5b303ef001
12
Makefile
12
Makefile
@ -75,7 +75,9 @@ OBJS = \
|
||||
src/renpy/interpreter.o \
|
||||
src/renpy/interact.o \
|
||||
src/audio.o \
|
||||
src/poem1.o
|
||||
src/poem/birdsong.o \
|
||||
src/poem/eleanorthehero.o \
|
||||
src/poem/kiristella.o
|
||||
|
||||
ZLIB = ../zlib-1.3.2
|
||||
CFLAGS += -I$(ZLIB)
|
||||
@ -117,8 +119,8 @@ all: main
|
||||
#%.dds: %.png
|
||||
# WINEDEBUG=-all wine $(HOME)/Texconv.exe -y -nogpu -nowic -dx10 --format BC7_UNORM_SRGB -m 1 $< -o $(dir $@)
|
||||
|
||||
%.pcm: %.wav
|
||||
ffmpeg -loglevel quiet -y -i $< -c:a pcm_s16le -ar 48000 -ac 2 -f s16le $@
|
||||
#%.pcm: %.wav
|
||||
# ffmpeg -loglevel quiet -y -i $< -c:a pcm_s16le -ar 48000 -ac 2 -f s16le $@
|
||||
|
||||
#%.pcm: %.ogg
|
||||
# ffmpeg -loglevel quiet -y -i $< -c:a pcm_s16le -ar 48000 -ac 2 -f s16le $@
|
||||
@ -126,8 +128,8 @@ all: main
|
||||
#%.pcm: %.mp3
|
||||
# ffmpeg -loglevel quiet -y -i $< -c:a pcm_s16le -ar 48000 -ac 2 -f s16le $@
|
||||
|
||||
%.opus.bin: %.pcm
|
||||
./tools/opus_encode $< $@
|
||||
#%.opus.bin: %.pcm
|
||||
# ./tools/opus_encode $< $@
|
||||
|
||||
main: $(OBJS) $(LIBS)
|
||||
$(CC) $(ARCH) $(LDFLAGS) $(FLAGS) $(OPT) $(DEBUG) $^ -o $@
|
||||
|
||||
Binary file not shown.
Binary file not shown.
BIN
audio/poem/BirdSong.opus.bin
Normal file
BIN
audio/poem/BirdSong.opus.bin
Normal file
Binary file not shown.
BIN
audio/poem/EleanorTheHero.opus.bin
Normal file
BIN
audio/poem/EleanorTheHero.opus.bin
Normal file
Binary file not shown.
BIN
audio/poem/KiriStella.opus.bin
Normal file
BIN
audio/poem/KiriStella.opus.bin
Normal file
Binary file not shown.
@ -699,15 +699,15 @@ label start:
|
||||
voice "leona/c53.ogg"
|
||||
c "Sing me a song little minstrels!"
|
||||
|
||||
menu:
|
||||
Estevie Kiri Stella
|
||||
The Hero of Eleanor (again)
|
||||
#menu:
|
||||
# Estevie Kiri Stella
|
||||
# The Hero of Eleanor (again)
|
||||
#stop WheatFields fadeout 3.0
|
||||
|
||||
#voice "mousegirls/mg2.ogg"
|
||||
e "..."
|
||||
play music "poem/KiriStella.ogg" noloop
|
||||
pause 64
|
||||
pause 67
|
||||
|
||||
|
||||
|
||||
|
||||
@ -40,9 +40,9 @@ audio/eily/e13.opus.bin
|
||||
audio/eily/e14.opus.bin
|
||||
audio/alice/a11.opus.bin
|
||||
audio/eily/e15.opus.bin
|
||||
audio/poem/BirdSong.wav
|
||||
audio/poem/EleanorTheHero.wav
|
||||
audio/poem/KiriStella.wav
|
||||
audio/poem/BirdSong.opus.bin
|
||||
audio/poem/EleanorTheHero.opus.bin
|
||||
audio/poem/KiriStella.opus.bin
|
||||
audio/eily/e16.opus.bin
|
||||
audio/alice/a12.opus.bin
|
||||
audio/leona/c1.opus.bin
|
||||
|
||||
@ -1,12 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include "renpy/language.h"
|
||||
#include "poem.h"
|
||||
|
||||
namespace audio {
|
||||
|
||||
extern int poem_timestamp_index;
|
||||
extern int poem_line_index;
|
||||
extern bool poem1_playing;
|
||||
extern poem::poem const * poem_playing;
|
||||
|
||||
void init();
|
||||
void load(renpy::language::audio const * const audio, int count);
|
||||
|
||||
26
include/poem.h
Normal file
26
include/poem.h
Normal file
@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
namespace poem {
|
||||
struct line {
|
||||
int start;
|
||||
int length;
|
||||
};
|
||||
|
||||
struct timestamp {
|
||||
double time;
|
||||
int wordIndex;
|
||||
};
|
||||
|
||||
struct poem {
|
||||
char const * const * const words;
|
||||
int const words_length;
|
||||
line const * const lines;
|
||||
int const lines_length;
|
||||
timestamp const * const timestamps;
|
||||
int const timestamps_length;
|
||||
};
|
||||
|
||||
extern poem const eleanorthehero;
|
||||
extern poem const kiristella;
|
||||
extern poem const birdsong;
|
||||
}
|
||||
@ -1,18 +0,0 @@
|
||||
namespace poem1 {
|
||||
struct line {
|
||||
int start;
|
||||
int length;
|
||||
};
|
||||
|
||||
struct timestamp {
|
||||
double time;
|
||||
int wordIndex;
|
||||
};
|
||||
|
||||
extern char const * const words[];
|
||||
extern int const words_length;
|
||||
extern line const lines[];
|
||||
extern int const lines_length;
|
||||
extern timestamp const timestamps[];
|
||||
extern int const timestamps_length;
|
||||
}
|
||||
@ -10,7 +10,7 @@
|
||||
#include "new.h"
|
||||
#include "minmax.h"
|
||||
#include "renpy/language.h"
|
||||
#include "poem1.h"
|
||||
#include "poem.h"
|
||||
|
||||
namespace audio {
|
||||
|
||||
@ -38,7 +38,7 @@ namespace audio {
|
||||
uint32_t tail_index;
|
||||
uint32_t fadeout_end;
|
||||
uint32_t fadeout_index;
|
||||
bool is_poem1;
|
||||
poem::poem const * poem;
|
||||
};
|
||||
|
||||
//
|
||||
@ -151,8 +151,16 @@ namespace audio {
|
||||
instance.tail_index = audio_buffers[audio_index].sample_count;
|
||||
instance.fadeout_end = 0;
|
||||
instance.fadeout_index = 0;
|
||||
instance.is_poem1 = (strcmp(instance.audio_buffer->audio->path, "audio/poem/Poem1.opus.bin") == 0);
|
||||
if (instance.is_poem1) {
|
||||
if (strcmp(instance.audio_buffer->audio->path, "audio/poem/BirdSong.opus.bin") == 0) {
|
||||
instance.poem = &poem::birdsong;
|
||||
} else if (strcmp(instance.audio_buffer->audio->path, "audio/poem/EleanorTheHero.opus.bin") == 0) {
|
||||
instance.poem = &poem::eleanorthehero;
|
||||
} else if (strcmp(instance.audio_buffer->audio->path, "audio/poem/KiriStella.opus.bin") == 0) {
|
||||
instance.poem = &poem::kiristella;
|
||||
} else {
|
||||
instance.poem = nullptr;
|
||||
}
|
||||
if (instance.poem != nullptr) {
|
||||
poem_timestamp_index = 0;
|
||||
poem_line_index = 0;
|
||||
}
|
||||
@ -276,25 +284,27 @@ namespace audio {
|
||||
|
||||
int poem_timestamp_index = 0;
|
||||
int poem_line_index = 0;
|
||||
bool poem1_playing = false;
|
||||
poem::poem const * poem_playing = nullptr;
|
||||
|
||||
void update_poem(AudioInstance & instance)
|
||||
{
|
||||
if (!instance.is_poem1) {
|
||||
if (instance.poem == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
poem1_playing = true;
|
||||
poem::poem const * const poem = instance.poem;
|
||||
assert(poem_playing == nullptr);
|
||||
poem_playing = poem;
|
||||
|
||||
if (poem_timestamp_index < (poem1::timestamps_length - 1)) {
|
||||
if (poem_timestamp_index < (poem->timestamps_length - 1)) {
|
||||
double time = (double)instance.sample_index / (double)sample_rate;
|
||||
while (poem1::timestamps[poem_timestamp_index + 1].time <= time) {
|
||||
while (poem->timestamps[poem_timestamp_index + 1].time <= time) {
|
||||
poem_timestamp_index += 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (poem_line_index < (poem1::lines_length - 1)) {
|
||||
while (poem1::timestamps[poem_timestamp_index].wordIndex >= poem1::lines[poem_line_index].start + poem1::lines[poem_line_index].length) {
|
||||
if (poem_line_index < (poem->lines_length - 1)) {
|
||||
while (poem->timestamps[poem_timestamp_index].wordIndex >= poem->lines[poem_line_index].start + poem->lines[poem_line_index].length) {
|
||||
poem_line_index += 1;
|
||||
}
|
||||
}
|
||||
@ -308,7 +318,7 @@ namespace audio {
|
||||
int16_t mix_buffer[half_period_samples * channels];
|
||||
memset(mix_buffer, 0, (sizeof (mix_buffer)));
|
||||
|
||||
poem1_playing = false;
|
||||
poem_playing = nullptr;
|
||||
for (int i = 0; i < audio_instances_count; i++) {
|
||||
update_instance(mix_buffer, audio_instances[i]);
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
#include "renpy/script.h"
|
||||
|
||||
#include "audio.h"
|
||||
#include "poem1.h"
|
||||
#include "poem.h"
|
||||
|
||||
namespace font::outline {
|
||||
static const _Float16 vertexData[] = {
|
||||
@ -745,11 +745,12 @@ namespace font::outline {
|
||||
}
|
||||
} else {
|
||||
bool say_poem = state.say.stringIndex == (uint32_t)renpy::script::strings_say_poem_index;
|
||||
if (audio::poem1_playing && say_poem) {
|
||||
int word_index = poem1::timestamps[audio::poem_timestamp_index].wordIndex;
|
||||
char const * const string = combine_words(poem1::words,
|
||||
poem1::lines[audio::poem_line_index].start,
|
||||
poem1::lines[audio::poem_line_index].length,
|
||||
if ((audio::poem_playing != nullptr) && say_poem) {
|
||||
poem::poem const * const poem = audio::poem_playing;
|
||||
int word_index = poem->timestamps[audio::poem_timestamp_index].wordIndex;
|
||||
char const * const string = combine_words(poem->words,
|
||||
poem->lines[audio::poem_line_index].start,
|
||||
poem->lines[audio::poem_line_index].length,
|
||||
word_index);
|
||||
uint32_t x = textboxLeft << 6;
|
||||
uint32_t y = (600 + 20) << 6;
|
||||
@ -759,10 +760,10 @@ namespace font::outline {
|
||||
outputIndex,
|
||||
0x000000);
|
||||
|
||||
if ((audio::poem_line_index + 1) < poem1::lines_length) {
|
||||
char const * const string = combine_words(poem1::words,
|
||||
poem1::lines[audio::poem_line_index + 1].start,
|
||||
poem1::lines[audio::poem_line_index + 1].length,
|
||||
if ((audio::poem_line_index + 1) < poem->lines_length) {
|
||||
char const * const string = combine_words(poem->words,
|
||||
poem->lines[audio::poem_line_index + 1].start,
|
||||
poem->lines[audio::poem_line_index + 1].length,
|
||||
-1);
|
||||
uint32_t x = textboxLeft << 6;
|
||||
//uint32_t y = (600 + 20) << 6;
|
||||
|
||||
@ -965,8 +965,8 @@ int main()
|
||||
|
||||
renpy::interpreter interpreter_state;
|
||||
//interpreter_state.reset(88);
|
||||
interpreter_state.reset(59);
|
||||
while (interpreter_state.pc < 88) {
|
||||
interpreter_state.reset(427);
|
||||
while (interpreter_state.pc < 533) {
|
||||
if (interpreter_state.pause.menu) {
|
||||
renpy::jumpToMenuItem(interpreter_state, 0);
|
||||
}
|
||||
@ -1319,7 +1319,7 @@ int main()
|
||||
offscreenRender(commandBuffer, frameIndex, mx, my, 2, true, renpy_state, interpreter_state, font_state, surfaceCapabilities);
|
||||
} else {
|
||||
offscreenRender(commandBuffer, frameIndex, mx, my, 0, true, renpy_state, interpreter_state, font_state, surfaceCapabilities);
|
||||
offscreenRender(commandBuffer, frameIndex, mx, my, 1, false, renpy_state, interpreter_state, font_state, surfaceCapabilities);
|
||||
offscreenRender(commandBuffer, frameIndex, mx, my, 1, drawText, renpy_state, interpreter_state, font_state, surfaceCapabilities);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
94
src/poem/birdsong.cpp
Normal file
94
src/poem/birdsong.cpp
Normal file
@ -0,0 +1,94 @@
|
||||
#include "poem.h"
|
||||
|
||||
namespace poem {
|
||||
static char const * const words[] = {
|
||||
"La", "drevo", "se", "la", // 4
|
||||
"la", "se", "esmiral", // 3
|
||||
"as", "dra", "verisal", // 3
|
||||
"very", "fior", // 2
|
||||
|
||||
"La", "dro", // 2
|
||||
"Se", "la", "Tagi", "de", "sma", "ve", "la", // 7
|
||||
"ve", "la", "lu", "de", // 4
|
||||
|
||||
"Varose", // 1
|
||||
"Eleison", // 1
|
||||
"Eleison", // 1
|
||||
|
||||
"La", "la", "lu", "ser", "per", "dio", // 6
|
||||
};
|
||||
static int const words_length = (sizeof (words)) / (sizeof (words[0]));
|
||||
|
||||
static line const lines[] = {
|
||||
{ 0, 4 },
|
||||
{ 4, 3 },
|
||||
{ 7, 3 },
|
||||
{ 10, 2 },
|
||||
{ 12, 2 },
|
||||
{ 14, 7 },
|
||||
{ 21, 4 },
|
||||
{ 25, 1 },
|
||||
{ 26, 1 },
|
||||
{ 27, 1 },
|
||||
{ 28, 6 },
|
||||
};
|
||||
static int const lines_length = (sizeof (lines)) / (sizeof (lines[0]));
|
||||
|
||||
static timestamp const timestamps[] = {
|
||||
{ 0.0, -1 }, // [instrumental]
|
||||
|
||||
{ 9.65, 0 }, // La
|
||||
{ 10.59, 1 }, // drevo
|
||||
{ 11.675, 2 }, // se
|
||||
{ 12.475, 3 }, // la
|
||||
{ 12.82, 4 }, // la
|
||||
{ 13.125, 5 }, // se
|
||||
{ 13.955, 6 }, // esmiral
|
||||
{ 14.795, 7 }, // as
|
||||
{ 15.28, 8 }, // dra
|
||||
{ 16.015, 9 }, // verisal
|
||||
{ 17.025, 10 }, // very
|
||||
{ 17.46, 11 }, // fior
|
||||
|
||||
{ 18.99, 12 }, // La
|
||||
{ 20.03, 13 }, // dro
|
||||
{ 21.18, 14 }, // Se
|
||||
{ 21.86, 15 }, // la
|
||||
{ 22.15, 16 }, // Tagi
|
||||
{ 22.94, 17 }, // de
|
||||
{ 23.31, 18 }, // sma
|
||||
{ 24.075, 19 }, // ve
|
||||
{ 24.20, 20 }, // la
|
||||
{ 25.12, 21 }, // ve
|
||||
{ 25.63, 22 }, // la
|
||||
{ 26.175, 23 }, // lu
|
||||
{ 27.755, 24 }, // de
|
||||
|
||||
{ 27.975, -1 }, // [instrumental]
|
||||
|
||||
{ 46.155, 25 }, // Varose
|
||||
{ 48.41, 26 }, // Eleison
|
||||
{ 50.88, 27 }, // Eleison
|
||||
|
||||
{ 58.50, -1 }, // [instrumental]
|
||||
|
||||
{ 59.63, 28 }, // La
|
||||
{ 61.87, 29 }, // la
|
||||
{ 62.82, 30 }, // lu
|
||||
{ 62.94, 31 }, // ser
|
||||
{ 63.76, 32 }, // per
|
||||
{ 64.24, 33 }, // dio
|
||||
|
||||
{ 72.92, -1 }, // [instrumental]
|
||||
};
|
||||
static int const timestamps_length = (sizeof (timestamps)) / (sizeof (timestamps[0]));
|
||||
|
||||
poem const birdsong = {
|
||||
.words = words,
|
||||
.words_length = words_length,
|
||||
.lines = lines,
|
||||
.lines_length = lines_length,
|
||||
.timestamps = timestamps,
|
||||
.timestamps_length = timestamps_length,
|
||||
};
|
||||
}
|
||||
@ -1,7 +1,7 @@
|
||||
#include "poem1.h"
|
||||
#include "poem.h"
|
||||
|
||||
namespace poem1 {
|
||||
char const * const words[] = {
|
||||
namespace poem {
|
||||
static char const * const words[] = {
|
||||
"Windless", "misty", "nights",
|
||||
"I've", "seen", "along", "my", "way",
|
||||
"Long", "ago",
|
||||
@ -10,9 +10,9 @@ namespace poem1 {
|
||||
"Clad", "in", "cloud", "and", "rain",
|
||||
"Through", "the", "night", "and", "the", "day",
|
||||
};
|
||||
int const words_length = (sizeof (words)) / (sizeof (words[0]));
|
||||
static int const words_length = (sizeof (words)) / (sizeof (words[0]));
|
||||
|
||||
line const lines[] = {
|
||||
static line const lines[] = {
|
||||
{ 0, 3 },
|
||||
{ 3, 5 },
|
||||
{ 8, 2 },
|
||||
@ -21,9 +21,9 @@ namespace poem1 {
|
||||
{ 20, 5 },
|
||||
{ 25, 6 }
|
||||
};
|
||||
int const lines_length = (sizeof (lines)) / (sizeof (lines[0]));
|
||||
static int const lines_length = (sizeof (lines)) / (sizeof (lines[0]));
|
||||
|
||||
timestamp const timestamps[] = {
|
||||
static timestamp const timestamps[] = {
|
||||
{ 0.0, -1 }, // [instrumental]
|
||||
|
||||
{ 4.985, 0 }, // windless
|
||||
@ -68,5 +68,14 @@ namespace poem1 {
|
||||
|
||||
{ 33.00, -1 }, // [instrumental]
|
||||
};
|
||||
int const timestamps_length = (sizeof (timestamps)) / (sizeof (timestamps[0]));
|
||||
static int const timestamps_length = (sizeof (timestamps)) / (sizeof (timestamps[0]));
|
||||
|
||||
poem const eleanorthehero = {
|
||||
.words = words,
|
||||
.words_length = words_length,
|
||||
.lines = lines,
|
||||
.lines_length = lines_length,
|
||||
.timestamps = timestamps,
|
||||
.timestamps_length = timestamps_length,
|
||||
};
|
||||
}
|
||||
74
src/poem/kiristella.cpp
Normal file
74
src/poem/kiristella.cpp
Normal file
@ -0,0 +1,74 @@
|
||||
#include "poem.h"
|
||||
|
||||
namespace poem {
|
||||
static char const * const words[] = {
|
||||
"La", "lu", "te", "diri", "va",
|
||||
"Ki", "estevi", "sa",
|
||||
"veri", "son",
|
||||
"la", "ser", "vi", "ih", "ta",
|
||||
"nu",
|
||||
"veri", "eh", "sta",
|
||||
"Kiri", "stella",
|
||||
"Kiri", "stella",
|
||||
"nu",
|
||||
};
|
||||
static int const words_length = (sizeof (words)) / (sizeof (words[0]));
|
||||
|
||||
static line const lines[] = {
|
||||
{ 0, 5 },
|
||||
{ 5, 3 },
|
||||
{ 8, 2 },
|
||||
{ 10, 5 },
|
||||
{ 15, 1 },
|
||||
{ 16, 3 },
|
||||
{ 19, 2 },
|
||||
{ 21, 2 },
|
||||
{ 23, 1 },
|
||||
};
|
||||
static int const lines_length = (sizeof (lines)) / (sizeof (lines[0]));
|
||||
|
||||
static timestamp const timestamps[] = {
|
||||
{ 0.00 , -1 }, // [instrumental]
|
||||
|
||||
{ 18.52 , 0 }, // La
|
||||
{ 19.62 , 1 }, // lu
|
||||
{ 20.60 , 2 }, // te
|
||||
{ 21.25 , 3 }, // diri
|
||||
{ 21.52 , 4 }, // va
|
||||
|
||||
{ 22.58 , 5 }, // Ki
|
||||
{ 23.87 , 6 }, // estevi
|
||||
{ 25.33 , 7 }, // sa
|
||||
{ 26.125 , 8 }, // veri
|
||||
{ 26.38 , 9 }, // son
|
||||
|
||||
{ 27.81 , 10 }, // La
|
||||
{ 28.35 , 11 }, // ser
|
||||
{ 28.86 , 12 }, // vi
|
||||
{ 29.02 , 13 }, // ih
|
||||
{ 29.175 , 14 }, // ta
|
||||
{ 30.22 , 15 }, // nu
|
||||
|
||||
{ 31.65 , 16 }, // veri
|
||||
{ 31.82 , 17 }, // eh
|
||||
{ 32.40 , 18 }, // sta
|
||||
|
||||
{ 34.22 , 19 }, // Kiri
|
||||
{ 35.91 , 20 }, // stella
|
||||
{ 38.16 , 21 }, // Kiri
|
||||
{ 40.10 , 22 }, // stella
|
||||
{ 42.26 , 23 }, // nu
|
||||
|
||||
{ 51.94 , -1 }, // [instrumental]
|
||||
};
|
||||
static int const timestamps_length = (sizeof (timestamps)) / (sizeof (timestamps[0]));
|
||||
|
||||
poem const kiristella = {
|
||||
.words = words,
|
||||
.words_length = words_length,
|
||||
.lines = lines,
|
||||
.lines_length = lines_length,
|
||||
.timestamps = timestamps,
|
||||
.timestamps_length = timestamps_length,
|
||||
};
|
||||
}
|
||||
@ -568,15 +568,15 @@ const language::dissolve dissolves[] = {
|
||||
{ .duration = 1.3, .first_statement = 337, .count = 3 },
|
||||
{ .duration = 3.0, .first_statement = 418, .count = 1 },
|
||||
{ .duration = 2.0, .first_statement = 427, .count = 2 },
|
||||
{ .duration = 7.0, .first_statement = 537, .count = 1 },
|
||||
{ .duration = 7.0, .first_statement = 539, .count = 1 },
|
||||
{ .duration = 7.0, .first_statement = 541, .count = 1 },
|
||||
{ .duration = 7.0, .first_statement = 543, .count = 1 },
|
||||
{ .duration = 7.0, .first_statement = 545, .count = 1 },
|
||||
{ .duration = 7.0, .first_statement = 547, .count = 1 },
|
||||
{ .duration = 7.0, .first_statement = 549, .count = 1 },
|
||||
{ .duration = 10.0, .first_statement = 551, .count = 1 },
|
||||
{ .duration = 13.0, .first_statement = 553, .count = 1 },
|
||||
{ .duration = 7.0, .first_statement = 538, .count = 2 },
|
||||
{ .duration = 7.0, .first_statement = 541, .count = 2 },
|
||||
{ .duration = 7.0, .first_statement = 544, .count = 2 },
|
||||
{ .duration = 7.0, .first_statement = 547, .count = 2 },
|
||||
{ .duration = 7.0, .first_statement = 550, .count = 2 },
|
||||
{ .duration = 7.0, .first_statement = 553, .count = 2 },
|
||||
{ .duration = 7.0, .first_statement = 556, .count = 2 },
|
||||
{ .duration = 10.0, .first_statement = 559, .count = 2 },
|
||||
{ .duration = 13.0, .first_statement = 563, .count = 2 },
|
||||
};
|
||||
|
||||
const int dissolves_length = (sizeof (dissolves)) / (sizeof (dissolves[0]));
|
||||
@ -987,7 +987,7 @@ const language::statement statements[] = {
|
||||
{ .type = type::say, .say = { .characterIndex = 2, .stringIndex = 162 } }, // 402 c "Sing me a song little minstrels!"
|
||||
{ .type = type::say, .say = { .characterIndex = 3, .stringIndex = 31 } }, // 403 e "..."
|
||||
{ .type = type::play, .play = { .audioIndex = 170 } }, // 404 poem/KiriStella.ogg
|
||||
{ .type = type::pause, .pause = { .duration = 64 } }, // 405
|
||||
{ .type = type::pause, .pause = { .duration = 67 } }, // 405
|
||||
{ .type = type::voice, .voice = { .audioIndex = 171 } }, // 406 leona/c54.ogg
|
||||
{ .type = type::say, .say = { .characterIndex = 2, .stringIndex = 163 } }, // 407 c "Very Nyice!"
|
||||
{ .type = type::voice, .voice = { .audioIndex = 172 } }, // 408 leona/c55.ogg
|
||||
@ -1119,31 +1119,42 @@ const language::statement statements[] = {
|
||||
{ .type = type::say, .say = { .characterIndex = 3, .stringIndex = 31 } }, // 534 e "..."
|
||||
{ .type = type::play, .play = { .audioIndex = 231 } }, // 535 poem/BirdSong.ogg
|
||||
{ .type = type::scene, .scene = { .imageIndex = 6 } }, // 536 bgcastle2
|
||||
{ .type = type::scene, .scene = { .imageIndex = 6 } }, // 537 bgcastle2
|
||||
{ .type = type::pause, .pause = { .duration = 0.0 } }, // 538
|
||||
{ .type = type::scene, .scene = { .imageIndex = 7 } }, // 539 bgcastle3
|
||||
{ .type = type::say, .say = { .characterIndex = 3, .stringIndex = 31 } }, // 537 e "..."
|
||||
{ .type = type::scene, .scene = { .imageIndex = 6 } }, // 538 bgcastle2
|
||||
{ .type = type::say, .say = { .characterIndex = 3, .stringIndex = 31 } }, // 539 e "..."
|
||||
{ .type = type::pause, .pause = { .duration = 0.0 } }, // 540
|
||||
{ .type = type::scene, .scene = { .imageIndex = 8 } }, // 541 bgcastle4
|
||||
{ .type = type::pause, .pause = { .duration = 0.0 } }, // 542
|
||||
{ .type = type::scene, .scene = { .imageIndex = 7 } }, // 543 bgcastle3
|
||||
{ .type = type::pause, .pause = { .duration = 0.0 } }, // 544
|
||||
{ .type = type::scene, .scene = { .imageIndex = 6 } }, // 545 bgcastle2
|
||||
{ .type = type::scene, .scene = { .imageIndex = 7 } }, // 541 bgcastle3
|
||||
{ .type = type::say, .say = { .characterIndex = 3, .stringIndex = 31 } }, // 542 e "..."
|
||||
{ .type = type::pause, .pause = { .duration = 0.0 } }, // 543
|
||||
{ .type = type::scene, .scene = { .imageIndex = 8 } }, // 544 bgcastle4
|
||||
{ .type = type::say, .say = { .characterIndex = 3, .stringIndex = 31 } }, // 545 e "..."
|
||||
{ .type = type::pause, .pause = { .duration = 0.0 } }, // 546
|
||||
{ .type = type::scene, .scene = { .imageIndex = 7 } }, // 547 bgcastle3
|
||||
{ .type = type::pause, .pause = { .duration = 0.0 } }, // 548
|
||||
{ .type = type::scene, .scene = { .imageIndex = 6 } }, // 549 bgcastle2
|
||||
{ .type = type::pause, .pause = { .duration = 0.0 } }, // 550
|
||||
{ .type = type::scene, .scene = { .imageIndex = 5 } }, // 551 bgcastle1
|
||||
{ .type = type::pause, .pause = { .duration = 3 } }, // 552
|
||||
{ .type = type::scene_color, .scene_color = { .color = 0xffffff } }, // 553 bgwhite
|
||||
{ .type = type::pause, .pause = { .duration = 33 } }, // 554
|
||||
{ .type = type::voice, .voice = { .audioIndex = 232 } }, // 555 nara/n11.ogg
|
||||
{ .type = type::say, .say = { .characterIndex = 5, .stringIndex = 217 } }, // 556 n "In the end, Leona managed to stay out of the dungeon"
|
||||
{ .type = type::voice, .voice = { .audioIndex = 233 } }, // 557 nara/n12.ogg
|
||||
{ .type = type::say, .say = { .characterIndex = 5, .stringIndex = 218 } }, // 558 n "Eily and Alice both stayed in service of the queen for 7 harvests"
|
||||
{ .type = type::voice, .voice = { .audioIndex = 234 } }, // 559 nara/n13.ogg
|
||||
{ .type = type::say, .say = { .characterIndex = 5, .stringIndex = 219 } }, // 560 n "before returning to their small nameless town, near the Keep of Musia"
|
||||
{ .type = type::_return }, // 561
|
||||
{ .type = type::say, .say = { .characterIndex = 3, .stringIndex = 31 } }, // 548 e "..."
|
||||
{ .type = type::pause, .pause = { .duration = 0.0 } }, // 549
|
||||
{ .type = type::scene, .scene = { .imageIndex = 6 } }, // 550 bgcastle2
|
||||
{ .type = type::say, .say = { .characterIndex = 3, .stringIndex = 31 } }, // 551 e "..."
|
||||
{ .type = type::pause, .pause = { .duration = 0.0 } }, // 552
|
||||
{ .type = type::scene, .scene = { .imageIndex = 7 } }, // 553 bgcastle3
|
||||
{ .type = type::say, .say = { .characterIndex = 3, .stringIndex = 31 } }, // 554 e "..."
|
||||
{ .type = type::pause, .pause = { .duration = 0.0 } }, // 555
|
||||
{ .type = type::scene, .scene = { .imageIndex = 6 } }, // 556 bgcastle2
|
||||
{ .type = type::say, .say = { .characterIndex = 3, .stringIndex = 31 } }, // 557 e "..."
|
||||
{ .type = type::pause, .pause = { .duration = 0.0 } }, // 558
|
||||
{ .type = type::scene, .scene = { .imageIndex = 5 } }, // 559 bgcastle1
|
||||
{ .type = type::say, .say = { .characterIndex = 3, .stringIndex = 31 } }, // 560 e "..."
|
||||
{ .type = type::pause, .pause = { .duration = 0.0 } }, // 561
|
||||
{ .type = type::pause, .pause = { .duration = 3 } }, // 562
|
||||
{ .type = type::scene_color, .scene_color = { .color = 0xffffff } }, // 563 bgwhite
|
||||
{ .type = type::say, .say = { .characterIndex = 3, .stringIndex = 31 } }, // 564 e "..."
|
||||
{ .type = type::pause, .pause = { .duration = 33 } }, // 565
|
||||
{ .type = type::voice, .voice = { .audioIndex = 232 } }, // 566 nara/n11.ogg
|
||||
{ .type = type::say, .say = { .characterIndex = 5, .stringIndex = 217 } }, // 567 n "In the end, Leona managed to stay out of the dungeon"
|
||||
{ .type = type::voice, .voice = { .audioIndex = 233 } }, // 568 nara/n12.ogg
|
||||
{ .type = type::say, .say = { .characterIndex = 5, .stringIndex = 218 } }, // 569 n "Eily and Alice both stayed in service of the queen for 7 harvests"
|
||||
{ .type = type::voice, .voice = { .audioIndex = 234 } }, // 570 nara/n13.ogg
|
||||
{ .type = type::say, .say = { .characterIndex = 5, .stringIndex = 219 } }, // 571 n "before returning to their small nameless town, near the Keep of Musia"
|
||||
{ .type = type::_return }, // 572
|
||||
};
|
||||
|
||||
const int statements_length = (sizeof (statements)) / (sizeof (statements[0]));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user