credits: Add Adam, Haru; retime; allow skip if any ending achieved

This commit is contained in:
Andrei Alexeyev 2020-02-25 16:39:27 +02:00
parent cc4d6317c7
commit 39a5f7d209
No known key found for this signature in database
GPG key ID: 363707CD4C7FE8A4

View file

@ -36,7 +36,11 @@ static struct {
#define CREDITS_FADEOUT 180
#define ENTRY_TIME 376
// ideally, this should be timed so that:
// (ENTRY_TIME * numEntries) + (HEADER_TIME * numHeaders) ~= 7190
#define ENTRY_TIME 412
#define HEADER_TIME 300
#define YUKKURI_TIME 200
static void credits_add(char *data, int time);
@ -45,7 +49,7 @@ static void credits_fill(void) {
// Tuck V's YouTube: https://www.youtube.com/channel/UCaw73cuHLnFCSpjOtt_9pyg
// InsideI's bandcamp: https://vnutriya.bandcamp.com/
credits_add("Taisei Project\nbrought to you by…", 200);
credits_add("Taisei Project\nbrought to you by…", HEADER_TIME);
credits_add((
"laochailan\n"
@ -83,7 +87,7 @@ static void credits_fill(void) {
"Hosting, packaging, editing,\n"
"spiritual guidance"
), ENTRY_TIME);
credits_add((
"Alice D\n"
"https://twitter.com/AmyZenunim\n"
@ -92,6 +96,19 @@ static void credits_fill(void) {
"macOS QA + debugging"
), ENTRY_TIME);
credits_add((
"Adam\n"
"https://twitter.com/adam_dnh\n\n"
"Dialogue writing (Iku, Elly)"
), ENTRY_TIME);
credits_add((
"Haru\n"
"https://venusers.tumblr.com/\n"
"https://twitter.com/violet_fantasia\n\n"
"Dialogue writing (Hina, Kurumi)"
), ENTRY_TIME);
credits_add((
"makise-homura\n"
"Igor Molchanov\n"
@ -108,7 +125,7 @@ static void credits_fill(void) {
"what this guy did"
), ENTRY_TIME);
credits_add("Special Thanks", ENTRY_TIME);
credits_add("Special Thanks", HEADER_TIME);
credits_add((
"ZUN\n"
@ -130,7 +147,7 @@ static void credits_fill(void) {
"libwebp\n" "https://git.io/WebP\n\n"
"FreeType\n" "https://freetype.org/\n\n"
"Ogg Opus\n" "https://www.opus-codec.org/"
), 327);
), ENTRY_TIME);
credits_add((
"\n"
@ -139,7 +156,7 @@ static void credits_fill(void) {
"Meson build system\n" "https://mesonbuild.com/\n\n"
"Krita\n" "https://krita.org/\n\n"
"and many other projects"
), 327);
), ENTRY_TIME);
credits_add((
"…and You!\n"
@ -155,8 +172,8 @@ static void credits_fill(void) {
"https://discord.gg/JEHCMzW"
), ENTRY_TIME);
// Yukkuri Kyouko
credits_add("*\nAnd don't forget to take it easy!", 180);
// Yukkuri Kyouko!
credits_add("*\nAnd don't forget to take it easy!", YUKKURI_TIME);
}
static void credits_add(char *data, int time) {
@ -164,9 +181,11 @@ static void credits_add(char *data, int time) {
char *c, buf[256];
int l = 0, i = 0;
assert(time > CREDITS_ENTRY_FADEOUT);
credits.entries = realloc(credits.entries, (++credits.ecount) * sizeof(CreditsEntry));
e = &(credits.entries[credits.ecount-1]);
e->time = time;
e->time = time - CREDITS_ENTRY_FADEOUT;
e->lines = 1;
for(c = data; *c; ++c)
@ -188,7 +207,7 @@ static void credits_add(char *data, int time) {
buf[i] = 0;
e->data[l] = malloc(strlen(buf) + 1);
strcpy(e->data[l], buf);
credits.end += time + CREDITS_ENTRY_FADEOUT;
credits.end += time;
}
static void credits_towerwall_draw(vec3 pos) {
@ -216,8 +235,13 @@ static void credits_init(void) {
global.frames = 0;
credits_fill();
credits.end += 500 + CREDITS_ENTRY_FADEOUT;
credits.skipable = progress_times_any_good_ending_achieved() > 0;
credits.end += 200 + CREDITS_ENTRY_FADEOUT;
// Should be >1, because if we get here, that means we have achieved an
// ending just now, which this counter includes.
// That is unless we're in `taisei --credits`. But in that case, skipping is
// presumably not desired anyway.
credits.skipable = progress_times_any_ending_achieved() > 1;
start_bgm("credits");
}
@ -263,7 +287,7 @@ static float yukkuri_jump(float t) {
}
static void credits_draw_entry(CreditsEntry *e) {
int time = global.frames - 400;
int time = global.frames - 200;
float fadein = 1, fadeout = 1;
for(CreditsEntry *o = credits.entries; o != e; ++o) {
@ -395,7 +419,7 @@ static void credits_process(void) {
stage_3d_context.cx[1] = 500 + 100 * psin(global.frames / 100.0) * psin(global.frames / 200.0 + M_PI);
stage_3d_context.cx[0] = 25 * sin(global.frames / 75.7) * cos(global.frames / 99.3);
FROM_TO(200, 300, 1)
FROM_TO(100, 200, 1)
credits.panelalpha += 0.01;
if(global.frames >= credits.end - CREDITS_ENTRY_FADEOUT) {