From e1a7bfb1647598a48fd1bee6424630d943b49bd1 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Wed, 26 Jun 2019 13:09:26 +0300 Subject: [PATCH 001/104] coroutines (proof of concept) --- .gitmodules | 3 + external/libco | 1 + meson.build | 2 + src/coroutine.c | 152 +++++++++++++++++++++++++++++++++++++++++ src/coroutine.h | 58 ++++++++++++++++ src/main.c | 3 + src/meson.build | 1 + src/stage.c | 4 ++ src/stages/corotest.c | 105 ++++++++++++++++++++++++++++ src/stages/corotest.h | 18 +++++ src/stages/meson.build | 2 + subprojects/libco | 1 + 12 files changed, 350 insertions(+) create mode 160000 external/libco create mode 100644 src/coroutine.c create mode 100644 src/coroutine.h create mode 100644 src/stages/corotest.c create mode 100644 src/stages/corotest.h create mode 120000 subprojects/libco diff --git a/.gitmodules b/.gitmodules index 7d0228ddba..f01e800627 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,3 +6,6 @@ path = external/gamecontrollerdb url = https://github.com/taisei-project/SDL_GameControllerDB.git branch = master +[submodule "external/libco"] + path = external/libco + url = https://github.com/taisei-project/libco.git diff --git a/external/libco b/external/libco new file mode 160000 index 0000000000..0cfd97506e --- /dev/null +++ b/external/libco @@ -0,0 +1 @@ +Subproject commit 0cfd97506e9bcdbd4643567ed3b92fca333df828 diff --git a/meson.build b/meson.build index 9d8f725d67..717e4aa89e 100644 --- a/meson.build +++ b/meson.build @@ -165,10 +165,12 @@ dep_m = cc.find_library('m', required : false) dep_cglm = subproject('cglm').get_variable('cglm_dep') dep_glad = subproject('glad').get_variable('glad_dep') +dep_libco = subproject('libco').get_variable('libco_dep') taisei_deps = [ dep_cglm, dep_freetype, + dep_libco, dep_m, dep_png, dep_sdl2, diff --git a/src/coroutine.c b/src/coroutine.c new file mode 100644 index 0000000000..a2d1518846 --- /dev/null +++ b/src/coroutine.c @@ -0,0 +1,152 @@ +/* + * This software is licensed under the terms of the MIT-License + * See COPYING for further information. + * --- + * Copyright (c) 2011-2019, Lukas Weber . + * Copyright (c) 2012-2019, Andrei Alexeyev . + */ + +#include "taisei.h" + +#include "coroutine.h" +#include "util.h" + +#include + +#define CO_STACK_SIZE (4096*2) + +struct CoTask { + LIST_INTERFACE(CoTask); + cothread_t cothread; + CoTask *caller; + CoTaskFunc func; + void *arg; + CoStatus status; +}; + +struct CoSched { + LIST_ANCHOR(CoTask) tasks, pending_tasks; +}; + +static CoTask *this_task, main_task; +CoSched *_cosched_global; + +static noreturn void co_thunk(void) { + CoTask *task = this_task; + task->func(task->arg); + task->status = CO_STATUS_DEAD; + cotask_resume(&main_task, NULL); + UNREACHABLE; +} + +CoTask *cotask_new(CoTaskFunc func) { + CoTask *task = calloc(1, sizeof(*task)); + task->cothread = co_create(CO_STACK_SIZE, co_thunk); + task->status = CO_STATUS_SUSPENDED; + task->func = func; + return task; +} + +void cotask_free(CoTask *task) { + co_delete(task->cothread); + free(task); +} + +void *cotask_resume(CoTask *task, void *arg) { + assert(task->status == CO_STATUS_SUSPENDED); + + if(this_task->status != CO_STATUS_DEAD) { + assert(this_task->status == CO_STATUS_RUNNING); + this_task->status = CO_STATUS_SUSPENDED; + } + + task->status = CO_STATUS_RUNNING; + task->caller = this_task; + task->arg = arg; + this_task = task; + + co_switch(task->cothread); + return this_task->arg; +} + +void *cotask_yield(void *arg) { + CoTask *task = this_task->caller; + + assert(task->status == CO_STATUS_SUSPENDED); + + if(this_task->status != CO_STATUS_DEAD) { + assert(this_task->status == CO_STATUS_RUNNING); + this_task->status = CO_STATUS_SUSPENDED; + } + + task->status = CO_STATUS_RUNNING; + task->arg = arg; + this_task = task; + + co_switch(task->cothread); + return this_task->arg; +} + +CoStatus cotask_status(CoTask *task) { + return task->status; +} + +CoSched *cosched_new(void) { + CoSched *sched = calloc(1, sizeof(*sched)); + return sched; +} + +void *cosched_newtask(CoSched *sched, CoTaskFunc func, void *arg) { + CoTask *task = cotask_new(func); + void *ret = cotask_resume(task, arg); + + if(task->status == CO_STATUS_DEAD) { + cotask_free(task); + } else { + assume(task->status == CO_STATUS_SUSPENDED); + alist_append(&sched->pending_tasks, task); + } + + return ret; +} + +uint cosched_run_tasks(CoSched *sched) { + for(CoTask *t; (t = alist_pop(&sched->pending_tasks));) { + alist_append(&sched->tasks, t); + } + + uint ran = 0; + + for(CoTask *t = sched->tasks.first, *next; t; t = next) { + next = t->next; + assert(t->status == CO_STATUS_SUSPENDED); + cotask_resume(t, NULL); + ++ran; + + if(t->status == CO_STATUS_DEAD) { + alist_unlink(&sched->tasks, t); + cotask_free(t); + } + } + + return ran; +} + +void cosched_free(CoSched *sched) { + for(CoTask *t = sched->pending_tasks.first, *next; t; t = next) { + next = t->next; + cotask_free(t); + } + + for(CoTask *t = sched->tasks.first, *next; t; t = next) { + next = t->next; + cotask_free(t); + } +} + +void coroutines_init(void) { + memset(&main_task, 0, sizeof(main_task)); + main_task.cothread = co_active(); + main_task.status = CO_STATUS_RUNNING; + this_task = &main_task; +} diff --git a/src/coroutine.h b/src/coroutine.h new file mode 100644 index 0000000000..407f1cd513 --- /dev/null +++ b/src/coroutine.h @@ -0,0 +1,58 @@ +/* + * This software is licensed under the terms of the MIT-License + * See COPYING for further information. + * --- + * Copyright (c) 2011-2019, Lukas Weber . + * Copyright (c) 2012-2019, Andrei Alexeyev . + */ + +#ifndef IGUARD_coroutine_h +#define IGUARD_coroutine_h + +#include "taisei.h" + +typedef struct CoTask CoTask; +typedef struct CoSched CoSched; +typedef void (*CoTaskFunc)(void *arg); + +// target for the INVOKE_TASK macro +extern CoSched *_cosched_global; + +typedef enum CoStatus { + CO_STATUS_SUSPENDED, + CO_STATUS_RUNNING, + CO_STATUS_DEAD, +} CoStatus; + +void coroutines_init(void); + +CoTask *cotask_new(CoTaskFunc func); +void cotask_free(CoTask *task); +void *cotask_resume(CoTask *task, void *arg); +void *cotask_yield(void *arg); +CoStatus cotask_status(CoTask *task); + +CoSched *cosched_new(void); +void *cosched_newtask(CoSched *sched, CoTaskFunc func, void *arg); // creates and runs the task, returns whatever it yields, schedules it for resume on cosched_run_tasks if it's still alive +uint cosched_run_tasks(CoSched *sched); // returns number of tasks ran +void cosched_free(CoSched *sched); + +static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; } + +#define TASK(name, argstruct) \ + typedef struct argstruct COARGS_##name; \ + static void COTASK_##name(COARGS_##name ARGS); \ + static void COTASKTHUNK_##name(void *arg) { \ + COTASK_##name(*(COARGS_##name*)arg); \ + } \ + static void COTASK_##name(COARGS_##name ARGS) + +#define INVOKE_TASK(name, ...) do { \ + COARGS_##name _coargs = { __VA_ARGS__ }; \ + cosched_newtask(_cosched_global, COTASKTHUNK_##name, &_coargs); \ +} while(0) + +#define YIELD cotask_yield(NULL) +#define WAIT(delay) do { int _delay = (delay); do YIELD; while(_delay--); } while(0) + +#endif // IGUARD_coroutine_h diff --git a/src/main.c b/src/main.c index 96481f464c..1a6a05bea7 100644 --- a/src/main.c +++ b/src/main.c @@ -25,6 +25,7 @@ #include "version.h" #include "credits.h" #include "taskmanager.h" +#include "coroutine.h" attr_unused static void taisei_shutdown(void) { @@ -250,6 +251,8 @@ int main(int argc, char **argv) { log_info("Girls are now preparing, please wait warmly..."); + coroutines_init(); + free_cli_action(&ctx->cli); vfs_setup(CALLCHAIN(main_post_vfsinit, ctx)); return 0; diff --git a/src/meson.build b/src/meson.build index 6bfc1a23f4..a7f3757e89 100644 --- a/src/meson.build +++ b/src/meson.build @@ -65,6 +65,7 @@ taisei_src = files( 'color.c', 'color.c', 'config.c', + 'coroutine.c', 'credits.c', 'dialog.c', 'difficulty.c', diff --git a/src/stage.c b/src/stage.c index f904965ecb..d0c6b5dc60 100644 --- a/src/stage.c +++ b/src/stage.c @@ -95,6 +95,8 @@ static bool spellfilter_extra(AttackInfo *spell) { return spell->type == AT_ExtraSpell; } +#include "stages/corotest.h" + void stage_init_array(void) { int spellnum = 0; @@ -120,6 +122,8 @@ void stage_init_array(void) { add_spellpractice_stage(stages, &stage1_spell_benchmark, &spellnum, STAGE_SPELL_BIT, D_Extra); #endif + add_stage(0xC0, &corotest_procs, STAGE_SPECIAL, "Coroutines!", "wow such concurrency very async", NULL, D_Any); + end_stages(); #ifdef DEBUG diff --git a/src/stages/corotest.c b/src/stages/corotest.c new file mode 100644 index 0000000000..676a751b81 --- /dev/null +++ b/src/stages/corotest.c @@ -0,0 +1,105 @@ +/* + * This software is licensed under the terms of the MIT-License + * See COPYING for further information. + * --- + * Copyright (c) 2011-2019, Lukas Weber . + * Copyright (c) 2012-2019, Andrei Alexeyev . + */ + +#include "taisei.h" + +#include "corotest.h" +#include "coroutine.h" +#include "global.h" + +static CoSched *cotest_sched; + +static void cotest_stub_proc(void) { } + +static int dummy_rule(Enemy *e, int t) { return t < 0 ? ACTION_ACK : ACTION_NONE; } + +TASK(test_enemy, { double hp; complex pos; complex dir; }) { + Enemy *e = create_enemy1c(ARGS.pos, ARGS.hp, BigFairy, dummy_rule, 0); + int eref = add_ref(e); + + #define UPDATE_REF do { if(!(e = REF(eref))) goto dead; } while(0) + #define UYIELD do { YIELD; UPDATE_REF; } while(0) + #define UWAIT(frames) do { WAIT(frames); UPDATE_REF; } while(0) + + UYIELD; + + while(true) { + // wander around for a bit... + for(int i = 0; i < 20; ++i) { + e->pos += ARGS.dir; + UYIELD; + } + + // stop and... + UWAIT(10); + + // pew pew!!! + int pcount = 10 + 10 * frand(); + for(int i = 0; i < pcount; ++i) { + complex aim = global.plr.pos - e->pos; + aim *= 5 * cexp(I*M_PI*0.1*nfrand()) / cabs(aim); + + PROJECTILE( + .pos = e->pos, + .proto = pp_rice, + .color = RGBA(1.0, 0.0, i / (pcount - 1.0), 0.0), + .rule = linear, + .args = { aim }, + ); + + UWAIT(3); + } + + // keep wandering, randomly + ARGS.dir *= cexp(I*M_PI*nfrand()); + UYIELD; + } + +dead: + log_debug("enemy died!"); + free_ref(eref); +} + +TASK(stage_main, { int ignored; }) { + WAIT(30); + log_debug("test 1! %i", global.timer); + WAIT(60); + log_debug("test 2! %i", global.timer); + + for(;;) { + INVOKE_TASK(test_enemy, 9000, CMPLX(VIEWPORT_W, VIEWPORT_H) * 0.5, 3*I); + WAIT(240); + } +} + +static void cotest_begin(void) { + cotest_sched = cosched_new(); + cosched_set_invoke_target(cotest_sched); + INVOKE_TASK(stage_main, 0); +} + +static void cotest_end(void) { + cosched_free(cotest_sched); +} + +static void cotest_events(void) { + if(!global.gameover && !cosched_run_tasks(cotest_sched)) { + log_debug("over!"); + stage_finish(GAMEOVER_SCORESCREEN); + } +} + +StageProcs corotest_procs = { + .begin = cotest_begin, + .preload = cotest_stub_proc, + .end = cotest_stub_proc, + .draw = cotest_stub_proc, + .update = cotest_stub_proc, + .event = cotest_events, + .shader_rules = (ShaderRule[]) { NULL }, +}; diff --git a/src/stages/corotest.h b/src/stages/corotest.h new file mode 100644 index 0000000000..dff7aa5247 --- /dev/null +++ b/src/stages/corotest.h @@ -0,0 +1,18 @@ +/* + * This software is licensed under the terms of the MIT-License + * See COPYING for further information. + * --- + * Copyright (c) 2011-2019, Lukas Weber . + * Copyright (c) 2012-2019, Andrei Alexeyev . + */ + +#ifndef IGUARD_stages_corotest_h +#define IGUARD_stages_corotest_h + +#include "taisei.h" + +#include "stage.h" + +extern StageProcs corotest_procs; + +#endif // IGUARD_stages_corotest_h diff --git a/src/stages/meson.build b/src/stages/meson.build index c52a523696..57ef2b9490 100644 --- a/src/stages/meson.build +++ b/src/stages/meson.build @@ -19,3 +19,5 @@ if is_developer_build 'dpstest.c', ) endif + +stages_src += files('corotest.c') diff --git a/subprojects/libco b/subprojects/libco new file mode 120000 index 0000000000..23bf517f17 --- /dev/null +++ b/subprojects/libco @@ -0,0 +1 @@ +../external/libco \ No newline at end of file From f6c37da600033bb499dbccc2b6e80f4ff8e159d2 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Wed, 3 Jul 2019 15:53:49 +0300 Subject: [PATCH 002/104] coroutines: change WAIT(x) to mean "YIELD x times" if x <= 0, it's a no-op. --- src/coroutine.c | 4 ++-- src/coroutine.h | 6 +++--- src/stages/corotest.c | 4 +++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index a2d1518846..24e035d1fe 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -96,7 +96,7 @@ CoSched *cosched_new(void) { return sched; } -void *cosched_newtask(CoSched *sched, CoTaskFunc func, void *arg) { +void *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg) { CoTask *task = cotask_new(func); void *ret = cotask_resume(task, arg); @@ -120,7 +120,7 @@ uint cosched_run_tasks(CoSched *sched) { for(CoTask *t = sched->tasks.first, *next; t; t = next) { next = t->next; assert(t->status == CO_STATUS_SUSPENDED); - cotask_resume(t, NULL); + cotask_resume(t, t->arg); ++ran; if(t->status == CO_STATUS_DEAD) { diff --git a/src/coroutine.h b/src/coroutine.h index 407f1cd513..b698572f42 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -33,7 +33,7 @@ void *cotask_yield(void *arg); CoStatus cotask_status(CoTask *task); CoSched *cosched_new(void); -void *cosched_newtask(CoSched *sched, CoTaskFunc func, void *arg); // creates and runs the task, returns whatever it yields, schedules it for resume on cosched_run_tasks if it's still alive +void *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg); // creates and runs the task, returns whatever it yields, schedules it for resume on cosched_run_tasks if it's still alive uint cosched_run_tasks(CoSched *sched); // returns number of tasks ran void cosched_free(CoSched *sched); @@ -49,10 +49,10 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { #define INVOKE_TASK(name, ...) do { \ COARGS_##name _coargs = { __VA_ARGS__ }; \ - cosched_newtask(_cosched_global, COTASKTHUNK_##name, &_coargs); \ + cosched_new_task(_cosched_global, COTASKTHUNK_##name, &_coargs); \ } while(0) #define YIELD cotask_yield(NULL) -#define WAIT(delay) do { int _delay = (delay); do YIELD; while(_delay--); } while(0) +#define WAIT(delay) do { int _delay = (delay); while(_delay-- > 0) YIELD; } while(0) #endif // IGUARD_coroutine_h diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 676a751b81..214b636376 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -66,6 +66,8 @@ TASK(test_enemy, { double hp; complex pos; complex dir; }) { } TASK(stage_main, { int ignored; }) { + YIELD; + WAIT(30); log_debug("test 1! %i", global.timer); WAIT(60); @@ -97,7 +99,7 @@ static void cotest_events(void) { StageProcs corotest_procs = { .begin = cotest_begin, .preload = cotest_stub_proc, - .end = cotest_stub_proc, + .end = cotest_end, .draw = cotest_stub_proc, .update = cotest_stub_proc, .event = cotest_events, From 9739df6521055196ef4632fc4bbf8232662ab2b7 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Wed, 3 Jul 2019 16:13:03 +0300 Subject: [PATCH 003/104] generic facility for "breakable" YIELD/WAIT --- src/coroutine.h | 9 +++++++-- src/refs.h | 2 ++ src/stages/corotest.c | 16 +++++++--------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/coroutine.h b/src/coroutine.h index b698572f42..739251ed6f 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -52,7 +52,12 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { cosched_new_task(_cosched_global, COTASKTHUNK_##name, &_coargs); \ } while(0) -#define YIELD cotask_yield(NULL) -#define WAIT(delay) do { int _delay = (delay); while(_delay-- > 0) YIELD; } while(0) +#define YIELD cotask_yield(NULL) +#define WAIT(delay) do { int _delay = (delay); while(_delay-- > 0) YIELD; } while(0) + +// to use these inside a coroutine, define a BREAK_CONDITION macro and a BREAK label. +#define CHECK_BREAK do { if(BREAK_CONDITION) goto BREAK; } while(0) +#define BYIELD do { YIELD; CHECK_BREAK; } while(0) +#define BWAIT(frames) do { WAIT(frames); CHECK_BREAK; } while(0) #endif // IGUARD_coroutine_h diff --git a/src/refs.h b/src/refs.h index b4b344a0b2..6d32a0e06c 100644 --- a/src/refs.h +++ b/src/refs.h @@ -33,4 +33,6 @@ void del_ref(void *ptr); void free_ref(int i); void free_all_refs(void); +#define UPDATE_REF(ref, ptr) ((ptr) = REF(ref)) + #endif // IGUARD_refs_h diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 214b636376..3e8ee53f18 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -22,21 +22,19 @@ TASK(test_enemy, { double hp; complex pos; complex dir; }) { Enemy *e = create_enemy1c(ARGS.pos, ARGS.hp, BigFairy, dummy_rule, 0); int eref = add_ref(e); - #define UPDATE_REF do { if(!(e = REF(eref))) goto dead; } while(0) - #define UYIELD do { YIELD; UPDATE_REF; } while(0) - #define UWAIT(frames) do { WAIT(frames); UPDATE_REF; } while(0) + #define BREAK_CONDITION !UPDATE_REF(eref, e) - UYIELD; + BYIELD; while(true) { // wander around for a bit... for(int i = 0; i < 20; ++i) { e->pos += ARGS.dir; - UYIELD; + BYIELD; } // stop and... - UWAIT(10); + BWAIT(10); // pew pew!!! int pcount = 10 + 10 * frand(); @@ -52,15 +50,15 @@ TASK(test_enemy, { double hp; complex pos; complex dir; }) { .args = { aim }, ); - UWAIT(3); + BWAIT(3); } // keep wandering, randomly ARGS.dir *= cexp(I*M_PI*nfrand()); - UYIELD; + BYIELD; } -dead: +BREAK: log_debug("enemy died!"); free_ref(eref); } From cd85cef7d0973d878fc9668e602050fbcad03533 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 13 Jul 2019 09:27:10 +0300 Subject: [PATCH 004/104] replace libco with libkoishi --- .gitmodules | 6 ++-- external/koishi | 1 + external/libco | 1 - meson.build | 4 +-- src/coroutine.c | 73 +++++++++------------------------------------- src/coroutine.h | 13 +++++---- subprojects/koishi | 1 + subprojects/libco | 1 - 8 files changed, 28 insertions(+), 72 deletions(-) create mode 160000 external/koishi delete mode 160000 external/libco create mode 120000 subprojects/koishi delete mode 120000 subprojects/libco diff --git a/.gitmodules b/.gitmodules index f01e800627..bc88e8db73 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,6 +6,6 @@ path = external/gamecontrollerdb url = https://github.com/taisei-project/SDL_GameControllerDB.git branch = master -[submodule "external/libco"] - path = external/libco - url = https://github.com/taisei-project/libco.git +[submodule "external/koishi"] + path = external/koishi + url = https://github.com/taisei-project/koishi diff --git a/external/koishi b/external/koishi new file mode 160000 index 0000000000..cc6641ee7a --- /dev/null +++ b/external/koishi @@ -0,0 +1 @@ +Subproject commit cc6641ee7a3b0c17df4bfa56e6367bdb2e3ffc94 diff --git a/external/libco b/external/libco deleted file mode 160000 index 0cfd97506e..0000000000 --- a/external/libco +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0cfd97506e9bcdbd4643567ed3b92fca333df828 diff --git a/meson.build b/meson.build index 717e4aa89e..800731d18a 100644 --- a/meson.build +++ b/meson.build @@ -165,12 +165,12 @@ dep_m = cc.find_library('m', required : false) dep_cglm = subproject('cglm').get_variable('cglm_dep') dep_glad = subproject('glad').get_variable('glad_dep') -dep_libco = subproject('libco').get_variable('libco_dep') +dep_koishi = subproject('koishi').get_variable('koishi_dep') taisei_deps = [ dep_cglm, dep_freetype, - dep_libco, + dep_koishi, dep_m, dep_png, dep_sdl2, diff --git a/src/coroutine.c b/src/coroutine.c index 24e035d1fe..ae8f25804a 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -11,84 +11,40 @@ #include "coroutine.h" #include "util.h" -#include - -#define CO_STACK_SIZE (4096*2) +#define CO_STACK_SIZE (64 * 1024) struct CoTask { LIST_INTERFACE(CoTask); - cothread_t cothread; - CoTask *caller; - CoTaskFunc func; - void *arg; - CoStatus status; + koishi_coroutine_t ko; }; struct CoSched { LIST_ANCHOR(CoTask) tasks, pending_tasks; }; -static CoTask *this_task, main_task; CoSched *_cosched_global; -static noreturn void co_thunk(void) { - CoTask *task = this_task; - task->func(task->arg); - task->status = CO_STATUS_DEAD; - cotask_resume(&main_task, NULL); - UNREACHABLE; -} - CoTask *cotask_new(CoTaskFunc func) { CoTask *task = calloc(1, sizeof(*task)); - task->cothread = co_create(CO_STACK_SIZE, co_thunk); - task->status = CO_STATUS_SUSPENDED; - task->func = func; + koishi_init(&task->ko, CO_STACK_SIZE, func); return task; } void cotask_free(CoTask *task) { - co_delete(task->cothread); + koishi_deinit(&task->ko); free(task); } void *cotask_resume(CoTask *task, void *arg) { - assert(task->status == CO_STATUS_SUSPENDED); - - if(this_task->status != CO_STATUS_DEAD) { - assert(this_task->status == CO_STATUS_RUNNING); - this_task->status = CO_STATUS_SUSPENDED; - } - - task->status = CO_STATUS_RUNNING; - task->caller = this_task; - task->arg = arg; - this_task = task; - - co_switch(task->cothread); - return this_task->arg; + return koishi_resume(&task->ko, arg); } void *cotask_yield(void *arg) { - CoTask *task = this_task->caller; - - assert(task->status == CO_STATUS_SUSPENDED); - - if(this_task->status != CO_STATUS_DEAD) { - assert(this_task->status == CO_STATUS_RUNNING); - this_task->status = CO_STATUS_SUSPENDED; - } - - task->status = CO_STATUS_RUNNING; - task->arg = arg; - this_task = task; - - co_switch(task->cothread); - return this_task->arg; + return koishi_yield(arg); } CoStatus cotask_status(CoTask *task) { - return task->status; + return koishi_state(&task->ko); } CoSched *cosched_new(void) { @@ -100,10 +56,10 @@ void *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg) { CoTask *task = cotask_new(func); void *ret = cotask_resume(task, arg); - if(task->status == CO_STATUS_DEAD) { + if(cotask_status(task) == CO_STATUS_DEAD) { cotask_free(task); } else { - assume(task->status == CO_STATUS_SUSPENDED); + assume(cotask_status(task) == CO_STATUS_SUSPENDED); alist_append(&sched->pending_tasks, task); } @@ -119,11 +75,11 @@ uint cosched_run_tasks(CoSched *sched) { for(CoTask *t = sched->tasks.first, *next; t; t = next) { next = t->next; - assert(t->status == CO_STATUS_SUSPENDED); - cotask_resume(t, t->arg); + assert(cotask_status(t) == CO_STATUS_SUSPENDED); + cotask_resume(t, NULL); ++ran; - if(t->status == CO_STATUS_DEAD) { + if(cotask_status(t) == CO_STATUS_DEAD) { alist_unlink(&sched->tasks, t); cotask_free(t); } @@ -145,8 +101,5 @@ void cosched_free(CoSched *sched) { } void coroutines_init(void) { - memset(&main_task, 0, sizeof(main_task)); - main_task.cothread = co_active(); - main_task.status = CO_STATUS_RUNNING; - this_task = &main_task; + } diff --git a/src/coroutine.h b/src/coroutine.h index 739251ed6f..aeaf71865e 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -11,17 +11,19 @@ #include "taisei.h" +#include + typedef struct CoTask CoTask; typedef struct CoSched CoSched; -typedef void (*CoTaskFunc)(void *arg); +typedef void *(*CoTaskFunc)(void *arg); // target for the INVOKE_TASK macro extern CoSched *_cosched_global; typedef enum CoStatus { - CO_STATUS_SUSPENDED, - CO_STATUS_RUNNING, - CO_STATUS_DEAD, + CO_STATUS_SUSPENDED = KOISHI_SUSPENDED, + CO_STATUS_RUNNING = KOISHI_RUNNING, + CO_STATUS_DEAD = KOISHI_DEAD, } CoStatus; void coroutines_init(void); @@ -42,8 +44,9 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { #define TASK(name, argstruct) \ typedef struct argstruct COARGS_##name; \ static void COTASK_##name(COARGS_##name ARGS); \ - static void COTASKTHUNK_##name(void *arg) { \ + static void *COTASKTHUNK_##name(void *arg) { \ COTASK_##name(*(COARGS_##name*)arg); \ + return NULL; \ } \ static void COTASK_##name(COARGS_##name ARGS) diff --git a/subprojects/koishi b/subprojects/koishi new file mode 120000 index 0000000000..9245396dab --- /dev/null +++ b/subprojects/koishi @@ -0,0 +1 @@ +../external/koishi \ No newline at end of file diff --git a/subprojects/libco b/subprojects/libco deleted file mode 120000 index 23bf517f17..0000000000 --- a/subprojects/libco +++ /dev/null @@ -1 +0,0 @@ -../external/libco \ No newline at end of file From 951a1c8148c71eb89df27a2261d26c4f8826e634 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 13 Jul 2019 22:03:05 +0300 Subject: [PATCH 005/104] implement simple task pooling --- src/coroutine.c | 27 +++++++++++++++++++++++---- src/coroutine.h | 1 + src/main.c | 1 + 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index ae8f25804a..0e00b3736e 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -22,17 +22,29 @@ struct CoSched { LIST_ANCHOR(CoTask) tasks, pending_tasks; }; +static LIST_ANCHOR(CoTask) task_pool; +static size_t task_pool_size; + CoSched *_cosched_global; CoTask *cotask_new(CoTaskFunc func) { - CoTask *task = calloc(1, sizeof(*task)); - koishi_init(&task->ko, CO_STACK_SIZE, func); + CoTask *task; + + if((task = alist_pop(&task_pool))) { + koishi_recycle(&task->ko, func); + log_debug("Recycled task %p for proc %p", (void*)task, *(void**)&func); + } else { + task = calloc(1, sizeof(*task)); + koishi_init(&task->ko, CO_STACK_SIZE, func); + ++task_pool_size; + log_debug("Created new task %p for proc %p (%zu tasks in pool)", (void*)task, *(void**)&func, task_pool_size); + } + return task; } void cotask_free(CoTask *task) { - koishi_deinit(&task->ko); - free(task); + alist_push(&task_pool, task); } void *cotask_resume(CoTask *task, void *arg) { @@ -103,3 +115,10 @@ void cosched_free(CoSched *sched) { void coroutines_init(void) { } + +void coroutines_shutdown(void) { + for(CoTask *task; (task = alist_pop(&task_pool));) { + koishi_deinit(&task->ko); + free(task); + } +} diff --git a/src/coroutine.h b/src/coroutine.h index aeaf71865e..5d030e9c6f 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -27,6 +27,7 @@ typedef enum CoStatus { } CoStatus; void coroutines_init(void); +void coroutines_shutdown(void); CoTask *cotask_new(CoTaskFunc func); void cotask_free(CoTask *task); diff --git a/src/main.c b/src/main.c index 1a6a05bea7..526a93a574 100644 --- a/src/main.c +++ b/src/main.c @@ -50,6 +50,7 @@ static void taisei_shutdown(void) { vfs_shutdown(); events_shutdown(); time_shutdown(); + coroutines_shutdown(); log_info("Good bye"); SDL_Quit(); From 3d871cc2c26faccc15f9e2f26227b5ab47fd2149 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 14 Jul 2019 03:51:21 +0300 Subject: [PATCH 006/104] fix -Wassume --- src/coroutine.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coroutine.c b/src/coroutine.c index 0e00b3736e..152edb7d8e 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -71,7 +71,7 @@ void *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg) { if(cotask_status(task) == CO_STATUS_DEAD) { cotask_free(task); } else { - assume(cotask_status(task) == CO_STATUS_SUSPENDED); + assert(cotask_status(task) == CO_STATUS_SUSPENDED); alist_append(&sched->pending_tasks, task); } From 9bd83b0adb8ef08ef68457e22750e6224c9e433f Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 15 Jul 2019 03:34:38 +0300 Subject: [PATCH 007/104] make enemy logic rule optional --- src/enemy.c | 16 ++++++++++++---- src/stages/corotest.c | 4 +--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/enemy.c b/src/enemy.c index 508fdb9885..6355787e80 100644 --- a/src/enemy.c +++ b/src/enemy.c @@ -57,6 +57,14 @@ static void fix_pos0_visual(Enemy *e) { e->pos0_visual = x + y * I; } +static inline int enemy_call_logic_rule(Enemy *e, int t) { + if(e->logic_rule) { + return e->logic_rule(e, t); + } + + return ACTION_NONE; +} + Enemy *create_enemy_p(EnemyList *enemies, cmplx pos, float hp, EnemyVisualRule visual_rule, EnemyLogicRule logic_rule, cmplx a1, cmplx a2, cmplx a3, cmplx a4) { if(IN_DRAW_CODE) { @@ -93,7 +101,7 @@ Enemy *create_enemy_p(EnemyList *enemies, cmplx pos, float hp, EnemyVisualRule v fix_pos0_visual(e); ent_register(&e->ent, ENT_ENEMY); - e->logic_rule(e, EVENT_BIRTH); + enemy_call_logic_rule(e, EVENT_BIRTH); return e; } @@ -127,7 +135,7 @@ static void* _delete_enemy(ListAnchor *enemies, List* enemy, void *arg) { } } - e->logic_rule(e, EVENT_DEATH); + enemy_call_logic_rule(e, EVENT_DEATH); ent_unregister(&e->ent); objpool_release(stage_object_pools.enemies, alist_unlink(enemies, enemy)); @@ -349,12 +357,12 @@ void process_enemies(EnemyList *enemies) { next = enemy->next; if(enemy->hp == ENEMY_KILLED) { - enemy->logic_rule(enemy, EVENT_KILLED); + enemy_call_logic_rule(enemy, EVENT_KILLED); delete_enemy(enemies, enemy); continue; } - int action = enemy->logic_rule(enemy, global.frames - enemy->birthtime); + int action = enemy_call_logic_rule(enemy, global.frames - enemy->birthtime); if(enemy->hp > ENEMY_IMMUNE && enemy->alpha >= 1.0 && cabs(enemy->pos - global.plr.pos) < ENEMY_HURT_RADIUS) { ent_damage(&global.plr.ent, &(DamageInfo) { .type = DMG_ENEMY_COLLISION }); diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 3e8ee53f18..0627f47553 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -16,10 +16,8 @@ static CoSched *cotest_sched; static void cotest_stub_proc(void) { } -static int dummy_rule(Enemy *e, int t) { return t < 0 ? ACTION_ACK : ACTION_NONE; } - TASK(test_enemy, { double hp; complex pos; complex dir; }) { - Enemy *e = create_enemy1c(ARGS.pos, ARGS.hp, BigFairy, dummy_rule, 0); + Enemy *e = create_enemy1c(ARGS.pos, ARGS.hp, BigFairy, NULL, 0); int eref = add_ref(e); #define BREAK_CONDITION !UPDATE_REF(eref, e) From 8e5467ddddfc6c4ae55616a78243d1958b455ff9 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Tue, 16 Jul 2019 08:07:30 +0300 Subject: [PATCH 008/104] "Boxed" entities; facility to bind tasks to entity lifetime --- src/coroutine.c | 16 ++++++++++++++++ src/coroutine.h | 5 +++++ src/entity.c | 20 +++++++++++++++++++- src/entity.h | 20 ++++++++++++++++++++ src/stages/corotest.c | 18 ++++++------------ 5 files changed, 66 insertions(+), 13 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index 152edb7d8e..49dada2b6c 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -16,6 +16,7 @@ struct CoTask { LIST_INTERFACE(CoTask); koishi_coroutine_t ko; + BoxedEntity bound_ent; }; struct CoSched { @@ -44,10 +45,20 @@ CoTask *cotask_new(CoTaskFunc func) { } void cotask_free(CoTask *task) { + memset(&task->bound_ent, 0, sizeof(task->bound_ent)); alist_push(&task_pool, task); } +CoTask *cotask_active(void) { + return CASTPTR_ASSUME_ALIGNED((char*)koishi_active() - offsetof(CoTask, ko), CoTask); +} + void *cotask_resume(CoTask *task, void *arg) { + if(task->bound_ent.ent && !ent_unbox(task->bound_ent)) { + koishi_kill(&task->ko); + return NULL; + } + return koishi_resume(&task->ko, arg); } @@ -59,6 +70,11 @@ CoStatus cotask_status(CoTask *task) { return koishi_state(&task->ko); } +void cotask_bind_to_entity(CoTask *task, EntityInterface *ent) { + assert(task->bound_ent.ent == 0); + task->bound_ent = ent_box(ent); +} + CoSched *cosched_new(void) { CoSched *sched = calloc(1, sizeof(*sched)); return sched; diff --git a/src/coroutine.h b/src/coroutine.h index 5d030e9c6f..ddfd276824 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -11,6 +11,7 @@ #include "taisei.h" +#include "entity.h" #include typedef struct CoTask CoTask; @@ -34,6 +35,8 @@ void cotask_free(CoTask *task); void *cotask_resume(CoTask *task, void *arg); void *cotask_yield(void *arg); CoStatus cotask_status(CoTask *task); +CoTask *cotask_active(void); +void cotask_bind_to_entity(CoTask *task, EntityInterface *ent); CoSched *cosched_new(void); void *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg); // creates and runs the task, returns whatever it yields, schedules it for resume on cosched_run_tasks if it's still alive @@ -64,4 +67,6 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { #define BYIELD do { YIELD; CHECK_BREAK; } while(0) #define BWAIT(frames) do { WAIT(frames); CHECK_BREAK; } while(0) +#define TASK_BIND(ent) cotask_bind_to_entity(cotask_active(), &ent->entity_interface) + #endif // IGUARD_coroutine_h diff --git a/src/entity.c b/src/entity.c index e1083a780e..9d44d4a438 100644 --- a/src/entity.c +++ b/src/entity.c @@ -92,7 +92,7 @@ void ent_register(EntityInterface *ent, EntityType type) { // This is not really an error, but it may result in weird draw order // in some corner cases. If this overflow ever actually occurs, though, // then you've probably got much bigger problems. - log_debug("spawn_id just overflowed. You might be spawning stuff waaaay too often"); + log_warn("spawn_id just overflowed. You might be spawning stuff waaaay too often"); } if(entities.capacity < entities.num) { @@ -107,6 +107,7 @@ void ent_register(EntityInterface *ent, EntityType type) { } void ent_unregister(EntityInterface *ent) { + ent->spawn_id = 0; EntityInterface *sub = entities.array[--entities.num]; assert(ent->index <= entities.num); assert(entities.array[ent->index] == ent); @@ -242,3 +243,20 @@ void ent_hook_post_draw(EntityDrawHookCallback callback, void *arg) { void ent_unhook_post_draw(EntityDrawHookCallback callback) { remove_hook(&entities.hooks.post_draw, callback); } + +BoxedEntity ent_box(EntityInterface *ent) { + BoxedEntity h; + h.ent = (uintptr_t)ent; + h.spawn_id = ent->spawn_id; + return h; +} + +EntityInterface *ent_unbox(BoxedEntity box) { + EntityInterface *e = (EntityInterface*)box.ent; + + if(e->spawn_id == box.spawn_id) { + return e; + } + + return NULL; +} diff --git a/src/entity.h b/src/entity.h index 2f2853118d..b2f30827d6 100644 --- a/src/entity.h +++ b/src/entity.h @@ -51,6 +51,7 @@ typedef enum EntityType { typedef struct EntityInterface EntityInterface; typedef struct EntityListNode EntityListNode; +typedef struct BoxedEntity BoxedEntity; typedef enum DamageType { DMG_UNDEFINED, @@ -109,6 +110,11 @@ struct EntityInterface { ENTITY_INTERFACE_BASE(EntityInterface); }; +struct BoxedEntity { + uintptr_t ent; // not an actual pointer to avert the temptation to use it directly. + uint_fast32_t spawn_id; +}; + INLINE const char* ent_type_name(EntityType type) { switch(type) { #define ENT_TYPE(typename, id) case id: return #id; @@ -152,4 +158,18 @@ void ent_unhook_pre_draw(EntityDrawHookCallback callback); void ent_hook_post_draw(EntityDrawHookCallback callback, void *arg); void ent_unhook_post_draw(EntityDrawHookCallback callback); +BoxedEntity ent_box(EntityInterface *ent); +EntityInterface *ent_unbox(BoxedEntity box); + +#define ENT_BOX(ent) ent_box(&(ent)->entity_interface) + +#if defined(USE_GNU_EXTENSIONS) && defined(DEBUG) + #define ENT_UNBOX(h, typename) (__extension__ ({ \ + EntityInterface *_unboxed_ent = ent_unbox(h); \ + _unboxed_ent ? ENT_CAST(_unboxed_ent, typename) : NULL; \ + })) +#else + #define ENT_UNBOX(h, typename) CASTPTR_ASSUME_ALIGNED(ent_unbox(h), typename) +#endif + #endif // IGUARD_entity_h diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 0627f47553..59e984542c 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -18,21 +18,19 @@ static void cotest_stub_proc(void) { } TASK(test_enemy, { double hp; complex pos; complex dir; }) { Enemy *e = create_enemy1c(ARGS.pos, ARGS.hp, BigFairy, NULL, 0); - int eref = add_ref(e); + TASK_BIND(e); - #define BREAK_CONDITION !UPDATE_REF(eref, e) - - BYIELD; + YIELD; while(true) { // wander around for a bit... for(int i = 0; i < 20; ++i) { e->pos += ARGS.dir; - BYIELD; + YIELD; } // stop and... - BWAIT(10); + WAIT(10); // pew pew!!! int pcount = 10 + 10 * frand(); @@ -48,17 +46,13 @@ TASK(test_enemy, { double hp; complex pos; complex dir; }) { .args = { aim }, ); - BWAIT(3); + WAIT(3); } // keep wandering, randomly ARGS.dir *= cexp(I*M_PI*nfrand()); - BYIELD; + YIELD; } - -BREAK: - log_debug("enemy died!"); - free_ref(eref); } TASK(stage_main, { int ignored; }) { From 29a92121738e14849665e4dd1827fa0b62e37959 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Wed, 17 Jul 2019 05:04:49 +0300 Subject: [PATCH 009/104] experimental event system for coroutine-based stages --- external/koishi | 2 +- src/coroutine.c | 59 ++++++++++++++++++++++++++++++++++++++++--- src/coroutine.h | 30 +++++++++++++++++++++- src/enemy.c | 5 ++++ src/enemy.h | 17 ++++++++----- src/item.h | 17 +++++++++++++ src/stages/corotest.c | 57 +++++++++++++++++++++++++++++++++++++++++ 7 files changed, 176 insertions(+), 11 deletions(-) diff --git a/external/koishi b/external/koishi index cc6641ee7a..47e63b5701 160000 --- a/external/koishi +++ b/external/koishi @@ -1 +1 @@ -Subproject commit cc6641ee7a3b0c17df4bfa56e6367bdb2e3ffc94 +Subproject commit 47e63b57018a62a300d797ea518578850c60730b diff --git a/src/coroutine.c b/src/coroutine.c index 49dada2b6c..6d7b1f9203 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -15,6 +15,7 @@ struct CoTask { LIST_INTERFACE(CoTask); + List event_subscriber_chain; koishi_coroutine_t ko; BoxedEntity bound_ent; }; @@ -66,6 +67,30 @@ void *cotask_yield(void *arg) { return koishi_yield(arg); } +bool cotask_wait_event(CoEvent *evt, void *arg) { + struct { + uint32_t unique_id; + uint32_t num_signaled; + } snapshot = { evt->unique_id, evt->num_signaled }; + + alist_append(&evt->subscribers, &cotask_active()->event_subscriber_chain); + + while(true) { + if( + evt->unique_id != snapshot.unique_id || + evt->num_signaled < snapshot.num_signaled + ) { + return false; + } + + if(evt->num_signaled > snapshot.num_signaled) { + return true; + } + + cotask_yield(arg); + } +} + CoStatus cotask_status(CoTask *task) { return koishi_state(&task->ko); } @@ -75,6 +100,33 @@ void cotask_bind_to_entity(CoTask *task, EntityInterface *ent) { task->bound_ent = ent_box(ent); } +void coevent_init(CoEvent *evt) { + static uint32_t g_uid; + evt->unique_id = ++g_uid; + evt->num_signaled = 0; + assert(g_uid != 0); +} + +static void coevent_wake_subscribers(CoEvent *evt) { + for(List *node = evt->subscribers.first; node; node = node->next) { + CoTask *task = CASTPTR_ASSUME_ALIGNED((char*)node - offsetof(CoTask, event_subscriber_chain), CoTask); + cotask_resume(task, NULL); + } + + evt->subscribers.first = evt->subscribers.last = NULL; +} + +void coevent_signal(CoEvent *evt) { + ++evt->num_signaled; + assert(evt->num_signaled != 0); + coevent_wake_subscribers(evt); +} + +void coevent_cancel(CoEvent* evt) { + evt->num_signaled = evt->unique_id = 0; + coevent_wake_subscribers(evt); +} + CoSched *cosched_new(void) { CoSched *sched = calloc(1, sizeof(*sched)); return sched; @@ -103,13 +155,14 @@ uint cosched_run_tasks(CoSched *sched) { for(CoTask *t = sched->tasks.first, *next; t; t = next) { next = t->next; - assert(cotask_status(t) == CO_STATUS_SUSPENDED); - cotask_resume(t, NULL); - ++ran; if(cotask_status(t) == CO_STATUS_DEAD) { alist_unlink(&sched->tasks, t); cotask_free(t); + } else { + assert(cotask_status(t) == CO_STATUS_SUSPENDED); + cotask_resume(t, NULL); + ++ran; } } diff --git a/src/coroutine.h b/src/coroutine.h index ddfd276824..a0387a9ba6 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -27,6 +27,12 @@ typedef enum CoStatus { CO_STATUS_DEAD = KOISHI_DEAD, } CoStatus; +typedef struct CoEvent { + ListAnchor subscribers; + uint32_t unique_id; + uint32_t num_signaled; +} CoEvent; + void coroutines_init(void); void coroutines_shutdown(void); @@ -34,10 +40,15 @@ CoTask *cotask_new(CoTaskFunc func); void cotask_free(CoTask *task); void *cotask_resume(CoTask *task, void *arg); void *cotask_yield(void *arg); +bool cotask_wait_event(CoEvent *evt, void *arg); CoStatus cotask_status(CoTask *task); CoTask *cotask_active(void); void cotask_bind_to_entity(CoTask *task, EntityInterface *ent); +void coevent_init(CoEvent *evt); +void coevent_signal(CoEvent *evt); +void coevent_cancel(CoEvent *evt); + CoSched *cosched_new(void); void *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg); // creates and runs the task, returns whatever it yields, schedules it for resume on cosched_run_tasks if it's still alive uint cosched_run_tasks(CoSched *sched); // returns number of tasks ran @@ -46,21 +57,38 @@ void cosched_free(CoSched *sched); static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; } #define TASK(name, argstruct) \ + static char COTASK_UNUSED_CHECK_##name; \ typedef struct argstruct COARGS_##name; \ static void COTASK_##name(COARGS_##name ARGS); \ - static void *COTASKTHUNK_##name(void *arg) { \ + attr_unused static void *COTASKTHUNK_##name(void *arg) { \ COTASK_##name(*(COARGS_##name*)arg); \ return NULL; \ } \ + typedef struct { CoEvent *event; COARGS_##name args; } COARGSCOND_##name; \ + attr_unused static void *COTASKTHUNKCOND_##name(void *arg) { \ + COARGSCOND_##name args = *(COARGSCOND_##name*)arg; \ + if(WAIT_EVENT(args.event)) { \ + COTASK_##name(args.args); \ + } \ + return NULL; \ + } \ static void COTASK_##name(COARGS_##name ARGS) #define INVOKE_TASK(name, ...) do { \ + (void)COTASK_UNUSED_CHECK_##name; \ COARGS_##name _coargs = { __VA_ARGS__ }; \ cosched_new_task(_cosched_global, COTASKTHUNK_##name, &_coargs); \ } while(0) +#define INVOKE_TASK_WHEN(event, name, ...) do { \ + (void)COTASK_UNUSED_CHECK_##name; \ + COARGSCOND_##name _coargs = { event, { __VA_ARGS__ } }; \ + cosched_new_task(_cosched_global, COTASKTHUNKCOND_##name, &_coargs); \ +} while(0) + #define YIELD cotask_yield(NULL) #define WAIT(delay) do { int _delay = (delay); while(_delay-- > 0) YIELD; } while(0) +#define WAIT_EVENT(e) cotask_wait_event((e), NULL) // to use these inside a coroutine, define a BREAK_CONDITION macro and a BREAK label. #define CHECK_BREAK do { if(BREAK_CONDITION) goto BREAK; } while(0) diff --git a/src/enemy.c b/src/enemy.c index 6355787e80..d95a527969 100644 --- a/src/enemy.c +++ b/src/enemy.c @@ -58,6 +58,10 @@ static void fix_pos0_visual(Enemy *e) { } static inline int enemy_call_logic_rule(Enemy *e, int t) { + if(t == EVENT_KILLED) { + coevent_signal(&e->events.killed); + } + if(e->logic_rule) { return e->logic_rule(e, t); } @@ -136,6 +140,7 @@ static void* _delete_enemy(ListAnchor *enemies, List* enemy, void *arg) { } enemy_call_logic_rule(e, EVENT_DEATH); + coevent_cancel(&e->events.killed); ent_unregister(&e->ent); objpool_release(stage_object_pools.enemies, alist_unlink(enemies, enemy)); diff --git a/src/enemy.h b/src/enemy.h index 3b65294bb9..8375561d2c 100644 --- a/src/enemy.h +++ b/src/enemy.h @@ -15,6 +15,7 @@ #include "projectile.h" #include "objectpool.h" #include "entity.h" +#include "coroutine.h" #ifdef DEBUG #define ENEMY_DEBUG @@ -39,21 +40,25 @@ struct Enemy { cmplx pos; cmplx pos0; cmplx pos0_visual; - - long birthtime; - - int dir; - bool moving; + cmplx args[RULE_ARGC]; EnemyLogicRule logic_rule; EnemyVisualRule visual_rule; + struct { + CoEvent killed; + } events; + + int birthtime; + int dir; + float spawn_hp; float hp; - cmplx args[RULE_ARGC]; float alpha; + bool moving; + #ifdef ENEMY_DEBUG DebugInfo debug; #endif diff --git a/src/item.h b/src/item.h index 721d4a1272..d6d774c6b1 100644 --- a/src/item.h +++ b/src/item.h @@ -37,6 +37,23 @@ typedef enum { ITEM_LAST = ITEM_LIFE, } ItemType; +typedef union ItemCounts { + struct { + // CAUTION: must match enum order! + int piv; + int points; + int power_mini; + int power; + int surge; + int voltage; + int bomb_fragment; + int life_fragment; + int bomb; + int life; + }; + int as_array[ITEM_LAST - ITEM_FIRST]; +} ItemCounts; + struct Item { ENTITY_INTERFACE_NAMED(Item, ent); diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 59e984542c..e213c2a051 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -16,10 +16,67 @@ static CoSched *cotest_sched; static void cotest_stub_proc(void) { } +TASK(drop_items, { complex *pos; ItemCounts items; }) { + complex p = *ARGS.pos; + + for(int i = 0; i < ITEM_LAST - ITEM_FIRST; ++i) { + for(int j = ARGS.items.as_array[i]; j; --j) { + spawn_item(p, i + ITEM_FIRST); + } + } +} + +TASK(wait_event_test, { Enemy *e; int rounds; int delay; int cnt; int cnt_inc; }) { + // WAIT_EVENT yields until the event fires. + // Returns true if the event was signaled, false if it was canceled. + // All waiting tasks will resume right after either of those occur, in the + // order they started waiting. + + if(!WAIT_EVENT(&ARGS.e->events.killed)) { + // Event canceled? Nothing to do here. + return; + } + + // Event signaled. Since this is an enemy death event, e will be invalid + // in the next frame. Let's save its position while we can. + complex pos = ARGS.e->pos; + + while(ARGS.rounds--) { + WAIT(ARGS.delay); + + double angle_ofs = frand() * M_PI * 2; + + for(int i = 0; i < ARGS.cnt; ++i) { + complex aim = cexp(I * (angle_ofs + M_PI * 2.0 * i / (double)ARGS.cnt)); + + PROJECTILE( + .pos = pos, + .proto = pp_crystal, + .color = RGBA(i / (double)ARGS.cnt, 0.0, 1.0 - i / (double)ARGS.cnt, 0.0), + .rule = asymptotic, + .args = { 2 * aim, 5 }, + ); + + WAIT(1); + } + + ARGS.cnt += ARGS.cnt_inc; + } +} + TASK(test_enemy, { double hp; complex pos; complex dir; }) { Enemy *e = create_enemy1c(ARGS.pos, ARGS.hp, BigFairy, NULL, 0); TASK_BIND(e); + INVOKE_TASK_WHEN(&e->events.killed, drop_items, &e->pos, { + .life_fragment = 1, + .bomb_fragment = 1, + .power = 3, + .points = 5, + }); + + INVOKE_TASK(wait_event_test, e, 3, 10, 15, 3); + YIELD; while(true) { From f6049b01acc418deb52436309c84a8f316648e6e Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Wed, 17 Jul 2019 11:43:49 +0300 Subject: [PATCH 010/104] coroutines: task finalizers; fix enemy death event --- src/coroutine.c | 80 +++++++++++++++++++++++++++++++++++++--- src/coroutine.h | 86 +++++++++++++++++++++++++++++++++++++------ src/enemy.c | 1 + src/stage.c | 1 + src/stages/corotest.c | 17 +++++++-- 5 files changed, 164 insertions(+), 21 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index 6d7b1f9203..d209662512 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -13,11 +13,33 @@ #define CO_STACK_SIZE (64 * 1024) +#define TASK_DEBUG +// #define EVT_DEBUG + +#ifdef TASK_DEBUG + #undef TASK_DEBUG + #define TASK_DEBUG(...) log_debug(__VA_ARGS__) +#else + #define TASK_DEBUG(...) ((void)0) +#endif + +#ifdef EVT_DEBUG + #undef EVT_DEBUG + #define EVT_DEBUG(...) log_debug(__VA_ARGS__) +#else + #define EVT_DEBUG(...) ((void)0) +#endif + struct CoTask { LIST_INTERFACE(CoTask); List event_subscriber_chain; koishi_coroutine_t ko; BoxedEntity bound_ent; + + struct { + CoTaskFunc func; + void *arg; + } finalizer; }; struct CoSched { @@ -25,21 +47,31 @@ struct CoSched { }; static LIST_ANCHOR(CoTask) task_pool; -static size_t task_pool_size; +static size_t num_tasks_allocated; +static size_t num_tasks_in_use; CoSched *_cosched_global; CoTask *cotask_new(CoTaskFunc func) { CoTask *task; + ++num_tasks_in_use; if((task = alist_pop(&task_pool))) { koishi_recycle(&task->ko, func); - log_debug("Recycled task %p for proc %p", (void*)task, *(void**)&func); + TASK_DEBUG( + "Recycled task %p for proc %p (%zu tasks allocated / %zu in use)", + (void*)task, *(void**)&func, + num_tasks_allocated, num_tasks_in_use + ); } else { task = calloc(1, sizeof(*task)); koishi_init(&task->ko, CO_STACK_SIZE, func); - ++task_pool_size; - log_debug("Created new task %p for proc %p (%zu tasks in pool)", (void*)task, *(void**)&func, task_pool_size); + ++num_tasks_allocated; + TASK_DEBUG( + "Created new task %p for proc %p (%zu tasks allocated / %zu in use)", + (void*)task, *(void**)&func, + num_tasks_allocated, num_tasks_in_use + ); } return task; @@ -47,7 +79,16 @@ CoTask *cotask_new(CoTaskFunc func) { void cotask_free(CoTask *task) { memset(&task->bound_ent, 0, sizeof(task->bound_ent)); + memset(&task->finalizer, 0, sizeof(task->finalizer)); alist_push(&task_pool, task); + + --num_tasks_in_use; + + TASK_DEBUG( + "Released task %p (%zu tasks allocated / %zu in use)", + (void*)task, + num_tasks_allocated, num_tasks_in_use + ); } CoTask *cotask_active(void) { @@ -57,10 +98,21 @@ CoTask *cotask_active(void) { void *cotask_resume(CoTask *task, void *arg) { if(task->bound_ent.ent && !ent_unbox(task->bound_ent)) { koishi_kill(&task->ko); + + if(task->finalizer.func) { + task->finalizer.func(task->finalizer.arg); + } + return NULL; } - return koishi_resume(&task->ko, arg); + arg = koishi_resume(&task->ko, arg); + + if(task->finalizer.func && cotask_status(task) == CO_STATUS_DEAD) { + task->finalizer.func(task->finalizer.arg); + } + + return arg; } void *cotask_yield(void *arg) { @@ -68,6 +120,8 @@ void *cotask_yield(void *arg) { } bool cotask_wait_event(CoEvent *evt, void *arg) { + assert(evt->unique_id > 0); + struct { uint32_t unique_id; uint32_t num_signaled; @@ -76,17 +130,26 @@ bool cotask_wait_event(CoEvent *evt, void *arg) { alist_append(&evt->subscribers, &cotask_active()->event_subscriber_chain); while(true) { + EVT_DEBUG("[%p]", (void*)evt); + EVT_DEBUG("evt->unique_id == %u", evt->unique_id); + EVT_DEBUG("snapshot.unique_id == %u", snapshot.unique_id); + EVT_DEBUG("evt->num_signaled == %u", evt->num_signaled); + EVT_DEBUG("snapshot.num_signaled == %u", snapshot.num_signaled); + if( evt->unique_id != snapshot.unique_id || evt->num_signaled < snapshot.num_signaled ) { + EVT_DEBUG("Event was canceled"); return false; } if(evt->num_signaled > snapshot.num_signaled) { + EVT_DEBUG("Event was signaled"); return true; } + EVT_DEBUG("Event hasn't changed; waiting..."); cotask_yield(arg); } } @@ -100,6 +163,12 @@ void cotask_bind_to_entity(CoTask *task, EntityInterface *ent) { task->bound_ent = ent_box(ent); } +void cotask_set_finalizer(CoTask *task, CoTaskFunc finalizer, void *arg) { + assert(task->finalizer.func == NULL); + task->finalizer.func = finalizer; + task->finalizer.arg = arg; +} + void coevent_init(CoEvent *evt) { static uint32_t g_uid; evt->unique_id = ++g_uid; @@ -110,6 +179,7 @@ void coevent_init(CoEvent *evt) { static void coevent_wake_subscribers(CoEvent *evt) { for(List *node = evt->subscribers.first; node; node = node->next) { CoTask *task = CASTPTR_ASSUME_ALIGNED((char*)node - offsetof(CoTask, event_subscriber_chain), CoTask); + TASK_DEBUG("Resume CoEvent{%p} subscriber %p", (void*)evt, (void*)task); cotask_resume(task, NULL); } diff --git a/src/coroutine.h b/src/coroutine.h index a0387a9ba6..549b5e6f86 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -44,6 +44,7 @@ bool cotask_wait_event(CoEvent *evt, void *arg); CoStatus cotask_status(CoTask *task); CoTask *cotask_active(void); void cotask_bind_to_entity(CoTask *task, EntityInterface *ent); +void cotask_set_finalizer(CoTask *task, CoTaskFunc finalizer, void *arg); void coevent_init(CoEvent *evt); void coevent_signal(CoEvent *evt); @@ -56,33 +57,94 @@ void cosched_free(CoSched *sched); static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; } -#define TASK(name, argstruct) \ +#define TASK_ARGS_NAME(name) COARGS_##name +#define TASK_ARGS(name) struct TASK_ARGS_NAME(name) + +#define TASK_ARGSCOND_NAME(name) COARGSCOND_##name +#define TASK_ARGSCOND(name) struct TASK_ARGSCOND_NAME(name) + +#define ARGS (*_cotask_args) + +#define TASK_COMMON_DECLARATIONS(name, argstruct) \ + /* produce warning if the task is never used */ \ static char COTASK_UNUSED_CHECK_##name; \ - typedef struct argstruct COARGS_##name; \ - static void COTASK_##name(COARGS_##name ARGS); \ + /* user-defined type of args struct */ \ + struct TASK_ARGS_NAME(name) argstruct; \ + /* type of internal args struct for INVOKE_TASK_WHEN */ \ + struct TASK_ARGSCOND_NAME(name) { TASK_ARGS(name) real_args; CoEvent *event; }; \ + /* user-defined task body */ \ + static void COTASK_##name(TASK_ARGS(name) *_cotask_args); \ + /* called from the entry points before task body (inlined, hopefully) */ \ + static inline attr_must_inline void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args); \ + /* task entry point for INVOKE_TASK */ \ attr_unused static void *COTASKTHUNK_##name(void *arg) { \ - COTASK_##name(*(COARGS_##name*)arg); \ + /* copy args to our coroutine stack so that they're valid after caller returns */ \ + TASK_ARGS(name) args_copy = *(TASK_ARGS(name)*)arg; \ + /* call prologue */ \ + COTASKPROLOGUE_##name(&args_copy); \ + /* call body */ \ + COTASK_##name(&args_copy); \ + /* exit coroutine */ \ return NULL; \ } \ - typedef struct { CoEvent *event; COARGS_##name args; } COARGSCOND_##name; \ + /* task entry point for INVOKE_TASK_WHEN */ \ attr_unused static void *COTASKTHUNKCOND_##name(void *arg) { \ - COARGSCOND_##name args = *(COARGSCOND_##name*)arg; \ - if(WAIT_EVENT(args.event)) { \ - COTASK_##name(args.args); \ + /* copy args to our coroutine stack so that they're valid after caller returns */ \ + TASK_ARGSCOND(name) args_copy = *(TASK_ARGSCOND(name)*)arg; \ + /* wait for event, and if it wasn't canceled... */ \ + if(WAIT_EVENT(args_copy.event)) { \ + /* call prologue */ \ + COTASKPROLOGUE_##name(&args_copy.real_args); \ + /* call body */ \ + COTASK_##name(&args_copy.real_args); \ } \ + /* exit coroutine */ \ + return NULL; \ + } + +/* define a normal task */ +#define TASK(name, argstruct) \ + TASK_COMMON_DECLARATIONS(name, argstruct) \ + /* empty prologue */ \ + static inline attr_must_inline void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args) { } \ + /* begin task body definition */ \ + static void COTASK_##name(TASK_ARGS(name) *_cotask_args) + +/* define a task that needs a finalizer */ +#define TASK_WITH_FINALIZER(name, argstruct) \ + TASK_COMMON_DECLARATIONS(name, argstruct) \ + /* error out if using TASK_FINALIZER without TASK_WITH_FINALIZER */ \ + struct COTASK__##name##__not_declared_using_TASK_WITH_FINALIZER { char dummy; }; \ + /* user-defined finalizer function */ \ + static inline attr_must_inline void COTASKFINALIZER_##name(TASK_ARGS(name) *_cotask_args); \ + /* real finalizer entry point */ \ + static void *COTASKFINALIZERTHUNK_##name(void *arg) { \ + COTASKFINALIZER_##name((TASK_ARGS(name)*)arg); \ return NULL; \ } \ - static void COTASK_##name(COARGS_##name ARGS) + /* prologue; sets up finalizer before executing task body */ \ + static inline attr_must_inline void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args) { \ + cotask_set_finalizer(cotask_active(), COTASKFINALIZERTHUNK_##name, _cotask_args); \ + } \ + /* begin task body definition */ \ + static void COTASK_##name(TASK_ARGS(name) *_cotask_args) + +/* define the finalizer for a TASK_WITH_FINALIZER */ +#define TASK_FINALIZER(name) \ + /* error out if using TASK_FINALIZER without TASK_WITH_FINALIZER */ \ + attr_unused struct COTASK__##name##__not_declared_using_TASK_WITH_FINALIZER COTASK__##name##__not_declared_using_TASK_WITH_FINALIZER; \ + /* begin finalizer body definition */ \ + static void COTASKFINALIZER_##name(TASK_ARGS(name) *_cotask_args) #define INVOKE_TASK(name, ...) do { \ (void)COTASK_UNUSED_CHECK_##name; \ - COARGS_##name _coargs = { __VA_ARGS__ }; \ + TASK_ARGS(name) _coargs = { __VA_ARGS__ }; \ cosched_new_task(_cosched_global, COTASKTHUNK_##name, &_coargs); \ } while(0) -#define INVOKE_TASK_WHEN(event, name, ...) do { \ +#define INVOKE_TASK_WHEN(_event, name, ...) do { \ (void)COTASK_UNUSED_CHECK_##name; \ - COARGSCOND_##name _coargs = { event, { __VA_ARGS__ } }; \ + TASK_ARGSCOND(name) _coargs = { .real_args = { __VA_ARGS__ }, .event = (_event) }; \ cosched_new_task(_cosched_global, COTASKTHUNKCOND_##name, &_coargs); \ } while(0) diff --git a/src/enemy.c b/src/enemy.c index d95a527969..32c18fec58 100644 --- a/src/enemy.c +++ b/src/enemy.c @@ -102,6 +102,7 @@ Enemy *create_enemy_p(EnemyList *enemies, cmplx pos, float hp, EnemyVisualRule v e->ent.draw_func = ent_draw_enemy; e->ent.damage_func = ent_damage_enemy; + coevent_init(&e->events.killed); fix_pos0_visual(e); ent_register(&e->ent, ENT_ENEMY); diff --git a/src/stage.c b/src/stage.c index d0c6b5dc60..e9c03fd464 100644 --- a/src/stage.c +++ b/src/stage.c @@ -554,6 +554,7 @@ static bool ellipse_predicate(EntityInterface *ent, void *varg) { default: UNREACHABLE; } } + void stage_clear_hazards_at(cmplx origin, double radius, ClearHazardsFlags flags) { Circle area = { origin, radius }; stage_clear_hazards_predicate(proximity_predicate, &area, flags); diff --git a/src/stages/corotest.c b/src/stages/corotest.c index e213c2a051..291b4b1e74 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -22,6 +22,7 @@ TASK(drop_items, { complex *pos; ItemCounts items; }) { for(int i = 0; i < ITEM_LAST - ITEM_FIRST; ++i) { for(int j = ARGS.items.as_array[i]; j; --j) { spawn_item(p, i + ITEM_FIRST); + WAIT(2); } } } @@ -34,6 +35,7 @@ TASK(wait_event_test, { Enemy *e; int rounds; int delay; int cnt; int cnt_inc; } if(!WAIT_EVENT(&ARGS.e->events.killed)) { // Event canceled? Nothing to do here. + log_debug("[%p] leave (canceled)", (void*)cotask_active()); return; } @@ -64,7 +66,10 @@ TASK(wait_event_test, { Enemy *e; int rounds; int delay; int cnt; int cnt_inc; } } } -TASK(test_enemy, { double hp; complex pos; complex dir; }) { +TASK_WITH_FINALIZER(test_enemy, { + double hp; complex pos; complex dir; + struct { int x; } for_finalizer; +}) { Enemy *e = create_enemy1c(ARGS.pos, ARGS.hp, BigFairy, NULL, 0); TASK_BIND(e); @@ -77,9 +82,10 @@ TASK(test_enemy, { double hp; complex pos; complex dir; }) { INVOKE_TASK(wait_event_test, e, 3, 10, 15, 3); - YIELD; + for(;;) { + YIELD; + ARGS.for_finalizer.x++; - while(true) { // wander around for a bit... for(int i = 0; i < 20; ++i) { e->pos += ARGS.dir; @@ -108,10 +114,13 @@ TASK(test_enemy, { double hp; complex pos; complex dir; }) { // keep wandering, randomly ARGS.dir *= cexp(I*M_PI*nfrand()); - YIELD; } } +TASK_FINALIZER(test_enemy) { + log_debug("finalizer called (x = %i)", ARGS.for_finalizer.x); +} + TASK(stage_main, { int ignored; }) { YIELD; From c2ac8b9c9a36e809748d6c7a69dfd2b055dcbad9 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 19 Jul 2019 12:48:22 +0300 Subject: [PATCH 011/104] add kill_projectile() as a kind-of ACTION_DESTROY substitute --- src/projectile.c | 14 ++++++++++++-- src/projectile.h | 3 ++- src/stages/corotest.c | 26 ++++++++++++++++++++++++-- 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/projectile.c b/src/projectile.c index 0b3875dcb0..81fc0ed72f 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -291,7 +291,7 @@ Projectile* _proj_attach_dbginfo(Projectile *p, DebugInfo *dbg, const char *call } #endif -static void* _delete_projectile(ListAnchor *projlist, List *proj, void *arg) { +static void *_delete_projectile(ListAnchor *projlist, List *proj, void *arg) { Projectile *p = (Projectile*)proj; proj_call_rule(p, EVENT_DEATH); ent_unregister(&p->ent); @@ -299,7 +299,7 @@ static void* _delete_projectile(ListAnchor *projlist, List *proj, void *arg) { return NULL; } -void delete_projectile(ProjectileList *projlist, Projectile *proj) { +static void delete_projectile(ProjectileList *projlist, Projectile *proj) { _delete_projectile((ListAnchor*)projlist, (List*)proj, NULL); } @@ -508,6 +508,11 @@ bool clear_projectile(Projectile *proj, uint flags) { return true; } +void kill_projectile(Projectile* proj) { + proj->flags |= PFLAG_INTERNAL_DEAD | PFLAG_NOCOLLISION | PFLAG_NOCLEAR; + proj->draw_rule = ProjNoDraw; +} + void process_projectiles(ProjectileList *projlist, bool collision) { ProjCollisionResult col = { 0 }; @@ -519,6 +524,11 @@ void process_projectiles(ProjectileList *projlist, bool collision) { next = proj->next; proj->prevpos = proj->pos; + if(proj->flags & PFLAG_INTERNAL_DEAD) { + delete_projectile(projlist, proj); + continue; + } + if(stage_cleared) { clear_projectile(proj, CLEAR_HAZARDS_BULLETS | CLEAR_HAZARDS_FORCE); } diff --git a/src/projectile.h b/src/projectile.h index 349ef58fe9..5b2ed9ae00 100644 --- a/src/projectile.h +++ b/src/projectile.h @@ -60,6 +60,7 @@ typedef enum ProjFlags { PFLAG_REQUIREDPARTICLE = (1 << 10), // [PROJ_PARTICLE] Visible at "minimal" particles setting. PFLAG_PLRSPECIALPARTICLE = (1 << 11), // [PROJ_PARTICLE] Apply Power Surge effect to this particle, as if it was a PROJ_PLAYER. PFLAG_NOCOLLISION = (1 << 12), // [PROJ_ENEMY, PROJ_PLAYER] Disable collision detection. + PFLAG_INTERNAL_DEAD = (1 << 13), // [ALL] Delete as soon as processed. (internal flag, do not use) PFLAG_NOSPAWNEFFECTS = PFLAG_NOSPAWNFADE | PFLAG_NOSPAWNFLARE, } ProjFlags; @@ -181,7 +182,6 @@ Projectile* create_particle(ProjArgs *args); #define PROJECTILE(...) _PROJ_GENERIC_SPAWN(create_projectile, __VA_ARGS__) #define PARTICLE(...) _PROJ_GENERIC_SPAWN(create_particle, __VA_ARGS__) -void delete_projectile(ProjectileList *projlist, Projectile *proj); void delete_projectiles(ProjectileList *projlist); void calc_projectile_collision(Projectile *p, ProjCollisionResult *out_col); @@ -198,6 +198,7 @@ Projectile* spawn_projectile_highlight_effect(Projectile *proj); void projectile_set_prototype(Projectile *p, ProjPrototype *proto); bool clear_projectile(Projectile *proj, uint flags); +void kill_projectile(Projectile *proj); int linear(Projectile *p, int t); int accelerated(Projectile *p, int t); diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 291b4b1e74..b71ca4eaa1 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -27,6 +27,26 @@ TASK(drop_items, { complex *pos; ItemCounts items; }) { } } +TASK(laserize_proj, { Projectile *p; int t; }) { + TASK_BIND(ARGS.p); + WAIT(ARGS.t); + + complex pos = ARGS.p->pos; + double a = ARGS.p->angle; + Color clr = ARGS.p->color; + kill_projectile(ARGS.p); + + complex aim = 12 * cexp(I * a); + create_laserline(pos, aim, 20, 40, &clr); + + PROJECTILE( + .pos = pos, + .proto = pp_ball, + .color = &clr, + .timeout = 20, + ); +} + TASK(wait_event_test, { Enemy *e; int rounds; int delay; int cnt; int cnt_inc; }) { // WAIT_EVENT yields until the event fires. // Returns true if the event was signaled, false if it was canceled. @@ -101,7 +121,7 @@ TASK_WITH_FINALIZER(test_enemy, { complex aim = global.plr.pos - e->pos; aim *= 5 * cexp(I*M_PI*0.1*nfrand()) / cabs(aim); - PROJECTILE( + Projectile *p = PROJECTILE( .pos = e->pos, .proto = pp_rice, .color = RGBA(1.0, 0.0, i / (pcount - 1.0), 0.0), @@ -109,6 +129,8 @@ TASK_WITH_FINALIZER(test_enemy, { .args = { aim }, ); + INVOKE_TASK(laserize_proj, p, 30); + WAIT(3); } @@ -131,7 +153,7 @@ TASK(stage_main, { int ignored; }) { for(;;) { INVOKE_TASK(test_enemy, 9000, CMPLX(VIEWPORT_W, VIEWPORT_H) * 0.5, 3*I); - WAIT(240); + WAIT(500); } } From 61877e8c67fc72cd8165d7af5d10cdbeb8fa59d9 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 20 Jul 2019 16:15:51 +0300 Subject: [PATCH 012/104] generalize common bullet motion rules; add some math helpers --- meson.build | 5 +++++ src/coroutine.c | 2 +- src/coroutine.h | 2 +- src/meson.build | 1 + src/move.c | 17 +++++++++++++++++ src/move.h | 39 +++++++++++++++++++++++++++++++++++++++ src/projectile.c | 7 +++++++ src/projectile.h | 3 +++ src/stages/corotest.c | 42 ++++++++++++++++++++++-------------------- src/stages/corotest.h | 2 +- src/util/miscmath.c | 16 ++++++++++++++++ src/util/miscmath.h | 2 ++ 12 files changed, 115 insertions(+), 23 deletions(-) create mode 100644 src/move.c create mode 100644 src/move.h diff --git a/meson.build b/meson.build index 800731d18a..d7b95876c8 100644 --- a/meson.build +++ b/meson.build @@ -250,6 +250,11 @@ config.set('TAISEI_BUILDCONF_HAVE_TIMESPEC', have_timespec) config.set('TAISEI_BUILDCONF_HAVE_INT128', cc.sizeof('__int128') == 16) config.set('TAISEI_BUILDCONF_HAVE_LONG_DOUBLE', cc.sizeof('long double') > 8) config.set('TAISEI_BUILDCONF_HAVE_POSIX', have_posix) +config.set('TAISEI_BUILDCONF_HAVE_SINCOS', cc.has_function('sincos', dependencies : dep_m)) + +if config.get('TAISEI_BUILDCONF_HAVE_SINCOS') + config.set('_GNU_SOURCE', true) +endif if host_machine.system() == 'emscripten' # Emscripten bug: https://github.com/emscripten-core/emscripten/issues/10072 diff --git a/src/coroutine.c b/src/coroutine.c index d209662512..d4adda020e 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -3,7 +3,7 @@ * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . - * Copyright (c) 2012-2019, Andrei Alexeyev . + * Copyright (c) 2012-2019, Andrei Alexeyev . */ #include "taisei.h" diff --git a/src/coroutine.h b/src/coroutine.h index 549b5e6f86..e241afce95 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -3,7 +3,7 @@ * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . - * Copyright (c) 2012-2019, Andrei Alexeyev . + * Copyright (c) 2012-2019, Andrei Alexeyev . */ #ifndef IGUARD_coroutine_h diff --git a/src/meson.build b/src/meson.build index a7f3757e89..54f22a45a2 100644 --- a/src/meson.build +++ b/src/meson.build @@ -83,6 +83,7 @@ taisei_src = files( 'list.c', 'log.c', 'main.c', + 'move.c', 'player.c', 'plrmodes.c', 'progress.c', diff --git a/src/move.c b/src/move.c new file mode 100644 index 0000000000..d5cfefe118 --- /dev/null +++ b/src/move.c @@ -0,0 +1,17 @@ +/* + * This software is licensed under the terms of the MIT-License + * See COPYING for further information. + * --- + * Copyright (c) 2011-2019, Lukas Weber . + * Copyright (c) 2012-2019, Andrei Alexeyev . + */ + +#include "taisei.h" + +#include "move.h" + +complex move_update(MoveParams *p) { + complex v = p->velocity; + p->velocity = p->acceleration + p->retention * v; + return v; +} diff --git a/src/move.h b/src/move.h new file mode 100644 index 0000000000..36a08d54c3 --- /dev/null +++ b/src/move.h @@ -0,0 +1,39 @@ +/* + * This software is licensed under the terms of the MIT-License + * See COPYING for further information. + * --- + * Copyright (c) 2011-2019, Lukas Weber . + * Copyright (c) 2012-2019, Andrei Alexeyev . + */ + +#ifndef IGUARD_move_h +#define IGUARD_move_h + +#include "taisei.h" + +/* + * Simple generalized projectile movement based on laochailan's idea + */ + +#define MOVE_FUNC static inline attr_must_inline MoveParams + +typedef struct MoveParams { + complex velocity, acceleration, retention; +} MoveParams; + +complex move_update(MoveParams *params); + +MOVE_FUNC move_linear(complex vel) { + return (MoveParams) { vel, 0, 1 }; +} + +MOVE_FUNC move_accelerated(complex vel, complex accel) { + return (MoveParams) { vel, accel, 1 }; +} + +MOVE_FUNC move_asymptotic(complex vel0, complex vel1, complex retention) { + // NOTE: retention could be derived by something like: exp(-1 / halflife) + return (MoveParams) { vel0, vel1 * (1 - retention), retention }; +} + +#endif // IGUARD_move_h diff --git a/src/projectile.c b/src/projectile.c index 81fc0ed72f..43568bcff9 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -145,6 +145,12 @@ static inline int proj_call_rule(Projectile *p, int t) { ACTION_ACK ); } + } else if(t >= 0) { + p->pos += move_update(&p->move); + + if(p->pos != p->prevpos) { + p->angle = carg(p->pos - p->prevpos); + } } if(/*t == 0 ||*/ t == EVENT_BIRTH) { @@ -215,6 +221,7 @@ static Projectile* _create_projectile(ProjArgs *args) { p->damage = args->damage; p->damage_type = args->damage_type; p->clear_flags = 0; + p->move = args->move; if(args->shader_params != NULL) { p->shader_params = *args->shader_params; diff --git a/src/projectile.h b/src/projectile.h index 5b2ed9ae00..1c45d2704e 100644 --- a/src/projectile.h +++ b/src/projectile.h @@ -18,6 +18,7 @@ #include "objectpool.h" #include "renderer/api.h" #include "entity.h" +#include "move.h" #ifdef DEBUG #define PROJ_DEBUG @@ -82,6 +83,7 @@ struct Projectile { ShaderProgram *shader; Sprite *sprite; ProjPrototype *proto; + MoveParams move; Color color; ShaderCustomParams shader_params; BlendMode blend; @@ -122,6 +124,7 @@ typedef struct ProjArgs { cmplx pos; cmplx size; // affects default draw order, out-of-viewport culling, and grazing cmplx collision_size; // affects collision with player (TODO: make this work for player projectiles too?) + MoveParams move; ProjType type; ProjFlags flags; BlendMode blend; diff --git a/src/stages/corotest.c b/src/stages/corotest.c index b71ca4eaa1..4646c3c13d 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -3,7 +3,7 @@ * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . - * Copyright (c) 2012-2019, Andrei Alexeyev . + * Copyright (c) 2012-2019, Andrei Alexeyev . */ #include "taisei.h" @@ -37,13 +37,13 @@ TASK(laserize_proj, { Projectile *p; int t; }) { kill_projectile(ARGS.p); complex aim = 12 * cexp(I * a); - create_laserline(pos, aim, 20, 40, &clr); + create_laserline(pos, aim, 60, 80, &clr); PROJECTILE( .pos = pos, .proto = pp_ball, .color = &clr, - .timeout = 20, + .timeout = 60, ); } @@ -75,8 +75,7 @@ TASK(wait_event_test, { Enemy *e; int rounds; int delay; int cnt; int cnt_inc; } .pos = pos, .proto = pp_crystal, .color = RGBA(i / (double)ARGS.cnt, 0.0, 1.0 - i / (double)ARGS.cnt, 0.0), - .rule = asymptotic, - .args = { 2 * aim, 5 }, + .move = move_asymptotic(12 * aim, 2 * aim, 0.8), ); WAIT(1); @@ -107,7 +106,7 @@ TASK_WITH_FINALIZER(test_enemy, { ARGS.for_finalizer.x++; // wander around for a bit... - for(int i = 0; i < 20; ++i) { + for(int i = 0; i < 60; ++i) { e->pos += ARGS.dir; YIELD; } @@ -116,22 +115,25 @@ TASK_WITH_FINALIZER(test_enemy, { WAIT(10); // pew pew!!! - int pcount = 10 + 10 * frand(); + complex aim = 3 * cnormalize(global.plr.pos - e->pos); + int pcount = 120; + for(int i = 0; i < pcount; ++i) { - complex aim = global.plr.pos - e->pos; - aim *= 5 * cexp(I*M_PI*0.1*nfrand()) / cabs(aim); - - Projectile *p = PROJECTILE( - .pos = e->pos, - .proto = pp_rice, - .color = RGBA(1.0, 0.0, i / (pcount - 1.0), 0.0), - .rule = linear, - .args = { aim }, - ); + for(int j = -1; j < 2; j += 2) { + double a = j * M_PI * 0.1 * psin(20 * (2 * global.frames + i * 10)); - INVOKE_TASK(laserize_proj, p, 30); + Projectile *p = PROJECTILE( + .pos = e->pos, + .proto = pp_rice, + .color = RGBA(1.0, 0.0, i / (pcount - 1.0), 0.0), + .move = move_asymptotic(aim * 4 * cdir(a + M_PI), aim * cdir(-a * 2), 0.9), + .max_viewport_dist = 128, + ); - WAIT(3); + INVOKE_TASK(laserize_proj, p, 40); + } + + WAIT(2); } // keep wandering, randomly @@ -153,7 +155,7 @@ TASK(stage_main, { int ignored; }) { for(;;) { INVOKE_TASK(test_enemy, 9000, CMPLX(VIEWPORT_W, VIEWPORT_H) * 0.5, 3*I); - WAIT(500); + WAIT(1000); } } diff --git a/src/stages/corotest.h b/src/stages/corotest.h index dff7aa5247..8c02a9b88d 100644 --- a/src/stages/corotest.h +++ b/src/stages/corotest.h @@ -3,7 +3,7 @@ * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . - * Copyright (c) 2012-2019, Andrei Alexeyev . + * Copyright (c) 2012-2019, Andrei Alexeyev . */ #ifndef IGUARD_stages_corotest_h diff --git a/src/util/miscmath.c b/src/util/miscmath.c index 1fade2556b..539b640677 100644 --- a/src/util/miscmath.c +++ b/src/util/miscmath.c @@ -91,6 +91,22 @@ void capproach_asymptotic_p(cmplx *val, cmplx target, double rate, double epsilo *val = capproach_asymptotic(*val, target, rate, epsilon); } +cmplx cnormalize(cmplx c) { + return c / cabs(c); +} + +cmplx cdir(double angle) { + // this is faster than cexp(I*angle) + + #ifdef TAISEI_BUILDCONF_HAVE_SINCOS + double s, c; + sincos(angle, &s, &c); + return CMPLX(c, s); + #else + return CMPLX(cos(angle), sin(angle)); + #endif +} + double psin(double x) { return 0.5 + 0.5 * sin(x); } diff --git a/src/util/miscmath.h b/src/util/miscmath.h index 4cfa3cb955..4fca40a295 100644 --- a/src/util/miscmath.h +++ b/src/util/miscmath.h @@ -37,6 +37,8 @@ cmplx capproach_asymptotic(cmplx val, cmplx target, double rate, double epsilon) void approach_asymptotic_p(double *val, double target, double rate, double epsilon); void fapproach_asymptotic_p(float *val, float target, float rate, float epsilon); void capproach_asymptotic_p(cmplx *val, cmplx target, double rate, double epsilon); +cmplx cnormalize(cmplx c) attr_const; +cmplx cdir(double angle) attr_const; double psin(double) attr_const; int sign(double) attr_const; double swing(double x, double s) attr_const; From 5e2acbb0f88b3a6f367bb1c80458da4262e831fe Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 20 Jul 2019 19:29:37 +0300 Subject: [PATCH 013/104] add 'killed' event for projectiles --- src/coroutine.c | 6 ++++++ src/coroutine.h | 1 + src/projectile.c | 3 +++ src/projectile.h | 4 ++++ src/stages/corotest.c | 8 +++++++- 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/coroutine.c b/src/coroutine.c index d4adda020e..0b91911ab8 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -192,6 +192,12 @@ void coevent_signal(CoEvent *evt) { coevent_wake_subscribers(evt); } +void coevent_signal_once(CoEvent *evt) { + if(!evt->num_signaled) { + coevent_signal(evt); + } +} + void coevent_cancel(CoEvent* evt) { evt->num_signaled = evt->unique_id = 0; coevent_wake_subscribers(evt); diff --git a/src/coroutine.h b/src/coroutine.h index e241afce95..a8a3c06bf4 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -48,6 +48,7 @@ void cotask_set_finalizer(CoTask *task, CoTaskFunc finalizer, void *arg); void coevent_init(CoEvent *evt); void coevent_signal(CoEvent *evt); +void coevent_signal_once(CoEvent *evt); void coevent_cancel(CoEvent *evt); CoSched *cosched_new(void); diff --git a/src/projectile.c b/src/projectile.c index 43568bcff9..671c5a9ee8 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -269,6 +269,7 @@ static Projectile* _create_projectile(ProjArgs *args) { } } + coevent_init(&p->events.killed); ent_register(&p->ent, ENT_PROJECTILE); // TODO: Maybe allow ACTION_DESTROY here? @@ -301,6 +302,7 @@ Projectile* _proj_attach_dbginfo(Projectile *p, DebugInfo *dbg, const char *call static void *_delete_projectile(ListAnchor *projlist, List *proj, void *arg) { Projectile *p = (Projectile*)proj; proj_call_rule(p, EVENT_DEATH); + coevent_signal_once(&p->events.killed); ent_unregister(&p->ent); objpool_release(stage_object_pools.projectiles, alist_unlink(projlist, proj)); return NULL; @@ -516,6 +518,7 @@ bool clear_projectile(Projectile *proj, uint flags) { } void kill_projectile(Projectile* proj) { + coevent_signal_once(&proj->events.killed); proj->flags |= PFLAG_INTERNAL_DEAD | PFLAG_NOCOLLISION | PFLAG_NOCLEAR; proj->draw_rule = ProjNoDraw; } diff --git a/src/projectile.h b/src/projectile.h index 1c45d2704e..8690ab2b3e 100644 --- a/src/projectile.h +++ b/src/projectile.h @@ -19,6 +19,7 @@ #include "renderer/api.h" #include "entity.h" #include "move.h" +#include "coroutine.h" #ifdef DEBUG #define PROJ_DEBUG @@ -84,6 +85,9 @@ struct Projectile { Sprite *sprite; ProjPrototype *proto; MoveParams move; + struct { + CoEvent killed; + } events; Color color; ShaderCustomParams shader_params; BlendMode blend; diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 4646c3c13d..6dc9e31c59 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -27,6 +27,10 @@ TASK(drop_items, { complex *pos; ItemCounts items; }) { } } +TASK(laserproj_death, { Projectile *p; }) { + spawn_projectile_clear_effect(ARGS.p); +} + TASK(laserize_proj, { Projectile *p; int t; }) { TASK_BIND(ARGS.p); WAIT(ARGS.t); @@ -39,12 +43,14 @@ TASK(laserize_proj, { Projectile *p; int t; }) { complex aim = 12 * cexp(I * a); create_laserline(pos, aim, 60, 80, &clr); - PROJECTILE( + Projectile *p = PROJECTILE( .pos = pos, .proto = pp_ball, .color = &clr, .timeout = 60, ); + + INVOKE_TASK_WHEN(&p->events.killed, laserproj_death, p); } TASK(wait_event_test, { Enemy *e; int rounds; int delay; int cnt; int cnt_inc; }) { From e4c38ce037e3cd7d62cb47e515775dc70a6db2b0 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 21 Jul 2019 09:51:47 +0300 Subject: [PATCH 014/104] Add a way to define extern tasks (to reference across files) --- src/common_tasks.c | 22 ++++++++++++ src/common_tasks.h | 22 ++++++++++++ src/coroutine.h | 84 ++++++++++++++++++++++++++++++++++--------- src/meson.build | 1 + src/stages/corotest.c | 14 ++------ 5 files changed, 115 insertions(+), 28 deletions(-) create mode 100644 src/common_tasks.c create mode 100644 src/common_tasks.h diff --git a/src/common_tasks.c b/src/common_tasks.c new file mode 100644 index 0000000000..206677a771 --- /dev/null +++ b/src/common_tasks.c @@ -0,0 +1,22 @@ +/* + * This software is licensed under the terms of the MIT-License + * See COPYING for further information. + * --- + * Copyright (c) 2011-2019, Lukas Weber . + * Copyright (c) 2012-2019, Andrei Alexeyev . + */ + +#include "taisei.h" + +#include "common_tasks.h" + +DEFINE_EXTERN_TASK(common_drop_items) { + complex p = *ARGS.pos; + + for(int i = 0; i < ITEM_LAST - ITEM_FIRST; ++i) { + for(int j = ARGS.items.as_array[i]; j; --j) { + spawn_item(p, i + ITEM_FIRST); + WAIT(2); + } + } +} diff --git a/src/common_tasks.h b/src/common_tasks.h new file mode 100644 index 0000000000..28bc63120e --- /dev/null +++ b/src/common_tasks.h @@ -0,0 +1,22 @@ +/* + * This software is licensed under the terms of the MIT-License + * See COPYING for further information. + * --- + * Copyright (c) 2011-2019, Lukas Weber . + * Copyright (c) 2012-2019, Andrei Alexeyev . + */ + +#ifndef IGUARD_common_tasks_h +#define IGUARD_common_tasks_h + +#include "taisei.h" + +#include "coroutine.h" +#include "item.h" + +DECLARE_EXTERN_TASK( + common_drop_items, + { complex *pos; ItemCounts items; } +); + +#endif // IGUARD_common_tasks_h diff --git a/src/coroutine.h b/src/coroutine.h index a8a3c06bf4..af31fcd22d 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -66,19 +66,27 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { #define ARGS (*_cotask_args) -#define TASK_COMMON_DECLARATIONS(name, argstruct) \ +#define TASK_COMMON_PRIVATE_DECLARATIONS(name) \ + /* user-defined task body */ \ + static void COTASK_##name(TASK_ARGS(name) *_cotask_args); \ + /* called from the entry points before task body (inlined, hopefully) */ \ + static inline attr_must_inline void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args) /* require semicolon */ \ + +#define TASK_COMMON_DECLARATIONS(name, argstruct, linkage) \ /* produce warning if the task is never used */ \ - static char COTASK_UNUSED_CHECK_##name; \ + linkage char COTASK_UNUSED_CHECK_##name; \ /* user-defined type of args struct */ \ struct TASK_ARGS_NAME(name) argstruct; \ /* type of internal args struct for INVOKE_TASK_WHEN */ \ struct TASK_ARGSCOND_NAME(name) { TASK_ARGS(name) real_args; CoEvent *event; }; \ - /* user-defined task body */ \ - static void COTASK_##name(TASK_ARGS(name) *_cotask_args); \ - /* called from the entry points before task body (inlined, hopefully) */ \ - static inline attr_must_inline void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args); \ /* task entry point for INVOKE_TASK */ \ - attr_unused static void *COTASKTHUNK_##name(void *arg) { \ + attr_unused linkage void *COTASKTHUNK_##name(void *arg); \ + /* task entry point for INVOKE_TASK_WHEN */ \ + attr_unused linkage void *COTASKTHUNKCOND_##name(void *arg) /* require semicolon */ \ + +#define TASK_COMMON_THUNK_DEFINITIONS(name, linkage) \ + /* task entry point for INVOKE_TASK */ \ + attr_unused linkage void *COTASKTHUNK_##name(void *arg) { \ /* copy args to our coroutine stack so that they're valid after caller returns */ \ TASK_ARGS(name) args_copy = *(TASK_ARGS(name)*)arg; \ /* call prologue */ \ @@ -89,7 +97,7 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { return NULL; \ } \ /* task entry point for INVOKE_TASK_WHEN */ \ - attr_unused static void *COTASKTHUNKCOND_##name(void *arg) { \ + attr_unused linkage void *COTASKTHUNKCOND_##name(void *arg) { \ /* copy args to our coroutine stack so that they're valid after caller returns */ \ TASK_ARGSCOND(name) args_copy = *(TASK_ARGSCOND(name)*)arg; \ /* wait for event, and if it wasn't canceled... */ \ @@ -103,17 +111,48 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { return NULL; \ } -/* define a normal task */ -#define TASK(name, argstruct) \ - TASK_COMMON_DECLARATIONS(name, argstruct) \ +#define TASK_COMMON_BEGIN_BODY_DEFINITION(name, linkage) \ + linkage void COTASK_##name(TASK_ARGS(name) *_cotask_args) + + +#define DECLARE_TASK_EXPLICIT_LINKAGE(name, argstruct, linkage) \ + TASK_COMMON_DECLARATIONS(name, argstruct, linkage) /* require semicolon */ + +#define DEFINE_TASK_EXPLICIT_LINKAGE(name, linkage) \ + TASK_COMMON_PRIVATE_DECLARATIONS(name); \ + TASK_COMMON_THUNK_DEFINITIONS(name, linkage) \ /* empty prologue */ \ static inline attr_must_inline void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args) { } \ /* begin task body definition */ \ - static void COTASK_##name(TASK_ARGS(name) *_cotask_args) + TASK_COMMON_BEGIN_BODY_DEFINITION(name, linkage) -/* define a task that needs a finalizer */ -#define TASK_WITH_FINALIZER(name, argstruct) \ - TASK_COMMON_DECLARATIONS(name, argstruct) \ + +/* declare a task with static linkage (needs to be defined later) */ +#define DECLARE_TASK(name, argstruct) \ + DECLARE_TASK_EXPLICIT_LINKAGE(name, argstruct, static) /* require semicolon */ + +/* define a task with static linkage (needs to be defined later) */ +#define DEFINE_TASK(name) \ + DEFINE_TASK_EXPLICIT_LINKAGE(name, static) + +/* declare and define a task with static linkage */ +#define TASK(name, argstruct) \ + DECLARE_TASK(name, argstruct); \ + DEFINE_TASK(name) + + +/* declare a task with extern linkage (needs to be defined later) */ +#define DECLARE_EXTERN_TASK(name, argstruct) \ + DECLARE_TASK_EXPLICIT_LINKAGE(name, argstruct, extern) /* require semicolon */ + +/* define a task with extern linkage (needs to be declared first) */ +#define DEFINE_EXTERN_TASK(name) \ + DEFINE_TASK_EXPLICIT_LINKAGE(name, extern) + + +#define DEFINE_TASK_WITH_FINALIZER_EXPLICIT_LINKAGE(name, linkage) \ + TASK_COMMON_PRIVATE_DECLARATIONS(name); \ + TASK_COMMON_THUNK_DEFINITIONS(name, linkage) \ /* error out if using TASK_FINALIZER without TASK_WITH_FINALIZER */ \ struct COTASK__##name##__not_declared_using_TASK_WITH_FINALIZER { char dummy; }; \ /* user-defined finalizer function */ \ @@ -128,7 +167,20 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { cotask_set_finalizer(cotask_active(), COTASKFINALIZERTHUNK_##name, _cotask_args); \ } \ /* begin task body definition */ \ - static void COTASK_##name(TASK_ARGS(name) *_cotask_args) + TASK_COMMON_BEGIN_BODY_DEFINITION(name, linkage) + +/* define a task that needs a finalizer with static linkage (needs to be declared first) */ +#define DEFINE_TASK_WITH_FINALIZER(name) \ + DEFINE_TASK_WITH_FINALIZER_EXPLICIT_LINKAGE(name, static) + +/* define a task that needs a finalizer with static linkage (needs to be declared first) */ +#define DEFINE_EXTERN_TASK_WITH_FINALIZER(name) \ + DEFINE_TASK_WITH_FINALIZER_EXPLICIT_LINKAGE(name, extern) + +/* declare and define a task that needs a finalizer with static linkage */ +#define TASK_WITH_FINALIZER(name, argstruct) \ + DECLARE_TASK(name, argstruct); \ + DEFINE_TASK_WITH_FINALIZER(name) /* define the finalizer for a TASK_WITH_FINALIZER */ #define TASK_FINALIZER(name) \ diff --git a/src/meson.build b/src/meson.build index 54f22a45a2..cc54db15f5 100644 --- a/src/meson.build +++ b/src/meson.build @@ -64,6 +64,7 @@ taisei_src = files( 'cli.c', 'color.c', 'color.c', + 'common_tasks.c', 'config.c', 'coroutine.c', 'credits.c', diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 6dc9e31c59..702f2a762f 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -11,22 +11,12 @@ #include "corotest.h" #include "coroutine.h" #include "global.h" +#include "common_tasks.h" static CoSched *cotest_sched; static void cotest_stub_proc(void) { } -TASK(drop_items, { complex *pos; ItemCounts items; }) { - complex p = *ARGS.pos; - - for(int i = 0; i < ITEM_LAST - ITEM_FIRST; ++i) { - for(int j = ARGS.items.as_array[i]; j; --j) { - spawn_item(p, i + ITEM_FIRST); - WAIT(2); - } - } -} - TASK(laserproj_death, { Projectile *p; }) { spawn_projectile_clear_effect(ARGS.p); } @@ -98,7 +88,7 @@ TASK_WITH_FINALIZER(test_enemy, { Enemy *e = create_enemy1c(ARGS.pos, ARGS.hp, BigFairy, NULL, 0); TASK_BIND(e); - INVOKE_TASK_WHEN(&e->events.killed, drop_items, &e->pos, { + INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { .life_fragment = 1, .bomb_fragment = 1, .power = 3, From 9784cbea848f34744df3ac57f702c3d80d381b30 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 22 Jul 2019 22:07:25 +0300 Subject: [PATCH 015/104] INVOKE_TASK_DELAYED; CANCEL_TASK_WHEN; event robustness fixes --- src/coroutine.c | 122 +++++++++++++++++++++++++++++++++++------- src/coroutine.h | 77 +++++++++++++++++++++----- src/stages/corotest.c | 2 +- 3 files changed, 166 insertions(+), 35 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index 0b91911ab8..0f73645fca 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -32,7 +32,7 @@ struct CoTask { LIST_INTERFACE(CoTask); - List event_subscriber_chain; + // List event_subscriber_chain; koishi_coroutine_t ko; BoxedEntity bound_ent; @@ -40,6 +40,8 @@ struct CoTask { CoTaskFunc func; void *arg; } finalizer; + + uint32_t unique_id; }; struct CoSched { @@ -52,6 +54,23 @@ static size_t num_tasks_in_use; CoSched *_cosched_global; +BoxedTask cotask_box(CoTask *task) { + return (BoxedTask) { + .ptr = (uintptr_t)task, + .unique_id = task->unique_id, + }; +} + +CoTask *cotask_unbox(BoxedTask box) { + CoTask *task = (void*)box.ptr; + + if(task->unique_id == box.unique_id) { + return task; + } + + return NULL; +} + CoTask *cotask_new(CoTaskFunc func) { CoTask *task; ++num_tasks_in_use; @@ -74,10 +93,15 @@ CoTask *cotask_new(CoTaskFunc func) { ); } + static uint32_t unique_counter = 0; + task->unique_id = ++unique_counter; + assert(unique_counter != 0); + return task; } void cotask_free(CoTask *task) { + task->unique_id = 0; memset(&task->bound_ent, 0, sizeof(task->bound_ent)); memset(&task->finalizer, 0, sizeof(task->finalizer)); alist_push(&task_pool, task); @@ -95,6 +119,16 @@ CoTask *cotask_active(void) { return CASTPTR_ASSUME_ALIGNED((char*)koishi_active() - offsetof(CoTask, ko), CoTask); } +bool cotask_cancel(CoTask *task) { + if(cotask_status(task) != CO_STATUS_DEAD) { + koishi_kill(&task->ko); + assert(cotask_status(task) == CO_STATUS_DEAD); + return true; + } + + return false; +} + void *cotask_resume(CoTask *task, void *arg) { if(task->bound_ent.ent && !ent_unbox(task->bound_ent)) { koishi_kill(&task->ko); @@ -124,10 +158,26 @@ bool cotask_wait_event(CoEvent *evt, void *arg) { struct { uint32_t unique_id; - uint32_t num_signaled; + uint16_t num_signaled; } snapshot = { evt->unique_id, evt->num_signaled }; - alist_append(&evt->subscribers, &cotask_active()->event_subscriber_chain); + evt->num_subscribers++; + assert(evt->num_subscribers != 0); + + if(evt->num_subscribers >= evt->num_subscribers_allocated) { + if(!evt->num_subscribers_allocated) { + evt->num_subscribers_allocated = 4; + } else { + evt->num_subscribers_allocated *= 2; + assert(evt->num_subscribers_allocated != 0); + } + + evt->subscribers = realloc(evt->subscribers, sizeof(*evt->subscribers) * evt->num_subscribers_allocated); + } + + evt->subscribers[evt->num_subscribers - 1] = cotask_box(cotask_active()); + + // alist_append(&evt->subscribers, &cotask_active()->event_subscriber_chain); while(true) { EVT_DEBUG("[%p]", (void*)evt); @@ -171,19 +221,46 @@ void cotask_set_finalizer(CoTask *task, CoTaskFunc finalizer, void *arg) { void coevent_init(CoEvent *evt) { static uint32_t g_uid; - evt->unique_id = ++g_uid; - evt->num_signaled = 0; + *evt = (CoEvent) { .unique_id = ++g_uid }; assert(g_uid != 0); } static void coevent_wake_subscribers(CoEvent *evt) { - for(List *node = evt->subscribers.first; node; node = node->next) { +#if 0 + List *subs_head = evt->subscribers.first; + evt->subscribers.first = evt->subscribers.last = NULL; + + // NOTE: might need to copy the list into an array before iterating, to make sure nothing can corrupt the chain... + + for(List *node = subs_head, *next; node; node = next) { + next = node->next; CoTask *task = CASTPTR_ASSUME_ALIGNED((char*)node - offsetof(CoTask, event_subscriber_chain), CoTask); - TASK_DEBUG("Resume CoEvent{%p} subscriber %p", (void*)evt, (void*)task); - cotask_resume(task, NULL); + + if(cotask_status(task) != CO_STATUS_DEAD) { + TASK_DEBUG("Resume CoEvent{%p} subscriber %p", (void*)evt, (void*)task); + cotask_resume(task, NULL); + } } +#endif - evt->subscribers.first = evt->subscribers.last = NULL; + if(!evt->num_subscribers) { + return; + } + + assert(evt->num_subscribers); + + BoxedTask subs_snapshot[evt->num_subscribers]; + memcpy(subs_snapshot, evt->subscribers, sizeof(subs_snapshot)); + evt->num_subscribers = 0; + + for(int i = 0; i < ARRAY_SIZE(subs_snapshot); ++i) { + CoTask *task = cotask_unbox(subs_snapshot[i]); + + if(task && cotask_status(task) != CO_STATUS_DEAD) { + EVT_DEBUG("Resume CoEvent{%p} subscriber %p", (void*)evt, (void*)task); + cotask_resume(task, NULL); + } + } } void coevent_signal(CoEvent *evt) { @@ -201,6 +278,9 @@ void coevent_signal_once(CoEvent *evt) { void coevent_cancel(CoEvent* evt) { evt->num_signaled = evt->unique_id = 0; coevent_wake_subscribers(evt); + evt->num_subscribers_allocated = 0; + free(evt->subscribers); + evt->subscribers = NULL; } CoSched *cosched_new(void) { @@ -208,18 +288,12 @@ CoSched *cosched_new(void) { return sched; } -void *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg) { +CoTask *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg) { CoTask *task = cotask_new(func); - void *ret = cotask_resume(task, arg); - - if(cotask_status(task) == CO_STATUS_DEAD) { - cotask_free(task); - } else { - assert(cotask_status(task) == CO_STATUS_SUSPENDED); - alist_append(&sched->pending_tasks, task); - } - - return ret; + cotask_resume(task, arg); + assert(cotask_status(task) == CO_STATUS_SUSPENDED || cotask_status(task) == CO_STATUS_DEAD); + alist_append(&sched->pending_tasks, task); + return task; } uint cosched_run_tasks(CoSched *sched) { @@ -267,3 +341,11 @@ void coroutines_shutdown(void) { free(task); } } + +DEFINE_EXTERN_TASK(_cancel_task_helper) { + CoTask *task = cotask_unbox(ARGS.task); + + if(task) { + cotask_cancel(task); + } +} diff --git a/src/coroutine.h b/src/coroutine.h index af31fcd22d..bd40d60fec 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -27,10 +27,20 @@ typedef enum CoStatus { CO_STATUS_DEAD = KOISHI_DEAD, } CoStatus; +typedef struct BoxedTask { + uintptr_t ptr; + uint32_t unique_id; +} BoxedTask; + typedef struct CoEvent { - ListAnchor subscribers; + // ListAnchor subscribers; + // FIXME: Is there a better way than a dynamic array? + // An intrusive linked list just isn't robust enough. + BoxedTask *subscribers; uint32_t unique_id; - uint32_t num_signaled; + uint16_t num_signaled; + uint8_t num_subscribers; + uint8_t num_subscribers_allocated; } CoEvent; void coroutines_init(void); @@ -38,6 +48,7 @@ void coroutines_shutdown(void); CoTask *cotask_new(CoTaskFunc func); void cotask_free(CoTask *task); +bool cotask_cancel(CoTask *task); void *cotask_resume(CoTask *task, void *arg); void *cotask_yield(void *arg); bool cotask_wait_event(CoEvent *evt, void *arg); @@ -46,13 +57,16 @@ CoTask *cotask_active(void); void cotask_bind_to_entity(CoTask *task, EntityInterface *ent); void cotask_set_finalizer(CoTask *task, CoTaskFunc finalizer, void *arg); +BoxedTask cotask_box(CoTask *task); +CoTask *cotask_unbox(BoxedTask box); + void coevent_init(CoEvent *evt); void coevent_signal(CoEvent *evt); void coevent_signal_once(CoEvent *evt); void coevent_cancel(CoEvent *evt); CoSched *cosched_new(void); -void *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg); // creates and runs the task, returns whatever it yields, schedules it for resume on cosched_run_tasks if it's still alive +CoTask *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg); // creates and runs the task, schedules it for resume on cosched_run_tasks if it's still alive uint cosched_run_tasks(CoSched *sched); // returns number of tasks ran void cosched_free(CoSched *sched); @@ -61,6 +75,9 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { #define TASK_ARGS_NAME(name) COARGS_##name #define TASK_ARGS(name) struct TASK_ARGS_NAME(name) +#define TASK_ARGSDELAY_NAME(name) COARGSDELAY_##name +#define TASK_ARGSDELAY(name) struct TASK_ARGSDELAY_NAME(name) + #define TASK_ARGSCOND_NAME(name) COARGSCOND_##name #define TASK_ARGSCOND(name) struct TASK_ARGSCOND_NAME(name) @@ -77,10 +94,14 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { linkage char COTASK_UNUSED_CHECK_##name; \ /* user-defined type of args struct */ \ struct TASK_ARGS_NAME(name) argstruct; \ + /* type of internal args struct for INVOKE_TASK_DELAYED */ \ + struct TASK_ARGSDELAY_NAME(name) { TASK_ARGS(name) real_args; int delay; }; \ /* type of internal args struct for INVOKE_TASK_WHEN */ \ struct TASK_ARGSCOND_NAME(name) { TASK_ARGS(name) real_args; CoEvent *event; }; \ /* task entry point for INVOKE_TASK */ \ attr_unused linkage void *COTASKTHUNK_##name(void *arg); \ + /* task entry point for INVOKE_TASK_DELAYED */ \ + attr_unused linkage void *COTASKTHUNKDELAY_##name(void *arg); \ /* task entry point for INVOKE_TASK_WHEN */ \ attr_unused linkage void *COTASKTHUNKCOND_##name(void *arg) /* require semicolon */ \ @@ -96,6 +117,19 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { /* exit coroutine */ \ return NULL; \ } \ + /* task entry point for INVOKE_TASK_DELAYED */ \ + attr_unused linkage void *COTASKTHUNKDELAY_##name(void *arg) { \ + /* copy args to our coroutine stack so that they're valid after caller returns */ \ + TASK_ARGSDELAY(name) args_copy = *(TASK_ARGSDELAY(name)*)arg; \ + /* wait out the delay */ \ + WAIT(args_copy.delay); \ + /* call prologue */ \ + COTASKPROLOGUE_##name(&args_copy.real_args); \ + /* call body */ \ + COTASK_##name(&args_copy.real_args); \ + /* exit coroutine */ \ + return NULL; \ + } \ /* task entry point for INVOKE_TASK_WHEN */ \ attr_unused linkage void *COTASKTHUNKCOND_##name(void *arg) { \ /* copy args to our coroutine stack so that they're valid after caller returns */ \ @@ -189,17 +223,32 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { /* begin finalizer body definition */ \ static void COTASKFINALIZER_##name(TASK_ARGS(name) *_cotask_args) -#define INVOKE_TASK(name, ...) do { \ - (void)COTASK_UNUSED_CHECK_##name; \ - TASK_ARGS(name) _coargs = { __VA_ARGS__ }; \ - cosched_new_task(_cosched_global, COTASKTHUNK_##name, &_coargs); \ -} while(0) - -#define INVOKE_TASK_WHEN(_event, name, ...) do { \ - (void)COTASK_UNUSED_CHECK_##name; \ - TASK_ARGSCOND(name) _coargs = { .real_args = { __VA_ARGS__ }, .event = (_event) }; \ - cosched_new_task(_cosched_global, COTASKTHUNKCOND_##name, &_coargs); \ -} while(0) +#define INVOKE_TASK(name, ...) ( \ + (void)COTASK_UNUSED_CHECK_##name, \ + cosched_new_task(_cosched_global, COTASKTHUNK_##name, \ + &(TASK_ARGS(name)) { __VA_ARGS__ } \ + ) \ +) + +#define INVOKE_TASK_WHEN(_event, name, ...) ( \ + (void)COTASK_UNUSED_CHECK_##name, \ + cosched_new_task(_cosched_global, COTASKTHUNKCOND_##name, \ + &(TASK_ARGSCOND(name)) { .real_args = { __VA_ARGS__ }, .event = (_event) } \ + ) \ +) + +#define INVOKE_TASK_DELAYED(_delay, name, ...) ( \ + (void)COTASK_UNUSED_CHECK_##name, \ + cosched_new_task(_cosched_global, COTASKTHUNKDELAY_##name, \ + &(TASK_ARGSDELAY(name)) { .real_args = { __VA_ARGS__ }, .delay = (_delay) } \ + ) \ +) + +DECLARE_EXTERN_TASK(_cancel_task_helper, { BoxedTask task; }); + +#define CANCEL_TASK_WHEN(_event, _task) INVOKE_TASK_WHEN(_event, _cancel_task_helper, _task) + +#define THIS_TASK cotask_box(cotask_active()) #define YIELD cotask_yield(NULL) #define WAIT(delay) do { int _delay = (delay); while(_delay-- > 0) YIELD; } while(0) diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 702f2a762f..4c3d6e19fa 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -150,7 +150,7 @@ TASK(stage_main, { int ignored; }) { log_debug("test 2! %i", global.timer); for(;;) { - INVOKE_TASK(test_enemy, 9000, CMPLX(VIEWPORT_W, VIEWPORT_H) * 0.5, 3*I); + INVOKE_TASK_DELAYED(60, test_enemy, 9000, CMPLX(VIEWPORT_W, VIEWPORT_H) * 0.5, 3*I); WAIT(1000); } } From abfdc955197219c8cf64553726b38b0085527c0d Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Tue, 23 Jul 2019 04:33:52 +0300 Subject: [PATCH 016/104] integrate task scheduling into the stage loop --- src/coroutine.c | 13 ++++----- src/coroutine.h | 8 +++-- src/stage.c | 68 ++++++++++++++++++++++++++++++++----------- src/stage.h | 4 +++ src/stages/corotest.c | 29 ++---------------- 5 files changed, 69 insertions(+), 53 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index 0f73645fca..270cf09cac 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -44,10 +44,6 @@ struct CoTask { uint32_t unique_id; }; -struct CoSched { - LIST_ANCHOR(CoTask) tasks, pending_tasks; -}; - static LIST_ANCHOR(CoTask) task_pool; static size_t num_tasks_allocated; static size_t num_tasks_in_use; @@ -283,9 +279,8 @@ void coevent_cancel(CoEvent* evt) { evt->subscribers = NULL; } -CoSched *cosched_new(void) { - CoSched *sched = calloc(1, sizeof(*sched)); - return sched; +void cosched_init(CoSched *sched) { + memset(sched, 0, sizeof(*sched)); } CoTask *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg) { @@ -319,7 +314,7 @@ uint cosched_run_tasks(CoSched *sched) { return ran; } -void cosched_free(CoSched *sched) { +void cosched_finish(CoSched *sched) { for(CoTask *t = sched->pending_tasks.first, *next; t; t = next) { next = t->next; cotask_free(t); @@ -329,6 +324,8 @@ void cosched_free(CoSched *sched) { next = t->next; cotask_free(t); } + + memset(sched, 0, sizeof(*sched)); } void coroutines_init(void) { diff --git a/src/coroutine.h b/src/coroutine.h index bd40d60fec..c12f902577 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -43,6 +43,10 @@ typedef struct CoEvent { uint8_t num_subscribers_allocated; } CoEvent; +struct CoSched { + LIST_ANCHOR(CoTask) tasks, pending_tasks; +}; + void coroutines_init(void); void coroutines_shutdown(void); @@ -65,10 +69,10 @@ void coevent_signal(CoEvent *evt); void coevent_signal_once(CoEvent *evt); void coevent_cancel(CoEvent *evt); -CoSched *cosched_new(void); +void cosched_init(CoSched *sched); CoTask *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg); // creates and runs the task, schedules it for resume on cosched_run_tasks if it's still alive uint cosched_run_tasks(CoSched *sched); // returns number of tasks ran -void cosched_free(CoSched *sched); +void cosched_finish(CoSched *sched); static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; } diff --git a/src/stage.c b/src/stage.c index e9c03fd464..e86176c28c 100644 --- a/src/stage.c +++ b/src/stage.c @@ -677,10 +677,11 @@ bool stage_is_cleared(void) { typedef struct StageFrameState { StageInfo *stage; - int transition_delay; - uint16_t last_replay_fps; CallChain cc; + CoSched sched; + int transition_delay; int logic_calls; + uint16_t last_replay_fps; #ifdef DEBUG bool skip_to_dialog; @@ -728,6 +729,22 @@ static void stage_give_clear_bonus(const StageInfo *stage, StageClearBonus *bonu player_add_points(&global.plr, bonus->total, global.plr.pos); } +inline bool stage_should_yield(void) { + return (global.boss && !boss_is_fleeing(global.boss)) || dialog_is_active(global.dialog); +} + +void stage_yield(void) { + do { + cotask_yield(NULL); + } while(stage_should_yield()); +} + +void stage_wait(int delay) { + while(delay-- > 0) { + stage_yield(); + } +} + static LogicFrameAction stage_logic_frame(void *arg) { StageFrameState *fstate = arg; StageInfo *stage = fstate->stage; @@ -757,7 +774,9 @@ static LogicFrameAction stage_logic_frame(void *arg) { ((global.replaymode == REPLAY_PLAY) ? replay_input : stage_input)(); if(global.gameover != GAMEOVER_TRANSITIONING) { - if((!global.boss || boss_is_fleeing(global.boss)) && !dialog_is_active(global.dialog)) { + cosched_run_tasks(&fstate->sched); + + if(!stage_should_yield()) { stage->procs->event(); } @@ -839,16 +858,28 @@ static RenderFrameAction stage_render_frame(void *arg) { static void stage_end_loop(void *ctx); +static void stage_stub_proc(void) { } + void stage_enter(StageInfo *stage, CallChain next) { assert(stage); assert(stage->procs); - assert(stage->procs->preload); - assert(stage->procs->begin); - assert(stage->procs->end); - assert(stage->procs->draw); - assert(stage->procs->event); - assert(stage->procs->update); - assert(stage->procs->shader_rules); + + #define STUB_PROC(proc, stub) do {\ + if(!stage->procs->proc) { \ + stage->procs->proc = stub; \ + log_debug(#proc " proc is missing"); \ + } \ + } while(0) + + static const ShaderRule shader_rules_stub[1] = { NULL }; + + STUB_PROC(preload, stage_stub_proc); + STUB_PROC(begin, stage_stub_proc); + STUB_PROC(end, stage_stub_proc); + STUB_PROC(draw, stage_stub_proc); + STUB_PROC(event, stage_stub_proc); + STUB_PROC(update, stage_stub_proc); + STUB_PROC(shader_rules, (ShaderRule*)shader_rules_stub); if(global.gameover == GAMEOVER_WIN) { global.gameover = 0; @@ -910,14 +941,9 @@ void stage_enter(StageInfo *stage, CallChain next) { stg->playpos = 0; } - stage->procs->begin(); - player_stage_post_init(&global.plr); - - if(global.stage->type != STAGE_SPELL) { - display_stage_title(stage); - } - StageFrameState *fstate = calloc(1 , sizeof(*fstate)); + cosched_init(&fstate->sched); + cosched_set_invoke_target(&fstate->sched); fstate->stage = stage; fstate->cc = next; @@ -925,6 +951,13 @@ void stage_enter(StageInfo *stage, CallChain next) { fstate->skip_to_dialog = env_get_int("TAISEI_SKIP_TO_DIALOG", 0); #endif + stage->procs->begin(); + player_stage_post_init(&global.plr); + + if(global.stage->type != STAGE_SPELL) { + display_stage_title(stage); + } + eventloop_enter(fstate, stage_logic_frame, stage_render_frame, stage_end_loop, FPS); } @@ -944,6 +977,7 @@ void stage_end_loop(void* ctx) { stage_draw_shutdown(); stage_free(); player_free(&global.plr); + cosched_finish(&s->sched); tsrand_switch(&global.rand_visual); free_all_refs(); ent_shutdown(); diff --git a/src/stage.h b/src/stage.h index 85a9b76014..5f8a3ae774 100644 --- a/src/stage.h +++ b/src/stage.h @@ -149,6 +149,10 @@ bool stage_is_cleared(void); void stage_unlock_bgm(const char *bgm); +bool stage_should_yield(void); +void stage_yield(void); +void stage_wait(int delay); + #include "stages/stage1.h" #include "stages/stage2.h" #include "stages/stage3.h" diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 4c3d6e19fa..b63befe326 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -13,10 +13,6 @@ #include "global.h" #include "common_tasks.h" -static CoSched *cotest_sched; - -static void cotest_stub_proc(void) { } - TASK(laserproj_death, { Projectile *p; }) { spawn_projectile_clear_effect(ARGS.p); } @@ -144,40 +140,21 @@ TASK_FINALIZER(test_enemy) { TASK(stage_main, { int ignored; }) { YIELD; - WAIT(30); + stage_wait(30); log_debug("test 1! %i", global.timer); - WAIT(60); + stage_wait(60); log_debug("test 2! %i", global.timer); for(;;) { INVOKE_TASK_DELAYED(60, test_enemy, 9000, CMPLX(VIEWPORT_W, VIEWPORT_H) * 0.5, 3*I); - WAIT(1000); + stage_wait(1000); } } static void cotest_begin(void) { - cotest_sched = cosched_new(); - cosched_set_invoke_target(cotest_sched); INVOKE_TASK(stage_main, 0); } -static void cotest_end(void) { - cosched_free(cotest_sched); -} - -static void cotest_events(void) { - if(!global.gameover && !cosched_run_tasks(cotest_sched)) { - log_debug("over!"); - stage_finish(GAMEOVER_SCORESCREEN); - } -} - StageProcs corotest_procs = { .begin = cotest_begin, - .preload = cotest_stub_proc, - .end = cotest_end, - .draw = cotest_stub_proc, - .update = cotest_stub_proc, - .event = cotest_events, - .shader_rules = (ShaderRule[]) { NULL }, }; From e9a993b33761706b8ac4ea76fa1c699de678d57f Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Wed, 24 Jul 2019 20:40:19 +0300 Subject: [PATCH 017/104] task system tweaks and early Stage 1 port attempt --- external/koishi | 2 +- src/coroutine.c | 23 ++++- src/coroutine.h | 39 +++++++-- src/entity.c | 12 +++ src/entity.h | 54 ++++++++---- src/move.h | 6 ++ src/stage.c | 15 +++- src/stage.h | 4 +- src/stages/corotest.c | 33 ++++---- src/stages/stage1_events.c | 168 ++++++++++++++++++++++++++++++++++++- 10 files changed, 310 insertions(+), 46 deletions(-) diff --git a/external/koishi b/external/koishi index 47e63b5701..7d66fcd750 160000 --- a/external/koishi +++ b/external/koishi @@ -1 +1 @@ -Subproject commit 47e63b57018a62a300d797ea518578850c60730b +Subproject commit 7d66fcd750285059aa3ece6094c3fae4f583d57e diff --git a/src/coroutine.c b/src/coroutine.c index 270cf09cac..70c733cb00 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -204,9 +204,15 @@ CoStatus cotask_status(CoTask *task) { return koishi_state(&task->ko); } -void cotask_bind_to_entity(CoTask *task, EntityInterface *ent) { +EntityInterface *(cotask_bind_to_entity)(CoTask *task, EntityInterface *ent) { assert(task->bound_ent.ent == 0); + + if(ent == NULL) { + koishi_die(NULL); + } + task->bound_ent = ent_box(ent); + return ent; } void cotask_set_finalizer(CoTask *task, CoTaskFunc finalizer, void *arg) { @@ -346,3 +352,18 @@ DEFINE_EXTERN_TASK(_cancel_task_helper) { cotask_cancel(task); } } + +#include +#include +#include +#include +#include +#include + +#define ENT_TYPE(typename, id) \ + typename *_cotask_bind_to_entity_##typename(CoTask *task, typename *ent) { \ + return ENT_CAST((cotask_bind_to_entity)(task, ent ? &ent->entity_interface : NULL), typename); \ + } + +ENT_TYPES +#undef ENT_TYPE diff --git a/src/coroutine.h b/src/coroutine.h index c12f902577..b7cfea30cf 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -58,7 +58,7 @@ void *cotask_yield(void *arg); bool cotask_wait_event(CoEvent *evt, void *arg); CoStatus cotask_status(CoTask *task); CoTask *cotask_active(void); -void cotask_bind_to_entity(CoTask *task, EntityInterface *ent); +EntityInterface *cotask_bind_to_entity(CoTask *task, EntityInterface *ent) attr_returns_nonnull; void cotask_set_finalizer(CoTask *task, CoTaskFunc finalizer, void *arg); BoxedTask cotask_box(CoTask *task); @@ -87,6 +87,9 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { #define ARGS (*_cotask_args) +#define NO_ARGS { char _dummy_0; } +#define ARGS_STRUCT(argstruct) { struct argstruct; char _dummy_1; } + #define TASK_COMMON_PRIVATE_DECLARATIONS(name) \ /* user-defined task body */ \ static void COTASK_##name(TASK_ARGS(name) *_cotask_args); \ @@ -97,7 +100,7 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { /* produce warning if the task is never used */ \ linkage char COTASK_UNUSED_CHECK_##name; \ /* user-defined type of args struct */ \ - struct TASK_ARGS_NAME(name) argstruct; \ + struct TASK_ARGS_NAME(name) ARGS_STRUCT(argstruct); \ /* type of internal args struct for INVOKE_TASK_DELAYED */ \ struct TASK_ARGSDELAY_NAME(name) { TASK_ARGS(name) real_args; int delay; }; \ /* type of internal args struct for INVOKE_TASK_WHEN */ \ @@ -227,27 +230,33 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { /* begin finalizer body definition */ \ static void COTASKFINALIZER_##name(TASK_ARGS(name) *_cotask_args) -#define INVOKE_TASK(name, ...) ( \ +#define INVOKE_TASK_(name, ...) ( \ (void)COTASK_UNUSED_CHECK_##name, \ cosched_new_task(_cosched_global, COTASKTHUNK_##name, \ &(TASK_ARGS(name)) { __VA_ARGS__ } \ ) \ ) -#define INVOKE_TASK_WHEN(_event, name, ...) ( \ +#define INVOKE_TASK(...) INVOKE_TASK_(__VA_ARGS__, ._dummy_1 = 0) + +#define INVOKE_TASK_WHEN_(_event, name, ...) ( \ (void)COTASK_UNUSED_CHECK_##name, \ cosched_new_task(_cosched_global, COTASKTHUNKCOND_##name, \ &(TASK_ARGSCOND(name)) { .real_args = { __VA_ARGS__ }, .event = (_event) } \ ) \ ) -#define INVOKE_TASK_DELAYED(_delay, name, ...) ( \ +#define INVOKE_TASK_WHEN(_event, ...) INVOKE_TASK_WHEN_(_event, __VA_ARGS__, ._dummy_1 = 0) + +#define INVOKE_TASK_DELAYED_(_delay, name, ...) ( \ (void)COTASK_UNUSED_CHECK_##name, \ cosched_new_task(_cosched_global, COTASKTHUNKDELAY_##name, \ &(TASK_ARGSDELAY(name)) { .real_args = { __VA_ARGS__ }, .delay = (_delay) } \ ) \ ) +#define INVOKE_TASK_DELAYED(_delay, ...) INVOKE_TASK_DELAYED_(_delay, __VA_ARGS__, ._dummy_1 = 0) + DECLARE_EXTERN_TASK(_cancel_task_helper, { BoxedTask task; }); #define CANCEL_TASK_WHEN(_event, _task) INVOKE_TASK_WHEN(_event, _cancel_task_helper, _task) @@ -263,6 +272,24 @@ DECLARE_EXTERN_TASK(_cancel_task_helper, { BoxedTask task; }); #define BYIELD do { YIELD; CHECK_BREAK; } while(0) #define BWAIT(frames) do { WAIT(frames); CHECK_BREAK; } while(0) -#define TASK_BIND(ent) cotask_bind_to_entity(cotask_active(), &ent->entity_interface) +#define ENT_TYPE(typename, id) \ + struct typename; \ + struct typename *_cotask_bind_to_entity_##typename(CoTask *task, struct typename *ent); + +ENT_TYPES +#undef ENT_TYPE + +#define cotask_bind_to_entity(task, ent) (_Generic((ent), \ + Projectile*: _cotask_bind_to_entity_Projectile, \ + Laser*: _cotask_bind_to_entity_Laser, \ + Enemy*: _cotask_bind_to_entity_Enemy, \ + Boss*: _cotask_bind_to_entity_Boss, \ + Player*: _cotask_bind_to_entity_Player, \ + Item*: _cotask_bind_to_entity_Item, \ + EntityInterface*: cotask_bind_to_entity \ +)(task, ent)) + +#define TASK_BIND(box) cotask_bind_to_entity(cotask_active(), ENT_UNBOX(box)) +#define TASK_BIND_UNBOXED(ent) cotask_bind_to_entity(cotask_active(), ent) #endif // IGUARD_coroutine_h diff --git a/src/entity.c b/src/entity.c index 9d44d4a438..c0106cce01 100644 --- a/src/entity.c +++ b/src/entity.c @@ -260,3 +260,15 @@ EntityInterface *ent_unbox(BoxedEntity box) { return NULL; } + +#define ENT_TYPE(typename, id) \ + Boxed##typename _ent_box_##typename(struct typename *ent) { \ + return (Boxed##typename) { .as_generic = ent_box(&ent->entity_interface) };\ + } \ + struct typename *_ent_unbox_##typename(Boxed##typename box) { \ + EntityInterface *e = ent_unbox(box.as_generic); \ + return e ? ENT_CAST(e, typename) : NULL; \ + } + +ENT_TYPES +#undef ENT_TYPE diff --git a/src/entity.h b/src/entity.h index b2f30827d6..caa9a1dd45 100644 --- a/src/entity.h +++ b/src/entity.h @@ -110,11 +110,6 @@ struct EntityInterface { ENTITY_INTERFACE_BASE(EntityInterface); }; -struct BoxedEntity { - uintptr_t ent; // not an actual pointer to avert the temptation to use it directly. - uint_fast32_t spawn_id; -}; - INLINE const char* ent_type_name(EntityType type) { switch(type) { #define ENT_TYPE(typename, id) case id: return #id; @@ -158,18 +153,47 @@ void ent_unhook_pre_draw(EntityDrawHookCallback callback); void ent_hook_post_draw(EntityDrawHookCallback callback, void *arg); void ent_unhook_post_draw(EntityDrawHookCallback callback); +struct BoxedEntity { + uintptr_t ent; // not an actual pointer to avert the temptation to use it directly. + uint_fast32_t spawn_id; +}; + BoxedEntity ent_box(EntityInterface *ent); EntityInterface *ent_unbox(BoxedEntity box); -#define ENT_BOX(ent) ent_box(&(ent)->entity_interface) - -#if defined(USE_GNU_EXTENSIONS) && defined(DEBUG) - #define ENT_UNBOX(h, typename) (__extension__ ({ \ - EntityInterface *_unboxed_ent = ent_unbox(h); \ - _unboxed_ent ? ENT_CAST(_unboxed_ent, typename) : NULL; \ - })) -#else - #define ENT_UNBOX(h, typename) CASTPTR_ASSUME_ALIGNED(ent_unbox(h), typename) -#endif +#define ENT_TYPE(typename, id) \ + typedef union Boxed##typename { \ + BoxedEntity as_generic; \ + struct { \ + uintptr_t ent; \ + uint_fast32_t spawn_id; \ + }; \ + } Boxed##typename; \ + struct typename; \ + Boxed##typename _ent_box_##typename(struct typename *ent); \ + struct typename *_ent_unbox_##typename(Boxed##typename box); \ + +ENT_TYPES +#undef ENT_TYPE + +#define ENT_BOX(ent) (_Generic((ent), \ + Projectile*: _ent_box_Projectile, \ + Laser*: _ent_box_Laser, \ + Enemy*: _ent_box_Enemy, \ + Boss*: _ent_box_Boss, \ + Player*: _ent_box_Player, \ + Item*: _ent_box_Item, \ + EntityInterface*: ent_box \ +)(ent)) + +#define ENT_UNBOX(box) (_Generic((box), \ + BoxedProjectile: _ent_unbox_Projectile, \ + BoxedLaser: _ent_unbox_Laser, \ + BoxedEnemy: _ent_unbox_Enemy, \ + BoxedBoss: _ent_unbox_Boss, \ + BoxedPlayer: _ent_unbox_Player, \ + BoxedItem: _ent_unbox_Item, \ + BoxedEntity: ent_unbox \ +)(box)) #endif // IGUARD_entity_h diff --git a/src/move.h b/src/move.h index 36a08d54c3..e966cdbebb 100644 --- a/src/move.h +++ b/src/move.h @@ -36,4 +36,10 @@ MOVE_FUNC move_asymptotic(complex vel0, complex vel1, complex retention) { return (MoveParams) { vel0, vel1 * (1 - retention), retention }; } +MOVE_FUNC move_asymptotic_simple(complex vel, double boost_factor) { + // NOTE: this matches the old asymptotic rule semantics exactly + double retention = 0.8; + return move_asymptotic(vel * (1 + boost_factor * retention), vel, retention); +} + #endif // IGUARD_move_h diff --git a/src/stage.c b/src/stage.c index e86176c28c..6dcccf4ba2 100644 --- a/src/stage.c +++ b/src/stage.c @@ -733,16 +733,25 @@ inline bool stage_should_yield(void) { return (global.boss && !boss_is_fleeing(global.boss)) || dialog_is_active(global.dialog); } -void stage_yield(void) { +int stage_yield(void) { + int num_yields = 0; + do { cotask_yield(NULL); + ++num_yields; } while(stage_should_yield()); + + return num_yields; } -void stage_wait(int delay) { +int stage_wait(int delay) { + int num_yields = 0; + while(delay-- > 0) { - stage_yield(); + num_yields += stage_yield(); } + + return num_yields; } static LogicFrameAction stage_logic_frame(void *arg) { diff --git a/src/stage.h b/src/stage.h index 5f8a3ae774..85aaf266f6 100644 --- a/src/stage.h +++ b/src/stage.h @@ -150,8 +150,8 @@ bool stage_is_cleared(void); void stage_unlock_bgm(const char *bgm); bool stage_should_yield(void); -void stage_yield(void); -void stage_wait(int delay); +int stage_yield(void); +int stage_wait(int delay); #include "stages/stage1.h" #include "stages/stage2.h" diff --git a/src/stages/corotest.c b/src/stages/corotest.c index b63befe326..002581241d 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -17,19 +17,19 @@ TASK(laserproj_death, { Projectile *p; }) { spawn_projectile_clear_effect(ARGS.p); } -TASK(laserize_proj, { Projectile *p; int t; }) { - TASK_BIND(ARGS.p); +TASK(laserize_proj, { BoxedProjectile p; int t; }) { + Projectile *p = TASK_BIND(ARGS.p); WAIT(ARGS.t); - complex pos = ARGS.p->pos; - double a = ARGS.p->angle; - Color clr = ARGS.p->color; - kill_projectile(ARGS.p); + complex pos = p->pos; + double a = p->angle; + Color clr = p->color; + kill_projectile(p); complex aim = 12 * cexp(I * a); create_laserline(pos, aim, 60, 80, &clr); - Projectile *p = PROJECTILE( + p = PROJECTILE( .pos = pos, .proto = pp_ball, .color = &clr, @@ -39,13 +39,15 @@ TASK(laserize_proj, { Projectile *p; int t; }) { INVOKE_TASK_WHEN(&p->events.killed, laserproj_death, p); } -TASK(wait_event_test, { Enemy *e; int rounds; int delay; int cnt; int cnt_inc; }) { +TASK(wait_event_test, { BoxedEnemy e; int rounds; int delay; int cnt; int cnt_inc; }) { // WAIT_EVENT yields until the event fires. // Returns true if the event was signaled, false if it was canceled. // All waiting tasks will resume right after either of those occur, in the // order they started waiting. - if(!WAIT_EVENT(&ARGS.e->events.killed)) { + Enemy *e = ENT_UNBOX(ARGS.e); + + if(!WAIT_EVENT(&e->events.killed)) { // Event canceled? Nothing to do here. log_debug("[%p] leave (canceled)", (void*)cotask_active()); return; @@ -53,7 +55,7 @@ TASK(wait_event_test, { Enemy *e; int rounds; int delay; int cnt; int cnt_inc; } // Event signaled. Since this is an enemy death event, e will be invalid // in the next frame. Let's save its position while we can. - complex pos = ARGS.e->pos; + complex pos = e->pos; while(ARGS.rounds--) { WAIT(ARGS.delay); @@ -81,8 +83,7 @@ TASK_WITH_FINALIZER(test_enemy, { double hp; complex pos; complex dir; struct { int x; } for_finalizer; }) { - Enemy *e = create_enemy1c(ARGS.pos, ARGS.hp, BigFairy, NULL, 0); - TASK_BIND(e); + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, ARGS.hp, BigFairy, NULL, 0)); INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { .life_fragment = 1, @@ -91,7 +92,7 @@ TASK_WITH_FINALIZER(test_enemy, { .points = 5, }); - INVOKE_TASK(wait_event_test, e, 3, 10, 15, 3); + INVOKE_TASK(wait_event_test, ENT_BOX(e), 3, 10, 15, 3); for(;;) { YIELD; @@ -122,7 +123,7 @@ TASK_WITH_FINALIZER(test_enemy, { .max_viewport_dist = 128, ); - INVOKE_TASK(laserize_proj, p, 40); + INVOKE_TASK(laserize_proj, ENT_BOX(p), 40); } WAIT(2); @@ -137,7 +138,7 @@ TASK_FINALIZER(test_enemy) { log_debug("finalizer called (x = %i)", ARGS.for_finalizer.x); } -TASK(stage_main, { int ignored; }) { +TASK(stage_main, NO_ARGS) { YIELD; stage_wait(30); @@ -152,7 +153,7 @@ TASK(stage_main, { int ignored; }) { } static void cotest_begin(void) { - INVOKE_TASK(stage_main, 0); + INVOKE_TASK(stage_main); } StageProcs corotest_procs = { diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index c078927c76..7acc35d9c9 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1237,14 +1237,178 @@ static int proj_rotate(Projectile *p, int t) { } #endif +TASK(burst_fairy, { complex pos; complex dir; }) { + Enemy *e = create_enemy1c(ARGS.pos, 700, Fairy, stage1_burst, ARGS.dir); + TASK_BIND_UNBOXED(e); +} + +struct circletoss_shared { + complex velocity; + complex exit_accel; + int exit_time; +}; + +TASK(circletoss_move, { BoxedEnemy e; struct circletoss_shared *shared; }) { + Enemy *e = TASK_BIND(ARGS.e); + + for(int i = 0;; ++i) { + e->pos += ARGS.shared->velocity; + + if(i >= ARGS.shared->exit_time) { + ARGS.shared->velocity += ARGS.shared->exit_accel; + } + + YIELD; + } +} + +TASK(circletoss_shoot_circle, { BoxedEnemy e; int duration; int interval; struct circletoss_shared *shared; }) { + Enemy *e = TASK_BIND(ARGS.e); + + int cnt = ARGS.duration / ARGS.interval; + double angle_step = 2 * M_PI / cnt; + + for(int i = 0; i < cnt; ++i) { + play_loop("shot1_loop"); + ARGS.shared->velocity *= 0.8; + + complex aim = cdir(angle_step * i); + + PROJECTILE( + .proto = pp_rice, + .pos = e->pos, + .color = RGB(0.6, 0.2, 0.7), + .move = move_asymptotic_simple(2 * aim, i * 0.5), + ); + + WAIT(ARGS.interval); + } +} + +TASK(circletoss_shoot_toss, { BoxedEnemy e; int times; int duration; int period; }) { + Enemy *e = TASK_BIND(ARGS.e); + + while(ARGS.times--) { + for(int i = ARGS.duration; i--;) { + play_loop("shot1_loop"); + + double aim_angle = carg(global.plr.pos - e->pos); + aim_angle += 0.05 * global.diff * nfrand(); + + complex aim = cdir(aim_angle); + aim *= 1 + frand() * 2; + + PROJECTILE( + .proto = pp_thickrice, + .pos = e->pos, + .color = RGB(0.2, 0.4, 0.8), + .move = move_asymptotic_simple(aim, 3), + ); + + WAIT(1); + } + + WAIT(ARGS.period - ARGS.duration); + } +} + +TASK(circletoss_fairy, { complex pos; complex velocity; complex exit_accel; int exit_time; }) { + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 1500, BigFairy, NULL, 0)); + + struct circletoss_shared shared = { + .velocity = ARGS.velocity, + .exit_accel = 0.03 * ARGS.exit_accel - 0.04 * I, + .exit_time = ARGS.exit_time, + }; + + INVOKE_TASK(circletoss_move, ENT_BOX(e), &shared); + + INVOKE_TASK_DELAYED(60, circletoss_shoot_circle, ENT_BOX(e), + .duration = 40, + .interval = 2 + (global.diff < D_Hard), + .shared = &shared + ); + + if(global.diff > D_Easy) { + INVOKE_TASK_DELAYED(90, circletoss_shoot_toss, ENT_BOX(e), + .times = 4, + .period = 150, + .duration = 5 + 7 * global.diff + ); + } + + for(;;) YIELD; +} + +// opening. projectile bursts +TASK(burst_fairies_1, NO_ARGS) { + for(int i = 3; i--;) { + INVOKE_TASK(burst_fairy, VIEWPORT_W/2 + 70, 1 + 0.6*I); + INVOKE_TASK(burst_fairy, VIEWPORT_W/2 - 70, -1 + 0.6*I); + stage_wait(25); + } +} + +// more bursts. fairies move / \ like +TASK(burst_fairies_2, NO_ARGS) { + for(int i = 3; i--;) { + double ofs = 70 + i * 40; + INVOKE_TASK(burst_fairy, ofs, 1 + 0.6*I); + stage_wait(15); + INVOKE_TASK(burst_fairy, VIEWPORT_W - ofs, -1 + 0.6*I); + stage_wait(15); + } +} + +// swirl, sine pass +TASK(sinepass_swirls, NO_ARGS) { + const int cnt = 32; + + for(int i = 0; i < cnt; ++i) { + tsrand_fill(2); + create_enemy2c(VIEWPORT_W*(i&1) + afrand(0)*100.0*I + 70.0*I, 100, Swirl, stage1_sinepass, 3.5*(1-2*(i&1)), afrand(1)*7.0*I); + stage_wait(20); + } +} + +// big fairies, circle + projectile toss +TASK(circletoss_fairies_1, NO_ARGS) { + for(int i = 0; i < 2; ++i) { + INVOKE_TASK(circletoss_fairy, + .pos = VIEWPORT_W * i + VIEWPORT_H / 3 * I, + .velocity = 2 - 4 * i - 0.3 * I, + .exit_accel = 1 - 2 * i, + .exit_time = (global.diff > D_Easy) ? 500 : 240 + ); + + stage_wait(50); + } +} + +TASK(stage_timeline, NO_ARGS) { + stage_start_bgm("stage1"); + stage_set_voltage_thresholds(50, 125, 300, 600); + YIELD; + + stage_wait(100); + INVOKE_TASK(burst_fairies_1); + stage_wait(140); + INVOKE_TASK(burst_fairies_2); + stage_wait(200); + INVOKE_TASK(sinepass_swirls); + stage_wait(20); + INVOKE_TASK(circletoss_fairies_1); +} + void stage1_events(void) { TIMER(&global.timer); AT(0) { - stage_start_bgm("stage1"); - stage_set_voltage_thresholds(50, 125, 300, 600); + INVOKE_TASK(stage_timeline); } + return; + #ifdef BULLET_TEST if(!global.projs) { PROJECTILE( From a81828215d43ad3cdc6cfa972931607aaf3f4aa6 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Thu, 25 Jul 2019 03:31:02 +0300 Subject: [PATCH 018/104] wip stage 1 progress --- src/stages/stage1_events.c | 92 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 88 insertions(+), 4 deletions(-) diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 7acc35d9c9..650e209bb1 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -11,6 +11,7 @@ #include "stage1_events.h" #include "global.h" #include "stagetext.h" +#include "common_tasks.h" static Dialog *stage1_dialog_pre_boss(void) { PlayerMode *pm = global.plr.mode; @@ -1238,8 +1239,47 @@ static int proj_rotate(Projectile *p, int t) { #endif TASK(burst_fairy, { complex pos; complex dir; }) { - Enemy *e = create_enemy1c(ARGS.pos, 700, Fairy, stage1_burst, ARGS.dir); - TASK_BIND_UNBOXED(e); + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 700, Fairy, NULL, ARGS.dir)); + + INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { + .points = 1, + .power = 1, + }); + + for(int i = 60; i--;) { + GO_TO(e, ARGS.pos + 120*I, 0.03); + YIELD; + } + + { + play_sound("shot1"); + int n = 1.5 * global.diff - 1; + + for(int i = -n; i <= n; i++) { + complex aim = cdir(carg(global.plr.pos - e->pos) + 0.2 * i); + + PROJECTILE( + .proto = pp_crystal, + .pos = e->pos, + .color = RGB(0.2, 0.3, 0.5), + .move = move_asymptotic_simple(aim * (2 + 0.5 * global.diff), 5), + ); + } + + e->moving = true; + e->dir = creal(e->args[0]) < 0; + + YIELD; + } + + complex v = ARGS.dir; + complex a = 0.04 * v; + + for(;;) { + e->pos += v; + v += a; + YIELD; + } } struct circletoss_shared { @@ -1340,6 +1380,45 @@ TASK(circletoss_fairy, { complex pos; complex velocity; complex exit_accel; int for(;;) YIELD; } +TASK(sinepass_swirl_move, { BoxedEnemy e; complex v; complex sv; }) { + Enemy *e = TASK_BIND(ARGS.e); + complex sv = ARGS.sv; + complex v = ARGS.v; + + for(;;) { + sv -= cimag(e->pos - e->pos0) * 0.03 * I; + e->pos += sv * 0.4 + v; + YIELD; + } +} + +TASK(sinepass_swirl, { complex pos; complex vel; complex svel; }) { + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 100, Swirl, NULL, 0)); + + INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { + .points = 1, + }); + + INVOKE_TASK(sinepass_swirl_move, ENT_BOX(e), ARGS.vel, ARGS.svel); + + WAIT(30 - 5 * global.diff); + + for(;;) { + play_sound("shot1"); + + complex aim = cnormalize(global.plr.pos - e->pos); + + PROJECTILE( + .proto = pp_ball, + .pos = e->pos, + .color = RGB(0.8, 0.8, 0.4), + .move = move_asymptotic_simple((1 + 0.5 * global.diff) * aim, 5), + ); + + WAIT(60 - 10 * global.diff); + } +} + // opening. projectile bursts TASK(burst_fairies_1, NO_ARGS) { for(int i = 3; i--;) { @@ -1365,8 +1444,11 @@ TASK(sinepass_swirls, NO_ARGS) { const int cnt = 32; for(int i = 0; i < cnt; ++i) { - tsrand_fill(2); - create_enemy2c(VIEWPORT_W*(i&1) + afrand(0)*100.0*I + 70.0*I, 100, Swirl, stage1_sinepass, 3.5*(1-2*(i&1)), afrand(1)*7.0*I); + double odd = i & 1; + double sign = 1 - 2 * odd; + + INVOKE_TASK(sinepass_swirl, VIEWPORT_W * odd + 100 * I, 3.5 * sign, 7.0 * I); + stage_wait(20); } } @@ -1390,6 +1472,8 @@ TASK(stage_timeline, NO_ARGS) { stage_set_voltage_thresholds(50, 125, 300, 600); YIELD; + INVOKE_TASK(sinepass_swirls); + stage_wait(100); INVOKE_TASK(burst_fairies_1); stage_wait(140); From 1b257accb0d68e156ac69fb74db65912731f6e78 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 27 Jul 2019 23:14:48 +0300 Subject: [PATCH 019/104] add generic move support for enemies --- src/enemy.c | 5 +++++ src/enemy.h | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/enemy.c b/src/enemy.c index 32c18fec58..66a5995b63 100644 --- a/src/enemy.c +++ b/src/enemy.c @@ -64,6 +64,11 @@ static inline int enemy_call_logic_rule(Enemy *e, int t) { if(e->logic_rule) { return e->logic_rule(e, t); + } else { + // TODO: backport unified left/right move animations from the obsolete `newart` branch + e->moving = cabs(e->move.velocity) >= 1; + e->dir = creal(e->move.velocity) < 0; + e->pos += move_update(&e->move); } return ACTION_NONE; diff --git a/src/enemy.h b/src/enemy.h index 8375561d2c..63a9655d6f 100644 --- a/src/enemy.h +++ b/src/enemy.h @@ -16,6 +16,7 @@ #include "objectpool.h" #include "entity.h" #include "coroutine.h" +#include "move.h" #ifdef DEBUG #define ENEMY_DEBUG @@ -40,7 +41,11 @@ struct Enemy { cmplx pos; cmplx pos0; cmplx pos0_visual; - cmplx args[RULE_ARGC]; + + union { + cmplx args[RULE_ARGC]; + MoveParams move; + }; EnemyLogicRule logic_rule; EnemyVisualRule visual_rule; From e7f9ad1ef8b7a804b6f1b82882878f285308ccc8 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 27 Jul 2019 23:38:32 +0300 Subject: [PATCH 020/104] stage 1 wip: simplify circletoss fairies --- src/coroutine.c | 2 +- src/stages/stage1_events.c | 40 +++++++------------------------------- 2 files changed, 8 insertions(+), 34 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index 70c733cb00..7d96748a73 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -13,7 +13,7 @@ #define CO_STACK_SIZE (64 * 1024) -#define TASK_DEBUG +// #define TASK_DEBUG // #define EVT_DEBUG #ifdef TASK_DEBUG diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 650e209bb1..91250a65da 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1282,27 +1282,7 @@ TASK(burst_fairy, { complex pos; complex dir; }) { } } -struct circletoss_shared { - complex velocity; - complex exit_accel; - int exit_time; -}; - -TASK(circletoss_move, { BoxedEnemy e; struct circletoss_shared *shared; }) { - Enemy *e = TASK_BIND(ARGS.e); - - for(int i = 0;; ++i) { - e->pos += ARGS.shared->velocity; - - if(i >= ARGS.shared->exit_time) { - ARGS.shared->velocity += ARGS.shared->exit_accel; - } - - YIELD; - } -} - -TASK(circletoss_shoot_circle, { BoxedEnemy e; int duration; int interval; struct circletoss_shared *shared; }) { +TASK(circletoss_shoot_circle, { BoxedEnemy e; int duration; int interval; }) { Enemy *e = TASK_BIND(ARGS.e); int cnt = ARGS.duration / ARGS.interval; @@ -1310,7 +1290,7 @@ TASK(circletoss_shoot_circle, { BoxedEnemy e; int duration; int interval; struct for(int i = 0; i < cnt; ++i) { play_loop("shot1_loop"); - ARGS.shared->velocity *= 0.8; + e->move.velocity *= 0.8; complex aim = cdir(angle_step * i); @@ -1355,18 +1335,11 @@ TASK(circletoss_shoot_toss, { BoxedEnemy e; int times; int duration; int period; TASK(circletoss_fairy, { complex pos; complex velocity; complex exit_accel; int exit_time; }) { Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 1500, BigFairy, NULL, 0)); - struct circletoss_shared shared = { - .velocity = ARGS.velocity, - .exit_accel = 0.03 * ARGS.exit_accel - 0.04 * I, - .exit_time = ARGS.exit_time, - }; - - INVOKE_TASK(circletoss_move, ENT_BOX(e), &shared); + e->move = move_linear(ARGS.velocity); INVOKE_TASK_DELAYED(60, circletoss_shoot_circle, ENT_BOX(e), .duration = 40, - .interval = 2 + (global.diff < D_Hard), - .shared = &shared + .interval = 2 + (global.diff < D_Hard) ); if(global.diff > D_Easy) { @@ -1377,6 +1350,9 @@ TASK(circletoss_fairy, { complex pos; complex velocity; complex exit_accel; int ); } + WAIT(ARGS.exit_time); + e->move.acceleration += 0.03 * ARGS.exit_accel - 0.04 * I; + for(;;) YIELD; } @@ -1472,8 +1448,6 @@ TASK(stage_timeline, NO_ARGS) { stage_set_voltage_thresholds(50, 125, 300, 600); YIELD; - INVOKE_TASK(sinepass_swirls); - stage_wait(100); INVOKE_TASK(burst_fairies_1); stage_wait(140); From 17d0bde7e7ea60a33a8296d6c5d22b1a43ab1b14 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 29 Jul 2019 16:48:44 +0300 Subject: [PATCH 021/104] stage 1 wip stuff --- src/coroutine.h | 4 +- src/difficulty.c | 8 ++ src/difficulty.h | 3 + src/enemy.c | 6 +- src/move.c | 12 ++- src/move.h | 4 +- src/projectile.c | 6 +- src/random.h | 10 +++ src/stages/stage1_events.c | 152 +++++++++++++++++++++++++++---------- src/util/miscmath.c | 12 +++ src/util/miscmath.h | 8 +- 11 files changed, 172 insertions(+), 53 deletions(-) diff --git a/src/coroutine.h b/src/coroutine.h index b7cfea30cf..9062baf131 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -172,7 +172,7 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { #define DECLARE_TASK(name, argstruct) \ DECLARE_TASK_EXPLICIT_LINKAGE(name, argstruct, static) /* require semicolon */ -/* define a task with static linkage (needs to be defined later) */ +/* define a task with static linkage (needs to be declared first) */ #define DEFINE_TASK(name) \ DEFINE_TASK_EXPLICIT_LINKAGE(name, static) @@ -266,11 +266,13 @@ DECLARE_EXTERN_TASK(_cancel_task_helper, { BoxedTask task; }); #define YIELD cotask_yield(NULL) #define WAIT(delay) do { int _delay = (delay); while(_delay-- > 0) YIELD; } while(0) #define WAIT_EVENT(e) cotask_wait_event((e), NULL) +#define STALL do { YIELD; } while(1) // to use these inside a coroutine, define a BREAK_CONDITION macro and a BREAK label. #define CHECK_BREAK do { if(BREAK_CONDITION) goto BREAK; } while(0) #define BYIELD do { YIELD; CHECK_BREAK; } while(0) #define BWAIT(frames) do { WAIT(frames); CHECK_BREAK; } while(0) +#define BSTALL do { BYIELD; } while(1) #define ENT_TYPE(typename, id) \ struct typename; \ diff --git a/src/difficulty.c b/src/difficulty.c index 16c3219a8a..b741b86dfd 100644 --- a/src/difficulty.c +++ b/src/difficulty.c @@ -10,6 +10,7 @@ #include "difficulty.h" #include "resource/resource.h" +#include "global.h" typedef struct DiffDef { const char *name; @@ -58,3 +59,10 @@ void difficulty_preload(void) { preload_resource(RES_SPRITE, difficulty_sprite_name(diff), RESF_PERMANENT); } } + +double difficulty_value(double easy, double normal, double hard, double lunatic) { + uint idx = global.diff - D_Easy; + double vals[NUM_SELECTABLE_DIFFICULTIES] = { easy, normal, hard, lunatic }; + assert(idx < ARRAY_SIZE(vals)); + return vals[idx]; +} diff --git a/src/difficulty.h b/src/difficulty.h index 7bf0315e60..2780d5ba0c 100644 --- a/src/difficulty.h +++ b/src/difficulty.h @@ -35,4 +35,7 @@ const Color* difficulty_color(Difficulty diff) void difficulty_preload(void); +double difficulty_value(double easy, double normal, double hard, double lunatic) + attr_pure; + #endif // IGUARD_difficulty_h diff --git a/src/enemy.c b/src/enemy.c index 66a5995b63..67da27b227 100644 --- a/src/enemy.c +++ b/src/enemy.c @@ -66,9 +66,9 @@ static inline int enemy_call_logic_rule(Enemy *e, int t) { return e->logic_rule(e, t); } else { // TODO: backport unified left/right move animations from the obsolete `newart` branch - e->moving = cabs(e->move.velocity) >= 1; - e->dir = creal(e->move.velocity) < 0; - e->pos += move_update(&e->move); + complex v = move_update(&e->pos, &e->move); + e->moving = cabs(v) >= 2; + e->dir = creal(v) < 0; } return ACTION_NONE; diff --git a/src/move.c b/src/move.c index d5cfefe118..0853b5a873 100644 --- a/src/move.c +++ b/src/move.c @@ -9,9 +9,19 @@ #include "taisei.h" #include "move.h" +#include "util/miscmath.h" -complex move_update(MoveParams *p) { +complex move_update(complex *restrict pos, MoveParams *restrict p) { complex v = p->velocity; + + *pos += v; p->velocity = p->acceleration + p->retention * v; + + if(p->attraction_norm || p->attraction) { + complex av = p->attraction_point - *pos; + p->velocity += p->attraction * av; + p->velocity += p->attraction_norm * cnormalize(av); + } + return v; } diff --git a/src/move.h b/src/move.h index e966cdbebb..e504d8a993 100644 --- a/src/move.h +++ b/src/move.h @@ -19,9 +19,11 @@ typedef struct MoveParams { complex velocity, acceleration, retention; + complex attraction, attraction_norm; + complex attraction_point; } MoveParams; -complex move_update(MoveParams *params); +complex move_update(complex *restrict pos, MoveParams *restrict params); MOVE_FUNC move_linear(complex vel) { return (MoveParams) { vel, 0, 1 }; diff --git a/src/projectile.c b/src/projectile.c index 671c5a9ee8..72a421030f 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -146,10 +146,10 @@ static inline int proj_call_rule(Projectile *p, int t) { ); } } else if(t >= 0) { - p->pos += move_update(&p->move); + complex v = move_update(&p->pos, &p->move); - if(p->pos != p->prevpos) { - p->angle = carg(p->pos - p->prevpos); + if(v) { + p->angle = carg(v); } } diff --git a/src/random.h b/src/random.h index 52653168b2..5cb3a4c8d6 100644 --- a/src/random.h +++ b/src/random.h @@ -50,4 +50,14 @@ double _anfrand(int idx, const char *file, uint line); #define TSRAND_ARRAY_LIMIT 16 +static inline attr_must_inline double rand_range(double rmin, double rmax) { + // TODO: ensure uniform distribution? + return frand() * (rmax - rmin) + rmin; +} + +static inline attr_must_inline double rand_angle(void) { + // TODO: ensure uniform distribution? + return frand() * (M_PI * 2); +} + #endif // IGUARD_random_h diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 91250a65da..c014c36528 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1246,38 +1246,32 @@ TASK(burst_fairy, { complex pos; complex dir; }) { .power = 1, }); - for(int i = 60; i--;) { - GO_TO(e, ARGS.pos + 120*I, 0.03); - YIELD; - } + e->move.attraction_point = ARGS.pos + 120*I; + e->move.attraction = 0.03; - { - play_sound("shot1"); - int n = 1.5 * global.diff - 1; + WAIT(60); - for(int i = -n; i <= n; i++) { - complex aim = cdir(carg(global.plr.pos - e->pos) + 0.2 * i); + play_sound("shot1"); + int n = 1.5 * global.diff - 1; - PROJECTILE( - .proto = pp_crystal, - .pos = e->pos, - .color = RGB(0.2, 0.3, 0.5), - .move = move_asymptotic_simple(aim * (2 + 0.5 * global.diff), 5), - ); - } + for(int i = -n; i <= n; i++) { + complex aim = cdir(carg(global.plr.pos - e->pos) + 0.2 * i); - e->moving = true; - e->dir = creal(e->args[0]) < 0; - - YIELD; + PROJECTILE( + .proto = pp_crystal, + .pos = e->pos, + .color = RGB(0.2, 0.3, 0.5), + .move = move_asymptotic_simple(aim * (2 + 0.5 * global.diff), 5), + ); } - complex v = ARGS.dir; - complex a = 0.04 * v; + WAIT(1); + + e->move.attraction = 0; + e->move.acceleration = 0.04 * ARGS.dir; + e->move.retention = 1; for(;;) { - e->pos += v; - v += a; YIELD; } } @@ -1286,7 +1280,7 @@ TASK(circletoss_shoot_circle, { BoxedEnemy e; int duration; int interval; }) { Enemy *e = TASK_BIND(ARGS.e); int cnt = ARGS.duration / ARGS.interval; - double angle_step = 2 * M_PI / cnt; + double angle_step = M_TAU / cnt; for(int i = 0; i < cnt; ++i) { play_loop("shot1_loop"); @@ -1316,7 +1310,7 @@ TASK(circletoss_shoot_toss, { BoxedEnemy e; int times; int duration; int period; aim_angle += 0.05 * global.diff * nfrand(); complex aim = cdir(aim_angle); - aim *= 1 + frand() * 2; + aim *= rand_range(1, 3); PROJECTILE( .proto = pp_thickrice, @@ -1337,6 +1331,11 @@ TASK(circletoss_fairy, { complex pos; complex velocity; complex exit_accel; int e->move = move_linear(ARGS.velocity); + INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { + .points = 2, + .power = 1, + }); + INVOKE_TASK_DELAYED(60, circletoss_shoot_circle, ENT_BOX(e), .duration = 40, .interval = 2 + (global.diff < D_Hard) @@ -1351,9 +1350,8 @@ TASK(circletoss_fairy, { complex pos; complex velocity; complex exit_accel; int } WAIT(ARGS.exit_time); - e->move.acceleration += 0.03 * ARGS.exit_accel - 0.04 * I; - - for(;;) YIELD; + e->move.acceleration += ARGS.exit_accel; + STALL; } TASK(sinepass_swirl_move, { BoxedEnemy e; complex v; complex sv; }) { @@ -1377,24 +1375,76 @@ TASK(sinepass_swirl, { complex pos; complex vel; complex svel; }) { INVOKE_TASK(sinepass_swirl_move, ENT_BOX(e), ARGS.vel, ARGS.svel); - WAIT(30 - 5 * global.diff); + WAIT(difficulty_value(25, 20, 15, 10)); + + int shot_interval = difficulty_value(50, 40, 30, 20); for(;;) { play_sound("shot1"); complex aim = cnormalize(global.plr.pos - e->pos); + aim *= difficulty_value(1.5, 2, 2.5, 3); PROJECTILE( .proto = pp_ball, .pos = e->pos, .color = RGB(0.8, 0.8, 0.4), - .move = move_asymptotic_simple((1 + 0.5 * global.diff) * aim, 5), + .move = move_asymptotic_simple(aim, 5), ); - WAIT(60 - 10 * global.diff); + WAIT(shot_interval); } } +TASK(circle_fairy, { complex pos; complex target_pos; }) { + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 1400, BigFairy, NULL, 0)); + + INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { + .points = 3, + .power = 2, + }); + + e->move.attraction = 0.005; + e->move.retention = 0.8; + e->move.attraction_point = ARGS.target_pos; + + WAIT(150); + + int shot_interval = difficulty_value(4, 4, 2, 2); + int shot_count = difficulty_value(10, 15, 20, 15); + int round_interval = 120 - shot_interval * shot_count; + + for(int round = 0; round < 4; ++round) { + double a_ofs = rand_angle(); + + for(int i = 0; i < shot_count; ++i) { + complex aim; + + aim = circle_dir_ofs((round & 1) ? i : shot_count - i, shot_count, a_ofs); + aim *= difficulty_value(1.9, 2.1, 2.3, 2.5); + + PROJECTILE( + .proto = pp_rice, + .pos = e->pos, + .color = RGB(0.6, 0.2, 0.7), + .move = move_asymptotic_simple(aim, i * 0.5), + ); + + play_loop("shot1_loop"); + WAIT(shot_interval); + } + + e->move.attraction_point += 30 * cdir(rand_angle()); + WAIT(round_interval); + } + + WAIT(10); + e->move.attraction = 0; + e->move.retention = 1; + e->move.acceleration = -0.04 * I * cdir(nfrand() * M_TAU / 12); + STALL; +} + // opening. projectile bursts TASK(burst_fairies_1, NO_ARGS) { for(int i = 3; i--;) { @@ -1416,16 +1466,14 @@ TASK(burst_fairies_2, NO_ARGS) { } // swirl, sine pass -TASK(sinepass_swirls, NO_ARGS) { - const int cnt = 32; +TASK(sinepass_swirls, { int cnt; double level; double dir; }) { + const int cnt = ARGS.cnt; + const double dir = ARGS.dir; + const complex pos = CMPLX(ARGS.dir < 0 ? VIEWPORT_W : 0, ARGS.level); for(int i = 0; i < cnt; ++i) { - double odd = i & 1; - double sign = 1 - 2 * odd; - - INVOKE_TASK(sinepass_swirl, VIEWPORT_W * odd + 100 * I, 3.5 * sign, 7.0 * I); - - stage_wait(20); + INVOKE_TASK(sinepass_swirl, pos, 3.5 * dir, 7.0 * I); + stage_wait(10); } } @@ -1435,7 +1483,7 @@ TASK(circletoss_fairies_1, NO_ARGS) { INVOKE_TASK(circletoss_fairy, .pos = VIEWPORT_W * i + VIEWPORT_H / 3 * I, .velocity = 2 - 4 * i - 0.3 * I, - .exit_accel = 1 - 2 * i, + .exit_accel = 0.03 * (1 - 2 * i) - 0.04 * I , .exit_time = (global.diff > D_Easy) ? 500 : 240 ); @@ -1448,14 +1496,34 @@ TASK(stage_timeline, NO_ARGS) { stage_set_voltage_thresholds(50, 125, 300, 600); YIELD; + for(;;) { + complex pos, tpos; + + if(frand() > 0.5) { + pos = VIEWPORT_W - 64; + } else { + pos = 64; + } + + tpos = rand_range(64, VIEWPORT_W - 64) + 200 * I; + + INVOKE_TASK(circle_fairy, pos, tpos); + WAIT(240); + } + return; + stage_wait(100); INVOKE_TASK(burst_fairies_1); stage_wait(140); INVOKE_TASK(burst_fairies_2); stage_wait(200); - INVOKE_TASK(sinepass_swirls); + INVOKE_TASK(sinepass_swirls, 18, 100, 1); stage_wait(20); INVOKE_TASK(circletoss_fairies_1); + stage_wait(160); + INVOKE_TASK(sinepass_swirls, 18, 150, -1); + stage_wait(160); + INVOKE_TASK(sinepass_swirls, 18, 100, 1); } void stage1_events(void) { diff --git a/src/util/miscmath.c b/src/util/miscmath.c index 539b640677..0bd9c5b2c5 100644 --- a/src/util/miscmath.c +++ b/src/util/miscmath.c @@ -230,6 +230,18 @@ float sanitize_scale(float scale) { return max(0.1, scale); } +double circle_angle(double index, double max_elements) { + return (index * (M_PI * 2.0)) / max_elements; +} + +complex circle_dir(double index, double max_elements) { + return cdir(circle_angle(index, max_elements)); +} + +complex circle_dir_ofs(double index, double max_elements, double ofs) { + return cdir(circle_angle(index, max_elements) + ofs); +} + float normpdf(float x, float sigma) { return 0.39894 * exp(-0.5 * pow(x, 2) / pow(sigma, 2)) / sigma; } diff --git a/src/util/miscmath.h b/src/util/miscmath.h index 4fca40a295..a90cf053fd 100644 --- a/src/util/miscmath.h +++ b/src/util/miscmath.h @@ -11,9 +11,10 @@ #include "taisei.h" -#define DEG2RAD (M_PI/180.0) -#define RAD2DEG (180.0/M_PI) +#define DEG2RAD (M_PI / 180.0) +#define RAD2DEG (180.0 / M_PI) #define GOLDEN_RATIO 1.618033988749895 +#define M_TAU (M_PI * 2) double lerp(double v0, double v1, double f) attr_const; cmplx clerp(cmplx v0, cmplx v1, double f) attr_const; @@ -48,6 +49,9 @@ float ftopow2(float x) attr_const; float smooth(float x) attr_const; float smoothreclamp(float x, float old_min, float old_max, float new_min, float new_max) attr_const; float sanitize_scale(float scale) attr_const; +double circle_angle(double index, double max_elements) attr_const; +complex circle_dir(double index, double max_elements) attr_const; +complex circle_dir_ofs(double index, double max_elements, double ofs) attr_const; uint64_t upow10(uint n) attr_const; uint digitcnt(uint64_t x) attr_const; float normpdf(float x, float sigma) attr_const; From f415435faa0167bb9d88f96447d26db44ea1fedc Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 4 Aug 2019 01:40:46 +0300 Subject: [PATCH 022/104] INLINE --- src/coroutine.h | 10 +++++----- src/move.h | 10 ++++------ src/random.h | 4 ++-- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/coroutine.h b/src/coroutine.h index 9062baf131..8b68d73531 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -74,7 +74,7 @@ CoTask *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg); // create uint cosched_run_tasks(CoSched *sched); // returns number of tasks ran void cosched_finish(CoSched *sched); -static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; } +INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; } #define TASK_ARGS_NAME(name) COARGS_##name #define TASK_ARGS(name) struct TASK_ARGS_NAME(name) @@ -94,7 +94,7 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { /* user-defined task body */ \ static void COTASK_##name(TASK_ARGS(name) *_cotask_args); \ /* called from the entry points before task body (inlined, hopefully) */ \ - static inline attr_must_inline void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args) /* require semicolon */ \ + INLINE void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args) /* require semicolon */ \ #define TASK_COMMON_DECLARATIONS(name, argstruct, linkage) \ /* produce warning if the task is never used */ \ @@ -163,7 +163,7 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { TASK_COMMON_PRIVATE_DECLARATIONS(name); \ TASK_COMMON_THUNK_DEFINITIONS(name, linkage) \ /* empty prologue */ \ - static inline attr_must_inline void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args) { } \ + INLINE void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args) { } \ /* begin task body definition */ \ TASK_COMMON_BEGIN_BODY_DEFINITION(name, linkage) @@ -197,14 +197,14 @@ static inline attr_must_inline void cosched_set_invoke_target(CoSched *sched) { /* error out if using TASK_FINALIZER without TASK_WITH_FINALIZER */ \ struct COTASK__##name##__not_declared_using_TASK_WITH_FINALIZER { char dummy; }; \ /* user-defined finalizer function */ \ - static inline attr_must_inline void COTASKFINALIZER_##name(TASK_ARGS(name) *_cotask_args); \ + INLINE void COTASKFINALIZER_##name(TASK_ARGS(name) *_cotask_args); \ /* real finalizer entry point */ \ static void *COTASKFINALIZERTHUNK_##name(void *arg) { \ COTASKFINALIZER_##name((TASK_ARGS(name)*)arg); \ return NULL; \ } \ /* prologue; sets up finalizer before executing task body */ \ - static inline attr_must_inline void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args) { \ + INLINE void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args) { \ cotask_set_finalizer(cotask_active(), COTASKFINALIZERTHUNK_##name, _cotask_args); \ } \ /* begin task body definition */ \ diff --git a/src/move.h b/src/move.h index e504d8a993..46379220fa 100644 --- a/src/move.h +++ b/src/move.h @@ -15,8 +15,6 @@ * Simple generalized projectile movement based on laochailan's idea */ -#define MOVE_FUNC static inline attr_must_inline MoveParams - typedef struct MoveParams { complex velocity, acceleration, retention; complex attraction, attraction_norm; @@ -25,20 +23,20 @@ typedef struct MoveParams { complex move_update(complex *restrict pos, MoveParams *restrict params); -MOVE_FUNC move_linear(complex vel) { +INLINE MoveParams move_linear(complex vel) { return (MoveParams) { vel, 0, 1 }; } -MOVE_FUNC move_accelerated(complex vel, complex accel) { +INLINE MoveParams move_accelerated(complex vel, complex accel) { return (MoveParams) { vel, accel, 1 }; } -MOVE_FUNC move_asymptotic(complex vel0, complex vel1, complex retention) { +INLINE MoveParams move_asymptotic(complex vel0, complex vel1, complex retention) { // NOTE: retention could be derived by something like: exp(-1 / halflife) return (MoveParams) { vel0, vel1 * (1 - retention), retention }; } -MOVE_FUNC move_asymptotic_simple(complex vel, double boost_factor) { +INLINE MoveParams move_asymptotic_simple(complex vel, double boost_factor) { // NOTE: this matches the old asymptotic rule semantics exactly double retention = 0.8; return move_asymptotic(vel * (1 + boost_factor * retention), vel, retention); diff --git a/src/random.h b/src/random.h index 5cb3a4c8d6..e01398ecec 100644 --- a/src/random.h +++ b/src/random.h @@ -50,12 +50,12 @@ double _anfrand(int idx, const char *file, uint line); #define TSRAND_ARRAY_LIMIT 16 -static inline attr_must_inline double rand_range(double rmin, double rmax) { +INLINE double rand_range(double rmin, double rmax) { // TODO: ensure uniform distribution? return frand() * (rmax - rmin) + rmin; } -static inline attr_must_inline double rand_angle(void) { +INLINE double rand_angle(void) { // TODO: ensure uniform distribution? return frand() * (M_PI * 2); } From 8ab381d498d52d81e8ddcd40de780668db077d09 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 11 Aug 2019 10:07:40 +0300 Subject: [PATCH 023/104] stage 1 misery --- src/stages/stage1_events.c | 59 +++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 17 deletions(-) diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index c014c36528..61172a9340 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1377,13 +1377,13 @@ TASK(sinepass_swirl, { complex pos; complex vel; complex svel; }) { WAIT(difficulty_value(25, 20, 15, 10)); - int shot_interval = difficulty_value(50, 40, 30, 20); + int shot_interval = difficulty_value(120, 40, 30, 20); for(;;) { play_sound("shot1"); complex aim = cnormalize(global.plr.pos - e->pos); - aim *= difficulty_value(1.5, 2, 2.5, 3); + aim *= difficulty_value(2, 2, 2.5, 3); PROJECTILE( .proto = pp_ball, @@ -1408,20 +1408,20 @@ TASK(circle_fairy, { complex pos; complex target_pos; }) { e->move.retention = 0.8; e->move.attraction_point = ARGS.target_pos; - WAIT(150); + WAIT(120); - int shot_interval = difficulty_value(4, 4, 2, 2); - int shot_count = difficulty_value(10, 15, 20, 15); + int shot_interval = 2; + int shot_count = difficulty_value(10, 10, 20, 25); int round_interval = 120 - shot_interval * shot_count; - for(int round = 0; round < 4; ++round) { + for(int round = 0; round < 2; ++round) { double a_ofs = rand_angle(); for(int i = 0; i < shot_count; ++i) { complex aim; aim = circle_dir_ofs((round & 1) ? i : shot_count - i, shot_count, a_ofs); - aim *= difficulty_value(1.9, 2.1, 2.3, 2.5); + aim *= difficulty_value(1.7, 2.0, 2.5, 2.5); PROJECTILE( .proto = pp_rice, @@ -1466,14 +1466,15 @@ TASK(burst_fairies_2, NO_ARGS) { } // swirl, sine pass -TASK(sinepass_swirls, { int cnt; double level; double dir; }) { - const int cnt = ARGS.cnt; - const double dir = ARGS.dir; - const complex pos = CMPLX(ARGS.dir < 0 ? VIEWPORT_W : 0, ARGS.level); +TASK(sinepass_swirls, { int duration; double level; double dir; }) { + int duration = ARGS.duration; + double dir = ARGS.dir; + complex pos = CMPLX(ARGS.dir < 0 ? VIEWPORT_W : 0, ARGS.level); + int delay = difficulty_value(30, 20, 15, 10); - for(int i = 0; i < cnt; ++i) { + for(int t = 0; t < duration; t += delay) { INVOKE_TASK(sinepass_swirl, pos, 3.5 * dir, 7.0 * I); - stage_wait(10); + stage_wait(delay); } } @@ -1491,11 +1492,34 @@ TASK(circletoss_fairies_1, NO_ARGS) { } } +TASK(schedule_swirls, NO_ARGS) { + INVOKE_TASK(sinepass_swirls, 180, 150, -1); + stage_wait(160); + INVOKE_TASK(sinepass_swirls, 180, 100, 1); +} + +TASK(circle_fairies_1, NO_ARGS) { + for(int j = 0; j < 3; ++j) { + INVOKE_TASK(circle_fairy, VIEWPORT_W - 64, VIEWPORT_W/2 - 100 + 200 * I + 128 * j); + stage_wait(60); + } + + stage_wait(90); + + for(int j = 0; j < 3; ++j) { + INVOKE_TASK(circle_fairy, 64, VIEWPORT_W/2 + 100 + 200 * I - 128 * j); + stage_wait(60); + } + + stage_wait(240); +} + TASK(stage_timeline, NO_ARGS) { stage_start_bgm("stage1"); stage_set_voltage_thresholds(50, 125, 300, 600); YIELD; + /* for(;;) { complex pos, tpos; @@ -1511,19 +1535,20 @@ TASK(stage_timeline, NO_ARGS) { WAIT(240); } return; + */ stage_wait(100); INVOKE_TASK(burst_fairies_1); stage_wait(140); INVOKE_TASK(burst_fairies_2); stage_wait(200); - INVOKE_TASK(sinepass_swirls, 18, 100, 1); + INVOKE_TASK(sinepass_swirls, 180, 100, 1); stage_wait(20); INVOKE_TASK(circletoss_fairies_1); stage_wait(160); - INVOKE_TASK(sinepass_swirls, 18, 150, -1); - stage_wait(160); - INVOKE_TASK(sinepass_swirls, 18, 100, 1); + INVOKE_TASK(schedule_swirls); + stage_wait(180); + INVOKE_TASK(circle_fairies_1); } void stage1_events(void) { From d0df3ec7e31e496467ca23c7abe23eb541119fc3 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Wed, 14 Aug 2019 18:24:17 +0300 Subject: [PATCH 024/104] still not feeling it --- src/stages/stage1_events.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 61172a9340..e8672a25ff 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1445,6 +1445,33 @@ TASK(circle_fairy, { complex pos; complex target_pos; }) { STALL; } +TASK(drop_swirl, { complex pos; complex vel; complex accel; }) { + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 100, Swirl, NULL, 0)); + + INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { + .points = 2, + }); + + e->move = move_accelerated(ARGS.vel, ARGS.accel); + + while(true) { + if(frand() > 0.997-0.007*(global.diff-1)) { + complex aim = cnormalize(global.plr.pos - e->pos); + aim *= 1 + 0.3 * global.diff + frand(); + + play_sound("shot1"); + PROJECTILE( + .proto = pp_ball, + .pos = e->pos, + .color = RGB(0.8, 0.8, 0.4), + .move = move_linear(aim), + ); + } + + YIELD; + } +} + // opening. projectile bursts TASK(burst_fairies_1, NO_ARGS) { for(int i = 3; i--;) { @@ -1492,6 +1519,13 @@ TASK(circletoss_fairies_1, NO_ARGS) { } } +TASK(drop_swirls, NO_ARGS) { + for(int i = 0; i < 25; ++i) { + INVOKE_TASK(drop_swirl, VIEWPORT_W/3, 3.0*I, 0.06); + stage_wait(20); + } +} + TASK(schedule_swirls, NO_ARGS) { INVOKE_TASK(sinepass_swirls, 180, 150, -1); stage_wait(160); @@ -1537,6 +1571,7 @@ TASK(stage_timeline, NO_ARGS) { return; */ + INVOKE_TASK(drop_swirls); stage_wait(100); INVOKE_TASK(burst_fairies_1); stage_wait(140); From f98352c1dd2ca7342b2c941d03c3e5eb9a1c10b9 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 17 Aug 2019 15:04:14 +0300 Subject: [PATCH 025/104] stage1 progress: pre-midboss section somewhat playable (tuned for lunatic) --- src/move.c | 8 ++- src/move.h | 3 +- src/stages/stage1_events.c | 125 +++++++++++++++++++++++++++++-------- src/util/miscmath.c | 10 +++ src/util/miscmath.h | 1 + 5 files changed, 119 insertions(+), 28 deletions(-) diff --git a/src/move.c b/src/move.c index 0853b5a873..6a6dbd01e1 100644 --- a/src/move.c +++ b/src/move.c @@ -17,10 +17,14 @@ complex move_update(complex *restrict pos, MoveParams *restrict p) { *pos += v; p->velocity = p->acceleration + p->retention * v; - if(p->attraction_norm || p->attraction) { + if(p->attraction) { complex av = p->attraction_point - *pos; + + if(p->attraction_max_speed) { + av = cclampabs(av, p->attraction_max_speed); + } + p->velocity += p->attraction * av; - p->velocity += p->attraction_norm * cnormalize(av); } return v; diff --git a/src/move.h b/src/move.h index 46379220fa..58aeb35030 100644 --- a/src/move.h +++ b/src/move.h @@ -17,8 +17,9 @@ typedef struct MoveParams { complex velocity, acceleration, retention; - complex attraction, attraction_norm; + complex attraction; complex attraction_point; + double attraction_max_speed; } MoveParams; complex move_update(complex *restrict pos, MoveParams *restrict params); diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index e8672a25ff..dcee796419 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1454,22 +1454,67 @@ TASK(drop_swirl, { complex pos; complex vel; complex accel; }) { e->move = move_accelerated(ARGS.vel, ARGS.accel); + int shot_interval = difficulty_value(120, 40, 30, 20); + + WAIT(20); + while(true) { - if(frand() > 0.997-0.007*(global.diff-1)) { - complex aim = cnormalize(global.plr.pos - e->pos); - aim *= 1 + 0.3 * global.diff + frand(); + complex aim = cnormalize(global.plr.pos - e->pos); + aim *= 1 + 0.3 * global.diff + frand(); + + play_sound("shot1"); + PROJECTILE( + .proto = pp_ball, + .pos = e->pos, + .color = RGB(0.8, 0.8, 0.4), + .move = move_linear(aim), + ); + + WAIT(shot_interval); + } +} + +TASK(multiburst_fairy, { complex pos; complex target_pos; complex exit_accel; }) { + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 1000, Fairy, NULL, 0)); + + INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { + .points = 3, + .power = 2, + }); + + e->move.attraction = 0.05; + // e->move.retention = 0.8; + e->move.attraction_point = ARGS.target_pos; + + WAIT(60); + + int burst_interval = difficulty_value(22, 20, 18, 16); + int bursts = 4; + + for(int i = 0; i < bursts; ++i) { + play_sound("shot1"); + int n = global.diff - 1; + + for(int j = -n; j <= n; j++) { + complex aim = cdir(carg(global.plr.pos - e->pos) + j / 5.0); + aim *= 2.5; - play_sound("shot1"); PROJECTILE( - .proto = pp_ball, + .proto = pp_crystal, .pos = e->pos, - .color = RGB(0.8, 0.8, 0.4), + .color = RGB(0.2, 0.3, 0.5), .move = move_linear(aim), ); } - YIELD; + WAIT(burst_interval); } + + WAIT(10); + e->move.attraction = 0; + e->move.retention = 1; + e->move.acceleration = ARGS.exit_accel; + STALL; } // opening. projectile bursts @@ -1492,6 +1537,14 @@ TASK(burst_fairies_2, NO_ARGS) { } } +TASK(burst_fairies_3, NO_ARGS) { + for(int i = 10; i--;) { + complex pos = VIEWPORT_W/2 - 200 * sin(1.17 * global.frames); + INVOKE_TASK(burst_fairy, pos, sign(nfrand())); + stage_wait(60); + } +} + // swirl, sine pass TASK(sinepass_swirls, { int duration; double level; double dir; }) { int duration = ARGS.duration; @@ -1519,33 +1572,51 @@ TASK(circletoss_fairies_1, NO_ARGS) { } } -TASK(drop_swirls, NO_ARGS) { - for(int i = 0; i < 25; ++i) { - INVOKE_TASK(drop_swirl, VIEWPORT_W/3, 3.0*I, 0.06); +TASK(drop_swirls, { int cnt; complex pos; complex vel; complex accel; }) { + for(int i = 0; i < ARGS.cnt; ++i) { + INVOKE_TASK(drop_swirl, ARGS.pos, ARGS.vel, ARGS.accel); stage_wait(20); } } TASK(schedule_swirls, NO_ARGS) { - INVOKE_TASK(sinepass_swirls, 180, 150, -1); - stage_wait(160); - INVOKE_TASK(sinepass_swirls, 180, 100, 1); + INVOKE_TASK(drop_swirls, 25, VIEWPORT_W/3, 2*I, 0.06); + stage_wait(400); + INVOKE_TASK(drop_swirls, 25, 200*I, 4, -0.06*I); } TASK(circle_fairies_1, NO_ARGS) { - for(int j = 0; j < 3; ++j) { - INVOKE_TASK(circle_fairy, VIEWPORT_W - 64, VIEWPORT_W/2 - 100 + 200 * I + 128 * j); - stage_wait(60); - } + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 3; ++j) { + INVOKE_TASK(circle_fairy, VIEWPORT_W - 64, VIEWPORT_W/2 - 100 + 200 * I + 128 * j); + stage_wait(60); + } - stage_wait(90); + stage_wait(90); - for(int j = 0; j < 3; ++j) { - INVOKE_TASK(circle_fairy, 64, VIEWPORT_W/2 + 100 + 200 * I - 128 * j); - stage_wait(60); + for(int j = 0; j < 3; ++j) { + INVOKE_TASK(circle_fairy, 64, VIEWPORT_W/2 + 100 + 200 * I - 128 * j); + stage_wait(60); + } + + stage_wait(240); } +} - stage_wait(240); +TASK(multiburst_fairies_1, NO_ARGS) { + for(int row = 0; row < 3; ++row) { + for(int col = 0; col < 5; ++col) { + log_debug("WTF %i %i", row, col); + complex pos = VIEWPORT_W * frand(); + complex target_pos = 64 + 64 * col + I * (64 * row + 100); + complex exit_accel = 0.02 * I + 0.03; + INVOKE_TASK(multiburst_fairy, pos, target_pos, exit_accel); + + WAIT(10); + } + + WAIT(120); + } } TASK(stage_timeline, NO_ARGS) { @@ -1578,12 +1649,16 @@ TASK(stage_timeline, NO_ARGS) { INVOKE_TASK(burst_fairies_2); stage_wait(200); INVOKE_TASK(sinepass_swirls, 180, 100, 1); - stage_wait(20); + stage_wait(40); INVOKE_TASK(circletoss_fairies_1); - stage_wait(160); - INVOKE_TASK(schedule_swirls); stage_wait(180); INVOKE_TASK(circle_fairies_1); + stage_wait(240); + INVOKE_TASK(schedule_swirls); + stage_wait(600); + INVOKE_TASK(burst_fairies_3); + stage_wait(700); + INVOKE_TASK(multiburst_fairies_1); } void stage1_events(void) { diff --git a/src/util/miscmath.c b/src/util/miscmath.c index 0bd9c5b2c5..f4803021dc 100644 --- a/src/util/miscmath.c +++ b/src/util/miscmath.c @@ -95,6 +95,16 @@ cmplx cnormalize(cmplx c) { return c / cabs(c); } +cmplx cclampabs(cmplx c, double maxabs) { + double a = cabs(c); + + if(a > maxabs) { + return maxabs * c / a; + } + + return c; +} + cmplx cdir(double angle) { // this is faster than cexp(I*angle) diff --git a/src/util/miscmath.h b/src/util/miscmath.h index a90cf053fd..bd51a88b40 100644 --- a/src/util/miscmath.h +++ b/src/util/miscmath.h @@ -39,6 +39,7 @@ void approach_asymptotic_p(double *val, double target, double rate, double epsil void fapproach_asymptotic_p(float *val, float target, float rate, float epsilon); void capproach_asymptotic_p(cmplx *val, cmplx target, double rate, double epsilon); cmplx cnormalize(cmplx c) attr_const; +cmplx cclampabs(cmplx c, double maxabs) attr_const; cmplx cdir(double angle) attr_const; double psin(double) attr_const; int sign(double) attr_const; From 25dbc8dead9008c2a19bf2e246e7d3a950bf653f Mon Sep 17 00:00:00 2001 From: laochailan Date: Sun, 25 Aug 2019 19:49:59 +0200 Subject: [PATCH 026/104] finish extra stage ;) ;) ;) --- src/stage.c | 1 + src/stage.h | 1 + src/stages/extra.c | 112 +++++++++++++++++++++++++++++++++++++++++ src/stages/extra.h | 18 +++++++ src/stages/meson.build | 1 + 5 files changed, 133 insertions(+) create mode 100644 src/stages/extra.c create mode 100644 src/stages/extra.h diff --git a/src/stage.c b/src/stage.c index 6dcccf4ba2..1c3ebc4ca3 100644 --- a/src/stage.c +++ b/src/stage.c @@ -123,6 +123,7 @@ void stage_init_array(void) { #endif add_stage(0xC0, &corotest_procs, STAGE_SPECIAL, "Coroutines!", "wow such concurrency very async", NULL, D_Any); + add_stage(0xC1, &extra_procs, STAGE_SPECIAL, "Extra Stage", "totally a good idea to create already", NULL, D_Extra); end_stages(); diff --git a/src/stage.h b/src/stage.h index 85aaf266f6..ab8085b667 100644 --- a/src/stage.h +++ b/src/stage.h @@ -159,5 +159,6 @@ int stage_wait(int delay); #include "stages/stage4.h" #include "stages/stage5.h" #include "stages/stage6.h" +#include "stages/extra.h" #endif // IGUARD_stage_h diff --git a/src/stages/extra.c b/src/stages/extra.c new file mode 100644 index 0000000000..0cf5cb7e91 --- /dev/null +++ b/src/stages/extra.c @@ -0,0 +1,112 @@ +/* + * This software is licensed under the terms of the MIT-License + * See COPYING for further information. + * --- + * Copyright (c) 2011-2019, Lukas Weber . + * Copyright (c) 2012-2019, Andrei Alexeyev . + */ + +#include "taisei.h" + +#include "extra.h" +#include "coroutine.h" +#include "global.h" +#include "common_tasks.h" + +TASK(glider_bullet, { + complex pos; double dir; double spacing; int interval; +}) { + const int nproj = 5; + const int nstep = 4; + BoxedProjectile projs[nproj]; + + const complex positions[][5] = { + {1+I, -1, 1, -I, 1-I}, + {2, I, 1, -I, 1-I}, + {2, 1+I, 2-I, -I, 1-I}, + {2, 0, 2-I, 1-I, 1-2*I}, + }; + + complex trans = cdir(ARGS.dir+1*M_PI/4)*ARGS.spacing; + + for(int i = 0; i < nproj; i++) { + projs[i] = ENT_BOX(PROJECTILE( + .pos = ARGS.pos+positions[0][i]*trans, + .proto = pp_ball, + .color = RGBA(0,0,1,1), + )); + } + + + for(int step = 0;; step++) { + int cur_step = step%nstep; + int next_step = (step+1)%nstep; + + int dead_count = 0; + for(int i = 0; i < nproj; i++) { + Projectile *p = ENT_UNBOX(projs[i]); + if(p == NULL) { + dead_count++; + } else { + p->move.retention = 1; + p->move.velocity = -(positions[cur_step][i]-(1-I)*(cur_step==3)-positions[next_step][i])*trans/ARGS.interval; + } + } + if(dead_count == nproj) { + return; + } + WAIT(ARGS.interval); + } +} + +TASK(glider_fairy, { + double hp; complex pos; complex dir; +}) { + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(VIEWPORT_W/2-10*I, ARGS.hp, BigFairy, NULL, 0)); + + INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { + .power = 3, + .points = 5, + }); + + + + YIELD; + + for(int i = 0; i < 80; ++i) { + e->pos += cnormalize(ARGS.pos-e->pos)*2; + YIELD; + } + + + for(int i = 0; i < 3; i++) { + double aim = carg(global.plr.pos - e->pos); + INVOKE_TASK(glider_bullet, e->pos, aim-0.7, 20, 6); + INVOKE_TASK(glider_bullet, e->pos, aim, 25, 3); + INVOKE_TASK(glider_bullet, e->pos, aim+0.7, 20, 6); + WAIT(80-20*i); + } + + for(;;) { + e->pos += 2*(creal(e->pos)-VIEWPORT_W/2 > 0)-1; + YIELD; + } +} + +TASK(stage_main, NO_ARGS) { + YIELD; + + for(int i;;i++) { + INVOKE_TASK_DELAYED(60, glider_fairy, 2000, CMPLX(VIEWPORT_W*(i&1), VIEWPORT_H*0.5), 3*I); + stage_wait(50+100*(i&1)); + } +} + +static void extra_begin(void) { + INVOKE_TASK(stage_main); +} + + +StageProcs extra_procs = { + .begin = extra_begin, +}; diff --git a/src/stages/extra.h b/src/stages/extra.h new file mode 100644 index 0000000000..ae48e60313 --- /dev/null +++ b/src/stages/extra.h @@ -0,0 +1,18 @@ +/* + * This software is licensed under the terms of the MIT-License + * See COPYING for further information. + * --- + * Copyright (c) 2011-2019, Lukas Weber . + * Copyright (c) 2012-2019, Andrei Alexeyev . + */ + +#ifndef IGUARD_stages_extra_h +#define IGUARD_stages_extra_h + +#include "taisei.h" +#include "stage.h" + +extern StageProcs extra_procs; + +#endif // IGUARD_stages_extra_h + diff --git a/src/stages/meson.build b/src/stages/meson.build index 57ef2b9490..c949229458 100644 --- a/src/stages/meson.build +++ b/src/stages/meson.build @@ -12,6 +12,7 @@ stages_src = files( 'stage5_events.c', 'stage6.c', 'stage6_events.c', + 'extra.c', ) if is_developer_build From b8d5ac005b71562d254f7ecd1eac292b4552d89a Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 31 Aug 2019 00:59:41 +0300 Subject: [PATCH 027/104] implement some infrastructure for coroutine bosses --- src/boss.c | 43 +++++++++++++++++++++++++++++++++++--- src/boss.h | 13 ++++++++++++ src/coroutine.c | 6 ++++++ src/coroutine.h | 8 +++++++ src/stages/stage1_events.c | 39 ++++++++++++++++++---------------- 5 files changed, 88 insertions(+), 21 deletions(-) diff --git a/src/boss.c b/src/boss.c index a7201772f3..4539acd586 100644 --- a/src/boss.c +++ b/src/boss.c @@ -952,12 +952,18 @@ static int attack_end_delay(Boss *boss) { return delay; } +static void boss_call_rule(Boss *boss, int t) { + if(boss->current->rule) { + boss->current->rule(boss, t); + } +} + void boss_finish_current_attack(Boss *boss) { AttackType t = boss->current->type; boss->current->hp = 0; boss->current->finished = true; - boss->current->rule(boss, EVENT_DEATH); + boss_call_rule(boss, EVENT_DEATH); aniplayer_soft_switch(&boss->ani,"main",0); @@ -992,6 +998,8 @@ void boss_finish_current_attack(Boss *boss) { boss->current->endtime = global.frames + attack_end_delay(boss); boss->current->endtime_undelayed = global.frames; + + coevent_signal_once(&boss->current->events.finished); } void process_boss(Boss **pboss) { @@ -1024,6 +1032,12 @@ void process_boss(Boss **pboss) { bool extra = boss->current->type == AT_ExtraSpell; bool over = boss->current->finished && global.frames >= boss->current->endtime; + if(time == 0) { + coevent_signal_once(&boss->current->events.started); + } + + move_update(&boss->pos, &boss->move); + if(!boss->current->endtime) { int remaining = boss->current->timeout - time; @@ -1031,7 +1045,7 @@ void process_boss(Boss **pboss) { play_sound(remaining <= 6*FPS ? "timeout2" : "timeout1"); } - boss->current->rule(boss, time); + boss_call_rule(boss, time); } if(extra) { @@ -1179,6 +1193,11 @@ void process_boss(Boss **pboss) { } log_debug("Current attack [%s] is over", boss->current->name); + COEVENT_CANCEL_ARRAY(boss->current->events); + + if(ATTACK_IS_SPELL(boss->current->type)) { + boss_reset_motion(boss); + } for(;;) { if(boss->current == boss->attacks + boss->acount - 1) { @@ -1193,7 +1212,12 @@ void process_boss(Boss **pboss) { if(boss->current->type == AT_Immediate) { boss->current->starttime = global.frames; - boss->current->rule(boss, EVENT_BIRTH); + boss_call_rule(boss, EVENT_BIRTH); + + coevent_signal_once(&boss->current->events.initiated); + coevent_signal_once(&boss->current->events.started); + coevent_signal_once(&boss->current->events.finished); + COEVENT_CANCEL_ARRAY(boss->current->events); if(dialog_is_active(global.dialog)) { break; @@ -1203,6 +1227,7 @@ void process_boss(Boss **pboss) { } if(boss_should_skip_attack(boss, boss->current)) { + COEVENT_CANCEL_ARRAY(boss->current->events); continue; } @@ -1212,6 +1237,14 @@ void process_boss(Boss **pboss) { } } +void boss_reset_motion(Boss *boss) { + boss->move.acceleration = 0; + boss->move.attraction = 0; + boss->move.attraction_max_speed = 0; + boss->move.attraction_point = 0; + boss->move.retention = 0.8; +} + static void boss_death_effect_draw_overlay(Projectile *p, int t) { FBPair *framebuffers = stage_get_fbpair(FBPAIR_FG); r_framebuffer(framebuffers->front); @@ -1265,6 +1298,7 @@ void boss_death(Boss **boss) { } static void free_attack(Attack *a) { + COEVENT_CANCEL_ARRAY(a->events); free(a->name); } @@ -1322,6 +1356,7 @@ void boss_start_attack(Boss *b, Attack *a) { } stage_clear_hazards(CLEAR_HAZARDS_ALL | CLEAR_HAZARDS_FORCE); + coevent_signal_once(&a->events.initiated); } Attack* boss_add_attack(Boss *boss, AttackType type, char *name, float timeout, int hp, BossRule rule, BossRule draw_rule) { @@ -1343,6 +1378,8 @@ Attack* boss_add_attack(Boss *boss, AttackType type, char *name, float timeout, a->starttime = global.frames; + COEVENT_INIT_ARRAY(a->events); + return a; } diff --git a/src/boss.h b/src/boss.h index b397eb9337..4cf58a28ed 100644 --- a/src/boss.h +++ b/src/boss.h @@ -17,6 +17,7 @@ #include "color.h" #include "projectile.h" #include "entity.h" +#include "coroutine.h" #define BOSS_HURT_RADIUS 16 @@ -100,6 +101,12 @@ typedef struct Attack { BossRule rule; BossRule draw_rule; + COEVENTS_ARRAY( + initiated, + started, + finished + ) events; + AttackInfo *info; // NULL for attacks created directly through boss_add_attack } Attack; @@ -127,6 +134,8 @@ typedef struct Boss { BossRule global_rule; + MoveParams move; + // These are publicly accessible damage multipliers *you* can use to buff your spells. // Just change the numbers. global.shake_view style. 1.0 is the default. // If a new attack starts, they are reset. Nothing can go wrong! @@ -147,6 +156,8 @@ typedef struct Boss { float plrproximity_opacity; float attack_timer; } hud; + + COEVENTS_ARRAY(defeated); } Boss; Boss* create_boss(char *name, char *ani, cmplx pos) attr_nonnull(1, 2) attr_returns_nonnull; @@ -175,6 +186,8 @@ bool boss_is_vulnerable(Boss *boss) attr_nonnull(1); void boss_death(Boss **boss) attr_nonnull(1); +void boss_reset_motion(Boss *boss) attr_nonnull(1); + void boss_preload(void); #define BOSS_DEFAULT_SPAWN_POS (VIEWPORT_W * 0.5 - I * VIEWPORT_H * 0.5) diff --git a/src/coroutine.c b/src/coroutine.c index 7d96748a73..69f5984457 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -285,6 +285,12 @@ void coevent_cancel(CoEvent* evt) { evt->subscribers = NULL; } +void _coevent_array_action(uint num, CoEvent *events, void (*func)(CoEvent*)) { + for(uint i = 0; i < num; ++i) { + func(events + i); + } +} + void cosched_init(CoSched *sched) { memset(sched, 0, sizeof(*sched)); } diff --git a/src/coroutine.h b/src/coroutine.h index 8b68d73531..b2bb2e84ed 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -69,6 +69,14 @@ void coevent_signal(CoEvent *evt); void coevent_signal_once(CoEvent *evt); void coevent_cancel(CoEvent *evt); +void _coevent_array_action(uint num, CoEvent *events, void (*func)(CoEvent*)); + +#define COEVENTS_ARRAY(...) union { CoEvent _first_event_; struct { CoEvent __VA_ARGS__; }; } + +#define COEVENT_ARRAY_ACTION(func, array) (_coevent_array_action(sizeof(array)/sizeof(CoEvent), &((array)._first_event_), func)) +#define COEVENT_INIT_ARRAY(array) COEVENT_ARRAY_ACTION(coevent_init, array) +#define COEVENT_CANCEL_ARRAY(array) COEVENT_ARRAY_ACTION(coevent_cancel, array) + void cosched_init(CoSched *sched); CoTask *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg); // creates and runs the task, schedules it for resume on cosched_run_tasks if it's still alive uint cosched_run_tasks(CoSched *sched); // returns number of tasks ran diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index dcee796419..323c343c97 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1619,10 +1619,21 @@ TASK(multiburst_fairies_1, NO_ARGS) { } } +TASK(spawn_midboss, NO_ARGS) { + Boss *cirno = stage1_spawn_cirno(VIEWPORT_W + 220 + 30.0*I); + + boss_add_attack(cirno, AT_Move, "Introduction", 2, 0, cirno_intro, NULL); + boss_add_attack(cirno, AT_Normal, "Icy Storm", 20, 24000, cirno_icy, NULL); + boss_add_attack_from_info(cirno, &stage1_spells.mid.perfect_freeze, false); + boss_add_attack(cirno, AT_Move, "Flee", 5, 0, cirno_mid_flee, NULL); + + boss_start_attack(cirno, cirno->attacks); + global.boss = cirno; +} + TASK(stage_timeline, NO_ARGS) { stage_start_bgm("stage1"); stage_set_voltage_thresholds(50, 125, 300, 600); - YIELD; /* for(;;) { @@ -1642,23 +1653,15 @@ TASK(stage_timeline, NO_ARGS) { return; */ - INVOKE_TASK(drop_swirls); - stage_wait(100); - INVOKE_TASK(burst_fairies_1); - stage_wait(140); - INVOKE_TASK(burst_fairies_2); - stage_wait(200); - INVOKE_TASK(sinepass_swirls, 180, 100, 1); - stage_wait(40); - INVOKE_TASK(circletoss_fairies_1); - stage_wait(180); - INVOKE_TASK(circle_fairies_1); - stage_wait(240); - INVOKE_TASK(schedule_swirls); - stage_wait(600); - INVOKE_TASK(burst_fairies_3); - stage_wait(700); - INVOKE_TASK(multiburst_fairies_1); + INVOKE_TASK_DELAYED(100, burst_fairies_1); + INVOKE_TASK_DELAYED(240, burst_fairies_2); + INVOKE_TASK_DELAYED(440, sinepass_swirls, 180, 100, 1); + INVOKE_TASK_DELAYED(480, circletoss_fairies_1); + INVOKE_TASK_DELAYED(660, circle_fairies_1); + INVOKE_TASK_DELAYED(900, schedule_swirls); + INVOKE_TASK_DELAYED(1500, burst_fairies_3); + INVOKE_TASK_DELAYED(2200, multiburst_fairies_1); + INVOKE_TASK_DELAYED(2700, spawn_midboss); } void stage1_events(void) { From 64be0dad6b9f8ae31511ebf329f4afa58823b8b6 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 1 Sep 2019 03:23:36 +0300 Subject: [PATCH 028/104] further task-boss infrastructure WIP --- src/boss.c | 58 +++++++++++++++----- src/boss.h | 41 +++++++++----- src/common_tasks.c | 24 +++++++++ src/common_tasks.h | 14 +++++ src/coroutine.h | 106 +++++++++++++++++++++++++------------ src/move.h | 7 +++ src/stage.c | 2 +- src/stages/stage1.c | 2 +- src/stages/stage1_events.c | 48 ++++++++++++++--- src/stages/stage1_events.h | 2 + 10 files changed, 237 insertions(+), 67 deletions(-) diff --git a/src/boss.c b/src/boss.c index 4539acd586..4eadf2cda4 100644 --- a/src/boss.c +++ b/src/boss.c @@ -1036,8 +1036,6 @@ void process_boss(Boss **pboss) { coevent_signal_once(&boss->current->events.started); } - move_update(&boss->pos, &boss->move); - if(!boss->current->endtime) { int remaining = boss->current->timeout - time; @@ -1048,6 +1046,8 @@ void process_boss(Boss **pboss) { boss_call_rule(boss, time); } + move_update(&boss->pos, &boss->move); + if(extra) { float base = 0.2; float ampl = 0.2; @@ -1193,11 +1193,10 @@ void process_boss(Boss **pboss) { } log_debug("Current attack [%s] is over", boss->current->name); - COEVENT_CANCEL_ARRAY(boss->current->events); - if(ATTACK_IS_SPELL(boss->current->type)) { - boss_reset_motion(boss); - } + boss_reset_motion(boss); + coevent_signal_once(&boss->current->events.completed); + COEVENT_CANCEL_ARRAY(boss->current->events); for(;;) { if(boss->current == boss->attacks + boss->acount - 1) { @@ -1217,6 +1216,7 @@ void process_boss(Boss **pboss) { coevent_signal_once(&boss->current->events.initiated); coevent_signal_once(&boss->current->events.started); coevent_signal_once(&boss->current->events.finished); + coevent_signal_once(&boss->current->events.completed); COEVENT_CANCEL_ARRAY(boss->current->events); if(dialog_is_active(global.dialog)) { @@ -1311,11 +1311,11 @@ void free_boss(Boss *boss) { boss_set_portrait(boss, NULL, NULL); aniplayer_free(&boss->ani); free(boss->name); - free(boss->attacks); free(boss); } void boss_start_attack(Boss *b, Attack *a) { + b->current = a; log_debug("%s", a->name); StageInfo *i; @@ -1335,7 +1335,7 @@ void boss_start_attack(Boss *b, Attack *a) { b->shot_damage_multiplier = 1.0; a->starttime = global.frames + (a->type == AT_ExtraSpell? ATTACK_START_DELAY_EXTRA : ATTACK_START_DELAY); - a->rule(b, EVENT_BIRTH); + boss_call_rule(b, EVENT_BIRTH); if(ATTACK_IS_SPELL(a->type)) { play_sound(a->type == AT_ExtraSpell ? "charge_extra" : "charge_generic"); @@ -1356,15 +1356,16 @@ void boss_start_attack(Boss *b, Attack *a) { } stage_clear_hazards(CLEAR_HAZARDS_ALL | CLEAR_HAZARDS_FORCE); + boss_reset_motion(b); coevent_signal_once(&a->events.initiated); } -Attack* boss_add_attack(Boss *boss, AttackType type, char *name, float timeout, int hp, BossRule rule, BossRule draw_rule) { - boss->attacks = realloc(boss->attacks, sizeof(Attack)*(++boss->acount)); - Attack *a = &boss->attacks[boss->acount-1]; - memset(a, 0, sizeof(Attack)); +Attack *boss_add_attack(Boss *boss, AttackType type, char *name, float timeout, int hp, BossRule rule, BossRule draw_rule) { + assert(boss->acount < BOSS_MAX_ATTACKS); - boss->current = &boss->attacks[0]; + Attack *a = &boss->attacks[boss->acount]; + boss->acount += 1; + memset(a, 0, sizeof(Attack)); a->type = type; a->name = strdup(name); @@ -1383,6 +1384,32 @@ Attack* boss_add_attack(Boss *boss, AttackType type, char *name, float timeout, return a; } +TASK(attack_task_helper, { + BossAttackTask task; + BossAttackTaskArgs task_args; +}) { + // NOTE: We could do INVOKE_TASK_INDIRECT here, but that's a bit wasteful. + // A better idea than both that and this contraption would be to come up + // with an INVOKE_TASK_INDIRECT_WHEN. + ARGS.task._cotask_BossAttack_thunk(&ARGS.task_args); +} + +static void setup_attack_task(Boss *boss, Attack *a, BossAttackTask task) { + INVOKE_TASK_WHEN(&a->events.initiated, attack_task_helper, + .task = task, + .task_args = { + .boss = ENT_BOX(boss), + .attack = a + } + ); +} + +Attack *boss_add_attack_task(Boss *boss, AttackType type, char *name, float timeout, int hp, BossAttackTask task, BossRule draw_rule) { + Attack *a = boss_add_attack(boss, type, name, timeout, hp, NULL, draw_rule); + setup_attack_task(boss, a, task); + return a; +} + void boss_set_attack_bonus(Attack *a, int rank) { if(!ATTACK_IS_SPELL(a->type)) { return; @@ -1433,6 +1460,11 @@ Attack* boss_add_attack_from_info(Boss *boss, AttackInfo *info, char move) { Attack *a = boss_add_attack(boss, info->type, info->name, info->timeout, info->hp, info->rule, info->draw_rule); a->info = info; boss_set_attack_bonus(a, info->bonus_rank); + + if(info->task._cotask_BossAttack_thunk) { + setup_attack_task(boss, a, info->task); + } + return a; } diff --git a/src/boss.h b/src/boss.h index 4cf58a28ed..348e2a346d 100644 --- a/src/boss.h +++ b/src/boss.h @@ -20,6 +20,7 @@ #include "coroutine.h" #define BOSS_HURT_RADIUS 16 +#define BOSS_MAX_ATTACKS 24 enum { ATTACK_START_DELAY = 60, @@ -33,7 +34,9 @@ enum { BOSS_DEATH_DELAY = 120, }; -struct Boss; +typedef struct Boss Boss; +typedef struct Attack Attack; +typedef struct AttackInfo AttackInfo; typedef void (*BossRule)(struct Boss*, int time) attr_nonnull(1); @@ -48,7 +51,15 @@ typedef enum AttackType { #define ATTACK_IS_SPELL(a) ((a) == AT_Spellcard || (a) == AT_SurvivalSpell || (a) == AT_ExtraSpell) -typedef struct AttackInfo { +DEFINE_TASK_INTERFACE(BossAttack, { + BoxedBoss boss; + Attack *attack; +}); + +typedef TASK_INDIRECT_TYPE(BossAttack) BossAttackTask; +typedef TASK_IFACE_ARGS_TYPE(BossAttack) BossAttackTaskArgs; + +struct AttackInfo { /* HOW TO SET UP THE IDMAP FOR DUMMIES @@ -79,9 +90,12 @@ typedef struct AttackInfo { cmplx pos_dest; int bonus_rank; -} AttackInfo; -typedef struct Attack { + // TODO: when we no longer need rule, this shall take its place + TASK_INDIRECT_TYPE(BossAttack) task; +}; + +struct Attack { char *name; AttackType type; @@ -102,19 +116,20 @@ typedef struct Attack { BossRule draw_rule; COEVENTS_ARRAY( - initiated, - started, - finished + initiated, // before start delay + started, // after start delay + finished, // before end delay + completed // after end delay ) events; AttackInfo *info; // NULL for attacks created directly through boss_add_attack -} Attack; +}; -typedef struct Boss { - ENTITY_INTERFACE_NAMED(struct Boss, ent); +struct Boss { + ENTITY_INTERFACE_NAMED(Boss, ent); cmplx pos; - Attack *attacks; + Attack attacks[BOSS_MAX_ATTACKS]; Attack *current; char *name; @@ -158,7 +173,7 @@ typedef struct Boss { } hud; COEVENTS_ARRAY(defeated); -} Boss; +}; Boss* create_boss(char *name, char *ani, cmplx pos) attr_nonnull(1, 2) attr_returns_nonnull; void free_boss(Boss *boss) attr_nonnull(1); @@ -171,6 +186,8 @@ void draw_boss_fake_overlay(Boss *boss) attr_nonnull(1); Attack* boss_add_attack(Boss *boss, AttackType type, char *name, float timeout, int hp, BossRule rule, BossRule draw_rule) attr_nonnull(1) attr_returns_nonnull; +Attack *boss_add_attack_task(Boss *boss, AttackType type, char *name, float timeout, int hp, BossAttackTask task, BossRule draw_rule) + attr_nonnull(1) attr_returns_nonnull; Attack* boss_add_attack_from_info(Boss *boss, AttackInfo *info, char move) attr_nonnull(1, 2) attr_returns_nonnull; void boss_set_attack_bonus(Attack *a, int rank) attr_nonnull(1); diff --git a/src/common_tasks.c b/src/common_tasks.c index 206677a771..0eeb740141 100644 --- a/src/common_tasks.c +++ b/src/common_tasks.c @@ -20,3 +20,27 @@ DEFINE_EXTERN_TASK(common_drop_items) { } } } + +void common_move_loop(complex *restrict pos, MoveParams *restrict mp) { + for(;;) { + move_update(pos, mp); + YIELD; + } +} + +DEFINE_EXTERN_TASK(common_move) { + if(ARGS.ent.ent) { + TASK_BIND(ARGS.ent); + } + + MoveParams p = ARGS.move_params; + common_move_loop(ARGS.pos, &p); +} + +DEFINE_EXTERN_TASK(common_move_ext) { + if(ARGS.ent.ent) { + TASK_BIND(ARGS.ent); + } + + common_move_loop(ARGS.pos, ARGS.move_params); +} diff --git a/src/common_tasks.h b/src/common_tasks.h index 28bc63120e..e352001f41 100644 --- a/src/common_tasks.h +++ b/src/common_tasks.h @@ -13,10 +13,24 @@ #include "coroutine.h" #include "item.h" +#include "move.h" +#include "entity.h" DECLARE_EXTERN_TASK( common_drop_items, { complex *pos; ItemCounts items; } ); +DECLARE_EXTERN_TASK( + common_move, + { complex *pos; MoveParams move_params; BoxedEntity ent; } +); + +DECLARE_EXTERN_TASK( + common_move_ext, + { complex *pos; MoveParams *move_params; BoxedEntity ent; } +); + +void common_move_loop(complex *restrict pos, MoveParams *restrict mp); + #endif // IGUARD_common_tasks_h diff --git a/src/coroutine.h b/src/coroutine.h index b2bb2e84ed..09296e1101 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -84,8 +84,7 @@ void cosched_finish(CoSched *sched); INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; } -#define TASK_ARGS_NAME(name) COARGS_##name -#define TASK_ARGS(name) struct TASK_ARGS_NAME(name) +#define TASK_ARGS_TYPE(name) COARGS_##name #define TASK_ARGSDELAY_NAME(name) COARGSDELAY_##name #define TASK_ARGSDELAY(name) struct TASK_ARGSDELAY_NAME(name) @@ -93,26 +92,38 @@ INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; #define TASK_ARGSCOND_NAME(name) COARGSCOND_##name #define TASK_ARGSCOND(name) struct TASK_ARGSCOND_NAME(name) +#define TASK_IFACE_NAME(iface, suffix) COTASKIFACE_##iface##_##suffix +#define TASK_IFACE_ARGS_TYPE(iface) TASK_IFACE_NAME(iface, ARGS) +#define TASK_INDIRECT_TYPE(iface) TASK_IFACE_NAME(iface, HANDLE) + +#define DEFINE_TASK_INTERFACE(iface, argstruct) \ + typedef TASK_ARGS_STRUCT(argstruct) TASK_IFACE_ARGS_TYPE(iface); \ + typedef struct { void *(*_cotask_##iface##_thunk)(void*); } TASK_INDIRECT_TYPE(iface) /* require semicolon */ + +#define TASK_INDIRECT_TYPE_ALIAS(task) TASK_IFACE_NAME(task, HANDLEALIAS) + #define ARGS (*_cotask_args) #define NO_ARGS { char _dummy_0; } -#define ARGS_STRUCT(argstruct) { struct argstruct; char _dummy_1; } +#define TASK_ARGS_STRUCT(argstruct) struct { struct argstruct; char _dummy_1; } #define TASK_COMMON_PRIVATE_DECLARATIONS(name) \ /* user-defined task body */ \ - static void COTASK_##name(TASK_ARGS(name) *_cotask_args); \ + static void COTASK_##name(TASK_ARGS_TYPE(name) *_cotask_args); \ /* called from the entry points before task body (inlined, hopefully) */ \ - INLINE void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args) /* require semicolon */ \ + INLINE void COTASKPROLOGUE_##name(TASK_ARGS_TYPE(name) *_cotask_args) /* require semicolon */ \ -#define TASK_COMMON_DECLARATIONS(name, argstruct, linkage) \ +#define TASK_COMMON_DECLARATIONS(name, argstype, handletype, linkage) \ /* produce warning if the task is never used */ \ linkage char COTASK_UNUSED_CHECK_##name; \ + /* type of indirect handle to a compatible task */ \ + typedef handletype TASK_INDIRECT_TYPE_ALIAS(name); \ /* user-defined type of args struct */ \ - struct TASK_ARGS_NAME(name) ARGS_STRUCT(argstruct); \ + typedef argstype TASK_ARGS_TYPE(name); \ /* type of internal args struct for INVOKE_TASK_DELAYED */ \ - struct TASK_ARGSDELAY_NAME(name) { TASK_ARGS(name) real_args; int delay; }; \ + struct TASK_ARGSDELAY_NAME(name) { TASK_ARGS_TYPE(name) real_args; int delay; }; \ /* type of internal args struct for INVOKE_TASK_WHEN */ \ - struct TASK_ARGSCOND_NAME(name) { TASK_ARGS(name) real_args; CoEvent *event; }; \ + struct TASK_ARGSCOND_NAME(name) { TASK_ARGS_TYPE(name) real_args; CoEvent *event; }; \ /* task entry point for INVOKE_TASK */ \ attr_unused linkage void *COTASKTHUNK_##name(void *arg); \ /* task entry point for INVOKE_TASK_DELAYED */ \ @@ -124,7 +135,7 @@ INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; /* task entry point for INVOKE_TASK */ \ attr_unused linkage void *COTASKTHUNK_##name(void *arg) { \ /* copy args to our coroutine stack so that they're valid after caller returns */ \ - TASK_ARGS(name) args_copy = *(TASK_ARGS(name)*)arg; \ + TASK_ARGS_TYPE(name) args_copy = *(TASK_ARGS_TYPE(name)*)arg; \ /* call prologue */ \ COTASKPROLOGUE_##name(&args_copy); \ /* call body */ \ @@ -161,58 +172,71 @@ INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; } #define TASK_COMMON_BEGIN_BODY_DEFINITION(name, linkage) \ - linkage void COTASK_##name(TASK_ARGS(name) *_cotask_args) + linkage void COTASK_##name(TASK_ARGS_TYPE(name) *_cotask_args) -#define DECLARE_TASK_EXPLICIT_LINKAGE(name, argstruct, linkage) \ - TASK_COMMON_DECLARATIONS(name, argstruct, linkage) /* require semicolon */ +#define DECLARE_TASK_EXPLICIT(name, argstype, handletype, linkage) \ + TASK_COMMON_DECLARATIONS(name, argstype, handletype, linkage) /* require semicolon */ -#define DEFINE_TASK_EXPLICIT_LINKAGE(name, linkage) \ +#define DEFINE_TASK_EXPLICIT(name, linkage) \ TASK_COMMON_PRIVATE_DECLARATIONS(name); \ TASK_COMMON_THUNK_DEFINITIONS(name, linkage) \ /* empty prologue */ \ - INLINE void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args) { } \ + INLINE void COTASKPROLOGUE_##name(TASK_ARGS_TYPE(name) *_cotask_args) { } \ /* begin task body definition */ \ TASK_COMMON_BEGIN_BODY_DEFINITION(name, linkage) /* declare a task with static linkage (needs to be defined later) */ #define DECLARE_TASK(name, argstruct) \ - DECLARE_TASK_EXPLICIT_LINKAGE(name, argstruct, static) /* require semicolon */ + DECLARE_TASK_EXPLICIT(name, TASK_ARGS_STRUCT(argstruct), void, static) /* require semicolon */ + +/* TODO document */ +#define DECLARE_TASK_WITH_INTERFACE(name, iface) \ + DECLARE_TASK_EXPLICIT(name, TASK_IFACE_ARGS_TYPE(iface), TASK_INDIRECT_TYPE(iface), static) /* require semicolon */ /* define a task with static linkage (needs to be declared first) */ #define DEFINE_TASK(name) \ - DEFINE_TASK_EXPLICIT_LINKAGE(name, static) + DEFINE_TASK_EXPLICIT(name, static) /* declare and define a task with static linkage */ #define TASK(name, argstruct) \ DECLARE_TASK(name, argstruct); \ DEFINE_TASK(name) +/* TODO document */ +#define TASK_WITH_INTERFACE(name, iface) \ + DECLARE_TASK_WITH_INTERFACE(name, iface); \ + DEFINE_TASK(name) + /* declare a task with extern linkage (needs to be defined later) */ #define DECLARE_EXTERN_TASK(name, argstruct) \ - DECLARE_TASK_EXPLICIT_LINKAGE(name, argstruct, extern) /* require semicolon */ + DECLARE_TASK_EXPLICIT(name, TASK_ARGS_STRUCT(argstruct), void, extern) /* require semicolon */ + +/* TODO document */ +#define DECLARE_EXTERN_TASK_WITH_INTERFACE(name, iface) \ + DECLARE_TASK_EXPLICIT(name, TASK_IFACE_ARGS_TYPE(iface), TASK_INDIRECT_TYPE(iface), extern) /* require semicolon */ /* define a task with extern linkage (needs to be declared first) */ #define DEFINE_EXTERN_TASK(name) \ - DEFINE_TASK_EXPLICIT_LINKAGE(name, extern) + DEFINE_TASK_EXPLICIT(name, extern) -#define DEFINE_TASK_WITH_FINALIZER_EXPLICIT_LINKAGE(name, linkage) \ +#define DEFINE_TASK_WITH_FINALIZER_EXPLICIT(name, linkage) \ TASK_COMMON_PRIVATE_DECLARATIONS(name); \ TASK_COMMON_THUNK_DEFINITIONS(name, linkage) \ /* error out if using TASK_FINALIZER without TASK_WITH_FINALIZER */ \ struct COTASK__##name##__not_declared_using_TASK_WITH_FINALIZER { char dummy; }; \ /* user-defined finalizer function */ \ - INLINE void COTASKFINALIZER_##name(TASK_ARGS(name) *_cotask_args); \ + INLINE void COTASKFINALIZER_##name(TASK_ARGS_TYPE(name) *_cotask_args); \ /* real finalizer entry point */ \ static void *COTASKFINALIZERTHUNK_##name(void *arg) { \ - COTASKFINALIZER_##name((TASK_ARGS(name)*)arg); \ + COTASKFINALIZER_##name((TASK_ARGS_TYPE(name)*)arg); \ return NULL; \ } \ /* prologue; sets up finalizer before executing task body */ \ - INLINE void COTASKPROLOGUE_##name(TASK_ARGS(name) *_cotask_args) { \ + INLINE void COTASKPROLOGUE_##name(TASK_ARGS_TYPE(name) *_cotask_args) { \ cotask_set_finalizer(cotask_active(), COTASKFINALIZERTHUNK_##name, _cotask_args); \ } \ /* begin task body definition */ \ @@ -220,11 +244,11 @@ INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; /* define a task that needs a finalizer with static linkage (needs to be declared first) */ #define DEFINE_TASK_WITH_FINALIZER(name) \ - DEFINE_TASK_WITH_FINALIZER_EXPLICIT_LINKAGE(name, static) + DEFINE_TASK_WITH_FINALIZER_EXPLICIT(name, static) /* define a task that needs a finalizer with static linkage (needs to be declared first) */ #define DEFINE_EXTERN_TASK_WITH_FINALIZER(name) \ - DEFINE_TASK_WITH_FINALIZER_EXPLICIT_LINKAGE(name, extern) + DEFINE_TASK_WITH_FINALIZER_EXPLICIT(name, extern) /* declare and define a task that needs a finalizer with static linkage */ #define TASK_WITH_FINALIZER(name, argstruct) \ @@ -236,12 +260,12 @@ INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; /* error out if using TASK_FINALIZER without TASK_WITH_FINALIZER */ \ attr_unused struct COTASK__##name##__not_declared_using_TASK_WITH_FINALIZER COTASK__##name##__not_declared_using_TASK_WITH_FINALIZER; \ /* begin finalizer body definition */ \ - static void COTASKFINALIZER_##name(TASK_ARGS(name) *_cotask_args) + static void COTASKFINALIZER_##name(TASK_ARGS_TYPE(name) *_cotask_args) #define INVOKE_TASK_(name, ...) ( \ (void)COTASK_UNUSED_CHECK_##name, \ cosched_new_task(_cosched_global, COTASKTHUNK_##name, \ - &(TASK_ARGS(name)) { __VA_ARGS__ } \ + &(TASK_ARGS_TYPE(name)) { __VA_ARGS__ } \ ) \ ) @@ -269,6 +293,22 @@ DECLARE_EXTERN_TASK(_cancel_task_helper, { BoxedTask task; }); #define CANCEL_TASK_WHEN(_event, _task) INVOKE_TASK_WHEN(_event, _cancel_task_helper, _task) +#define TASK_INDIRECT(iface, task) ( \ + (void)COTASK_UNUSED_CHECK_##task, \ + (TASK_INDIRECT_TYPE_ALIAS(task)) { ._cotask_##iface##_thunk = COTASKTHUNK_##task } \ +) + +#define TASK_INDIRECT_INIT(iface, task) \ + { ._cotask_##iface##_thunk = COTASKTHUNK_##task } \ + +#define INVOKE_TASK_INDIRECT_(iface, taskhandle, ...) ( \ + cosched_new_task(_cosched_global, taskhandle._cotask_##iface##_thunk, \ + &(TASK_IFACE_ARGS_TYPE(iface)) { __VA_ARGS__ } \ + ) \ +) + +#define INVOKE_TASK_INDIRECT(iface, ...) INVOKE_TASK_INDIRECT_(iface, __VA_ARGS__, ._dummy_1 = 0) + #define THIS_TASK cotask_box(cotask_active()) #define YIELD cotask_yield(NULL) @@ -290,12 +330,12 @@ ENT_TYPES #undef ENT_TYPE #define cotask_bind_to_entity(task, ent) (_Generic((ent), \ - Projectile*: _cotask_bind_to_entity_Projectile, \ - Laser*: _cotask_bind_to_entity_Laser, \ - Enemy*: _cotask_bind_to_entity_Enemy, \ - Boss*: _cotask_bind_to_entity_Boss, \ - Player*: _cotask_bind_to_entity_Player, \ - Item*: _cotask_bind_to_entity_Item, \ + struct Projectile*: _cotask_bind_to_entity_Projectile, \ + struct Laser*: _cotask_bind_to_entity_Laser, \ + struct Enemy*: _cotask_bind_to_entity_Enemy, \ + struct Boss*: _cotask_bind_to_entity_Boss, \ + struct Player*: _cotask_bind_to_entity_Player, \ + struct Item*: _cotask_bind_to_entity_Item, \ EntityInterface*: cotask_bind_to_entity \ )(task, ent)) diff --git a/src/move.h b/src/move.h index 58aeb35030..ee2994cced 100644 --- a/src/move.h +++ b/src/move.h @@ -43,4 +43,11 @@ INLINE MoveParams move_asymptotic_simple(complex vel, double boost_factor) { return move_asymptotic(vel * (1 + boost_factor * retention), vel, retention); } +INLINE MoveParams move_towards(complex target, complex attraction) { + return (MoveParams) { + .attraction = attraction, + .attraction_point = target, + }; +} + #endif // IGUARD_move_h diff --git a/src/stage.c b/src/stage.c index 1c3ebc4ca3..908281d618 100644 --- a/src/stage.c +++ b/src/stage.c @@ -72,7 +72,7 @@ static void add_spellpractice_stages(int *spellnum, bool (*filter)(AttackInfo*), break; } - for(AttackInfo *a = s->spell; a->rule; ++a) { + for(AttackInfo *a = s->spell; a->name; ++a) { if(!filter(a)) { continue; } diff --git a/src/stages/stage1.c b/src/stages/stage1.c index f68e959e9a..8fc5ba0fe0 100644 --- a/src/stages/stage1.c +++ b/src/stages/stage1.c @@ -26,7 +26,7 @@ struct stage1_spells_s stage1_spells = { .mid = { .perfect_freeze = { { 0, 1, 2, 3}, AT_Spellcard, "Freeze Sign “Perfect Freeze”", 50, 24000, - cirno_perfect_freeze, cirno_pfreeze_bg, VIEWPORT_W/2.0+100.0*I, 1 + NULL, cirno_pfreeze_bg, VIEWPORT_W/2.0+100.0*I, 1, TASK_INDIRECT_INIT(BossAttack, stage1_spell_perfect_freeze) }, }, diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 323c343c97..f2255fdda1 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1619,16 +1619,50 @@ TASK(multiburst_fairies_1, NO_ARGS) { } } +TASK_WITH_INTERFACE(midboss_intro, BossAttack) { + Boss *boss = TASK_BIND(ARGS.boss); + WAIT_EVENT(&ARGS.attack->events.started); + boss->move = move_towards(VIEWPORT_W/2.0 + 100.0*I, 0.035); +} + +TASK_WITH_INTERFACE(icy_storm, BossAttack) { + Boss *boss = TASK_BIND(ARGS.boss); + Attack *a = ARGS.attack; + + CANCEL_TASK_WHEN(&a->events.finished, THIS_TASK); + WAIT_EVENT(&a->events.started); + + // TODO implement + (void)boss; +} + +DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { + Boss *boss = TASK_BIND(ARGS.boss); + Attack *a = ARGS.attack; + + CANCEL_TASK_WHEN(&a->events.finished, THIS_TASK); + boss->move = move_towards(VIEWPORT_W/2.0 + 100.0*I, 0.04); + WAIT_EVENT(&a->events.started); + + // TODO implement + (void)boss; +} + +TASK_WITH_INTERFACE(midboss_flee, BossAttack) { + Boss *boss = TASK_BIND(ARGS.boss); + WAIT_EVENT(&ARGS.attack->events.started); + boss->move = move_towards(-250 + 30 * I, 0.02); +} + TASK(spawn_midboss, NO_ARGS) { - Boss *cirno = stage1_spawn_cirno(VIEWPORT_W + 220 + 30.0*I); + Boss *boss = global.boss = stage1_spawn_cirno(VIEWPORT_W + 220 + 30.0*I); - boss_add_attack(cirno, AT_Move, "Introduction", 2, 0, cirno_intro, NULL); - boss_add_attack(cirno, AT_Normal, "Icy Storm", 20, 24000, cirno_icy, NULL); - boss_add_attack_from_info(cirno, &stage1_spells.mid.perfect_freeze, false); - boss_add_attack(cirno, AT_Move, "Flee", 5, 0, cirno_mid_flee, NULL); + boss_add_attack_task(boss, AT_Move, "Introduction", 2, 0, TASK_INDIRECT(BossAttack, midboss_intro), NULL); + boss_add_attack_task(boss, AT_Normal, "Icy Storm", 20, 24000, TASK_INDIRECT(BossAttack, icy_storm), NULL); + boss_add_attack_from_info(boss, &stage1_spells.mid.perfect_freeze, false); + boss_add_attack_task(boss, AT_Move, "Introduction", 2, 0, TASK_INDIRECT(BossAttack, midboss_flee), NULL); - boss_start_attack(cirno, cirno->attacks); - global.boss = cirno; + boss_start_attack(boss, boss->attacks); } TASK(stage_timeline, NO_ARGS) { diff --git a/src/stages/stage1_events.h b/src/stages/stage1_events.h index f7241a8e8a..02087f209e 100644 --- a/src/stages/stage1_events.h +++ b/src/stages/stage1_events.h @@ -24,4 +24,6 @@ void cirno_benchmark(Boss*, int); void stage1_events(void); Boss* stage1_spawn_cirno(cmplx pos); +DECLARE_EXTERN_TASK_WITH_INTERFACE(stage1_spell_perfect_freeze, BossAttack); + #endif // IGUARD_stages_stage1_events_h From 2292a7257c9219afa329163afed5a715ca796dee Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 1 Sep 2019 23:27:11 +0300 Subject: [PATCH 029/104] add PFLAG_NOMOVE and PFLAG_MANUALANGLE --- src/projectile.c | 12 +++++++++--- src/projectile.h | 3 ++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/projectile.c b/src/projectile.c index 72a421030f..07474fed70 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -146,10 +146,16 @@ static inline int proj_call_rule(Projectile *p, int t) { ); } } else if(t >= 0) { - complex v = move_update(&p->pos, &p->move); + if(!(p->flags & PFLAG_NOMOVE)) { + move_update(&p->pos, &p->move); + } + + if(!(p->flags & PFLAG_MANUALANGLE)) { + complex delta_pos = p->pos - p->prevpos; - if(v) { - p->angle = carg(v); + if(delta_pos) { + p->angle = carg(delta_pos); + } } } diff --git a/src/projectile.h b/src/projectile.h index 8690ab2b3e..b0fcc4779d 100644 --- a/src/projectile.h +++ b/src/projectile.h @@ -57,12 +57,13 @@ typedef enum ProjFlags { PFLAG_NOCLEAREFFECT = (1 << 5), // [PROJ_ENEMY, PROJ_DEAD] Don't spawn the standard particle effect when cleared. PFLAG_NOCOLLISIONEFFECT = (1 << 6), // [PROJ_ENEMY, PROJ_DEAD, PROJ_PLAYER] Don't spawn the standard particle effect on collision. PFLAG_NOCLEARBONUS = (1 << 7), // [PROJ_ENEMY, PROJ_DEAD] Don't spawn any bonus items on clear. - // PFLAG_RESERVED = (1 << 8), + PFLAG_NOMOVE = (1 << 8), // [ALL] Don't call move_update for this projectile. PFLAG_NOREFLECT = (1 << 9), // [ALL] Don't render a "reflection" of this on the Stage 1 water surface. PFLAG_REQUIREDPARTICLE = (1 << 10), // [PROJ_PARTICLE] Visible at "minimal" particles setting. PFLAG_PLRSPECIALPARTICLE = (1 << 11), // [PROJ_PARTICLE] Apply Power Surge effect to this particle, as if it was a PROJ_PLAYER. PFLAG_NOCOLLISION = (1 << 12), // [PROJ_ENEMY, PROJ_PLAYER] Disable collision detection. PFLAG_INTERNAL_DEAD = (1 << 13), // [ALL] Delete as soon as processed. (internal flag, do not use) + PFLAG_MANUALANGLE = (1 << 14), // [ALL] Don't automatically update the angle. PFLAG_NOSPAWNEFFECTS = PFLAG_NOSPAWNFADE | PFLAG_NOSPAWNFLARE, } ProjFlags; From 014ecddf73d26367a08372edb6deff9605d9dc4d Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 2 Sep 2019 02:49:19 +0300 Subject: [PATCH 030/104] Add dependent subtasks; fix finalization bugs --- src/coroutine.c | 91 ++++++++++++++++++++++++++++--------------- src/coroutine.h | 49 +++++++++++++++-------- src/stages/corotest.c | 25 ++++++++++++ 3 files changed, 117 insertions(+), 48 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index 69f5984457..f4d8fa2102 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -32,7 +32,6 @@ struct CoTask { LIST_INTERFACE(CoTask); - // List event_subscriber_chain; koishi_coroutine_t ko; BoxedEntity bound_ent; @@ -41,9 +40,15 @@ struct CoTask { void *arg; } finalizer; + CoTask *supertask; + ListAnchor subtasks; + List subtask_chain; + uint32_t unique_id; }; +#define SUBTASK_NODE_TO_TASK(n) CASTPTR_ASSUME_ALIGNED((char*)(n) - offsetof(CoTask, subtask_chain), CoTask) + static LIST_ANCHOR(CoTask) task_pool; static size_t num_tasks_allocated; static size_t num_tasks_in_use; @@ -98,6 +103,9 @@ CoTask *cotask_new(CoTaskFunc func) { void cotask_free(CoTask *task) { task->unique_id = 0; + task->supertask = NULL; + assume(task->subtasks.first == NULL); + assume(task->subtasks.last == NULL); memset(&task->bound_ent, 0, sizeof(task->bound_ent)); memset(&task->finalizer, 0, sizeof(task->finalizer)); alist_push(&task_pool, task); @@ -115,10 +123,39 @@ CoTask *cotask_active(void) { return CASTPTR_ASSUME_ALIGNED((char*)koishi_active() - offsetof(CoTask, ko), CoTask); } +static void cotask_finalize(CoTask *task) { + if(task->finalizer.func) { + task->finalizer.func(task->finalizer.arg); + #ifdef DEBUG + task->finalizer.func = (void*(*)(void*)) 0xDECEA5E; + #endif + } + + List *node; + + while((node = alist_pop(&task->subtasks))) { + CoTask *sub = SUBTASK_NODE_TO_TASK(node); + assume(sub->supertask == task); + cotask_cancel(sub); + + TASK_DEBUG( + "Cancelled slave task %p (of master task %p)", + (void*)sub, (void*)task + ); + } +} + +static void cotask_force_cancel(CoTask *task) { + // WARNING: It's important to finalize first, because if task == active task, + // then koishi_kill will not return! + cotask_finalize(task); + koishi_kill(&task->ko); + assert(cotask_status(task) == CO_STATUS_DEAD); +} + bool cotask_cancel(CoTask *task) { if(cotask_status(task) != CO_STATUS_DEAD) { - koishi_kill(&task->ko); - assert(cotask_status(task) == CO_STATUS_DEAD); + cotask_force_cancel(task); return true; } @@ -127,19 +164,14 @@ bool cotask_cancel(CoTask *task) { void *cotask_resume(CoTask *task, void *arg) { if(task->bound_ent.ent && !ent_unbox(task->bound_ent)) { - koishi_kill(&task->ko); - - if(task->finalizer.func) { - task->finalizer.func(task->finalizer.arg); - } - + cotask_force_cancel(task); return NULL; } arg = koishi_resume(&task->ko, arg); - if(task->finalizer.func && cotask_status(task) == CO_STATUS_DEAD) { - task->finalizer.func(task->finalizer.arg); + if(cotask_status(task) == CO_STATUS_DEAD) { + cotask_finalize(task); } return arg; @@ -173,8 +205,6 @@ bool cotask_wait_event(CoEvent *evt, void *arg) { evt->subscribers[evt->num_subscribers - 1] = cotask_box(cotask_active()); - // alist_append(&evt->subscribers, &cotask_active()->event_subscriber_chain); - while(true) { EVT_DEBUG("[%p]", (void*)evt); EVT_DEBUG("evt->unique_id == %u", evt->unique_id); @@ -208,7 +238,8 @@ EntityInterface *(cotask_bind_to_entity)(CoTask *task, EntityInterface *ent) { assert(task->bound_ent.ent == 0); if(ent == NULL) { - koishi_die(NULL); + cotask_force_cancel(task); + UNREACHABLE; } task->bound_ent = ent_box(ent); @@ -221,6 +252,21 @@ void cotask_set_finalizer(CoTask *task, CoTaskFunc finalizer, void *arg) { task->finalizer.arg = arg; } +void cotask_enslave(CoTask *slave) { + assert(slave->supertask == NULL); + + CoTask *master = cotask_active(); + assert(master != NULL); + + slave->supertask = master; + alist_append(&master->subtasks, &slave->subtask_chain); + + TASK_DEBUG( + "Made task %p a slave of task %p", + (void*)slave, (void*)slave->supertask + ); +} + void coevent_init(CoEvent *evt) { static uint32_t g_uid; *evt = (CoEvent) { .unique_id = ++g_uid }; @@ -228,23 +274,6 @@ void coevent_init(CoEvent *evt) { } static void coevent_wake_subscribers(CoEvent *evt) { -#if 0 - List *subs_head = evt->subscribers.first; - evt->subscribers.first = evt->subscribers.last = NULL; - - // NOTE: might need to copy the list into an array before iterating, to make sure nothing can corrupt the chain... - - for(List *node = subs_head, *next; node; node = next) { - next = node->next; - CoTask *task = CASTPTR_ASSUME_ALIGNED((char*)node - offsetof(CoTask, event_subscriber_chain), CoTask); - - if(cotask_status(task) != CO_STATUS_DEAD) { - TASK_DEBUG("Resume CoEvent{%p} subscriber %p", (void*)evt, (void*)task); - cotask_resume(task, NULL); - } - } -#endif - if(!evt->num_subscribers) { return; } diff --git a/src/coroutine.h b/src/coroutine.h index 09296e1101..b482e05586 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -60,6 +60,7 @@ CoStatus cotask_status(CoTask *task); CoTask *cotask_active(void); EntityInterface *cotask_bind_to_entity(CoTask *task, EntityInterface *ent) attr_returns_nonnull; void cotask_set_finalizer(CoTask *task, CoTaskFunc finalizer, void *arg); +void cotask_enslave(CoTask *slave); BoxedTask cotask_box(CoTask *task); CoTask *cotask_unbox(BoxedTask box); @@ -262,32 +263,45 @@ INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; /* begin finalizer body definition */ \ static void COTASKFINALIZER_##name(TASK_ARGS_TYPE(name) *_cotask_args) -#define INVOKE_TASK_(name, ...) ( \ + +INLINE BoxedTask _cotask_invoke_helper(CoTask *t, bool is_subtask) { + if(is_subtask) { + cotask_enslave(t); + } + + return cotask_box(t); +} + + +#define INVOKE_TASK_(is_subtask, name, ...) ( \ (void)COTASK_UNUSED_CHECK_##name, \ - cosched_new_task(_cosched_global, COTASKTHUNK_##name, \ + _cotask_invoke_helper(cosched_new_task(_cosched_global, COTASKTHUNK_##name, \ &(TASK_ARGS_TYPE(name)) { __VA_ARGS__ } \ - ) \ + ), is_subtask) \ ) -#define INVOKE_TASK(...) INVOKE_TASK_(__VA_ARGS__, ._dummy_1 = 0) +#define INVOKE_TASK(...) INVOKE_TASK_(false, __VA_ARGS__, ._dummy_1 = 0) +#define INVOKE_SUBTASK(...) INVOKE_TASK_(true, __VA_ARGS__, ._dummy_1 = 0) -#define INVOKE_TASK_WHEN_(_event, name, ...) ( \ +#define INVOKE_TASK_WHEN_(is_subtask, _event, name, ...) ( \ (void)COTASK_UNUSED_CHECK_##name, \ - cosched_new_task(_cosched_global, COTASKTHUNKCOND_##name, \ + _cotask_invoke_helper(cosched_new_task(_cosched_global, COTASKTHUNKCOND_##name, \ &(TASK_ARGSCOND(name)) { .real_args = { __VA_ARGS__ }, .event = (_event) } \ - ) \ + ), is_subtask) \ ) -#define INVOKE_TASK_WHEN(_event, ...) INVOKE_TASK_WHEN_(_event, __VA_ARGS__, ._dummy_1 = 0) +#define INVOKE_TASK_WHEN(_event, ...) INVOKE_TASK_WHEN_(false, _event, __VA_ARGS__, ._dummy_1 = 0) +#define INVOKE_SUBTASK_WHEN(_event, ...) INVOKE_TASK_WHEN_(true, _event, __VA_ARGS__, ._dummy_1 = 0) -#define INVOKE_TASK_DELAYED_(_delay, name, ...) ( \ +#define INVOKE_TASK_DELAYED_(is_subtask, _delay, name, ...) ( \ (void)COTASK_UNUSED_CHECK_##name, \ - cosched_new_task(_cosched_global, COTASKTHUNKDELAY_##name, \ + _cotask_invoke_helper(cosched_new_task(_cosched_global, COTASKTHUNKDELAY_##name, \ &(TASK_ARGSDELAY(name)) { .real_args = { __VA_ARGS__ }, .delay = (_delay) } \ - ) \ + ), is_subtask) \ ) -#define INVOKE_TASK_DELAYED(_delay, ...) INVOKE_TASK_DELAYED_(_delay, __VA_ARGS__, ._dummy_1 = 0) +#define INVOKE_TASK_DELAYED(_delay, ...) INVOKE_TASK_DELAYED_(false, _delay, __VA_ARGS__, ._dummy_1 = 0) +#define INVOKE_SUBTASK_DELAYED(_delay, ...) INVOKE_TASK_DELAYED_(true, _delay, __VA_ARGS__, ._dummy_1 = 0) DECLARE_EXTERN_TASK(_cancel_task_helper, { BoxedTask task; }); @@ -301,13 +315,14 @@ DECLARE_EXTERN_TASK(_cancel_task_helper, { BoxedTask task; }); #define TASK_INDIRECT_INIT(iface, task) \ { ._cotask_##iface##_thunk = COTASKTHUNK_##task } \ -#define INVOKE_TASK_INDIRECT_(iface, taskhandle, ...) ( \ - cosched_new_task(_cosched_global, taskhandle._cotask_##iface##_thunk, \ +#define INVOKE_TASK_INDIRECT_(is_subtask, iface, taskhandle, ...) ( \ + _cotask_invoke_helper(cosched_new_task(_cosched_global, taskhandle._cotask_##iface##_thunk, \ &(TASK_IFACE_ARGS_TYPE(iface)) { __VA_ARGS__ } \ - ) \ + ), is_subtask) \ ) -#define INVOKE_TASK_INDIRECT(iface, ...) INVOKE_TASK_INDIRECT_(iface, __VA_ARGS__, ._dummy_1 = 0) +#define INVOKE_TASK_INDIRECT(iface, ...) INVOKE_TASK_INDIRECT_(false, iface, __VA_ARGS__, ._dummy_1 = 0) +#define INVOKE_SUBTASK_INDIRECT(iface, ...) INVOKE_TASK_INDIRECT_(true, iface, __VA_ARGS__, ._dummy_1 = 0) #define THIS_TASK cotask_box(cotask_active()) @@ -324,7 +339,7 @@ DECLARE_EXTERN_TASK(_cancel_task_helper, { BoxedTask task; }); #define ENT_TYPE(typename, id) \ struct typename; \ - struct typename *_cotask_bind_to_entity_##typename(CoTask *task, struct typename *ent); + struct typename *_cotask_bind_to_entity_##typename(CoTask *task, struct typename *ent) attr_returns_nonnull attr_returns_max_aligned; ENT_TYPES #undef ENT_TYPE diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 002581241d..32f78428fa 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -138,6 +138,30 @@ TASK_FINALIZER(test_enemy) { log_debug("finalizer called (x = %i)", ARGS.for_finalizer.x); } +TASK_WITH_FINALIZER(subtask_test, { int depth; int num; }) { + if(ARGS.depth > 0) { + for(int i = 0; i < 3; ++i) { + INVOKE_SUBTASK(subtask_test, ARGS.depth - 1, i); + } + } + + for(int i = 0;; ++i) { + log_debug("subtask_test: depth=%i; num=%i; iter=%i", ARGS.depth, ARGS.num, i); + YIELD; + } +} + +TASK_FINALIZER(subtask_test) { + log_debug("finalize subtask_test: depth=%i; num=%i", ARGS.depth, ARGS.num); +} + +TASK(subtask_test_init, NO_ARGS) { + log_debug("************ BEGIN ************"); + INVOKE_SUBTASK(subtask_test, 3, -1); + WAIT(30); + log_debug("************ END ************"); +} + TASK(stage_main, NO_ARGS) { YIELD; @@ -147,6 +171,7 @@ TASK(stage_main, NO_ARGS) { log_debug("test 2! %i", global.timer); for(;;) { + INVOKE_TASK(subtask_test_init); INVOKE_TASK_DELAYED(60, test_enemy, 9000, CMPLX(VIEWPORT_W, VIEWPORT_H) * 0.5, 3*I); stage_wait(1000); } From a0b7019af857f7b81c5df80ad993c26d53642ad5 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 2 Sep 2019 03:00:34 +0300 Subject: [PATCH 031/104] remove some bad assertions --- src/coroutine.c | 2 -- src/stages/corotest.c | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index f4d8fa2102..ce233280f4 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -104,8 +104,6 @@ CoTask *cotask_new(CoTaskFunc func) { void cotask_free(CoTask *task) { task->unique_id = 0; task->supertask = NULL; - assume(task->subtasks.first == NULL); - assume(task->subtasks.last == NULL); memset(&task->bound_ent, 0, sizeof(task->bound_ent)); memset(&task->finalizer, 0, sizeof(task->finalizer)); alist_push(&task_pool, task); diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 32f78428fa..00f2868eea 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -158,7 +158,7 @@ TASK_FINALIZER(subtask_test) { TASK(subtask_test_init, NO_ARGS) { log_debug("************ BEGIN ************"); INVOKE_SUBTASK(subtask_test, 3, -1); - WAIT(30); + WAIT(300); log_debug("************ END ************"); } From e7669545f5c2833fd9a56da7f0071d2db3eb185c Mon Sep 17 00:00:00 2001 From: laochailan Date: Mon, 2 Sep 2019 17:23:12 +0200 Subject: [PATCH 032/104] snowflake port --- src/stages/extra.c | 2 +- src/stages/stage1_events.c | 81 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 79 insertions(+), 4 deletions(-) diff --git a/src/stages/extra.c b/src/stages/extra.c index 0cf5cb7e91..447d6c384b 100644 --- a/src/stages/extra.c +++ b/src/stages/extra.c @@ -96,7 +96,7 @@ TASK(glider_fairy, { TASK(stage_main, NO_ARGS) { YIELD; - for(int i;;i++) { + for(int i = 0;;i++) { INVOKE_TASK_DELAYED(60, glider_fairy, 2000, CMPLX(VIEWPORT_W*(i&1), VIEWPORT_H*0.5), 3*I); stage_wait(50+100*(i&1)); } diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index f2255fdda1..d2306d9733 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -88,11 +88,12 @@ static void cirno_icy(Boss *b, int time) { .pos = pos+6*I*phase, .color = RGB(0.0, 0.1 + 0.1 * size / 5, 0.8), .rule = cirno_snowflake_proj, - .args = { vel, _i, }, + .move = move_linear(vel), .angle = ang+M_PI/4, .max_viewport_dist = 64, ); + PROJECTILE( .proto = pp_crystal, .pos = pos-6*I*phase, @@ -1625,15 +1626,89 @@ TASK_WITH_INTERFACE(midboss_intro, BossAttack) { boss->move = move_towards(VIEWPORT_W/2.0 + 100.0*I, 0.035); } + + +TASK(cirno_snowflake_proj_twist, { BoxedProjectile p; }) { + Projectile *p = ENT_UNBOX(ARGS.p); + + if(p != NULL) { + play_sound_ex("redirect", 30, false); + play_sound_ex("shot_special1", 30, false); + color_lerp(&p->color, RGB(0.5, 0.5, 0.5), 0.5); + spawn_projectile_highlight_effect(p); + p->move.velocity = -cabs(p->move.velocity)*cdir(p->angle); + } +} + TASK_WITH_INTERFACE(icy_storm, BossAttack) { Boss *boss = TASK_BIND(ARGS.boss); Attack *a = ARGS.attack; CANCEL_TASK_WHEN(&a->events.finished, THIS_TASK); WAIT_EVENT(&a->events.started); + + int interval = 70 - 8 * global.diff; - // TODO implement - (void)boss; + for(int run = 0;; run++) { + complex vel = (1+0.125*global.diff)*cexp(I*fmod(200*run,M_PI)); + int c = 6; + double dr = 15; + int size = 5+3*sin(337*run); + + int start_time = global.frames; + + for(int j = 0; j < size; j++) { + WAIT(3); + play_loop("shot1_loop"); + for(int i = 0; i < c; i++) { + double ang = 2*M_PI/c*i+run*515; + complex phase = cdir(ang); + int t = global.frames-start_time; + complex pos = boss->pos+vel*t+dr*j*phase; + + int split_time = 200 - 20*global.diff - j*3; + Projectile *p; + + for(int side = -1; side <= 1; side += 2) { + p = PROJECTILE( + .proto = pp_crystal, + .pos = pos+side*6*I*phase, + .color = RGB(0.0, 0.1 + 0.1 * size / 5, 0.8), + .move = move_linear(vel), + .angle = ang+side*M_PI/4, + .max_viewport_dist = 64, + .flags = PFLAG_MANUALANGLE, + ); + INVOKE_TASK_DELAYED(split_time, cirno_snowflake_proj_twist, ENT_BOX(p)); + } + + int split = 3; + + if(j > split) { + complex pos0 = boss->pos+vel*t+dr*split*phase; + + for(int side = -1; side <= 1; side+=2) { + complex phase2 = cdir(M_PI/4*side)*phase; + complex pos2 = pos0+(dr*(j-split))*phase2; + + PROJECTILE( + .proto = pp_crystal, + .pos = pos2, + .color = RGB(0.0,0.3*size/5,1), + .move = move_linear(vel), + .angle = ang+M_PI/4*side, + .max_viewport_dist = 64, + .flags = PFLAG_MANUALANGLE, + ); + } + } + } + + } + + WAIT(interval-3*size); + } + } DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { From 9a07c283129c369a5c8419fd221e6206b60687bb Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 2 Sep 2019 19:09:09 +0300 Subject: [PATCH 033/104] random wandering function --- src/common_tasks.c | 39 ++++++++++++++++++++++++++++++++++++++ src/common_tasks.h | 9 +++++++++ src/stages/stage1_events.c | 13 ++++++++++++- 3 files changed, 60 insertions(+), 1 deletion(-) diff --git a/src/common_tasks.c b/src/common_tasks.c index 0eeb740141..3bed5f3064 100644 --- a/src/common_tasks.c +++ b/src/common_tasks.c @@ -9,6 +9,7 @@ #include "taisei.h" #include "common_tasks.h" +#include "random.h" DEFINE_EXTERN_TASK(common_drop_items) { complex p = *ARGS.pos; @@ -44,3 +45,41 @@ DEFINE_EXTERN_TASK(common_move_ext) { common_move_loop(ARGS.pos, ARGS.move_params); } + +complex common_wander(complex origin, double dist, Rect bounds) { + int attempts = 32; + double angle; + complex dest; + complex dir; + + // assert(point_in_rect(origin, bounds)); + + while(attempts--) { + angle = rand_angle(); + dir = cdir(angle); + dest = origin + dist * dir; + + if(point_in_rect(dest, bounds)) { + return dest; + } + } + + log_warn("Clipping fallback origin = %f%+fi dist = %f bounds.top_left = %f%+fi bounds.bottom_right = %f%+fi", + creal(origin), cimag(origin), + dist, + creal(bounds.top_left), cimag(bounds.top_left), + creal(bounds.bottom_right), cimag(bounds.bottom_right) + ); + + // TODO: implement proper line-clipping here? + + double step = cabs(bounds.bottom_right - bounds.top_left) / 16; + dir *= step; + dest = origin; + + while(point_in_rect(dest + dir, bounds)) { + dest += dir; + } + + return dest; +} diff --git a/src/common_tasks.h b/src/common_tasks.h index e352001f41..3e3687ff7f 100644 --- a/src/common_tasks.h +++ b/src/common_tasks.h @@ -33,4 +33,13 @@ DECLARE_EXTERN_TASK( void common_move_loop(complex *restrict pos, MoveParams *restrict mp); +INLINE Rect viewport_bounds(double margin) { + return (Rect) { + .top_left = CMPLX(margin, margin), + .bottom_right = CMPLX(VIEWPORT_W - margin, VIEWPORT_H - margin), + }; +} + +complex common_wander(complex origin, double dist, Rect bounds); + #endif // IGUARD_common_tasks_h diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index d2306d9733..1f65b759f9 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1720,7 +1720,18 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { WAIT_EVENT(&a->events.started); // TODO implement - (void)boss; + + boss->move.retention = 0.8; + boss->move.attraction = 0.01; + + Rect move_bounds; + move_bounds.top_left = CMPLX(64, 64); + move_bounds.bottom_right = CMPLX(VIEWPORT_W - 64, 200); + + for(;;) { + boss->move.attraction_point = common_wander(boss->pos, rand_range(50, 200), move_bounds); + WAIT(60); + } } TASK_WITH_INTERFACE(midboss_flee, BossAttack) { From 809587e3805e60c0678b3dd4b6571bb1fe384b2c Mon Sep 17 00:00:00 2001 From: laochailan Date: Mon, 2 Sep 2019 19:06:23 +0200 Subject: [PATCH 034/104] pfreeze --- src/stages/stage1_events.c | 119 +++++++++++++++++++++++++++++++------ 1 file changed, 100 insertions(+), 19 deletions(-) diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 1f65b759f9..a97b63c0bf 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1629,15 +1629,13 @@ TASK_WITH_INTERFACE(midboss_intro, BossAttack) { TASK(cirno_snowflake_proj_twist, { BoxedProjectile p; }) { - Projectile *p = ENT_UNBOX(ARGS.p); + Projectile *p = TASK_BIND(ARGS.p); - if(p != NULL) { - play_sound_ex("redirect", 30, false); - play_sound_ex("shot_special1", 30, false); - color_lerp(&p->color, RGB(0.5, 0.5, 0.5), 0.5); - spawn_projectile_highlight_effect(p); - p->move.velocity = -cabs(p->move.velocity)*cdir(p->angle); - } + play_sound_ex("redirect", 30, false); + play_sound_ex("shot_special1", 30, false); + color_lerp(&p->color, RGB(0.5, 0.5, 0.5), 0.5); + spawn_projectile_highlight_effect(p); + p->move.velocity = -cabs(p->move.velocity)*cdir(p->angle); } TASK_WITH_INTERFACE(icy_storm, BossAttack) { @@ -1691,7 +1689,7 @@ TASK_WITH_INTERFACE(icy_storm, BossAttack) { complex phase2 = cdir(M_PI/4*side)*phase; complex pos2 = pos0+(dr*(j-split))*phase2; - PROJECTILE( + p = PROJECTILE( .proto = pp_crystal, .pos = pos2, .color = RGB(0.0,0.3*size/5,1), @@ -1700,6 +1698,7 @@ TASK_WITH_INTERFACE(icy_storm, BossAttack) { .max_viewport_dist = 64, .flags = PFLAG_MANUALANGLE, ); + INVOKE_TASK_DELAYED(split_time, cirno_snowflake_proj_twist, ENT_BOX(p)); } } } @@ -1716,21 +1715,103 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { Attack *a = ARGS.attack; CANCEL_TASK_WHEN(&a->events.finished, THIS_TASK); - boss->move = move_towards(VIEWPORT_W/2.0 + 100.0*I, 0.04); WAIT_EVENT(&a->events.started); + + for(int run = 1;;run++) { + boss->move = move_towards(VIEWPORT_W/2.0 + 100.0*I, 0.04); - // TODO implement - - boss->move.retention = 0.8; - boss->move.attraction = 0.01; + int n = global.diff; + int nfrog = n*60; + BoxedProjectile projs[nfrog]; - Rect move_bounds; - move_bounds.top_left = CMPLX(64, 64); - move_bounds.bottom_right = CMPLX(VIEWPORT_W - 64, 200); + WAIT(20); + for(int i = 0; i < nfrog/n; i++) { + play_loop("shot1_loop"); + + float r = frand(); + float g = frand(); + float b = frand(); + + for(int j = 0; j < n; j++) { + float speed = 1+(4+0.5*global.diff)*frand(); + projs[i*n+j] = ENT_BOX(PROJECTILE( + .proto = pp_ball, + .pos = boss->pos, + .color = RGB(r, g, b), + .move = move_linear(speed*cexp(I*tsrand())), + )); + } + YIELD; + } + WAIT(20); + for(int i = 0; i < nfrog; i++) { + Projectile *p = ENT_UNBOX(projs[i]); + if(p == NULL) { + continue; + } + spawn_stain(p->pos, p->angle, 30); + spawn_stain(p->pos, p->angle, 30); + spawn_projectile_highlight_effect(p); + play_sound("shot_special1"); - for(;;) { - boss->move.attraction_point = common_wander(boss->pos, rand_range(50, 200), move_bounds); + p->color = *RGB(0.9, 0.9, 0.9); + p->move.retention = 0.8*cdir(rand_angle()); + if(frand() < 0.2) { + YIELD; + } + } WAIT(60); + int dir = 2*(frand()>0.5)-1; // wait till they figure this out + boss->move = (MoveParams){ .velocity = dir*2.7+I, .retention = 0.99, .acceleration = -dir*0.017 }; + + aniplayer_queue(&boss->ani,"(9)",0); + int d = max(0, global.diff - D_Normal); + WAIT(60-5*global.diff); + for(int i = 0; i < nfrog; i++) { + Projectile *p = ENT_UNBOX(projs[i]); + if(p == NULL) { + continue; + } + + p->color = *RGB(0.9, 0.9, 0.9); + p->move.retention = 1+0.002*global.diff*frand(); + p->move.velocity = 2*cdir(rand_angle()); + spawn_stain(p->pos, p->angle, 30); + spawn_projectile_highlight_effect(p); + play_sound_ex("shot2", 0, false); + if(frand() < 0.4) { + YIELD; + } + } + + for(int i = 0; i < 30+10*d; i++) { + play_loop("shot1_loop"); + float r1, r2; + + if(global.diff > D_Normal) { + r1 = sin(i/M_PI*5.3) * cos(2*i/M_PI*5.3); + r2 = cos(i/M_PI*5.3) * sin(2*i/M_PI*5.3); + } else { + r1 = nfrand(); + r2 = nfrand(); + } + + complex aim = cnormalize(global.plr.pos - boss->pos); + float speed = 2+0.2*global.diff; + + for(int sign = -1; sign <= 1; sign += 2) { + PROJECTILE( + .proto = pp_rice, + .pos = boss->pos + sign*60, + .color = RGB(0.3, 0.4, 0.9), + .move = move_asymptotic_simple(speed*aim*cdir(0.5*(sign > 0 ? r1 : r2)), 2.5+(global.diff>D_Normal)*0.1*sign*I), + ); + } + WAIT(6-global.diff/2); + } + aniplayer_queue(&boss->ani,"main",0); + + WAIT(40-5*global.diff); } } From 5655fc1076fe313cc278aa4b7b03d3af3b8a2e16 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Tue, 3 Sep 2019 04:07:00 +0300 Subject: [PATCH 035/104] event-based way to wait for boss defeat and retrieve the waiting time --- src/boss.c | 15 +++++++++++++-- src/boss.h | 2 +- src/coroutine.c | 16 ++++++++++++---- src/coroutine.h | 15 +++++++++++++-- src/stages/corotest.c | 7 +------ src/stages/stage1_events.c | 17 ++++++++++------- 6 files changed, 50 insertions(+), 22 deletions(-) diff --git a/src/boss.c b/src/boss.c index 4eadf2cda4..ef2de691f5 100644 --- a/src/boss.c +++ b/src/boss.c @@ -55,6 +55,8 @@ Boss* create_boss(char *name, char *ani, cmplx pos) { boss->bomb_damage_multiplier = 1.0; boss->shot_damage_multiplier = 1.0; + COEVENT_INIT_ARRAY(boss->events); + return boss; } @@ -1109,6 +1111,13 @@ void process_boss(Boss **pboss) { } } + bool dying = boss_is_dying(boss); + bool fleeing = boss_is_fleeing(boss); + + if(dying || fleeing) { + coevent_signal_once(&boss->events.defeated); + } + if(boss_is_dying(boss)) { float t = (global.frames - boss->current->endtime)/(float)BOSS_DEATH_DELAY + 1; tsrand_fill(6); @@ -1303,11 +1312,13 @@ static void free_attack(Attack *a) { } void free_boss(Boss *boss) { - ent_unregister(&boss->ent); + COEVENT_CANCEL_ARRAY(boss->events); - for(int i = 0; i < boss->acount; i++) + for(int i = 0; i < boss->acount; i++) { free_attack(&boss->attacks[i]); + } + ent_unregister(&boss->ent); boss_set_portrait(boss, NULL, NULL); aniplayer_free(&boss->ani); free(boss->name); diff --git a/src/boss.h b/src/boss.h index 348e2a346d..8a62d66761 100644 --- a/src/boss.h +++ b/src/boss.h @@ -172,7 +172,7 @@ struct Boss { float attack_timer; } hud; - COEVENTS_ARRAY(defeated); + COEVENTS_ARRAY(defeated) events; }; Boss* create_boss(char *name, char *ani, cmplx pos) attr_nonnull(1, 2) attr_returns_nonnull; diff --git a/src/coroutine.c b/src/coroutine.c index ce233280f4..630640fe6d 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -137,7 +137,7 @@ static void cotask_finalize(CoTask *task) { cotask_cancel(sub); TASK_DEBUG( - "Cancelled slave task %p (of master task %p)", + "Canceled slave task %p (of master task %p)", (void*)sub, (void*)task ); } @@ -179,9 +179,14 @@ void *cotask_yield(void *arg) { return koishi_yield(arg); } -bool cotask_wait_event(CoEvent *evt, void *arg) { +CoWaitResult cotask_wait_event(CoEvent *evt, void *arg) { assert(evt->unique_id > 0); + CoWaitResult result = { + .frames = 0, + .event_status = CO_EVENT_PENDING, + }; + struct { uint32_t unique_id; uint16_t num_signaled; @@ -215,15 +220,18 @@ bool cotask_wait_event(CoEvent *evt, void *arg) { evt->num_signaled < snapshot.num_signaled ) { EVT_DEBUG("Event was canceled"); - return false; + result.event_status = CO_EVENT_CANCELED; + return result; } if(evt->num_signaled > snapshot.num_signaled) { EVT_DEBUG("Event was signaled"); - return true; + result.event_status = CO_EVENT_SIGNALED; + return result; } EVT_DEBUG("Event hasn't changed; waiting..."); + ++result.frames; cotask_yield(arg); } } diff --git a/src/coroutine.h b/src/coroutine.h index b482e05586..ba0dfc9c8e 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -27,6 +27,12 @@ typedef enum CoStatus { CO_STATUS_DEAD = KOISHI_DEAD, } CoStatus; +typedef enum CoEventStatus { + CO_EVENT_PENDING, + CO_EVENT_SIGNALED, + CO_EVENT_CANCELED, +} CoEventStatus; + typedef struct BoxedTask { uintptr_t ptr; uint32_t unique_id; @@ -47,6 +53,11 @@ struct CoSched { LIST_ANCHOR(CoTask) tasks, pending_tasks; }; +typedef struct CoWaitResult { + int frames; + CoEventStatus event_status; +} CoWaitResult; + void coroutines_init(void); void coroutines_shutdown(void); @@ -55,7 +66,7 @@ void cotask_free(CoTask *task); bool cotask_cancel(CoTask *task); void *cotask_resume(CoTask *task, void *arg); void *cotask_yield(void *arg); -bool cotask_wait_event(CoEvent *evt, void *arg); +CoWaitResult cotask_wait_event(CoEvent *evt, void *arg); CoStatus cotask_status(CoTask *task); CoTask *cotask_active(void); EntityInterface *cotask_bind_to_entity(CoTask *task, EntityInterface *ent) attr_returns_nonnull; @@ -162,7 +173,7 @@ INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; /* copy args to our coroutine stack so that they're valid after caller returns */ \ TASK_ARGSCOND(name) args_copy = *(TASK_ARGSCOND(name)*)arg; \ /* wait for event, and if it wasn't canceled... */ \ - if(WAIT_EVENT(args_copy.event)) { \ + if(WAIT_EVENT(args_copy.event).event_status == CO_EVENT_SIGNALED) { \ /* call prologue */ \ COTASKPROLOGUE_##name(&args_copy.real_args); \ /* call body */ \ diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 00f2868eea..9b49e52758 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -40,14 +40,9 @@ TASK(laserize_proj, { BoxedProjectile p; int t; }) { } TASK(wait_event_test, { BoxedEnemy e; int rounds; int delay; int cnt; int cnt_inc; }) { - // WAIT_EVENT yields until the event fires. - // Returns true if the event was signaled, false if it was canceled. - // All waiting tasks will resume right after either of those occur, in the - // order they started waiting. - Enemy *e = ENT_UNBOX(ARGS.e); - if(!WAIT_EVENT(&e->events.killed)) { + if(WAIT_EVENT(&e->events.killed).event_status == CO_EVENT_CANCELED) { // Event canceled? Nothing to do here. log_debug("[%p] leave (canceled)", (void*)cotask_active()); return; diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index a97b63c0bf..2d535e7825 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1644,7 +1644,7 @@ TASK_WITH_INTERFACE(icy_storm, BossAttack) { CANCEL_TASK_WHEN(&a->events.finished, THIS_TASK); WAIT_EVENT(&a->events.started); - + int interval = 70 - 8 * global.diff; for(int run = 0;; run++) { @@ -1654,7 +1654,7 @@ TASK_WITH_INTERFACE(icy_storm, BossAttack) { int size = 5+3*sin(337*run); int start_time = global.frames; - + for(int j = 0; j < size; j++) { WAIT(3); play_loop("shot1_loop"); @@ -1707,7 +1707,6 @@ TASK_WITH_INTERFACE(icy_storm, BossAttack) { WAIT(interval-3*size); } - } DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { @@ -1716,7 +1715,7 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { CANCEL_TASK_WHEN(&a->events.finished, THIS_TASK); WAIT_EVENT(&a->events.started); - + for(int run = 1;;run++) { boss->move = move_towards(VIEWPORT_W/2.0 + 100.0*I, 0.04); @@ -1727,7 +1726,7 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { WAIT(20); for(int i = 0; i < nfrog/n; i++) { play_loop("shot1_loop"); - + float r = frand(); float g = frand(); float b = frand(); @@ -1783,8 +1782,8 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { YIELD; } } - - for(int i = 0; i < 30+10*d; i++) { + + for(int i = 0; i < 30+10*d; i++) { play_loop("shot1_loop"); float r1, r2; @@ -1863,6 +1862,10 @@ TASK(stage_timeline, NO_ARGS) { INVOKE_TASK_DELAYED(1500, burst_fairies_3); INVOKE_TASK_DELAYED(2200, multiburst_fairies_1); INVOKE_TASK_DELAYED(2700, spawn_midboss); + + while(!global.boss) YIELD; + int midboss_time = WAIT_EVENT(&global.boss->events.defeated).frames; + log_debug("midboss time: %i", midboss_time); } void stage1_events(void) { From 4ae285382f14484eb32102c0d001da799b10d16f Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 4 Oct 2019 00:29:50 +0300 Subject: [PATCH 036/104] fix corruption when subtask ends before its parent --- src/coroutine.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/coroutine.c b/src/coroutine.c index 630640fe6d..9e9f51200f 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -131,9 +131,20 @@ static void cotask_finalize(CoTask *task) { List *node; + if(task->supertask) { + TASK_DEBUG( + "Slave task %p detaching from master %p", + (void*)task, (void*)task->supertask + ); + + alist_unlink(&task->supertask->subtasks, &task->subtask_chain); + task->supertask = NULL; + } + while((node = alist_pop(&task->subtasks))) { CoTask *sub = SUBTASK_NODE_TO_TASK(node); assume(sub->supertask == task); + sub->supertask = NULL; cotask_cancel(sub); TASK_DEBUG( From f3b744b422465ff441cc3a280755fa4b206ff424 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 4 Oct 2019 06:00:34 +0300 Subject: [PATCH 037/104] macro fuckery for boxed ent arrays --- src/coroutine.c | 4 +- src/entity.c | 8 +-- src/entity.h | 120 ++++++++++++++++++++++++++++++------- src/stages/stage1_events.c | 24 ++++---- src/util/macrohax.h | 24 ++++++++ 5 files changed, 139 insertions(+), 41 deletions(-) create mode 100644 src/util/macrohax.h diff --git a/src/coroutine.c b/src/coroutine.c index 9e9f51200f..1aed9e7d6d 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -172,7 +172,7 @@ bool cotask_cancel(CoTask *task) { } void *cotask_resume(CoTask *task, void *arg) { - if(task->bound_ent.ent && !ent_unbox(task->bound_ent)) { + if(task->bound_ent.ent && !ENT_UNBOX(task->bound_ent)) { cotask_force_cancel(task); return NULL; } @@ -259,7 +259,7 @@ EntityInterface *(cotask_bind_to_entity)(CoTask *task, EntityInterface *ent) { UNREACHABLE; } - task->bound_ent = ent_box(ent); + task->bound_ent = ENT_BOX(ent); return ent; } diff --git a/src/entity.c b/src/entity.c index c0106cce01..dc82660bb8 100644 --- a/src/entity.c +++ b/src/entity.c @@ -244,14 +244,14 @@ void ent_unhook_post_draw(EntityDrawHookCallback callback) { remove_hook(&entities.hooks.post_draw, callback); } -BoxedEntity ent_box(EntityInterface *ent) { +BoxedEntity _ent_box_Entity(EntityInterface *ent) { BoxedEntity h; h.ent = (uintptr_t)ent; h.spawn_id = ent->spawn_id; return h; } -EntityInterface *ent_unbox(BoxedEntity box) { +EntityInterface *_ent_unbox_Entity(BoxedEntity box) { EntityInterface *e = (EntityInterface*)box.ent; if(e->spawn_id == box.spawn_id) { @@ -263,10 +263,10 @@ EntityInterface *ent_unbox(BoxedEntity box) { #define ENT_TYPE(typename, id) \ Boxed##typename _ent_box_##typename(struct typename *ent) { \ - return (Boxed##typename) { .as_generic = ent_box(&ent->entity_interface) };\ + return (Boxed##typename) { .as_generic = _ent_box_Entity(&ent->entity_interface) };\ } \ struct typename *_ent_unbox_##typename(Boxed##typename box) { \ - EntityInterface *e = ent_unbox(box.as_generic); \ + EntityInterface *e = _ent_unbox_Entity(box.as_generic); \ return e ? ENT_CAST(e, typename) : NULL; \ } diff --git a/src/entity.h b/src/entity.h index caa9a1dd45..ced10f1637 100644 --- a/src/entity.h +++ b/src/entity.h @@ -13,6 +13,7 @@ #include "objectpool.h" #include "util/geometry.h" +#include "util/macrohax.h" #define LAYER_LOW_BITS 16 #define LAYER_LOW_MASK ((1 << LAYER_LOW_BITS) - 1) @@ -158,8 +159,8 @@ struct BoxedEntity { uint_fast32_t spawn_id; }; -BoxedEntity ent_box(EntityInterface *ent); -EntityInterface *ent_unbox(BoxedEntity box); +BoxedEntity _ent_box_Entity(EntityInterface *ent); +EntityInterface *_ent_unbox_Entity(BoxedEntity box); #define ENT_TYPE(typename, id) \ typedef union Boxed##typename { \ @@ -172,28 +173,105 @@ EntityInterface *ent_unbox(BoxedEntity box); struct typename; \ Boxed##typename _ent_box_##typename(struct typename *ent); \ struct typename *_ent_unbox_##typename(Boxed##typename box); \ + INLINE Boxed##typename _ent_boxed_passthrough_helper_##typename(Boxed##typename box) { return box; } ENT_TYPES #undef ENT_TYPE -#define ENT_BOX(ent) (_Generic((ent), \ - Projectile*: _ent_box_Projectile, \ - Laser*: _ent_box_Laser, \ - Enemy*: _ent_box_Enemy, \ - Boss*: _ent_box_Boss, \ - Player*: _ent_box_Player, \ - Item*: _ent_box_Item, \ - EntityInterface*: ent_box \ -)(ent)) - -#define ENT_UNBOX(box) (_Generic((box), \ - BoxedProjectile: _ent_unbox_Projectile, \ - BoxedLaser: _ent_unbox_Laser, \ - BoxedEnemy: _ent_unbox_Enemy, \ - BoxedBoss: _ent_unbox_Boss, \ - BoxedPlayer: _ent_unbox_Player, \ - BoxedItem: _ent_unbox_Item, \ - BoxedEntity: ent_unbox \ -)(box)) +INLINE BoxedEntity _ent_boxed_passthrough_helper_Entity(BoxedEntity box) { return box; } + +#define ENT_UNBOXED_DISPATCH_TABLE(func_prefix) \ + struct Projectile*: func_prefix##Projectile, \ + struct Laser*: func_prefix##Laser, \ + struct Enemy*: func_prefix##Enemy, \ + struct Boss*: func_prefix##Boss, \ + struct Player*: func_prefix##Player, \ + struct Item*: func_prefix##Item, \ + EntityInterface*: func_prefix##Entity \ + +#define ENT_BOXED_DISPATCH_TABLE(func_prefix) \ + BoxedProjectile: func_prefix##Projectile, \ + BoxedLaser: func_prefix##Laser, \ + BoxedEnemy: func_prefix##Enemy, \ + BoxedBoss: func_prefix##Boss, \ + BoxedPlayer: func_prefix##Player, \ + BoxedItem: func_prefix##Item, \ + BoxedEntity: func_prefix##Entity \ + +#define ENT_UNBOXED_DISPATCH_FUNCTION(func_prefix, ...) \ + _Generic((MACROHAX_FIRST(__VA_ARGS__)), \ + ENT_UNBOXED_DISPATCH_TABLE(func_prefix) \ + )(MACROHAX_EXPAND(__VA_ARGS__)) + +#define ENT_BOXED_DISPATCH_FUNCTION(func_prefix, ...) \ + _Generic((MACROHAX_FIRST(__VA_ARGS__)), \ + ENT_BOXED_DISPATCH_TABLE(func_prefix) \ + )(MACROHAX_EXPAND(__VA_ARGS__)) + +#define ENT_MIXED_DISPATCH_FUNCTION(func_prefix_unboxed, func_prefix_boxed, ...) \ + _Generic((MACROHAX_FIRST(__VA_ARGS__)), \ + ENT_UNBOXED_DISPATCH_TABLE(func_prefix_unboxed), \ + ENT_BOXED_DISPATCH_TABLE(func_prefix_boxed) \ + )(MACROHAX_EXPAND(__VA_ARGS__)) + +#define ENT_BOX(ent) ENT_UNBOXED_DISPATCH_FUNCTION(_ent_box_, ent) +#define ENT_UNBOX(box) ENT_BOXED_DISPATCH_FUNCTION(_ent_unbox_, box) +#define ENT_BOX_OR_PASSTHROUGH(ent) ENT_MIXED_DISPATCH_FUNCTION(_ent_box_, _ent_boxed_passthrough_helper_, ent) + +typedef struct BoxedEntityArray { + BoxedEntity *array; + uint capacity; + uint size; +} BoxedEntityArray; + +#define ENT_TYPE(typename, id) \ + typedef union Boxed##typename##Array { \ + BoxedEntityArray as_generic_UNSAFE; \ + struct { \ + Boxed##typename *array; \ + uint capacity; \ + uint size; \ + }; \ + } Boxed##typename##Array; \ + INLINE void _ent_array_add_##typename(Boxed##typename box, Boxed##typename##Array *a) { \ + assert(a->size < a->capacity); \ + a->array[a->size++] = box; \ + } + +ENT_TYPES +#undef ENT_TYPE + +INLINE void _ent_array_add_BoxedEntity(BoxedEntity box, BoxedEntityArray *a) { + assert(a->size < a->capacity); + a->array[a->size++] = box; +} + +INLINE void _ent_array_add_Entity(struct EntityInterface *ent, BoxedEntityArray *a) { + _ent_array_add_BoxedEntity(ENT_BOX(ent), a); +} + +#define ENT_ARRAY_ADD(_array, _ent) ENT_BOXED_DISPATCH_FUNCTION(_ent_array_add_, ENT_BOX_OR_PASSTHROUGH(_ent), _array) +#define ENT_ARRAY_GET_BOXED(_array, _index) ((_array)->array[_index]) +#define ENT_ARRAY_GET(_array, _index) ENT_UNBOX(ENT_ARRAY_GET_BOXED(_array, _index)) + +#define DECLARE_ENT_ARRAY(_ent_type, _name, _capacity) \ + Boxed##_ent_type##Array _name; \ + _name.size = 0; \ + _name.capacity = _capacity; \ + Boxed##_ent_type _ent_array_data##_name[_name.capacity]; \ + _name.array = _ent_array_data##_name + +#define ENT_ARRAY(_typename, _capacity) \ + ((Boxed##_typename##Array) { .array = (Boxed##_typename[_capacity]) { 0 }, .capacity = (_capacity), .size = 0 }) + +#define ENT_ARRAY_FOREACH(_array, _var, _block) do { \ + for(uint MACROHAX_ADDLINENUM(_ent_array_iterator) = 0; MACROHAX_ADDLINENUM(_ent_array_iterator) < (_array)->size; ++MACROHAX_ADDLINENUM(_ent_array_iterator)) { \ + void *MACROHAX_ADDLINENUM(_ent_array_temp) = ENT_ARRAY_GET((_array), MACROHAX_ADDLINENUM(_ent_array_iterator)); \ + if(MACROHAX_ADDLINENUM(_ent_array_temp) != NULL) { \ + _var = MACROHAX_ADDLINENUM(_ent_array_temp); \ + _block \ + } \ + } \ +} while(0) #endif // IGUARD_entity_h diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 2d535e7825..2e0b1570e5 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1721,7 +1721,8 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { int n = global.diff; int nfrog = n*60; - BoxedProjectile projs[nfrog]; + + DECLARE_ENT_ARRAY(Projectile, projs, nfrog); WAIT(20); for(int i = 0; i < nfrog/n; i++) { @@ -1733,7 +1734,8 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { for(int j = 0; j < n; j++) { float speed = 1+(4+0.5*global.diff)*frand(); - projs[i*n+j] = ENT_BOX(PROJECTILE( + + ENT_ARRAY_ADD(&projs, PROJECTILE( .proto = pp_ball, .pos = boss->pos, .color = RGB(r, g, b), @@ -1743,11 +1745,8 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { YIELD; } WAIT(20); - for(int i = 0; i < nfrog; i++) { - Projectile *p = ENT_UNBOX(projs[i]); - if(p == NULL) { - continue; - } + + ENT_ARRAY_FOREACH(&projs, Projectile *p, { spawn_stain(p->pos, p->angle, 30); spawn_stain(p->pos, p->angle, 30); spawn_projectile_highlight_effect(p); @@ -1758,7 +1757,8 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { if(frand() < 0.2) { YIELD; } - } + }); + WAIT(60); int dir = 2*(frand()>0.5)-1; // wait till they figure this out boss->move = (MoveParams){ .velocity = dir*2.7+I, .retention = 0.99, .acceleration = -dir*0.017 }; @@ -1766,12 +1766,8 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { aniplayer_queue(&boss->ani,"(9)",0); int d = max(0, global.diff - D_Normal); WAIT(60-5*global.diff); - for(int i = 0; i < nfrog; i++) { - Projectile *p = ENT_UNBOX(projs[i]); - if(p == NULL) { - continue; - } + ENT_ARRAY_FOREACH(&projs, Projectile *p, { p->color = *RGB(0.9, 0.9, 0.9); p->move.retention = 1+0.002*global.diff*frand(); p->move.velocity = 2*cdir(rand_angle()); @@ -1781,7 +1777,7 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { if(frand() < 0.4) { YIELD; } - } + }); for(int i = 0; i < 30+10*d; i++) { play_loop("shot1_loop"); diff --git a/src/util/macrohax.h b/src/util/macrohax.h new file mode 100644 index 0000000000..ee4283f0b7 --- /dev/null +++ b/src/util/macrohax.h @@ -0,0 +1,24 @@ +/* + * This software is licensed under the terms of the MIT License. + * See COPYING for further information. + * --- + * Copyright (c) 2011-2019, Lukas Weber . + * Copyright (c) 2012-2019, Andrei Alexeyev . +*/ + +#ifndef IGUARD_util_macrohax_h +#define IGUARD_util_macrohax_h + +#include "taisei.h" + +#define MACROHAX_FIRST_(f, ...) f +#define MACROHAX_FIRST(...) MACROHAX_FIRST_(__VA_ARGS__, _) +#define MACROHAX_EMPTY() +#define MACROHAX_DEFER(id) id MACROHAX_EMPTY() +#define MACROHAX_OBSTRUCT(...) __VA_ARGS__ MACROHAX_DEFER(MACROHAX_EMPTY)() +#define MACROHAX_EXPAND(...) __VA_ARGS__ + +#define MACROHAX_CONCAT(a, b) a ## b +#define MACROHAX_ADDLINENUM(a) MACROHAX_EXPAND(MACROHAX_DEFER(MACROHAX_CONCAT)(a, __LINE__)) + +#endif // IGUARD_util_macrohax_h From 71d1fab6d954a3686d55c9a686a864a8029c3475 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 4 Oct 2019 06:04:12 +0300 Subject: [PATCH 038/104] run upkeep --- src/common_tasks.c | 2 +- src/common_tasks.h | 2 +- src/coroutine.c | 2 +- src/coroutine.h | 2 +- src/move.c | 2 +- src/move.h | 2 +- src/stages/corotest.c | 2 +- src/stages/corotest.h | 2 +- src/stages/extra.c | 2 +- src/stages/extra.h | 4 ++-- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/common_tasks.c b/src/common_tasks.c index 3bed5f3064..afb99dfbff 100644 --- a/src/common_tasks.c +++ b/src/common_tasks.c @@ -1,5 +1,5 @@ /* - * This software is licensed under the terms of the MIT-License + * This software is licensed under the terms of the MIT License. * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . diff --git a/src/common_tasks.h b/src/common_tasks.h index 3e3687ff7f..4b0ed740b3 100644 --- a/src/common_tasks.h +++ b/src/common_tasks.h @@ -1,5 +1,5 @@ /* - * This software is licensed under the terms of the MIT-License + * This software is licensed under the terms of the MIT License. * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . diff --git a/src/coroutine.c b/src/coroutine.c index 1aed9e7d6d..6eee7f66bc 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -1,5 +1,5 @@ /* - * This software is licensed under the terms of the MIT-License + * This software is licensed under the terms of the MIT License. * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . diff --git a/src/coroutine.h b/src/coroutine.h index ba0dfc9c8e..aae6cbb294 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -1,5 +1,5 @@ /* - * This software is licensed under the terms of the MIT-License + * This software is licensed under the terms of the MIT License. * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . diff --git a/src/move.c b/src/move.c index 6a6dbd01e1..61547cc9a4 100644 --- a/src/move.c +++ b/src/move.c @@ -1,5 +1,5 @@ /* - * This software is licensed under the terms of the MIT-License + * This software is licensed under the terms of the MIT License. * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . diff --git a/src/move.h b/src/move.h index ee2994cced..8b72e3fbe7 100644 --- a/src/move.h +++ b/src/move.h @@ -1,5 +1,5 @@ /* - * This software is licensed under the terms of the MIT-License + * This software is licensed under the terms of the MIT License. * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 9b49e52758..ab370d57cb 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -1,5 +1,5 @@ /* - * This software is licensed under the terms of the MIT-License + * This software is licensed under the terms of the MIT License. * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . diff --git a/src/stages/corotest.h b/src/stages/corotest.h index 8c02a9b88d..7c4b4ec046 100644 --- a/src/stages/corotest.h +++ b/src/stages/corotest.h @@ -1,5 +1,5 @@ /* - * This software is licensed under the terms of the MIT-License + * This software is licensed under the terms of the MIT License. * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . diff --git a/src/stages/extra.c b/src/stages/extra.c index 447d6c384b..d219816ae6 100644 --- a/src/stages/extra.c +++ b/src/stages/extra.c @@ -1,5 +1,5 @@ /* - * This software is licensed under the terms of the MIT-License + * This software is licensed under the terms of the MIT License. * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . diff --git a/src/stages/extra.h b/src/stages/extra.h index ae48e60313..5e01905ddd 100644 --- a/src/stages/extra.h +++ b/src/stages/extra.h @@ -1,5 +1,5 @@ /* - * This software is licensed under the terms of the MIT-License + * This software is licensed under the terms of the MIT License. * See COPYING for further information. * --- * Copyright (c) 2011-2019, Lukas Weber . @@ -10,9 +10,9 @@ #define IGUARD_stages_extra_h #include "taisei.h" + #include "stage.h" extern StageProcs extra_procs; #endif // IGUARD_stages_extra_h - From 196106f39c0892d664b9d9eb29d613516b049867 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 4 Oct 2019 06:12:32 +0300 Subject: [PATCH 039/104] fix another subtask corruption --- src/coroutine.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/coroutine.c b/src/coroutine.c index 6eee7f66bc..db4341fb8c 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -106,6 +106,7 @@ void cotask_free(CoTask *task) { task->supertask = NULL; memset(&task->bound_ent, 0, sizeof(task->bound_ent)); memset(&task->finalizer, 0, sizeof(task->finalizer)); + memset(&task->subtasks, 0, sizeof(task->subtasks)); alist_push(&task_pool, task); --num_tasks_in_use; @@ -373,6 +374,8 @@ uint cosched_run_tasks(CoSched *sched) { } void cosched_finish(CoSched *sched) { + // FIXME: should we ensure that finalizers get called even here? + for(CoTask *t = sched->pending_tasks.first, *next; t; t = next) { next = t->next; cotask_free(t); From 634cb2088319b6635908753ba94382bc76c7472b Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 6 Oct 2019 13:50:58 +0300 Subject: [PATCH 040/104] remake Cirno's snowflake non --- src/coroutine.c | 2 +- src/entity.h | 2 + src/move.c | 10 +++ src/move.h | 5 ++ src/projectile.c | 1 + src/stages/corotest.c | 2 +- src/stages/stage1_events.c | 157 +++++++++++++++++++++++-------------- 7 files changed, 116 insertions(+), 63 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index db4341fb8c..7ea1dc63df 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -11,7 +11,7 @@ #include "coroutine.h" #include "util.h" -#define CO_STACK_SIZE (64 * 1024) +#define CO_STACK_SIZE (128 * 1024) // #define TASK_DEBUG // #define EVT_DEBUG diff --git a/src/entity.h b/src/entity.h index ced10f1637..b08eef4742 100644 --- a/src/entity.h +++ b/src/entity.h @@ -274,4 +274,6 @@ INLINE void _ent_array_add_Entity(struct EntityInterface *ent, BoxedEntityArray } \ } while(0) +#define ENT_ARRAY_CLEAR(_array) ((_array)->size = 0) + #endif // IGUARD_entity_h diff --git a/src/move.c b/src/move.c index 61547cc9a4..531312a877 100644 --- a/src/move.c +++ b/src/move.c @@ -29,3 +29,13 @@ complex move_update(complex *restrict pos, MoveParams *restrict p) { return v; } + +complex move_update_multiple(uint times, complex *restrict pos, MoveParams *restrict p) { + complex v = p->velocity; + + while(times--) { + move_update(pos, p); + } + + return v; +} diff --git a/src/move.h b/src/move.h index 8b72e3fbe7..708f6e1516 100644 --- a/src/move.h +++ b/src/move.h @@ -23,6 +23,7 @@ typedef struct MoveParams { } MoveParams; complex move_update(complex *restrict pos, MoveParams *restrict params); +complex move_update_multiple(uint times, complex *restrict pos, MoveParams *restrict params); INLINE MoveParams move_linear(complex vel) { return (MoveParams) { vel, 0, 1 }; @@ -50,4 +51,8 @@ INLINE MoveParams move_towards(complex target, complex attraction) { }; } +INLINE MoveParams move_stop(complex retention) { + return (MoveParams) { .retention = retention }; +} + #endif // IGUARD_move_h diff --git a/src/projectile.c b/src/projectile.c index 07474fed70..07e35625f8 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -709,6 +709,7 @@ static void bullet_highlight_draw(Projectile *p, int t) { float opacity = pow(1 - timefactor, 2); opacity = min(1, 1.5 * opacity) * min(1, timefactor * 10); + opacity *= 1 - p->shader_params.vector[0]; r_mat_tex_push(); r_mat_tex_translate(0.5, 0.5, 0); diff --git a/src/stages/corotest.c b/src/stages/corotest.c index ab370d57cb..2273e26b42 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -113,7 +113,7 @@ TASK_WITH_FINALIZER(test_enemy, { Projectile *p = PROJECTILE( .pos = e->pos, .proto = pp_rice, - .color = RGBA(1.0, 0.0, i / (pcount - 1.0), 0.0), + .color = RGBA(1.0, 0.2, i / (pcount - 1.0), 0.0), .move = move_asymptotic(aim * 4 * cdir(a + M_PI), aim * cdir(-a * 2), 0.9), .max_viewport_dist = 128, ); diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 2e0b1570e5..a077b26d49 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1623,89 +1623,124 @@ TASK(multiburst_fairies_1, NO_ARGS) { TASK_WITH_INTERFACE(midboss_intro, BossAttack) { Boss *boss = TASK_BIND(ARGS.boss); WAIT_EVENT(&ARGS.attack->events.started); - boss->move = move_towards(VIEWPORT_W/2.0 + 100.0*I, 0.035); + boss->move = move_towards(VIEWPORT_W/2.0 + 200.0*I, 0.035); } +#define SNOWFLAKE_ARMS 6 +static int snowflake_bullet_limit(int size) { + // >= number of bullets spawned per snowflake of this size + return SNOWFLAKE_ARMS * 4 * size; +} + +TASK(make_snowflake, { complex pos; MoveParams move; int size; double rot_angle; BoxedProjectileArray *array; }) { + const double spacing = 12; + const int split = 3; + int t = 0; + + for(int j = 0; j < ARGS.size; j++) { + play_loop("shot1_loop"); + + for(int i = 0; i < SNOWFLAKE_ARMS; i++) { + double ang = M_TAU / SNOWFLAKE_ARMS * i + ARGS.rot_angle; + complex phase = cdir(ang); + complex pos0 = ARGS.pos + spacing * j * phase; + + Projectile *p; + + for(int side = -1; side <= 1; side += 2) { + p = PROJECTILE( + .proto = pp_crystal, + .pos = pos0 + side * 5 * I * phase, + .color = RGB(0.0 + 0.05 * j, 0.1 + 0.1 * j, 0.9), + .move = ARGS.move, + .angle = ang + side * M_PI / 4, + .max_viewport_dist = 128, + .flags = PFLAG_MANUALANGLE, + ); + move_update_multiple(t, &p->pos, &p->move); + p->pos0 = p->prevpos = p->pos; + ENT_ARRAY_ADD(ARGS.array, p); + } + + WAIT(1); + ++t; + + if(j > split) { + complex pos1 = ARGS.pos + spacing * split * phase; -TASK(cirno_snowflake_proj_twist, { BoxedProjectile p; }) { - Projectile *p = TASK_BIND(ARGS.p); + for(int side = -1; side <= 1; side += 2) { + complex phase2 = cdir(M_PI / 4 * side) * phase; + complex pos2 = pos1 + (spacing * (j - split)) * phase2; + + p = PROJECTILE( + .proto = pp_crystal, + .pos = pos2, + .color = RGB(0.0, 0.3 * ARGS.size / 5, 1), + .move = ARGS.move, + .angle = ang + side * M_PI / 4, + .max_viewport_dist = 128, + .flags = PFLAG_MANUALANGLE, + ); + move_update_multiple(t, &p->pos, &p->move); + p->pos0 = p->prevpos = p->pos; + ENT_ARRAY_ADD(ARGS.array, p); + } - play_sound_ex("redirect", 30, false); - play_sound_ex("shot_special1", 30, false); - color_lerp(&p->color, RGB(0.5, 0.5, 0.5), 0.5); - spawn_projectile_highlight_effect(p); - p->move.velocity = -cabs(p->move.velocity)*cdir(p->angle); + WAIT(1); + ++t; + } + } + } } TASK_WITH_INTERFACE(icy_storm, BossAttack) { Boss *boss = TASK_BIND(ARGS.boss); Attack *a = ARGS.attack; + boss->move = move_towards(CMPLX(VIEWPORT_W/2, 200), 0.02); + CANCEL_TASK_WHEN(&a->events.finished, THIS_TASK); WAIT_EVENT(&a->events.started); - int interval = 70 - 8 * global.diff; + boss->move = move_stop(0.8); - for(int run = 0;; run++) { - complex vel = (1+0.125*global.diff)*cexp(I*fmod(200*run,M_PI)); - int c = 6; - double dr = 15; - int size = 5+3*sin(337*run); + int flake_spawn_interval = difficulty_value(11, 10, 9, 8); + int flakes_per_burst = difficulty_value(3, 5, 7, 9); + double launch_speed = difficulty_value(5, 6.25, 6.875, 8.75); + int size_base = 5; + int size_oscillation = 3; + int size_max = size_base + size_oscillation; + int burst_interval = difficulty_value(120, 80, 80, 80); - int start_time = global.frames; + int flakes_limit = flakes_per_burst * snowflake_bullet_limit(size_max); + DECLARE_ENT_ARRAY(Projectile, snowflake_projs, flakes_limit); - for(int j = 0; j < size; j++) { - WAIT(3); - play_loop("shot1_loop"); - for(int i = 0; i < c; i++) { - double ang = 2*M_PI/c*i+run*515; - complex phase = cdir(ang); - int t = global.frames-start_time; - complex pos = boss->pos+vel*t+dr*j*phase; + for(int burst = 0;; ++burst) { + double angle_ofs = carg(global.plr.pos - boss->pos); + int size = size_base + size_oscillation * sin(burst * 2.21); - int split_time = 200 - 20*global.diff - j*3; - Projectile *p; + for(int flake = 0; flake < flakes_per_burst; ++flake) { + double angle = circle_angle(flake + flakes_per_burst / 2, flakes_per_burst) + angle_ofs; + MoveParams move = move_asymptotic(launch_speed * cdir(angle), 0, 0.95); + INVOKE_SUBTASK(make_snowflake, boss->pos, move, size, angle, &snowflake_projs); + WAIT(flake_spawn_interval); + } - for(int side = -1; side <= 1; side += 2) { - p = PROJECTILE( - .proto = pp_crystal, - .pos = pos+side*6*I*phase, - .color = RGB(0.0, 0.1 + 0.1 * size / 5, 0.8), - .move = move_linear(vel), - .angle = ang+side*M_PI/4, - .max_viewport_dist = 64, - .flags = PFLAG_MANUALANGLE, - ); - INVOKE_TASK_DELAYED(split_time, cirno_snowflake_proj_twist, ENT_BOX(p)); - } + WAIT(65 - 4 * (size_base + size_oscillation - size)); - int split = 3; - - if(j > split) { - complex pos0 = boss->pos+vel*t+dr*split*phase; - - for(int side = -1; side <= 1; side+=2) { - complex phase2 = cdir(M_PI/4*side)*phase; - complex pos2 = pos0+(dr*(j-split))*phase2; - - p = PROJECTILE( - .proto = pp_crystal, - .pos = pos2, - .color = RGB(0.0,0.3*size/5,1), - .move = move_linear(vel), - .angle = ang+M_PI/4*side, - .max_viewport_dist = 64, - .flags = PFLAG_MANUALANGLE, - ); - INVOKE_TASK_DELAYED(split_time, cirno_snowflake_proj_twist, ENT_BOX(p)); - } - } - } + play_sound("redirect"); + // play_sound("shot_special1"); - } + ENT_ARRAY_FOREACH(&snowflake_projs, Projectile *p, { + spawn_projectile_highlight_effect(p)->shader_params.vector[0] = 0.75; + color_lerp(&p->color, RGB(0.5, 0.5, 0.5), 0.5); + p->move.velocity = 2 * cdir(p->angle); + p->move.acceleration = -cdir(p->angle) * difficulty_value(0.1, 0.15, 0.2, 0.2); + }); - WAIT(interval-3*size); + ENT_ARRAY_CLEAR(&snowflake_projs); + WAIT(burst_interval); } } From 62f56e19f9c0af2ce0c63303892bc24779fe4ddc Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 6 Oct 2019 15:53:13 +0300 Subject: [PATCH 041/104] remove a bunch of stage1 dead code --- src/stages/stage1_events.c | 437 ------------------------------------- src/stages/stage1_events.h | 1 - 2 files changed, 438 deletions(-) diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index a077b26d49..8650eca9c2 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -32,102 +32,6 @@ static Dialog *stage1_dialog_post_boss(void) { return d; } -static void cirno_intro(Boss *c, int time) { - if(time < 0) - return; - - GO_TO(c, VIEWPORT_W/2.0 + 100.0*I, 0.035); -} - -static int cirno_snowflake_proj(Projectile *p, int time) { - if(time < 0) - return ACTION_ACK; - - int split_time = 200 - 20*global.diff - creal(p->args[1]) * 3; - - if(time < split_time) { - p->pos += p->args[0]; - } else { - if(time == split_time) { - play_sound_ex("redirect", 30, false); - play_sound_ex("shot_special1", 30, false); - color_lerp(&p->color, RGB(0.5, 0.5, 0.5), 0.5); - spawn_projectile_highlight_effect(p); - } - - p->pos -= cabs(p->args[0]) * cexp(I*p->angle); - } - - return 1; -} - -static void cirno_icy(Boss *b, int time) { - int interval = 70 - 8 * global.diff; - int t = time % interval; - int run = time / interval; - int size = 5+3*sin(337*run); - - TIMER(&t); - - if(time < 0) { - return; - } - - cmplx vel = (1+0.125*global.diff)*cexp(I*fmod(200*run,M_PI)); - int c = 6; - double dr = 15; - - FROM_TO_SND("shot1_loop", 0, 3*size, 3) { - for(int i = 0; i < c; i++) { - double ang = 2*M_PI/c*i+run*515; - cmplx phase = cexp(I*ang); - cmplx pos = b->pos+vel*t+dr*_i*phase; - - PROJECTILE( - .proto = pp_crystal, - .pos = pos+6*I*phase, - .color = RGB(0.0, 0.1 + 0.1 * size / 5, 0.8), - .rule = cirno_snowflake_proj, - .move = move_linear(vel), - .angle = ang+M_PI/4, - .max_viewport_dist = 64, - ); - - - PROJECTILE( - .proto = pp_crystal, - .pos = pos-6*I*phase, - .color = RGB(0.0,0.1+0.1*size/5,0.8), - .rule = cirno_snowflake_proj, - .args = { vel, _i }, - .angle = ang-M_PI/4, - .max_viewport_dist = 64, - ); - - int split = 3; - - if(_i > split) { - cmplx pos0 = b->pos+vel*t+dr*split*phase; - - for(int j = -1; j <= 1; j+=2) { - cmplx phase2 = cexp(I*M_PI/4*j)*phase; - cmplx pos2 = pos0+(dr*(_i-split))*phase2; - - PROJECTILE( - .proto = pp_crystal, - .pos = pos2, - .color = RGB(0.0,0.3*size/5,1), - .rule = cirno_snowflake_proj, - .args = { vel, _i }, - .angle = ang+M_PI/4*j, - .max_viewport_dist = 64, - ); - } - } - } - } -} - static Projectile* spawn_stain(cmplx pos, float angle, int to) { return PARTICLE( .sprite = "stain", @@ -140,110 +44,6 @@ static Projectile* spawn_stain(cmplx pos, float angle, int to) { ); } -static int cirno_pfreeze_frogs(Projectile *p, int t) { - if(t < 0) - return ACTION_ACK; - - Boss *parent = global.boss; - - if(parent == NULL) - return ACTION_DESTROY; - - int boss_t = (global.frames - parent->current->starttime) % 320; - - if(boss_t < 110) - linear(p, t); - else if(boss_t == 110) { - p->color = *RGB(0.7, 0.7, 0.7); - spawn_stain(p->pos, p->angle, 30); - spawn_stain(p->pos, p->angle, 30); - spawn_projectile_highlight_effect(p); - play_sound("shot_special1"); - } - - if(t == 240) { - p->prevpos = p->pos; - p->pos0 = p->pos; - p->args[0] = (1.8+0.2*global.diff)*cexp(I*2*M_PI*frand()); - spawn_stain(p->pos, p->angle, 30); - spawn_projectile_highlight_effect(p); - play_sound_ex("shot2", 0, false); - } - - if(t > 240) - linear(p, t-240); - - return 1; -} - -void cirno_perfect_freeze(Boss *c, int time) { - int t = time % 320; - TIMER(&t); - - if(time < 0) - return; - - FROM_TO(-40, 0, 1) - GO_TO(c, VIEWPORT_W/2.0 + 100.0*I, 0.04); - - FROM_TO_SND("shot1_loop",20,80,1) { - float r = frand(); - float g = frand(); - float b = frand(); - - int i; - int n = global.diff; - for(i = 0; i < n; i++) { - PROJECTILE( - .proto = pp_ball, - .pos = c->pos, - .color = RGB(r, g, b), - .rule = cirno_pfreeze_frogs, - .args = { 4*cexp(I*tsrand()) }, - ); - } - } - - GO_AT(c, 160, 190, 2 + 1.0*I); - - int d = max(0, global.diff - D_Normal); - AT(140-50*d) - aniplayer_queue(&c->ani,"(9)",0); - AT(220+30*d) - aniplayer_queue(&c->ani,"main",0); - FROM_TO_SND("shot1_loop", 160 - 50*d, 220 + 30*d, 6-global.diff/2) { - float r1, r2; - - if(global.diff > D_Normal) { - r1 = sin(time/M_PI*5.3) * cos(2*time/M_PI*5.3); - r2 = cos(time/M_PI*5.3) * sin(2*time/M_PI*5.3); - } else { - r1 = nfrand(); - r2 = nfrand(); - } - - PROJECTILE( - .proto = pp_rice, - .pos = c->pos + 60, - .color = RGB(0.3, 0.4, 0.9), - .rule = asymptotic, - .args = { (2.+0.2*global.diff)*cexp(I*(carg(global.plr.pos - c->pos) + 0.5*r1)), 2.5 } - ); - PROJECTILE( - .proto = pp_rice, - .pos = c->pos - 60, - .color = RGB(0.3, 0.4, 0.9), - .rule = asymptotic, - .args = { (2.+0.2*global.diff)*cexp(I*(carg(global.plr.pos - c->pos) + 0.5*r2)), 2.5 } - ); - } - - GO_AT(c, 190, 220, -2); - - FROM_TO(280, 320, 1) - GO_TO(c, VIEWPORT_W/2.0 + 100.0*I, 0.04); -} - void cirno_pfreeze_bg(Boss *c, int time) { r_color4(0.5, 0.5, 0.5, 1.0); fill_viewport(time/700.0, time/700.0, 1, "stage1/cirnobg"); @@ -256,12 +56,6 @@ void cirno_pfreeze_bg(Boss *c, int time) { r_color4(1.0, 1.0, 1.0, 1.0); } -static void cirno_mid_flee(Boss *c, int time) { - if(time >= 0) { - GO_TO(c, -250 + 30 * I, 0.02) - } -} - Boss* stage1_spawn_cirno(cmplx pos) { Boss *cirno = create_boss("Cirno", "cirno", pos); boss_set_portrait(cirno, get_sprite("dialog/cirno"), get_sprite("dialog/cirno_face_normal")); @@ -270,18 +64,6 @@ Boss* stage1_spawn_cirno(cmplx pos) { return cirno; } -static Boss* create_cirno_mid(void) { - Boss *cirno = stage1_spawn_cirno(VIEWPORT_W + 220 + 30.0*I); - - boss_add_attack(cirno, AT_Move, "Introduction", 2, 0, cirno_intro, NULL); - boss_add_attack(cirno, AT_Normal, "Icy Storm", 20, 24000, cirno_icy, NULL); - boss_add_attack_from_info(cirno, &stage1_spells.mid.perfect_freeze, false); - boss_add_attack(cirno, AT_Move, "Flee", 5, 0, cirno_mid_flee, NULL); - - boss_start_attack(cirno, cirno->attacks); - return cirno; -} - static void cirno_intro_boss(Boss *c, int time) { if(time < 0) return; @@ -867,18 +649,6 @@ void cirno_benchmark(Boss* b, int t) { } } -attr_unused -static void cirno_superhardspellcard(Boss *c, int t) { - // HOWTO: create a super hard spellcard in a few seconds - - cirno_iceplosion0(c, t); - cirno_iceplosion1(c, t); - cirno_crystal_rain(c, t); - cirno_icicle_fall(c, t); - cirno_icy(c, t); - cirno_perfect_freeze(c, t); -} - static Boss *create_cirno(void) { Boss* cirno = stage1_spawn_cirno(-230 + 100.0*I); @@ -898,50 +668,6 @@ static Boss *create_cirno(void) { return cirno; } -static int stage1_burst(Enemy *e, int time) { - TIMER(&time); - - AT(EVENT_KILLED) { - spawn_items(e->pos, ITEM_POINTS, 1, ITEM_POWER, 1); - return ACTION_ACK; - } - - FROM_TO(0, 60, 1) { - // e->pos += 2.0*I; - GO_TO(e, e->pos0 + 120*I, 0.03); - } - - AT(60) { - int i = 0; - int n = 1.5*global.diff-1; - - play_sound("shot1"); - for(i = -n; i <= n; i++) { - PROJECTILE( - .proto = pp_crystal, - .pos = e->pos, - .color = RGB(0.2, 0.3, 0.5), - .rule = asymptotic, - .args = { - (2+0.1*global.diff)*cexp(I*(carg(global.plr.pos - e->pos) + 0.2*i)), - 5 - } - ); - } - - e->moving = true; - e->dir = creal(e->args[0]) < 0; - - e->pos0 = e->pos; - } - - FROM_TO(70, 900, 1) { - e->pos = e->pos0 + (0.04*e->args[0])*_i*_i; - } - - return 1; -} - static int stage1_circletoss(Enemy *e, int time) { TIMER(&time); AT(EVENT_KILLED) { @@ -989,32 +715,6 @@ static int stage1_circletoss(Enemy *e, int time) { return 1; } -static int stage1_sinepass(Enemy *e, int time) { - TIMER(&time); - AT(EVENT_KILLED) { - spawn_items(e->pos, ITEM_POINTS, 1); - return 1; - } - - e->args[1] -= cimag(e->pos-e->pos0)*0.03*I; - e->pos += e->args[1]*0.4 + e->args[0]; - - if(frand() > 0.997-0.005*(global.diff-1)) { - play_sound("shot1"); - PROJECTILE( - .proto = pp_ball, - .pos = e->pos, - .color = RGB(0.8,0.8,0.4), - .rule = linear, - .args = { - (1+0.2*global.diff+frand())*cexp(I*carg(global.plr.pos - e->pos)) - } - ); - } - - return 1; -} - static int stage1_drop(Enemy *e, int t) { TIMER(&t); AT(EVENT_KILLED) { @@ -1044,35 +744,6 @@ static int stage1_drop(Enemy *e, int t) { return 1; } -static int stage1_circle(Enemy *e, int t) { - TIMER(&t); - AT(EVENT_KILLED) { - spawn_items(e->pos, ITEM_POINTS, 3, ITEM_POWER, 2); - return 1; - } - - FROM_TO(0, 150, 1) - e->pos += (e->args[0] - e->pos)*0.02; - - FROM_TO_INT_SND("shot1_loop",150, 550, 40, 40, 2+2*(global.diffpos, - .color = RGB(0.6, 0.2, 0.7), - .rule = asymptotic, - .args = { - (1.7+0.2*global.diff)*cexp(I*M_PI/10*_ni), - _ni/2.0 - } - ); - } - - FROM_TO(560,1000,1) - e->pos += e->args[1]; - - return 1; -} - static int stage1_multiburst(Enemy *e, int t) { TIMER(&t); AT(EVENT_KILLED) { @@ -1866,24 +1537,6 @@ TASK(stage_timeline, NO_ARGS) { stage_start_bgm("stage1"); stage_set_voltage_thresholds(50, 125, 300, 600); - /* - for(;;) { - complex pos, tpos; - - if(frand() > 0.5) { - pos = VIEWPORT_W - 64; - } else { - pos = 64; - } - - tpos = rand_range(64, VIEWPORT_W - 64) + 200 * I; - - INVOKE_TASK(circle_fairy, pos, tpos); - WAIT(240); - } - return; - */ - INVOKE_TASK_DELAYED(100, burst_fairies_1); INVOKE_TASK_DELAYED(240, burst_fairies_2); INVOKE_TASK_DELAYED(440, sinepass_swirls, 180, 100, 1); @@ -1908,96 +1561,6 @@ void stage1_events(void) { return; -#ifdef BULLET_TEST - if(!global.projs) { - PROJECTILE( - .proto = pp_rice, - .pos = (VIEWPORT_W + VIEWPORT_H * I) * 0.5, - .color = hsl(0.5, 1.0, 0.5), - .rule = proj_rotate, - ); - } - - if(!(global.frames % 36)) { - ProjPrototype *projs[] = { - pp_thickrice, - pp_rice, - // pp_ball, - // pp_plainball, - // pp_bigball, - // pp_soul, - pp_wave, - pp_card, - pp_bigball, - pp_plainball, - pp_ball, - }; - int numprojs = sizeof(projs)/sizeof(*projs); - - for(int i = 0; i < numprojs; ++i) { - PROJECTILE( - .proto = projs[i], - .pos = ((0.5 + i) * VIEWPORT_W/numprojs + 0 * I), - .color = hsl(0.5, 1.0, 0.5), - .rule = linear, - .args = { 1*I }, - ); - } - - } - - return; -#endif - - // opening. projectile bursts - FROM_TO(100, 160, 25) { - create_enemy1c(VIEWPORT_W/2 + 70, 700, Fairy, stage1_burst, 1 + 0.6*I); - create_enemy1c(VIEWPORT_W/2 - 70, 700, Fairy, stage1_burst, -1 + 0.6*I); - } - - // more bursts. fairies move / \ like - FROM_TO(240, 300, 30) { - create_enemy1c(70 + _i*40, 700, Fairy, stage1_burst, -1 + 0.6*I); - create_enemy1c(VIEWPORT_W - (70 + _i*40), 700, Fairy, stage1_burst, 1 + 0.6*I); - } - - // big fairies, circle + projectile toss - FROM_TO(400, 460, 50) - create_enemy2c(VIEWPORT_W*_i + VIEWPORT_H/3*I, 1500, BigFairy, stage1_circletoss, 2-4*_i-0.3*I, 1-2*_i); - - // swirl, sine pass - FROM_TO(380, 1000, 20) { - tsrand_fill(2); - create_enemy2c(VIEWPORT_W*(_i&1) + afrand(0)*100.0*I + 70.0*I, 100, Swirl, stage1_sinepass, 3.5*(1-2*(_i&1)), afrand(1)*7.0*I); - } - - // swirl, drops - FROM_TO(1100, 1600, 20) - create_enemy2c(VIEWPORT_W/3, 100, Swirl, stage1_drop, 4.0*I, 0.06); - - FROM_TO(1500, 2000, 20) - create_enemy2c(VIEWPORT_W+200.0*I, 100, Swirl, stage1_drop, -2, -0.04-0.03*I); - - // bursts - FROM_TO(1250, 1800, 60) { - create_enemy1c(VIEWPORT_W/2 - 200 * sin(1.17*global.frames), 500, Fairy, stage1_burst, nfrand()); - } - - // circle - multi burst combo - FROM_TO(1700, 2300, 300) { - tsrand_fill(3); - create_enemy2c(VIEWPORT_W/2, 1400, BigFairy, stage1_circle, VIEWPORT_W/4 + VIEWPORT_W/2*afrand(0)+200.0*I, 3-6*(afrand(1)>0.5)+afrand(2)*2.0*I); - } - - FROM_TO(2000, 2500, 200) { - int t = global.diff + 1; - for(int i = 0; i < t; i++) - create_enemy1c(VIEWPORT_W/2 - 40*t + 80*i, 1000, Fairy, stage1_multiburst, i - 2.5); - } - - AT(2700) - global.boss = create_cirno_mid(); - // some chaotic swirls + instant circle combo FROM_TO(2760, 3800, 20) { tsrand_fill(2); diff --git a/src/stages/stage1_events.h b/src/stages/stage1_events.h index 02087f209e..3ab1d0bba5 100644 --- a/src/stages/stage1_events.h +++ b/src/stages/stage1_events.h @@ -13,7 +13,6 @@ #include "boss.h" -void cirno_perfect_freeze(Boss*, int); void cirno_crystal_rain(Boss*, int); void cirno_snow_halation(Boss*, int); void cirno_icicle_fall(Boss*, int); From c10177ade308a71cb9acd2fe8d0b5000e14b072b Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 6 Oct 2019 20:06:01 +0300 Subject: [PATCH 042/104] stupid shitfucked braindeath --- src/boss.c | 6 +++ src/boss.h | 4 ++ src/coroutine.c | 11 ++++ src/coroutine.h | 105 +++++++++++++++++++++++++++++-------- src/stages/stage1_events.c | 24 +++------ 5 files changed, 111 insertions(+), 39 deletions(-) diff --git a/src/boss.c b/src/boss.c index ef2de691f5..0f512131ec 100644 --- a/src/boss.c +++ b/src/boss.c @@ -1479,6 +1479,12 @@ Attack* boss_add_attack_from_info(Boss *boss, AttackInfo *info, char move) { return a; } +Boss *_init_boss_attack(const BossAttackTaskArgs *restrict args) { + Boss *boss = TASK_BIND(args->boss); + CANCEL_TASK_AFTER(&args->attack->events.finished, THIS_TASK); + return boss; +} + void boss_preload(void) { preload_resources(RES_SFX, RESF_OPTIONAL, "charge_generic", diff --git a/src/boss.h b/src/boss.h index 8a62d66761..f6719d912c 100644 --- a/src/boss.h +++ b/src/boss.h @@ -211,4 +211,8 @@ void boss_preload(void); #define BOSS_DEFAULT_GO_POS (VIEWPORT_W * 0.5 + 200.0*I) #define BOSS_NOMOVE (-3142-39942.0*I) +Boss *_init_boss_attack(const BossAttackTaskArgs *restrict args); +#define INIT_BOSS_ATTACK() _init_boss_attack(&ARGS) +#define BEGIN_BOSS_ATTACK() WAIT_EVENT_OR_DIE(&ARGS.attack->events.started) + #endif // IGUARD_boss_h diff --git a/src/coroutine.c b/src/coroutine.c index 7ea1dc63df..a7b7487aaf 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -248,6 +248,17 @@ CoWaitResult cotask_wait_event(CoEvent *evt, void *arg) { } } +CoWaitResult cotask_wait_event_or_die(CoEvent *evt, void *arg) { + CoWaitResult wr = cotask_wait_event(evt, arg); + + if(wr.event_status == CO_EVENT_CANCELED) { + cotask_cancel(cotask_active()); + UNREACHABLE; + } + + return wr; +} + CoStatus cotask_status(CoTask *task) { return koishi_state(&task->ko); } diff --git a/src/coroutine.h b/src/coroutine.h index aae6cbb294..91ea9e1cee 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -67,6 +67,7 @@ bool cotask_cancel(CoTask *task); void *cotask_resume(CoTask *task, void *arg); void *cotask_yield(void *arg); CoWaitResult cotask_wait_event(CoEvent *evt, void *arg); +CoWaitResult cotask_wait_event_or_die(CoEvent *evt, void *arg); CoStatus cotask_status(CoTask *task); CoTask *cotask_active(void); EntityInterface *cotask_bind_to_entity(CoTask *task, EntityInterface *ent) attr_returns_nonnull; @@ -135,12 +136,12 @@ INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; /* type of internal args struct for INVOKE_TASK_DELAYED */ \ struct TASK_ARGSDELAY_NAME(name) { TASK_ARGS_TYPE(name) real_args; int delay; }; \ /* type of internal args struct for INVOKE_TASK_WHEN */ \ - struct TASK_ARGSCOND_NAME(name) { TASK_ARGS_TYPE(name) real_args; CoEvent *event; }; \ + struct TASK_ARGSCOND_NAME(name) { TASK_ARGS_TYPE(name) real_args; CoEvent *event; bool unconditional; }; \ /* task entry point for INVOKE_TASK */ \ attr_unused linkage void *COTASKTHUNK_##name(void *arg); \ /* task entry point for INVOKE_TASK_DELAYED */ \ attr_unused linkage void *COTASKTHUNKDELAY_##name(void *arg); \ - /* task entry point for INVOKE_TASK_WHEN */ \ + /* task entry point for INVOKE_TASK_WHEN and INVOKE_TASK_AFTER */ \ attr_unused linkage void *COTASKTHUNKCOND_##name(void *arg) /* require semicolon */ \ #define TASK_COMMON_THUNK_DEFINITIONS(name, linkage) \ @@ -168,12 +169,12 @@ INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; /* exit coroutine */ \ return NULL; \ } \ - /* task entry point for INVOKE_TASK_WHEN */ \ + /* task entry point for INVOKE_TASK_WHEN and INVOKE_TASK_AFTER */ \ attr_unused linkage void *COTASKTHUNKCOND_##name(void *arg) { \ /* copy args to our coroutine stack so that they're valid after caller returns */ \ TASK_ARGSCOND(name) args_copy = *(TASK_ARGSCOND(name)*)arg; \ - /* wait for event, and if it wasn't canceled... */ \ - if(WAIT_EVENT(args_copy.event).event_status == CO_EVENT_SIGNALED) { \ + /* wait for event, and if it wasn't canceled (or if we want to run unconditionally)... */ \ + if(WAIT_EVENT(args_copy.event).event_status == CO_EVENT_SIGNALED || args_copy.unconditional) { \ /* call prologue */ \ COTASKPROLOGUE_##name(&args_copy.real_args); \ /* call body */ \ @@ -203,7 +204,7 @@ INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; #define DECLARE_TASK(name, argstruct) \ DECLARE_TASK_EXPLICIT(name, TASK_ARGS_STRUCT(argstruct), void, static) /* require semicolon */ -/* TODO document */ +/* declare a task with static linkage that conforms to a common interface (needs to be defined later) */ #define DECLARE_TASK_WITH_INTERFACE(name, iface) \ DECLARE_TASK_EXPLICIT(name, TASK_IFACE_ARGS_TYPE(iface), TASK_INDIRECT_TYPE(iface), static) /* require semicolon */ @@ -216,7 +217,7 @@ INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; DECLARE_TASK(name, argstruct); \ DEFINE_TASK(name) -/* TODO document */ +/* declare and define a task with static linkage that conforms to a common interface */ #define TASK_WITH_INTERFACE(name, iface) \ DECLARE_TASK_WITH_INTERFACE(name, iface); \ DEFINE_TASK(name) @@ -226,7 +227,7 @@ INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; #define DECLARE_EXTERN_TASK(name, argstruct) \ DECLARE_TASK_EXPLICIT(name, TASK_ARGS_STRUCT(argstruct), void, extern) /* require semicolon */ -/* TODO document */ +/* declare a task with extern linkage that conforms to a common interface (needs to be defined later) */ #define DECLARE_EXTERN_TASK_WITH_INTERFACE(name, iface) \ DECLARE_TASK_EXPLICIT(name, TASK_IFACE_ARGS_TYPE(iface), TASK_INDIRECT_TYPE(iface), extern) /* require semicolon */ @@ -283,40 +284,97 @@ INLINE BoxedTask _cotask_invoke_helper(CoTask *t, bool is_subtask) { return cotask_box(t); } +/* + * INVOKE_TASK(task_name, args...) + * INVOKE_SUBTASK(task_name, args...) + * + * This is the most basic way to start an asynchronous task. Control is transferred + * to the new task immediately when this is called, and returns to the call site + * when the task yields or terminates. + * + * Args are optional. They are treated simply as an initializer for the task's + * args struct, so it's possible to use designated initializer syntax to emulate + * "keyword arguments", etc. + * + * INVOKE_SUBTASK is identical INVOKE_TASK, except the spawned task will attach + * to the currently executing task, becoming its "sub-task" or "slave". When a + * task finishes executing, all of its sub-tasks are also terminated recursively. + * + * Other INVOKE_ macros with a _SUBTASK version behave analogously. + */ + +#define INVOKE_TASK(...) _internal_INVOKE_TASK(false, __VA_ARGS__, ._dummy_1 = 0) +#define INVOKE_SUBTASK(...) _internal_INVOKE_TASK(true, __VA_ARGS__, ._dummy_1 = 0) -#define INVOKE_TASK_(is_subtask, name, ...) ( \ +#define _internal_INVOKE_TASK(is_subtask, name, ...) ( \ (void)COTASK_UNUSED_CHECK_##name, \ _cotask_invoke_helper(cosched_new_task(_cosched_global, COTASKTHUNK_##name, \ &(TASK_ARGS_TYPE(name)) { __VA_ARGS__ } \ ), is_subtask) \ ) -#define INVOKE_TASK(...) INVOKE_TASK_(false, __VA_ARGS__, ._dummy_1 = 0) -#define INVOKE_SUBTASK(...) INVOKE_TASK_(true, __VA_ARGS__, ._dummy_1 = 0) +/* + * INVOKE_TASK_DELAYED(delay, task_name, args...) + * INVOKE_SUBTASK_DELAYED(delay, task_name, args...) + * + * Like INVOKE_TASK, but the task will yield times before executing the + * actual task body. + */ + +#define INVOKE_TASK_DELAYED(_delay, ...) _internal_INVOKE_TASK_DELAYED(false, _delay, __VA_ARGS__, ._dummy_1 = 0) +#define INVOKE_SUBTASK_DELAYED(_delay, ...) _internal_INVOKE_TASK_DELAYED(true, _delay, __VA_ARGS__, ._dummy_1 = 0) -#define INVOKE_TASK_WHEN_(is_subtask, _event, name, ...) ( \ +#define _internal_INVOKE_TASK_DELAYED(is_subtask, _delay, name, ...) ( \ (void)COTASK_UNUSED_CHECK_##name, \ - _cotask_invoke_helper(cosched_new_task(_cosched_global, COTASKTHUNKCOND_##name, \ - &(TASK_ARGSCOND(name)) { .real_args = { __VA_ARGS__ }, .event = (_event) } \ + _cotask_invoke_helper(cosched_new_task(_cosched_global, COTASKTHUNKDELAY_##name, \ + &(TASK_ARGSDELAY(name)) { .real_args = { __VA_ARGS__ }, .delay = (_delay) } \ ), is_subtask) \ ) -#define INVOKE_TASK_WHEN(_event, ...) INVOKE_TASK_WHEN_(false, _event, __VA_ARGS__, ._dummy_1 = 0) -#define INVOKE_SUBTASK_WHEN(_event, ...) INVOKE_TASK_WHEN_(true, _event, __VA_ARGS__, ._dummy_1 = 0) +/* + * INVOKE_TASK_WHEN(event, task_name, args...) + * INVOKE_SUBTASK_WHEN(event, task_name, args...) + * + * INVOKE_TASK_AFTER(event, task_name, args...) + * INVOKE_SUBTASK_AFTER(event, task_name, args...) + * + * Both INVOKE_TASK_WHEN and INVOKE_TASK_AFTER spawn a task that waits for an + * event to occur. The difference is that _WHEN aborts the task if the event has + * been canceled, but _AFTER proceeds to execute it unconditionally. + * + * is a pointer to a CoEvent struct. + */ + +#define INVOKE_TASK_WHEN(_event, ...) _internal_INVOKE_TASK_ON_EVENT(false, false, _event, __VA_ARGS__, ._dummy_1 = 0) +#define INVOKE_SUBTASK_WHEN(_event, ...) _internal_INVOKE_TASK_ON_EVENT(true, false, _event, __VA_ARGS__, ._dummy_1 = 0) + +#define INVOKE_TASK_AFTER(_event, ...) _internal_INVOKE_TASK_ON_EVENT(false, true, _event, __VA_ARGS__, ._dummy_1 = 0) +#define INVOKE_SUBTASK_AFTER(_event, ...) _internal_INVOKE_TASK_ON_EVENT(true, true, _event, __VA_ARGS__, ._dummy_1 = 0) -#define INVOKE_TASK_DELAYED_(is_subtask, _delay, name, ...) ( \ +#define _internal_INVOKE_TASK_ON_EVENT(is_subtask, is_unconditional, _event, name, ...) ( \ (void)COTASK_UNUSED_CHECK_##name, \ - _cotask_invoke_helper(cosched_new_task(_cosched_global, COTASKTHUNKDELAY_##name, \ - &(TASK_ARGSDELAY(name)) { .real_args = { __VA_ARGS__ }, .delay = (_delay) } \ + _cotask_invoke_helper(cosched_new_task(_cosched_global, COTASKTHUNKCOND_##name, \ + &(TASK_ARGSCOND(name)) { .real_args = { __VA_ARGS__ }, .event = (_event), .unconditional = is_unconditional } \ ), is_subtask) \ ) -#define INVOKE_TASK_DELAYED(_delay, ...) INVOKE_TASK_DELAYED_(false, _delay, __VA_ARGS__, ._dummy_1 = 0) -#define INVOKE_SUBTASK_DELAYED(_delay, ...) INVOKE_TASK_DELAYED_(true, _delay, __VA_ARGS__, ._dummy_1 = 0) - -DECLARE_EXTERN_TASK(_cancel_task_helper, { BoxedTask task; }); +/* + * CANCEL_TASK_WHEN(event, boxed_task) + * CANCEL_TASK_AFTER(event, boxed_task) + * + * Invokes an auxiliary task that will wait for an event, and then cancel another + * running task. The difference between WHEN and AFTER is the same as in + * INVOKE_TASK_WHEN/INVOKE_TASK_AFTER -- this is a simple wrapper around those. + * + * is a pointer to a CoEvent struct. + * is a BoxedTask struct; use cotask_box to obtain one from a pointer. + * You can also use the THIS_TASK macro to refer to the currently running task. + */ #define CANCEL_TASK_WHEN(_event, _task) INVOKE_TASK_WHEN(_event, _cancel_task_helper, _task) +#define CANCEL_TASK_AFTER(_event, _task) INVOKE_TASK_AFTER(_event, _cancel_task_helper, _task) + +DECLARE_EXTERN_TASK(_cancel_task_helper, { BoxedTask task; }); #define TASK_INDIRECT(iface, task) ( \ (void)COTASK_UNUSED_CHECK_##task, \ @@ -340,6 +398,7 @@ DECLARE_EXTERN_TASK(_cancel_task_helper, { BoxedTask task; }); #define YIELD cotask_yield(NULL) #define WAIT(delay) do { int _delay = (delay); while(_delay-- > 0) YIELD; } while(0) #define WAIT_EVENT(e) cotask_wait_event((e), NULL) +#define WAIT_EVENT_OR_DIE(e) cotask_wait_event_or_die((e), NULL) #define STALL do { YIELD; } while(1) // to use these inside a coroutine, define a BREAK_CONDITION macro and a BREAK label. diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 8650eca9c2..899f49645e 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1292,8 +1292,8 @@ TASK(multiburst_fairies_1, NO_ARGS) { } TASK_WITH_INTERFACE(midboss_intro, BossAttack) { - Boss *boss = TASK_BIND(ARGS.boss); - WAIT_EVENT(&ARGS.attack->events.started); + Boss *boss = INIT_BOSS_ATTACK(); + BEGIN_BOSS_ATTACK(); boss->move = move_towards(VIEWPORT_W/2.0 + 200.0*I, 0.035); } @@ -1366,14 +1366,9 @@ TASK(make_snowflake, { complex pos; MoveParams move; int size; double rot_angle; } TASK_WITH_INTERFACE(icy_storm, BossAttack) { - Boss *boss = TASK_BIND(ARGS.boss); - Attack *a = ARGS.attack; - + Boss *boss = INIT_BOSS_ATTACK(); boss->move = move_towards(CMPLX(VIEWPORT_W/2, 200), 0.02); - - CANCEL_TASK_WHEN(&a->events.finished, THIS_TASK); - WAIT_EVENT(&a->events.started); - + BEGIN_BOSS_ATTACK(); boss->move = move_stop(0.8); int flake_spawn_interval = difficulty_value(11, 10, 9, 8); @@ -1416,11 +1411,8 @@ TASK_WITH_INTERFACE(icy_storm, BossAttack) { } DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { - Boss *boss = TASK_BIND(ARGS.boss); - Attack *a = ARGS.attack; - - CANCEL_TASK_WHEN(&a->events.finished, THIS_TASK); - WAIT_EVENT(&a->events.started); + Boss *boss = INIT_BOSS_ATTACK(); + BEGIN_BOSS_ATTACK(); for(int run = 1;;run++) { boss->move = move_towards(VIEWPORT_W/2.0 + 100.0*I, 0.04); @@ -1517,8 +1509,8 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { } TASK_WITH_INTERFACE(midboss_flee, BossAttack) { - Boss *boss = TASK_BIND(ARGS.boss); - WAIT_EVENT(&ARGS.attack->events.started); + Boss *boss = INIT_BOSS_ATTACK(); + BEGIN_BOSS_ATTACK(); boss->move = move_towards(-250 + 30 * I, 0.02); } From cb96558389d200b3d625c35a9bbb8c27facd7116 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 11 Oct 2019 16:58:51 +0300 Subject: [PATCH 043/104] basic "bookmark" system for skipping to specific stage portions --- src/audio/audio.c | 9 +++-- src/eventloop/eventloop.c | 8 +++++ src/eventloop/eventloop.h | 10 +++--- src/global.c | 9 +++++ src/global.h | 3 ++ src/stage.c | 73 ++++++++++++++++++++++++++------------ src/stage.h | 11 ++++++ src/stages/stage1_events.c | 2 ++ 8 files changed, 95 insertions(+), 30 deletions(-) diff --git a/src/audio/audio.c b/src/audio/audio.c index b874696499..08f51a63bd 100644 --- a/src/audio/audio.c +++ b/src/audio/audio.c @@ -29,7 +29,7 @@ static struct enqueued_sound { } *sound_queue; static void play_sound_internal(const char *name, bool is_ui, int cooldown, bool replace, int delay) { - if(!audio_output_works()) { + if(!audio_output_works() || global.frameskip) { return; } @@ -43,7 +43,7 @@ static void play_sound_internal(const char *name, bool is_ui, int cooldown, bool return; } - if(global.frameskip) { + if(taisei_is_skip_mode_enabled()) { return; } @@ -67,7 +67,10 @@ static void* discard_enqueued_sound(List **queue, List *vsnd, void *arg) { } static void* play_enqueued_sound(struct enqueued_sound **queue, struct enqueued_sound *snd, void *arg) { - play_sound_internal(snd->name, false, snd->cooldown, snd->replace, 0); + if(!taisei_is_skip_mode_enabled()) { + play_sound_internal(snd->name, false, snd->cooldown, snd->replace, 0); + } + free(snd->name); free(list_unlink(queue, snd)); return NULL; diff --git a/src/eventloop/eventloop.c b/src/eventloop/eventloop.c index 1bf794356a..39b7ab6215 100644 --- a/src/eventloop/eventloop.c +++ b/src/eventloop/eventloop.c @@ -77,6 +77,10 @@ LogicFrameAction handle_logic(LoopFrame **pframe, const FrameTimes *ftimes) { do { lframe_action = run_logic_frame(*pframe); + if(lframe_action == LFRAME_SKIP && taisei_is_skip_mode_enabled()) { + cnt = 0; + } + while(evloop.stack_ptr != *pframe) { *pframe = evloop.stack_ptr; lframe_action = run_logic_frame(*pframe); @@ -100,6 +104,10 @@ LogicFrameAction handle_logic(LoopFrame **pframe, const FrameTimes *ftimes) { } RenderFrameAction run_render_frame(LoopFrame *frame) { + if(taisei_is_skip_mode_enabled()) { + return RFRAME_DROP; + } + attr_unused LoopFrame *stack_prev = evloop.stack_ptr; r_framebuffer_clear(NULL, CLEAR_ALL, RGBA(0, 0, 0, 1), 1); RenderFrameAction a = frame->render(frame->context); diff --git a/src/eventloop/eventloop.h b/src/eventloop/eventloop.h index ebb37d4ea0..94714be7b7 100644 --- a/src/eventloop/eventloop.h +++ b/src/eventloop/eventloop.h @@ -12,14 +12,14 @@ #include "taisei.h" typedef enum RenderFrameAction { - RFRAME_SWAP, - RFRAME_DROP, + RFRAME_SWAP, + RFRAME_DROP, } RenderFrameAction; typedef enum LogicFrameAction { - LFRAME_WAIT, - LFRAME_SKIP, - LFRAME_STOP, + LFRAME_WAIT, + LFRAME_SKIP, + LFRAME_STOP, } LogicFrameAction; typedef LogicFrameAction (*LogicFrameFunc)(void *context); diff --git a/src/global.c b/src/global.c index 512c4c008e..78b94a82dd 100644 --- a/src/global.c +++ b/src/global.c @@ -61,3 +61,12 @@ void taisei_commit_persistent_data(void) { progress_save(); vfs_sync(VFS_SYNC_STORE, NO_CALLCHAIN); } + +#ifdef DEBUG +static bool _skip_mode; +bool taisei_is_skip_mode_enabled(void) { return _skip_mode; } +void taisei_set_skip_mode(bool state) { _skip_mode = state; } +#else +bool taisei_is_skip_mode_enabled(void) { return false; } +void taisei_set_skip_mode(bool state) { } +#endif diff --git a/src/global.h b/src/global.h index 06bbed7d8d..23f9616706 100644 --- a/src/global.h +++ b/src/global.h @@ -148,6 +148,9 @@ void taisei_quit(void); bool taisei_quit_requested(void); void taisei_commit_persistent_data(void); +bool taisei_is_skip_mode_enabled(void); +void taisei_set_skip_mode(bool state); + // XXX: Move this somewhere? bool gamekeypressed(KeyIndex key); diff --git a/src/stage.c b/src/stage.c index 908281d618..9ff43d0ac0 100644 --- a/src/stage.c +++ b/src/stage.c @@ -277,7 +277,7 @@ static void stage_enter_ingame_menu(MenuData *m, CallChain next) { } void stage_pause(void) { - if(global.gameover == GAMEOVER_TRANSITIONING) { + if(global.gameover == GAMEOVER_TRANSITIONING || taisei_is_skip_mode_enabled()) { return; } @@ -456,6 +456,31 @@ static void stage_input(void) { player_applymovement(&global.plr); } +#ifdef DEBUG +static const char *_skip_to_bookmark; +bool _skip_to_dialog; + +void _stage_bookmark(const char *name) { + if(_skip_to_bookmark && !strcmp(_skip_to_bookmark, name)) { + _skip_to_bookmark = NULL; + global.plr.iddqd = false; + } +} + +DEFINE_EXTERN_TASK(stage_bookmark) { + _stage_bookmark(ARGS.name); +} +#endif + +static bool _stage_should_skip(void) { +#ifdef DEBUG + if(_skip_to_bookmark || _skip_to_dialog) { + return true; + } +#endif + return false; +} + static void stage_logic(void) { player_logic(&global.plr); @@ -467,6 +492,16 @@ static void stage_logic(void) { process_projectiles(&global.particles, false); dialog_update(&global.dialog); + if(_stage_should_skip()) { + if(dialog_is_active(global.dialog)) { + dialog_page(&global.dialog); + } + + if(global.boss) { + ent_damage(&global.boss->ent, &(DamageInfo) { 400, DMG_PLAYER_SHOT } ); + } + } + update_sounds(); global.frames++; @@ -683,10 +718,6 @@ typedef struct StageFrameState { int transition_delay; int logic_calls; uint16_t last_replay_fps; - -#ifdef DEBUG - bool skip_to_dialog; -#endif } StageFrameState; static void stage_update_fps(StageFrameState *fstate) { @@ -763,11 +794,9 @@ static LogicFrameAction stage_logic_frame(void *arg) { stage_update_fps(fstate); - #ifdef DEBUG - if(fstate->skip_to_dialog) { + if(_stage_should_skip()) { global.plr.iddqd = true; } - #endif if(global.shake_view > 30) { global.shake_view = 30; @@ -822,20 +851,18 @@ static LogicFrameAction stage_logic_frame(void *arg) { return LFRAME_STOP; } - #ifdef DEBUG - if(fstate->skip_to_dialog) { - if(dialog_is_active(global.dialog)) { - fstate->skip_to_dialog = false; - global.plr.iddqd = false; - } else { - return LFRAME_SKIP; - } +#ifdef DEBUG + if(_skip_to_dialog && dialog_is_active(global.dialog)) { + _skip_to_dialog = false; + global.plr.iddqd = false; } - if(gamekeypressed(KEY_SKIP)) { + taisei_set_skip_mode(_stage_should_skip()); + + if(taisei_is_skip_mode_enabled() || gamekeypressed(KEY_SKIP)) { return LFRAME_SKIP; } - #endif +#endif if(global.frameskip || (global.replaymode == REPLAY_PLAY && gamekeypressed(KEY_SKIP))) { return LFRAME_SKIP; @@ -848,11 +875,9 @@ static RenderFrameAction stage_render_frame(void *arg) { StageFrameState *fstate = arg; StageInfo *stage = fstate->stage; -#if DEBUG - if(fstate->skip_to_dialog) { + if(_stage_should_skip()) { return RFRAME_DROP; } -#endif tsrand_lock(&global.rand_game); tsrand_switch(&global.rand_visual); @@ -958,7 +983,9 @@ void stage_enter(StageInfo *stage, CallChain next) { fstate->cc = next; #ifdef DEBUG - fstate->skip_to_dialog = env_get_int("TAISEI_SKIP_TO_DIALOG", 0); + _skip_to_dialog = env_get_int("TAISEI_SKIP_TO_DIALOG", 0); + _skip_to_bookmark = env_get_string_nonempty("TAISEI_SKIP_TO_BOOKMARK", NULL); + taisei_set_skip_mode(_stage_should_skip()); #endif stage->procs->begin(); @@ -993,7 +1020,9 @@ void stage_end_loop(void* ctx) { ent_shutdown(); stage_objpools_free(); stop_sounds(); + taisei_commit_persistent_data(); + taisei_set_skip_mode(false); if(taisei_quit_requested()) { global.gameover = GAMEOVER_ABORT; diff --git a/src/stage.h b/src/stage.h index ab8085b667..324055fc3b 100644 --- a/src/stage.h +++ b/src/stage.h @@ -17,6 +17,7 @@ #include "difficulty.h" #include "util/graphics.h" #include "dialog.h" +#include "coroutine.h" /* taisei's strange macro language. * @@ -153,6 +154,16 @@ bool stage_should_yield(void); int stage_yield(void); int stage_wait(int delay); +#ifdef DEBUG +void _stage_bookmark(const char *name); +#define STAGE_BOOKMARK(name) _stage_bookmark(#name) +DECLARE_EXTERN_TASK(stage_bookmark, { const char *name; }); +#define STAGE_BOOKMARK_DELAYED(delay, name) INVOKE_TASK_DELAYED(delay, stage_bookmark, #name) +#else +#define STAGE_BOOKMARK(name) ((void)0) +#define STAGE_BOOKMARK_DELAYED(delay, name) ((void)0) +#endif + #include "stages/stage1.h" #include "stages/stage2.h" #include "stages/stage3.h" diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 899f49645e..2bee764377 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1515,6 +1515,8 @@ TASK_WITH_INTERFACE(midboss_flee, BossAttack) { } TASK(spawn_midboss, NO_ARGS) { + STAGE_BOOKMARK_DELAYED(120, midboss); + Boss *boss = global.boss = stage1_spawn_cirno(VIEWPORT_W + 220 + 30.0*I); boss_add_attack_task(boss, AT_Move, "Introduction", 2, 0, TASK_INDIRECT(BossAttack, midboss_intro), NULL); From a87c47cc94eb96759b1f6027dbff83e53b48993f Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 12 Oct 2019 17:43:40 +0300 Subject: [PATCH 044/104] sync music after skipping to bookmark --- src/audio/sdl2mixer/audio_sdl2mixer.c | 4 ++++ src/global.c | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/audio/sdl2mixer/audio_sdl2mixer.c b/src/audio/sdl2mixer/audio_sdl2mixer.c index efa2579da3..d918019b24 100644 --- a/src/audio/sdl2mixer/audio_sdl2mixer.c +++ b/src/audio/sdl2mixer/audio_sdl2mixer.c @@ -271,6 +271,10 @@ static bool audio_sdl2mixer_music_play(MusicImpl *imus) { static bool audio_sdl2mixer_music_set_position(double pos) { Mix_RewindMusic(); + // TODO Handle looping here. + // Unfortunately SDL2_Mixer will not tell us the total length of the file, + // so a hack is required here. + if(Mix_SetMusicPosition(pos)) { log_error("Mix_SetMusicPosition() failed: %s", Mix_GetError()); return false; diff --git a/src/global.c b/src/global.c index 78b94a82dd..7a1d64b24c 100644 --- a/src/global.c +++ b/src/global.c @@ -63,9 +63,16 @@ void taisei_commit_persistent_data(void) { } #ifdef DEBUG +#include "audio/audio.h" static bool _skip_mode; bool taisei_is_skip_mode_enabled(void) { return _skip_mode; } -void taisei_set_skip_mode(bool state) { _skip_mode = state; } +void taisei_set_skip_mode(bool state) { + if(_skip_mode && !state && current_bgm.started_at >= 0) { + audio_music_set_position((global.frames - current_bgm.started_at) / (double)FPS); + } + + _skip_mode = state; +} #else bool taisei_is_skip_mode_enabled(void) { return false; } void taisei_set_skip_mode(bool state) { } From c391ebcac9919fd8220397cb0ba4ce1b845f5bfb Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 12 Oct 2019 19:16:53 +0300 Subject: [PATCH 045/104] shut up some debug spam --- src/hashtable.inc.h | 2 ++ src/renderer/gl33/texture.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/hashtable.inc.h b/src/hashtable.inc.h index c93f51c5b5..4dcca28583 100644 --- a/src/hashtable.inc.h +++ b/src/hashtable.inc.h @@ -903,10 +903,12 @@ HT_DECLARE_PRIV_FUNC(void, resize, (HT_BASETYPE *ht, size_t new_size)) { free(ht->table); ht->table = new_table; + /* log_debug( "Resized hashtable at %p: %"PRIuMAX" -> %"PRIuMAX"", (void*)ht, (uintmax_t)ht->table_size, (uintmax_t)new_size ); + */ ht->table_size = new_size; ht->hash_mask = new_hash_mask; diff --git a/src/renderer/gl33/texture.c b/src/renderer/gl33/texture.c index 5479ad2437..8385ad8da5 100644 --- a/src/renderer/gl33/texture.c +++ b/src/renderer/gl33/texture.c @@ -412,7 +412,7 @@ void gl33_texture_taint(Texture *tex) { void gl33_texture_prepare(Texture *tex) { if(tex->params.mipmap_mode == TEX_MIPMAP_AUTO && tex->mipmaps_outdated) { - log_debug("Generating mipmaps for %s (%u)", tex->debug_label, tex->gl_handle); + // log_debug("Generating mipmaps for %s (%u)", tex->debug_label, tex->gl_handle); gl33_bind_texture(tex, false); gl33_sync_texunit(tex->binding_unit, false, true); From c4d032ba13054420818b5a3e5fe14630beb99bdf Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 12 Oct 2019 20:15:00 +0300 Subject: [PATCH 046/104] WIP stage 1 post-midboss filler --- src/coroutine.h | 7 ++ src/stage.c | 2 + src/stages/stage1_events.c | 136 +++++++++++++++++++++++-------------- 3 files changed, 94 insertions(+), 51 deletions(-) diff --git a/src/coroutine.h b/src/coroutine.h index 91ea9e1cee..2eba1285c7 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -160,6 +160,8 @@ INLINE void cosched_set_invoke_target(CoSched *sched) { _cosched_global = sched; attr_unused linkage void *COTASKTHUNKDELAY_##name(void *arg) { \ /* copy args to our coroutine stack so that they're valid after caller returns */ \ TASK_ARGSDELAY(name) args_copy = *(TASK_ARGSDELAY(name)*)arg; \ + /* if delay is negative, bail out early */ \ + if(args_copy.delay < 0) return NULL; \ /* wait out the delay */ \ WAIT(args_copy.delay); \ /* call prologue */ \ @@ -319,6 +321,11 @@ INLINE BoxedTask _cotask_invoke_helper(CoTask *t, bool is_subtask) { * * Like INVOKE_TASK, but the task will yield times before executing the * actual task body. + * + * If is negative, the task will not be invoked. The arguments are still + * evaluated, however. (Caveat: in the current implementation, a task is spawned + * either way; it just aborts early without executing the body if the delay is + * negative, so there's some overhead). */ #define INVOKE_TASK_DELAYED(_delay, ...) _internal_INVOKE_TASK_DELAYED(false, _delay, __VA_ARGS__, ._dummy_1 = 0) diff --git a/src/stage.c b/src/stage.c index 9ff43d0ac0..61e942e91a 100644 --- a/src/stage.c +++ b/src/stage.c @@ -461,6 +461,8 @@ static const char *_skip_to_bookmark; bool _skip_to_dialog; void _stage_bookmark(const char *name) { + log_debug("Bookmark [%s] reached at %i", name, global.frames); + if(_skip_to_bookmark && !strcmp(_skip_to_bookmark, name)) { _skip_to_bookmark = NULL; global.plr.iddqd = false; diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 2bee764377..60ca23ffc0 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -779,56 +779,6 @@ static int stage1_multiburst(Enemy *e, int t) { return 1; } -static int stage1_instantcircle(Enemy *e, int t) { - TIMER(&t); - AT(EVENT_KILLED) { - spawn_items(e->pos, ITEM_POINTS, 2, ITEM_POWER, 4); - return 1; - } - - AT(75) { - play_sound("shot_special1"); - for(int i = 0; i < 20+2*global.diff; i++) { - PROJECTILE( - .proto = pp_rice, - .pos = e->pos, - .color = RGB(0.6, 0.2, 0.7), - .rule = asymptotic, - .args = { - 1.5*cexp(I*2*M_PI/(20.0+global.diff)*i), - 2.0, - }, - ); - } - } - - AT(95) { - if(global.diff > D_Easy) { - play_sound("shot_special1"); - for(int i = 0; i < 20+3*global.diff; i++) { - PROJECTILE( - .proto = pp_rice, - .pos = e->pos, - .color = RGB(0.6, 0.2, 0.7), - .rule = asymptotic, - .args = { - 3*cexp(I*2*M_PI/(20.0+global.diff)*i), - 3.0, - }, - ); - } - } - } - - if(t > 200) { - e->pos += e->args[1]; - } else { - GO_TO(e, e->pos0 + e->args[0] * 110 , 0.04); - } - - return 1; -} - static int stage1_tritoss(Enemy *e, int t) { TIMER(&t); AT(EVENT_KILLED) { @@ -1189,6 +1139,57 @@ TASK(multiburst_fairy, { complex pos; complex target_pos; complex exit_accel; }) STALL; } +TASK(instantcircle_fairy_exit, { BoxedEnemy e; complex exit_accel; }) { + Enemy *e = TASK_BIND(ARGS.e); + e->move.attraction = 0; + e->move.retention = 1; + e->move.acceleration = ARGS.exit_accel; +} + +TASK(instantcircle_fairy_shoot, { BoxedEnemy e; int cnt; double speed; double boost; }) { + Enemy *e = TASK_BIND(ARGS.e); + play_sound("shot_special1"); + + for(int i = 0; i < ARGS.cnt; ++i) { + complex vel = ARGS.speed * circle_dir(i, ARGS.cnt); + + PROJECTILE( + .proto = pp_rice, + .pos = e->pos, + .color = RGB(0.6, 0.2, 0.7), + .move = move_asymptotic_simple(vel, ARGS.boost), + ); + } +} + +TASK(instantcircle_fairy, { complex pos; complex target_pos; complex exit_accel; }) { + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 1200, Fairy, NULL, 0)); + + INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { + .points = 2, + .power = 4, + }); + + e->move = move_towards(ARGS.target_pos, 0.04); + BoxedEnemy be = ENT_BOX(e); + + INVOKE_TASK_DELAYED(75, instantcircle_fairy_shoot, be, + .cnt = difficulty_value(22, 24, 26, 28), + .speed = 1.5, + .boost = 2.0 + ); + + if(global.diff > D_Easy) { + INVOKE_TASK_DELAYED(95, instantcircle_fairy_shoot, be, + .cnt = difficulty_value(0, 26, 29, 32), + .speed = 3, + .boost = 3.0 + ); + } + + INVOKE_TASK_DELAYED(200, instantcircle_fairy_exit, be, ARGS.exit_accel); +} + // opening. projectile bursts TASK(burst_fairies_1, NO_ARGS) { for(int i = 3; i--;) { @@ -1291,6 +1292,17 @@ TASK(multiburst_fairies_1, NO_ARGS) { } } +TASK(instantcircle_fairies, { int duration; }) { + int interval = difficulty_value(160, 130, 100, 70); + + for(int t = ARGS.duration; t > 0; t -= interval) { + double x = VIEWPORT_W/2 + 205 * sin(2.13*global.frames); + double y = VIEWPORT_H/2 + 120 * cos(1.91*global.frames); + INVOKE_TASK(instantcircle_fairy, x, x+y*I, 0.2 * I); + WAIT(interval); + } +} + TASK_WITH_INTERFACE(midboss_intro, BossAttack) { Boss *boss = INIT_BOSS_ATTACK(); BEGIN_BOSS_ATTACK(); @@ -1543,7 +1555,27 @@ TASK(stage_timeline, NO_ARGS) { while(!global.boss) YIELD; int midboss_time = WAIT_EVENT(&global.boss->events.defeated).frames; - log_debug("midboss time: %i", midboss_time); + int filler_time = 2180; + int time_ofs = 500 - midboss_time; + + log_debug("midboss_time = %i; filler_time = %i; time_ofs = %i", midboss_time, filler_time, time_ofs); + + STAGE_BOOKMARK(post-midboss); + + int swirl_spam_time = 600; + + for(int i = 0; i < swirl_spam_time; i += 30) { + int o = ((int[]) { 0, 1, 0, -1 })[(i / 60) % 4]; + INVOKE_TASK_DELAYED(i + time_ofs, sinepass_swirls, 40, 132 + 32 * o, 1 - 2 * ((i / 60) & 1)); + } + + time_ofs += swirl_spam_time - 120; + + INVOKE_TASK_DELAYED(40 + time_ofs, burst_fairies_1); + INVOKE_TASK_DELAYED(120 + time_ofs, instantcircle_fairies, 320); + + WAIT(filler_time - midboss_time); + STAGE_BOOKMARK(post-midboss-filler); } void stage1_events(void) { @@ -1555,6 +1587,7 @@ void stage1_events(void) { return; + /* // some chaotic swirls + instant circle combo FROM_TO(2760, 3800, 20) { tsrand_fill(2); @@ -1564,6 +1597,7 @@ void stage1_events(void) { FROM_TO(2900, 3750, 190-30*global.diff) { create_enemy2c(VIEWPORT_W/2 + 205 * sin(2.13*global.frames), 1200, Fairy, stage1_instantcircle, 2.0*I, 3.0 - 6*frand() - 1.0*I); } + */ // multiburst + normal circletoss, later tri-toss FROM_TO(3900, 4800, 200) { From 6dbd291b448b460dc92052901823c341b4fa0431 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 28 Oct 2019 17:15:09 +0200 Subject: [PATCH 047/104] Update koishi; add necessary link flags for emscripten --- external/koishi | 2 +- src/meson.build | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/external/koishi b/external/koishi index 7d66fcd750..b16c82fc6e 160000 --- a/external/koishi +++ b/external/koishi @@ -1 +1 @@ -Subproject commit 7d66fcd750285059aa3ece6094c3fae4f583d57e +Subproject commit b16c82fc6e86a1623d8ea553bfb934aee05033dc diff --git a/src/meson.build b/src/meson.build index cc54db15f5..f848448715 100644 --- a/src/meson.build +++ b/src/meson.build @@ -206,12 +206,15 @@ if host_machine.system() == 'emscripten' # NOTE: the _SDL_LoadWAV_RW is an LTO workaround; we don't actually care about that function. '-s', 'EXPORTED_FUNCTIONS=["_main", "_vfs_sync_callback", "_SDL_LoadWAV_RW"]', '-s', 'GL_PREINITIALIZED_CONTEXT=1', + '-s', 'ASYNCIFY_IMPORTS=["_koishi_impl_fiber_swap"]', '-lidbfs.js', # Try enabling this if unpatched Freetype crashes # '-s', 'EMULATE_FUNCTION_POINTER_CASTS=1', ] + em_link_args += subproject('koishi').get_variable('koishi_external_link_args') + if em_debug # em_link_output_suffixes += ['wasm.map'] em_link_args += [ From cd01955f0ab56a9d01ffbb1b68870f74ec989e8e Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 28 Oct 2019 17:16:16 +0200 Subject: [PATCH 048/104] fix non-pch build --- src/common_tasks.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common_tasks.h b/src/common_tasks.h index 4b0ed740b3..ae00aa0920 100644 --- a/src/common_tasks.h +++ b/src/common_tasks.h @@ -15,6 +15,7 @@ #include "item.h" #include "move.h" #include "entity.h" +#include "global.h" DECLARE_EXTERN_TASK( common_drop_items, From 585ce7c0a70024b07deb6803c42028b8cb2f615c Mon Sep 17 00:00:00 2001 From: laochailan Date: Wed, 30 Oct 2019 20:51:47 +0100 Subject: [PATCH 049/104] port second half of stage 1 till boss --- src/stages/stage1_events.c | 206 +++++++++++++------------------------ 1 file changed, 74 insertions(+), 132 deletions(-) diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 60ca23ffc0..a64848cf8b 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -715,136 +715,6 @@ static int stage1_circletoss(Enemy *e, int time) { return 1; } -static int stage1_drop(Enemy *e, int t) { - TIMER(&t); - AT(EVENT_KILLED) { - spawn_items(e->pos, ITEM_POINTS, 2); - return 1; - } - if(t < 0) - return 1; - - e->pos = e->pos0 + e->args[0]*t + e->args[1]*t*t; - - FROM_TO(10,1000,1) { - if(frand() > 0.997-0.007*(global.diff-1)) { - play_sound("shot1"); - PROJECTILE( - .proto = pp_ball, - .pos = e->pos, - .color = RGB(0.8,0.8,0.4), - .rule = linear, - .args = { - (1+0.3*global.diff+frand())*cexp(I*carg(global.plr.pos - e->pos)) - } - ); - } - } - - return 1; -} - -static int stage1_multiburst(Enemy *e, int t) { - TIMER(&t); - AT(EVENT_KILLED) { - spawn_items(e->pos, ITEM_POINTS, 3, ITEM_POWER, 2); - return 1; - } - - FROM_TO(0, 100, 1) { - GO_TO(e, e->pos0 + 100*I , 0.02); - } - - FROM_TO_INT(60, 300, 70, 40, 18-2*global.diff) { - play_sound("shot1"); - int n = global.diff-1; - for(int i = -n; i <= n; i++) { - PROJECTILE( - .proto = pp_crystal, - .pos = e->pos, - .color = RGB(0.2, 0.3, 0.5), - .rule = linear, - .args = { - 2.5*cexp(I*(carg(global.plr.pos - e->pos) + i/5.0)) - } - ); - } - } - - FROM_TO(320, 700, 1) { - e->args[1] += 0.03; - e->pos += e->args[0]*e->args[1] + 1.4*I; - } - - return 1; -} - -static int stage1_tritoss(Enemy *e, int t) { - TIMER(&t); - AT(EVENT_KILLED) { - spawn_items(e->pos, ITEM_POINTS, 5, ITEM_POWER, 2); - return 1; - } - - FROM_TO(0, 100, 1) { - e->pos += e->args[0]; - } - - FROM_TO(120, 800,8-global.diff) { - play_sound("shot1"); - float a = M_PI/30.0*((_i/7)%30)+0.1*nfrand(); - int i; - int n = 3+global.diff/2; - - for(i = 0; i < n; i++){ - PROJECTILE( - .proto = pp_thickrice, - .pos = e->pos, - .color = RGB(0.2, 0.4, 0.8), - .rule = asymptotic, - .args = { - 2*cexp(I*a+2.0*I*M_PI/n*i), - 3, - }, - ); - } - } - - FROM_TO(480, 800, 300) { - play_sound("shot_special1"); - int i, n = 15 + global.diff*3; - for(i = 0; i < n; i++) { - PROJECTILE( - .proto = pp_rice, - .pos = e->pos, - .color = RGB(0.6, 0.2, 0.7), - .rule = asymptotic, - .args = { - 1.5*cexp(I*2*M_PI/n*i), - 2.0, - }, - ); - - if(global.diff > D_Easy) { - PROJECTILE( - .proto = pp_rice, - .pos = e->pos, - .color = RGB(0.6, 0.2, 0.7), - .rule = asymptotic, - .args = { - 3*cexp(I*2*M_PI/n*i), - 3.0, - }, - ); - } - } - } - - if(t > 820) - e->pos += e->args[1]; - - return 1; -} // #define BULLET_TEST @@ -1539,6 +1409,67 @@ TASK(spawn_midboss, NO_ARGS) { boss_start_attack(boss, boss->attacks); } +TASK(tritoss_fairy, { complex pos; complex velocity; complex end_velocity; }) { + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 4000, BigFairy, NULL, 0)); + + INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { + .points = 5, + .power = 2, + }); + + e->move = move_linear(ARGS.velocity); + + WAIT(120); + + e->move.retention = 0.8; + + int interval = difficulty_value(7,6,5,3); + int rounds = 680/interval; + for(int k = 0; k < rounds; k++) { + play_sound("shot1"); + + float a = M_PI / 30.0 * ((k/7) % 30) + 0.1 * nfrand(); + int n = difficulty_value(3,4,4,5); + + for(int i = 0; i < n; i++){ + PROJECTILE( + .proto = pp_thickrice, + .pos = e->pos, + .color = RGB(0.2, 0.4, 0.8), + .move = move_asymptotic_simple(2*cdir(a+2.0*M_PI/n*i), 3), + ); + } + + if(k == rounds/2 || k == rounds-1) { + play_sound("shot_special1"); + int n2 = difficulty_value(20, 23, 26, 30); + for(int i = 0; i < n2; i++) { + PROJECTILE( + .proto = pp_rice, + .pos = e->pos, + .color = RGB(0.6, 0.2, 0.7), + .move = move_asymptotic_simple(1.5*cexp(I*2*M_PI/n2*i),2), + ); + + if(global.diff > D_Easy) { + PROJECTILE( + .proto = pp_rice, + .pos = e->pos, + .color = RGB(0.6, 0.2, 0.7), + .move = move_asymptotic_simple(3*cexp(I*2*M_PI/n2*i), 3.0), + ); + } + } + } + WAIT(interval); + } + + + WAIT(20); + e->move = move_asymptotic_simple(ARGS.end_velocity, -1); + STALL; +} + TASK(stage_timeline, NO_ARGS) { stage_start_bgm("stage1"); stage_set_voltage_thresholds(50, 125, 300, 600); @@ -1576,6 +1507,17 @@ TASK(stage_timeline, NO_ARGS) { WAIT(filler_time - midboss_time); STAGE_BOOKMARK(post-midboss-filler); + + for(int i = 0; i < 5; i++) { + INVOKE_TASK_DELAYED(i*200, multiburst_fairy, VIEWPORT_W/2 - 195 * cos(2.43 * i) - 20 * I, VIEWPORT_W / 2 - 100 * cos(2.43 * i) + 100 * I, 0.1 * sign(nfrand())); + } + + for(int i = 0; i < difficulty_value(2, 2, 4, 4); i++) { + INVOKE_TASK_DELAYED(100 + 20 * (i&1), circletoss_fairy, (VIEWPORT_W+50) * (i&1) - 25 + VIEWPORT_H / 3 * I * (1 + i/2), 1 - 2 * (i&1) - 0.5 * I, 0.01 * (1 - 2 * (i&1) - I), 200); + } + + INVOKE_TASK_DELAYED(300, tritoss_fairy, VIEWPORT_W / 2 - 30*I, 2 * I, -2.6 * I); + } void stage1_events(void) { @@ -1597,7 +1539,7 @@ void stage1_events(void) { FROM_TO(2900, 3750, 190-30*global.diff) { create_enemy2c(VIEWPORT_W/2 + 205 * sin(2.13*global.frames), 1200, Fairy, stage1_instantcircle, 2.0*I, 3.0 - 6*frand() - 1.0*I); } - */ + // multiburst + normal circletoss, later tri-toss FROM_TO(3900, 4800, 200) { @@ -1609,7 +1551,7 @@ void stage1_events(void) { AT(4200) create_enemy2c(VIEWPORT_W/2.0, 4000, BigFairy, stage1_tritoss, 2.0*I, -2.6*I); - +*/ AT(5000) { enemy_kill_all(&global.enemies); stage_unlock_bgm("stage1"); From 8185c2ef3754b1e2a22d7bb8148a89a4759ab356 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 10 Nov 2019 18:41:14 +0200 Subject: [PATCH 050/104] stage1: improve post-midboss filler --- src/stages/stage1_events.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index a64848cf8b..129801b18f 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1493,17 +1493,23 @@ TASK(stage_timeline, NO_ARGS) { STAGE_BOOKMARK(post-midboss); - int swirl_spam_time = 600; + int swirl_spam_time = 760; for(int i = 0; i < swirl_spam_time; i += 30) { int o = ((int[]) { 0, 1, 0, -1 })[(i / 60) % 4]; INVOKE_TASK_DELAYED(i + time_ofs, sinepass_swirls, 40, 132 + 32 * o, 1 - 2 * ((i / 60) & 1)); } - time_ofs += swirl_spam_time - 120; + time_ofs += swirl_spam_time; INVOKE_TASK_DELAYED(40 + time_ofs, burst_fairies_1); - INVOKE_TASK_DELAYED(120 + time_ofs, instantcircle_fairies, 320); + + int instacircle_time = filler_time - swirl_spam_time - 400; + + for(int i = 0; i < instacircle_time; i += 180) { + INVOKE_TASK_DELAYED(i + time_ofs, sinepass_swirls, 80, 132, 1); + INVOKE_TASK_DELAYED(120 + i + time_ofs, instantcircle_fairies, 120); + } WAIT(filler_time - midboss_time); STAGE_BOOKMARK(post-midboss-filler); @@ -1539,7 +1545,7 @@ void stage1_events(void) { FROM_TO(2900, 3750, 190-30*global.diff) { create_enemy2c(VIEWPORT_W/2 + 205 * sin(2.13*global.frames), 1200, Fairy, stage1_instantcircle, 2.0*I, 3.0 - 6*frand() - 1.0*I); } - + // multiburst + normal circletoss, later tri-toss FROM_TO(3900, 4800, 200) { From e961c0541a12867c10bb0f0e1c347f4683ed2da8 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Tue, 12 Nov 2019 02:58:22 +0200 Subject: [PATCH 051/104] RNG improvements (replay-breaking) --- src/random.c | 35 ++++++++++++++++++++++++++++------- src/random.h | 12 ++++++++++-- src/util/crap.h | 26 ++++++++++++++++++++------ 3 files changed, 58 insertions(+), 15 deletions(-) diff --git a/src/random.c b/src/random.c index 1975831b78..31b1bd0188 100644 --- a/src/random.c +++ b/src/random.c @@ -87,17 +87,38 @@ uint64_t tsrand64(void) { return tsrand64_p(tsrand_current); } -static inline double makedouble(uint64_t x) { - // Range: [0..1) - return (x >> 11) * (1.0 / (UINT64_C(1) << 53)); +static inline double make_unsigned_double(uint64_t x) { + // Range: [0.0; 1.0) + return (x >> 11) * 0x1.0p-53; +} + +static inline double make_signed_double(uint64_t x) { + // Range: (-1.0; 1.0) + // NOTE: slight bias towards 0, because -0 exists + DoubleBits db; + db.val = make_unsigned_double(x << 1); + db.bits |= x & (UINT64_C(1) << 63); + return db.val; } double frand(void) { - return makedouble(tsrand64()); + return make_unsigned_double(tsrand64()); } double nfrand(void) { - return frand() * 2.0 - 1.0; + return make_signed_double(tsrand64()); +} + +bool rand_bool(void) { + return tsrand64() >> 63; +} + +double rand_sign(void) { + return bits_to_double((UINT64_C(0x3FF) << 52) | (tsrand64() & (UINT64_C(1) << 63))); +} + +float rand_signf(void) { + return bits_to_float((0x7f << 23) | (tsrand() & (1 << 31))); } // we use this to support multiple rands in a single statement without breaking replays across different builds @@ -157,11 +178,11 @@ uint32_t _tsrand_a(int idx, const char *file, uint line) { } double _afrand(int idx, const char *file, uint line) { - return makedouble(_tsrand64_a(idx, file, line)); + return make_unsigned_double(_tsrand64_a(idx, file, line)); } double _anfrand(int idx, const char *file, uint line) { - return _afrand(idx, file, line) * 2 - 1; + return make_signed_double(_tsrand64_a(idx, file, line)); } void tsrand_lock(RandomState *rnd) { diff --git a/src/random.h b/src/random.h index e01398ecec..89e54d3c7b 100644 --- a/src/random.h +++ b/src/random.h @@ -32,8 +32,11 @@ uint64_t tsrand64(void); void tsrand_lock(RandomState *rnd); void tsrand_unlock(RandomState *rnd); -double frand(void); -double nfrand(void); +double frand(void); // Range: [0.0; 1.0) +double nfrand(void); // Range: (-1.0; 1.0) +bool rand_bool(void); +double rand_sign(void); // 1.0 or -1.0 +float rand_signf(void); // 1.0f or -1.0f void _tsrand_fill_p(RandomState *rnd, int amount, const char *file, uint line); void _tsrand_fill(int amount, const char *file, uint line); @@ -50,6 +53,7 @@ double _anfrand(int idx, const char *file, uint line); #define TSRAND_ARRAY_LIMIT 16 +// Range: [rmin; rmax) INLINE double rand_range(double rmin, double rmax) { // TODO: ensure uniform distribution? return frand() * (rmax - rmin) + rmin; @@ -60,4 +64,8 @@ INLINE double rand_angle(void) { return frand() * (M_PI * 2); } +INLINE bool rand_chance(double chance) { + return frand() < chance; +} + #endif // IGUARD_random_h diff --git a/src/util/crap.h b/src/util/crap.h index b294142ad0..ecc5e94316 100644 --- a/src/util/crap.h +++ b/src/util/crap.h @@ -17,16 +17,30 @@ void* memdup(const void *src, size_t size) attr_returns_allocated attr_nonnull(1 void inherit_missing_pointers(uint num, void *dest[num], void *const base[num]) attr_nonnull(2, 3); bool is_main_thread(void); +typedef union FloatBits { + float val; + uint32_t bits; +} FloatBits; + +typedef union DoubleBits { + double val; + uint64_t bits; +} DoubleBits; + INLINE uint32_t float_to_bits(float f) { - union { uint32_t i; float f; } u; - u.f = f; - return u.i; + return ((FloatBits) { .val = f }).bits; } INLINE float bits_to_float(uint32_t i) { - union { uint32_t i; float f; } u; - u.i = i; - return u.f; + return ((FloatBits) { .bits = i }).val; +} + +INLINE uint32_t double_to_bits(float f) { + return ((DoubleBits) { .val = f }).bits; +} + +INLINE double bits_to_double(uint64_t i) { + return ((DoubleBits) { .bits = i }).val; } extern SDL_threadID main_thread_id; From f507a33f9d56ce5b3e150e70ccce63b677aa6ff4 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Wed, 13 Nov 2019 01:52:55 +0200 Subject: [PATCH 052/104] fix double_to_bits (copypaste fail) --- src/util/crap.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/crap.h b/src/util/crap.h index ecc5e94316..45c7c4be94 100644 --- a/src/util/crap.h +++ b/src/util/crap.h @@ -35,8 +35,8 @@ INLINE float bits_to_float(uint32_t i) { return ((FloatBits) { .bits = i }).val; } -INLINE uint32_t double_to_bits(float f) { - return ((DoubleBits) { .val = f }).bits; +INLINE uint64_t double_to_bits(double d) { + return ((DoubleBits) { .val = d }).bits; } INLINE double bits_to_double(uint64_t i) { From c831660ab899347c69ced1c4f1d28a250681da72 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Tue, 19 Nov 2019 07:52:22 +0200 Subject: [PATCH 053/104] Emscripten compat fixups --- src/meson.build | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/meson.build b/src/meson.build index f848448715..456eca2cd4 100644 --- a/src/meson.build +++ b/src/meson.build @@ -206,7 +206,6 @@ if host_machine.system() == 'emscripten' # NOTE: the _SDL_LoadWAV_RW is an LTO workaround; we don't actually care about that function. '-s', 'EXPORTED_FUNCTIONS=["_main", "_vfs_sync_callback", "_SDL_LoadWAV_RW"]', '-s', 'GL_PREINITIALIZED_CONTEXT=1', - '-s', 'ASYNCIFY_IMPORTS=["_koishi_impl_fiber_swap"]', '-lidbfs.js', # Try enabling this if unpatched Freetype crashes @@ -235,6 +234,17 @@ if host_machine.system() == 'emscripten' ] endif +<<<<<<< HEAD +======= + if get_option('b_lto') + em_link_args += [ + # See https://github.com/emscripten-core/emscripten/issues/8574 + '-s', 'WASM_OBJECT_FILES=0', + '--llvm-lto', '1', + ] + endif + +>>>>>>> Emscripten compat fixups foreach suffix : em_link_output_suffixes em_link_outputs += ['@0@.@1@'.format(taisei_basename, suffix)] endforeach From 04a306616d672d3522774f70f3fc6f6ad68bf240 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Wed, 13 Nov 2019 02:24:01 +0200 Subject: [PATCH 054/104] New RNG API, with crude semi-automatic misuse detection --- scripts/taiseilib/common.py | 17 ++- scripts/upkeep.py | 13 +- scripts/upkeep/check-rng-usage.py | 106 +++++++++++++++ src/common_tasks.c | 2 +- src/global.c | 6 +- src/projectile.h | 2 +- src/random.c | 205 ++++++++++++++++++++---------- src/random.h | 175 +++++++++++++++++++------ src/stage.c | 16 +-- src/stages/stage1_events.c | 109 ++++++++-------- src/util/compat.h | 4 + 11 files changed, 482 insertions(+), 173 deletions(-) create mode 100755 scripts/upkeep/check-rng-usage.py diff --git a/scripts/taiseilib/common.py b/scripts/taiseilib/common.py index 3a2c4ae37e..8fd20a3d93 100644 --- a/scripts/taiseilib/common.py +++ b/scripts/taiseilib/common.py @@ -14,7 +14,8 @@ class TaiseiError(RuntimeError): class DefaultArgs(object): def __init__(self): self.fallback_version = None - self.rootdir = Path(__file__).parent.parent.parent + self.rootdir = Path(os.environ.get('MESON_SOURCE_ROOT', Path(__file__).parent.parent.parent)).resolve() + self.builddir = Path(os.environ.get('MESON_BUILD_ROOT', '.')).resolve() self.depfile = None @@ -33,6 +34,12 @@ def add_common_args(parser, *, depfile=False): help='Taisei source directory' ) + parser.add_argument('--builddir', + type=Path, + default=default_args.builddir, + help='Taisei build directory' + ) + if depfile: parser.add_argument('--depfile', type=Path, @@ -62,15 +69,15 @@ def run_main(func, args=None): def write_depfile(depfile, target, deps): with Path(depfile).open('w') as df: - l = [str(target) + ":"] + list(str(d) for d in deps) + [str(Path(__file__).resolve())] - df.write(" \\\n ".join(l)) + l = [str(target) + ':'] + list(str(d) for d in deps) + [str(Path(__file__).resolve())] + df.write(' \\\n '.join(l)) def update_text_file(outpath, data): import io try: - with open(str(outpath), "r+t") as outfile: + with open(str(outpath), 'r+t') as outfile: contents = outfile.read() if contents == data: @@ -80,7 +87,7 @@ def update_text_file(outpath, data): outfile.write(data) outfile.truncate() except (FileNotFoundError, io.UnsupportedOperation): - with open(str(outpath), "w") as outfile: + with open(str(outpath), 'w') as outfile: outfile.write(data) diff --git a/scripts/upkeep.py b/scripts/upkeep.py index b9c869f6bd..51109b3c1b 100755 --- a/scripts/upkeep.py +++ b/scripts/upkeep.py @@ -26,12 +26,21 @@ def main(args): scripts = pargs.rootdir / 'scripts' / 'upkeep' tasks = ( - 'fixup-source-files', + ['fixup-source-files', 'check-rng-usage'], 'update-glsl-sources', ) with ThreadPoolExecutor() as ex: - tuple(ex.map(lambda task: subprocess.check_call([scripts / f'{task}.py'] + args[1:]), tasks)) + def do_task(task): + if isinstance(task, str): + print('[upkeep] begin task', task) + subprocess.check_call([scripts / f'{task}.py'] + args[1:]) + print('[upkeep] task', task, 'done') + else: + for t in task: + do_task(t) + + tuple(ex.map(do_task, tasks)) if __name__ == '__main__': diff --git a/scripts/upkeep/check-rng-usage.py b/scripts/upkeep/check-rng-usage.py new file mode 100755 index 0000000000..5e38f64b4f --- /dev/null +++ b/scripts/upkeep/check-rng-usage.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 + +import re +import ast +import json +import shlex +import subprocess +import sys +import code + +from pathlib import Path + +from taiseilib.common import ( + run_main, + add_common_args, +) + +from concurrent.futures import ( + ThreadPoolExecutor, +) + + +re_suspicious_rng = re.compile(r'rng_next\(\)[^;]+?rng_next\(\)', re.DOTALL) +re_fileinfo = re.compile(r'\n# +(\d+) +(".*?").*?\n') + + +def get_source_info(m): + src = m.string[:m.end()] + fileinfo_index = src.rindex('\n# ') + src_since_anchor = src[fileinfo_index:] + + lineno, fname = re_fileinfo.search(src_since_anchor).groups() + lineno = int(lineno) + lineno += src_since_anchor.count('\n') + fname = ast.literal_eval(fname) + + return (fname, lineno) + + +def expand_line(m): + src = m.string + start, end = m.span() + + while src[start] != '\n': + start -= 1 + + while src[end] != '\n': + end += 1 + + return src[start:m.start()] + '\x1b[1;31m' + src[m.start():m.end()] + '\x1b[0m' + src[m.end():end] + + +def find_suspicious_callsites(src): + for m in re_suspicious_rng.finditer(src): + fname, lineno = get_source_info(m) + segment = expand_line(m) + print(f'{fname}:{lineno}: Suspected RNG API misuse: {segment}\n', file=sys.stderr) + + +def remove_flag(cmd, flag, nvalues=0): + while True: + try: + i = cmd.index(flag) + for n in range(1 + nvalues): + del cmd[i] + except ValueError: + break + + +def preprocess(cmd_json): + cmd = cmd_json['command'] + cmd = shlex.split(cmd) + + remove_flag(cmd, '-o') + remove_flag(cmd, '-c') + remove_flag(cmd, '-include', 1) + remove_flag(cmd, '-fpch-preprocess') + remove_flag(cmd, '-MD') + remove_flag(cmd, '-MQ', 1) + remove_flag(cmd, '-MF', 1) + remove_flag(cmd, cmd_json['output']) + + cmd += ['-DRNG_API_CHECK', '-E', '-o', '-'] + + # print(' '.join(cmd)) + p = subprocess.run(cmd, stdout=subprocess.PIPE, cwd=cmd_json['directory']) + + return p.stdout.decode('utf8') + + +def main(args): + import argparse + parser = argparse.ArgumentParser(description='Update build defintions to include all GLSL files.', prog=args[0]) + add_common_args(parser) + + args = parser.parse_args(args[1:]) + + with (args.builddir / 'compile_commands.json').open() as f: + compile_commands = json.load(f) + + with ThreadPoolExecutor() as ex: + tuple(ex.map(lambda c: find_suspicious_callsites(preprocess(c)), compile_commands)) + + +if __name__ == '__main__': + run_main(main) diff --git a/src/common_tasks.c b/src/common_tasks.c index afb99dfbff..d2ea4592da 100644 --- a/src/common_tasks.c +++ b/src/common_tasks.c @@ -55,7 +55,7 @@ complex common_wander(complex origin, double dist, Rect bounds) { // assert(point_in_rect(origin, bounds)); while(attempts--) { - angle = rand_angle(); + angle = rng_angle(); dir = cdir(angle); dest = origin + dist * dir; diff --git a/src/global.c b/src/global.c index 7a1d64b24c..147302c0aa 100644 --- a/src/global.c +++ b/src/global.c @@ -15,9 +15,9 @@ Global global; void init_global(CLIAction *cli) { memset(&global, 0, sizeof(global)); - tsrand_init(&global.rand_game, time(0)); - tsrand_init(&global.rand_visual, time(0)); - tsrand_switch(&global.rand_visual); + rng_init(&global.rand_game, time(0)); + rng_init(&global.rand_visual, time(0)); + rng_make_active(&global.rand_visual); memset(&global.replay, 0, sizeof(Replay)); diff --git a/src/projectile.h b/src/projectile.h index b0fcc4779d..0e67fbea84 100644 --- a/src/projectile.h +++ b/src/projectile.h @@ -21,7 +21,7 @@ #include "move.h" #include "coroutine.h" -#ifdef DEBUG +#if defined(DEBUG) && !defined(RNG_API_CHECK) #define PROJ_DEBUG #endif diff --git a/src/random.c b/src/random.c index 31b1bd0188..4b24fb54b7 100644 --- a/src/random.c +++ b/src/random.c @@ -8,12 +8,12 @@ #include "taisei.h" -#include - -#include "global.h" #include "random.h" +#include "util.h" + +#include -static RandomState *tsrand_current; +static RandomState *rng_active_state; uint64_t splitmix64(uint64_t *state) { // from http://xoshiro.di.unimi.it/splitmix64.c @@ -25,7 +25,7 @@ uint64_t splitmix64(uint64_t *state) { } uint64_t makeseed(void) { - static uint64_t s; + static uint64_t s = (uintptr_t)&makeseed; return splitmix64(&s) ^ SDL_GetPerformanceCounter(); } @@ -49,85 +49,166 @@ static uint64_t xoshiro256plus(uint64_t s[4]) { return result_plus; } -uint32_t tsrand_p(RandomState *rnd) { - assert(!rnd->locked); - return xoshiro256plus(rnd->state) >> 32; +void rng_init(RandomState *rng, uint64_t seed) { + memset(rng, 0, sizeof(*rng)); + rng_seed(rng, seed); } -uint64_t tsrand64_p(RandomState *rnd) { - assert(!rnd->locked); - return xoshiro256plus(rnd->state); +void rng_seed(RandomState *rng, uint64_t seed) { + rng->state[0] = splitmix64(&seed); + rng->state[1] = splitmix64(&seed); + rng->state[2] = splitmix64(&seed); + rng->state[3] = splitmix64(&seed); } -void tsrand_seed_p(RandomState *rnd, uint64_t seed) { - rnd->state[0] = splitmix64(&seed); - rnd->state[1] = splitmix64(&seed); - rnd->state[2] = splitmix64(&seed); - rnd->state[3] = splitmix64(&seed); +void rng_make_active(RandomState *rng) { + rng_active_state = rng; } -void tsrand_switch(RandomState *rnd) { - tsrand_current = rnd; +rng_val_t rng_next_p(RandomState *rng) { + assert(!rng->locked); + return (rng_val_t) { xoshiro256plus(rng->state) }; } -void tsrand_init(RandomState *rnd, uint64_t seed) { - memset(rnd, 0, sizeof(RandomState)); - tsrand_seed_p(rnd, seed); +rng_val_t rng_next(void) { + return rng_next_p(rng_active_state); } -void tsrand_seed(uint64_t seed) { - tsrand_seed_p(tsrand_current, seed); +void rng_nextn(size_t n, rng_val_t v[n]) { + for(size_t i = 0; i < n; ++i) { + v[i] = rng_next(); + } } -uint32_t tsrand(void) { - return tsrand_p(tsrand_current); +/* + * Output conversion functions + */ + +uint64_t vrng_u64(rng_val_t v) { + return v._value; } -uint64_t tsrand64(void) { - return tsrand64_p(tsrand_current); +int64_t vrng_i64(rng_val_t v) { + return (int64_t)v._value; +} + +uint32_t vrng_u32(rng_val_t v) { + return v._value >> 32; } -static inline double make_unsigned_double(uint64_t x) { - // Range: [0.0; 1.0) - return (x >> 11) * 0x1.0p-53; +int32_t vrng_i32(rng_val_t v) { + return (int32_t)(v._value >> 32); } -static inline double make_signed_double(uint64_t x) { - // Range: (-1.0; 1.0) - // NOTE: slight bias towards 0, because -0 exists +double vrng_f64(rng_val_t v) { + return (v._value >> 11) * 0x1.0p-53; +} + +double vrng_f64s(rng_val_t v) { DoubleBits db; - db.val = make_unsigned_double(x << 1); - db.bits |= x & (UINT64_C(1) << 63); + db.val = vrng_f64((rng_val_t) { v._value << 1 }); + db.bits |= v._value & (UINT64_C(1) << 63); return db.val; } -double frand(void) { - return make_unsigned_double(tsrand64()); +float vrng_f32(rng_val_t v) { + return (v._value >> 40) * 0x1.0p-24f; } -double nfrand(void) { - return make_signed_double(tsrand64()); +float vrng_f32s(rng_val_t v) { + FloatBits fb; + fb.val = vrng_f32((rng_val_t) { v._value << 1 }); + fb.bits |= vrng_u32(v) & (1 << 31); + return fb.val; } -bool rand_bool(void) { - return tsrand64() >> 63; +bool vrng_bool(rng_val_t v) { + return v._value >> 63; } -double rand_sign(void) { - return bits_to_double((UINT64_C(0x3FF) << 52) | (tsrand64() & (UINT64_C(1) << 63))); +double vrng_f64_sign(rng_val_t v) { + return bits_to_double((UINT64_C(0x3FF) << 52) | (v._value & (UINT64_C(1) << 63))); } -float rand_signf(void) { - return bits_to_float((0x7f << 23) | (tsrand() & (1 << 31))); +float vrng_f32_sign(rng_val_t v) { + return bits_to_float((0x7f << 23) | (vrng_u32(v) & (1 << 31))); } -// we use this to support multiple rands in a single statement without breaking replays across different builds +double vrng_f64_range(rng_val_t v, double rmin, double rmax) { + return vrng_f64(v) * (rmax - rmin) + rmin; +} + +float vrng_f32_range(rng_val_t v, float rmin, float rmax) { + return vrng_f32(v) * (rmax - rmin) + rmin; +} + +int64_t vrng_i64_range(rng_val_t v, int64_t rmin, int64_t rmax) { + // NOTE: strictly speaking non-uniform distribution in the general case, but seems good enough for small numbers. + int64_t period = rmax - rmin; + assume(period > 0); + return (int64_t)(v._value % (uint64_t)period) + rmin; +} + +int32_t vrng_i32_range(rng_val_t v, int32_t rmin, int32_t rmax) { + // NOTE: strictly speaking non-uniform distribution in the general case, but seems good enough for small numbers. + int32_t period = rmax - rmin; + assume(period > 0); + return (int32_t)(vrng_u32(v) % (uint32_t)period) + rmin; +} + +double vrng_f64_angle(rng_val_t v) { + return vrng_f64(v) * (M_PI * 2.0); +} + +float vrng_f32_angle(rng_val_t v) { + return vrng_f32(v) * (float)(M_PI * 2.0f); +} + +complex vrng_dir(rng_val_t v) { + return cdir(vrng_f64_angle(v)); +} + +bool vrng_f64_chance(rng_val_t v, double chance) { + return vrng_f64(v) < chance; +} -static uint64_t tsrand_array[TSRAND_ARRAY_LIMIT]; +bool vrng_f32_chance(rng_val_t v, float chance) { + return vrng_f32(v) < chance; +} + +/* + * Deprecated APIs; to be removed + */ + +uint32_t tsrand_p(RandomState *rng) { + return vrng_u32(rng_next_p(rng)); +} + +uint64_t tsrand64_p(RandomState *rng) { + return vrng_u64(rng_next_p(rng)); +} + +uint32_t tsrand(void) { + return rng_u32(); +} + +uint64_t tsrand64(void) { + return rng_u64(); +} + +double frand(void) { + return rng_f64(); +} + +double nfrand(void) { + return rng_f64s(); +} + +static rng_val_t tsrand_array[TSRAND_ARRAY_LIMIT]; static int tsrand_array_elems; static uint64_t tsrand_fillflags = 0; -static void tsrand_error(const char *file, const char *func, uint line, const char *fmt, ...) { +noreturn static void tsrand_error(const char *file, const char *func, uint line, const char *fmt, ...) { char buf[2048] = { 0 }; va_list args; @@ -136,6 +217,7 @@ static void tsrand_error(const char *file, const char *func, uint line, const ch va_end(args); log_fatal("%s(): %s [%s:%u]", func, buf, file, line); + UNREACHABLE; } #define TSRANDERR(...) tsrand_error(file, __func__, line, __VA_ARGS__) @@ -150,18 +232,17 @@ void _tsrand_fill_p(RandomState *rnd, int amount, const char *file, uint line) { tsrand_fillflags = (UINT64_C(1) << amount) - 1; for(int i = 0; i < amount; ++i) { - tsrand_array[i] = tsrand64_p(rnd); + tsrand_array[i] = rng_next_p(rnd); } } void _tsrand_fill(int amount, const char *file, uint line) { - _tsrand_fill_p(tsrand_current, amount, file, line); + _tsrand_fill_p(rng_active_state, amount, file, line); } -uint64_t _tsrand64_a(int idx, const char *file, uint line) { +static rng_val_t _tsrand_val_a(int idx, const char *file, uint line) { if(idx >= tsrand_array_elems || idx < 0) { TSRANDERR("Index out of range (%i / %i)", idx, tsrand_array_elems); - return 0; } if(tsrand_fillflags & (UINT64_C(1) << idx)) { @@ -170,25 +251,21 @@ uint64_t _tsrand64_a(int idx, const char *file, uint line) { } TSRANDERR("Index %i used multiple times", idx); - return 0; } -uint32_t _tsrand_a(int idx, const char *file, uint line) { - return _tsrand64_a(idx, file, line) >> 32; -} -double _afrand(int idx, const char *file, uint line) { - return make_unsigned_double(_tsrand64_a(idx, file, line)); +uint64_t _tsrand64_a(int idx, const char *file, uint line) { + return vrng_u64(_tsrand_val_a(idx, file, line)); } -double _anfrand(int idx, const char *file, uint line) { - return make_signed_double(_tsrand64_a(idx, file, line)); +uint32_t _tsrand_a(int idx, const char *file, uint line) { + return vrng_u32(_tsrand_val_a(idx, file, line)); } -void tsrand_lock(RandomState *rnd) { - rnd->locked = true; +double _afrand(int idx, const char *file, uint line) { + return vrng_f64(_tsrand_val_a(idx, file, line)); } -void tsrand_unlock(RandomState *rnd) { - rnd->locked = false; +double _anfrand(int idx, const char *file, uint line) { + return vrng_f64s(_tsrand_val_a(idx, file, line)); } diff --git a/src/random.h b/src/random.h index 89e54d3c7b..38d522290d 100644 --- a/src/random.h +++ b/src/random.h @@ -11,39 +11,155 @@ #include "taisei.h" +#include "util/crap.h" +#include "util/miscmath.h" + +#define RNG_DEPRECATED attr_deprecated("Use the new rng_ API") + typedef struct RandomState { uint64_t state[4]; +#ifdef DEBUG bool locked; +#endif } RandomState; -uint64_t splitmix64(uint64_t *state); +typedef struct rng_val { + uint64_t _value; +} rng_val_t; + +uint64_t splitmix64(uint64_t *state) attr_nonnull(1); uint64_t makeseed(void); -void tsrand_init(RandomState *rnd, uint64_t seed); -void tsrand_switch(RandomState *rnd); -void tsrand_seed_p(RandomState *rnd, uint64_t seed); -uint32_t tsrand_p(RandomState *rnd); -uint64_t tsrand64_p(RandomState *rnd); +void rng_init(RandomState *rng, uint64_t seed) attr_nonnull(1); +void rng_seed(RandomState *rng, uint64_t seed) attr_nonnull(1); +void rng_make_active(RandomState *rng) attr_nonnull(1); +rng_val_t rng_next_p(RandomState *rng) attr_nonnull(1); + +#ifdef DEBUG +INLINE void rng_lock(RandomState *rng) { rng->locked = true; } +INLINE void rng_unlock(RandomState *rng) { rng->locked = false; } +#else +#define rng_lock(rng) (rng, (void)0) +#define rng_unlock(rng) (rng, (void)0) +#endif + +// NOTE: if you rename this, also update scripts/upkeep/check-rng-usage.py! +rng_val_t rng_next(void); +void rng_nextn(size_t n, rng_val_t v[n]) attr_nonnull(2); + +#define RNG_ARRAY(name, size) rng_val_t name[size]; RNG_NEXT(name) + +#define RNG_NEXT(_val) \ + rng_nextn(sizeof(_val)/sizeof(rng_val_t), _Generic((_val), \ + rng_val_t: &(_val), \ + rng_val_t*: (_val) \ + )) + +uint64_t vrng_u64(rng_val_t v) attr_pure; +#define rng_u64() vrng_u64(rng_next()) +int64_t vrng_i64(rng_val_t v) attr_pure; +#define rng_i64() vrng_i64(rng_next()) + +uint32_t vrng_u32(rng_val_t v) attr_pure; +#define rng_u32() vrng_u32(rng_next()) +int32_t vrng_i32(rng_val_t v) attr_pure; +#define rng_i32() vrng_i32(rng_next()) + +double vrng_f64(rng_val_t v) attr_pure; +#define rng_f64() vrng_f64(rng_next()) +double vrng_f64s(rng_val_t v) attr_pure; +#define rng_f64s() vrng_f64s(rng_next()) + +float vrng_f32(rng_val_t v) attr_pure; +#define rng_f32() vrng_f32(rng_next()) +float vrng_f32s(rng_val_t v) attr_pure; +#define rng_f32s() vrng_f32s(rng_next()) + +#define vrng_real(v) vrng_f64(v) +#define rng_real() vrng_real(rng_next()) +#define vrng_sreal(v) vrng_f64s(v) +#define rng_sreal() vrng_sreal(rng_next()) + +bool vrng_bool(rng_val_t v); +#define rng_bool() vrng_bool(rng_next()) + +double vrng_f64_sign(rng_val_t v) attr_pure; +#define rng_f64_sign() vrng_f64_sign(rng_next()) +float vrng_f32_sign(rng_val_t v) attr_pure; +#define rng_f32_sign() vrng_f32_sign(rng_next()) + +#define vrng_sign(v) vrng_f64_sign(v) +#define rng_sign() vrng_sign(rng_next()) + +double vrng_f64_range(rng_val_t v, double rmin, double rmax) attr_pure; +#define rng_f64_range(rmin, rmax) vrng_f64_range(rng_next(), rmin, rmax) +float vrng_f32_range(rng_val_t v, float rmin, float rmax) attr_pure; +#define rng_f32_range(rmin, rmax) vrng_f32_range(rng_next(), rmin, rmax) -void tsrand_seed(uint64_t seed); -uint32_t tsrand(void); -uint64_t tsrand64(void); +#define vrng_range(v, rmin, rmax) _Generic((rmin), \ + float: \ + _Generic((rmax), \ + float: vrng_f32_range, \ + default: vrng_f64_range \ + ), \ + default: vrng_f64_range \ +)(v, rmin, rmax) -void tsrand_lock(RandomState *rnd); -void tsrand_unlock(RandomState *rnd); +#define rng_range(rmin, rmax) vrng_range(rng_next(), rmin, rmax) -double frand(void); // Range: [0.0; 1.0) -double nfrand(void); // Range: (-1.0; 1.0) -bool rand_bool(void); -double rand_sign(void); // 1.0 or -1.0 -float rand_signf(void); // 1.0f or -1.0f +int64_t vrng_i64_range(rng_val_t v, int64_t rmin, int64_t rmax) attr_pure; +#define rng_i64_range(rmin, rmax) vrng_i64_range(rng_next(), rmin, rmax) +int32_t vrng_i32_range(rng_val_t v, int32_t rmin, int32_t rmax) attr_pure; +#define rng_i32_range(rmin, rmax) vrng_i32_range(rng_next(), rmin, rmax) -void _tsrand_fill_p(RandomState *rnd, int amount, const char *file, uint line); -void _tsrand_fill(int amount, const char *file, uint line); -uint32_t _tsrand_a(int idx, const char *file, uint line); -uint64_t _tsrand64_a(int idx, const char *file, uint line); -double _afrand(int idx, const char *file, uint line); -double _anfrand(int idx, const char *file, uint line); +#define vrng_irange(v, rmin, rmax) vrng_i32_range(v, rmin, rmax) +#define rng_irange(rmin, rmax) vrng_range(rng_next(), rmin, rmax) + +double vrng_f64_angle(rng_val_t v) attr_pure; +#define rng_f64_angle() vrng_f64_angle(rng_next()) +float vrng_f32_angle(rng_val_t v) attr_pure; +#define rng_f32_angle() vrng_f32_angle(rng_next()) + +#define vrng_angle(v) vrng_f64_angle(v) +#define rng_angle() vrng_angle(rng_next()) + +complex vrng_dir(rng_val_t v) attr_pure; +#define rng_dir() vrng_dir(rng_next()) + +bool vrng_f64_chance(rng_val_t v, double chance) attr_pure; +#define rng_f64_chance(chance) vrng_f64_chance(rng_next(), chance) +bool vrng_f32_chance(rng_val_t v, float chance) attr_pure; +#define rng_f32_chance(chance) vrng_f32_chance(rng_next(), chance) + +#define vrng_chance(v, chance) _Generic((chance), \ + float: vrng_f32_chance, \ + default: vrng_f64_chance \ +)(v, chance) + +#define rng_chance(chance) vrng_chance(rng_next(), chance) + +/* + * Deprecated APIs; to be removed + */ + +uint32_t tsrand_p(RandomState *rng) RNG_DEPRECATED; +uint64_t tsrand64_p(RandomState *rng) RNG_DEPRECATED; + +uint32_t tsrand(void) RNG_DEPRECATED; +uint64_t tsrand64(void) RNG_DEPRECATED; + +double frand(void) RNG_DEPRECATED; // Range: [0.0; 1.0) +double nfrand(void) RNG_DEPRECATED; // Range: (-1.0; 1.0) +bool rand_bool(void) RNG_DEPRECATED; +double rand_sign(void) RNG_DEPRECATED; // 1.0 or -1.0 +float rand_signf(void) RNG_DEPRECATED; // 1.0f or -1.0f + +void _tsrand_fill_p(RandomState *rnd, int amount, const char *file, uint line) RNG_DEPRECATED; +void _tsrand_fill(int amount, const char *file, uint line) RNG_DEPRECATED; +uint32_t _tsrand_a(int idx, const char *file, uint line) RNG_DEPRECATED; +uint64_t _tsrand64_a(int idx, const char *file, uint line) RNG_DEPRECATED; +double _afrand(int idx, const char *file, uint line) RNG_DEPRECATED; +double _anfrand(int idx, const char *file, uint line) RNG_DEPRECATED; #define tsrand_fill_p(rnd,amount) _tsrand_fill_p(rnd, amount, __FILE__, __LINE__) #define tsrand_fill(amount) _tsrand_fill(amount, __FILE__, __LINE__) @@ -53,19 +169,4 @@ double _anfrand(int idx, const char *file, uint line); #define TSRAND_ARRAY_LIMIT 16 -// Range: [rmin; rmax) -INLINE double rand_range(double rmin, double rmax) { - // TODO: ensure uniform distribution? - return frand() * (rmax - rmin) + rmin; -} - -INLINE double rand_angle(void) { - // TODO: ensure uniform distribution? - return frand() * (M_PI * 2); -} - -INLINE bool rand_chance(double chance) { - return frand() < chance; -} - #endif // IGUARD_random_h diff --git a/src/stage.c b/src/stage.c index 61e942e91a..a9c5d92651 100644 --- a/src/stage.c +++ b/src/stage.c @@ -881,13 +881,13 @@ static RenderFrameAction stage_render_frame(void *arg) { return RFRAME_DROP; } - tsrand_lock(&global.rand_game); - tsrand_switch(&global.rand_visual); + rng_lock(&global.rand_game); + rng_make_active(&global.rand_visual); BEGIN_DRAW_CODE(); stage_draw_scene(stage); END_DRAW_CODE(); - tsrand_unlock(&global.rand_game); - tsrand_switch(&global.rand_game); + rng_unlock(&global.rand_game); + rng_make_active(&global.rand_game); draw_transition(); return RFRAME_SWAP; @@ -934,13 +934,13 @@ void stage_enter(StageInfo *stage, CallChain next) { stage_preload(); stage_draw_init(); - tsrand_switch(&global.rand_game); + rng_make_active(&global.rand_game); stage_start(stage); if(global.replaymode == REPLAY_RECORD) { uint64_t start_time = (uint64_t)time(0); uint64_t seed = makeseed(); - tsrand_seed_p(&global.rand_game, seed); + rng_seed(&global.rand_game, seed); global.replay_stage = replay_create_stage(&global.replay, stage, start_time, seed, global.diff, &global.plr); @@ -966,7 +966,7 @@ void stage_enter(StageInfo *stage, CallChain next) { assert(stg != NULL); assert(stage_get(stg->stage) == stage); - tsrand_seed_p(&global.rand_game, stg->rng_seed); + rng_seed(&global.rand_game, stg->rng_seed); log_debug("REPLAY_PLAY mode: %d events, stage: \"%s\"", stg->numevents, stage->title); log_debug("Start time: %"PRIu64, stg->start_time); @@ -1017,7 +1017,7 @@ void stage_end_loop(void* ctx) { stage_free(); player_free(&global.plr); cosched_finish(&s->sched); - tsrand_switch(&global.rand_visual); + rng_make_active(&global.rand_visual); free_all_refs(); ent_shutdown(); stage_objpools_free(); diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 129801b18f..774365446b 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -107,12 +107,12 @@ static void cirno_iceplosion0(Boss *c, int time) { .pos = c->pos, .color = RGB(0.3,0.3,0.8), .rule = accelerated, - .args = { global.diff/4.*cexp(2.0*I*M_PI*frand()) + 2.0*I, 0.002*cexp(I*(M_PI/10.0*(_i%20))) } + .args = { global.diff/4.0*rng_dir() + 2.0*I, 0.002*cdir(M_PI/10.0*(_i%20)) } ); } FROM_TO(150, 300, 30-5*global.diff) { - float dif = M_PI*2*frand(); + float dif = rng_angle(); int i; play_sound("shot1"); for(i = 0; i < 20; i++) { @@ -142,14 +142,14 @@ void cirno_crystal_rain(Boss *c, int time) { int hdiff = max(0, (int)global.diff - D_Normal); - if(frand() > 0.95-0.1*global.diff) { - tsrand_fill(2); + if(rng_chance(0.05 + 0.1 * global.diff)) { + RNG_ARRAY(rng, 2); PROJECTILE( .proto = pp_crystal, - .pos = VIEWPORT_W*afrand(0), + .pos = vrng_range(rng[0], 0, VIEWPORT_W), .color = RGB(0.2,0.2,0.4), .rule = accelerated, - .args = { 1.0*I, 0.01*I + (-0.005+0.005*global.diff)*anfrand(1) } + .args = { 1.0*I, 0.01*I + (-0.005+0.005*global.diff) * vrng_sreal(rng[1]) } ); } @@ -205,7 +205,7 @@ static void cirno_iceplosion1(Boss *c, int time) { .pos = c->pos, .color = RGB(0,0,0.5), .rule = asymptotic, - .args = { (3+_i/3.0)*cexp(I*((2)*M_PI/8.0*i + (0.1+0.03*global.diff)*(1 - 2*frand()))), _i*0.7 } + .args = { (3+_i/3.0)*cexp(I*((2)*M_PI/8.0*i + (0.1+0.03*global.diff) * rng_sreal())), _i*0.7 } ); } } @@ -218,7 +218,7 @@ static void cirno_iceplosion1(Boss *c, int time) { .color = RGB(0.3,0.3,0.8), .rule = accelerated, .args = { - 1.5*cexp(2.0*I*M_PI*frand()) - i * 0.4 + 2.0*I*global.diff/4.0, + 1.5*rng_angle() - i * 0.4 + 2.0*I*global.diff/4.0, 0.002*cexp(I*(M_PI/10.0*(_i%20))) } ); @@ -226,7 +226,7 @@ static void cirno_iceplosion1(Boss *c, int time) { } FROM_TO(150, 300, 30 - 6 * global.diff) { - float dif = M_PI*2*frand(); + float dif = rng_angle(); int i; if(_i > 15) { @@ -240,7 +240,7 @@ static void cirno_iceplosion1(Boss *c, int time) { .pos = c->pos, .color = RGB(0.04*_i,0.04*_i,0.4+0.04*_i), .rule = asymptotic, - .args = { (3+_i/3.0)*cexp(I*(2*M_PI/8.0*i + dif)), 2.5 } + .args = { (3+_i/3.0)*cdir(2*M_PI/8.0*i + dif), 2.5 } ); } } @@ -339,7 +339,7 @@ static int halation_orb(Projectile *p, int time) { }; int pcount = sizeof(colors)/sizeof(Color); - float rot = frand() * 2 * M_PI; + float rot = rng_angle(); for(int i = 0; i < pcount; ++i) { PROJECTILE( @@ -347,7 +347,7 @@ static int halation_orb(Projectile *p, int time) { .pos = p->pos, .color = colors+i, .rule = asymptotic, - .args = { cexp(I*(rot + M_PI * 2 * (float)(i+1)/pcount)), 3 } + .args = { cdir(rot + M_PI * 2 * (float)(i+1)/pcount), 3 } ); } @@ -452,7 +452,7 @@ static int cirno_icicles(Projectile *p, int t) { } else if(t == turn) { p->args[0] = 2.5*cexp(I*(carg(p->args[0])-M_PI/2.0+M_PI*(creal(p->args[0]) > 0))); if(global.diff > D_Normal) - p->args[0] += 0.05*nfrand(); + p->args[0] += rng_range(0, 0.05); play_sound("redirect"); spawn_projectile_highlight_effect(p); } else if(t > turn) { @@ -488,7 +488,7 @@ void cirno_icicle_fall(Boss *c, int time) { if(global.diff > D_Easy) { FROM_TO_SND("shot1_loop",120,200,3) { - float f = frand()*_i; + float f = rng_range(0, _i); PROJECTILE(.proto = pp_ball, .pos = c->pos, .color = RGB(0.,0.,0.3), .rule = accelerated, .args = { 0.2*(-2*I-1.5+f),-0.02*I }); PROJECTILE(.proto = pp_ball, .pos = c->pos, .color = RGB(0.,0.,0.3), .rule = accelerated, .args = { 0.2*(-2*I+1.5+f),-0.02*I }); @@ -499,8 +499,8 @@ void cirno_icicle_fall(Boss *c, int time) { FROM_TO(300,400,10) { play_sound("shot1"); float x = VIEWPORT_W/2+VIEWPORT_W/2*(0.3+_i/10.); - float angle1 = M_PI/10*frand(); - float angle2 = M_PI/10*frand(); + float angle1 = rng_range(0, M_PI/10); + float angle2 = rng_range(0, M_PI/10); for(float i = 1; i < 5; i++) { PROJECTILE( .proto = pp_ball, @@ -508,8 +508,8 @@ void cirno_icicle_fall(Boss *c, int time) { .color = RGB(0.,0.,0.3), .rule = accelerated, .args = { - i*I*0.5*cexp(I*angle1), - 0.001*I-(global.diff == D_Lunatic)*0.001*frand() + i*I*0.5*cdir(angle1), + 0.001*I-(global.diff == D_Lunatic)*0.001*rng_real() } ); @@ -519,8 +519,8 @@ void cirno_icicle_fall(Boss *c, int time) { .color = RGB(0.,0.,0.3), .rule = accelerated, .args = { - i*I*0.5*cexp(-I*angle2), - 0.001*I+(global.diff == D_Lunatic)*0.001*frand() + i*I*0.5*cdir(-angle2), + 0.001*I+(global.diff == D_Lunatic)*0.001*rng_real() } ); } @@ -579,14 +579,14 @@ void cirno_crystal_blizzard(Boss *c, int time) { GO_TO(c, global.plr.pos, 0.01); if(!(time % (1 + D_Lunatic - global.diff))) { - tsrand_fill(2); + RNG_ARRAY(rng, 2); PROJECTILE( .proto = pp_wave, .pos = c->pos, .color = RGBA(0.2, 0.2, 0.4, 0.0), .rule = cirno_crystal_blizzard_proj, .args = { - 20 * (0.1 + 0.1 * anfrand(0)) * cexp(I*(carg(global.plr.pos - c->pos) + anfrand(1) * 0.2)), + 20 * (0.1 + 0.1 * vrng_sreal(rng[0])) * cexp(I*(carg(global.plr.pos - c->pos) + vrng_sreal(rng[1]) * 0.2)), 5 }, ); @@ -621,7 +621,7 @@ void cirno_benchmark(Boss* b, int t) { double speed = 10; int c = N*speed/VIEWPORT_H; for(int i = 0; i < c; i++) { - double x = frand()*VIEWPORT_W; + double x = rng_range(0, VIEWPORT_W); double plrx = creal(global.plr.pos); x = plrx + sqrt((x-plrx)*(x-plrx)+100)*(1-2*(xflags &= ~PFLAG_NOGRAZE; } - if(t > 700 && frand() > 0.5) + if(t > 700 && rng_chance(0.5)) projectile_set_prototype(p, pp_plainball); - if(t > 1200 && frand() > 0.5) + if(t > 1200 && rng_chance(0.5)) p->color = *RGB(1.0, 0.2, 0.8); - if(t > 350 && frand() > 0.5) + if(t > 350 && rng_chance(0.5)) p->color.a = 0; } } @@ -695,14 +695,14 @@ static int stage1_circletoss(Enemy *e, int time) { if(global.diff > D_Easy) { FROM_TO_INT_SND("shot1_loop",90,500,150,5+7*global.diff,1) { - tsrand_fill(2); + RNG_ARRAY(rng, 2); PROJECTILE( .proto = pp_thickrice, .pos = e->pos, .color = RGB(0.2, 0.4, 0.8), .rule = asymptotic, .args = { - (1+afrand(0)*2)*cexp(I*carg(global.plr.pos - e->pos)+0.05*I*global.diff*anfrand(1)), + (1+vrng_real(rng[0])*2)*cexp(I*carg(global.plr.pos - e->pos)+0.05*I*global.diff*vrng_sreal(rng[1])), 3 } ); @@ -799,10 +799,10 @@ TASK(circletoss_shoot_toss, { BoxedEnemy e; int times; int duration; int period; play_loop("shot1_loop"); double aim_angle = carg(global.plr.pos - e->pos); - aim_angle += 0.05 * global.diff * nfrand(); + aim_angle += 0.05 * global.diff * rng_real(); complex aim = cdir(aim_angle); - aim *= rand_range(1, 3); + aim *= rng_range(1, 3); PROJECTILE( .proto = pp_thickrice, @@ -907,7 +907,7 @@ TASK(circle_fairy, { complex pos; complex target_pos; }) { int round_interval = 120 - shot_interval * shot_count; for(int round = 0; round < 2; ++round) { - double a_ofs = rand_angle(); + double a_ofs = rng_angle(); for(int i = 0; i < shot_count; ++i) { complex aim; @@ -926,14 +926,14 @@ TASK(circle_fairy, { complex pos; complex target_pos; }) { WAIT(shot_interval); } - e->move.attraction_point += 30 * cdir(rand_angle()); + e->move.attraction_point += 30 * rng_dir(); WAIT(round_interval); } WAIT(10); e->move.attraction = 0; e->move.retention = 1; - e->move.acceleration = -0.04 * I * cdir(nfrand() * M_TAU / 12); + e->move.acceleration = -0.04 * I * cdir(rng_range(0, M_TAU / 12)); STALL; } @@ -952,7 +952,7 @@ TASK(drop_swirl, { complex pos; complex vel; complex accel; }) { while(true) { complex aim = cnormalize(global.plr.pos - e->pos); - aim *= 1 + 0.3 * global.diff + frand(); + aim *= 1 + 0.3 * global.diff + rng_real(); play_sound("shot1"); PROJECTILE( @@ -1083,7 +1083,7 @@ TASK(burst_fairies_2, NO_ARGS) { TASK(burst_fairies_3, NO_ARGS) { for(int i = 10; i--;) { complex pos = VIEWPORT_W/2 - 200 * sin(1.17 * global.frames); - INVOKE_TASK(burst_fairy, pos, sign(nfrand())); + INVOKE_TASK(burst_fairy, pos, rng_sign()); stage_wait(60); } } @@ -1150,7 +1150,7 @@ TASK(multiburst_fairies_1, NO_ARGS) { for(int row = 0; row < 3; ++row) { for(int col = 0; col < 5; ++col) { log_debug("WTF %i %i", row, col); - complex pos = VIEWPORT_W * frand(); + complex pos = rng_range(0, VIEWPORT_W); complex target_pos = 64 + 64 * col + I * (64 * row + 100); complex exit_accel = 0.02 * I + 0.03; INVOKE_TASK(multiburst_fairy, pos, target_pos, exit_accel); @@ -1308,18 +1308,18 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { for(int i = 0; i < nfrog/n; i++) { play_loop("shot1_loop"); - float r = frand(); - float g = frand(); - float b = frand(); + float r = rng_f32(); + float g = rng_f32(); + float b = rng_f32(); for(int j = 0; j < n; j++) { - float speed = 1+(4+0.5*global.diff)*frand(); + float speed = rng_range(1.0f, 5.0f + 0.5f * global.diff); ENT_ARRAY_ADD(&projs, PROJECTILE( .proto = pp_ball, .pos = boss->pos, .color = RGB(r, g, b), - .move = move_linear(speed*cexp(I*tsrand())), + .move = move_linear(speed * rng_dir()), )); } YIELD; @@ -1333,14 +1333,14 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { play_sound("shot_special1"); p->color = *RGB(0.9, 0.9, 0.9); - p->move.retention = 0.8*cdir(rand_angle()); - if(frand() < 0.2) { + p->move.retention = 0.8 * rng_dir(); + if(rng_chance(0.2)) { YIELD; } }); WAIT(60); - int dir = 2*(frand()>0.5)-1; // wait till they figure this out + double dir = rng_sign(); boss->move = (MoveParams){ .velocity = dir*2.7+I, .retention = 0.99, .acceleration = -dir*0.017 }; aniplayer_queue(&boss->ani,"(9)",0); @@ -1349,12 +1349,13 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { ENT_ARRAY_FOREACH(&projs, Projectile *p, { p->color = *RGB(0.9, 0.9, 0.9); - p->move.retention = 1+0.002*global.diff*frand(); - p->move.velocity = 2*cdir(rand_angle()); + p->move.retention = 1 + 0.002 * global.diff * rng_f64(); + p->move.velocity = 2 * rng_dir(); spawn_stain(p->pos, p->angle, 30); spawn_projectile_highlight_effect(p); play_sound_ex("shot2", 0, false); - if(frand() < 0.4) { + + if(rng_chance(0.4)) { YIELD; } }); @@ -1367,8 +1368,8 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { r1 = sin(i/M_PI*5.3) * cos(2*i/M_PI*5.3); r2 = cos(i/M_PI*5.3) * sin(2*i/M_PI*5.3); } else { - r1 = nfrand(); - r2 = nfrand(); + r1 = rng_f32(); + r2 = rng_f32(); } complex aim = cnormalize(global.plr.pos - boss->pos); @@ -1428,7 +1429,7 @@ TASK(tritoss_fairy, { complex pos; complex velocity; complex end_velocity; }) { for(int k = 0; k < rounds; k++) { play_sound("shot1"); - float a = M_PI / 30.0 * ((k/7) % 30) + 0.1 * nfrand(); + float a = M_PI / 30.0 * ((k/7) % 30) + 0.1 * rng_f32(); int n = difficulty_value(3,4,4,5); for(int i = 0; i < n; i++){ @@ -1515,7 +1516,11 @@ TASK(stage_timeline, NO_ARGS) { STAGE_BOOKMARK(post-midboss-filler); for(int i = 0; i < 5; i++) { - INVOKE_TASK_DELAYED(i*200, multiburst_fairy, VIEWPORT_W/2 - 195 * cos(2.43 * i) - 20 * I, VIEWPORT_W / 2 - 100 * cos(2.43 * i) + 100 * I, 0.1 * sign(nfrand())); + INVOKE_TASK_DELAYED(i*200, multiburst_fairy, + VIEWPORT_W/2 - 195 * cos(2.43 * i) - 20 * I, + VIEWPORT_W / 2 - 100 * cos(2.43 * i) + 100 * I, + 0.1 * rng_sign() + ); } for(int i = 0; i < difficulty_value(2, 2, 4, 4); i++) { diff --git a/src/util/compat.h b/src/util/compat.h index 51cce92897..880ce475ab 100644 --- a/src/util/compat.h +++ b/src/util/compat.h @@ -309,4 +309,8 @@ typedef cmplx64 cmplx; #define abort nxAbort #endif +#ifdef RNG_API_CHECK + #define _Generic(ignore, ...) _Generic(0, __VA_ARGS__) +#endif + #endif // IGUARD_util_compat_h From cce13a72996437008afb219828481502beaa86fc Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Thu, 21 Nov 2019 09:14:51 +0200 Subject: [PATCH 055/104] update koishi --- external/koishi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/koishi b/external/koishi index b16c82fc6e..24371f6de9 160000 --- a/external/koishi +++ b/external/koishi @@ -1 +1 @@ -Subproject commit b16c82fc6e86a1623d8ea553bfb934aee05033dc +Subproject commit 24371f6de96f230506eac5f36aa9234625a72f08 From da7a7210887ce4113794edb389b6ff19d19c4ca1 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Thu, 21 Nov 2019 09:15:02 +0200 Subject: [PATCH 056/104] more verbose coroutine debugging output --- src/coroutine.c | 55 ++++++++++++++++++++++++++++++++++++------------- src/coroutine.h | 27 +++++++++++++++++++----- 2 files changed, 63 insertions(+), 19 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index a7b7487aaf..84105b7899 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -13,11 +13,9 @@ #define CO_STACK_SIZE (128 * 1024) -// #define TASK_DEBUG // #define EVT_DEBUG -#ifdef TASK_DEBUG - #undef TASK_DEBUG +#ifdef CO_TASK_DEBUG #define TASK_DEBUG(...) log_debug(__VA_ARGS__) #else #define TASK_DEBUG(...) ((void)0) @@ -45,6 +43,10 @@ struct CoTask { List subtask_chain; uint32_t unique_id; + +#ifdef CO_TASK_DEBUG + char debug_label[256]; +#endif }; #define SUBTASK_NODE_TO_TASK(n) CASTPTR_ASSUME_ALIGNED((char*)(n) - offsetof(CoTask, subtask_chain), CoTask) @@ -55,6 +57,13 @@ static size_t num_tasks_in_use; CoSched *_cosched_global; +#ifdef CO_TASK_DEBUG +static size_t debug_event_id; +#define TASK_DEBUG_EVENT(ev) uint64_t ev = debug_event_id++ +#else +#define TASK_DEBUG_EVENT(ev) ((void)0) +#endif + BoxedTask cotask_box(CoTask *task) { return (BoxedTask) { .ptr = (uintptr_t)task, @@ -98,6 +107,10 @@ CoTask *cotask_new(CoTaskFunc func) { task->unique_id = ++unique_counter; assert(unique_counter != 0); +#ifdef CO_TASK_DEBUG + snprintf(task->debug_label, sizeof(task->debug_label), "", (void*)task, *(void**)&func); +#endif + return task; } @@ -112,8 +125,8 @@ void cotask_free(CoTask *task) { --num_tasks_in_use; TASK_DEBUG( - "Released task %p (%zu tasks allocated / %zu in use)", - (void*)task, + "Released task %s (%zu tasks allocated / %zu in use)", + task->debug_label, num_tasks_allocated, num_tasks_in_use ); } @@ -134,8 +147,8 @@ static void cotask_finalize(CoTask *task) { if(task->supertask) { TASK_DEBUG( - "Slave task %p detaching from master %p", - (void*)task, (void*)task->supertask + "Slave task %s detaching from master %s", + task->debug_label, task->supertask->debug_label ); alist_unlink(&task->supertask->subtasks, &task->subtask_chain); @@ -149,8 +162,8 @@ static void cotask_finalize(CoTask *task) { cotask_cancel(sub); TASK_DEBUG( - "Canceled slave task %p (of master task %p)", - (void*)sub, (void*)task + "Canceled slave task %s (of master task %s)", + sub->debug_label, task->debug_label ); } } @@ -159,7 +172,10 @@ static void cotask_force_cancel(CoTask *task) { // WARNING: It's important to finalize first, because if task == active task, // then koishi_kill will not return! cotask_finalize(task); + TASK_DEBUG_EVENT(ev); + TASK_DEBUG("[%zu] Killing task %s", ev, task->debug_label); koishi_kill(&task->ko); + TASK_DEBUG("[%zu] koishi_kill returned (%s)", ev, task->debug_label); assert(cotask_status(task) == CO_STATUS_DEAD); } @@ -178,7 +194,10 @@ void *cotask_resume(CoTask *task, void *arg) { return NULL; } + TASK_DEBUG_EVENT(ev); + TASK_DEBUG("[%zu] Resuming task %s", ev, task->debug_label); arg = koishi_resume(&task->ko, arg); + TASK_DEBUG("[%zu] koishi_resume returned (%s)", ev, task->debug_label); if(cotask_status(task) == CO_STATUS_DEAD) { cotask_finalize(task); @@ -188,7 +207,12 @@ void *cotask_resume(CoTask *task, void *arg) { } void *cotask_yield(void *arg) { - return koishi_yield(arg); + CoTask *task = cotask_active(); + TASK_DEBUG_EVENT(ev); + TASK_DEBUG("[%zu] Yielding from task %s", ev, task->debug_label); + arg = koishi_yield(arg); + TASK_DEBUG("[%zu] koishi_yield returned (%s)", ev, task->debug_label); + return arg; } CoWaitResult cotask_wait_event(CoEvent *evt, void *arg) { @@ -291,8 +315,8 @@ void cotask_enslave(CoTask *slave) { alist_append(&master->subtasks, &slave->subtask_chain); TASK_DEBUG( - "Made task %p a slave of task %p", - (void*)slave, (void*)slave->supertask + "Made task %s a slave of task %s", + slave->debug_label, slave->supertask->debug_label ); } @@ -317,7 +341,7 @@ static void coevent_wake_subscribers(CoEvent *evt) { CoTask *task = cotask_unbox(subs_snapshot[i]); if(task && cotask_status(task) != CO_STATUS_DEAD) { - EVT_DEBUG("Resume CoEvent{%p} subscriber %p", (void*)evt, (void*)task); + EVT_DEBUG("Resume CoEvent{%p} subscriber %s", (void*)evt, task->debug_label); cotask_resume(task, NULL); } } @@ -353,8 +377,11 @@ void cosched_init(CoSched *sched) { memset(sched, 0, sizeof(*sched)); } -CoTask *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg) { +CoTask *_cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg, CoTaskDebugInfo debug) { CoTask *task = cotask_new(func); +#ifdef CO_TASK_DEBUG + snprintf(task->debug_label, sizeof(task->debug_label), "#%i <%p> %s (%s:%i:%s)", task->unique_id, (void*)task, debug.label, debug.debug_info.file, debug.debug_info.line, debug.debug_info.func); +#endif cotask_resume(task, arg); assert(cotask_status(task) == CO_STATUS_SUSPENDED || cotask_status(task) == CO_STATUS_DEAD); alist_append(&sched->pending_tasks, task); diff --git a/src/coroutine.h b/src/coroutine.h index 2eba1285c7..0b3d405d57 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -12,8 +12,12 @@ #include "taisei.h" #include "entity.h" +#include "util/debug.h" + #include +// #define CO_TASK_DEBUG + typedef struct CoTask CoTask; typedef struct CoSched CoSched; typedef void *(*CoTaskFunc)(void *arg); @@ -58,6 +62,18 @@ typedef struct CoWaitResult { CoEventStatus event_status; } CoWaitResult; +#ifdef CO_TASK_DEBUG +typedef struct CoTaskDebugInfo { + const char *label; + DebugInfo debug_info; +} CoTaskDebugInfo; + +#define COTASK_DEBUG_INFO(label) ((CoTaskDebugInfo) { (label), _DEBUG_INFO_INITIALIZER_ }) +#else +typedef char CoTaskDebugInfo; +#define COTASK_DEBUG_INFO(label) (0) +#endif + void coroutines_init(void); void coroutines_shutdown(void); @@ -91,7 +107,8 @@ void _coevent_array_action(uint num, CoEvent *events, void (*func)(CoEvent*)); #define COEVENT_CANCEL_ARRAY(array) COEVENT_ARRAY_ACTION(coevent_cancel, array) void cosched_init(CoSched *sched); -CoTask *cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg); // creates and runs the task, schedules it for resume on cosched_run_tasks if it's still alive +CoTask *_cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg, CoTaskDebugInfo debug); // creates and runs the task, schedules it for resume on cosched_run_tasks if it's still alive +#define cosched_new_task(sched, func, arg, debug_label) _cosched_new_task(sched, func, arg, COTASK_DEBUG_INFO(debug_label)) uint cosched_run_tasks(CoSched *sched); // returns number of tasks ran void cosched_finish(CoSched *sched); @@ -311,7 +328,7 @@ INLINE BoxedTask _cotask_invoke_helper(CoTask *t, bool is_subtask) { #define _internal_INVOKE_TASK(is_subtask, name, ...) ( \ (void)COTASK_UNUSED_CHECK_##name, \ _cotask_invoke_helper(cosched_new_task(_cosched_global, COTASKTHUNK_##name, \ - &(TASK_ARGS_TYPE(name)) { __VA_ARGS__ } \ + (&(TASK_ARGS_TYPE(name)) { __VA_ARGS__ }), #name \ ), is_subtask) \ ) @@ -334,7 +351,7 @@ INLINE BoxedTask _cotask_invoke_helper(CoTask *t, bool is_subtask) { #define _internal_INVOKE_TASK_DELAYED(is_subtask, _delay, name, ...) ( \ (void)COTASK_UNUSED_CHECK_##name, \ _cotask_invoke_helper(cosched_new_task(_cosched_global, COTASKTHUNKDELAY_##name, \ - &(TASK_ARGSDELAY(name)) { .real_args = { __VA_ARGS__ }, .delay = (_delay) } \ + (&(TASK_ARGSDELAY(name)) { .real_args = { __VA_ARGS__ }, .delay = (_delay) }), #name \ ), is_subtask) \ ) @@ -361,7 +378,7 @@ INLINE BoxedTask _cotask_invoke_helper(CoTask *t, bool is_subtask) { #define _internal_INVOKE_TASK_ON_EVENT(is_subtask, is_unconditional, _event, name, ...) ( \ (void)COTASK_UNUSED_CHECK_##name, \ _cotask_invoke_helper(cosched_new_task(_cosched_global, COTASKTHUNKCOND_##name, \ - &(TASK_ARGSCOND(name)) { .real_args = { __VA_ARGS__ }, .event = (_event), .unconditional = is_unconditional } \ + (&(TASK_ARGSCOND(name)) { .real_args = { __VA_ARGS__ }, .event = (_event), .unconditional = is_unconditional }), #name \ ), is_subtask) \ ) @@ -393,7 +410,7 @@ DECLARE_EXTERN_TASK(_cancel_task_helper, { BoxedTask task; }); #define INVOKE_TASK_INDIRECT_(is_subtask, iface, taskhandle, ...) ( \ _cotask_invoke_helper(cosched_new_task(_cosched_global, taskhandle._cotask_##iface##_thunk, \ - &(TASK_IFACE_ARGS_TYPE(iface)) { __VA_ARGS__ } \ + (&(TASK_IFACE_ARGS_TYPE(iface)) { __VA_ARGS__ }), "" \ ), is_subtask) \ ) From c5f125c143cdb24407e622ceac5988222b075a8e Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 22 Nov 2019 08:25:09 +0200 Subject: [PATCH 057/104] fix error: initializer element is not a compile-time constant --- src/random.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/random.c b/src/random.c index 4b24fb54b7..6c4ecbfebe 100644 --- a/src/random.c +++ b/src/random.c @@ -25,7 +25,7 @@ uint64_t splitmix64(uint64_t *state) { } uint64_t makeseed(void) { - static uint64_t s = (uintptr_t)&makeseed; + static uint64_t s = 69; return splitmix64(&s) ^ SDL_GetPerformanceCounter(); } From 1ec9b2f2f887b64922d4beb90fe09e3efcad034a Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 24 Nov 2019 14:47:46 +0200 Subject: [PATCH 058/104] Experimental coroutine waiting optimization (WIP) Avoids unnecessary back and forth context switches when waiting for a delay or an event. Should be helpful for Emscripten, but needs benchmarking. --- external/koishi | 2 +- src/coroutine.c | 205 +++++++++++++++++++++++++++++++------ src/coroutine.h | 7 +- src/stages/corotest.c | 14 +++ src/stages/stage1_events.c | 2 + 5 files changed, 194 insertions(+), 36 deletions(-) diff --git a/external/koishi b/external/koishi index 24371f6de9..d0d547e6ad 160000 --- a/external/koishi +++ b/external/koishi @@ -1 +1 @@ -Subproject commit 24371f6de96f230506eac5f36aa9234625a72f08 +Subproject commit d0d547e6ad33f8c40d5141cf71869bf1056c3350 diff --git a/src/coroutine.c b/src/coroutine.c index 84105b7899..01fd41d22a 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -28,6 +28,17 @@ #define EVT_DEBUG(...) ((void)0) #endif +enum { + COTASK_WAIT_NONE, + COTASK_WAIT_DELAY, + COTASK_WAIT_EVENT, +}; + +typedef struct CoEventSnapshot { + uint32_t unique_id; + uint16_t num_signaled; +} CoEventSnapshot; + struct CoTask { LIST_INTERFACE(CoTask); koishi_coroutine_t ko; @@ -44,6 +55,22 @@ struct CoTask { uint32_t unique_id; + struct { + CoWaitResult result; + char wait_type; + + union { + struct { + int remaining; + } delay; + + struct { + CoEvent *pevent; + CoEventSnapshot snapshot; + } event; + }; + } wait; + #ifdef CO_TASK_DEBUG char debug_label[256]; #endif @@ -120,6 +147,7 @@ void cotask_free(CoTask *task) { memset(&task->bound_ent, 0, sizeof(task->bound_ent)); memset(&task->finalizer, 0, sizeof(task->finalizer)); memset(&task->subtasks, 0, sizeof(task->subtasks)); + memset(&task->wait, 0, sizeof(task->wait)); alist_push(&task_pool, task); --num_tasks_in_use; @@ -188,7 +216,9 @@ bool cotask_cancel(CoTask *task) { return false; } -void *cotask_resume(CoTask *task, void *arg) { +static void *cotask_force_resume(CoTask *task, void *arg) { + assert(task->wait.wait_type == COTASK_WAIT_NONE); + if(task->bound_ent.ent && !ENT_UNBOX(task->bound_ent)) { cotask_force_cancel(task); return NULL; @@ -206,6 +236,76 @@ void *cotask_resume(CoTask *task, void *arg) { return arg; } +static void *cotask_wake_and_resume(CoTask *task, void *arg) { + task->wait.wait_type = COTASK_WAIT_NONE; + return cotask_force_resume(task, arg); +} + +static CoEventStatus coevent_poll(const CoEvent *evt, const CoEventSnapshot *snap) { + EVT_DEBUG("[%p]", (void*)evt); + EVT_DEBUG("evt->unique_id == %u", evt->unique_id); + EVT_DEBUG("snap->unique_id == %u", snap->unique_id); + EVT_DEBUG("evt->num_signaled == %u", evt->num_signaled); + EVT_DEBUG("snap->num_signaled == %u", snap->num_signaled); + + if( + evt->unique_id != snap->unique_id || + evt->num_signaled < snap->num_signaled + ) { + EVT_DEBUG("Event was canceled"); + return CO_EVENT_CANCELED; + } + + if(evt->num_signaled > snap->num_signaled) { + EVT_DEBUG("Event was signaled"); + return CO_EVENT_SIGNALED; + } + + EVT_DEBUG("Event hasn't changed; waiting..."); + return CO_EVENT_PENDING; +} + +static bool cotask_do_wait(CoTask *task) { + switch(task->wait.wait_type) { + case COTASK_WAIT_NONE: { + return false; + } + + case COTASK_WAIT_DELAY: { + if(--task->wait.delay.remaining < 0) { + return false; + } + + break; + } + + case COTASK_WAIT_EVENT: { + TASK_DEBUG("COTASK_WAIT_EVENT in task %s", task->debug_label); + + CoEventStatus stat = coevent_poll(task->wait.event.pevent, &task->wait.event.snapshot); + if(stat != CO_EVENT_PENDING) { + task->wait.result.event_status = stat; + TASK_DEBUG("COTASK_WAIT_EVENT in task %s RESULT = %i", task->debug_label, stat); + return false; + } + + break; + } + } + + task->wait.result.frames++; + return true; +} + +void *cotask_resume(CoTask *task, void *arg) { + if(!cotask_do_wait(task)) { + return cotask_wake_and_resume(task, arg); + } + + assert(task->wait.wait_type != COTASK_WAIT_NONE); + return NULL; +} + void *cotask_yield(void *arg) { CoTask *task = cotask_active(); TASK_DEBUG_EVENT(ev); @@ -215,19 +315,49 @@ void *cotask_yield(void *arg) { return arg; } -CoWaitResult cotask_wait_event(CoEvent *evt, void *arg) { - assert(evt->unique_id > 0); +static inline CoWaitResult cotask_wait_init(CoTask *task, char wait_type) { + CoWaitResult wr = task->wait.result; + memset(&task->wait, 0, sizeof(task->wait)); + task->wait.wait_type = wait_type; + return wr; +} - CoWaitResult result = { - .frames = 0, - .event_status = CO_EVENT_PENDING, - }; +int cotask_wait(int delay) { + CoTask *task = cotask_active(); + assert(task->wait.wait_type == COTASK_WAIT_NONE); + + cotask_wait_init(task, COTASK_WAIT_DELAY); + task->wait.delay.remaining = delay; + if(cotask_do_wait(task)) + cotask_yield(NULL); + return cotask_wait_init(task, COTASK_WAIT_NONE).frames; + + /* + if(delay == 1) { + cotask_yield(NULL); + return 1; + } - struct { - uint32_t unique_id; - uint16_t num_signaled; - } snapshot = { evt->unique_id, evt->num_signaled }; + if(delay > 1) { + cotask_wait_init(task, COTASK_WAIT_DELAY); + task->wait.delay.remaining = delay; + cotask_do_wait(task); + cotask_yield(NULL); + return cotask_wait_init(task, COTASK_WAIT_NONE).frames; + } + */ + + return 0; +} +static inline CoEventSnapshot coevent_snapshot(CoEvent *evt) { + return (CoEventSnapshot) { + .unique_id = evt->unique_id, + .num_signaled = evt->num_signaled, + }; +} + +static void coevent_add_subscriber(CoEvent *evt, CoTask *task) { evt->num_subscribers++; assert(evt->num_subscribers != 0); @@ -242,34 +372,42 @@ CoWaitResult cotask_wait_event(CoEvent *evt, void *arg) { evt->subscribers = realloc(evt->subscribers, sizeof(*evt->subscribers) * evt->num_subscribers_allocated); } - evt->subscribers[evt->num_subscribers - 1] = cotask_box(cotask_active()); + evt->subscribers[evt->num_subscribers - 1] = cotask_box(task); +} + +CoWaitResult cotask_wait_event(CoEvent *evt, void *arg) { + assert(evt->unique_id > 0); + + /* + CoWaitResult result = { + .frames = 0, + .event_status = CO_EVENT_PENDING, + }; + */ + + CoTask *task = cotask_active(); + CoEventSnapshot snapshot = coevent_snapshot(evt); + coevent_add_subscriber(evt, task); + + cotask_wait_init(task, COTASK_WAIT_EVENT); + task->wait.event.pevent = evt; + task->wait.event.snapshot = coevent_snapshot(evt); + + if(cotask_do_wait(task)) { + cotask_yield(NULL); + } + + return cotask_wait_init(task, COTASK_WAIT_NONE); + /* while(true) { - EVT_DEBUG("[%p]", (void*)evt); - EVT_DEBUG("evt->unique_id == %u", evt->unique_id); - EVT_DEBUG("snapshot.unique_id == %u", snapshot.unique_id); - EVT_DEBUG("evt->num_signaled == %u", evt->num_signaled); - EVT_DEBUG("snapshot.num_signaled == %u", snapshot.num_signaled); - - if( - evt->unique_id != snapshot.unique_id || - evt->num_signaled < snapshot.num_signaled - ) { - EVT_DEBUG("Event was canceled"); - result.event_status = CO_EVENT_CANCELED; + if((result.event_status = coevent_poll(evt, &snapshot)) != CO_EVENT_PENDING) { return result; } - if(evt->num_signaled > snapshot.num_signaled) { - EVT_DEBUG("Event was signaled"); - result.event_status = CO_EVENT_SIGNALED; - return result; - } - - EVT_DEBUG("Event hasn't changed; waiting..."); ++result.frames; cotask_yield(arg); - } + }*/ } CoWaitResult cotask_wait_event_or_die(CoEvent *evt, void *arg) { @@ -342,6 +480,7 @@ static void coevent_wake_subscribers(CoEvent *evt) { if(task && cotask_status(task) != CO_STATUS_DEAD) { EVT_DEBUG("Resume CoEvent{%p} subscriber %s", (void*)evt, task->debug_label); + // cotask_wake_and_resume(task, NULL); cotask_resume(task, NULL); } } @@ -382,7 +521,7 @@ CoTask *_cosched_new_task(CoSched *sched, CoTaskFunc func, void *arg, CoTaskDebu #ifdef CO_TASK_DEBUG snprintf(task->debug_label, sizeof(task->debug_label), "#%i <%p> %s (%s:%i:%s)", task->unique_id, (void*)task, debug.label, debug.debug_info.file, debug.debug_info.line, debug.debug_info.func); #endif - cotask_resume(task, arg); + cotask_force_resume(task, arg); assert(cotask_status(task) == CO_STATUS_SUSPENDED || cotask_status(task) == CO_STATUS_DEAD); alist_append(&sched->pending_tasks, task); return task; diff --git a/src/coroutine.h b/src/coroutine.h index 0b3d405d57..ed561deda7 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -82,6 +82,7 @@ void cotask_free(CoTask *task); bool cotask_cancel(CoTask *task); void *cotask_resume(CoTask *task, void *arg); void *cotask_yield(void *arg); +int cotask_wait(int delay); CoWaitResult cotask_wait_event(CoEvent *evt, void *arg); CoWaitResult cotask_wait_event_or_die(CoEvent *evt, void *arg); CoStatus cotask_status(CoTask *task); @@ -420,10 +421,12 @@ DECLARE_EXTERN_TASK(_cancel_task_helper, { BoxedTask task; }); #define THIS_TASK cotask_box(cotask_active()) #define YIELD cotask_yield(NULL) -#define WAIT(delay) do { int _delay = (delay); while(_delay-- > 0) YIELD; } while(0) +// #define WAIT(delay) do { int _delay = (delay); while(_delay-- > 0) YIELD; } while(0) +#define WAIT(delay) cotask_wait(delay) #define WAIT_EVENT(e) cotask_wait_event((e), NULL) #define WAIT_EVENT_OR_DIE(e) cotask_wait_event_or_die((e), NULL) -#define STALL do { YIELD; } while(1) +// #define STALL do { YIELD; } while(1) +#define STALL cotask_wait(INT_MAX) // to use these inside a coroutine, define a BREAK_CONDITION macro and a BREAK label. #define CHECK_BREAK do { if(BREAK_CONDITION) goto BREAK; } while(0) diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 2273e26b42..5a6d8c6b2c 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -157,6 +157,17 @@ TASK(subtask_test_init, NO_ARGS) { log_debug("************ END ************"); } +TASK(punching_bag, NO_ARGS) { + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(0.5*(VIEWPORT_W+VIEWPORT_H*I), 1000, BigFairy, NULL, 0)); + + INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { + .life_fragment = 10, + .bomb_fragment = 100, + .power = 3, + .points = 5, + }); +} + TASK(stage_main, NO_ARGS) { YIELD; @@ -165,6 +176,9 @@ TASK(stage_main, NO_ARGS) { stage_wait(60); log_debug("test 2! %i", global.timer); + INVOKE_TASK(punching_bag); + return; + for(;;) { INVOKE_TASK(subtask_test_init); INVOKE_TASK_DELAYED(60, test_enemy, 9000, CMPLX(VIEWPORT_W, VIEWPORT_H) * 0.5, 3*I); diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 774365446b..1612060346 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1498,7 +1498,9 @@ TASK(stage_timeline, NO_ARGS) { for(int i = 0; i < swirl_spam_time; i += 30) { int o = ((int[]) { 0, 1, 0, -1 })[(i / 60) % 4]; + log_debug("PRE %i", i + time_ofs); INVOKE_TASK_DELAYED(i + time_ofs, sinepass_swirls, 40, 132 + 32 * o, 1 - 2 * ((i / 60) & 1)); + log_debug("POST %i", i + time_ofs); } time_ofs += swirl_spam_time; From 37a90c851841adaed6650692028a418e03f74533 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 29 Nov 2019 09:23:57 +0200 Subject: [PATCH 059/104] Switch koishi back to master branch It was switched to emscripten-fibers accidentally --- external/koishi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/koishi b/external/koishi index d0d547e6ad..24371f6de9 160000 --- a/external/koishi +++ b/external/koishi @@ -1 +1 @@ -Subproject commit d0d547e6ad33f8c40d5141cf71869bf1056c3350 +Subproject commit 24371f6de96f230506eac5f36aa9234625a72f08 From eb7d0d9d22c423ed8f433a5b641f45cd437623db Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 29 Nov 2019 09:38:45 +0200 Subject: [PATCH 060/104] use new RNG api in boss.c, enemy.c, item.c --- src/boss.c | 26 +++++++++++++------------- src/enemy.c | 8 ++++---- src/item.c | 13 ++++++++----- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/boss.c b/src/boss.c index 0f512131ec..175277b225 100644 --- a/src/boss.c +++ b/src/boss.c @@ -638,7 +638,7 @@ static void spawn_particle_effects(Boss *boss) { .timeout = 180, .draw_rule = Shrink, .args = { 0, add_ref(boss), }, - .angle = M_PI * 2 * frand(), + .angle = rng_angle(), ); } @@ -807,7 +807,7 @@ static void boss_rule_extra(Boss *boss, float alpha) { if(alpha == 0) { lt += 2; - alpha = 1 * frand(); + alpha = rng_real(); } for(int i = 0; i < cnt; ++i) { @@ -818,7 +818,7 @@ static void boss_rule_extra(Boss *boss, float alpha) { float psina = psin(a); PARTICLE( - .sprite = (frand() < v*0.3 || lt > 1) ? "stain" : "arc", + .sprite = (rng_chance(v * 0.3) || lt > 1) ? "stain" : "arc", .pos = boss->pos + dir * (100 + 50 * psin(alpha*global.frames/10.0+2*i)) * alpha, .color = color_mul_scalar(RGBA( 1.0 - 0.5 * psina * v, @@ -1120,7 +1120,7 @@ void process_boss(Boss **pboss) { if(boss_is_dying(boss)) { float t = (global.frames - boss->current->endtime)/(float)BOSS_DEATH_DELAY + 1; - tsrand_fill(6); + RNG_ARRAY(rng, 6); Color *clr = RGBA_MUL_ALPHA(0.1 + sin(10*t), 0.1 + cos(10*t), 0.5, t); clr->a = 0; @@ -1132,10 +1132,10 @@ void process_boss(Boss **pboss) { .draw_rule = Petal, .color = clr, .args = { - sign(anfrand(5))*(3+t*5*afrand(0))*cexp(I*M_PI*8*t), + vrng_sign(rng[5]) * (3 + t * 5 * vrng_real(rng[0])) * cdir(M_PI*8*t), 5+I, - afrand(2) + afrand(3)*I, - afrand(4) + 360.0*I*afrand(1) + vrng_real(rng[2]) + vrng_real(rng[3])*I, + vrng_real(rng[4]) + 360.0*I*vrng_real(rng[1]) }, .layer = LAYER_PARTICLE_PETAL, .flags = PFLAG_REQUIREDPARTICLE, @@ -1155,14 +1155,14 @@ void process_boss(Boss **pboss) { } for(int i = 0; i < 256; i++) { - tsrand_fill(3); + RNG_ARRAY(rng, 3); PARTICLE( .sprite = "flare", .pos = boss->pos, - .timeout = 60 + 10 * afrand(2), + .timeout = vrng_range(rng[2], 60, 70), .rule = linear, .draw_rule = Fade, - .args = { (3+afrand(0)*10)*cexp(I*tsrand_a(1)) }, + .args = { vrng_range(rng[0], 3, 13) * vrng_dir(rng[1]) }, ); } @@ -1352,16 +1352,16 @@ void boss_start_attack(Boss *b, Attack *a) { play_sound(a->type == AT_ExtraSpell ? "charge_extra" : "charge_generic"); for(int i = 0; i < 10+5*(a->type == AT_ExtraSpell); i++) { - tsrand_fill(4); + RNG_ARRAY(rng, 4); PARTICLE( .sprite = "stain", - .pos = VIEWPORT_W/2 + VIEWPORT_W/4*anfrand(0)+I*VIEWPORT_H/2+I*anfrand(1)*30, + .pos = CMPLX(VIEWPORT_W/2 + vrng_sreal(rng[0]) * VIEWPORT_W/4, VIEWPORT_H/2 + vrng_sreal(rng[1]) * 30), .color = RGBA(0.2, 0.3, 0.4, 0.0), .rule = linear, .timeout = 50, .draw_rule = GrowFade, - .args = { sign(anfrand(2))*10*(1+afrand(3)) }, + .args = { vrng_sign(rng[2]) * 10 * vrng_range(rng[3], 1, 4) }, ); } } diff --git a/src/enemy.c b/src/enemy.c index 67da27b227..5df75ef7a3 100644 --- a/src/enemy.c +++ b/src/enemy.c @@ -122,15 +122,14 @@ static void* _delete_enemy(ListAnchor *enemies, List* enemy, void *arg) { play_sound("enemydeath"); for(int i = 0; i < 10; i++) { - tsrand_fill(2); - + RNG_ARRAY(rng, 2); PARTICLE( .sprite = "flare", .pos = e->pos, .timeout = 10, .rule = linear, .draw_rule = Fade, - .args = { (3+afrand(0)*10)*cexp(I*afrand(1)*2*M_PI) }, + .args = { vrng_range(rng[0], 3, 13) * vrng_dir(rng[1]) }, ); } @@ -235,7 +234,8 @@ int enemy_flare(Projectile *p, int t) { // a[0] velocity, a[1] ref to enemy void BigFairy(Enemy *e, int t, bool render) { if(!render) { if(!(t % 5)) { - cmplx offset = (frand()-0.5)*30 + (frand()-0.5)*20.0*I; + cmplx offset = rng_sreal() * 15; + offset += rng_sreal() * 10 * I; PARTICLE( .sprite = "smoothdot", diff --git a/src/item.c b/src/item.c index 6353e8f229..08d73c7d4f 100644 --- a/src/item.c +++ b/src/item.c @@ -142,7 +142,7 @@ Item *create_clear_item(cmplx pos, uint clear_flags) { type = ITEM_VOLTAGE; } - Item *i = create_item(pos, -10*I + 5*nfrand(), type); + Item *i = create_item(pos, -10*I + 5*rng_sreal(), type); if(i) { PARTICLE( @@ -251,7 +251,7 @@ void process_items(void) { if(collect_item(item, 1)) { item->pos0 = item->pos; item->birthtime = global.frames; - item->v = -20*I + 10*nfrand(); + item->v = -20*I + 10*rng_sreal(); } } @@ -276,7 +276,7 @@ void process_items(void) { item->auto_collect = 0; item->pos0 = item->pos; item->birthtime = global.frames; - item->v = -10*I + 5*nfrand(); + item->v = -10*I + 5*rng_sreal(); } } @@ -347,8 +347,11 @@ int collision_item(Item *i) { } static void spawn_item_internal(cmplx pos, ItemType type, float collect_value) { - tsrand_fill(2); - Item *i = create_item(pos, (12 + 6 * afrand(0)) * (cexp(I*(3*M_PI/2 + anfrand(1)*M_PI/11))) - 3*I, type); + cmplx v = rng_range(12, 18); + v *= cdir(3*M_PI/2 + rng_sreal() * M_PI/11); + v -= 3*I; + + Item *i = create_item(pos, v, type); if(i != NULL && collect_value >= 0) { collect_item(i, collect_value); From 4b89ca3612020eb55861d780014a083881a3c4ee Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 29 Nov 2019 09:54:50 +0200 Subject: [PATCH 061/104] ignore -Wdeprecated-declarations in impl. of deprecated RNG api --- src/random.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/random.c b/src/random.c index 6c4ecbfebe..b00e2ec459 100644 --- a/src/random.c +++ b/src/random.c @@ -180,6 +180,8 @@ bool vrng_f32_chance(rng_val_t v, float chance) { * Deprecated APIs; to be removed */ +DIAGNOSTIC(ignored "-Wdeprecated-declarations") + uint32_t tsrand_p(RandomState *rng) { return vrng_u32(rng_next_p(rng)); } From 04162bd292bfdcce5a8b8fd713ed2e97a7baa927 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 29 Nov 2019 10:18:42 +0200 Subject: [PATCH 062/104] use new RNG api in player.c --- src/player.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/player.c b/src/player.c index 67bb5376cc..f873fbf0d6 100644 --- a/src/player.c +++ b/src/player.c @@ -518,12 +518,12 @@ static void player_powersurge_logic(Player *plr) { if(!(global.frames % 6)) { Sprite *spr = get_sprite("part/powersurge_field"); double scale = 2 * plr->powersurge.bonus.discharge_range / spr->w; - double angle = frand() * 2 * M_PI; + double angle = rng_angle(); PARTICLE( .sprite_ptr = spr, .pos = plr->pos, - .color = color_mul_scalar(frand() < 0.5 ? RGBA(1.5, 0.5, 0.0, 0.1) : RGBA(0.0, 0.5, 1.5, 0.1), 0.25), + .color = color_mul_scalar(rng_bool() ? RGBA(1.5, 0.5, 0.0, 0.1) : RGBA(0.0, 0.5, 1.5, 0.1), 0.25), .rule = powersurge_charge_particle, .draw_rule = ScaleFade, .timeout = 14, @@ -763,7 +763,7 @@ static void player_powersurge_expired(Player *plr) { .draw_rule = ScaleFade, .timeout = 20, .args = { 0, 0, scale * (2 + 0 * I) }, - .angle = M_PI*2*frand(), + .angle = rng_angle(), .flags = PFLAG_REQUIREDPARTICLE | PFLAG_NOREFLECT, ); @@ -891,13 +891,14 @@ static int player_death_effect(Projectile *p, int t) { if(t < 0) { if(t == EVENT_DEATH) { for(int i = 0; i < 12; ++i) { + RNG_ARRAY(R, 4); PARTICLE( .proto = pp_blast, - .pos = p->pos + 2 * frand() * cexp(I*M_PI*2*frand()), + .pos = p->pos + vrng_range(R[0], 2, 3) * vrng_dir(R[1]), .color = RGBA(0.15, 0.2, 0.5, 0), - .timeout = 12 + i + 2 * nfrand(), + .timeout = i + vrng_range(R[2], 10, 14), .draw_rule = GrowFade, - .angle = M_PI*2*frand(), + .angle = vrng_angle(R[3]), .flags = PFLAG_NOREFLECT, .layer = LAYER_OVERLAY, ); @@ -918,14 +919,14 @@ void player_death(Player *plr) { play_sound("death"); for(int i = 0; i < 60; i++) { - tsrand_fill(2); + RNG_ARRAY(R, 2); PARTICLE( .sprite = "flare", .pos = plr->pos, .rule = linear, .timeout = 40, .draw_rule = Shrink, - .args = { (3+afrand(0)*7)*cexp(I*tsrand_a(1)) }, + .args = { vrng_range(R[0], 3, 10) * vrng_dir(R[1]) }, .flags = PFLAG_NOREFLECT, ); } @@ -1350,16 +1351,15 @@ void player_graze(Player *plr, cmplx pos, int pts, int effect_intensity, const C c->a = 0; for(int i = 0; i < effect_intensity; ++i) { - tsrand_fill(4); - + RNG_ARRAY(R, 4); PARTICLE( .sprite = "graze", .color = c, .pos = pos, .rule = asymptotic, - .timeout = 24 + 5 * afrand(2), + .timeout = vrng_range(R[2], 4, 29), .draw_rule = ScaleSquaredFade, - .args = { 0.2 * (1+afrand(0)*5)*cexp(I*M_PI*2*afrand(1)), 16 * (1 + 0.5 * anfrand(3)), 1 }, + .args = { 0.2 * vrng_range(R[0], 1, 6) * vrng_dir(R[1]), 16 * (1 + 0.5 * vrng_sreal(R[3])), 1 }, .flags = PFLAG_NOREFLECT, // .layer = LAYER_PARTICLE_LOW, ); @@ -1446,7 +1446,7 @@ void player_add_bombs(Player *plr, int bombs) { } static void scoretext_update(StageText *txt, int t, float a) { - float r = bits_to_float((uintptr_t)txt->custom.data1); + double r = bits_to_double((uintptr_t)txt->custom.data1); txt->pos -= I * cexp(I*r) * a; } @@ -1468,7 +1468,7 @@ static StageText *find_scoretext_combination_candidate(cmplx pos, bool is_piv) { } static void add_score_text(Player *plr, cmplx location, uint points, bool is_piv) { - float rnd = nfrand(); + double rnd = rng_f64s(); StageText *stxt = find_scoretext_combination_candidate(location, is_piv); @@ -1513,7 +1513,7 @@ static void add_score_text(Player *plr, cmplx location, uint points, bool is_piv timings.delay, timings.lifetime, timings.fadeintime, timings.fadeouttime ); - stxt->custom.data1 = (void*)(uintptr_t)float_to_bits(rnd); + stxt->custom.data1 = (void*)(uintptr_t)double_to_bits(rnd); stxt->custom.update = scoretext_update; } else { stxt->color = c; From bb238919a7bba2f555a1e940955b82e4d517c76a Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 1 Dec 2019 23:34:18 +0200 Subject: [PATCH 063/104] fix regression: subtasks not immediatelly cancelled after parent dies --- src/coroutine.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index 01fd41d22a..9400252737 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -218,11 +218,7 @@ bool cotask_cancel(CoTask *task) { static void *cotask_force_resume(CoTask *task, void *arg) { assert(task->wait.wait_type == COTASK_WAIT_NONE); - - if(task->bound_ent.ent && !ENT_UNBOX(task->bound_ent)) { - cotask_force_cancel(task); - return NULL; - } + assert(!task->bound_ent.ent || ENT_UNBOX(task->bound_ent)); TASK_DEBUG_EVENT(ev); TASK_DEBUG("[%zu] Resuming task %s", ev, task->debug_label); @@ -298,6 +294,11 @@ static bool cotask_do_wait(CoTask *task) { } void *cotask_resume(CoTask *task, void *arg) { + if(task->bound_ent.ent && !ENT_UNBOX(task->bound_ent)) { + cotask_force_cancel(task); + return NULL; + } + if(!cotask_do_wait(task)) { return cotask_wake_and_resume(task, arg); } From 95536468c3c245516bb6cb72d5f150dfc743cb8d Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Wed, 4 Dec 2019 20:06:42 +0200 Subject: [PATCH 064/104] 'finish' stage 1 part 2 (lunatic) --- src/boss.c | 2 +- src/enemy.c | 4 +- src/meson.build | 11 -- src/stages/stage1_events.c | 345 ++++++++++++++++++++----------------- src/util/miscmath.c | 8 + src/util/miscmath.h | 2 + 6 files changed, 204 insertions(+), 168 deletions(-) diff --git a/src/boss.c b/src/boss.c index 175277b225..f9ab7d60ed 100644 --- a/src/boss.c +++ b/src/boss.c @@ -1118,7 +1118,7 @@ void process_boss(Boss **pboss) { coevent_signal_once(&boss->events.defeated); } - if(boss_is_dying(boss)) { + if(dying) { float t = (global.frames - boss->current->endtime)/(float)BOSS_DEATH_DELAY + 1; RNG_ARRAY(rng, 6); diff --git a/src/enemy.c b/src/enemy.c index 5df75ef7a3..8d9b20f468 100644 --- a/src/enemy.c +++ b/src/enemy.c @@ -66,8 +66,8 @@ static inline int enemy_call_logic_rule(Enemy *e, int t) { return e->logic_rule(e, t); } else { // TODO: backport unified left/right move animations from the obsolete `newart` branch - complex v = move_update(&e->pos, &e->move); - e->moving = cabs(v) >= 2; + cmplx v = move_update(&e->pos, &e->move); + e->moving = fabs(creal(v)) >= 1; e->dir = creal(v) < 0; } diff --git a/src/meson.build b/src/meson.build index 456eca2cd4..280d93dd6a 100644 --- a/src/meson.build +++ b/src/meson.build @@ -234,17 +234,6 @@ if host_machine.system() == 'emscripten' ] endif -<<<<<<< HEAD -======= - if get_option('b_lto') - em_link_args += [ - # See https://github.com/emscripten-core/emscripten/issues/8574 - '-s', 'WASM_OBJECT_FILES=0', - '--llvm-lto', '1', - ] - endif - ->>>>>>> Emscripten compat fixups foreach suffix : em_link_output_suffixes em_link_outputs += ['@0@.@1@'.format(taisei_basename, suffix)] endforeach diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 1612060346..78c08cd7a2 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -218,7 +218,7 @@ static void cirno_iceplosion1(Boss *c, int time) { .color = RGB(0.3,0.3,0.8), .rule = accelerated, .args = { - 1.5*rng_angle() - i * 0.4 + 2.0*I*global.diff/4.0, + 1.5*rng_dir() - i * 0.4 + 2.0*I*global.diff/4.0, 0.002*cexp(I*(M_PI/10.0*(_i%20))) } ); @@ -526,8 +526,6 @@ void cirno_icicle_fall(Boss *c, int time) { } } } - - } static int cirno_crystal_blizzard_proj(Projectile *p, int time) { @@ -649,88 +647,7 @@ void cirno_benchmark(Boss* b, int t) { } } -static Boss *create_cirno(void) { - Boss* cirno = stage1_spawn_cirno(-230 + 100.0*I); - - boss_add_attack(cirno, AT_Move, "Introduction", 2, 0, cirno_intro_boss, NULL); - boss_add_attack(cirno, AT_Normal, "Iceplosion 0", 20, 23000, cirno_iceplosion0, NULL); - boss_add_attack_from_info(cirno, &stage1_spells.boss.crystal_rain, false); - boss_add_attack(cirno, AT_Normal, "Iceplosion 1", 20, 24000, cirno_iceplosion1, NULL); - - if(global.diff > D_Normal) { - boss_add_attack_from_info(cirno, &stage1_spells.boss.snow_halation, false); - } - - boss_add_attack_from_info(cirno, &stage1_spells.boss.icicle_fall, false); - boss_add_attack_from_info(cirno, &stage1_spells.extra.crystal_blizzard, false); - - boss_start_attack(cirno, cirno->attacks); - return cirno; -} - -static int stage1_circletoss(Enemy *e, int time) { - TIMER(&time); - AT(EVENT_KILLED) { - spawn_items(e->pos, ITEM_POINTS, 2, ITEM_POWER, 1); - return 1; - } - - e->pos += e->args[0]; - - int inter = 2+(global.diffargs[0] = 0.8*e->args[0]; - PROJECTILE( - .proto = pp_rice, - .pos = e->pos, - .color = RGB(0.6, 0.2, 0.7), - .rule = asymptotic, - .args = { - 2*cexp(I*2*M_PI*inter/dur*_i), - _i/2.0 - } - ); - } - - if(global.diff > D_Easy) { - FROM_TO_INT_SND("shot1_loop",90,500,150,5+7*global.diff,1) { - RNG_ARRAY(rng, 2); - PROJECTILE( - .proto = pp_thickrice, - .pos = e->pos, - .color = RGB(0.2, 0.4, 0.8), - .rule = asymptotic, - .args = { - (1+vrng_real(rng[0])*2)*cexp(I*carg(global.plr.pos - e->pos)+0.05*I*global.diff*vrng_sreal(rng[1])), - 3 - } - ); - } - } - - FROM_TO(global.diff > D_Easy ? 500 : 240, 900, 1) - e->args[0] += 0.03*e->args[1] - 0.04*I; - - return 1; -} - - -// #define BULLET_TEST - -#ifdef BULLET_TEST -static int proj_rotate(Projectile *p, int t) { - if(t < 0) { - return ACTION_ACK; - } - - p->angle = global.frames / 60.0; - // p->angle = M_PI/2; - return ACTION_NONE; -} -#endif - -TASK(burst_fairy, { complex pos; complex dir; }) { +TASK(burst_fairy, { cmplx pos; cmplx dir; }) { Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 700, Fairy, NULL, ARGS.dir)); INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { @@ -828,13 +745,13 @@ TASK(circletoss_fairy, { complex pos; complex velocity; complex exit_accel; int .power = 1, }); - INVOKE_TASK_DELAYED(60, circletoss_shoot_circle, ENT_BOX(e), + INVOKE_SUBTASK_DELAYED(60, circletoss_shoot_circle, ENT_BOX(e), .duration = 40, .interval = 2 + (global.diff < D_Hard) ); if(global.diff > D_Easy) { - INVOKE_TASK_DELAYED(90, circletoss_shoot_toss, ENT_BOX(e), + INVOKE_SUBTASK_DELAYED(90, circletoss_shoot_toss, ENT_BOX(e), .times = 4, .period = 150, .duration = 5 + 7 * global.diff @@ -1006,14 +923,6 @@ TASK(multiburst_fairy, { complex pos; complex target_pos; complex exit_accel; }) e->move.attraction = 0; e->move.retention = 1; e->move.acceleration = ARGS.exit_accel; - STALL; -} - -TASK(instantcircle_fairy_exit, { BoxedEnemy e; complex exit_accel; }) { - Enemy *e = TASK_BIND(ARGS.e); - e->move.attraction = 0; - e->move.retention = 1; - e->move.acceleration = ARGS.exit_accel; } TASK(instantcircle_fairy_shoot, { BoxedEnemy e; int cnt; double speed; double boost; }) { @@ -1057,7 +966,110 @@ TASK(instantcircle_fairy, { complex pos; complex target_pos; complex exit_accel; ); } - INVOKE_TASK_DELAYED(200, instantcircle_fairy_exit, be, ARGS.exit_accel); + WAIT(200); + e->move.attraction = 0; + e->move.retention = 1; + e->move.acceleration = ARGS.exit_accel; +} + +TASK(waveshot, { cmplx pos; real angle; real spread; real freq; int shots; int interval; } ) { + for(int i = 0; i < ARGS.shots; ++i) { + cmplx v = 4 * cdir(ARGS.angle + ARGS.spread * triangle(ARGS.freq * i)); + + play_loop("shot1_loop"); + PROJECTILE( + .proto = pp_thickrice, + .pos = ARGS.pos, + .color = RGBA(0.0, 0.5 * (1.0 - i / (ARGS.shots - 1.0)), 1.0, 1), + // .move = move_asymptotic(-(8-0.1*i) * v, v, 0.8), + .move = move_accelerated(-v, 0.02 * v), + ); + + WAIT(ARGS.interval); + } +} + +TASK(waveshot_fairy, { cmplx pos; cmplx target_pos; cmplx exit_accel; }) { + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 4200, BigFairy, NULL, 0)); + + INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { + .points = 4, + .power = 2, + }); + + e->move = move_towards(ARGS.target_pos, 0.03); + + WAIT(120); + + cmplx orig_pos = e->pos; + real angle = carg(global.plr.pos - orig_pos); + cmplx pos = orig_pos - 24 * cdir(angle); + INVOKE_SUBTASK(waveshot, pos, angle, rng_sign() * M_PI/14, 1.0/12.0, 61, 1); + + WAIT(120); + + e->move.attraction = 0; + e->move.retention = 0.8; + e->move.acceleration = ARGS.exit_accel; +} + +TASK(explosion_fairy, { cmplx pos; cmplx target_pos; cmplx exit_accel; }) { + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 6000, BigFairy, NULL, 0)); + + INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { + .points = 8, + }); + + e->move = move_towards(ARGS.target_pos, 0.04); + + WAIT(60); + + int cnt = 60; + real ofs = rng_angle(); + + play_sound("shot_special1"); + + for(int i = 0; i < cnt; ++i) { + cmplx aim = 4 * circle_dir_ofs(i, cnt, ofs); + real s = 0.5 + 0.5 * triangle(6.0 * i / (real)cnt); + + Color clr; + + if(s == 1) { + clr = *RGB(1, 0, 0); + } else { + clr = *color_lerp( + RGB(0.1, 0.6, 1.0), + RGB(1.0, 0.0, 0.3), + s * s + ); + color_mul(&clr, &clr); + } + + PROJECTILE( + .proto = s == 1 ? pp_bigball : pp_ball, + .pos = e->pos, + .color = &clr, + .move = move_asymptotic_simple(aim, 1 + 8 * s), + ); + + for(int j = 0; j < 4; ++j) { + aim *= 0.8; + PROJECTILE( + .proto = pp_rice, + .pos = e->pos, + .color = &clr, + // .move = move_asymptotic_simple(aim * (0.8 - 0.2 * j), 1 + 4 * s), + .move = move_asymptotic_simple(aim, 1 + 8 * s), + ); + } + } + + WAIT(10); + + e->move.attraction = 0; + e->move.retention = 0.8; + e->move.acceleration = ARGS.exit_accel; } // opening. projectile bursts @@ -1173,6 +1185,17 @@ TASK(instantcircle_fairies, { int duration; }) { } } +TASK(waveshot_fairies, { int duration; }) { + int interval = 200; + + for(int t = ARGS.duration; t > 0; t -= interval) { + double x = VIEWPORT_W/2 + round(rng_sreal() * 69); + double y = rng_range(200, 240); + INVOKE_TASK(waveshot_fairy, x, x+y*I, 0.15 * I); + WAIT(interval); + } +} + TASK_WITH_INTERFACE(midboss_intro, BossAttack) { Boss *boss = INIT_BOSS_ATTACK(); BEGIN_BOSS_ATTACK(); @@ -1410,19 +1433,18 @@ TASK(spawn_midboss, NO_ARGS) { boss_start_attack(boss, boss->attacks); } -TASK(tritoss_fairy, { complex pos; complex velocity; complex end_velocity; }) { - Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 4000, BigFairy, NULL, 0)); +TASK(tritoss_fairy, { cmplx pos; cmplx velocity; cmplx end_velocity; }) { + Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 16000, BigFairy, NULL, 0)); INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { .points = 5, - .power = 2, + .power = 5, }); e->move = move_linear(ARGS.velocity); - - WAIT(120); - - e->move.retention = 0.8; + WAIT(60); + e->move.retention = 0.9; + WAIT(20); int interval = difficulty_value(7,6,5,3); int rounds = 680/interval; @@ -1432,7 +1454,7 @@ TASK(tritoss_fairy, { complex pos; complex velocity; complex end_velocity; }) { float a = M_PI / 30.0 * ((k/7) % 30) + 0.1 * rng_f32(); int n = difficulty_value(3,4,4,5); - for(int i = 0; i < n; i++){ + for(int i = 0; i < n; i++) { PROJECTILE( .proto = pp_thickrice, .pos = e->pos, @@ -1465,16 +1487,37 @@ TASK(tritoss_fairy, { complex pos; complex velocity; complex end_velocity; }) { WAIT(interval); } - WAIT(20); e->move = move_asymptotic_simple(ARGS.end_velocity, -1); - STALL; +} + +TASK(spawn_boss, NO_ARGS) { + STAGE_BOOKMARK_DELAYED(120, boss); + + Boss *boss = global.boss = stage1_spawn_cirno(-230 + 100.0*I); + + boss_add_attack(boss, AT_Move, "Introduction", 2, 0, cirno_intro_boss, NULL); + boss_add_attack(boss, AT_Normal, "Iceplosion 0", 20, 23000, cirno_iceplosion0, NULL); + boss_add_attack_from_info(boss, &stage1_spells.boss.crystal_rain, false); + boss_add_attack(boss, AT_Normal, "Iceplosion 1", 20, 24000, cirno_iceplosion1, NULL); + + if(global.diff > D_Normal) { + boss_add_attack_from_info(boss, &stage1_spells.boss.snow_halation, false); + } + + boss_add_attack_from_info(boss, &stage1_spells.boss.icicle_fall, false); + boss_add_attack_from_info(boss, &stage1_spells.extra.crystal_blizzard, false); + + boss_start_attack(boss, boss->attacks); } TASK(stage_timeline, NO_ARGS) { stage_start_bgm("stage1"); stage_set_voltage_thresholds(50, 125, 300, 600); + // INVOKE_TASK(waveshot_fairy, VIEWPORT_W/2, (VIEWPORT_W+VIEWPORT_H*I)*0.5, 0.5*I); + // return; + INVOKE_TASK_DELAYED(100, burst_fairies_1); INVOKE_TASK_DELAYED(240, burst_fairies_2); INVOKE_TASK_DELAYED(440, sinepass_swirls, 180, 100, 1); @@ -1498,16 +1541,14 @@ TASK(stage_timeline, NO_ARGS) { for(int i = 0; i < swirl_spam_time; i += 30) { int o = ((int[]) { 0, 1, 0, -1 })[(i / 60) % 4]; - log_debug("PRE %i", i + time_ofs); INVOKE_TASK_DELAYED(i + time_ofs, sinepass_swirls, 40, 132 + 32 * o, 1 - 2 * ((i / 60) & 1)); - log_debug("POST %i", i + time_ofs); } time_ofs += swirl_spam_time; INVOKE_TASK_DELAYED(40 + time_ofs, burst_fairies_1); - int instacircle_time = filler_time - swirl_spam_time - 400; + int instacircle_time = filler_time - swirl_spam_time - 600; for(int i = 0; i < instacircle_time; i += 180) { INVOKE_TASK_DELAYED(i + time_ofs, sinepass_swirls, 80, 132, 1); @@ -1517,66 +1558,62 @@ TASK(stage_timeline, NO_ARGS) { WAIT(filler_time - midboss_time); STAGE_BOOKMARK(post-midboss-filler); - for(int i = 0; i < 5; i++) { - INVOKE_TASK_DELAYED(i*200, multiburst_fairy, - VIEWPORT_W/2 - 195 * cos(2.43 * i) - 20 * I, - VIEWPORT_W / 2 - 100 * cos(2.43 * i) + 100 * I, - 0.1 * rng_sign() - ); - } + INVOKE_TASK_DELAYED(100, circletoss_fairy, -25 + VIEWPORT_H/3*I, 1 - 0.5*I, 0.01 * ( 1 - I), 200); + INVOKE_TASK_DELAYED(125, circletoss_fairy, VIEWPORT_W+25 + VIEWPORT_H/3*I, -1 - 0.5*I, 0.01 * (-1 - I), 200); - for(int i = 0; i < difficulty_value(2, 2, 4, 4); i++) { - INVOKE_TASK_DELAYED(100 + 20 * (i&1), circletoss_fairy, (VIEWPORT_W+50) * (i&1) - 25 + VIEWPORT_H / 3 * I * (1 + i/2), 1 - 2 * (i&1) - 0.5 * I, 0.01 * (1 - 2 * (i&1) - I), 200); + if(global.diff > D_Normal) { + INVOKE_TASK_DELAYED(100, circletoss_fairy, -25 + 2*VIEWPORT_H/3*I, 1 - 0.5*I, 0.01 * ( 1 - I), 200); + INVOKE_TASK_DELAYED(125, circletoss_fairy, VIEWPORT_W+25 + 2*VIEWPORT_H/3*I, -1 - 0.5*I, 0.01 * (-1 - I), 200); } - INVOKE_TASK_DELAYED(300, tritoss_fairy, VIEWPORT_W / 2 - 30*I, 2 * I, -2.6 * I); + INVOKE_TASK_DELAYED(240, waveshot_fairies, 600); + INVOKE_TASK_DELAYED(400, burst_fairies_3); -} + STAGE_BOOKMARK_DELAYED(1000, post-midboss-filler-2); -void stage1_events(void) { - TIMER(&global.timer); + INVOKE_TASK_DELAYED(1000, burst_fairies_1); + INVOKE_TASK_DELAYED(1120, explosion_fairy, 120*I, VIEWPORT_W-80 + 120*I, -0.2+0.1*I); + INVOKE_TASK_DELAYED(1280, explosion_fairy, VIEWPORT_W + 220*I, 80 + 220*I, 0.2+0.1*I); - AT(0) { - INVOKE_TASK(stage_timeline); - } + STAGE_BOOKMARK_DELAYED(1400, post-midboss-filler-3); - return; + INVOKE_TASK_DELAYED(1400, drop_swirls, 25, 2*VIEWPORT_W/3, 2*I, -0.06); + INVOKE_TASK_DELAYED(1600, drop_swirls, 25, VIEWPORT_W/3, 2*I, 0.06); - /* - // some chaotic swirls + instant circle combo - FROM_TO(2760, 3800, 20) { - tsrand_fill(2); - create_enemy2c(VIEWPORT_W/2 - 200*anfrand(0), 250+40*global.diff, Swirl, stage1_drop, 1.0*I, 0.001*I + 0.02 + 0.06*anfrand(1)); - } + INVOKE_TASK_DELAYED(1520, tritoss_fairy, VIEWPORT_W / 2 - 30*I, 3 * I, -2.6 * I); - FROM_TO(2900, 3750, 190-30*global.diff) { - create_enemy2c(VIEWPORT_W/2 + 205 * sin(2.13*global.frames), 1200, Fairy, stage1_instantcircle, 2.0*I, 3.0 - 6*frand() - 1.0*I); - } + INVOKE_TASK_DELAYED(1820, circle_fairy, VIEWPORT_W + 42 + 300*I, VIEWPORT_W - 130 + 240*I); + INVOKE_TASK_DELAYED(1820, circle_fairy, - 42 + 300*I, 130 + 240*I); + INVOKE_TASK_DELAYED(1880, instantcircle_fairy, VIEWPORT_W + 42 + 300*I, VIEWPORT_W - 84 + 260*I, 0.2 * (-2 - I)); + INVOKE_TASK_DELAYED(1880, instantcircle_fairy, - 42 + 300*I, 84 + 260*I, 0.2 * ( 2 - I)); - // multiburst + normal circletoss, later tri-toss - FROM_TO(3900, 4800, 200) { - create_enemy1c(VIEWPORT_W/2 - 195 * cos(2.43*global.frames), 1000, Fairy, stage1_multiburst, 2.5*frand()); - } + INVOKE_TASK_DELAYED(2120, waveshot_fairy, VIEWPORT_W + 42 + 300*I, 130 + 140*I, 0.2 * (-2 - I)); + INVOKE_TASK_DELAYED(2120, waveshot_fairy, - 42 + 300*I, VIEWPORT_W - 130 + 140*I, 0.2 * ( 2 - I)); - FROM_TO(4000, 4100, 20) - create_enemy2c(VIEWPORT_W*_i + VIEWPORT_H/3*I, 1700, Fairy, stage1_circletoss, 2-4*_i-0.3*I, 1-2*_i); + WAIT(2500); + INVOKE_TASK(spawn_boss); + while(!global.boss) YIELD; + WAIT_EVENT(&global.boss->events.defeated); - AT(4200) - create_enemy2c(VIEWPORT_W/2.0, 4000, BigFairy, stage1_tritoss, 2.0*I, -2.6*I); -*/ - AT(5000) { - enemy_kill_all(&global.enemies); - stage_unlock_bgm("stage1"); - global.boss = create_cirno(); - } + stage_unlock_bgm("stage1boss"); + WAIT(240); - AT(5100) { - stage_unlock_bgm("stage1boss"); - global.dialog = stage1_dialog_post_boss(); + global.dialog = stage1_dialog_post_boss(); + while(dialog_is_active(global.dialog)) { + YIELD; } - AT(5105) { - stage_finish(GAMEOVER_SCORESCREEN); + WAIT(5); + stage_finish(GAMEOVER_SCORESCREEN); +} + +void stage1_events(void) { + TIMER(&global.timer); + + AT(0) { + INVOKE_TASK(stage_timeline); } + + return; } diff --git a/src/util/miscmath.c b/src/util/miscmath.c index f4803021dc..ef7737f7f0 100644 --- a/src/util/miscmath.c +++ b/src/util/miscmath.c @@ -199,6 +199,14 @@ double swing(double x, double s) { return x * x * ((s + 1) * x + s) / 2 + 1; } +double sawtooth(double x) { + return 2 * (x - floor(x + 0.5)); +} + +double triangle(double x) { + return 2 * fabs(sawtooth(x)) - 1; +} + uint32_t topow2_u32(uint32_t x) { x -= 1; x |= (x >> 1); diff --git a/src/util/miscmath.h b/src/util/miscmath.h index bd51a88b40..a10f71c2fd 100644 --- a/src/util/miscmath.h +++ b/src/util/miscmath.h @@ -44,6 +44,8 @@ cmplx cdir(double angle) attr_const; double psin(double) attr_const; int sign(double) attr_const; double swing(double x, double s) attr_const; +double sawtooth(double x) attr_const; +double triangle(double x) attr_const; uint32_t topow2_u32(uint32_t x) attr_const; uint64_t topow2_u64(uint64_t x) attr_const; float ftopow2(float x) attr_const; From 0b0062d2f14c396acedf896e8fab02941e55dcb6 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Thu, 5 Dec 2019 18:45:32 +0200 Subject: [PATCH 065/104] pimp up stage1 background --- .../00-taisei.pkgdir/gfx/stage1/fog.webp | Bin 6862 -> 13010 bytes .../00-taisei.pkgdir/gfx/stage1/horizon.tex | 3 + .../00-taisei.pkgdir/gfx/stage1/horizon.webp | Bin 0 -> 501650 bytes .../shader/stage1_water.frag.glsl | 16 +- src/common_tasks.c | 6 +- src/common_tasks.h | 7 +- src/random.c | 7 + src/random.h | 1 + src/stages/stage1.c | 253 ++++++++++++++---- src/stages/stage1.h | 4 + src/stages/stage1_events.c | 11 +- src/stageutils.c | 8 + 12 files changed, 255 insertions(+), 61 deletions(-) create mode 100644 resources/00-taisei.pkgdir/gfx/stage1/horizon.tex create mode 100644 resources/00-taisei.pkgdir/gfx/stage1/horizon.webp diff --git a/resources/00-taisei.pkgdir/gfx/stage1/fog.webp b/resources/00-taisei.pkgdir/gfx/stage1/fog.webp index 2d14edf83d4dc585d52c776d1cb286ce1cffea0e..cd12c0d6a5e9705d66d71f8c749ba6d13dce93b3 100644 GIT binary patch literal 13010 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 Ur`=nA!Tibh^YUL~KO(<*02M+K4gdfE literal 6862 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 ! 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�Jcf;XEuA7w=QUvqb=8bVa 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%0ATvpE&obWp z%;qd}W#kI@gt&$QZGOWa7=J-2O->lNH9~9Zf0|>x-%6c{Q?$k>r>Fq~eo8?MMvdPA z(@3+j0e>)?{oh?G7`WDrr`}qduD+@NSyhiKD3Uq=HY=F!Y^TL>FlIJStPoZgttP%8 zcML+V73%Kq9KEQAW1FN7y*xfi#WYY~ee^RNr=^j9t^!?zMm%+disE6zZL+e40ijO9 zXsM7=5iezUotv`YM+RKgytru+JSD6YS$LHoI^tFndq?PZrX^Eke;o-S)h)V!h(*kV z#2k`}?92NreaAnT>=3_l(&+0~Y+9?&1P5cliXs9m`(KqCsiH3D*j`PTZav{qbz-F5 z)7PfF{3G00anxT`wW70Wy?DU4d}N;;yRy@vOc?=%Qf&G#+_!RBoNoLHDvI>CbK?rm zzGs5AMm{yXfp=?Q zvu-Y$MFmNmSdqNt0+TDAE|*5THL9~ap-ZNa04V_SR`1rx9vi%#(kd#e8kmU(bSQ25 z&CEQB>8l#AwL+a2G5coWU9C^f9LVP-88m3g!*K}2TggEI4Kk4~#xYE8v(rtU78@u5 z(d4I%14Xa~cc1CS7AV%S({q?#l z%!wjLv^E8oA`v+9<%^6Fb2nonsz|Epyo@yKQSx$v+CKgkKf5zyBaY@}Va>nLk~kDWc#ar=(bo@tVQ9rjr|xdoqQ=ryf=|KQXsW!%Rf+fE zfSO`pHcFoX8f*Km)7q>$b#ZRX4G2r=ZJTzIut=NhkWHE>i>|z2Zxg<{Z31o;Snzks znRaM;hR8N%dgm*4os;l zex-*1IloJUeu}Xhd(q|6+{%}PdIAZIdlODa(;1EVM=Hjl>o`lYdhM%`LN!HU^fMy@ z%tVEu?Fig>7JPABI8GL@p6ZAoK8l2bNIKXefhh~i@{z-+49MVWM9+2Qla*+Zd?DKk z<5KpNLJc0ORCv7;d7?%MG^zg@egV5TUQ0=!w6sa3tNb*8i@iG=v;4;SHteMCar<{B z^>}W8fc+}3L1|I;>-{GT(;XWTfy7*|6aDI@}|(Zl}a=im&2_l)FSg( z5V6%?G_H=yAuKzMxH}p{koj7%Q!KO)V3G64%ty#=ZrG+Fnz^@Xy1;Zp7{+bF6K_N7 zAvYt$Ze%d4)?M?o54mNCQAN_S*7c}$YgR~kxt|B3kaw$yCIJDpi*9jMhp1d}hhfd(Nq&I8f(vTxt#PgOtXDG-x;98?InuE%6CZwW$0LH13; zUp5=wzh|-=|BOsZ87?s|q^V;4%lMg0Xr#c~fBoW5cl?y0jy4T;lU+ z_`wpL<>UPj$y`|tIPrM=%HbjlDKzo+25FDb5wh-!i;z*^hHCLBA|~AafAgW@KsIi( zE|4QHpy|cO~{W2M}*@x&%dN1TPKK`3X7u-@y2{#w)a`k z!Ij|mrL>c?Oa^>HR2FB+yIjXLxDxTLWuao0SiQv4c30w~<+%G1RF*hZH~RW^Mc{#k z25HY}<>rGtDt-=TFNst!QpH4SPlQOyqzh+R7tFzB6gU{{X>)Z8s==17uP{V1n{&96 znZJIzlZfw~?ZQ4VjktvS>IdY{d_tNGcA4J`Uy;{12gnX~!zp{70hwo=gCk*^P-R*N zOQr7JG;*$q044ub3DI3Up@R$Ns#|y*+d?tZ!{IObCxA*E7ZVL42Ce5_&aifdbX>G) zb9O9$v?g!9gA*)&$k|N@pPGXgF+qpB5;iC+qc6CZ8mG31f~NZoKn66W7jcY#*H)k= z(J<%G=Qd-u{ocd`%)86ySE+jwa=TR$DF8B$vc?;W_1LQ$&|4PVNstq!Ta7XpyNTFC z!H^qyVd*ObiN@Z+RbyQNwL4Q2swdSt=nInU1hATC|5UQ;*%N*TH&CZAKQ9Hr-G(1*mpKb41^I-o1T{ z@G!=D9DqtcyDj^rvSZOp9q4fJbTc zXW3A$oNz)PVOCJ>UiWn?E;d`>VhdYmmdVHea~6CrJLxGZOfWHWYen0jF2 zyBip^wFtRaIM(hCvWeT#VRTWF19=K~xUN-s&K}w7l_p9pq}E|hE^-M1p7GQyzM-C& z^QPlrz!$iI%TbOC+SstB+Y8A;%V%9Bs-!w_)n|vuaA|TMq@6++B2{KqKu~JvW?t~V z!DA0i`?Vj04%m|_3F3chW*Db6gv{#NPL~?B^;o0K$e_}LftFpJ*n$@}Pn_kp?|Ux~ zr52f5joAwp(s;8-sD>(}F#9NtNGIVebsm2{Je(Z1t3V?ighq&X%6kJ~gd6}t>jq!C$p5S3Fa~b{30nkvax3yGrU|H0)JQy=pc5RV0od5El0yjODS%}-|4c@EvtxvHl3B7 z5W=qYWc&Fv>uJU0Q9f`v*g*9wI*KBemFr!*V;D*f^6$s;07w)A;j1mC zz?jm3qUs)aUiY5}{lWGKW#k>q4~sY+J|O=M)mMG*6HPQ@j_YyJCULS@J&c%yw5Ksc zeW?0e$}y&0BEB@!`Rt_^$wrcWuW+T;7j6?woo2=|Ri!;Ja*KzFaE|6(;pl=k7+!uj z9-W2fCABtDT&0R8)F2;CX#aoPIpZ}zQ^7ve#u}}3lv;neek3;vOO>>U^bcP7?P5*x z6^PA51x^(pv*kZE;c}n;r`t|FArg#SY;1{pNEO2T`YO5>6891MoU^l~l)DD|9MGzltR4MFhA#_@ zIm{jIjGeZXx2Uu|_SL^g+K2G6=(fpIE5I!iFm=m}nLW5XMPesKQD$VG9+hQF47rdr zzbjb&*VnQvg5(ksb>7!ZkQ@X?8+Jh<4Gw2^Kwt;artI~!sWU*fsd;`3g`tnj#BJ%$ zi>S0?6Bj1tEIqSd(e3(s%o=nKoYo5TZX1)FsbbZ~zLAkp!0SRIrjFTWyw&RDh0el; zhl_qJ8>!TMBOV1m)nA%U+|-wZNL%@^OQ*Q19gl~YfUqw013TAbSdkZEFvK9=|>yRrpIW7sr<1+aKVqm za$BSG0$0;<(oD~Bru9ga6ZEFp_+^magUNate0ts13r=!>{`TlGp;MVbMN1Xw*N~|Q z2ckfaEMK%?2+z$BS3hSGT_PJ3@zc<_H~r*u<1hupxYU{lSr@vmdNu~Z-G)K0@M~DL zmBp>J3BrXKa@6Xu`z5wTP2nuI`|Q}I)t0l^eH(joU+(zR%Cess=x8dA58~=PyyrYo zf|j?E=(Ub`yZqjBn$M^>>|)5=HISI%vSOuC4F>oe@2??t6sFLgR(-aS3c)rNBFMcQ z6vH$U!1`7ytUv2*>S-BTz7nFavkx;Cu_65KNXyP|L-EJZ($r2ME`UyXx>x_AXvfi| z+_{E}^so5xm-nqF^lgOPQN)h0MUpIBa+J>xfQOFO$Hwi%l3Z(f^(_n^VMZSr4Zt@h zAh+5s5-3!fc@)um^7}Tw1WJMF23ZIz478xCD9j%3a z+u#;O&K8YI5ZWU`2{0@v9VgOk_iyRf;Jyx~i(*-D{Z2Uc0vFZCeI)H(p~~4zgV^I- zfb4o=gK=&lfW_u8ak+r23^^%iBwO%KhzGcIsF zfv%4DBUv+kf0TzyFaERkdDVh~u1{!h&(@d=6L0X7XI<*in58ex094Ja(jisS`wB}- zz-M-gMYfN8Kj|?!Tq(CnRi2K*7q+7Mn-h3kfjodp!!Nc|6U>SJjE4-S;XzGX+1G}n{ zMpcT()~FY$o5_c+w+kc4n_@tw06YkWOi!9S--orVksmcW9y8A_IQ5A&6|*v;LG3|4 zYB4#T)-{i3OXq_oPy_;`Don8y0l0Pk5##@WT;%_W2KAB6ec5FkiD}7K9b6WhrjX?| z;YVPeqWp&<0xGlVL&zW5V$1u9wIF@B2IEZGO9y{LuOeH2 z-Md}jX7lZC<3u$9(`}aeSNXTLFyczKU? zDMr0ZCIlmu(Lk}K4HW_X*UmkCc%~ze;J4KL;PpXXt2WkSmg{5uc?%%uvDo^r_r=Tv z5q=7C*csO=x$2xfd6!m_0n+g+F1C1t%{)f zWKtcX-YiT<1V(J+{yWdAxPEgk)-jmY`H%ZX$GAp^-D1F9Uc@Xou3X!!YwYr4RBaHn zdYB`OCBdC~tBY)6?>I-v`#AxNp> z6oZTv(NYxpPea zGDdymd57VILkw)=a2$29>bH(-m*9D`c1QciUA;p%GOQe!DWf_Xe%LzBRnK4GH6BaO znUD9Jkz2uNYxGd99F7>8&mKG&x?Ra2S`^;4>Xb8UaL6p5LLq*pd>qM~c)X@^dhNa9 z&XcgLX?Koc;DPi;;*DC`wZp7uPkwGcbZYi{I>Fj4Gx^yO4tdhswCeN`D2d?2We8M|Yo!d=2hrgABp_>2LrH@P z=RbNbhb|Q_RB@TwnZSYwC32LNDSlJhWN_e4#jWk!6p4@n3NYAF60XkpV5-B4iJW=C z3)o@U&l8SxY&XagiK8@}+_%hNb^(#o$-4PBQ2MOEhgx#Yd_T;;%_%TPn|^3d`>cv! zCLx=jAj_sC-RPFGkU)I z6H70dwD~E5O8A;N37Wxldbg4YT%1t2RajiiN2$!u?ni`_dDUW%9A}+Yy@HNY2V;y{ zLbI>MfTzJq2!F|v)#uAX?K-AeitKfYqjO4$@qwxJ>#On&F<=~0WTu)|+7c+)Jz-hM z-Q83>tkngQe=2xeIqWxL{kmzW4a$GoZ&oyLdVbQW8#K!#mu{)HOb}^{2dLKscu0p- z<$sZ=CE{hE6nIM|ZY()pOG3{2YTfOW#R~0;{X-7)6akzLtp4t{#iMXNwOW#z9w0GH zI8JHU%ok0zOj}+L@g03s;xmg1>lRT%NW*aFGrZ+#u1~6Gr@qRKbVW2CB+FuT2yO_X zaCa@jn{$lvlpY*y$5UNkDh*Z9NnLlVVyVz+mwWppXl#GxGuL?mi;SdsaNrE8l1|h^qof?t9a@CjyBT;87gD2yM*an~3nR3XVP&46-4B5yr&vOiYa4uvcUV9FX@ z3^-x;m&M3iSFKTSClE?a7CFcSRXm20{d^{($AZ6iibOu0t+t~#c^gU}AtTlLI$_jC zzgmr>95}c{qty1DzbbG_fg$K+e$``^)EJx7G*DJJ2?nh;8}V2&xhra#2g*^NJC+EV z;2@JWRxzmPwo|`6iDL21TO{%g?rqjP!&xhGBxGUDl+-znis4NvJ&H>4oZ02N7D$DV zlN3$ao&ra(eB{W{?xet4CtN8T7_e$LsbI>Pu~JAbUtO5$Ik{c?vLcX(rkNQO2FLe?vr>8SrIT znEoFiyye!}>_VEu5N|XINwSDF?rFPrJ(%4ln!IYcJgy=l$hC~SjNKcqVv#%S|?a%3C3L2XgDenvZ!`g_(7{tF{f7! z+k2mYF6XhTiNzq!DomzhH?5uBgS5u`LSGZ42Lxu-_RH459uWM}|z)Bt>@eK`VSE36zHe08E*3P>$d&{LtI;UAWn{2d9b zr90{>2!$MNCkdeKW;IL(iozi--ilv|*A+}hu9E2+!QFIu3n+HOAm=PqDpD%VVH3pD zPjmGFe34)tJs8*T?%E;AVOgU?6L-Cn-3^xTuBlrF*5#}P0EsXynDz#)w>G*OQOSP& zUl-v(P<-LYmjY60lx+zAVfuL%NRh6IWLJ+3;h7K3D0mnE0(l$6iVXTZldrfzZ4}XM z^{C`cS405hh1p?8*hD1&TguKOcXwQQ_E?6Ld7t9?1PFWN143&OZ6aD1%%39nd22Vn z*ymqD;yj8ZE)@0HKoyqY1h_4J4@TU=jL5J%QSsVHQjA{%cHIVj)wX@y-dsYxYvm`x z^usw)hoBbkQpuN#LEXoedyiic{p)^uqlW&d<%K&JA{00Zz^B=RXx@d$igN$3vRW@@ zjpC;~-a@wcjrEp{smPE|0=vk_ zj7j3Mw*6g%I6kQAd;;%)V&Elbc_09syp_%b6BX+A>n3}?qa&4pv^~>%SF0ol2ke!G zf4&WEYwh#jX(4l(UoV^;0syYjAQM2_S(^Gy2{M|LoUl1U9R%zcZ=$dO3yPNl$b%>z z9ZeZd|L(xpN#H#j<(eAO4qh0QI5!|Lgbx&z}Rk0FntWn}E6 z6<_+=2d(vexY>f*Y>7?#;bv|`MhJ^KLwh4Kl~KKak^k12XITy?(Xn!vf5XzFe-!7; zI2a3fHPDKz?+3b_j5%|Ivz-oNT; z=c~g)5HW>)#}b#nLgSi^8Jb4n;{#W9_4cU`UX~csLt<6LyQ;3&m zDJzpR<&68%^1CJ;0XqE{A3ItdPICLS}DXu84)8xbHz$F z9Vi?l5U2fpT`n6odb3WlSGG5A3jp$Y2{z>CN_|^4Kx5#;zod5Kgfwv+UFDJy2JEYK z;^tQQ2YaV?LyFUYs~I^6{8wauYUDjyA&tuwZ#8tbCHN&~=wbeA%O9m5GD<@@(Kr%1fIbsRXn$wX!UM zhP%k=5z!Nb=(~6sN~q1*=`hLtM}*fbS;!}pp9GUo{PUj4`JK6ZwAn1O=FnV-sXw;H zcW~=kiB;wy2Q8}D$rh8#l>N|aVhoBZugy`(d_RpqDD=BOFPg9$lVq+OvESaTEaR(`j9I{e3aGDH`OwOqgM{n(dkpg4>Zq}kJIB`;e7HkkrcAv(00c-(%9{sv%9tAm zd~tzk&sQN2R8EH+nj|p>vXe7EGv{@3n?EqvFr9v{Ytd{9+j_Z~N zQnpRAp@%MgMS$c-f4OWnab{=U)7I)?iz3=h=pJNi$=yuZnsuCC4di4{TG*q!MfJIt zI00RF9ma2;8pSZRT&XUr9L`q?j@C*K6^F%0mOJl99^iV|M1T#q7PR;ESirJTVht2M=J9X?yDV^vyq65MYz>@VV-%R95<>hn!4qh;hBI*cY^0ZK zrk2RNEqD*+mwZT^=0y`pnBU>eELfTFMB+$}$Tr|hi@ziMXs74W;h13K`@5NW+X$^U zWe^VT1_mmSaVD}k`xp*qca1%r=7_Zoed^+xFcYAT#C-b3hwEIL%E?C z?GmYdgj_V0-P2CdIAR?*18-PW$>!}5%U{ji6X`C1Glh|GH*`EZ_DP8ty7SxkXYTGh z>z6Gw*v!t+m!|Z;##J4@YTV>Q$qAy`1SVF?JB-|COQ|sp49QBNdoVJ_>GYs#`gG^S z?ELh2?-k=5ug`5f=!l_%CC}Vspf-49k`p4>MVJz&ZCdrb!8;6gki0^zh{}ZW1sw>Q zs;e(rP@Hr(XUa|Fl+v&j27+pgZ;>eaKJp8erQ9_tLZSYbpNNu* zKFU}jmZ6TPZrqz?e4Z{WetOvbFs0g+kKC1;w~&#AE)ecDJ4yXJT*0#V?Afl2#r><^ zCW%eLNuEFG6TO?SBL2(z%hOqA{_2+RuhRu_+nq|lSb%+%S3mBst`_>30>)M$(AzrR z6x@GOeamYU5VA4-0mzt9th}wj-YB)gCO{aY@(|&?XP!*-41HJY#{7#t_p3#5oW&qv z*(eduYvgW|F>l{V*bgkJs!(Gb|LMvCb;FABM*b3o{D*?6a61J(I(`#d>Od#T0-1>M zg!R`F)7*gNWdM?Ee%YQl81iR%shYMG=*)Jd%Rb%TUrmnLk9Yg@ePb*fmc~*Awpi!d z#~_HEUk3=U${RH-2;GXBrir+n1OeWkA+1pl_7)bQhB|*}ANQ74-2g;P=*r%eWF+=7 zni8W8c?x*?gwA5Syp?oc;9R{9$5Mf9GpMEgRtlgU65v6$DF~DtA9iq>_;DrcEPX>{ z?FF>{b*=XYnA{FDR0SeqJ-WL*B#$!hQEF0GTIDB;_}dO%fMSKlR_$x=7=&2F-di49Z^og?cJb_$Noh`|af-){RoM%!aWPm8Bx7a$gr1)ehE_3;~ zNO_&0uwrKOqDuzqF0mxPL|_yR4@Rjf31!5PkmHwxZut0?Jaj$GP>ehDeKr?J1g<0d zfaw(moXe~d!Vcvj%8d&Gjb=YI1b8wm+}ICuY^jyPdzr(T z`qH4EdWFYYh-Dyy;QoZytyQ_LJFIP6l4@>FZXmO(LLo(13T}cF{1*TM`CZx6FrNom z=b>O$q0tgrE7x*tW{(13^lL@|3$x?hPWWMr*gHZ$!iJ>_kT@hZIyV#*r+v(4&Ad{e zAk!{|vSpURIGU){GM^9qC#QG*W{U1#=32^H8-z&g#!GEyf@LQL;)&6sjXISjH-y>Ds0<%-K)zju;v8}qSlDamr){bj57 zpz_jmvb~o!oTwBrvMWjiyznhqN754LoaP&w{oI5caO`Rk4GN9zH zl9F5zygB5$l=i8nlD}d#mccZ4`__my=Vly+Q;h$jQcUcJFj!8GSRTLNQZ~5}Kl@hH z$V@uz+4URo~ACLqzzGGlal>0;X(0wKmCRD^al}3v>*!oK0s?V zYz2Bt!77Mg>ZCSHFYP!wP&r`0qwcJHUN#n*VR6wR7%33 zG*a4Jd}%l*vl#;Z!VA#RZ1I3*lbd+=Ae+V-QZ{Gr+!+8|TdedZ{A)LOr1u_tX zVj(MwEme!D0)iZrZ5uo^?OJAQ?pAQlSzC%N#s&D=B)gPenxx!&GhJ++k$aLk(y=)^ zAXwzWNNFDhG{i{*Z=HW(udo~Jx$^-~kG%m}s6EM0_BdALv*jzT3YhdAU{qWo!j#ah zkiV{sE!SD_B?oN2@Zs@BK5@)ML_S|r`F!lg%8mx&y_m@aO`C!glVh%>Jk zrv?nEQ(mBw{~kf4`xkqi1(s5wgj?NuX1oHTSYI{+)oe4Hq{sV=pgx+O++5-)@ zLyI&!TDKr&T&S*&;UeGke#IMj2Ii@3Rsn&XP%xsS|AhN=FAn8v%4TR{p~B@Uu2k%d{#YoOCK@t#%`UJ zt2*Ldo1|zcU_6Tz1v=Az7tINjSHlq1Su{pFV_P49405RRb4 z6VQM6a!W6w(dS?md+f9dTG=1WaFg1wEi_Q)B_dMcSA3ZPq8^&N>zHD~^-|R)%G%Lb zM-j(8x$BJ!?6NDW)^o+Nx5mVCQ(6Kft0vNPRUP(qob-V*dLC#@WolP4<@|YOJycag zV@|n&z7EusB&lq*ZEwmwd!vAg0+0+7Ih!jA^VWcKQnCmK-ym#(Wwi0T}fFm|bY zWtFKaZl!0H$VP3%PB|T%aIV#*ca@MSBiyFzQvS_R=u(nCC38E3pK~t zJ^xzgeKe_b%aVx^2BS$h#sDcb&kvomP?e8Pti6LE#W0DqGavV_Z!hH8 zn&vVsY-%L}1Aq;#BVIys$6DkpJ!DXj1-n^-xHP#l52h3?!Cf7(o=o4+J|Zg;+{Iaj zfy8G9(su?`T8f3o>ackGeW9%o#-rm2sEQuyXRc0fWw=w{E!!n;Wg9Ib6Sp-Zp2yfs zI5pMFWrKAn(^0)vagO9Crt!fVPWhK+dn@Ocfva=>lgpRIDyJ0NpN!(Le`d|U@ zhboF8sy!+}sxT9!WnkT9Mr71gjOnD`9%eWoU?FsYT-u(A+{xj%1e3V__CUbBd$VJw zo({3YX75|F3T~D)Yv;jL%d0iWYy%RM91N&r1yl>5OX)e8`W3;GgNo&fsVjD=RTm!$ zNF**wVG*g&a*+Y+4F$j7wCwS`yYq~N{pZxQHIzUtQy_^2<^74h$3v_UF#V@jfbjIg z!QX;km=tp*_^#VR7McBOaod3ff08_psZ%bF1+nFD$Gp0&naq3x@yO&>P9h_ZQn3_9 zP$w}21^r z*A%0AvRiLc|0V*|ya$vteH|DjoL@1DdPx@m^t-KaB(CEN?v@H-Q9U>t>ykrJvTjT2 z-SpSBMnEnxxxn_KOlr1J5|j7J^^}3$xD}kdHYfpq#c7s*0RPxoCK{E6N+2y~Nkm&n~q|+GR2$gC_L`;jlC7io;{4DVVdcqsW?IxmsBWQ>M0tj&a zKsoM;?9!8ahx*kH0aj7MBTCM@K%A(1^G}30Ys1QA_3iF{G+QF|E~)ZyRZlvssrS?r zV9Vzl_5GrE+@>_np=!(GJoS|F0ljoRSKEz{0)|vHm#2Yd`;FGqDseLi!2kHc{Fi)- zdGYZ-7;p9|DR;e3VJ&@{RZi2pZOpmHhe895W-k)jF+Gu`lh8T!%`ems*wU{6Ml8+e zAuv2_aI5EsNaCx!;0#7I*$MwtUl7zKn_P1@d72xp_m&q=#4;`>(SYnYHMX$nr)4UO zv7osEJP>v(Y|J{s@2p$I5=d!|m7)_p>u$BzHXc|H3Kkr=%I$w0fAz!pK7!CmQocOD zMel8*gCyM6N1{hKz{lWF-vszdSzW0lRMpP$25gnb%)Uaw$V662g`W z3Yb{F)dk8IR)w4O;o3%w4Rsg@Nt9!?l=5r?c|Ubr(da!OVJa|#M{f6wV(4CO_$EjWqv$}3vj&uNJ2jJBli`Z+xQ zNvi%k18$w|1#OnxZh3EYm$X#V=zL;P@eg4~Y^Qe{Z_=%A7(6b-0=t&kY2ON+35Gvg zI@!kCiCPma-YsI=bNtw{Nu!-wXjTAG*TN)Bqwq0ZF0G4T=2P>`ykR}$^dcfDEwsj% zVAfs(!ZO&kP@4oD?odm_khnKHR;e@Zfzjbs7Z|ZxTD4I5a4mg=5t1{_Q64S4q8(<( zT(#2%aZe`GdGt-CgOAtO+M7{bCaNxzPrGc+2*_y)c0L}2HSguU$kd)luy_LvB1+)0 z+h9)%mt>^!&Q!HVx$4PdcnB7Cp`HZU*SCXAS8PL|0g=1$Uz6!)><;t+lLY;{9i+SD zmXM9!)XwG2-@IrIgm#UEfy>DCY>LxDhl$hlX6+@7NH2@c`_n``N4^%Kyub=w?>j9$ zU-^R}z>aQb}|1PUFgg?YCb%}Orcrkbv;^iGS$JiVnLK-IJQq^;|l zu2xv<8l8LdB6uvN@86%0#^$PCOPO9$mSI7Gf*J=s{(T86(+*Qen`}T~;y!XIw``-x zx_IyUH%?JPeg0mtLit5YW@W-;bDAnjz78DXvB54~+a&VcSs%0VhxCInPbb0WgwN4mS#>_DUKW+j-gU)I>I1+CvFTvIDKeUO!@H z{-@mnLv$YrA5q!>c%a#`^lA4~lXB_aiU?AO{9~JpQ$KPeO!N&~84Y_TmV@H+{WIgg ze_!x=w`Y4268rPuz=g;gWhlH@$vX4?!KGPNAzhh#J_(f?p(BcBrg)yaqqTjX1ig1; znWXb4;>Mr>jnKmjiqJ<7Z29`-TS7Qkjbp#}7w8;1gEZp3Y9X4H=3a%qLQRa8k^fN7 zP#FoAK(WC`AtNBj0?b=K_zRM9iXZ=&Mure_C4w*nR};&1te{Tbz)N_xyR5d-(>S2l zRRxI-8ak45*1w6x0TG7IYFfD!6zM#K?Z+XIFetA;Jh%dT_y+#eQM6oM_#|pd*%97J z7mBq=$DIh=jrp|>?6p_Su{T|}2|ftjBOWd!fU{P38m=&of^{aOf)tN8jCPjMs1=cN zsSq4C9@BXtzybNOV3Bzu!CIWG($W3~RwTR7t2Ed>2xXsQ8zL1(y>sZEr30kZ^#Zj@ zD#gpDqw|7Gh|nNCcfilIE#zckVeDQ6Vmsz~VllQRV+1E^H$;R#M;}&T9|j&k<1#!j zLBjAXv5&kpQZcY#?IGWh%V|(=GiA%at~v1wb$jjtS<`1eI8T3M9<;MlS#PA~KeoIg zyq`VIG!*dkNt7=oQ}vgwWlk|*FRep=mIw)FkFlttFkrnnK-6B6V7kQk7B8%*g3xiR z!Qq(g5##P(HM z(PY3m@<^iIi6nlPtT+M^5`VB3LDu#+$5``GV(A{5 zHI`nP#WQ1YY33h2KWSt>E$FdML_A8DT@mYH9XRdH?e3iU&|dy--4~j56A>Lu`jbcu zu`}^Ia2Xn5d-+|5oKZWVVI|DJ{wY!{oNp!%ugi~Hnt(gXIwWNJ6C>`z>;32(0xkHi za)uWCLnx~asr_i(ohPui;6SEkGP09AU!^-yFixaQ|5#|4OC&$lunOMIREZy3#RRLl zFgcW%t|i9cjhnZM2IoB*?4k?WMpm)(8nJ3yYWn`ysRq(M9*t|Oz1n4*ayivQ8M%tv zt=-=G&l18UQ8}YsM+J-1fX4#4(OYRHGO-RAtCHi;gKDzenj}br+a^prby(@q6jU#g z{YRk}MH;xl{kZ&(r@?9V^eGaVyiMY|!-BvD>9-Uw2wPdZZS8cF1fqXG_&Ooj6xADm zB#GOOD5%x{QmRxjBS8-^v{IeDf4MxGP{TqDn zf)oW?)CpATl}A?A7*Q!%%VB0KXDap9*d4rDY*M{pGuXa%@$()W6*MnhE|HPy@e%s0 zbJId#V5dKUB~vN2K>#g8*qtw~zWu)^>55;7^v-ztI1|R8*qtJ6qV`H$B1WQt09~VL zs{jgTKaP6kK%y6(*>*@O!izbi0+yl#hiZ}8yAzY7-Aww20Ye?!9rwRft2&LMLW)-x=-ocgwO50(7@phOTn} zw9xLX=d(`ahfcER<_JHhz5;FDCBKubN{ z9JMY?ul|`SQS(K?CAz z;o7d!?4V3(rVOZ_IvPSoBAC8~-%2Wl=)}Ays)O@GcQSJ`R813*Vq8vWa`Nl}vSD!Y zXdxVXf^Yly=8mHl2*Vvt`BCp1+O;pR2&wjF zHVH0$oJQ0e#EpvPt$5KJ!ByAk)v!s(-_u|4BVvZ0iBdvQekq{vA?U=j@m)aOQ&9PM z*DMf2{YQH2b)uF_@sZ^Ca#O>dbfdl)VEj|e*-d0ol?X4DLiI@zm)479k0o(CS6be) zPRCv_$r>8+rf|~*Rd!SLS9KzqcL)&b+U16)XPg)7$C?C+FNqu69I#u=!d-}SUXd05 z<1P&n+_cU)DW;@fftccU?wx>j$Jsns?q`NenXCr?ARttP<=G(x*$0$*ENPTad0lD> z>r%9^6M_rknm%PqFyw0qnsMA#tN*fV^~ZzsM|tV+LP(yL%}InotG)+@c+So zQmfd`O)z)8;=$O#1Fi)o%FDO(Vrdbx>%7Ds+kKoGM>LQe%pG`50PeW6{mWe&tu2?3 z!t!uKXlD-OS=A8oS-U;SJ`RqU(3$ORWdxO*)a8&TXr(NA+^%De^M{BzlbL2Z;0oSeIqnk>a}GZZURKqD24Zs{kW+4o7OkyZkvkNxHHl_kaAWOEkmUEMkczSpC9DEVFULt3biha z7=24FU?e3D!yT7FPKt`wYA?hv=|VwCBbKK3;}ML-c>6%1_<21eQSF9%uqlYCdUHH+ z&;MF7d#x02xx8@Zf~yr!hBb1%EhCltI6jLp@+h*$Tz1{e&+D|qFCN!N^hQ_O*|9gE z2>Zl~0ZxGA>pH3{vM*9LG7>x2>=Kmb4?%ztygdc}(b_YJR~lSXGJMZ1H|s>9MX$1> z{Uu`woEau+c4}9Vg!HbvnLch{`7yc#3^!*yAJHaJHt|x> z2&N-sA4VRXu9y+&*6UV7J1Xq)WXdRo>JvcQ#Y9Bv+JiLWgIzeP*8Uxf3fs)^G1NqZ zTEo^nq3$pIHiQI*8uhiAu>ZjCC>ia7@O7gDQi0b5*jY+f3-83^DP`*gR)lOKg^5K$ z(Qd4iE5H1Wm$E~o!G@!t1Ttowq#Gz1x=o4bs3zG&QHfJbbdB=r`zy`+ zX6EwsO18G#i&lrci@*pot=B)1vHQ1+#P1UCNL5 zGs%+F)^bDM@^5mOo~x$sfv?tBbH$WxYdu2{`=vm#ZBXBx8tbZ&z4>W>k*zctPk% zIKy{BK{Kbid`8y=h8nUM{VIvmY$l&9ZDS61GKIv7%Is*=07D&#EGJ&WCFYcL9&)h- zNE9MyQ_Y)}xTWWt&P}Z2_YpG=@*j}_USy2;pd=jgxR(0MVjhbwAq`QlIZd3vj~z68 zz>D*CejA;8_B#mFft>8Dl)J#{KEWz!WCUNZc!DQlR>T1};*+d0Y6TM8=|(oDL&E1! zj(nEY2!hdetqHb=q~iG*gt{Al#@idV^J}S2sZ;gn1}aHPwyM_YXJe!26v1nk zA2UHcJK#ILeMAsO%T+4VGsMqSz#mX3pA)?$njh&N{E=5M!Js=;ed4VTnRO(mpr7PI zRmfW(nU=UL_W0bxtx;qcj!?Cgyt}yc|J3bR?gjyTaFcE`o)}=1UF&oa93a?+oe1H9 zTYy??3g^MYi9SWWiLexLxjq6%ltTcw^LNnzqOEB7@kgZ$|e(68HaNKm$VCeO-7+JXePeg z(@CgjEQ7PePldHkTq2L zkqd;gw}l2m0AM&M>5^hQ7pAl(txR~*fjX8{Y#64r#KIcl1qD-p^=*y%Q(Xdhing8*mmYQ+jPiG-K^me9)h9)s95@HJoIKJF z;*KV?yivcIG$n@h?om$Owfn1PWtMN1FW>Ni+WmMeFWHARrrQ1diAEKi@Ic1$cm(Jj zi+@o7=wq6+(xhHDw=R3^h>_}4l%I050}m$UmF*LE0nl7lgvq=E-Q&yVdUp>UUB&w@ z96<>(LQ-4zthG=v?As zGS)b>A;h<*YQSODmVS*K8t$``UKWebpp5pNsN(KdBl@KQ3D7~NcnL_T z3GKNv41eVF_uu0?hng7qYNHkps@zwU(AS(xGHxXwUhu3+yt1HvQVS5Egz(!Yn+Y;7 zllUS1XgHJQ8Y|4hEAw3B%$|$})$5c7t}S#lb1@}I)er)22COm$ zEu(@nB;!5>)Tix6)Uy{@1bUdef289!eY=AUQ}T^c(-V4FOPLJZ6d}YdP*2g?CQlBZW$xP&>yWE(Z#ON2t-Z`>8@m=00I!G$Wdo$+cVXqZWu@ul@jn@e^9Av!dsFQ3XVjF7p`&nfE>!q ze#S={CKl>%5N39)#^>Zh7sD0|H8D)h4WoNE6d~ODPIAaaQJmsI6X_Gle>}Q~t z(+#sl6jW}n$IHNAgDux#rcx)b9{en_jQrWqP>H(u)Xn}X-0-s*pmf;JkbULo)SG>p z17X*ZsZ6~aMlgj-Aql9%oQdkgdGgM80`s5Fpy0*s8GpQ^^t6VPII zlBv)jDblu=%(hvB?qh|4+QBy7VmeTy0+YIWXq@iFM#t}We%axVtfVnyO+d>8VcK!y*homKHFt3y<2DCvcv&_{_3{1 zH;mk5a$ECeEPx>Va)wPR)$dnV3ALD?!CxT1AEv=|q+hdgfy)HwKBG*W$Ns^=KE_=@ zE!=IN^*txvOfGQ`>uB_9XDFJneKUF9{#_fvT`acGnp|P;20SOD5J&0WH^Gd$o`p6o zfhD;3XTXoQ)!h8G(v;b%Q*lOR#*fkopkJ)S%^O>-c7xtFZ-L;Wk=u=AA7rgtG-~3$ zfa=$#3r;!%x8D=x_Nk~YK_#L-Thtw2)41{~V}j1+ItF@Z%cX|D3EzT3$29KDvbY30 zk@-Cwrn>vbS#Zkwm*M~E-D*$gnfDt&YIER(Cy29ozBc<4qy`v##%%=|_mZX6O-1Mj zbeL=B&s>(a+q{d%EN$>?BVBVKFK^+phI7Ca%`ACyy+KRK6Hm;ArU{?#V#n4&YZ@jl zH`WOWtlQ4GyL2&Y>}jsr*i&vUi*uiTE@Bc^3}-v$&cJAQ8@Hp7l@VDj(oEyU`CC5B z*Uu{|vm0{5#bN&S^gp6Wvnw~@*Tb};eNfx`F^l!u8*f1|Y{CZ^&2}E(=9F=mv9V0xEzPEmNZ~-hp6sBd!Oi&UZ)%1(QVDm1X4a z=SkL=nM`wBsdV6~>ZZN3A|J0v^3ABx%V#@Ue6Mr(>p+7`{1V>Ltw%Vz3zyRg2iU0= zX$x_u@*SjlpG!3Fd)t%1JB$&P=be&t5tWhH#U5w0hpJYoMHJO$8=icH231uX@XKFSe)S!4|4 zKZLfJ$0im}oOWu0e>Z*)YHBYeCEx6EGq=0Er|+b#zmmF^Dkb&K5@b^@ zS-E*HLMKZQufxM8n)@2l?jz57!nn6pjZJo$ZZ6}$3i!b2l*_E%z0NuimR;UzbCpUw zJoq_tiQmeSyT@snFF@JOJ_ZZQ;pugD^QQTmc@4=+o=A$QH<7fWX{D3A{O*M{Wgs!A z*5-#j?lyq>V%A;OP{B#7)ax(y3>-f|<*xM>rS!pib&A@Gw$f+}Lu+rXv+~c6KE=HU zm#gfV&~k;;U1@YmYg!kz7-(Eqdq_e9xqo}F4doW89(_owrp*6Q7SSj}rDw8jvtqqz z5ar~KvnR87%L7sdt3zT|F5P%7vu`k>tobe8skXD`x9O_6EcSbCQq~3Lrc4oTo1HEn{F*g+^)go&pUIdTz+Cf1}t=6>dq{hg|^9UjBcMsnQ% zf0lq?pa+R^O2Y|)AonqScG#jJb-aAIY%Cpue!9l!vf#5RDj^pia4)_!6@q9>7$Ex>! z)2v>aP4*q$T|MlLrkCmjC)CNg1EI{Zg&U$bjtg%$VIITS4{%bh%mh=YNC_+U^VbCP zgN-{$T`*(#oYGo1LJY{-v+o<~$|ox(H%kt16~scAKgJ>-pv%)}RknmIa--DuCUb|-YDEdETY2C~uL`@$J3QF4oeT^$Lk z&W$+EGJ*f9(NiYo_4pPp0p&d{wmvKqr=W&Kb#fPRL*8VKv-cMHOyen0>6a8~{4GlV z8d$14o`8hYYEa6708$bKF7GEYHiFOgY zO#l26AuR zA~SQ6L6I$}*Bz(F)V~R0miqZebyqoFQjX$IA!>#o3~JH~)$0F`Y(i-pPp(ALJyJTf zU7!G5CL%kkn-RkKekAQI=8f<=F*_?02^QiVPgoV&k=YKW|3~(Lmxcfn*Vh`26hfMu zQdkv*w7suJ6UfS99!7|@ee53^hqZQ1ZOxZ~RyR}`vs=eC6)K{jhu)=9&lQc)!LEtM zGa(XPzkB=nhKrzdxRb7&{VhCo?sm8-&-aSytvL%!0ZYx@4X4ccCo?HrIAka45eS~; zWd%fcbZsadgunHaDw3Y9-uAdUG4y%+!GJ3tF~@ z0xrC9{vc0fpSs<`NW=H*$i}a6HB=bQ$Wp2iH~e^a%x9*vG|d}OI&DeN^>ih9VL#5z zj~|5xQh^6Bo2t2eQIJaH;`S`Uu(@HY8rY7-^XmDRcm1|&Wotv-I-;+2^6y%$D3?$( zxW%a!T9(bnf75fpDv)A!qAalOF&E{jzRIT4f1r3ISy@K)!sO-4Tr4L}=Z%>5xLhe3 z9(L2Oa^=6O7TWUPZX1;BIn$S=fE+NMn|IX{iCM|-#uTnt-;(j%gelowRzg-q+E)b+b8y+NajY;{4}kD-|siURQ* zeJlp@*?_6AeUZFyB6ByiHe!a2sM4)Exf&}P;`VjWAeueb4QcXm{{@JOEe5`2v&hYg z6SOL*F%R8$QD-QLUfUWS7QE1F5s4#>VDai9mmC-p5WoaZy;k_O{A9@owW!mqQAZ$1 zF^>eZ^3~Dg`-{IKjj5aEn*#y6og!KSI>gE1@eBg6z}p#@%eO5a-8KHxR*C0Z%Y}R* zB3Ar!cc=sI%U@tRGa^3p%(!Ql-CqpJo9VwCgyQfIt$H==VZMq$(4g0IfqJwwUc^iK z%De@*4tji16R^UN*t*Q`RxO4d&Erc$2fACN$i8mhUp?!l9-AfajZ3;Cl@4e=U`6_5@g86MA(o%l$RS;l3hk$iY%iP;Zb8fN$b z)>Z~-(OkWNkAOV)>!uor)IbkIK?=6sA)K})S(SXF4oKh?J<)-)rImVGd{-3kgm@Fc zomyEUuN=vwE{bYo#%? zi22{``-V8aXs?^yXbAB*<5ZXr`Z_N>;b+$snqN+MQsTGeNGJQzPEhFPtFV~%1(d#o zcGW@6`TwSGcqoL6kwDpkZ7Z+RqIXm0$-{AMcq3f-dM?tc;l*C zn$_Fq5i)ebSiKSMu+Z#Av4EJFVm;wU)+x&Wng6eqlX?%5KI=*LodPcA5pQ$8TSZVi zTl$D6O8L|Jbhnq{SQ0a4Yo!WDu$}_9DMqI%_0_V;|I0J&HTruWC<-A2zyfi)Zz)nY8l;{$^(2-f7pfZE27MxC z&*L-^P=eQ~1juP-~w*7*^s)S zgSV0Zd5?;(Q+zw}oDwwysdcP^@!Ty^oGnq2X%Ip-91I7+9dTqM=6k)PHU%uU+5n3I z=|v)9eWAbqN1udmwmiDVW|yg|2v1r*x(K|)kME?*n~^V=nUh^g8B(f7X*X9vBRFi< zEuPJS1TblP{z5>cBz2HD5uvX;P|H>|~Rsdr3FruWdH2?p)IsJ^>)%CT#Vvx>js)9?pv z=gDMjN5@|1Wo&vrT?guHjvhdj| z01M_+W!`3TN>oRRqPkhq4<|>o*EZf+8^eFbn9_b8zu^x}0z-NCpmzX65=>=R8hQ?j zx2Som0zx@s$U5+E6lwCDPig5FA>MHgt0co$g=3|7A~_%d!FL-6oBBoYW~;QADa+1= zk+%daO>N;0jnM!2eslpEDJSV}eb|{#<@}@~GllJrqDQDFWAfM~gvm}4{xRQ;7o8g( zs9!Yz)EE|dD}~ryR>)_NLm~8437UbQvv|n$W$gjrXd#yD*j+4@0_TVc+1o*`xsW7t^SgWtst(z^ zlT@w-%X)4^%zgTGERhLJTMHiP@DbbJ9zjD1O~49zjkNyDC(GTsI}K}n2PLb0P{Ks1 z`U}51dbPO??jJCN?=KLKM{VeDvgWl}$F?Lrb@rKwZ94!(|4ZL&B_>ApukxKRbMyd& zyv?mw`hoSq0Q#yLx@V#+`+D_hnTUz=zp7Bb3nPu9?vdBqKtE-*yE|`HU`3YK+2@JY z3^izmgLA2XfvoK?)>(VtHY=l-oNJ%Sun{=dGt+Nx01TGvNX>6gGKddwLUjNdid4Y2 z#Fk^h5Sa}WXY(Jk7)ReDcyHu4)5G!J16>Y_5JH&KirT9f-vw$&=W*}s9Hpp|;vDuL zYUx)#<($|*Y-+XaV4bPO8MyXZ(L{|-FYo;Z$oq>`asS6BI;lw_rba=C6`dK8@7j8hm3I-9@N*B1jk0jo;*}qVRvM&sbUHZN;Oen|B zklxX`Lb;mN>{*yTr(0)`M$Mw`ti_V`Fg(xUHjV{<->om%Z6_+*XI?qR;19r+l%2=4 z`RH`kI5@LkE!xNt_11&=?kz(ZZ-NkddMg9TJd&?A6Dc<(iwno9$VxR5QJ+FgP@mDl zg6KqHHyq4EfutPV=q*;gVLCjh0}h@k!x!`MCn6FRJ+xAih1 zb1(WsE4RSErhu0&i(`V85)-MINq*-N!>x&q<>IFv5yd)M-pO8< z)L6d3#_tZ*3%sSs83 z=lkA#ai^H?ZM=eHOG+`5sIQn=yXWSxU*cRoQg#5smj6#YtWbC8_Ed+Wj-taU81Mus z1KV+EmL58?z92WXWQfTcDmi>AbF9Bg2nBs&yefr$QR67`tYBdfhRhy^`TRlcSIAR&s?0XgMVlxqoa?PYXxEfHu&%ql=zkzZ6j#}*yQasA)U?Gb6E!Cr~m zyGEQFniim0-G-G5*N3jSU0E%NSD~f{=l?xOhe0T6`w8H~og_w>n^obGBgO`*1OYRp zcihD7?aTdk=t=~HQBlo!pUG#lUJRI#_HqTcR*fYbc%#}mT6)4`yOF1@cCzhbY+dkff7_)FE(Nklva zboXC%%Z|eAlBwYz@gMlyrm7GkR8HOk6eVYDd?GeQ?wI*y!=XPhQ%IWd%Vq7eqVED*iV zUx#wxlh=B}AsNRrG1yS-*|q6*kq4(UW!qDF=HWeyEUweGgp+Oui%q7+n6wA-00 zQE*YGGiikHwgkP*T{iy5x@zq@lHZ_Vpl~ZLVa=RnYVN$_9gw@?wOo(C*GnKTjYpsU zD|~de!Ec`M4#== z7(37PZy>=lo!SlL+iG#dHsEjv3xvMAugA5a$bifVM-ZNR;ox^982NvMvN5){RmZ{M zg)l3+%p<-dbJ6dlgt|M^JZ#$wV1|ai(LlZvSL#!a9j!9p`xBZ+Thp_e(EbvG97)fc zJ^AO94M6Q9`A-DazqK`LQWG_gUj=4+?^)UK zc*n&_lXWqOuouZ1jKQr}Q6%xeAu&kyrAoJ*E@Zd<#rY)&m=n7QZPY2G*Pj1fgaWS= z6{VcJ`GhhDgx>hWQB&m_6QQmbt=A29d1eDc_3_?|c1(A5Ev$-hb#6;+i@!MVr}fL665oGDkUecXC~$n6X9l{7 zHOK%ymoBr|*i8HrS1kjoa1@^V8y^wBxZ}GiE)<(!wW4JAp*zVOVB1-2DVN{i!LpWf zv-KH}N47m|v{r&RFW!RhnKO$kA^nD7`^=GkMvT#(zl*ADVNWL$<#{GpK+PvdmeOj! zkyp1>szy^aADtyj&-Qij^%+vl~< zV|7xYJo@`Uq1g#!hpU1{Gvp#7@xk2)kmc1Xnv1j|v1}Q22|PgUv__mFpLZ$rUCkvF zf>T2Xc7zcsU=YVz3wxI&aziK*T^4JOns||7Kh=%H(GX#_2MlNT2aS6h z&rnevNu9t4-aMQE#W5+s>qH|qLfXS0y=3l1Jz-x%d21>BeU&CUhYK{ViP~pBWLfPIP;`tX!B}gzyL6a_E zDTfSSjZ^)^a9bsF}efePjc}ozQ?d+`t2J{Rm{}k{BH1%ccBy9&ydV z>RQ9)1J7cugvb?sbtS?GY+Bg25yb*ncNi_4lOQBOl@Ssm&nTI;v7pqa5uVBrO@K^$ z9)G@=v6FC)or0*k<^4eV%-4KbIM;6nc(|mN%Cw6H_NL(U{-)*}ul0(&Yf=`zd=OLu zhLBK~9X#dhpsSnPsJjl%yqev{mv838`U}uAwzKDUF@VHpyiZ`jg(0Ozne2T-78Azs zrzzqeejzd67Ma2YWfn5MXs(#Igv3R1uV=VObyYK}S_#!rWAhD4ux!TM(ZDP)t+Q&Z zkM2yCwn)&gW`^p2))^1bqO(n>vRYVfAt&I^%|ivY&G0W$j1f8UsE=h+{52^(*(ZMd z=Xn^>x4y(|MFsbo{i@aZrxB%`cOOrSWLdA5O*%*_4P6jSYQtmiVK_=WrT$D%0H<>r_;-Wj>jWt{lluB9z$DZ zmpf1Klc_&C#2rpt6_Ze{RNWAX+#!qb$G6ySM%S+K^obSJJf^MoXo3;0;`gX6e&aA$ zAoqBm#l8IpiuP2{wVfE8hL~>1A03`6Fb)1ATM8AyTfN?BYTsSdg?YJdCtj~A@qVPL zz8r_JUDpO1jk2jo*D**CZxzF-PT<7naX%;?>+^`Y2R_!NRvE>jy!Uev67UW7KE9_7 zh8t6^dYz41gkW1{S9Z=Hl}du(niD5_h}IJ&i*sh9`H}8s^T(Qbt>Seg!*M3am9k<| zUPOiwMS|v=D`&9&Fzr`&M)OeL5*Q;+^AB{}46fxs4G&B=`;S)E)H?=Ug!P}Z&Ihlg z7g^7SVB^P^Z`O)^d^x_=Z0d+Ms%DD92>D(p&HKVE-oCl;?|!-P+QBEDvF4Qeg|D-M z>KO3-dw=(q5`K377a6*?v%V$5(*JF3Gm)(E6R}L{kLlvSL|4(+hz~GD>t6fFi)w`g zLC_3fk%$-R5dVRR2R&`AtjRq;kEb&^w_$~f#(#HA>%bS*-&=w$0@8^seBs`)*ZPH% zS+uGdH{?1a2_CH?UPpKo3&Zaz>dF)g^rmIXr3zsgO7tEBihA=AzCL_d<{H|6F^& zU?_0G%xE{0wWx0F)Z96I8b(Q4p;8|2^=#A<;Uk=fFFY6U#23UjY&S~W7?mhRV6ZOZ zv(3dP3?SV0)kWKq-&!E1neB3h|)iJb`wJ)OBJF z^HhsTe7Na_c$G3vtqB*+dg&v6wn2`vH8*)76{KGvx1#+VLMIn;xQCesbFfxa+2FE1 zQqe&Nd)PgijESRTTu&a!XD*})PwsKgqPcFZkUg*Gar>p{(t$^ro#G5O8qI` zxp7EC(Q3P*8+3%6Kw=Q|Y;yz~QwhCm_$^wduUs*SfK}A2-vjx&4%TaDc^ddhg`~e&oziQ;LK_DI8=M(In}@n7B9|qM$|j%Z3v)5YNa6PNM`STxICfc|xu+0# zknh>ix~T?muZnG$aPRRALicjd;kp154A+za4r3|g>gV5zBUjA#QH;nNloYOvCU;%!h^^&AH1qFYdv%69x8p+9=U#NM_KV=H;G!WH3`S z%@_;M=f?1cG3OlYY6OFDJr=L*Bq+%`hrfkx)P>K2XgE3b&rU=1!o1POpa#u`G0}8P z9nR7|aMU{Ia4QF!eKKeE<-b+Tnb$X0qzg&GMFYVo5cP(V^-q#-i&I9e*oM-~?O@Qm z>`w}_hM(V=*OLrsDeUDs$V+0Pc&EdZDyOEx)VwtZqid*fS^LI7-;e zZ-GoV>vGP+%{MT;n&{G`T7rGNdKcM2%~4K1c-@)JC`wqp=QTrpb~6 zo}yLj)uKkzCX~Vk>OX!bOx-Lt&59YcO?(6UPzJeDaQf!6}paL+t%kTdK&l;geYYf6fto0vWb z&@T}?S{IdTDY?qWVtLi}-&%lAOQIq>1y0j*%WCPY8VbbcFJJ8(;KanM_LLu=ktr3E zzrq)i!CL|k8r~F%JlVwyds{6}HDqv6ltcZX{3#FnVJS)TLw|)NMWl|=#aS^0w_GNl zSEF?Y5vhgTUUU$V24ct9N5tl)0gcGhLth1!gqEcTcp?fx92&v*D!;0V-;5>hJ~fyRz)cYp5`m0#9&sMpqHegbd@4Du zCTmI_h=jFel);fqFb^$t-5ndVRkXh|6k_BQ=Sp~F@TMR>r?;l05XokdjPASokB4tZ z-~(JQck86g5C3y^QvhjD9Xzt|7}kLJ30ldPjmXt$|0x2x;3TGrkP%q{uZ&{m?F14W z6_Oz`nR=;pv1>`C+&NI%3a^jO#?vdOMqO~S&=q0w(Bm1xyGE~NG0fllgrT6;!_?~> z@QdH`YNcDM=@{j$Vz9$@wG|7pXgwNho$Nz%u}trwGB!1$NUA>wa>{|W#x zv`ae6t?I~!L#KFxL)j^U%}oVtinN2k=}M*WowV(texG?frk_;(|QnOj91}YgA0!?4kj+m`KMP zT5EY0jBWIhq@L%!{XGc8Tgz(0WR~&(3<3J7 zHH(wT-Oke?&rs-k+b53%1qgdO&XbGo`!Wh_g1dMakn3U}lRP*s%qwM#CoCL6rqQkQXk4(u* zu~bv(Ma5Gm75Uf`M(8U%tr{KChGpK<*J9NW4Y9Y>G!Vej%wi*ACpv5KiYBF0v z6=Weft!A|_@+~K8W4OzPe>IB8#Sp=CiGT0`Y3DR_4e&#NtXl^z8oOeEzCXIlREOWh z_!axelw-1_H#6US=_1Qx-Sjja(8_fGOgfC^b|r8bU_)A&lve^0A=N0P&xJj&Yc@)z zTwoBLvr=?9=P(UQc5Xi&Ip%SA;58R`LsBYVKXMk;Ps#{z)dG#;kGXtQ$~efN#UOO+ zmUMHgH3G4ADIDx4pGKG;C~y?8RmMPT+2av=53MRpkN=-}fe2m0vKJG3$dHV(g_x#7_p|-YYdYVP zCcM+9MAUcvgjLBf1m6}hmUrB@8-Y5Ob37qUD*xPSj$CK(mcm{(ne*~6>EzT zL%5!EUDD5#I%z>z;0F;~Td;fI)?<8tGOj}$As#O}Asy@ooa<6O|DR}T_e|b4{!)7k z)I(Q`44}`N+l})#%I)7gqQjdOoeuH9mx-*)!71RM?gYTN5=8YX>noc#Y^eZr|2+M- zJ5@~b)lU>jmf?CZuwr2vBIJk|gIgNpmznE*x*%(F%hH$*Agp8DZYV;P6qL>P0g zeOocrO_1GXwL*{<`7?cdgN$mV*Z|`8l97r6Ist!5F?EHZ`u)!v7+@Dawjl4p;^r+K zSM}JCSxuLo`OI;+JD{-NV2@Mw-CUm?V=2Z4*?F(lv)+82h!ksp5#x3X2PFQLhWcld z3av#rCQCbC>421L8hBiQ0<<%w*Z3w1Nxmnce%m@Bwm3IJFLO})GNWAP;0|iF&s7@+ zeUZ)>`F$b2#@TYNu_MU$swPTu&}y?$PG52o8WsEdKBftcR91y4RrgW=&ve=WvOWschR}I%+W}#|46B7N`XGU4$D-DiN zJB3{csW{>EC^K7RgjUjks6{qRGnu0q<4^nX`?R@Js%ReM$C<&jM*-@n=c`5RtMurYD-GC>(P@Acyx`pyfXjlUTLw2?L3wc9+-bgzv8@3x5%#x_qXQI=th z+9o$e2UYZ;2-qLQ(r6=#baHQjq*bcRsII}85hg;EajvCMvyK+Bcw^L5e7@gYP>M5- znZ4!x>|FnP+VBj_wN-m0gR5wpS8(kMCWnIrAV!4$HI_OPa3v}QUa*%T$?o9{WD`AO zAS|gP*A#?i&QIGt-E=ea**anhph9AeGH}=t_X6qk%FgS)PZ1v!WTf`=qAP8)K0a># zx=PqXz0!u@?RgRcy$L-T+8{A(NjeAzc03zS+X(bn` z^tU&>)*uV&fOx%lV^H;L#j&+zih|usgR9lg9a+5~Ul_Q>!F(5r))os#ymy7%8UMLE zSTnt%jOsBXB!Uoh0+f*7Cu6Q_M)NF#zqm{%bN!jXnMZVB0li(N(Rm`CjI)g(l0&fa zQ-qh1Ypu1qWAt6v4u9v7pE~)Xuptnty9H9oZ?8|1JxV66DvklY)s|XhmGpmY*F>$D zdff9sN~Av~m24y$qyBS#RH`ll)r}F$Ncgg(6%*pbbM0QQ&lki;XH)Rdl8DZi&A%7D-Bz=wbuAYcsl^DLln106(Q;j-UMvM*svG8LN1a+ z0;B5bIx>&qrIoiU?{lwe)dHQWiH+xug|yLKAvtGn-;}a}qpNR6Z+N9tg)8%*#~gpN zc*yL~c0k}kQrJDhR&H_Om!Y#mfsj`nS@=s@eMpvtPQ2u?l9}mL45=I9GV~01p5>}1Sm1sE*`%s73_b)od#{ft> zSi{(cXPgi$P{t=&PipE<&wm+}2bVhP&Op1>f7Guc4!S<~xp9RT5W+AI;+vD-g4P8} z4a2vNq;K5D5{`sceRm?sR8{*jAIfZ=Iu;7}ncy+~pS4U=29h$z3oJ=g@v{1d{1wQ} zr7t%#qA<(k&%>i!lEg15&#iQJl2+R5{anD12a39R%(?SV0H{Gg9ZPBrs`L^$H>r#W z)P8?hoB%OE&cBLe*Brp`Q3=nSI5Ii6+O5Q^kl=-48E6HPc;ENcwnSKi_*k6gtyruua;C#!2Em&nWR=FNO7>-) zcY(-`;3wAXmcuYR>HM>`E8*uMDL*XNBZ$X)0QnfpK9@}L`I*L?)bYKI%+(n**X>25 zy9GV6ljG|liYcWPzNe>mmc1G2PQzvF-f+58Ow0w*R3~pP$%0$@@vTR`#XZx!Y_h0c z^`1N*8vRymd0rNO6k!G9x$S3I2e;R<8W>*<7i4(uUFy=HlVVg15$NRmuVNmh&J_x)S)!$}u8OM?_dMr_ib61FK-GkVE9XbzySa%KE2_QSy{v1Ts$*r^! z`AtnLfZSBLH#Ce(0%BS2Pirzaqj9w?H_Wd02YSzkIKl0DylExOaNl7VO{GPec*0GO zq9DWIB1y1`2kjHc)xS>=A@VO$TIc@S#+*!;ncg^9+oJ`g4u_T>wU74VE#hggO;`M; zrxse#b45FklMOdqhe*Z$9kuT1cRcA@^Nu4;rfO|Rb#9zXktyst-)UhynuQ_C2YE+L zd+yFA9-=TRvgRFqKsx+4M`@1YukYyG#GSx?FGAi&<6_dMXD&60-sM6;y8h>+7D^#X zeUf4gNq^Bwx5-bCM-zA~-mv`zSAJw}g4`<{ZK35Il_wS&Rxrl7A<)YV*@{cvQs5rHbHCxk z6Wg`?I$`hyh)H3&RL=aJOeAcjdsvS$R1K7$-z6w^C0~&gDs78VMew*>0>yvBq6ejE z%5ReAq{b^%K_q=>JG)D2FGuoM(NU%jsVZmW>wGaEiik+s@e*lsC8ugTYL~{*w|uC0 zHOSbsI?*k+(+HH>nb!dFhT(#ILc1{+nlJ4{`8t%wv5RH*$DCxiRPfpeKqa$EDEA!n zkar9(*T$#*x%fNkd^T_7=bdUF$XvDj>mz#_zS-paa4>b(A4Da345So1?_Xc>SXfRe zia6c+mbsg?zpVGlT^nZi1AKwz4>o5l;yr4ptV5k!VY_BATW>D)C`$N|r{w)L4bjN1 z*N8hz5I39TO>pR~QZtFsXbKEXeyE8$Rs>m+cs6cObbK*kA3sW`Xq@;|N(F7IXq1uJ zc#<{4(SgTbD)bNg02kT#je3I3B+@FaCS{ zOlZtY0p&}|z0}ZOfRL%hM<8X#ak6|4Rl+a?d7I&+wTkcfw1Yxvc-QDI z3^qabSji~CpeNvqS48h-$zsFt@p2yqPo0OuMXwJH2ew)gh7%!jNF>NZ!LI{E?>V}7 z`0lM7q9Eiag1|A}1GterMYEupk3gN)uTlFd16FWb0Wx4=3K_|$&~@op@5M(U2iMbGEl%5v9)}rL;Bot8;qWu zmAFiqf*8Hf%m3fTTM7e>(_!hkZLr1-8Tu9?>zY)DjmTx_I5&k!syfZyqsjTe|E3Rq z4j@%xhk;{;FA_uWfoYMB{e&!cx2?k9X`zPw4yQ0O8=Eqg@W0oHr^= z*b+@RU;QW_%l)^ZTv=Q9eXV=s09JUz!QebjCxPVo3Fewo_yemPq%HQ6<1bCCaBw(KQR5S@jGFAl$W}m`b4~_-(Cmja zhJMYcs{5)@M+YVJTFXAXE3p;LjQwmlpdq5H*Z<*T{bfV@D|{`L^J;-pMLpa2!;fqL zNOb4&11w~@dfG>62YJ-4i;I9A*-MmiQRuo{{A`qO2Xd2~P=y1cA$2`qZ2f$Pqz?1W zQi<;j?%vFKNEtzd1oJ_#^Q8I7T7mXT3MS5A$)1wL|LPl~PZHQ~#t zbsOcnlk)$ITxbf&Y`m|yrjrK7OA~N`VtTUgHRY4;Cqwo2Dikp_&XUMI)@kT8ZDfDZ zZ%KSSc(#*BVD%JGv=cNqwL90SKI09oEXI0i`>_r&`(nPacUA;b>KXeGIVz>aw~wGp z><%H94<71Rv{4rQ%Ba#R_zI+wv-rv&$;B+6K`B&{erF>uA-%HaOo#rildnMB&~4JT zO8$#6L_y^@SBi@ZARpGqNqRT7ddPAVGJ$I9c#$l~GZOVlZ0#DV685)u@QGz};>V~! z^5n}#76G3L@#;+;gvPf!kLwojBo5ep5uK?$A{v z8*6cbf6LL9_27wZFhc(?!nM@E;KZe;7E7Lo-dI^`=&O1uxMN9X!k@E47f`M1%`tqRIQ#m45dG42$s(sB)3F6zU%#-xS=`cn59e*cMjLfvN4Bd7Xirl(E7dLx67 za-ga2l2uCa5B{7F)oMji;KmEyokKm^ zrn3<2Eir;p*BEoae(p@KvgaoNQwI8$@OzH=3t$LGmx`F4(G$#mk?qU_IqSIpX6d7A zWwz6r)T}YrSk$J(I?qafB%)K~(B_T*znjKmf^**m_)NBSO9oA61p?Rnw#Cq*pPB^> z?<|(2nVLQ@M{a~P=a)stf_F6OZFo!6(L!io)~5!RG|u*h@_1f+oWjts)DKfOk8pJ{ ztZJXyex0=2nXUD~KBp_t!V$`$OrLSpFCNy+cvVsgx+JMP+Eh7SIjhwMh-9kQ_`-n) z49sr0C0-EPMgk_XRgaG7&*eD>BAG;=w@^B%^zQ|();NC)Kssh)??xwI+2By85tu#Z zta^Z(axBmv0GNScC)}A%hV@;84#l+TDgrV>7DSi#E3?IIsgF@GWPJvH0rhn&i zn#i6-u=Ihb-h9L>yM!rV-u6cnQNZP&F|uug{-Cd+FLw;6WR6jNfuE@`d&oInwtWq5 za2~J9HU95U6bx9A(uU<(SPkae|8J`4_y-x>jx(6At<3$+Wg1^Zx->N92a>FO>VhXt}cm1fF;IP!*J~ISoVoB#mo*`lS<9K+ww$WmPZ-0jyK~n!PG99kP}u# zJ_c2ukpma$*t^=;$z}p=m1NkYHaNBiB8}_bYaqG1@Gpb%vyCxGF=;8jMe?ml(@Vwb zj^sY3AC6*6yA!8x9M}(E5Umf5(2K3ahu8a}0!9W!l6HOiOwOyy*>qYl^o*`Mu56%Y z{SXm^02Zmrm`_SPh-N*qI-gzSWxXmN!48a2nfR4uJeCMNt4_fJI+f9$WZ2m`KdC-QAR;gYF*x8v-* z-+1C$Om#Uz-p)kj4ZB+!F;WzaNEJH@U~2?=gL3@!e{!wkb0S=_2WUo$yH;dheQs($ zvBRi+K7OdSiu|xN?dnDp^P${Bv2CFGIFobP=q8&M4rvE-GRfJ&H}>mV?oDfJ%?xip z5^ODoMkI~&3M8h4jgEFxhCTsA42zd3Ay5_Q!{)-tD8Cd2IqhWIjDj`RrIx@X#nc3Hp}i zmEDLa$bZ(QrjmsefNS&>wdDbvs$Y6|by)q^ z+m-^i0c{pzvZJtEtB_m0K_3A1C6wCr3SkAzV!MnnpTuCO#^KSYOm*Q4vVyFmsW_c*wQC1coIAQZ}!`FwXj zGoKxybkRGm8{j^%x^z=X^FB8+0W8^D`dAM^Br4k1$!@cnRtbe6PMV=z02sy22k%f7 zdn5G zVAh(#Ht}ri%0@hwE;9W0=}vk96|V1C2xf)KTIhaN2UB3`&lNmBjq~w_Ik^bbFlInU zyKnlXWk3cIHn`ytBjbV*yW1$5;r=nVt_Dq*#ih(B+A zD6EAF;hUhXwr<&x?pALwTfAp`Jk6X`3YJi!L8(5QY4J)ravI zEEilU23{<5V>WPr0oCv8vWjobER z=d7R)n9S+nX)_TL8D7Y{UKTT_hgV+!RF zJ|_nnUBQ1j%WRzuAX}#`PvjVVFdvfD>u>7sFHv2SbUC}+jku{P#+bmGrZt{(j=d8V zA9DR8_o*1g(f_Qv6vO{C1)kj<7<4iD$HLaP4k9~*08oQVNFTSnMyf$#R&cYI@VCj2 zbJmEfryv1GYOICt&+2F|@*bL%a^)mB0$Pa!gN?)eX0WSKn>cUq>Eaeo_WL!iEDGv% zEl>NtE2l1M-mP|Z5V~i39M)zWVf0ZX*BvBrVQbN;g;jloN_k3~6HUn5>7xyDZ=o4i z)x@7~T_FKp+iQolJB86d)oAa|!-zP}=LRPPwImO;SH?EBisDm=q;|IxRZoJMfs-%5 zdpzl3NNPGf+XT)%j}UBLG}cZ8g64h-8Njd=Tz(sf4Y1`N*B2WRy&lwE!+Q^9LM6uL z==e;4L%nV_)pmU>Fhk>Q4P}narWcl^bT2MiS#4I7G$ra9s}(Sb)2L!iVg)3DT*N&MU6lbi$NlOPeNt2wbY3 zlkgT%esZ4=4u!}WAY;IYD=>m2g{Plv>_}~zaFUuCiB%#_=0;xzH%ZW$jB}Mk-%(BD za+2q6z$vY@*cNI;v7%@biC{xe?Jum8*h}ujreC4v^Yjj!*qDYtbz#&~gs#!j4zjmZ z3@4gZP>ntq0`2BlaIqLw=49imn;~9WT@fwY-2<61HL-Tw8g*JLohs%|EaLJm@AoSV zSbxE+FmK~l+0>4G_IE}SN>l+%BGnd049CzV+Yn3@G{Om`|1wu0)tsP|b(}5>04fOm ziDRZ3V2bHp#qRz23e&HxtK5r?qs7zMfO&0@c zGfZ00hCJ)0rLaE=05~$40z4ip@S$iX@%=SU3a?{<-wuv1Je{vNX`i##-Y$82FPK*bB>zw*Jc7k)*A;*8oNz%q(Zcpa(1c|Xd7siaZ z2_eBNunTb|bX_BYgCL)Vx^*R<3)qao zh$jPeu%|iU2@z{*6Ze-4YAk2or`z{%xi=#&1jaq9F&Fh2NR#dSqQ^a;2^#ab_?gQ# zMS;^s#%dZ2TMS1N`L)On`aYQ4GuO`dmP_YMIhFc4FvKI{wZE$TrfJQP$}l!8^v>(o zzkWln&dBNPLuJ&jQeG$~tjScsk!Q(>i&63~lYrNM-Q^{Yh>Pk=%+ZA#%5GAO=+78{ zX$380UPFFI>=cejA4o^7A99}W_!3dZ)u&BFLe|RNuqd0-MT8#5CON_oP5Qr281?wa zfdzG!%>=dIru#V;XUsajtG^Mq-8Yf=98y?1!PmTQ7y#e*;BN;ho08V|xhqoPQ{8M% zr$j9dU(Ne%AgF5>b~y>PBuz*l6@%bvM}2nhw2=FMh|K;cAI_W<8IrGUmn|494lNMu zG+$`T%Ce@jwN4hbGch1KGc?vX+v*_I6p?8G!nJ5jwK6E&tIaG)sPYM5;(sm2DBvtC z`wdzi@XrHY3R<)daPcG8Zz-H*!+l^lLcN1>-dIhbnWQUGGy24`WZdSjvY)?hb}l81 z>3pG*VO?IjJ;t1g?-nF(h(5zi)@`aj zoa?UkOt33*23cfW*Ogc+Mz-&InxluWgU-=BDtGk&D;>RJ0atmPG4e>=HTa*wEi}p^X$pA;{*`=cn26? z^LWa}?T_y(IpgME$KsnCJL>;{6FDM81hhQGgp0l$f>Ut~&Qe_$ScmPPVt^4h3!7S$ zA-(r!jSuNR8`$~6*m5MD;b2M1I_9Bz+LF#n^@B6CEK=%Z0LN8w4^iz9qvXQIsTE9 ztw7#LV=20a}wG4jFB+b9+@(XKh|cos_@dD z#{pT5L8LEAxif>y{Nxwbh2}O-UA?Xc6}f+oz3fd7tpK-f{Xwq5q0M;-A5;s};c?$; zOtnjb4uqv+&6`hkBN$$lXpe?!zr|%1lY}2HN=AG!e3XdGj@H#>t$G8@9EtS`b1|wG z>XN7Mv3<=_@QtCuTQLidF)8#;?CDnp!_+B<>UJ&u>rP87(N;iH7>t^$WDS1WUzCO- z!195^X1l_Dns6CrkLq6uE{-S<7Q=X<+^>l7vqVN8ovBA~KS+c~{Ak~~PpICb-3T6| zT2Cv1N55C^xkU{XT97m3hW}rxDY$7JWvf^ygx`vI?@HVQu2hKeS8y7UgwY;3#mete zQVAcvp&u>vLQRRWvb z2iz1~2C-Y$1;{K=q7_Jr;pYD@lK&}AlMRa)N=dTab?bTX{o}HY5M?>gsrA zWBq5BC9r&;tH>#ukZj(?aL+ZSUt5k1E}~#N7ZUtar`;Y0{A0E7RD+$HO10gD(v>mC z%8|m4!z`(C#Nuh#9aY&6Du>M*e0=jjXMY;(_%kpeEnQN@S-yKi$8kMI^ub~Q-Xo0& zwqf`1sMSa_v2FI7S*c*4St!)77H%1o_K6#2X)3dg;n%7@US8BT)!Ya!C-(WI17rKD z`>3>Jjm0V#hoBWv7(E`Sh`_Am2!g3`{|En~Jb}uPm<&>xo~3qw!#%)%`Nnfl>&_(| z&4mraG#T8seiQcJ8QO5r6Trh7#0wjR0QWtc7i)1toou5{r5$frWmt+lWjWyaY-qM^ zFDDePbPOH>d>H7^)lRVEQj>?PCo6Y`;a?noI)l&5Zf`58OUE=n75>7)5bb;>SgqGv zXNusxn%d?a9m$nQ_%1V7u=gC$-#EOI<<-SlEJkjw1#`%qx@ld=uIj5Zl|J9$T20MY zwA~8Ez_1}5Lx8d7)Mo$=V5pwJ0m;k2X<*(4412>}1W+N9S)ZXvN5 z#^3LVy{XbHBw_0_2BL)Frb7_DCcB^8Yb4OYE?e}97veY;_%_&K`qP3i-Cc8yktI6u(?44Sm*&{ z4U3Oas;={|RcF@Ps9fyCgV0A&)Ddq~#Fp+$GJMochj1-|aqc^sG@kat1q0(z)sVO+ z1ikr2X66G&Hj4J_*>YCD95NjDjA*y-19O2Mqxo_Ra5RA{v7WlkgUCH{Pqv3ZFuI5- zafzlaw`IvbY%i25Q%bS(WVOhpJ`Z?B{t16C_{=Q0~a72vjAE^xqHJ(OQVf9Jgy8D@hE0GACo&35as=49nH2s&YPw6{cS`=n{iQ zAaF#t-qV1QecD4c5+BQP%yBtQ#au{xbF|)tKKd+mw`P9WPPpQ$| zE3U)5pq`9He7oQu!NbdGn?8}`7FI2KTCim+Z2yMmp=W^#|9x`n?gL>+^TGe@UF3%2 zFLAfB)0zq|DrR8MZtD=DP8zKeB$DsBxW(aW*k!q#@Qvz=F>*tH40z*fdrJ1hjCVCf zr2d|g*^KkX2ccRF#e&+_vPP}_kQBo=%CiPQPt0!b0)-*;9yUcXIvaZ0$RwvBhY9+L4t3UbMM^D6@Gf+%X`z@leEYwByi^ zBf@9U!`n5nCKvNmFu^i~yf1uE?~tD%JwqdTRY5*@RV9b1k83C9a#jCJ!vJh5ZKT*L zb398ZV+kFb9g2VZ>i2?YK%b^W(g|ARuyT+2_}65v-5Uqw3c$Jn_nOhn0`cXEp1wKJJaUQ#K<@@s&eBcjE)%fp`=Aa`u=>n? zvGst1wWq&W)xHwkLq4Pu=jA&_wlej}c>vxtj`|d-ke6~2>}48I=IuJ$SPb?&4>Oik z;WHW~ue(DI`i76{;MSho=X9F%z`qjX$Q-WE7z2xDsB?N)czHJj<8~0|HdT@8zRJ;r z2maD3&Wq3gkH$c^i}H2@H+RzBhYWPNp0Td*Wy-hguO9IfzldUFwd{VcQyYYV>Fh|w z(>%&1=sF7DvL12ISQT-WsWNH#^6GUU&MUAg>;~(ePpfrU&iiX6*a*AF(GMc*rJe%~ z2E|H`b)ynEOrv2;e?$Lk8p7p(y`U!-B$d=0;*3dKh;YpZDRWO1^DNfZBIiB2obVg7uPBSq zPn{EV55Y;+6KidXDWV7#BAGG$hfIu@!O4u*sv%U=rL>{k*^hS7p z{e!Cs#J~32Rag7FMxbcmb^Jw)N%_B5L5#$}=uk=C$9w}4 z+!A6Q>hpVvW9$HAEXcuZB4ziuk0Ej{rAm1D5KNDH=R=;f?}hGB2D+9XLsjlCt@VVzhNFM=PwH%D;Q z&)CQeM6e|R#5crt7MT=>KsiMvBJ3<2_WIqV@*61Q|7v|}ceVK{ILiX8yhCBlVykOV z8&(1o!Tx-KM%Lcw;zoR#vUmt-Fbz6g>4TM$5C(qr^7+Yh&O-{d2Mmsk5PQ_!Ma zL*+`!W$l9RDkS7PVYwUwWKV*{aoZoS+2^NaL~A2OPKSjLOsOCFVJRo3?V|&i)rIton^HxTOMVo6TIjk!3+NM@H0E& z;)zNwP$pH>`JBMXskzH%9b0!CO$k|+rDtv>RHlsoFzC8DS{noP*90!*6+q^>du#CF z(C{`KBjw87(8fl^vSixr=;A!}Pp&f;$SGLSxqjVM*4tb|{zm~kQ})1<+U2E|K~=b> zRp7YIm^%Y18x&_x^{43BAIY-<-yn*_#3?1UPG143f-4m-qxB79yPWqc!DDa9=oiyQ z1a0GsHqsV!$s1`u_yNZ+KB^g>G*<6}k z`&eVT#UK37s!nz8KwhP00Z9I}KsbxY{*r^XwWn}haa!@Y#$1B*1%TitG|D$9>y)u? zJ(f!9CQig)w1woO(=XbkE4b=9?^+;K(Bkj}RdcZqZ?m48(bV?9f+2K0&+{xfIif3xdE9Wca%Z zo(s3HSGpVLiN|PYVgXdyY7!%Tw>F6^X{M!yI9#EFcv+!LqQPZ4wh*}orKCyAc$c;q zD+eZ9CUt<~J!u~==yk+Y)lcN~{8-4x#e3B*%@v%gpF$J5Q(|)cR7<;BTFB2r-t2`5 zb3huBFIg*GoRRQpkx-r87M>|3F&vp}9?oDZdXw|yXX4Ka`jcOoP(9Zjk2@P? zvCWJ%vG;p`gPzFt98K{8ub#N^o2uRO;P(DUlAM4iIuZg>-bJd_I}#<%OgEm!=bMle zRULw~|7!BcZ^UskA!?bsk%`QtSc(!7?GM>vpbuQ=z=+0%} zV5bT8%+e)OZ%vfV>W0%ZXP#~NwYADPtd}FxW2IOX0~lIyM$v z1erfv2mbH83u}`&z|wGRJD3Q?q27dxUZe=QJYAV3w?*{5@;~X9{Rr^kmyAyrK^Rz` zYZzO-UiWt943yvS+${N|j5Jaol5Wy8TE9LNfj?&1StE)dp5q_o|C z{`X_;+gofI-%fy52HFEN-vhCnK7wG0-le5T(6n)J2*7aeiCL>jz9AL19ls`w#u{bz zu^tqLl@4bxT6GO>Jvl?4Bhce(y>F1t6U7?klj|Hg?ea+h=|03vmMkS=QKFAy0wzoQ zgRV~~E*jPf&^#6Qr6y8|+a6v*lGk01rsn5yB--Uhk$jY*g9j##2j=pt%+?-cr50gDn6{f12CVi|M$))@PlYJ#wcZDVYKfMAlHOUC3{j8mC!zu_!vDf({p5 zXtgRNKn9-}x}$14#ORh51yf1I(egJUw&&J+-@|wPR6j8pP-I~6b={L)X=IeBCSPA| z#szWbVSkut?}Gkbo&)wU?p3*flW4HaaO&~o zi#5GjIoZNx05&QDuyW?)R%A37%*-q@1rh0sc%7K~L+I{exKdo^I}>#tl2QR8ttyO> z^O={le$zNG@uETKlS!`&E0?Qv-22ZPrbsK78C(P~5qn0BUPrZI73E%#(r66S!AC*^Bl=Gp81;za z!p15rk3d3j>|%_3C+`grWohZ0J6M;#=(`9fi_r}ld{Sj;?GL1>_ zRTSo&uH<@sCVKIbH5hs8^1EIG?`auYSv|r9nmM@BLVD|k*mkj$FLmeY7G*`cyVz-M z9}x&Yu&l|BJAQO}peNiWV#z*3e;R@StMKibu$|)m9HI19t6*Xa!9~qG>Y;rbgOg8w z0!SRl>KUbDefRgZ_f#kYH~jf1EH+EC(k|z=PY&hmVd@VYkMe@5k-uE7JL}Zi1#CdP zvyV6WnLx%@WIbdU~yeY^ZX{ut8EGKsV z<7?ww^8boALo`LUWiCCE=K#S2u0;!8n$%$G^Faqc3O1Czx$@tqsfnZKN`$!%;!97{ z#TF}Z5`D=nDX>!J%37I_XAS<%Xqq^T}+`T3`ERWvaCDT~F(5ILZdJLvr2iWq1$ojqphxd5rM z848#pl5rH+pdhli3+8RWR&EFYknUYbdXgbp4yO*KS=#GK(50as)1YKr2(Lh&WSr9>1 zSLPDSHFG}q;U?vnM%LyMwkf_jij>iEw7RLU0J_amU&TzGJ3^ROFmts^?~Hy=h#?s&b7<5B-;YlrS!i`>Us4VAWSSZ{f$} zf9xm(nLp6Q25z`dB^pfXWVVPtYRjF)q~p3(a6zO7FbYwX{$yUo08TF|eg4yq;na8g z`*nR`TiI%+NopUWi9rTa_y#CEQ%8G~5*)cIZR3bp%huD71Ly;-TFkIEB*nE$oo6VT zy62yeaVXkCD#)tr^!*7*n0nZjHKkNt~UVmglUh} zs1#)AGhU47UjAW)rUUWGP_eBA5h56|lc0V&1io6@RSzAUGGHnX!;s#qp2Y-lR|HWPmyBI}IGdI>NetxZ0%d^w`EOgHP;|}$*YxjJt zEp2EK5&de(dEqR@1>nKf@HesffyxMaEe6nM%pro-`Cu)c@N@^p^`yk{S}k?k0G|G` z!gM^VpRs^y6I)Tk6Pb&ifePA2gxwnj0V(*3scfTc@+13nDDiaEup5?r& zia1}p!1xt@1CxD+hLwcjz=O;J53Izbp@f|jpSk6}gQ5Chob|8o5B4^zgx0aU%as!$ zdrOmU;8cS|VTJn;`PYO+G&F^NpzR)mzSTM&WpTAkqTxJ0!Uoy_<^0(25(dIyGSXwo!Y*uH9sL^w24su*yI zngT`L_URHFCz0Ku#=y%hw1lYp%haBYu;JPiO53Zov4InRC4Yk{q^8scj|*{-(;fO5ZaG(W)Z&rGoB7#V-^WN zLWY!r7*1w2WdWeNxN%oa@n9=xxO+pcH!sFPIZxJ$+y;@@VpGBR41r8?0X^Zx=EDu7 zvGgMe$r_sl(Uuedk^%7KbTqO0PMp?cEIQ1)G>ONfCG;8zSBbEIBU7|Zlp>TkCO`J* zCG;>G>F*-1f0=*|zy+6Y&O<>xqPbbj2)m49aKlW_n> zr7BZBaT|FpfiLFPLF@GPDV`2;@{FE0Lnl?D2fVxClxl4mA9=yI>v%*%9cb+>wOzbA z;Z53jIRr-94P3)r2;j`g4Ux%1F6=EeHMGh>fCzphWKgg=Fhwuz^7VGc?|1#% zF13}fK~LI&-Tay~a5g77nv)#7P~4Ic#+Gr07qp}-pIrF%5 zYkx{9l^G_NXF9qCmS>4Hvz7!68-vqKwHE?p{loEF>D@@c{>>uXwMgtco0#SRq7s2A zQRi1Sqm3^VpU=y(qa9VZa(E!k{{P>=3DKswPxm}^C$7cambJCA)n`vSP-{kST zvc%fmEW7!!IXmJr#9TsOX6@vPR$mp^QJR1Va7^2iX*$-u`l{!aVp+o*E_Cbhnt)w{ z#EWL(0$C*sGXCiz2Wbl$5}wj~Ghkw0z-Eg#ZSMULHiUcP0VLwo;6za}x3%D>Jlode zi{_t_WrwnHCpmsNL?425No;B^FR&C!cXau7HG6bF4Fe@E&jT*6{3|$7SahT`O|!QTh5La)@J-gj(5bvuYQFFSF7mWdiR z8vsKPNOx`FwE_WbIQ895$XAQ~>ByZ9IFHyZ*AQOFAqI9dmz4$Pl!WP`wDTNR8a@6c z+4l}fxn(5@EmKAAyLOn+hda1G!EiWY6{5sv35ma;k>oz?O88g(rdOn__{6FTvI-!; z%>oh965WEkYOznmgEh8OI++(n7ohixdsIr-6(Rde1Tk5V(rC}xi6`=2F*e2GC8U+t z`x&GPVv7xYT}@w{wDKiy&fAPWPllxWW=+)VuQ<56)=jo_$B1t3*vcUIsTYTv*;xWa z@yf(kYK#+aZ3%Wj&;>S6G&fo-zK6>IG8u>P_w%+2{$1!wsxnbanVpko<{2NbhQn$k zzy=v2SPooz19X`6Veb^7v)$4(a%J*zztLJ{Ru8@0sC{!R0%5Ex(a^m>;+37m?$HLH z9CUlLSftkK2jHVg3?k2#YfTH-us&&>65U`HfHzrZz

#TcSBHm9Ibq4VwoTpYg> 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

dsz9 zCn#UNm(`ED;Zs){6o>;ruk|zwT0<$j)aGFeZhQHSaR@8reP#vxI7N_%+&OO}oOb5i z7FBjZ`2%9`Vx>~gei1I0y;BM}C)pC+{uZPhn8-UgM8_O`RiWX-><|Y-b&~09%fpCu z{^`g{$`(48>GrSOpgQrT+edrvFL2V=ud3<|R-dXnB?`HygFXX14DKgr|%%B$c3 z^680VlC%i3GCn2xS&-a_qQuI>W%Eq{ z#7BkE!f2z>tkNa`YF*NuskEAa{2zVn?Z4kQx|#$J2@)pj^^!{CA4Bo^)aNi&p(KGho@5H%Ug+k|~_*8xa;x zE?_e_VA%#wKTK?XoES$N-fUg85rCxdd%kgdRGm)5$m8b}oA-cE<4`Tb1i6r`~nb&N-K7H=sFVR%@?MAi9d`h)u)s!gO;>Y!ujg?Nn(-kbMz14~f zJ!+YKBt)f^H*ZT|sc2X&;aO7L-V*T1{{kNw4;rX9Zo(P=jr}J+^z`#HW$!qSSFaYP zYgFZe=|npsRk%a#UjU@$SzZY4{@iPk`aBCr(imSNNi{WW29nK_M_?^bRH$0@eF@T7 zWPd$s7$L?%nO`JlePi1<(D!ciEl_VDNqjlb9e>r}rL5d$F2d|8qCyGciYN`cqf_YB z=a6IOs#Om?OO>6b-`((8`q|dfbm2eX3{^!PB)r;P3~8iTKuS=XRj#8sPE8KX(KK$0 z>hwr7?jSik)?nDeTc2S}?kFf)YcrslA-;GKG1%?#Mi0WUmfh{7h64kky%$$9PI~M( zv^=nX_#395r@Y%vc5dF51q&%Dx>-R-?Q`D5q7xPNZY01M_=QcpXr$=zO|oDAdvfje zs>Gn=b!Q1RdHaubTcoMMnf;8x+O58Z#PFik26>+sm28I{V3q{`w}t}=uto~%NSZuG zp<1-UeECTS==nErE5k$U2>5sm<-L!%c_;mv!@xT44ZJAlQWrtwpDfk2_GPnfDV6_h zgoo#wQQOQo{37H{gLlO<)J4_bcvH^qiz!M&TG+7BV!C(lfJqvqvXlW$!FCfp2-37G zLK&J9xe6lQq35CPkaKn13!_r@X~Pq@>D@qV>)3f6rN1Rq;>CRrvB4$opxgOJWpmiy zy1wZz6X5u4o$L%or=EbWiybz^wm_ga1{MEx1Il+$a`*j&Qe|4UEn>D2PD-A+dlwJ2 zVbWuaCCS(*r^rr->$Pf2flW5N>+U`XkGg)a6$X_xpAr(IMx^uGdse*O4(00_zzhSS z@w)q^&{?;}m9XiL1nN}El;$FDji*&bQ+#-W&9e(x?hcyA7+02|3onZGZwHSvwL9D6(F+k403)?bA z|2$nwx)&ou)KB0GO21LX*|E*cl_4lQy>6?%wk$iDB*ylYZjGI0^ z2NL}d+QXr|yD3(QjT=c-N>$3*f@BTlg{ChZb7ofFq~lcO%2#;K6@p`9-~eUtHjA*< zM#1phi~hh_EAViTpiZHBS&p9z`%)w7(x8l$aI#txzKQ(SGx_tOngR_El5|A}e&HzK zL+5?PY+y8zGHIve$VsDyfrK#g(28qaJBXxH=t&gJqn8rK6JEIckPnZ}n^*$>TFF|n zJHt_^AIPe}(Rc45RL}Y-H2v!o&qhTck40t_kv1862O--o{4{R!7(9z!_E% zZQlBPY#i^eUL$|*bX@^-qOWY9?QG0FixP#UgY@!y0qVM=vL5b?I?-57a250)wsi^X zE4(pYbEg^RYtQmfaYOJuzpl?vBGs zAm~x%Vq>zhLVUKc&}C-yl)}4#=?QV+up` zA?F~eSoTr#XbDWyP+p8q7w*;)3kJcvf>iIQgC360VI-%nVT}D(8G0pIS1Yqz5`c*u zU!s}679k}%_$G04&_T7Nj={G|Yr*yujP>(IqYv0)&+acLOxK;l@*aBaeUNZvmQ$Ju zY0uOs{y4m_Vo*q6bTbF37}|jlsEFzpVL&(9^m7eGV0|C^`{M95`p~D#qYb zlkMnL;($eLQuoj_ZLb^~3DgJWbm)7>U~`_%)Hq&-(}1SbbkV2!C9{d9xJ^!O#wu@5 zS^X{8=?}$@G_`b*+<}Q(jtuip^(=EJw1w63jm`_U^^uPUh{E_*fFu@1dM=&?(;#d2 z>N+!ti>_?PvZ5zCb3gAb#`?KLit~~cf*(6}_+dUj$lXd^%v(W<>JSgTu-1Xhd_o8D z6lPGl%B$Z7yYq9-=lyFEg^HxTp5Di35N5L(vq27nHRV%7aKWZrjBb2L@&0D&hg-uI zD(#?%zFej9G=y(U++ia;S^{se?7oFspi1<3#f0_FMt1I@174OVb>(+9IHN)QV3v$%Na=vvc4WsrCZ%IU{xb zjQVE!!Xr=yTA*8F^B-gGTNl7-YHyNQ4_fZxg8E+Vi!q7)7_Xckz#NzEgtU&3h`7f@s=Z*WYH}u{>EmUp@6VSw+TwavJ}#{P*^|j9hNCc z^<3yJ5O1a_&HnMdJA-12BPeayb41aKV+>Fs5@6l*?7?(WU$tsOhSDQi$c?M82U+$k z8dX!X#j)Y@J7W9pwP@s6p_OuQ?k;*v3xuyK$TrO z`=*0<5~jxheu66lGIbFU>A^s)N&20)sQ}Zd61P^Td9v%jb#VX+P*XU&kX8PEp?Z|_ zNbEtGJsv0vM6mbA0i{vm2Dz9@5>15l)CvB~#PdtB5QqZ1^L$FNl!EI3v07T2pb z6O!5yt@~CLC|1f2X@fU1EKLpu`;7^AK86|na0+{yI)u2N=xnrz3M(L#Em%i>ly5r6 zaVV$Ir_|#9F-(q>OLaiYbOh(m6)D*V4QPvsM6R_cha3Dwvyt&J)=LvMB zsa4?nmvl7wsa#_YJu(0$O?VDv)RG(=L`|3LbC~Z>iEbGa&kg_scgGWKSskAd?)NdH z${DHF@~l+^`aS|SqZ=C%|- zY+okn_=OYeMs$1E^D^;gaqq|C^QY`-r?pz~7Zt=3=o>)@*@fw?J)?&bTCpkoHR)pi zbfyXa@ZK8>;v4A!;`m_EHqR}2P4O=4lA2gz+b%RlWU^K;CoG*ahdz#o~w(;dGQa;BW zmAJOLL9Ym4PvK@OMx-5-JTDuhY&wi7wl#8KL(i@AWqBXk%^rsKYYmwvt80E zQj}7wwuDaHR)0!QHwNTi^blXbB0?c+NS?cR6BH8BAfVXu)A4w+6bsfSN`S$i!>;+( z+4iT)blD{u z1)c5)03amVbnadJ(&Z1uc(_lLGgE(a)WBbY6}w}+dYsA8Rorim{&?wrr$_uvS~uRh zK>p!TGI_BoZ~NI(C<|F*+5a+mm2K4UO#rKY$8)t67QO1mewX`JkXkwg`osj(jD6YNT?oc&k+ z_hrunQs5~Ulwkdt*nrh*$fx!XSF^8?*^rh>{^seyJBce%rsxgo-6ooHKZ<;D7*_KM zs{1gaHZTBD$1#4r8s=|tv;mrmE13Depz5^F>C3FiPr{-GB-H3cNPDs-L|umVj36q+}SH}$mf9Ndbxnk<`|v( z|C=9X_2G3%ZS;GZm?q3swv{CAMeU1)(4rbccglCSXPVS^1Bf|!MsrgWRBqT$&Y3cF zn$sF)t{90|I=%k`1ES+h8o)zSq_Wm)=uFW*ycG|b~RJn&9RUVZnF7ks;E}%b#aGg82eIgRBO#anzTje&TAm)jzEf1xJaM1kgYP%R%x@1?s-jc`DshA20 z8uy3{3~hVUVJ{>0$@?kfv&EDRy#Kurx$Hj8WqyPCNnK`gGYXU!7dC7Q7~|R_{CDjy z_gE)yO#&EwLjZ|9)Fi9XWi+)uQUT=3ihtqtl>VA%@W!c81ltl^igK1-g%xv%F%GmE ztfJ7j6~_%S_rOG(>+b{-3kdE=p>MdFP}<#)fMUTUmzx*DFj9k64}PXP%rAD7C&KE_qRi(zD3JqJT zLD@kbtGVlyp?2H>H9NKZ={GxFoQT$LtbYUkZ+oHXQ0P>1GJmZu{5=_YFeR+UpCH!z z+PyPPD7+u%1GmTAvRLSVzyqgq4S?dF1n$z%Ov?p*ef%}P_v=mj_zZh}9i;mT-M2L) zguGOhS?|s#>4SC~w~x@$%jlf0O3nw>r%Mh?@+eXL)XU?=R$CTs8hO5J_ato|LO1>& zEuqf`M&w!Jnm@1)-J|yB9jEZ|NcH1Y%VcybA7{PZYd$hmAn43Z=BzMuN^>vuBD)51 zSyz5y3>Jq4b0w`G3Ik`r>881{_pr^2k6d2fb}XF zZJKKR2|_2=_l4{!g|)^sxtLeQSUyHm{CDU>f5v;w)!0j(xd)BWbqU}zSw&{To;%cG zbEmgCbDOrI<^4BMdPoDwo;a4@x%tB+Epee)V$ z@7gWeHn7BhdhX*buvVX4Tj%qqS_;{FqJQ+a^L-Y^tvODX*V+4dj}7QQ7NvGD2PxBI z_Zb6h56!durjoW8T=~F;KGu)4M9IW;_kx2bpv+0)l-MiV`WEIFF6#e5tso#25&6ZO z^3NIz*iQR4lhi*TW?qI>QPjjjsICnmcs&$!9gi$3>C(<&>BIe^zhw$91366uyf7U$h6IYVSRR!B2>~6}$ZloCn% z69MVsR>O|!JW%gA?L7uLo_Wp@+);n8jIWZ~qZh6=Jj84*Lt|#_Si`fj$6)}b`VkiR zVQlS*jPBOMZvNo2BmaWX?%L{Ctp}|_efY+B3l(lwjspA<`E=BekCRU*i?sgh^xgAX zsB((Efe3z@Rr+U;XLGI%%h|Z5m!m%#BjOP zCQ3F&Z&89ubs(gyiy7HmnVncBwQwgMcyeHx9!wC%rhao@St*82Xd)#gJsP%x2&DOb zjT5}WLuAO`Z%}QRXz`Dl)iu<~Z!SK;(J7tMrizSMM1Fb7F=iG2aISc~`Kn;2`9CnY zFWR|M)WI|FE#E`O%VDp3!G<@5Rg}$RwX==l$ob*4da^HR|7!c})(iJ|ysx}xrN`#I z)V4Dve@D1y#J%IjW8H*?2dsO zbXaA{EULPX&YAkqNXB)?1>>+#gjaZxI?QC_)sD>dXE><72ECTYcsdjQ3n;wEIdAhj5C&^IDp`Ap}=6 zPM;*h_M?JVuPV&OO{scH$IdoUCwUzc4Qzs7SI|!?R+L%qRiM?H&V*rGup{7T zGh@3|eJhco+fLrVl@iD2afo>a)JJb**qoy-d~lNe;4f6;moVx+f{@!Aq82#czjl9#nMM90mzM$CiZ6Y6t}C6wF^N`>Wu z;$}gKlOGsz5p3c4EWHDVhr($jEdSxFX=jSzF&pC10eBncSVGXWaA$pC{Txuai z6c7FP3&P@dD0(m(sSS>>r$-HvMjz2q>LVmUSSnUnkB1~K@D#7ibuWbfJ-+YP6a9mR zVw6i~nh|KxKkpOYl!lrS;2JrE4H?~;0sxl%Af{-0M?ae}H74m@drJ5=ZLAV6FuEIW z;ai%%B(po)Tm7r4h5qYIrAC|BO$CR5jL0Goe5?7*vfScit-GuMU zymflak6*L_gK0f$>so1Guwdwdp-7Kv^h(CaGdmv`t+8;U!-M(Y`G?7^pO()YvQ1~l zwXqRoe|l(oSAhhhCEBZ}jH(0uC~PnJ>_TMGL|c8h_H@rKUVGqPjz(T~ITpPphb56$iOch{Fe>c# zDU+|k<%_O#KnP5eBm(Mp+KU~o7WwT=^R2FB=%>}EH#AzqEvmUI-e2l59Kyb!F!7~3TeaJ&|t^8z^% zI4IAcLHjV<&?3uZpaW{3#X;mvG_zkTl85gku4Uv^O%LwMDq9UBh@$k|qi*U@(FS{< z=Qx6yO`GZcoj&M5Vo1{!e~ns^KU8YaEL!_2`TLD__C#Y$Z_Jr$zYl7~T~Nl0X)ovc zaVy6^GHFqcLbB7#_Wcm3{+$yl(Q~43#xlcSaNWk+$r(hjj8QDE{fl8B7KR<88UF~& z0YYA4?c(=VQ&ylZC7v;2+VZVSv$dCp%!}|>W)!eVRN`LMQAtLx41Prn%?Ek+tZ}9v zK%SyfhKV20G!?Q@RwP|N`UMW$G(nDauJ>%6a_)Eb^OQ9*D#2FPyD($}cMiG-Z zgQdFm4ej7J8s}tRNRm3^U?xQ{^lODLp=Ha&Vy;u0C#QogC*_&kea1Ek4>Vug4=!iX zh^PKP8>gmo`PcS}@}9y}G4xQ^Y-!QCsE5F|#?2KGC5u^u=mO%upyGrwyQ7MK^w z0b-=J#BThZ^MLf{ZC%{Lo`@^6xb&TBxf}O~mI-ms%WsVfqE{j1$tK|VS4@Vk&eX8?{zCan6>@T>7LF%-^4>E&aCJpB>UofSRg zr8f>Bq7H9qeUilxno&fF=$Y{qNBUZv@1J--=fM*;k$hk1yLxhv=QBgD9RwK2&mQ;B z1pEM{&&XqRa_1*YSPQ#1@-_WWsDgYEk!0WXwv!r;#d?4|r;7uBdGTYp_0`z1z{Y$Q zYdMISK5@Rtd|<7mKzL@zXM-brT(UfEG5odH0LP`c^kRqxu&}a=9^45_hTwlx-hiIu z?OhG0h@Lxq5r<;_wpv!!|8bu^utv1= z50gHQmCfj@;EF5x?Zud&v);d@Y_}-&(Y%O8shl7aqJ0nHe-J#Wy;-SoI5?N-nB$OH z3?e!O&=6MH&(N3)l-9zf`xj)TSWJ?82ZpKfKe1Iu_%zw04kHJ_T?fND4uLP`C2?5+ zO_q^ZNzqZGcGQV+n;ofOz!F>%cyMD^qckIrYGuDH1hFnrVaDpt+X`movv}-|81$-t zayY(9m`f#sARN{>T-G&=Hl+A*7PSqJiT7PSeqD+rwmhcIZLH30mv!H#;Em1M*lu7{ zj9(tMV`RxW_s$PHv9W&T@wbR^fZd&An6-cOTk&^goWgk^rnI6K!Z}#hiCJI*4wk!Y zhZ*0paQ0S=w*i}wV#2CW%FI=uT;_5RNofeBYS-AAH{jZ1w&qW@gZt*Wt)G(kQ>R2ds?%HVxN=%ZqQiKCa`QMDLQ`#yfVR$4_c|_I10jek=9Q*vF z&VQGuxLD$%(9*Ww+2X6&L;MLeMLNz4rz zzZ5;Im-oxG!3zmr`d7%WUjGhJ++@+I!Qy3Y2H0|Zpba7Gd0$ge%}|}>47U!ga=J+J z1*ASYEIFuQU^gQ;quEtse27C4mHIlp^b0p56I5;cEzH4mkBDiDCg@X4(T-P6NpptA zu6EuV*13U$nebcVAgYHv7KWg}RG@7(a=ufr=xcLY`KFr|C?dTTB!cwsi&29R%4)$v zuaMboxXykv|J4HqJB+@`7?6C6y8MLVO6IKpe)E4hlKxClY)*-hRPe6+B;_i6qRwN?0I87JWPp`X=iKG&pkVOeU{f>9)$vc>4^Sco zz-qmItF%?0oJdO3UYrKBlco=hlnm)Ccul@SoiO@yd>McACsJ6imbUzW_c6D6bPPg# zLW`4l4A5LJvDk6#9 z(Q^}kHX82TN#117ZuU6Oybm`+f0T0u?`i)6fdo>w(p8v6$LIudK$b2}L<`2a$?wHZXHEh4Y5B*J+G( z7(zwo>_>|Az~-dZ1ZUP?tQ|3@29pJiY)eyA4Mx%5O8Gnqkl_jM`qmtG1iO}FK>WxU z&-Uf|H|SE6iA`g?zM%|dwQm!6icy2Yk&THlacYct=Ep8TYSK@KAzP z-xzJD?RjS{K|dJPO8;^F|7pLedl@$%bs?HkGRe;Qa~8=!;&O_n+xUI87O6(6C-MYy zNyYy>m%URL1?(I!E#2${+)hD$6=O&G0>DD*lps();T-DkHG5g4trv=mRWFju6dj~GwcoP z3}5P(!Rz$5#i2&0u8?5Yq2nI&j&lU0?E+1tjE~Vou}f zg5^KLp1jUNZD+yWuan!&%e(j}s*+4xut^X(LLRsiebX zve55Hv@kJzWf;C6UEPU(i{9CI`44#$!a6eS;3isUA{8ipAls-AxyZc=t0^?p{}Y8F zj(W(ZZ!0*LXX~1C)*FvT8R(5;Gih|st82(BUhS^t;SLXN6~5u_Z>zljVY>IRv*5aF zR#evGF_C7}{`w}GKFHkifDG}p^oT}1D--VP|0$S0se{=Gi8r+Gl>09#58_e3QNaK8 zjZUb;s^s`o**L2q26b!qW5jkz6B?9aHwA ze5MA^5W;=cSHLnO4$ZUJg1X#}Ja^Z*xplxO%v;L1X*i&j1?32M^;d0<)$)WYi=7B< z438Q6RnT<3B(+10UA77%vD*JiP>I$0 zKY>vp=%3d81eEp!hdXm}Pd7is>wH-)ipU_ahPahrfvo-LvCcnq+M5TF; zl;a*Da1lZO!Y>NpsN7hI@-W9(FEpdI?%LmWV;n@2G9uATZdl*6A>9FJEqo+FIr84{ z{Gpe^AtYFJ(2N(xAjfFdjH7QHIKK`_{Dei4#F$ zBu=aM#~jro~ZCb1)RfJ@o12`#TT+J4God~6xpsd zd#lYH5m^EBBb8K{QXLsUTW0?#Ad^%A%np{Fw(m1te$*1NQ5OO3E{!`6G*$XNj>zF5 z)@m+`kWm!$p&&RYbOkGI#gzBamZwBk`l*T(<~IH_QX|Vy@d63mWL&sbNO6SnvgLqF z2xECd_?Ab2ruc~rAR_uvH^fI2-jr|W>6@<80a-F@l|Aj9Ijb_{4{-v^7>mDtSDtSh z)BocIW7gr&U=$IU-$CmAi#0zo_OYZru#Xb2s9xz(11ccaDuM3c-ZG@-wL@UnKW;~{ zQd?K^V!;LM3t+5XAIhC!?}-`?4n;)2Ck0b9Opwg6NA(IF_YMEE+8R7%$8IV~$|q0o zWK8Joa(egr0W=Nh*RskH8*Et9K*ipB|1G8VW>WplON|O& z{-=Vm?C;YNb$lWl6rT-zfOWzj*gb4^vz4A7<`QR;LCc+2v*!^ZIWU=D6YuA=BuZ>` zj0UYOl+juI+ca9I>(Wj#qIN$rrG5VW4*H}^8ItX^U_-F#(aqFVyEO{}#ZNF-^8K)-BsS!h$w|$25dS1E9#sp;m@sGmePb3z{Kk zFJj^{EpffVXns=?BqhO23yh87wsQ4tp#3)go4E74Mp1B_y&6`Pdiu0=_ltMBHX5C` z_P1?gBn!@@Pc;?(mMPt*)fhLoJ=ss8j`zxqS(&x>+Bo#X=(YfHNPkeCz`IN^dj7k+ z2nFUk^PLJ-=;+IR9k%?3I`QR7IC=$Z<3{KH!jG#4$Ht>952>$mev#PRUJ$UPNm{4; zrFc8W`}7iEj5Ndyu=z1Xmn7yNnXea;d900Gy_&cs@)Lx$M(MayOQ;~pamp7A(R6B~ zp>y&X)h;`HWA|`oZZPIpg6OHScdtZF9o)gJ3U_zuY5RnaRcIpdXh_GZfFun0+h{ne z-bRlDJP|BfqyTaM&WT;vI5yhnu6m{IutnMaP|r{$VDZNu5^$VBd7}!Pk^ud~wxLRj zE1Jd>+`c}~>-($S8;Gv0Iu-3_vR3kGsqYKUj4}>eZ{7R3OS1eR08_;287glooDIu> zt(LjUE(#Fj|GcxR2b(={S}&bZM;m4m)xd^eHsx5)-Hs_AdnT=4C-;%fEQJL+UP*k( zAwsx{7K}WVq;mOd*(a+qC7cBme@CvMyMGwJK_JggdN_r%kMZ}f7O0W@~i zJLEe6+YEahqInukn0r6US9cxp`c0N9UyhKvd%vjxut4qPgzsP;g_{(&X*7nIp{1WxNxfsIN;s)+ed{D%1@k{jX zGhzDg(TKSX+W9tMDfaq)&ZcgIqQ--kt;4@7-HQRCi^)3*00HnpdaL2(twy0sT2lQX z8aJ^BH2o=AT4YjSQ<={}Jl(x46vTR)#`bE9G2a+m0ECoXN|H3uOFj3of{gb8Os$nx zbpngz&ZfzKC8&!iaI&FJs%HJ+J>nVqKK#;8#XrU(3U(}k!HSJ)W@b%hx1EB*P=QmU zU^fB^H(l;9emQ_Ib94=D{4?6ta_F=V*{?Q>Cc?OjO;yYnS`5x7!_`B&xhf`p)(Jfl zlcrj8)`#X~GxonhiF$ixog2N>bW-mo_n6&mT%4Y!Z3Mw25(i_et1#`cX{>%6Zx8}B zSix&DnICRvhgCQa5ebs;-c;R$N%+x5S<%Hkgq;U~dL6|`WZyKMeAlQbQ%|OCXYHwf z7!_wigXVF1W3PcLUgdY!Cohy8xSP8SL`CEr9O8kggik|)<@?z#CEC-sPZb1TJ(%wP zyj=f|5%O6eux?~a??J6boVqp6kSctCHQ;47AkOSzP|$lC*)&l(=wEgID&MbX+&a@m z?Z4-`82-)Al7kSS1GI=gfUU&{d660f>o<%&5g__MZP^VD{u6K|*7#Zmw@3{v_5L$( z7&YzzUEl=0)ijs0 z(5$L^1eg3rO4LaLu4)}*9j49RITKwJYVU=VtXre5K9~+rMw)`bdw52~OV$yd$7}!G zqd|w+5;H-qpi<3NIA}&WF7!k3z}M>Pfpl@6MU#FB3F)>wUui+}#$ zWOdjnK{P%zJQI;2|Br}osSLdbFrj2+y?h}!0Y6YM>b3y8n_W3w$xum)ys@I==e^D> z3haNuSSTMz`YYVfG!iXo9-!8|BL9relNVJFi9(E7A;@@o)57!|A@5uaYUOBJVwo#% zcDApDxSj4Y4XVpCCo^WD1{>nA^`~JQhv1!VFmA!c9|89eAJLc}eo+QE*gl4n#f*sXG%aG_Z}8Q@73i5Skps;(V!$jMr40upAZkA_z^n~SK~yUe~< zGt2i5OKeAXz&*qXm0rKfiz5{$7uf$>y?f!Bh&D$pNtr_F)ELXs*WB1(+2+@5rJjAE4TjmB>MLq= z*X=e&dLJtR-7C6bqA}%S<*AC@+s&~J4=hh5v^)GNPbEypdZW0HyL+(<<#?h-zGSubMI{NL?AF*JPx|Ud3FIpo5`8z^F=ww&YYe0s|dh*wDV7!j@ z{LJ$jmvB-Mp0}Z7DxOJ8sCiWW+C%`e8+Z9Zvd>?I^8$>uBt0$1B ziZAc<+>bC%XT#(UO4}M=iG=RG`poX z2&vye1T+vybSDTE%wl3T6G2s(joZL-(JTKmFCP>6pVdQ~eHw3gqG|Z?DGKqby^$~F zWvrUPglIHn%M{p^qRc=(XZ$t2os?uN2AS zsf}q^7?z~?yebeqO&NPd+0;qe06;k$NW*ahxjR-Db$1h*d|?KuMF%9rEE+PZOHy-n@u+eM9CnpbCB!ygWF>6^V zU!&S=P79QS&U#@a3G>3%lEWwLg76=R`DQ&YZr>F4to^o@9?-$l3xnp5@?;!Gn49ZmQiKW*wnsoyc)eB;E^#o(=S zKmc6(msQQC5u5q(P>VkkqfV0Buaq08H&$~v)PDuP<&DJ9V4VWYBjHGrNVPlhSAw`* zqoDbDBf9)FGt6vS6!|q^)$a61-S?IPqwsxE68gz8@aZ+wa+M z5$LJ>1vLXt9!ItRnq+1_MsqXJZG)_x(o3h78|$te6Q$!ZzU4aJn59_^93;XNVN1}%>-MR zy6ii$1QyUr8@r1FK6@sm4W3hr>d_DmUk^yA((mUypWP}Qbt$ow*NQx?=(drRw+X4c zFAMji?fE5BYk2x@cT#2!_)Ao-1S~^L`|(I*oyos|jaZ2&CSTnEKAPiFJ%tY(bZguc z*~#6@vCi|9uc)u{9Q~gV2dbK|yMl}_X*#pqnAzrHQq|D*M+^W2otK}vA6E4xmvl>^ zj(+f<8ixAl9Y$ONR8P*x;^kxU!f6jxmq>}YaEyIhCFFnhX90rIRwTY4@&riNodf9h z7JFk1Z!1M>dkz-C8&KuP%uMGt{hEE>;RACV=(<@}(~42Vmezev-eE{dmAb=1KBXE! zXN0Gt%p6T6nNW%I>%cO)S-<<(9c}JLkP(a>=v;lz%L{{9f}!Y4-}Mnhl01G?)v@At zCovwGrJ-|RNP~Zg?sq*k#%T3$RjXB?1o^kzLAs_-pxc^`8I*{7_4cRBbZ|$6>U$CKUJ8lPDxT91=0bN zPfVGf8CNgqx}V;m*gS~-X)+kokXI{?mR4+K@p*G}$4!?&8PCCKOT1F(-iOXcfmL0T z%y1&=O*MBxaf%W&a=&>P;|+#&(ckqCo)5Tf0{ShO6sW%JW=*8%q#WHWjJXG6m4xQ49!EC$%FtmZU_ zLHrZD4FNQy-$;r5xrb^C|Nj{g>?$skFmhl49Y`QDNV2T{ zhA-j0pZ6KiZbi%@bX=S17)e20(fooDf)!MBvig-fY)@49WH06k$|9-9?F8;u=0| z_qJO!y=%T`r*J(CYvlW|{RXygt&fq*^Ivk0MnHW@^F9=$akI=CABC^DDEg7W2D{Y>5-4=X{E$Lg!&ng_G^Zd37f_GMnZGJSR_s3Usz(N z;OZRMBKlPVL|dWV?sFZwIlO)R7;>rENVB!kgIT?NX=BJe@gU#u>vmLqt@5Cw^*?EO z+|d-X_J4QO`8mf`loY{=Ppu+3xmL#3Ff;3+U>8ZvcGIOr0q91_4m41q6I+Aba3FMQ zt-^v+R3CZG19+iVQw*WfFmLv5et)v7=9auzm|oo0?)6S|EHUHzE8DL?mPr!|4fEb}^s&1M72fo5a zO?cZ{r5a05dQGf)@JMF~l9J11A509RP*8$;sZOsynG-2%5;$!`00%w+3=NA7BD^0y zBcxR+(eoql0ldwM62-(X+6B(j8{p(DbJgRP7dy&p%n=L!6gBP7T1kZfst3cxfsBXG zl-@J(z3iLKy9v0MTB!+g)HT_PMAd}P!}>jf_Z)oaBLL5Z*;9ouAgcDD9W6}*&2FXC z<=$F(|80??KY8#Rp{xQd48Q9lQo{drQ=1d%cKT=n;puj|KCH3bE{OqsqoL{@vx`mL zD)|Ejm(hEn`;R0-o)R+L+<$;{akQEJFBJufia5@q+rNO#mPt21kRx`b0N6jw@TRBj z>!&5Elhdf&048atO`zqF!IQ^;8Z7D+J24o^y4n?b)N9tO}Js=5r4&R zH`Se>8 zd?Ny*{kHLxY-QeHo@1mC(vg_sMS8L}Kd>vF4(P<+Oqb*6brQA3g9B)dn1SA!{D4nH z*r!Tfu7lxs(mvZeN0849w!8_EkZGgTrckDy9%O^%uv91EWisj2UM6@35PoR3fpEzF z^LrmJ+e<;y(CK=$V*Kjw61RGq@jOTXsl!;z$DOn(nZ)(iGYmOL;8d!bLN`6*69*B=bmLr5-JRE zS5Vl$Zk4N};-)4mXzCy_U$u0+ETh|iZ+b%SCr$Ga|FN?i>^-r*LI=EL@ zxu6i|k$2WB3_X04@^`0~rCTSY$0hD2v-)gX+RUX^X$rhV60-x*NiRDO7Hz|5fjR2t zm&5o+wiT=te_5Gry2X)M@upXCfQ_=y)*nfL=oXkv+rajwx0jP*A8sB45Sn;G19F5n zdt_=N+7*8Xp$wLUhHS41Hk9e0tia%$ClDsHTYGe5L5^0J=Y>f%Ic8q%q(aBWs9V(S zlem0Y&ZF+s&c%`t^RjPqbW$dq9r0)~2M6I)w+DVRF=k5kO#aMq_eJdaoUtj2wzL`j zqi14{5m#GRvKiFo8^6Yb7S~0?&8@h3v&(#1J>qe=}_ zfAaOd#A%?UREK_;`4*!A?`Z9jk;AhN^pr2_;1G`Lv6`z--)>8nhy?;0ZpW8MQ*sa@&3cS zhYhU4IevBPB1@-#*X|$z0%SdW3m@Ss$h0E859Z%ELnrXPk~d0Vg6^ zwo<;jcdWP^G9Tvco{S-RHT%nJjI~Xzin}#zZeG5yoBZSV)0T&ZkG*LvbcRbOx)}NE zKY*KZ00{Decb(D7D1oDr&T20ds#7{2V_%W$|2+EJcaER&8v=Lse39xK#;4@{-&wFc zzsdOJ17iw#&F72uivnSKr~t;DS=hgiyYE4$9OC)bWI0{ni8pZl-}ZO|GhRAt(^P+} z?^9J*jOpOtCUb+bmvOi~yRrC2&%s^XY?p4{Fy4bwuI=HLNkm~Cx49Ri=)?b$zJY#E zonW!9hkf|p*HCw@d4}V?1e(ay4h&bz(&eIhCT|ykyyWb_Bgu!8X9QrTpti&R)&G}| z`KDWsgv!xtDwk#cAeWOHVe#O;$~-_25PGIO_Tc@0~NC>W%9$M`h#^K>!j;W9AwWjh^pX#7DmAEeH~Ys;J3{01o|>K}^^!ttptD zJ3UaunD~N-2{t?#(Hu*d)++5d?0DvwN}{<`U!a*yOsmelu3aCgJzJB$OdBdeoB%gK z$iES6$H;Hf5%Tuh2PUi;PeU0j zhC1qxisZx|waZtg;3iorD@gZNk;L|xu}Hg2hqTf9uI`t!!yLIoPC^pO?U|{|#E^LE6^CN%?;SX*!_% z)%1`1(WH3ZH8Swy`$xe%P`_|4nMhtm@$GeR+x}m8n!w-wLHT>9h3`)d78_Pj0T;>l zF~eej_%K`G<2?VEJFxaEhDIX2p$*+ZA!8q_4wvlCl^R!kVA-`Di`lbIzaz;HaDD2X z4vyoMs92G~-}jVoOSl6S?p+QXX4*pa22N$I+Y}joXXMLnNZ=AWSi|)HtmU!`ZSNVhWl&XN)4nzwJFc zt2AW!rb#kAe3&4a1vn5yetE7Twl){t zsB?cHtnSbp6Igc#7#})N_laYxjMChHwSuojFaIu`a6`8v)^LNJo?=!@j>ckMEuvO7vPC3Xh4Za z6NWwHAli+>@*UqFn0iYAv%l*&*9AK__E6$+Ib2Llcx`h6d!-o#Gz4QE9_F1PpBLz^ zYpX?oeZDslq{!hYvpst#4__p}w2Z-ikU10b}OX5G4DIynM*qDdvT3Cr%?hl9T5+niGlW zE4X2bz(7&HJI2HjpLK9D^&mRsTz6pA^;(RXI^Qv!9b=v&Iewa%jN2)7f)@lM3msmG zGZ`+awA-?xwJ=3ThyA^XmwdcN)SIw~>Eb5{!@NzFE$Y8E!y@VjLB%(Mls+js8<_)QJUJd(5`Gy#L{abdK8ixd#@PaR7L_C%H0?q#gH#pJgyf%U*%b7>Uv*-c-HHg4TTiS1MKbaD_ z5)HfkB3(*-9l5qJ^80ax;B_(e_3ikByFR zPai2AL?#pnI+6A!a8~%{pvA*OC=vYr^vtaynzu~g-qbZC?NL`eBAatB}QO3`vir-Z#B{s7Ad z7@P0A0Jdhw7*SZnqT+*r1!dFRA%9LVinXicra`GDl2;_%7JfmdH~&F3yvL_CL6@Yf z9-0w%=C$GjzgBQ_DoRnIc?}c({LSk99W|1W|6g1gbfIQ>i0!|o=GjHtO_wlib6rrl zNV8U+8Vv=>E=pn-?ub)Lt|%Y4)Jd6D6fMl0CtwezP`xwU94VjFe~0-So6=n17rA}R z8WApD)kykiN9&?`0>_X(+}d0-F%1bg-3(u-lhJ}oL|zB8E%)Brr8Mnw920woo&(Z>cy-1VW__Ih&Pe_lsYU|*@13je!Ng#^F!mRqWc?IFI-h`XFx)_gI?yUOUlgb&VW7*O`P2sEJ{)$E!wiV| zy1qt2XG6g!_r7(kMRISPdu^R9-OE+C(wsugj7h+kzDm`WZ9FLk%;#g|CAAHAvz+Qs z2F`wtukR>gl@?imhi!^nBX8O|AB>i3GF6Va?5trG?}TTbiK706=8d2w(Du5OEYTi6= zVxEcKfSIUlJ765RIM&h-`HD`q|4})htk#Q0SsoCT)Co`^&k^|@YAxBEBEY3Rt&YWd zF~d!;X~QbSAuCZfolrbNh;*g-OGPDyB ztt3wuQevjoAv`^jQy!T8BT8SujT1pyF@PjNfCrBSNjda&CLJQ!bFY@093d*Ha5V1S zXHx0!X0KJ2Y|UgnEWekAET2D%#s?zDb1y5%Xxap8(^E)aN>?OL1=#DCuEqZS>z73P z;O+&Phd-6b6NHl!AW3dM=2#gydgGj85Tc^o9SmF_Mp7IWwO7Ju$SIBvHQ?K49-jEK zWe9EZx++WJ>?3I@Zht2`@D+}I*H5BE%pV*(h1g;>+H_`OLeJn?uBw}F?JprkDXOnk zFm+{>)tFmGj)JE`hKP1&XhR&bXUaebqy^2$RAh@IjB+39uEo|&gS(b?+EL8`$v{?Y z?o#!JmeZQCB|bS7+eM%F;tb{Ajzsi>ej_8_Lj}|hET=}1BawL}TIwDcZ?dV0pky;W z+=d8AlEDx}o!w<_(VYb-TT zY|9VKcTHUuY2wNjyPd4_zB%f^a|~Q#BgLG5r4(s#m4QT)tVv4~cY*h1{)qe5G!-;!vcUhl$Rqxw7dO^1Mxl%b2Z;@yFRj|Sy^(jR*;(NxTU9 z)k%@IH-Sq<)ffrcJu`{fhbQb_XfVuegtEpE9G~q{mG$-j5mE&`*HfwU+2q$Qc<~F@9 zI{}~*T1hJmVZCcU6(g1-qX=LI#bVVUPJ}?BSVQcR=4-S~8XLv&=Zmi_|Lrjqv}0%{ z(#pF{rzXi}Ewqv6TBl=+g?za+vx*oa(a2SXLyQ%87*aj~&$O=(GA>+;b9~!n&|@pS ziENaLK!4muY-#0Rl89R`&g$$rZKt5}3=~XEGHRA3-fAJ814T2UGJp`fPP0ZHS}LgN z6Q3tt9uun!RYRVEl{cW|SgA%Q8Si`PwQ$+5L86J~Aw-%HN<3jXEumF6ye{hAjON*k zUVf?<#vgH>g~3^qe9Bkkn7Z7H#aFdrW`mxC|h*XM5plqnpLU?QOHbed^y#m(F^BHtH7Cq39&+}evaC*yM!5+ z(Z1U7_J1skxm=?mIAQQSsGpNe`ReVS6sLWl;;YuRsTIn_HALZEWB_UhwCNqu(J-}+ z3GVMeEWs6@{(*_~fRI606MB>E@|1Nk*3!}Rl)0YQdc^n*3`<|b5!mLzyvUGs7jJ6C zhrtkOk?bA{3yE&lq+^9>o9!A9nk42#BSr04cy}_58xPUpu5CQJtSZ@UQipA(kvgb7 zRqmC~ko}Jo6UZ~@ChDmq8p)NH8$2VV33e&*g+Wmgd2=;pZoe-2l@d~r@hgxT!rWNA zL1Bs&dJ-O+Zl>sc9eLrKE6%XN<1USCqiN?N`jsBvd&-FO3`&9 zNg<46zs7TLgjmPH)j7K4+oo%GZv!ZkD0g-ja>WeOI&A$two^5H93resivJ1lMBecU zg2knh{SYTd#I6!Uknz7PqXd{-0jwdRYDm8KlGO}glvrS0#r)PzwhzgrU5)gQ9Yq)6 zku78`Bow#!;&A>{N# zZpYEQHy@oL*BWJVxEuXAA=yG`(4$q97NjgW9M*Hx1p34Y|1Y73VqI?Vi@48a!F4k3bO!=IUu7_HJ z+NdbxXUP0iuEWhQwBqmR5CenrGjc~+N?SUt-yi6ksgKTycW-rMXI<_cy6(zSSWoq} z6QaYRnD^yKz~O$@KhL{c{?7@p$^(R${aF2e_e7lHoojdbMn$Z@){x2; ztG@}SC%&`x`DNo0BGVvu2+Cf641C;*=k$r~@afUnv1Mje4UpO_MAldqa0h=LZ`TJU zL58i>hNZai&G5CX6b`~l^+L}xmfB!ZyM!!Hw8+KQ%IlF&Lj?C1+fK{ zk4&+t%axdpsts_wR(fdukM&6fq4OaRCc1Xv(Q&g@&A*c?ws?CGCqcG-X=@J{R*VI zYVDITH^Z&r>}BYKPv??>9LB_2eOnCa@6t>fiYUZ0VewPLHVedq+9H=$>3~M*vBe5UM8!kLu z)wC&8+aTjBS*31KJ8)Bvi>+Rg>0c3DCVNate%atiMv7uH3o(7`fsz(9ia0;uUBJ_> z4+(hESEPtV2;iM;#U8<&SnJBk9{k5Yn}RGMK)q^%mCU=Fvd#dp!c6rUFXh!|PoS>WlBl>C?HE`(rBd-m&1gmxs3ibsyygm?} zbHK!dI>>Va5HkfDvE|v6VWVY({GS0RtlYg+D1u9gY|_}i3b8A|=7A>!0}LnZ&v}|| z1Pq+3PdBde{R=Yk*fgfR3**ye!m0wHV?!Y{EYG5H<~2aw;71fq5y^9%NlBW{e|+*Q zlyOYqD-kXVo1c5mLb?3$xb{Jp!Sm7n>th4M2&v@K#!eD$*`wAo>=>;T3|hazI&n$~<>x``4Xnj4YJBxu zu0}JejvGI~VSWdI8gd!&daVnl(Kcn$W!Ia_9@S58Y*5TSJL*l!7*j}YjL#<{_Z7t} z3X2T``+4`Sa_ZH7!Z$zGRvYK?9S`cEwH2Rz)b;`U;{JR0TSeHYzWBy?qjEw=Lw@O6 zom!0I=(}$as#C%Cn~&Oim+JMavu^7BANMAZf4B??7SbrsMQs*myF{Q+B8FAc$hb!U z1JhNf=rvUA$pXSm;7sKW{A0hV^}&$)zYRWoDp_coWIx4Q;08al(puRh*1XHkufj+# zv?uJ<$Bhm$EyLOo*QFYEiC`D^AKi_i&Mo9So6kz}QQlCx5^ zcZd4LY|v;QGRAdZBmA#Zj~WCt5pbUzM}m;ldE!Q2DNCY=Rt=cf=j7*eyKDVtS+S=o zN%s^f!F|tci%CY0Iz47Tjo=O zi_7WuDxKYPSuEztw!d~jwtrtAMfDn=Ey(Xw2s+C~;A)3yv03+ht5v?b2230ke|7$c zVHc;Hg=bm7<|VS`t}+8m>``p!@OG%a=2*HELifbAKr76?^homQzH-3vqc1xT&)fJu zZnE>K#))Y=4CUJXyarvY^zY|eD~u2}%F^Tv?`rOhLAoRk9TFSuD~q-xqpq}4D2?8W z5H2l0;oZ&rEXh9(ZhvKL1tGX$NUDb@%?yR#>+kf87?>lF6n{*!73oYg)-0qOHE{4t z94>k{Vr(wJ0vm8Z3pd2k+xpezF#Ts z8;eTReRaNLi|340uYh`t9%AVc!Q*;X=gHniNB~IMk$XLTw+lnP$h{_cv{1Z(g-RK; z2}&rgM^=wC5+BSG`mN$yGi9v}8HJJ11{cBl%CQiVF3uX9h6HN^Qq6J1NRGA%ju&z)Jdzd$|drC!-^I-*MbaSG@6XZ6@DWCw>>!P;l& z?ked~<~ASkt?Qvj7=^dt&l%uxA0MRmyTW0EF|k3`QEn9Q0vdz61F=wo;FzgD7aG_` z@!VIh9m@?XU|coYqds_uVKL}I#?CTCuL{|ejd&fYo^Fip5+NZ~DNO?o-RInJ;_p{Z z^Wd)k%!<#r*(~792gqvhTie>6UTcQolUpq58?{$vJJxJ251k&&E{OZXXC!0DA9J5s zCZyaI*E@c{>`-^U_>cCHU!3ivHN5w*#4r~qYY?!{^7_S#(sHK22$O=L56J$l4%-xZ zitPp}>UfKF0lcItBN-pD0aec5tmZ_Gb~Bz?e=oUHF4Me%+FDpMPnK$D*)K zm|7|NSKcD5mpWhYmFZ+YgsAtgHfU5wTEBO{mp0Z3e%7UBpWZ5hzqSOCRVEe$fv+?2 zpd@saIXvrG=F`u_#94I#&D1&L=3FOUj!v(P8f#;Zx7&(xc4RMUUC5ORB~ykpTqNE) zJ68T;JhB}ZLP=H7z&jOmJ-Bfx0|B6qmSqWSLwMu`6FGX4yqI() z(|y84K5BxQE}w_IRX~9()ZzpFw5&5j)HwESw_@&M=dv4tW|aHZs^V3M$deRUCsJ*S zNu4<~!i9H34`}`VHB>wdllkN4H@3w`oTux0rYnT40fbu}c0VTV?`A z0C?d`dU3tNdMTlizng^LMBN)O#bGGhl&k7R#1K(!)vo8Ii_k~IZ04ue*&H$IiPga4 zYzWpL{B#(Dq&Y1SlrCy1V$Z1thRl-|Z!zWk@t|;2gRvqkS=7sdp@Md8n3y_!Xb?OP zs*}#FTxUNbIr7wMu>oM;xtB!?9&d2^m>vJ!unLe(so3tqGcQ~Ws@CW{xYKzs;4!g2 zNW)O;J?j;)MZibZtG8@XtvJbq1MqwxYVX{6vI4j5%LfPGgxG@g2Q(>_@JgFU_X_h5 ziw{|3LpPtWb59UcZN`wMn1+qu?|zQ*f}*V9ibxRiEE?Z zO*wXLTTM?_1K{_F&3qP+)eo2+++IkiV(7$e0aH_$WU3dCIUYdN#dUgI={?nbA~{o? zJN@QHcx>JXn*~|Dvnb!iOXe82*L3<^NAotFL1>M_k29@W{n#(v}=F!%; zbbWD9|1`!v_b)*Z`uU(DHV#wo%X9HYQ-k~Z(2qPcg2Aqf3HM>e-gYfifXQFgk~zo4 zLkip1kevjBYLC@YDD|R;179Ul>fZhai7sPD4>sP2H>TT3--Fg6XTjK%QSJ+DzYQcY zNbP>(p4gw5l8YI^E>xN}{XPg+qg zDFfBt!0oLZZQR~Bjv`3~z1LHc39L0tP*e@;PY@>wB`yLKTk9TiYf~d{NbYM;AjMwd zv4|4sEJ9jQ1wN~S#nl}xRkQ+mCozW_co(Uixt~E)ON?&L2v9wLLI6|P8iBO7+dux= z-yLw>D>RU7b~g~LF3{}s=z)ev5vyk|@o++ zhWpbOd{F)-sqFd_!-4eoosK4cdZMNR=l>DF*{>|g+in$=D5z2xI4fnh>GQxy7aC?- zr^)@r^$$(qSn;`%L2`(x^lp;Gajiy}0&j=wR21USaFa!zX18PgrYPcpKRd&K_W8pl3toW~T8Hz%PD z1<`HCl~?eQ!*D<*KYmS>oR2iiw>HR50gu1mj3u~}i`aN!gLlSLj~H4~r&F;PB7{h# zc1eW>j_oXlPFxfsNwF7<9|68=@!^pU=T|1wK@4l$!aXKakPijqk#agRa`019qcT7?ZX zPMI^d|AD(FiaACT3Yb_)K3X}CxBcnl4m1rBUUFey>Y|wpLJ8fubqf1HclV$R{hyB~lK2&JE_N-W_6iTv|JRh+tLLyG_H1|+X1ZENKnN6aiwa$R70cw; zl5rD}L2z!dsgSz!NW&5pl;r;1+0pnov9(u54hx>0e{lcaC40z8JAd#ZO-M>bj09El z1yO8^OZsgE012S)g%PC?UguYR6Vu&QFZM?n(QJKqPyGa&8 zN)Ceq2HyjGMFfaC_i#ZQdSOt;7MsKo>r3<1(~yMi;a+Iw+i~fmEiQNdQ?2Gn{OqO5 zTw93XMed|&r)0*Qu~=i!|5MWSyncYEceXCw#;)wK!aIgC&d)+f>zUmS-gy)$nvx-t zZc!z{iESrx5o<370!LoDQRbgd{r0SS=i>O&*~cEKiJvh2^TMUB1YRo3hF1K(_Lk}) zo!_IUCBnbDB>=aXexi*i>szK_E=M|S+2;iiSoNgu-9dDNdbp}QIC*?fh=?G!sLc*`3-L6IwYgXDJiMPvYx{&3GN?eI3y^ghBsa2vEML=5c;~%qE#5=JNJf7D{ZrZ@^5c9*{6MU)X z9gIO|!qh#RYn0%Y-(19bj8dK`K3zM8D>|=VxMlk#GV`_nAkItdCQ+*(6k5FB+j%X9 zrYOpuA~Hb9pC#uKJ)Hxhp{-4}!+!m2Id*o|7SA%(|MEcWu@?co0y5J{8f&!!@Tk3q z-DU_&wm>ynpL_v*^47uK7xN;+MJ~!O4cE?zZm-8%2zZpMC0!!nYEo%7SiHtO0t~HW zre-|BQvLlz^xunfMHjF}57!*^DX~6rXdiM^t$bS=dS;XzZ~%47xp*+p73781GZm4g z=-`+K4!;oJ0(Y&$A)KK-wnahkg%$8Zp@FgYfB)VVP(6OANON$ z#RMDGAbt*33*=)2uRIfStI0wbT>{46tfp}0$Hv$0+;2UnLld4SNU;JhTv86k<55@K zJ>Qhggnv!*8=%E1LC8M+WF*#o4TPah#l52r>LsuWFPbUqNq&C4=&Jte_GcDfG?4F4 zTly-lb9q}Ffn_5Ka1cV`Po&hP{w=({mY*waPFH@$;f07*pcNbEOWYR*I$H5&%t~7D(x(6(Hee4^&^94 zGd((YCO0+J)FqPwInbhRmJ0+xZgxaq_0i9J?KqZ_Nx>~5Qj zjEQPjVXXzcH=?rvb2ZCppuBr-mA6WJMfVmw5X=Q3V=^@N!15up!UG_;q^Hv4nILHT zV89lS5ZA*BeeJn`+P<{tzNCIkDeEhGv@n)lLGQsZFW=9n6TI{3mcFXQcjh?tCs=uE zizGCXZ**8ipKy;2cDxLt49G5LoOl*_C4JnH55e(k8QeHGcBPlyW5((N8U=#m?*ear z&5U2?Op=AH2bl^*=xMS-G5Z;as0gRqmSPP+UGoW;Ad4jj!fawZcK40J-vJ!xpX^XyLW6xpH7AX z&;W{jXv_vh!z?hEiOqv!pnv+Sie1hqmQ<7O#HDu9GA~Uk#Dc*F2L5>gJOat=WO}K& z$Dq*V!)z2f9uSVnix(ddFHQV;H7R%gjD4wy8JL4X73&$H7vU}lF&fDqJR=~#7-!{k z*4dzkCguoi1gTt7p&z2tucyKU6n0^s)x%C*T*hK|Fr@@kmd$%X9Xn`&)+rw!gW#uY z%$VtMhCvj-7y1N>bgCH6v&iyh=lf;CUPGRfWaRVr*%m=D4l02rXT?vWj$H8Uk*|xW zf~2I68A&AI4n8ttLAeU2g6eopJO{c7vXgOYYxJEz-!4{(xrJ<%u@t{L~ft?_4~dK z`?KLjk4xyhS|-GRSHu9UpgxFX<2<1MvQhxpE!O>rhN>ymW#-5*5u%rt!C!lcksQ)j z{#?yX`U*At&;BpN3d3!8WPI8SqlI?;xbz$78P3+1+f+af2BZ z*2vCbWlxZ$(*^`Nez}9Y2|nh9W#t;lsl7NOamY8LqVZ)@+UMy(`fpIxD6haGx2l?{ z7hgvy-hH={KCI}?we#^3j(2w86$|*}@bmQGXVI*JEGxSg=U#YT*j&Bqf7hI+SD+~H zq)vc<$BYcITu7O@#v$u!ta63x7~z^oFfUm8^inRY5u{yAGUUyXVr4hP6UL(%)d*p2 zJS7bzulvEKDU?<>Bh|k=8(#3O`jn%kpA1#bfYEQm$-CIeLj(A{2b>5L)$RPrvNl&$0ZceZO@s&EQx)Z9r9PE(e)q8UF0;N&{HmftS%JwHBsT0 zLVB-HmGOKn)%obWY&G4Ycmzy)_lBXCj<+)AAAZ_EoS06!d;4dWzcoI86Z+y$Whr{p zJzWk8z6I|bi(gjOE!9M)$Q>U*4fSw$h295s$YMX{h6v)eQ}*GAsKoNL#|4gP8?3I< z`fS;G?oy)F=rv*DU05aDXn0WVGK|PlkU=`kpxNNQ$Ho=G3IF+-#*?|zens|YrO)^a0RUffuA8;o<5O3APAzc_vo zpr~OZ0ZaP$iAgPVGyKc*r=y#GJSHyV3lOpJnr$}x1GqDJ3Q#Q*8}#7<5PDOq#n4AO z@d>wjxNTMXdDB(e9R-5j+M#Fwx)*jn@`_H`g*%|7`@2pIis;Z7#<|>K|0mq6O*VTn zk_(`w!Lx6R6wx$|xP%2=m!QT(Awt(`9>2(N6x3bT{~TNq@i#64IS6{y3(8bS!T#|J z^v+J=;YgIWss3gFKbwJs0P21_!!NggoaZu`XF&%w>7zEOSH04RpmA>6fpuo(str&? zwj$T&Dx|7^cl^Vge})LzxE2Ry*hB2@6s<~KRBe1L*Q&X`+s{qGM)(J1TJmPEYO^Ty zf@F5Eg;B%m@QJidzF1nZkZUKpdd;vTeKZZab=tgo`>1>Udz>1+zuWlNd~Q*Q!{z;J ziQ8ZLA&dcI${00)b^|1C1p$U86!-txIT`8^z^&;O_a97pbY4eMQNDL_5&VikH1)?t z{9EzKIBIXm6V=MA3RPq` zi&oGm`4&%>{mtIw@p=OH0ev8NH)JH`|Hg&%zLfb!jcw6sA94Fwf+A?gxM3ZM*{kMG zq<}WFa9*E&2Cy6%xPDA*d^!}K_nEF@BH8_Ddzfss)mi(9=$@0M?(oWi&UHwNPPjS* zL5voA_MVrafBbG8sb%2}7!<;mgP(&@`qeJMR4K!7YcpzsO7QHfW!46sX82(k)4VjN zDjWI4a(SK(jE+UAXLy7yaZEs@til;DM4Zl1_d4WAT;l4ew^e>sOJu__uM+Wv^3sS3u(zbW1!c(2ck>H*OkGhD8#tzz5A6$oD$i}}Z z({WXp8CSINRClsr)Gu@jMZ#s=>Zg3Dt5}3#y*e5z`PBwWr|%3}fZ%=G)s9oI77C}| zYXI&pFG1=fsbNFx`FT5nPJ}+_+gy&f~D073iA;UhKuHdKtPDy-mwIm76Ir zp>SmcZ%G|8_4tA*u*PAQ66vO$5DP@6%Si*Y$W$0S0I`n<#kcRUn%+0Xb}2Pzkv)=L z>^*(q5x^X_19qs3w^tE`Sv`2bXq9HdqFN@;f45}=ywgFp zMn_$uI9gGi|eJsJ!(!kf- zVP`D;KfBi)3>A}+2uv4!{gM$-c}lFcW&u(8nlS4o+6!ahDx%WUbLlD0o-52BIrfmo zRBYZP;RX-_s>Th-XFp`D@(0TCJ41^rd}R!vOJ*d4#&YR^6>6~`C_=Goj@(ozQWgP0 zDC|%J(sIAfYob2Ntk>jSKsKUu7*(U5kacssn{2_vr$w-e+4{ZGnu=5N9lXk2*DHzW}Ta@B#5WKx8pw!Z37 z7~3R!5&q2Jdr{%#dQ>mzKjE*9YyDKi_RncEx{7bmibJD~-#|CTQ9}gL=noH?d*^hX z@6Jy?C2xZgsuz00YVR#wI1zIVMMy`Aq20hq#@gB7h_D7RV-m3gj|t)M*w;U^)062T zVaM`V365Ha{e}a{kYw77WE8-_5ZV!S=_uaoZ8|As{O|gM8sCr!$~e3Dsi@0!S5u{H zxF~?jm`VyzY>DmKyY4xc$cvre8HGcf_~%wMuQ8p2;6d9(t36rc9GEOiQJnkYoBz6| zEHbS3o_7X|Mkl1b?hU`@BGU5>ksQHkx!j3e5T(Uz*7hdXVTvB`vc?TlXa>rc$Y&R{Yb)>;`MAtArOp0-nPVpzpJT(~R!a=|>qC zIG%qqUn(tYx6Q~TK3Fgmr^;4@QW;^uIRs@M`f1?CSvuRBDI^q6} zpF~8(7KL1`(^pH~pKw4DH)Z(Z=|S%t+j32jhv^5is&E;P#dZjKY_A8z&@D+fvL=Au zTu`O|=?9BGOUP-`Xwlvhrjj2itzlxsB5?-5_~0=vY`QFvxw1!x zJa3Vx!5c)=pji)4j`(}G{3Rc|apT^aE^)U?;LQ+~DD3zcK}`pcB7>qGA2!g{E9-cj z9N6R4e$~&Hd8N3LBHJo7n02(O7x1=W_7x^nO5bXr2M2pz_V{_=zzdSs9Sm$sR{>jY zP0=pEM-0*K4y=Y`H7$-=qcfZ^+i2}rbl6F7IjhYzA~}4JCG2qVHvB$1Nb^Zs$(D4n zfO|e=@!X4Qc05qWvDo|CPwt(voD-;V0e<}0H=U(TSLkvNa(v3dJalN_#AP`Z1Sn7c zLJprC6WLZ&LU_b?0!s%~CYl}k_2BEpI}QXQiZxy^PorF4_js9;r8eRvnIZBHBxdZ! znqij}9Zh#aU_-cfQx``2hkKqOE3sQFUFHja!pkl5X)4OGZNdp~g7Vg1V5iE`h{ZtK zEu+L}-a7m{x@`tHtcf$-c^yTGV}88!)Zu6dwD5>yPZS?j9d{WKDc7V}0F+Z$40o|p zkGaLzA{XP)w~?CfPs#Gmzi+|wp`?#Cc8E3 zTLZ)lfoHxR8-9aZvII^lKSTG=p z#CZQcYkYi3HVdFp5Ar1SLS|7(DO-*)Ar?C~^dFmQ@knNn=Ez=l(skAkIDrmP{nm6W zUF(u-fH*>@_A5bxtu~cBr|9(A-9<%v8&CiAm^xuVDC#i$-#^Dy3En?KuSkMH-&eY} zVT|^SP@R;}alE0R|Jy^}2*!pMgw?(;D5aWrY9LXK%6%=-zrRVJ3H1<@R6|NVjGAOj zkaBE+U=|n`eiL=mo0>zfwjbYMlX*DIGnuqGATGb5GBz>1-z=!!l9yiy*c{7y%f$zo zMDS5~fbmHtIG?Psl(DVx^>*&o;P3C>IbmVoed^gNa(wg~h2k_vK9wE-@_p1~h8>Ps zPM58rjjt|4@a2QFYLNgHgjQLbe^W*{EFcA3c zr4CxLsUd9|zx7*qn&6BR@^eaj8%@t5J9Q`RG)Hho)z}R|pa`HB|e_o}!~(2>{2iv5~)w zRWkvZCtJra1|!8*Kk&X=89LOJSgn7 zeKG}+N_nE9b~@JsL?78r?d8ej*Km4MXe_mHie+1F4GHHs(O-tuCAz$m*txT;bzCmf z84w6{Q3@s+TF-{HXU>Y@2;)M2E)JsxNV)xZisKh68N2jh{Mh#dyJRjBCi5Iiop-C_ z=yQb+)Z9Z=vl>c*3oh3vy3eUyb@qVP^~Sc51Tiki1gA(Mt}x(STX%_~;MrP70m0W0 z%L2Y&k7sjK1l-?fS32Ouk&g{NrF}oqlw}7d>zh&wVmB|~5Dsnm8T9sY-3T{Jb|N{S zT{GoK+e>(ne&nkQ{ozqWIx}}{=k*amT;ov#uS}+z@}wBH+}}SQrMpf-GN%|&m6gEh z4Npjeq2VR0qE&b$@sa%DVYg|C%;n&V^mlzo%4}b?cDwfjKt8lf^`KQhy@ipXR!YkFezQ?y0?8S zTAdZBfBt_~hw`hU&Ju_@aw({qtO6GQneyRW(cZ+6ypR#)l!b6i&oRDpO70@?g27n#%W zz+n?7^yrQh$>AtGj)>LX$+rR5G?!JPHhq?K5Wgpk(rlq^%O@GEb($|JVY{b@IGqxTWMX9NwlQ<7a?9SE2 zP;D$Dm5783D7?Y1o}^SzTF8v1+6xNKi%S6G<<;6Il{PvQm)oM4LCn06x|1?Y_$+D_ zZe_57yFMUkGKncXR>)L3io^c;4%ACogM)1s=`M{>e!XylZD@D26H(O7XwNN%abUyu zM<4BcDQXHcizoQmk<%9Evi(_lA6u+Br@nZs@NY;Mlb96BTKCi_h5$=cdEl>n=wN-U%ZH`I=8+Qtt zqVb8*o2W*p$xA1NPzh8{QbhAo=2(2mvyQ{} zZdcScK_=WVEb-)nMU!z{fh$wLnW-ok`G5Wx#51ePuf%96G8=)7Dbx%^4c-VYXl<3` z(IQ3l?c#~eDSE#z;59}Y>iv8+R_0vdl*9=1#dgLLtwKjkSjWf@emB72>^wt^&4Unt zdP=Yhvb*L*SB>*D+=_o2d=A`o9|kzmuTe)d-4+j6xd<tU6)~IodN(i#)Du6LX3z3OBDGksOxR^{g*od4IZT*~~T0-idm>6o+e{E-;S?S%H z49XEe{`!7fNr79TN<<1%LK#q#OOYr>G>iu%Lq}^}$VGOcdVuehXil?kB>ojA!mdRD zNLKzD6Sc*mQ#^*B@v-P&Z&He-M1~R&Wv3g;s0P2T&jz61v()p z>1sull?RssQsT|Tv~BLTQniLS&?nr z8%(m4JSxu6OXF@8)w&?CFQB}}l*DtUF>!fD+8iu|K8gIb8Dr%_^h~KWf^-mK0U(3E z9~Uk0KYwYCE@0e0TV7kk?Nb8J0(K1sQurF6B{oxJ^$H%kEt3W5 zm?0gr%z;K;7-XHCd6&0-Goheee9?axSyt%eV)c}^tfC;#8Gg`WAHYix*WOVIP3ik| zU!y#VJz2rj>hRl`%gs=jkb2Y=&Lh@<<+j{?zk^dRL|(10XTuZ)3%Qx*9gzTSW@WRs z0I3%oiGOhv#7%g}T)a|ojl+=tiQ_Y=^R+h_5mVDh45%{fETeh>@-5NFy?3$9?9b)oTANG>| z11t#?_H~0g0t$j>rgWzIX`*ovn-~N&5Dh~>FInJ&2p=)-dMY|Gi!?Op$}&RU{*gk@ zp{A79iR^cV=2ERLd+yThNp9e@x*jJ+LDqT+AvScP;!@XjGSWa`QM& z{=SAsZjYAN_z_NP2%&K zx!<;~tzd5&rjWDW2Hn5g7=3T`_Kr0jO-_s5<4zs9OVJ>X>)XTsX%Q_ICji*j?pRz^ z;EyBpV>rB^_9?cvL5%iH929AV+0ghH#@3wJPv-G^{~Lf&->&Xrq#ScPgDGpoC1xz` zBy;2BF-DHei;qSzJ}kSTi=W*5!ED;RNWTt>S4AW8GWyD_g%#p4RKWT@DZt$N2usim zb^9OB@<-Ue$93;WFyVS#Mt^y-UWL|o1D}-j$1fLkq)BBX7EEMSLu zv%SLn6&QQWaANFYo0ImhtcZUdJulck1CmY~gMa}&<`dRLq0TB7`?qtp2qV_oH6y(E1ehZ{NItBnmpSF zud`#v2U%cUg6-2ox85595)-8d_Y1nn!@X*t)+LfgA0 z=U-ykT8NNDDU4!Hjd~voE3(NZn9vL2;IS;czG22w^`Bq@3 zxf2*A>Br_l<%Qot{DPXI(;y)fuoudE`+D&Kq$0QY+oq0)dScP+*qAn4jrV##kTL}` zSI^mAk^UE^^H&ns;2;;mYjc6dXB_|&6kV5_x+8QD7uZm=2x#c#!rbnm-RK+v{_9t3 zjh0!6t{c1*wFvp+H@ZrZOa78XEE#23F(jXm!L5OjP$YqA=jRb_qk$qIan2z5r1pcr zIMw{(ws}E~@VwW9`ebbC6ZNF)hnOdjLth(K=z$ynGiF8~e@z6wQw`aD{ywR_Ci;** zR1W~Q{(_oxIQs9{tUJi)R`SX;Tl{pJEOHbKWXS2@ci6{OH_YPQJ?}TDtObFzMTOcD z1Hx&@X~*EUbq9z~qQlr)>u(I)k_5yzk)bnzj=}mz%d7~VINJ+)Mue7qP6LwX7ye0x zlAw8UJmjIcU57^IfM|RxS!0#0=4r6hZ2CQO4#%imAAggp!ersuhmwsH*z!vEQP*ZA z%!X?sQ$umozLnU+^CwP|C9>QQv0*G!+5?;De*+JgPKRVdKch%eb zhhM$>?wc$Br96gE@cAE^_=)Bp_&VUf_SHyiYV1GBZW|-ld_m|BwZu%;gQbS>2s>lr zVON3wdbsYTB~S}k;=E<15BIazikkZ-K-G2|hpfJk;ry0tL z`o;rWev!vT<2(l0)4#{=@cP?JEPe@ei@>z1^AaqM!L6Z1B2(wyfEls(tcj%b9XLr) z^7E&>&u*Y36>3LuqkEUh0w@fN!Ylm2tm+b9j8g!3BJH&1Fh|#KBI$*Nb840@k$i_8 zh+Ycafo-qzlb~>eca38w!?x#UeMZPDn5Pz1h@UgsXj`ajnkO=AK{gytO7**x&*QGiG>i$r0REQvUbnT={27rsA_nF@@APXsfQ}nVfJY<$90UEim}?o^Xqn_9XfW|w%}x% zbz=596hYPG-Q0YrWM_%#iC@MX;HL+L+R`fY=wv-{UwV!sIF4+FJSSM>L{0 z#-Lm;c_1?~X8-qDYH@q`K;yOEGaS1e1^&N)iCmpLJv<-w##oN>(}o*|vCxS<_V1fU zJ{INL*`$#)mLSk-QCgz0e^iD3f>2;L z(p;v(#Wh45EtyM+%BW71R%REW1tdf)S>WgsJBf(L?oOkLUE83#tAcb*Ai2hU`TA|t zTVa6(|HNf-BZvZAW3of&@Gh=j4 zKLEOB*dNMUk05~IIeOxwOo4AbDlf`Bp4AjVY`H&%GVM=S4sf3$|=(FGg&Kze}F8Dt3 zk)#0PZ4Km8H4jj5$Q@Sv*aYMgIG&EU(lRbG0F8T(HTK6swYMb3iyA5X@dvY|zw?cQ zR1NYwafY+`M9!O|1(gQw(Aau~TjJCUswq)js=c3{ID_c=AM0VsuBy>h&!z%vJ>L%i zXQeyp2n$G28u#gQ50-eZUw(j2pc%{i()UO3q}?}D&IYW+PcJq5o4?gAkVDQ_Y}D9x zZ{&LD@$AiikqEJfpkXy24cfM4OZ|{s-uxJZm7A>-NkKPV7baJuc0}GD8Kpx!rHBNe zz&9r%65GCrwNZnrQA`wBiy(`Fx6#~ws4uzf--I_l%(*)w}r(^}_ z4v+#~*23mcnQr#>=HbEPeovlBn7j+NK-BkQz1G7-lFv>L(2T<*p!grT1 z!SIc0$7Da8v`t|rTr!Y~eV&z=8WBu_M>R(*|IjI*fu~0McM)R}a4%X!9ic+k8(sA5HEvy4TNlEn!*XUnj8Z>hZ5vpkM1H#8ev$_e_ ztlORN{=PLid=4F*Gv%^hoU29^`aGK>@au?Y>=&i{dH1MbT?~S{g+S@x9~xSgekfDk ze&FHDc8j}F7;V+vZ2Q1r2J%&O5z3=6M?Tb7*^ze1TS9n#X-UFCoTdArM{}o|xQc&2 zqeKMo>(OSJ-hw(}L!?KbKWt>D@a_hxbX-3mGXap2^WF9;zOph5)U1;>>WP9OxqTWj zK-(2C-8evbE3;1o{ho@vyL8dH^Jz&;PfuwXPZZh)iPC=|w1~ca?RYQk|2tKJy`#0b zy>ipyHFdEg%uMQqM}b4Js~WfOPlH)8fPhf@OcBqE=C>A$Eh# zjU7YS`RNUm|G~qn_c48HV1mA69dDI zP$HUP=m9*+FURgyx(UFIG%?73#xYm&CY}aXJ3=P4l<$5~_u`6j>o2+8Ek$&g$Ox^W z+a8vj(T6rq1?Tl9f9HCJzjXtTDg{;m=$=FZ72R8^O4V^@QcJ^22%MrmxI;=eN~leO z=zVc>4)$V<6A#e>&_-$0ibIzpXqr zJRT!)f?5XnB7d;0Hyu;tUHAL0FgX9gPWWU%@imeDM8kTXGKgZ}J`yLbmLk*@ zo8A-6|7_TM&&&u0uqhVLi#gu#oczTBL(6{do)wiBwkMwQV}iOXHdL|@m2k*K%%i=c zay_Cv6uSJG;z?YM3Q9rJZQFB_Jat`o=I!jy-Dc&am^Fmpt z`y6yR7(+|u6n885*q{P)NS#$%9)CXo3Ce#x^P}cFecV?0mqa1C1;#x~GrI!>=~HC- zA9it0*~kTSnQ4uMHxLgr0{+Pe^CrJaphub3EJ}+?VHBkHxTxuKQ!BY$qII|HOre|Y z4j10UpM06^0t7u<*_;I zc{mia2=10!$l=;A>%M%g5a2Ba7wi9>n{4;rfPWSy`Qd0mDQj( z!!c(a87()+3b{~prN0hM+CY9&EykS8WD>GckJ-hyo;MInXG9%evP(-{^TJXxgB04HJ((ZLRMhRgu(VxJda=Qd(X? zzL>jCtslvU{gqjzSzIasTwTzWl<{klFn>DXtnv0Egl63U_xm|k0OEUDIBbb1LF`9} z37+1wf9M*n+NyS#g%*>s@zPmE0wPB)tRB8_p6-OTp)_l=O>N_UwgPDoNT2z>nTeqY zPqY%J%?X*ak~U-)nJNwBw12N3ok1ae-PnM|%OS zWeOyG1{9h1owBR7ZYYijFn|1}GPSYnm?myP=|e_lhx=WecVZSx8+DnEP!YC&$j!!} z7w$g?=KazIx4Wr591-HTN=_w?c?rJa zJhLTJ_|>^HbE|h3b75*}f4it&#R{qax+od;gWN08>BorUeSSneU)%T4g>h#K43Iix z0B2Xq;?MWs%&Sz{1ye6p|56QBJ-$@+8UEq*cqU`-b4!ZZ53k^N)M~{23bvQg8o+4f ze&YW4&*OcGBaCR^J(Y(GTBde9#jDEw17azn)-)+qojkNQw=c_tRBk_H`~=_?KPGtK z2$hQ9-{E7TjUs9ZoF3!P`Nt|^@?*CzmPd4w-v-K^1t-&Vh4`z74rkihu5t5(Mz?+F`jv4RJkz0F zYU)3+)I_0$Vw_#!33FGQ2mYW8;g^*V<=$N=1z8cw)a@?`!U7z4m?rKF0q{}>K;6Yl zW~@l&NdN?%(WPk{c(#BoUKFQsjQGDlTH21)bZhh(NEcmOQJ)mju=ieY;79hv$ zqOZg4%(9J4$cA*1AZO~XhI~{%Z!bJQl7aHugKnvQsU^cIkKH|AEsvF9-J^0~2IiHZ#X9)!6HhDhW2sf~fn2&Ns;&Z?%u+{C9P=+FP zh4cWn9;3id1=lREp->(exuW)m{FGun{=-Ma`gA<6Zl^I*3z49A$>+ocvi~*OKF(xD z9JZhzIE0ln@k%1n37weXmpJ1a1)Xndf79Kwag&A|&Caa=`n+1$F?b_}(3Zz4O-Y=9 zyOd^?xHbD)2FE+D41~n6eLRI*$T-vYe}IKk5qx&X?zTu2jZt7#&&+NLPuYcz*Jn4L zy{_^tARMBcKtz0}xK_b>CvPHrAY}zr<01?WVEO~=oob=6mT}|llkO4} z1_&B1qq)&gYIH$wx#WN4V}P>G^$;sE$rQ+i)3X=~BH%Rq)f&u~E!VcA8YmrnAh^T@ z*lVVh!Av?V7|Ik?^|JP{SVW~}UEQX|lr`}5+cYh#J@9xlFA(eL|N0I}K8rIy0~Rfx zV!Co~4&<>mlx{;r1JY+S7TxBOLz*R&G|#E8T@|WrT&qk^Wx%=9D#fwcr=Z;o+mTcb z*CKtdhnJ{Oas9Ip<%?aGcwuV2_cB_qAw5)h7@n)Cdt@u%wgD{=G6_SnJ#evvk5J9| z^eYlD^I&x35O6Hw)cB*$wr>jY0OeI+tBkLpLkf$i%Jf)l>JC4=O?`?sFFo2*S?g86 z%`mlG*@aFAehBIrDOtqESnb?!{Ty%)COheISyJxEGRA*^-@*fBL-KgvcNP=ZY1YrY zK6_|+x)7aLoAuGQa})IN_wp2`p}$R{ad{t*+)(Q%(hmCQlY53ftaK+0$OQst5o5#2 zT$qtwsBP30;aErJno1A{Ztm+CY)@>wNSmANiSGg*zx48 zJ+VmuQINDU&2Gf%Lc_D9WJv%nZ0D3xQ8)sFqCpw6ZensM?xHJS^ zVhf*N*%r?xLjr9fd5V*pW0kfKh}W)=%uI%J9PD9sTWhtPsBw=bPId{q0OeZwa?n>5 zVCqASy{@r^Hf@v4DDORZ3X<)WPw%SI`Khfgz$QH5*~U;I8t{!u*amkF<3I?H8+P9af(&~9=%x5-Z^Jy!6B~_$y#Q>dH$6&-QWoq3D82S!H3;Y@yey@{0sQJSWJ~6kZ(IL=j zEm5Rr6PL+w3;@l`II18u<7vSC@xe}%n>9_^m6aw!(ij``YMBdA#^`h<|G zM%|_XPck^g=DuT)js{g%)4dQJwH?_hP=qs->O z1hsqrYDKY+4uOKG1XP?k5^Cy${xk}+js~+@#{|AXfGN|00?K8`rZf8?uzI^O1NB4D zD{@R;wR_tIAIaKMn_|>LNx?jkqKPnIQT>Fose{SkDZhP<8ojS5b@6F1`T7w-=W{dr z%CJ^|V{^ru6pN;d;e2oEnoWUKiMojWF^d;OtP0!Cpy5-^RQ<4_O^P0NCn3U4*^a0* z+uuWResF{0jc@2pmJK`@$rZXVCm-jf2kraDrN_F*hPXYNu^TkopE9wF1}SF(Ukh=a zT~wspgk|?nTK?zRuS`J`d6!St%0)ZC8rz$|= zxbK6qqg34K-}`7&&F7i}?rhZ6bS{X>j`E$>))oefxY58`SzEdiMXeRU%a#jHDmUoP z;H(SH0v)(0xQjEje;@Rc(dijaJQMj0!VojT0%hN}1XZZD6iwV6*x=YD`m)Obfb>R)`T$JpGu z5?2+A+ge)YArnvEi;H}m4^%dBHefs4tZPQe%oRGMjq#tQoY29F6+vc5Ci`a^ZOMC6 zv+LO&qGJC!Z#qoeGs3atH7lPUVf2UfF>}+O)gUZ*7E>E7kb7ux{3SL@9y3=T!hV z>I{`h?APq#o2_tUZxB#I8bQV8*I)fZcKEP`Y)zcAN;d65^tIUQ*fntO>mQ5$49c&-StQABN1@{iw;nZ zGC9@ydQtWr&n@S(qsHwRlgS|vz_yHaZfLg&j{lZuuj;-y!`$;$?Ri#RaRyoBtWgFx z$E`suMQdM*wq2v-)QabAG3_&%O4}YxP+B+C7)*Ad4 zG7!AA+=IZ;bYq=>G$1eQ^TU}dc9}HOEH+-cr3AJkdN?lT|Lp?KE_Vo6c_taR4*t@i zlT^@Dd~Oo-lFT4C6Pk{Jl18Iwbq2`-C=N8}3T-7{KZ039;Q%eb<;;pm3P=LK*1 zZL(?4w@eJ+gycek?Sh~F0oj@cF+4mdu;Y2d-uHw#yG5s_Y4P>u;%+MxHd>Hg9wZ{2 zcE?2$<-auy&Xf|=B{h6IPv1@g-a2b$TjDs{Ng%?qQG@J!ePFer)46vr8gmqVQl40{ zohVdE1nIc6jJ7K*ee^D6X1UIFlb4B0E8&hpP3sbJp%1lWRQLTIj@45ms!tENCl2R) zjr7kM;(MCQwk+3FbljoUmC!26PWTR)I#JKFOrdk(L>a{P3p0{v!DKS?eOLaYO76oe z`}u}}4ij8`N)`#_vvX&<*I_sqYPhuAUdg=T-_2ToLd6=0;{JRG<#HW;XKL8wOwl|E z)|`|GknTqA{6G{QD%MzG3RekIFS}$}!apB0Fu@xTqW3=W5LF$AQ*6=JCfDorL#U#J zKnA*mjBfaS1`Woe3P|}S&(|&}V#nDe*nDjBOcA$He?S_MhqVeAJlDp#rP;?jIG<`? zx-OG)5SZ17Mms6n=)rew8qD)=?YeT30CHd^x6MP(CSyCD5Am&s{X$zQcYtkxD~-;Q z&w6%xZ6}RoIfv)7!LxxF0XfWV4gEClN5$e&O6GlH2$ZNxz8v}|vfrHSI+p*P76Z;~ zg*7JeqsDyK^k0oC&eFgRBJyDi_ZH+ILzd$M2aW3=U1BvW0HPbC%T-=z8}zjm9_zFl zgv})~9n1yqv(aU3QU4g98>yi5${;R5tj4a%g8bHEX3Li(VxZZeyj&P6{T~p6Yk(aV zq~GHmgYmA1d8OlFuAuGsNMP1a;VPsdoH(hF0P4(E4`v(%LFEM?OvE~J-d_G9T%sIf z)mQ0{UP)s64OKG*8S;k-je9c{Rr4&d^QFvS(*r>}=md=5dP0}{YRUjN_$HhdX%*4C za(VzW&dOukCaOrgLuoEIW61(phz=*LOGj<}MQK5;c_(l)ifT3=Ty6$vAH12e=%^GO zdW!eS#8DY8&fq##irr2;Ltrfizt*L=I4&{#EuarJSc4dN7q1A~X=-&l09Asb5|MB8 zzS~kTD}4W`4N7gfcB6HkouHez(UYzMKMYCGPy`b)={Eu6jlt*fu5Nr*vE8(bV0Twn zNv|!~DJ?fJ^u~9EH6XPMZ#&k3`!RF0gdF2d6-#s`6uo|4kd9GW$c+b(vbF!YOjbC+ zF62joEbu31RY1WEZnY6l_KO5Cb-!W&f;c8(b4&iC7H@!HFnD9)m;|_Ms71|h06wIT z;HU;OgQUbAelDxv zknKbUY48@RxQ^^cFKGyt^{Cw)C?ao_AI_pun`7ON{8(%_tvhB-h_x;Tvc0~W)WU!c zr%XA9kD$8@T;O2*>VrYw>vR<;eM%rkPH(qNT*F&&KC~QGb5w?EYW^AwSRMQYASwrL zIrZVn!G@tz7?(Xr|IBs}3OGfMZt|#tZli(Q;F4BR4P#n*UL8g zltXV)zh<5d_&i;lFFA3{Q*`dJ+qc^pB6kxjtRCXn*A0Wc+uRL*F1O`;I}Z-puou>7 z0+o)R0(bvtTFSkz*>G!XZAX>Zh+wPb$mW?Tbfsx|?VJ^eQq>c^*KV~aLvE7j%y)m% zYV^)}`7_8`iC6JY2WEb715E6gYwzxt3MdU$u--W>#o<5Nto3a}G4IZS#BiuJC#6nV zDvCW=Xz5G?;3zeWwfM}a?QD04x^)qoywyg8_-^pTk=D}o{V;}@6_iqLPS`6X_T#>F zSa;n4a0W9i!Gyj7VCeddR}|rjX0z?MIQ5eV+`Wa51G?IGi0%xlZidel>sd$GS!po{i!?UuM5tK0FW!dK*C9QN;u^zd&vzzFpNlxY zu(_CpnA(6M4htj6yM>L`j1KUi&r`x7P4YZf#to9^bB+S9*DV$aUo{f_XxZC!i>JMS zQ4zk-#;p-dTfw5q5lHCg*I#ILjb(4{cK$(F1N~uQ#l1zk4W_IveJ#8ob@RWEIC=tS zgCBRl5&b~cN~E4w)2u8ha_Gv=km>lxY03@ z61ez3IT>~DwF-YoX=uff;2!Yn5H)?&KkAhn;T&tqhrjJ`OK90NK~Qtk(NA(icjF)T zP7~_-m)L|1YIarzvH`YOCeNG(@t|quukLRuLjz{D5qa4mwc=R^O-;q!nxg>cwXy1}6xF4i6tYzBt8M}$y(RxmKI>l^=JPllJ$h>h7 zfjyWF@QT!x`t_R-N@SSFR}WlWt8{=DDZt=)btCOfDf}$Wusc&uwV`B_hKQP}gcEw9 z%u-fJM-*9Kj62Cnj2Q{BFVV^%Y%HS_>vtJi|G^P%2bb5mB;j|bidLT+yYxT>Qn!oc z=wdM4@>;#p2{xIzRke4td@JMU*`r(PC#B)2kf z?e_zN0Q=o%*bS!_@^aBY4iXe-_IP#+au!Qn;tDQSjG}c(kKa>XW#PwkrC@#@sIO0^|BS^$oAt0ysQ|ps9GSDKJ zT{Tg-aM(*;mefI7yhF4mi^kYmkyXexT7DF)3rGTmeWrEJYO4$7 z^6RqC#mFE&Z}$RtqnZy)P77-LDn%8(+Xb)uj<*&JKepB9S;CumQw7!4TfY~}?DN1l z6FQL5!7^nGxln^j;02%k8Sm0(Krxn)5nlN9W7E7GSvi7kLMJe)j+$0vbV(vhgpSsO zn^$au$^S}N7ST4T0(qcs=C;F*QzoW4G9uV8t1Pmm)qD0i=UK-RxF<2c^s)GZN$Zu@kuM9-wXo>)y4 z2G=dhkJOo_(?3oxMfIK^s&N|{m0q=qq<(O) zyRe0A!{zF+v_j1zBcs)3MN!J5ubZOf*J?xNbFbxGlnlfag)}+BOr*%7f?-_w?QT17 zoDm^k@k9j5*lsjiZp)q@G4uTq2sy8W;kYCb(a~E4Mrv-L5lqS>O{T)sa3Bx_3J!{? zm~0{mh}E`E2ClO~QZaeRJlDy^SobeCE<6h8>1R^VT2oji<|;xMEh1X&?Euuz7MdJd zvO;TYd7(X5&Va4FUkGH%XW4V$B~rrKPjVwo5GXI3scOmT0nr|NQAor_^^1-2<*0LP zU~6ok`nFXI412@I9dq2T?Gr{fcgr`wv;|{Klh0mUi}8KoDuM?B;F>;VO~A@yjXK{` zbu}eyJNn32TZPVAgtVptl{_;3OdRc9wI)wqIZ)YFNII3UXg-F!n{^06DgtAu zG-ov(Y2V)p5uAYx7CP=2v*Mzr$BW9uAq2}dvtoXrqC-6U27EX6vfml8);MDZS4JJd zpJ3S*n^GJkErFmZN0_AlQcl*j(d0_?*0vwSe*o^A;aH$oy@8X~MSY!Ox^%9f8Se!0 zEIWXqqh_ozo+&9=hx3<@oNF1W3l6-K@dGgNOXmGw9&#x+@sf>IR<*0v5k!WHp-%;# zi%uRhclG_WC4?GhDBum7up^8Fd+N4}n{Deqi+m|~%%n+rUUefyvK?}|Y(TsPOqAP#RMT4J&Rm`ZiBt&rim54x!>#7!zK?34 zsjcjmAClI9AfKe9;qE3$6D45(WL)+qfV1cUi!9hVx`qQ5hQIaX22O!WyJFApOJ(yj zBV4za3cF|N@W=h;-}Vk5!-@k0TP|j6b=!dT^d^PlkEHJ=-~OKS@d4Wc+H{^I*e)?| zaAk?O-@d~1^gkVj&E4WGy>V~1z+>^4WG@+4OcJ2O8i_2xtfGqH9lT5r>EH9OK7C_JmF^sdX^cy@5E3b zl?;mZd|^E$h4|pPbMkSM-fq2Z{ zH(Uw4de#5W$}N#=#-Eo4(?3@jGa&VcYd-8VzPcx@gUfHZ!gXNcP5j%(oX|D3WK%&M z+5+j`EWmYiqYF{hY!NAGN!+~iVGtUhS&|`VaeyKqf9nSVtz8K)f>t*yEA9+{Nu)o_ zZ8{k5MoKtsfMtc}rvFtB!4-TnHYVwNmE9CdcWgU8mjZt-DczAR$X z1sJf8l2(%gGhhWFk{Q^QU+<_~0x&P{`W@;R>YvPSebAvB_V4-63INw4lrl`^3B6vc zCY`k(FBQmJr-e87Nh?%r! z;GMIIi0s+6rv8mHhU*Nv=6)SG3_y24!kUs_y1qs=AL&Cnd?jxr#*^#GBfzy(Q47x& z{sHB`%+#}A2QQE*olW9JZhI!(o;g2fOSvqi*fNCeUC+*FG*#6BtXi?BXvnqZgvLe~ z>}r{x-vCGtX{v>1zA{F4V5k@nL(#vJ09H1}#kmL%&HJGk!?;cX^d9fyQ>%9NhdyiQ2Et)&!{Tth`|4P8mpwfBvx_2&#i+zFWNv zTC|P_wpP-g;jXSNA>2j0jHwbex+e+OC@rg!N;+@FWg6$kI}UOIi~`pjqUMswXza)p zJ96%Pt2IMQ8{Vt{LFIkL&wn0a>F8LL$TMIKCXLo5*!QvwS2p^jxiVIK7{2(Hoc$hM zDIJPG&Rd<3v$9KVtbFM-PBAmGpghp``?kGj$l|H~<(;TmI)_z8%~*dh{&!+NGKTht zqSMt*@U5zCRiL*y93HXGPmfQ%9Dww{Fg^Yt6O-7RDMLqia`5)INk(}{3V9vB$er&gE`BfIv`0M2GvAC?3uI;^T_0S{p$WaGT(^8Y-;ys zndDhS6zUpiiMghc`D}V#04c+J*$w8wXu@Upj}f&JOU--e>D5O%cYp>7JZ9^6Bk*t0 z7wh>@u}>bgLd6HXE$&H7EJ=winRKg}R*=rAequif2}I(2=Z`hGvtC>^-C345p<3}H zL#(1$LyZ~mL^*R743EV(nV7P6#tJ)vasuq4U<1VNM29McB`Pc6h17o^Bvj&u_$jKZ zaae$Z=Pw>IUtmUs~3iJ8eHu>QTt^)!>O3DwN>q;G;E@lpL(*@c1b*94H?lA<@ zerOLC08@gar`V~)kSulo8|HLZJ))_UPq`5iZzmqRi^)i?9=Bu2KpVqvRe)F&l%9e} zN`%G;mJvWL8K=ZtMbIGA1E5x( zvf=+e?Jd|*0bJlULKa@B_Y^?W3X0h1EP&h`{LvZqf&8SHwAvDzs685gvzBmSkAt%7 z&n{^B?kuSO3}*_Ny3&ZcU(s~pQGK9J9Jte9E0oIElxF;pDVuEY7~BL`~}$*CptbTlq><@@6s%}wF({SDfusZ+mMA|Ae;U0 zXL$$vSycBeI-tSz40wVx8YrS!)Q*f1uBRL{=#E(NVGqfg>WVqUk*IcA9al8rR7EZd z3?tE_1fTM|KxUvikJL#Bla`S=uz?38ySq?+)pYL*n72La?1@6sg*|3%K%N#5cNN)T z{pp9*|Jf~8HLXqm?!`p@x=7iof{G+~z({E+5uOJ+XB=T%1ad_^oFm*V!&&p= zQ+`9%ppquKzC9dpryCw}Eb14ciH4C>mz$h*BgG=Y=LB$u(!39%FsXx8bs?S80#rQa z8*zexHh*3ljjlIGA8xiI#$hUaO_%(Ij-6=5C)qSj*GqbSFgJh#to*{1py^X(2{EEe zl|U>U80KCZpQc+dis2BbOBG1E&imMJ6UqbMaB-0}wY(B(i`hKx&paK$7u@g*@9dOE z8RA4mZHPRh2b&Y36^shS=L5`kqB+CJ;uNxk%>x4Q9pFAuTRv>eS(ZkW^~wP zDE-VjqSq+ONGIK@>gup<7VgsBogpBUgBQWCl@)JvG%(lA8}H-i#W~hR6OJzTh91NM z{0`LCLab9@Vog9zh|ezaG{SEbQY9)RoX>7^t^0UMl__Xi9F%!#!|}tJs8N88Fu;(t z;zM-x1}QD1twsN_D*!X9&#}I-MvpnN7d&jNX6u}K7rIJc)MK9dF3SFJa-t7`PO4K| zaCfz{`r9VMy~=$n3Q)2?zn!SjU>mCe(asj0m)$q0!3bsG?WVk%^Ntk5 zj5f&;(U`bM9k6&bszL}Ntk$Q0HH4v`KAl1~u(b;q&|^i4E@08WzKcUi;aj_@+==eg=!ss79fJ-PP z5DBSf_-Gmvt`oS!42Z0%DbQ*t0Nj)}9W6A#70m8OD$c$id8RCwwfJpSqnGq;-ZDIg zX`0aWQ6-*ABK(n90G=EWG8;sWpflyZ)b)^BtiyLPZp8p0i9pYqD$%_I+J#TzdgB($ zd&yW{Cf!f!8o4RV1ubS!=4gwOx4M4 zUTZu<2v|#rTedI~1asB4JR!x?;La&fI*Z~}2a zoi*z44s4b@s|5W&;Eo6M`2yHwkjszXDemCd2%I$+B=nL&|q#a#@h_0nc z1Cg?`Dxm9tA(w7M37=gnigm_VbvpgY-`<<1N@V~06&W}Ob zM2Q5h;5j>#at0b}WyyHW-nY^rV2yp^y)lx&0?a4VDUWqTYO>-DhbHGBlN8fnlqj-U zhdlyJ>ocK-21O!#qVK;Uj#CK9 zRxa{FpVUv40dfT%*ElRS4;Bt98gG9&!sZrEEEqL3FgH-lx?X{$P6ujoV$b<}x98ED zB!kKz+h0BV>Ibxz^^cVa&k}ogcu-fy8c*hlq%7}};$E{YS`S5pd3ON_KKuBk1D^D= z>%%E-iy6h`+STLU%}P|gXc`5eDZ*a*w?5y_SGE#NSzRy*J!)pu=HG5!FJ>MXr()F zso%cg3PH7_)-fnGJP57pjBwE+g~&33$rk)9m|z9q%-<{ddgS1^QrMA({KBLYd#s8Y zr+_7RY3WD2#WXO(_RpHr$r1YH_By;5;Bo;di!6&}fMI{|bDgHB0hrh9yt~Pr3i7r&;-Efc+m}9n8FHWKL@h%nV`$z>G;iK z0^%~aR-kSMMRMNAdvxPx<GtdXwf;4+ zk@S)-z7mV&R3T$x=S5SR*6_;r9DuG*71-Yo5N}U~_~wLS7}3ItL_k>==m_M$G!oA} zEFX$e^kk~<+=*gdGP|C=pe-t~Vu9T0qL-7?*)9o4n=Z;hXq^i`>A0*ECIC?HX8tT~ z(sQBjA;J9=P`kgj*r9EfT@qipT#gM)`Rj_g;KI@JvG=wtF|R9Wf_V>sRSaSJaPa@b z&^gK=EOyWdH;a)wKU|6C9@HgEoGz1_dBF%$fhM9~MC-S2-e}1D`0{;uywt1-8=&&9 z0K|}X2V~^9w-`_`$fuziKZGD!e&2hCVgM;5F?lqm`G$+gRY%`MY^)>R3T={=hbq6- z=KX|@VB^jYJ7OOSSFlC^hsiEW05W@JH#gWh$m89s6#fje z^XUacspYF4Nsm4xm7J+gg;UaZHRi}1d4pL2fH_yj(fPnZfbIp-zTe{)1Rl3HBy07J z*ApTKKz+L}Phc;etxDPy0&zg~0sA5^RH+k(p!=Eg3mJBkkprfiL4_=GCZ*GN$LW*Y z5rZ0oDCgDTO)J@G5>6sHP*GO{aXnuV?*s$@hBL6HsBK^}2MP3q4#}yXXlCBcV&%V_N)~?Ve&b3Z+vVUS}l=P8DT7ai%G$3 zh|5f3n3;##sY}pmqf8gd<%}vrj|w_l#C!0;mnf(a5fZlh+3uU8(kl${jHjIPmXbo*+x;S>HI;BB zbjTP+v>vIt{-Hb-9-bMkvHWlRCm#W+hLg zymE0y4H#AKnM}MU{5gkem>K4cg+wI@#35!(V9dC+mWs4u)>;N`UP+GMP@P$TX1Kz! z1--bgJTtgS_th5_OvaqZ@|3fx;w`^)>z`9a3tF^G!38fylIlPBFD^OjdW7-c^m|2Q z7Q^10{25)HooeLJs(sgguv)vy3QS_{DJxBGYwyvi@a=qE_tL&(FfZ&F@KI)E#@=P* z;0_I>QuJj&^mfr85rm!-abo@AA_^k$e+1;%6tqqi#?^BBkkBSS=?7RMmv(N6^IQ^`7s)a$leA>XgYwVYg&BL&(ak^Y^A*foZ&RafG_e!|N)>dZb!+^8t zod{3bEstYF%)*jt;3TV3BBSCdY$1T3I8#7oV7;VLY0I%h0<}w~o)Uv(iEqmtzqNgn zr5+k1>g1vEznJi6wa1Ep7l2tW-u7Nn4^^845^{*ZJ*}c*>($V4Uq${h(UE7+YH}6I zBB=a5`yoQJ=~vpj^rP1Lvb^PJe_xLC-1&>bmDwXk2CrV~-noo0Jy(rOxo_5&!oBV% zgk8Tp=TFo5Xt;Hd0avK$c<&k0-2R2k=(N!F3ikaQpSWRXq=|ku1(Fqd;p0ei5Xv1j zMo7#yl&e1N9&A|g+C$25_z)2?5U!(5TeX_w>=ZLaqeApv{+A<4IV;}O@nZj6N*B~E znb;BXkJ7-QjtAr~@dqe{nNdqSXvettNK1N$M^JeC{ckhct^D42?Hh5Mgq86!gDk_s zJDcsWbs}FrctQKpa07rZBP+cwO%M78m{>^SsuOy2ZUDWZ@`(yppTP>gqpX?W08{N? zZqTf^Gr}#z9MBH8S5iiwQsqKoK=gmXO5d%L*?noby1+MZtBkr|Ne0qew|az`DN|4? zx+M!?9#-5R>J}!1=h}Ey_)+f*AFe7U)W}{m#jl^_%NEnl-t>DgySzNG%po7k?4$ax z*8*CmzbgeDgb1GKYV&TR(+C75Zzu|+r4VkL7XV2>w!eaUG^bm$tefTHYR`NG+T!qf zDd+_np!#3cG?+eb$kdcCA?Yk{rr^rhE||Gz`$|DSjUgyoAQ?CsTuy!5$fAEOs(I|! z9$b<0GR{qR4dexl>YPn6Qh4iauN&@EYAqPpz6+05OtL=X;>Q0rB=0F7Z+u0&)aK~b z8PjNf0~kCp;lAbm4S|&$?`nS+fIevzaAACXFj%JI)#Ud>5ACy-e4a}3@yB(TwnW?k zkRRljr4|!MP%FDtL5}uM1b3sE<4+|fmk@{8+YO8K;smuUbPJ4h@9owv!Rwy(udjN zaFm9bb1j(eN)Y3(h}Zppe^fleYywCGOS*0huQ)&L83m<8$bR>`Yu5kd5!7=pLjAqZ z0qjfwt3eK*iM?w(O`D+pE8Ei0ZZ;1;b1XZ?2V}nMJXsm_kmf*Q)C`BIJv3EU4hJ-;Jv93Uy0E1NOn9wQxr(Zx|Z>EIiTjg;d!LfjnG^*`8+kAD4U)(?5dJI0hC} zzk0+f+?0(glqsdAUSsbdcv#vPi}>omLbq^JN_saBcW*iSitqtE9vy(mnNt{4JfKvd zDQ=$docc)G0KSQHr4+18XcW)z<>>8FAt7FN=rm2z3_fguQvg%Ry*`nI%YZir*Izo5 zr|X=14t-kAF~te%Vjyh=3}1&L&fg-b1fFeTj6VWc^e?fO)JJxNTT3VG;-h7p$d-pq zaC7ZZ&ZDs`;eNi^S-TicAH6VQC0Xi!Z>TTs~|%4SUr7qJax9nRLXJnCuFBDOW&2| z^4@KA&*;kG<8x>eEktK_vb5ng8>$l z?F|;lOq@wT+W~j5$w$%X$0ufRIu>Eepj1XDNN<{YuSQjV;Y{bGQh=b2r!mUc8pZd0VbW#dt~fo z%dyJgNx;$GEW$u0VT}-#Pj=Xw9Db6uG9_iJaIBIe!5qoJ?=Q6^2)3qKY*%So z(vigqgt$IQcg%v20aD^op^UU(?6^FQ1NgbG8alLFOmh_ zXYj0xcYY-G)vyW^8tJzN=c5=qdb_2YwO*NKrEW6 z>re6kOOxHeAhmhTU#c`IIIDS@HrHMg5!Z>S%h1Y$-S?Gbm1g0FAi|)YIk26USBe*Q z@7uyI5GHXAA(snVBZXahL|k!T^cVAF^U1E^qlxPQHE<<)Wy~H68ClF2^fly~Jj|y2 z;^Oq(;PbCIyII!4SvJ0QbYo$v=6mq+^zWfeM~+f>Pz*)_3B9sof-o{P)Gd0lfMGIV6tfXR18%Phe%4KmK@&oT$HK1DEDx1&=*^|55 zpJOj93UN0$c16WU5%|vUa&_dZ>WX_4*(bq>d>w>o#&?&O)U=MphZst#z;bK6qL_WB z8pZIeD^3cqPTfLX&zG@IdqRUg4M@z=y#gGQ4q4gBmpe}F6r3Npt6N=a3Ou(Sr|E4t z6BwpJ6^gTm9y(pgubZtR2GPivQ)-G44>MKl_aN!l&4F88jq@8*B7*r>Hn74o z(oLa{BE?&NbAsHkfjUIS{nU8T{$P<6t#TS+^mv*53=07Utk5wE6VkcH=1>X5ri|Uu zW7{8nS8@rE6n@V|iXTd`6(U~EvbQ~k_E@C6aQ)R8mbKF#`#XU59e{&HUjn4p9nU3| zoD!RyrD>D_?vW^Vl0;U@x+PazOhNOf$~v9F5KERv24R8wUOV2!N!?@|DYNKoYKg$%&~*pNi*1d+oAKK5r7ac6TnV2YM;47k)cna> zFIXxLfF+ifL$&FEmBpu}i~i{=d5S9bHE2&-%1%dB_ol!|PT8!hj6Rodpbm?!o<|K2 zMZp3unx9=C*4zYvSPS5^o?O;TyDgcy%Fa>_okIFaf7j0M`U_rmaDCn$`y0DkKhGjx z$%g7@df?{N?uMzq9xHy{MCcsF3>A>LYJX}CP0&vi%Ouq2c5=>*i?1vgNt#F= zN!XCE7)T5c4uG00yn84O5e?)S#|ynOUur^S?-U(bG05C87h+g##Ca=x0(nyXl8Sgb zv==m-w6lfUin9}Br+k7n2U_P@KoGPMuDspm1yaeJfW@|BGFFDOma7_G1EtoOT1#%r zg2+a)R3402n*`Ff?gR&%jioF&@Ove@NHa;^KeL7IG(tn5^N|9hvLzT5pe@xDI@ zRf-WyMoY#IV`faKJhk7kA&ReqfdF{##Rck*qwNMh(ltFBlREs~2{(CF;y=G3Wt*sv zHd9dqsius?cH7a=9=eg)V&&y~dvRWlM2NL;G`bKp3*(l)=Sdox$r z%Xe_<%)>m6n9U8Z)O%3qvV);x>RB!_x?dCfBSs^v?E%+&IqfUQe6$=G*wv(7tNv0X z<`2mc(*7b@$DCuJw8Qj<<=9E!HAor{i0Cl4edrp-3BLhVU9enFd;_c*jUYH@B6>E% z=Q0}PVavZp#f`8L5)HMtIzZLlpSs4+RY4ntFR_UaU5er(+Vig>a4Y6?#0S0tSJTPmpgcHQnRHT_v&P2aylh z)7O1pbuVz!oEXsl@^_^yv|k&j*ZU$A3W5DeOzH-zg*R1Oh|9cLdg9g5jlgnLU+*)u zVBbT*jDRj1k|W(+%cQR-8&l+<;|P`}rnEDSRw$SzMEz36iar8qM9GzYG^`skEC2M& z;J~VtViR3jD_+mj^Q-rs{WbqLHW^pP+cW8D$R_C_M|1S+QNw_(62BZ8_&q#@%f$~H z@AXxb)wB9J|2<^%IU3^s+>jd)a45-qF*TCxgmKcM3QXo5SlOMvbj$;KIirC=RK* z4AdW_hJ^%orSB-CHe(?g>|kSP5hCC8QW8xCktbH5sHQ$smF4pmW$1rbrlqK0>BAE! ze9TsGnMF=Gh)zaTXlo1mItV@^tB#QeJs;(L%X$-@IAS>jG)9&3^BpRJ;x_ER zShty!9He}RQ0}7$-)k)al_=8dRh-Y%aMU-6@D@z&f~h_RiNuz6DTkykZi>_ll3P8I zn!LR?r#-IA!f^~;=xLSOu&KGalq0S`>QmakrfRm)KONPB zs=(@mznG6_yWylnVH4!`c&Ca*Xd{siL+Tr)%@UDZ{im|b6%gUG4%7e2HF36tj}oD# z_|J~8EfqF0Ipiuq5|mcg57%~BmjX4bDbL3JQQVj6!CZvz49#e-nP)L7A9Gc!;-~T? zXwz>Z65-c@!-&yRL}MS+`39_;?Lzh$A+Axae*tD{Wo?~pj0ddI7u-x-VIS=^xtz{eZZ&)ZR-LbXWH;`o5(HQl1ubE^^ zJ))x3aG$~{d}5eXF5fe+ifAE^ZhkT4daA@tE6`wbYZPA-P__1+5fo06rNoqIq0=<(Bh@r-Xz2| z(1R7l3AIMkJFfV&O+14igCe4fOI>>{iGNv&4lH+p)c6Sh?t(?YExJ-TC<@O(6 zcr*@UpAPE&IE7Fl3<_%rfTeG}Bfu%x6w)jS+1(KZ)2T5B_*_{JPu!L@+>T$yMLiFRmS{4;q>Qd^ungxwSYMS zNE;HQDEiqQP(ErGA~OI5)wQ{sM#ozlOm?V@Bxj5JjkvX>x=z{g5Egy|X93f0B-9oP zXBF+yMXMrINJ~`!K9vqJDkpD+Ai1mBjLZ{_%IaP^yzt-4Zox#AezP(6PXO2@M3^(( zE>b`uYl6}2g+JG&<0EwL*K@UYpwQjSkm+^<$$hFVhu!=)i4NXV?R6e~8?=0I#w>6i zAkt%z-a8YohyKOC7smtwIlsy*he2e6%+a)*-{vC;vb<8H19xPdfd)L5fHkKY^YUIC zFl0V(-^hYPXGw`pt#n5`Wybg+^>5!s%8CTaj%ebd(29P>x*RLut^K!#eieiZeFcY{ z`905xvIRcr)<5KNaC?^rC7N2kt6>2-#ZQ_pT61#@?!?>t9Sq&k0<%y0%A|}RF4{{V)Aob*5%?l%6A@CNqH=ZD41H#b+Fxh&&*^5$L9JoIMe%8Ge}_iN z;zDg9-tU>vMmMu%9%u(7O%*4WaUN%JDe_R#$pm*D>2}*HJQDpb*Bdx!Kb(Vw-}a;= z95T1DF7LZKSv#baZR()V{TZq869xP~g0=%eLY-H;dS<*5bF8$r*yd;b!;7}qHAQQ! z=(1~b7j2`)5G&m)pVogLm=M-V!n8t70DhL{C$tTR`m}VYdk;Ek23+#Z`e%B(LW_|aBG*auHUgPMo}D($!I%$odmv?&u{8K)n5fc0whYj=-u;E~`NgUb?oOam z;IH2k@~jxo5^rEe<91C=YGw#GF|II9jkv50=`<@gSZ;qKM~v?pDi1w+d;nPXht-=b zUyAB9eWo!YDnygpRU@6!feuD;4yqgI|Np9>RQc@8?rRtTH~{xGl;lzc0T2nG)fp;E z3WX9-expls0;E-SO?Qp$!ILq# z_ZfJ`(>5H$gmQGuAs&++&?3$y9p$g(8i;@!hFKKx?|tu~?4hM?^(EisVT+YciHd!m?W zcJ6abBsErPfK-RB7(qyRT7+IxY6e!ti8r1>8fyLq0?RLl3TSRe!yLvtMS=-Y)^s?8vRY!8DNuc3LHrb|1QPb+BF~h7z=$M*x#ZoCDp>-$5z5*gLEd z(#NMbmB2c1)G;XMNRP0z#vAu$=#dq$cUrm$VcjeT`bZJq(vBatLqTQJ<}dS&7yC*O=pL4FIR4mboByo)i^@ z9~PTVH}xy=?8;@;<+wn&KMsX9Cd@zvg#m5c>BGzZZZS*J+UJE@4D!vFqrUuiO7$8f z`D-Z2)UKkK&w-|C-4-ZFb^`>W3=&<3ZAd*g5CB;$GII7wu8q`2tK?Zy%$v>+ojp-& zciB08TBoF8!e{d9mMtvs7-Yk(ch>F1_4I}&q%NgQFo=&zg+qFp$z$ZrrZy3=>S=@W zm&#QTY^kV&RJxSnI0;h@i)~IHP2`O&w{LozD~m?9Jr~i>9LR*d++RpUvMti2AmiL` z^f~z~&p7LC(~3?8gh`ZYf8dv#*AU#ShYH&wQd87WFWXFXY3zv1CxP8~drU1EV}->K zJ{J`Z9x7bq@P^%bj4>7R*zDy0Z07Q7-K)sZUepbWj*2uh>?3-au$dTrBYD}~6n(yR zA(uQuW28a311h(^>gzb(C=uRJGeAn)xen=K2RJoYAE`?SQ)9~*`dxALypD@QDEJCL z#`CT?jVU7|hdM`0ToaPIW?aOFK!OqYn`jM0r{bIcLqDKM5`@WO?zDnuMLC~I0_0P^**C#sj549S-2FGbVY-6O@Leo8{L+|zS)>8_`I z3q1PV5gYL$La%%MF-tk*Y0ocup)xRP`O4T1e-84KQmXz1soV11q-xlLv#Z( zM&w$e_UR+>?+p95!H~I}Trr5$#Go(RW>KHr$3NGObwho6rRf}APuJK>;;N*x z2=`cVsmNa>@I79gf9>LxB&`x?!XfgRk%Mv3q3C2D#A{RQNoYi{I?rQEd4-00yp*Wi z^56QzCBBOGng{F>27v4j3_0$RcpqnX4lt;D81=W&7+_8s*dYygkuV-%TNr{>Ohn+( z!@y}&e%lL5&qf1etjVH@_NB)Fek`p~ngSS;y9E|Syhy!qQfBUM;wI^dgyRn7D1HQo z&7Zq@;pTWf_)9A^Z=5b(z

3XV;kHmDN!PX_BKG@* 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%0A{3OdVRO1+GU-OCTo{g(m% z3BaXl1X8?}RNn=X;;k5smfmg8K2j}gZk%Kxxylm5+h`Q{h_PIKJ$hU;z0uN2@6`{* zRG+R-%vTBkcjpx=*VJeQ#R#m3MY(>Py*sth9q?~N zX*Q-4xz5(tg$rM^4k{2`s;{0Ly(R!;iIo+`MQ1qr_x%o0^CK_-T^u6Y1dvfKSNKX* z(PfpVLS`9NdqppGg5K`6Gk#~s>7}#&cD-Km_K+R*mpM}7C4hR+!in9ajB`{mC%)6T6rzE5ZzMITREnwcYqSl1d%E$6lqKgP0)i$?^UI1)a{eVI#@Au)a_f zf-l=SHHO&E&w4-#hb?ScPn}-}4r*q+gqm6DYY^!^dRK zFBS~ULxjboU{N_R{gLWm9lEaUu~Ux^od*cX#4l^NOZRSoA&WJA%vVhuAlnFBH;I@* zlCuxJbN4|&yvL!^p0G-1%Bz=|!$lvde{FmcI!?B}j_u}m&n_R%it6nRdp=JCYuqEI zUX02CcwLuZtU$7yTbGhhbb3GMaBR#$xg@$ll;Fd~fHqy+A4@OS;#~-ZSiN*TOSMOO zuKg@LoABFBT|B1!y+iL-`eC%-urU8c4O7A2ZQ%qa;@~HnE^ty6V)YfLY&@C){-7l^ zJRv{MU-N~Ws1iM<`vaBLBKsm2?Ao!p=*zXLppiLc?hD+ad;OtqR+9wMPf{m14;gx!A;@+?>0#{ZA;8J$da4ey zs$$%7ZvZ-#Nr^&s3pKOLJknXT=-jP9JZvU^7j*ogV)C6^*>D;DyZ<01n7M<^xSYQb-!*qg|6MqDOTyK)Ifm zF-j^_)B^HR71Y8Rv&Hvmv@~S zm9t|lqtCLsU32uq;ib)Yd>cEEr3&`o18m@6ilIZ^A*W~3g!`ocu1?<~<7SZ+7O6XL zTEY_vRojoP8ZmNM>8RbYWqL1RH~KR3jLa4u5`9lyTpzICw&F#)R0CdJr7;u&s1?(! zMAMSw-xhdi>*o~pu@6q*0-PtF-h5%2Jg#NSYjDj8ec;OZ8@c>aThvT<_I( zVpa?oj874q!r_Subk_n5f*XCmdzu(P2ins!8{nNS)7RH$21(b0BbLv|_bbJ`NW}8E zKFbu)M4+NaFY@?P_`GhK_TUe;fDCb~nv|#T(N%i8=y-t*8KM(d1+9hOv zaNO>3f> 31); } +uint32_t splitmix32(uint32_t *state) { + uint32_t z = (*state += 0x9e3779b9); + z = (z ^ (z >> 15)) * 0x85ebca6b; + z = (z ^ (z >> 13)) * 0xc2b2ae3d; + return z ^ (z >> 16); +} + uint64_t makeseed(void) { static uint64_t s = 69; return splitmix64(&s) ^ SDL_GetPerformanceCounter(); diff --git a/src/random.h b/src/random.h index 38d522290d..a8b10998ee 100644 --- a/src/random.h +++ b/src/random.h @@ -28,6 +28,7 @@ typedef struct rng_val { } rng_val_t; uint64_t splitmix64(uint64_t *state) attr_nonnull(1); +uint32_t splitmix32(uint32_t *state) attr_nonnull(1); uint64_t makeseed(void); void rng_init(RandomState *rng, uint64_t seed) attr_nonnull(1); diff --git a/src/stages/stage1.c b/src/stages/stage1.c index 8fc5ba0fe0..0828454897 100644 --- a/src/stages/stage1.c +++ b/src/stages/stage1.c @@ -16,6 +16,8 @@ #include "stageutils.h" #include "stagedraw.h" #include "resource/model.h" +#include "util/glm.h" +#include "common_tasks.h" /* * See the definition of AttackInfo in boss.h for information on how to set up the idmaps. @@ -51,7 +53,20 @@ struct stage1_spells_s stage1_spells = { }, }; -static FBPair stage1_bg_fbpair; +static struct { + FBPair water_fbpair; + + struct { + float near, near_target; + float far, far_target; + } fog; + + struct { + float opacity, opacity_target; + } snow; + + float pitch_target; +} stage1_bg; #ifdef SPELL_BENCHMARK AttackInfo stage1_spell_benchmark = { @@ -109,42 +124,54 @@ static void stage1_water_draw(vec3 pos) { r_mat_mv_translate(0, stage_3d_context.cx[1] + 500, 0); r_mat_mv_rotate(M_PI, 1, 0, 0); + static const Color water_color = { 0, 0.08, 0.08, 1 }; + + r_clear(CLEAR_COLOR, &water_color, 1); + + r_mat_mv_push(); + r_mat_mv_translate(0, -9000, 0); + r_mat_mv_rotate(M_PI/2, 1, 0, 0); + r_mat_mv_scale(3640*1.4, 1456*1.4, 1); + r_mat_mv_translate(0, -0.5, 0); + r_shader_standard(); + r_uniform_sampler("tex", "stage1/horizon"); + r_draw_quad(); + r_mat_mv_pop(); + + r_state_push(); + r_enable(RCAP_DEPTH_TEST); + r_depth_func(DEPTH_ALWAYS); r_shader_standard_notex(); r_mat_mv_push(); - r_mat_mv_scale(1200, 3000, 1); - r_color4(0, 0.1, 0.1, 1); + r_mat_mv_scale(80000, 80000, 1); + r_color(&water_color); r_draw_quad(); r_color4(1, 1, 1, 1); r_mat_mv_pop(); + r_state_pop(); - r_disable(RCAP_CULL_FACE); r_disable(RCAP_DEPTH_TEST); + r_disable(RCAP_CULL_FACE); Framebuffer *bg_fb = r_framebuffer_current(); - FBPair *fbpair = &stage1_bg_fbpair; + FBPair *fbpair = &stage1_bg.water_fbpair; r_framebuffer(fbpair->back); r_mat_proj_push(); set_ortho(VIEWPORT_W, VIEWPORT_H); r_mat_mv_push_identity(); - float z = 0.75; - float zo = -0.05; + float hack = (stage_3d_context.crot[0] - 60) / 15.0; + + float z = glm_lerp(0.75, 0.8, hack); + float zo = glm_lerp(-0.05, -0.3, hack); r_mat_mv_translate(VIEWPORT_W * 0.5 * (1 - z), VIEWPORT_H * 0.5 * (1 - z), 0); r_mat_mv_scale(z, z, 1); - r_clear(CLEAR_ALL, RGBA(0, 0.08, 0.08, 1), 1); + r_clear(CLEAR_ALL, RGBA(0, 0, 0, 0), 1); r_shader("sprite_default"); ent_draw(stage1_draw_predicate); - r_mat_mv_push(); - r_shader_standard_notex(); - r_mat_mv_translate(VIEWPORT_W*0.5, VIEWPORT_H*0.5, 0); - r_mat_mv_scale(VIEWPORT_W/z, VIEWPORT_H/z, 1); - r_color4(0, 0.08, 0.08, 0.8); - r_draw_quad(); - r_mat_mv_pop(); - r_mat_mv_pop(); fbpair_swap(fbpair); @@ -152,6 +179,11 @@ static void stage1_water_draw(vec3 pos) { int pp_quality = config_get_int(CONFIG_POSTPROCESS); + ShaderProgram *water_shader = r_shader_get("stage1_water"); + r_uniform_float(r_shader_uniform(water_shader, "time"), 0.5 * global.frames / (float)FPS); + r_uniform_vec4_rgba(r_shader_uniform(water_shader, "water_color"), &water_color); + r_uniform_float(r_shader_uniform(water_shader, "wave_offset"), stage_3d_context.cx[1] / 2400.0); + if(pp_quality > 1) { r_shader("blur5"); r_uniform_vec2("blur_resolution", VIEWPORT_W, VIEWPORT_H); @@ -187,21 +219,14 @@ static void stage1_water_draw(vec3 pos) { } r_mat_mv_push(); - r_mat_mv_translate(0, 70, 0); + r_mat_mv_translate(0, 70 - 140 * hack, 0); r_mat_mv_rotate(10 * DEG2RAD, 1, 0, 0); r_mat_mv_scale(0.85 / (z + zo), -0.85 / (z + zo), 0.85); - r_mat_mv_translate(-VIEWPORT_W/2, 0, 0); + r_mat_mv_translate(-VIEWPORT_W/2, VIEWPORT_H/4 * hack, 0); r_color4(1, 1, 1, 1); draw_framebuffer_tex(fbpair->front, VIEWPORT_W, VIEWPORT_H); r_mat_mv_pop(); - r_shader_standard_notex(); - r_mat_mv_push(); - r_mat_mv_scale(1200,3000,1); - r_color4(0, 0.08, 0.08, 0.08); - r_draw_quad(); - r_mat_mv_pop(); - r_mat_mv_pop(); r_state_pop(); } @@ -214,37 +239,45 @@ static uint stage1_bg_pos(Stage3D *s3d, vec3 p, float maxrange) { static void stage1_smoke_draw(vec3 pos) { float d = fabsf(pos[1]-stage_3d_context.cx[1]); + float o = ((d-500)*(d-500))/1.5e7; + o *= 5 * pow((5000 - d) / 5000, 3); + + if(o < 1.0f/255.0f) { + return; + } + + float spin = 0.01 * sin(pos[1]*993.11); + r_state_push(); r_shader("sprite_default"); r_disable(RCAP_DEPTH_TEST); r_cull(CULL_BACK); r_mat_mv_push(); - r_mat_mv_translate(pos[0]+200*sin(pos[1]), pos[1], pos[2]+200*sin(pos[1]/25.0)); + r_mat_mv_translate(pos[0]+600*sin(pos[1]), pos[1], pos[2]+600*sin(pos[1]/25.0)); r_mat_mv_rotate(M_PI/2, -1, 0, 0); - r_mat_mv_scale(3.5, 2, 1); - r_mat_mv_rotate(global.frames * DEG2RAD, 0, 0, 1); - float o = ((d-500)*(d-500))/1.5e7; + r_mat_mv_scale(3.5*2, 2*1.5, 1); + r_mat_mv_rotate(global.frames * spin + M_PI * 2 * sin(pos[1]*321.23), 0, 0, 1); r_draw_sprite(&(SpriteParams) { .sprite = "stage1/fog", - .color = RGBA(0.8 * o, 0.8 * o, 0.8 * o, o * 0.5), + .color = RGBA(0.6 * o, 0.7 * o, 0.8 * o, o * 0.5), }); r_mat_mv_pop(); r_state_pop(); } static uint stage1_smoke_pos(Stage3D *s3d, vec3 p, float maxrange) { - vec3 q = {0,0,-300}; - vec3 r = {0,300,0}; + vec3 q = {0,0,800}; + vec3 r = {0,200,0}; return linear3dpos(s3d, p, maxrange/2.0, q, r); } static bool stage1_fog(Framebuffer *fb) { r_shader("zbuf_fog"); r_uniform_sampler("depth", r_framebuffer_get_attachment(fb, FRAMEBUFFER_ATTACH_DEPTH)); - r_uniform_vec4("fog_color", 0.8, 0.8, 0.8, 1.0); - r_uniform_float("start", 0.0); - r_uniform_float("end", 0.8); - r_uniform_float("exponent", 3.0); + r_uniform_vec4("fog_color", 0.78, 0.8, 0.85, 1.0); + r_uniform_float("start", stage1_bg.fog.near); + r_uniform_float("end", stage1_bg.fog.far); + r_uniform_float("exponent", 1.0); r_uniform_float("sphereness", 0.2); draw_framebuffer_tex(fb, VIEWPORT_W, VIEWPORT_H); r_shader_standard(); @@ -252,24 +285,21 @@ static bool stage1_fog(Framebuffer *fb) { } static void stage1_draw(void) { - set_perspective(&stage_3d_context, 500, 5000); - draw_stage3d(&stage_3d_context, 7000); -} - -static void stage1_update(void) { - update_stage3d(&stage_3d_context); + set_perspective(&stage_3d_context, 500, 10000); + draw_stage3d(&stage_3d_context, 10000); } static inline uint32_t floathash(float f) { - return (union { uint32_t i; float f; }){ .f = f }.i; + uint32_t bits = float_to_bits(f); + return splitmix32(&bits); } static void stage1_waterplants_draw(vec3 pos) { r_state_push(); // stateless pseudo-random fuckery - int tile = floathash(pos[1] * 3124312) & 1; - float offs = 200 * sin(2*M_PI*remainder(3214.322211333 * floathash(pos[1]), M_E)); + int tile = floathash(pos[1] * 311.4312) & 1; + float offs = 600 * sin(2*M_PI*remainder(3214.322211333 * floathash(pos[1]), M_E)); float d = -55+50*sin(pos[1]/25.0); r_mat_mv_push(); r_mat_mv_translate(pos[0]+offs, pos[1], d); @@ -305,26 +335,127 @@ static void stage1_waterplants_draw(vec3 pos) { r_state_pop(); } +static uint stage1_waterplants_pos(Stage3D *s3d, vec3 p, float maxrange) { + vec3 q = {0,0,-300}; + vec3 r = {0,150,0}; + return linear3dpos(s3d, p, maxrange/2.0, q, r); +} + +static void stage1_snow_draw(vec3 pos) { + float o = stage1_bg.snow.opacity; + // float appear_time = 2760; + + if(o < 1.0f/256.0f) { + return; + } + + float d = fabsf(pos[1] - stage_3d_context.cx[1]); + + if(fabsf(d) < 500) { + return; + } + + float x = ((d+500)*(d+500))/(5000*5000); + + float h0 = floathash(pos[1]+0) / (double)UINT32_MAX; + float h1 = floathash(pos[1]+1) / (double)UINT32_MAX; + float h2 = floathash(pos[1]+2) / (double)UINT32_MAX; + + float height = 1 + sawtooth(h0 + global.frames/240.0); + + o *= pow(1 - 1.5 * clamp(height - 1, 0, 1), 5) * x; + // o *= min(1, (global.frames - appear_time) / 180.0); + + if(o < 1.0f/256.0f) { + return; + } + + if(height > 1) { + height = 1; + } else { + height = glm_ease_quad_in(height); + } + + if(o > 1) { + o = 1; + } + + r_state_push(); + r_shader("sprite_default"); + r_disable(RCAP_DEPTH_TEST); + r_cull(CULL_BACK); + r_mat_mv_push(); + r_mat_mv_translate(pos[0] + 2200 * sawtooth(h1), pos[1] + 10 * sawtooth(h2), 1200 - 1200 * height); + r_mat_mv_rotate(M_PI/2, -1, 0, 0); + r_draw_sprite(&(SpriteParams) { + .sprite = "part/smoothdot", + .color = RGBA(o, o, o, 0), + }); + r_mat_mv_pop(); + r_state_pop(); + +} + +static uint stage1_snow_pos(Stage3D *s3d, vec3 p, float maxrange) { + vec3 q = {0,0,0}; + vec3 r = {0,15,0}; + return linear3dpos(s3d, p, maxrange, q, r); +} + +void stage1_bg_raise_camera(void) { + stage1_bg.pitch_target = 75; +} + +void stage1_bg_enable_snow(void) { + stage1_bg.snow.opacity_target = 1; +} + +void stage1_bg_disable_snow(void) { + stage1_bg.snow.opacity_target = 0; +} + +static void stage1_update(void) { + update_stage3d(&stage_3d_context); + + stage_3d_context.crot[1] = 2 * sin(global.frames/113.0); + stage_3d_context.crot[2] = 1 * sin(global.frames/132.0); + + fapproach_asymptotic_p(&stage_3d_context.crot[0], stage1_bg.pitch_target, 0.01, 1e-5); + fapproach_asymptotic_p(&stage1_bg.fog.near, stage1_bg.fog.near_target, 0.001, 1e-5); + fapproach_asymptotic_p(&stage1_bg.fog.far, stage1_bg.fog.far_target, 0.001, 1e-5); + fapproach_p(&stage1_bg.snow.opacity, stage1_bg.snow.opacity_target, 1.0 / 180.0); +} + static void stage1_start(void) { - init_stage3d(&stage_3d_context, 16); + init_stage3d(&stage_3d_context, 32); add_model(&stage_3d_context, stage1_water_draw, stage1_bg_pos); - add_model(&stage_3d_context, stage1_waterplants_draw, stage1_smoke_pos); + add_model(&stage_3d_context, stage1_waterplants_draw, stage1_waterplants_pos); + add_model(&stage_3d_context, stage1_snow_draw, stage1_snow_pos); add_model(&stage_3d_context, stage1_smoke_draw, stage1_smoke_pos); - stage_3d_context.crot[0] = 60; - stage_3d_context.cx[2] = 700; - stage_3d_context.cv[1] = 4; - FBAttachmentConfig cfg = { 0 }; cfg.attachment = FRAMEBUFFER_ATTACH_COLOR0; cfg.tex_params.filter.min = TEX_FILTER_LINEAR; cfg.tex_params.filter.mag = TEX_FILTER_LINEAR; - cfg.tex_params.type = TEX_TYPE_RGB; + cfg.tex_params.type = TEX_TYPE_RGBA; cfg.tex_params.wrap.s = TEX_WRAP_CLAMP; cfg.tex_params.wrap.t = TEX_WRAP_CLAMP; - stage1_bg_fbpair.front = stage_add_background_framebuffer("Stage 1 water FB 1", 0.2, 0.5, 1, &cfg); - stage1_bg_fbpair.back = stage_add_background_framebuffer("Stage 1 water FB 2", 0.2, 0.5, 1, &cfg); + stage1_bg.water_fbpair.front = stage_add_background_framebuffer("Stage 1 water FB 1", 0.2, 0.5, 1, &cfg); + stage1_bg.water_fbpair.back = stage_add_background_framebuffer("Stage 1 water FB 2", 0.2, 0.5, 1, &cfg); + + stage1_bg.fog.near_target = 0.5; + stage1_bg.fog.far_target = 1.5; + stage1_bg.snow.opacity_target = 0.0; + stage1_bg.pitch_target = 60; + + stage1_bg.fog.near = 0.2; // stage1_bg.fog.near_target; + stage1_bg.fog.far = 1.0; // stage1_bg.fog.far_target; + stage1_bg.snow.opacity = stage1_bg.snow.opacity_target; + + stage_3d_context.crot[0] = stage1_bg.pitch_target; + stage_3d_context.cx[2] = 700; + stage_3d_context.cv[1] = 8; } static void stage1_preload(void) { @@ -336,6 +467,9 @@ static void stage1_preload(void) { "stage1/waterplants", "dialog/cirno", NULL); + preload_resources(RES_TEXTURE, RESF_DEFAULT, + "stage1/horizon", + NULL); preload_resources(RES_SHADER_PROGRAM, RESF_DEFAULT, "blur5", "lasers/linear", @@ -352,6 +486,7 @@ static void stage1_preload(void) { static void stage1_end(void) { free_stage3d(&stage_3d_context); + memset(&stage1_bg, 0, sizeof(stage1_bg)); } static void stage1_spellpractice_start(void) { @@ -363,6 +498,16 @@ static void stage1_spellpractice_start(void) { global.boss = cirno; stage_start_bgm("stage1boss"); + + stage1_bg_raise_camera(); + stage1_bg_enable_snow(); + + stage1_bg.fog.near = stage1_bg.fog.near_target; + stage1_bg.fog.far = stage1_bg.fog.far_target; + stage1_bg.snow.opacity = stage1_bg.snow.opacity_target; + stage_3d_context.crot[0] = stage1_bg.pitch_target; + + INVOKE_TASK_WHEN(&cirno->events.defeated, common_call_func, stage1_bg_disable_snow); } static void stage1_spellpractice_events(void) { diff --git a/src/stages/stage1.h b/src/stages/stage1.h index c0bedd96a7..88d7ea4051 100644 --- a/src/stages/stage1.h +++ b/src/stages/stage1.h @@ -42,6 +42,10 @@ extern struct stage1_spells_s { extern StageProcs stage1_procs; extern StageProcs stage1_spell_procs; +void stage1_bg_raise_camera(void); +void stage1_bg_enable_snow(void); +void stage1_bg_disable_snow(void); + #ifdef SPELL_BENCHMARK extern AttackInfo stage1_spell_benchmark; #endif diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 78c08cd7a2..f104212757 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1431,6 +1431,9 @@ TASK(spawn_midboss, NO_ARGS) { boss_add_attack_task(boss, AT_Move, "Introduction", 2, 0, TASK_INDIRECT(BossAttack, midboss_flee), NULL); boss_start_attack(boss, boss->attacks); + + WAIT(60); + stage1_bg_enable_snow(); } TASK(tritoss_fairy, { cmplx pos; cmplx velocity; cmplx end_velocity; }) { @@ -1526,6 +1529,9 @@ TASK(stage_timeline, NO_ARGS) { INVOKE_TASK_DELAYED(900, schedule_swirls); INVOKE_TASK_DELAYED(1500, burst_fairies_3); INVOKE_TASK_DELAYED(2200, multiburst_fairies_1); + + INVOKE_TASK_DELAYED(2200, common_call_func, stage1_bg_raise_camera); + STAGE_BOOKMARK_DELAYED(2500, pre-midboss); INVOKE_TASK_DELAYED(2700, spawn_midboss); while(!global.boss) YIELD; @@ -1597,7 +1603,10 @@ TASK(stage_timeline, NO_ARGS) { WAIT_EVENT(&global.boss->events.defeated); stage_unlock_bgm("stage1boss"); - WAIT(240); + + WAIT(120); + stage1_bg_disable_snow(); + WAIT(120); global.dialog = stage1_dialog_post_boss(); while(dialog_is_active(global.dialog)) { diff --git a/src/stageutils.c b/src/stageutils.c index 37de7f248c..80d7e6652c 100644 --- a/src/stageutils.c +++ b/src/stageutils.c @@ -102,6 +102,12 @@ uint linear3dpos(Stage3D *s3d, vec3 q, float maxrange, vec3 p, vec3 r) { } ++size; + + if(size == s3d->pos_buffer_size) { + s3d->pos_buffer_size *= 2; + log_debug("pos_buffer exhausted, reallocating %u -> %u", size, s3d->pos_buffer_size); + s3d->pos_buffer = realloc(s3d->pos_buffer, sizeof(vec3) * s3d->pos_buffer_size); + } } else if(mod == 1) { mod = -1; num = t; @@ -112,6 +118,8 @@ uint linear3dpos(Stage3D *s3d, vec3 q, float maxrange, vec3 p, vec3 r) { num += mod; } + assert(size < s3d->pos_buffer_size); + return size; } From 5468ac2a8c2787b4737cd122df26f381b0c08e32 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Thu, 5 Dec 2019 20:31:49 +0200 Subject: [PATCH 066/104] stage1: tweak boss appearance time --- src/stages/stage1_events.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index f104212757..633869bc0b 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1597,7 +1597,9 @@ TASK(stage_timeline, NO_ARGS) { INVOKE_TASK_DELAYED(2120, waveshot_fairy, VIEWPORT_W + 42 + 300*I, 130 + 140*I, 0.2 * (-2 - I)); INVOKE_TASK_DELAYED(2120, waveshot_fairy, - 42 + 300*I, VIEWPORT_W - 130 + 140*I, 0.2 * ( 2 - I)); - WAIT(2500); + STAGE_BOOKMARK_DELAYED(2300, pre-boss); + + WAIT(2560); INVOKE_TASK(spawn_boss); while(!global.boss) YIELD; WAIT_EVENT(&global.boss->events.defeated); From ee3769ed656570b6c6fea5882122ebcd5aacb844 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Thu, 5 Dec 2019 22:30:46 +0200 Subject: [PATCH 067/104] display number of active/allocated tasks --- src/coroutine.c | 21 +++++++++++++++++++++ src/coroutine.h | 1 + src/renderer/api.c | 2 ++ 3 files changed, 24 insertions(+) diff --git a/src/coroutine.c b/src/coroutine.c index 9400252737..286a05d823 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -578,6 +578,27 @@ void coroutines_shutdown(void) { } } +#ifdef DEBUG +#include "video.h" +#include "resource/font.h" +#endif + +void coroutines_draw_debug(void) { +#ifdef DEBUG + static char buf[128]; + snprintf(buf, sizeof(buf), "Tasks: %4zu / %4zu ", num_tasks_in_use, num_tasks_allocated); + + Font *font = get_font("monotiny"); + text_draw(buf, &(TextParams) { + .pos = { SCREEN_W, font_get_lineskip(font) }, + .font_ptr = font, + .color = RGB(1, 1, 1), + .shader = "text_default", + .align = ALIGN_RIGHT, + }); +#endif +} + DEFINE_EXTERN_TASK(_cancel_task_helper) { CoTask *task = cotask_unbox(ARGS.task); diff --git a/src/coroutine.h b/src/coroutine.h index ed561deda7..4a30869ce6 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -76,6 +76,7 @@ typedef char CoTaskDebugInfo; void coroutines_init(void); void coroutines_shutdown(void); +void coroutines_draw_debug(void); CoTask *cotask_new(CoTaskFunc func); void cotask_free(CoTask *task); diff --git a/src/renderer/api.c b/src/renderer/api.c index 2afdd72f9a..acfd87b341 100644 --- a/src/renderer/api.c +++ b/src/renderer/api.c @@ -18,6 +18,7 @@ #include "util/graphics.h" #include "resource/texture.h" #include "resource/sprite.h" +#include "coroutine.h" #define B _r_backend.funcs @@ -601,6 +602,7 @@ VsyncMode r_vsync_current(void) { } void r_swap(SDL_Window *window) { + coroutines_draw_debug(); _r_sprite_batch_end_frame(); B.swap(window); } From 064f1680b510a96787f48147f3e24e5182c9e279 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 7 Dec 2019 03:09:31 +0200 Subject: [PATCH 068/104] upgrade projectile.c to new RNG API --- src/projectile.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/projectile.c b/src/projectile.c index 07e35625f8..1eb9389240 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -14,7 +14,7 @@ #include "list.h" #include "stageobjects.h" -ht_ptr2int_t shader_sublayer_map; +static ht_ptr2int_t shader_sublayer_map; static ProjArgs defaults_proj = { .sprite = "proj/", @@ -750,17 +750,19 @@ static Projectile* spawn_projectile_highlight_effect_internal(Projectile *p, boo sx = pow(p->sprite->w, 0.7); sy = pow(p->sprite->h, 0.7); + RNG_ARRAY(R, 5); + PARTICLE( .sprite = "stardust_green", .shader = "sprite_bullet", .size = p->size * 4.5, .layer = LAYER_PARTICLE_HIGH | 0x40, .draw_rule = ScaleSquaredFade, - .args = { 0, 0, (0 + 2*I) * 0.1 * fmax(sx, sy) * (1 - 0.2 * frand()) }, - .angle = frand() * M_PI * 2, - .pos = p->pos + frand() * 8 * cexp(I*M_PI*2*frand()), + .args = { 0, 0, (0 + 2*I) * 0.1 * fmax(sx, sy) * (1 - 0.2 * vrng_real(R[0])) }, + .angle = vrng_angle(R[1]), + .pos = p->pos + vrng_range(R[2], 0, 8) * vrng_dir(R[3]), .flags = PFLAG_NOREFLECT, - .timeout = 24 + 2 * nfrand(), + .timeout = vrng_range(R[4], 22, 26), .color = &clr, ); } @@ -769,17 +771,19 @@ static Projectile* spawn_projectile_highlight_effect_internal(Projectile *p, boo sy = pow((1.5 * p->sprite->h + 0.5 * p->sprite->w) * 0.5, 0.65); clr.a = 0.2; + RNG_ARRAY(R, 5); + return PARTICLE( .sprite = "bullet_cloud", .size = p->size * 4.5, .shader = "sprite_bullet", .layer = LAYER_PARTICLE_HIGH | 0x80, .draw_rule = bullet_highlight_draw, - .args = { 0.125 * (sx + I * sy), frand() * M_PI * 2 }, + .args = { 0.125 * (sx + I * sy), vrng_angle(R[0]) }, .angle = p->angle, - .pos = p->pos + frand() * 5 * cexp(I*M_PI*2*frand()), + .pos = p->pos + vrng_range(R[1], 0, 5) * vrng_dir(R[2]), .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, - .timeout = 32 + 2 * nfrand(), + .timeout = vrng_range(R[3], 30, 34), .color = &clr, ); } @@ -1032,8 +1036,8 @@ void Petal(Projectile *p, int t) { void petal_explosion(int n, cmplx pos) { for(int i = 0; i < n; i++) { - tsrand_fill(6); - float t = frand(); + RNG_ARRAY(R, 6); + real t = rng_real(); PARTICLE( .sprite = "petal", @@ -1042,10 +1046,10 @@ void petal_explosion(int n, cmplx pos) { .rule = asymptotic, .draw_rule = Petal, .args = { - (3+5*afrand(2))*cexp(I*M_PI*2*afrand(3)), + vrng_range(R[0], 3, 8) * vrng_dir(R[1]), 5, - afrand(4) + afrand(5)*I, - afrand(1) + 360.0*I*afrand(0), + vrng_real(R[2]) + vrng_real(R[3])*I, + vrng_real(R[4]) + vrng_range(R[5], 0, 360)*I, }, // TODO: maybe remove this noreflect, there shouldn't be a cull mode mess anymore .flags = PFLAG_NOREFLECT | (n % 2 ? 0 : PFLAG_REQUIREDPARTICLE), From a7e36b06ffd339cf9094b32462aac45f0790ae62 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 7 Dec 2019 03:13:04 +0200 Subject: [PATCH 069/104] upgrade stage.c to new RNG API --- src/stage.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stage.c b/src/stage.c index a9c5d92651..502c82c74b 100644 --- a/src/stage.c +++ b/src/stage.c @@ -834,7 +834,7 @@ static LogicFrameAction stage_logic_frame(void *arg) { stage->procs->update(); } - replay_stage_check_desync(global.replay_stage, global.frames, (tsrand() ^ global.plr.points) & 0xFFFF, global.replaymode); + replay_stage_check_desync(global.replay_stage, global.frames, (rng_u64() ^ global.plr.points) & 0xFFFF, global.replaymode); stage_logic(); if(fstate->transition_delay) { From 66cb468f6be677c3c5b2f2243cdc5ee483bd499d Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 7 Dec 2019 03:15:33 +0200 Subject: [PATCH 070/104] upgrade projectile_prototypes.c to new RNG API --- src/projectile_prototypes.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/projectile_prototypes.c b/src/projectile_prototypes.c index d9a8618358..f6cbbab3e7 100644 --- a/src/projectile_prototypes.c +++ b/src/projectile_prototypes.c @@ -57,8 +57,15 @@ static void pp_blast_init_projectile(ProjPrototype *proto, Projectile *p) { pp_basic_init_projectile(proto, p); assert(p->rule == NULL); assert(p->timeout > 0); - p->args[1] = frand()*360 + frand()*I; - p->args[2] = frand() + frand()*I; + + real a1_x, a1_y, a2_x, a2_y; + a1_x = rng_range(0, 360); + a1_y = rng_real(); + a2_x = rng_real(); + a2_y = rng_real(); + + p->args[1] = CMPLX(a1_x, a1_y); + p->args[2] = CMPLX(a2_x, a2_y); } ProjPrototype _pp_blast = { From 6a6a660922d41fa94afde5792f0774cb0b787e69 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 7 Dec 2019 03:18:35 +0200 Subject: [PATCH 071/104] upgrade corotest.c to new RNG API --- src/stages/corotest.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 5a6d8c6b2c..15325450b2 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -55,7 +55,7 @@ TASK(wait_event_test, { BoxedEnemy e; int rounds; int delay; int cnt; int cnt_in while(ARGS.rounds--) { WAIT(ARGS.delay); - double angle_ofs = frand() * M_PI * 2; + real angle_ofs = rng_angle(); for(int i = 0; i < ARGS.cnt; ++i) { complex aim = cexp(I * (angle_ofs + M_PI * 2.0 * i / (double)ARGS.cnt)); @@ -125,7 +125,7 @@ TASK_WITH_FINALIZER(test_enemy, { } // keep wandering, randomly - ARGS.dir *= cexp(I*M_PI*nfrand()); + ARGS.dir *= rng_dir(); } } From 07fb6a13c47ff3eb63aa04ba0ddfcea77d9cdc07 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 7 Dec 2019 03:22:56 +0200 Subject: [PATCH 072/104] upgrade reimu_b.c to new RNG API --- src/plrmodes/reimu_b.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plrmodes/reimu_b.c b/src/plrmodes/reimu_b.c index 3ff703a581..71f7d4d634 100644 --- a/src/plrmodes/reimu_b.c +++ b/src/plrmodes/reimu_b.c @@ -125,7 +125,7 @@ static void reimu_dream_gap_bomb(Enemy *e, int t) { .sprite = "glowball", .size = 32 * (1 + I), .color = HSLA(t/30.0, 0.5, 0.5, 0.5), - .pos = e->pos + e->args[0] * (frand() - 0.5) * GAP_LENGTH * 0.5, + .pos = e->pos + e->args[0] * GAP_LENGTH * 0.25 * rng_sreal(), .rule = reimu_dream_gap_bomb_projectile, .draw_rule = reimu_dream_gap_bomb_projectile_draw, .type = PROJ_PLAYER, @@ -335,7 +335,7 @@ static void reimu_dream_spawn_warp_effect(cmplx pos, bool exit) { .pos = pos, .color = RGBA(0.5, 0.5, 0.5, 0.5), .timeout = 20, - .angle = frand() * M_PI * 2, + .angle = rng_angle(), .draw_rule = ScaleFade, .args = { 0, 0, 0.2 + 1 * I }, .layer = LAYER_PLAYER_FOCUS, @@ -344,9 +344,9 @@ static void reimu_dream_spawn_warp_effect(cmplx pos, bool exit) { PARTICLE( .sprite = exit ? "stain" : "stardust", .pos = pos, - .color = color_mul_scalar(RGBA(0.75, 0.4 * frand(), 0.4, 0), 0.8-0.4*exit), + .color = color_mul_scalar(RGBA(0.75, rng_range(0, 0.4), 0.4, 0), 0.8-0.4*exit), .timeout = 20, - .angle = frand() * M_PI * 2, + .angle = rng_angle(), .draw_rule = ScaleFade, .args = { 0, 0, 0.1 + 0.6 * I }, .layer = LAYER_PLAYER_FOCUS, From 78ac720451b71e1415e390055ca433f2b6b297e1 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 7 Dec 2019 03:30:44 +0200 Subject: [PATCH 073/104] upgrade reimu_a.c to new RNG API --- src/plrmodes/reimu_a.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/plrmodes/reimu_a.c b/src/plrmodes/reimu_a.c index 4f8ca64f33..18ad31eecf 100644 --- a/src/plrmodes/reimu_a.c +++ b/src/plrmodes/reimu_a.c @@ -96,7 +96,7 @@ static Projectile* reimu_spirit_spawn_ofuda_particle(Projectile *p, int t, doubl .color = c, .timeout = 12, .pos = p->pos, - .args = { p->args[0] * (0.6 + 0.4 * frand()) * vfactor, 0, (1+1.5*I) * REIMU_SPIRIT_HOMING_SCALE }, + .args = { p->args[0] * rng_range(0.6, 1.0) * vfactor, 0, (1+1.5*I) * REIMU_SPIRIT_HOMING_SCALE }, .angle = p->angle, .rule = linear, .draw_rule = ScaleFade, @@ -247,17 +247,17 @@ static int reimu_spirit_bomb_orb(Projectile *p, int t) { stage_clear_hazards_at(p->pos, range, CLEAR_HAZARDS_ALL | CLEAR_HAZARDS_NOW); int count = 21; - double offset = frand(); + real offset = rng_real(); for(int i = 0; i < count; i++) { PARTICLE( .sprite_ptr = get_sprite("proj/glowball"), .shader = "sprite_bullet", - .color = HSLA(3 * (float)i / count + offset, 1, 0.5, 0), // reimu_spirit_orb_color(&(Color){0}, i%3),w + .color = HSLA(3 * (float)i / count + offset, 1, 0.5, 0), .timeout = 60, .pos = p->pos, - .args = { cexp(I * 2 * M_PI / count * (i + offset)) * 15 }, - .angle = 2*M_PI*frand(), + .args = { cdir(2 * M_PI / count * (i + offset)) * 15 }, + .angle = rng_angle(), .rule = linear, .draw_rule = Fade, .layer = LAYER_BOSS, @@ -284,7 +284,7 @@ static int reimu_spirit_bomb_orb(Projectile *p, int t) { .timeout = 120, .draw_rule = reimu_spirit_bomb_orb_draw_impact, .layer = LAYER_BOSS + 1, - .args = { frand() }, + .args = { rng_real() }, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, ); } @@ -329,7 +329,7 @@ static int reimu_spirit_bomb_orb(Projectile *p, int t) { // .color = reimu_spirit_orb_color(&(Color){0}, i), .color = HSLA(t/p->timeout, 0.3, 0.3, 0.0), .pos = trail_pos, - .angle = 2*M_PI*frand(), + .angle = rng_angle(), .timeout = 30, .draw_rule = ScaleFade, .rule = reimu_spirit_bomb_orb_trail, @@ -508,13 +508,14 @@ static int reimu_spirit_yinyang_flare(Projectile *p, int t) { static void reimu_spirit_yinyang_focused_visual(Enemy *e, int t, bool render) { if(!render && player_should_shoot(&global.plr, true)) { + RNG_ARRAY(R, 4); PARTICLE( .sprite = "stain", - .color = RGBA(0.5, 0.0 + 0.25 * frand(), 0, 0), - .timeout = 8 + 2 * nfrand(), + .color = RGBA(0.5, vrng_range(R[0], 0, 0.25), 0, 0), + .timeout = vrng_range(R[1], 8, 10), .pos = e->pos, - .args = { -5*I * (1 + frand()), 0, 0.25 + 0*I }, - .angle = 2*M_PI*frand(), + .args = { -I * vrng_range(R[2], 5, 10), 0, 0.25 + 0*I }, + .angle = vrng_angle(R[3]), .rule = reimu_spirit_yinyang_flare, .draw_rule = ScaleFade, .flags = PFLAG_NOREFLECT, @@ -528,13 +529,14 @@ static void reimu_spirit_yinyang_focused_visual(Enemy *e, int t, bool render) { static void reimu_spirit_yinyang_unfocused_visual(Enemy *e, int t, bool render) { if(!render && player_should_shoot(&global.plr, true)) { + RNG_ARRAY(R, 4); PARTICLE( .sprite = "stain", - .color = RGBA(0.5, 0.125, 0.0 + 0.25 * frand(), 0), - .timeout = 8 + 2 * nfrand(), + .color = RGBA(0.5, 0.125, vrng_range(R[0], 0, 0.25), 0), + .timeout = vrng_range(R[1], 8, 10), .pos = e->pos, - .args = { -5*I * (1 + frand()), 0, 0.25 + 0*I }, - .angle = 2*M_PI*frand(), + .args = { -I * vrng_range(R[2], 5, 10), 0, 0.25 + 0*I }, + .angle = vrng_angle(R[3]), .rule = reimu_spirit_yinyang_flare, .draw_rule = ScaleFade, .flags = PFLAG_NOREFLECT, From ed3f1734554ac6f273cf04dba7de734c8985cf01 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 7 Dec 2019 03:35:25 +0200 Subject: [PATCH 074/104] upgrade youmu_b.c to new RNG API --- src/plrmodes/youmu_b.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/plrmodes/youmu_b.c b/src/plrmodes/youmu_b.c index d28537a5ed..1b7baf29c5 100644 --- a/src/plrmodes/youmu_b.c +++ b/src/plrmodes/youmu_b.c @@ -96,7 +96,7 @@ static int youmu_homing(Projectile *p, int t) { // a[0]: velocity, a[1]: aim (r: .layer = LAYER_PARTICLE_HIGH, .args = { 0, 0, 0.5 * I }, .flags = PFLAG_NOREFLECT, - .angle = M_PI*nfrand(), + .angle = rng_angle(), ); return ACTION_ACK; } @@ -283,10 +283,11 @@ static int youmu_particle_slice_logic(Projectile *p, int t) { p->color = *RGBA(a, a, a, 0); - cmplx phase = cexp(p->angle * I); if(t%5 == 0) { - tsrand_fill(4); + cmplx phase = cdir(p->angle); + RNG_ARRAY(R, 4); + PARTICLE( .sprite = "petal", .pos = p->pos-400*phase, @@ -294,9 +295,9 @@ static int youmu_particle_slice_logic(Projectile *p, int t) { .draw_rule = Petal, .args = { phase, - phase*cexp(0.1*I), - afrand(1) + afrand(2)*I, - afrand(3) + 360.0*I*afrand(0) + phase*cdir(0.1), + vrng_real(R[0]) + vrng_real(R[1])*I, + vrng_real(R[2]) + vrng_range(R[3], 0, 360)*I, }, .layer = LAYER_PARTICLE_HIGH | 0x2, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, From e43a0373771faf7356124226de936d8118d97f40 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 7 Dec 2019 03:57:26 +0200 Subject: [PATCH 075/104] upgrade youmu_a.c to new RNG API --- src/plrmodes/youmu_a.c | 59 ++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/src/plrmodes/youmu_a.c b/src/plrmodes/youmu_a.c index a974a1948c..73ebf6ecf8 100644 --- a/src/plrmodes/youmu_a.c +++ b/src/plrmodes/youmu_a.c @@ -66,48 +66,50 @@ static void myon_draw_trail(Projectile *p, int t) { } static void spawn_stardust(cmplx pos, float myon_color_f, int timeout, cmplx v) { + RNG_ARRAY(R, 4); + PARTICLE( .sprite = "stardust", - .pos = pos+5*frand()*cexp(2.0*I*M_PI*frand()), + .pos = pos + vrng_range(R[0], 0, 5) * vrng_dir(R[1]), .draw_rule = myon_draw_trail, .rule = myon_particle_rule, .timeout = timeout, - .args = { v, 0.2 + 0.1 * frand(), 0, myon_color_f }, - .angle = M_PI*2*frand(), + .args = { v, vrng_range(R[2], 0.2, 0.3), 0, myon_color_f }, + .angle = vrng_angle(R[3]), .flags = PFLAG_NOREFLECT, .layer = LAYER_PARTICLE_LOW | 1, ); } static void myon_spawn_trail(Enemy *e, int t) { - float a = global.frames * 0.07; - cmplx pos = e->pos + 3 * (cos(a) + I * sin(a)); - - cmplx stardust_v = 3 * myon_tail_dir() * cexp(I*M_PI/16*sin(1.33*t)); - float f = abs(global.plr.focus) / 30.0; + cmplx pos = e->pos + 3 * cdir(global.frames * 0.07); + cmplx stardust_v = 3 * myon_tail_dir() * cdir(M_PI/16*sin(1.33*t)); + real f = abs(global.plr.focus) / 30.0; stardust_v = f * stardust_v + (1 - f) * -I; if(player_should_shoot(&global.plr, true)) { + RNG_ARRAY(R, 7); + PARTICLE( .sprite = "smoke", - .pos = pos+10*frand()*cexp(2.0*I*M_PI*frand()), + .pos = pos + vrng_range(R[0], 0, 10) * vrng_dir(R[1]), .draw_rule = myon_draw_trail, .rule = myon_particle_rule, .timeout = 60, - .args = { -I*0.0*cexp(I*M_PI/16*sin(t)), -0.2, 0, f }, + .args = { 0, -0.2, 0, f }, .flags = PFLAG_NOREFLECT, - .angle = M_PI*2*frand(), + .angle = vrng_angle(R[2]), ); PARTICLE( .sprite = "flare", - .pos = pos+5*frand()*cexp(2.0*I*M_PI*frand()), + .pos = pos + vrng_range(R[3], 0, 5) * vrng_dir(R[4]), .draw_rule = Shrink, .rule = myon_particle_rule, .timeout = 10, - .args = { cexp(I*M_PI*2*frand())*0.5, 0.2, 0, f }, + .args = { 0.5 * vrng_dir(R[5]), 0.2, 0, f }, .flags = PFLAG_NOREFLECT, - .angle = M_PI*2*frand(), + .angle = vrng_angle(R[6]), ); } @@ -119,7 +121,7 @@ static void myon_spawn_trail(Enemy *e, int t) { .args = { f * stardust_v, 0, 0, f }, .draw_rule = Shrink, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, - .angle = M_PI*2*frand(), + .angle = rng_angle(), .layer = LAYER_PARTICLE_LOW, ); @@ -372,17 +374,20 @@ static void youmu_mirror_shot(Player *plr) { } static void youmu_mirror_bomb_damage_callback(EntityInterface *victim, cmplx victim_origin, void *arg) { - victim_origin += cexp(I*M_PI*2*frand()) * 15 * frand(); + cmplx ofs_dir = rng_dir(); + victim_origin += ofs_dir * rng_range(0, 15); + + RNG_ARRAY(R, 6); PARTICLE( .sprite = "blast_huge_halo", .pos = victim_origin, - .color = RGBA(0.6 + 0.1 * frand(), 0.8, 0.7 + 0.075 * frand(), 0.5 * frand()), + .color = RGBA(vrng_range(R[0], 0.6, 0.7), 0.8, vrng_range(R[1], 0.7, 0.775), vrng_range(R[2], 0, 0.5)), .timeout = 30, .draw_rule = ScaleFade, .args = { 0, 0, (0.0 + 0.5*I) }, .layer = LAYER_PARTICLE_HIGH | 0x4, - .angle = frand() * 2 * M_PI, + .angle = vrng_angle(R[3]), .flags = PFLAG_REQUIREDPARTICLE, ); @@ -390,7 +395,8 @@ static void youmu_mirror_bomb_damage_callback(EntityInterface *victim, cmplx vic return; } - float t = frand(); + real t = rng_real(); + RNG_NEXT(R); PARTICLE( .sprite = "petal", @@ -399,10 +405,10 @@ static void youmu_mirror_bomb_damage_callback(EntityInterface *victim, cmplx vic .draw_rule = Petal, .color = RGBA(sin(5*t) * t, cos(5*t) * t, 0.5 * t, 0), .args = { - sign(nfrand())*(3+t*5*frand())*cexp(I*M_PI*8*t), + vrng_sign(R[0]) * vrng_range(R[1], 3, 3 + 5 * t) * cdir(M_PI*8*t), 5+I, - frand() + frand()*I, - frand() + 360.0*I*frand() + vrng_real(R[2]) + vrng_real(R[3])*I, + vrng_real(R[4]) + vrng_range(R[5], 0, 360)*I, }, .layer = LAYER_PARTICLE_PETAL, ); @@ -441,20 +447,23 @@ static int youmu_mirror_bomb_controller(Enemy *e, int t) { .color = RGBA(0.9, 0.8, 1.0, 0.0), .timeout = 30, .args = { - 2*cexp(2*I*M_PI*frand()), + 2 * rng_dir(), }, .flags = _i%2 == 0 ? PFLAG_REQUIREDPARTICLE : 0 ); + + RNG_ARRAY(R, 2); + PARTICLE( .sprite = "stain", .pos = e->pos, .rule = accelerated, .draw_rule = GrowFade, - .angle = 2*M_PI*frand(), + .angle = vrng_angle(R[0]), .color = RGBA(0.2, 0.1, 1.0, 0.0), .timeout = 50, .args = { - -1*e->args[0]*cexp(I*0.2*nfrand())/30, + -1*e->args[0]*cdir(0.2*rng_real())/30, 0.1*e->args[0]*I*sin(t/4.)/30, 2 }, From 7f55728f3dd71e53635620493841b144297dd7f4 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 7 Dec 2019 04:00:53 +0200 Subject: [PATCH 076/104] upgrade marisa_a.c to new RNG API --- src/plrmodes/marisa_a.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/plrmodes/marisa_a.c b/src/plrmodes/marisa_a.c index c2f8e791f9..f968e6e17f 100644 --- a/src/plrmodes/marisa_a.c +++ b/src/plrmodes/marisa_a.c @@ -86,14 +86,14 @@ static void trace_laser(Enemy *e, cmplx vel, float damage) { } if(col.type & col_types) { - tsrand_fill(3); + RNG_ARRAY(R, 3); PARTICLE( .sprite = "flare", .pos = col.location, .rule = linear, - .timeout = 3 + 5 * afrand(2), + .timeout = vrng_range(R[0], 3, 8), .draw_rule = Shrink, - .args = { (2+afrand(0)*6)*cexp(I*M_PI*2*afrand(1)) }, + .args = { vrng_range(R[1], 2, 8) * vrng_dir(R[2]) }, .flags = PFLAG_NOREFLECT, .layer = LAYER_PARTICLE_HIGH, ); @@ -471,7 +471,7 @@ static int masterspark(Enemy *e, int t2) { if(t2 < 0) return 1; - e->args[0] *= cexp(I*(0.005*creal(global.plr.velocity) + nfrand() * 0.005)); + e->args[0] *= cexp(I*(0.005*creal(global.plr.velocity) + rng_sreal() * 0.005)); cmplx diroffset = e->args[0]; float t = player_get_bomb_progress(&global.plr); @@ -480,7 +480,7 @@ static int masterspark(Enemy *e, int t2) { global.shake_view = 8 * (1 - t * 4 + 3); } else if(t2 % 2 == 0) { cmplx dir = -cexp(1.5*I*sin(t2*M_PI*1.12))*I; - Color *c = HSLA(-t*5.321,1,0.5,0.5*frand()); + Color *c = HSLA(-t*5.321, 1, 0.5, rng_range(0, 0.5)); uint flags = PFLAG_NOREFLECT; @@ -495,7 +495,7 @@ static int masterspark(Enemy *e, int t2) { .rule = masterspark_star, .timeout = 50, .args= { (10 * dir - 10*I)*diroffset, 4 }, - .angle = nfrand(), + .angle = rng_angle(), .draw_rule = GrowFade, .flags = flags, ); @@ -507,7 +507,7 @@ static int masterspark(Enemy *e, int t2) { .rule = masterspark_star, .timeout = 50, .args = { (10 * dir - 10*I)*diroffset, 4 }, - .angle = nfrand(), + .angle = rng_angle(), .draw_rule = GrowFade, .flags = flags, ); @@ -518,7 +518,7 @@ static int masterspark(Enemy *e, int t2) { .rule = linear, .timeout = 50, .args = { -7*dir + 7*I, 6 }, - .angle = nfrand(), + .angle = rng_angle(), .draw_rule = GrowFade, .flags = flags, ); From dbc48f49144e048669ef61a444f361ecf73f0135 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 7 Dec 2019 04:04:22 +0200 Subject: [PATCH 077/104] upgrade marisa_b.c to new RNG API --- src/plrmodes/marisa_b.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plrmodes/marisa_b.c b/src/plrmodes/marisa_b.c index c11c2db475..418866d9fe 100644 --- a/src/plrmodes/marisa_b.c +++ b/src/plrmodes/marisa_b.c @@ -68,7 +68,7 @@ static int marisa_star_projectile(Projectile *p, int t) { p->pos0 = p->pos - p->pos0; p->angle = carg(p->pos0); - if(t%(2+(int)round(2*frand())) == 0) { + if(t%(2+(int)round(2*rng_real())) == 0) { // please never write stuff like this ever again PARTICLE( .sprite = "stardust", .pos = p->pos, From 772090d273f04969ecfc38c2921371c1546fb3d2 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 8 Dec 2019 21:39:01 +0200 Subject: [PATCH 078/104] update koishi --- src/coroutine.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coroutine.c b/src/coroutine.c index 286a05d823..9a07cbfb4e 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -202,7 +202,7 @@ static void cotask_force_cancel(CoTask *task) { cotask_finalize(task); TASK_DEBUG_EVENT(ev); TASK_DEBUG("[%zu] Killing task %s", ev, task->debug_label); - koishi_kill(&task->ko); + koishi_kill(&task->ko, NULL); TASK_DEBUG("[%zu] koishi_kill returned (%s)", ev, task->debug_label); assert(cotask_status(task) == CO_STATUS_DEAD); } From 677ba83b44705e427a07480b36c715d31b07f85d Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Wed, 11 Dec 2019 22:16:56 +0200 Subject: [PATCH 079/104] update koishi for real this time --- external/koishi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/koishi b/external/koishi index 24371f6de9..b22756256d 160000 --- a/external/koishi +++ b/external/koishi @@ -1 +1 @@ -Subproject commit 24371f6de96f230506eac5f36aa9234625a72f08 +Subproject commit b22756256d55970e15cbf46b44c8006c2aa8391b From 93ba83d9405d5f9e88e6e127d320729b992a89be Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Thu, 12 Dec 2019 23:11:14 +0200 Subject: [PATCH 080/104] update koishi again --- external/koishi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/koishi b/external/koishi index b22756256d..88939b7190 160000 --- a/external/koishi +++ b/external/koishi @@ -1 +1 @@ -Subproject commit b22756256d55970e15cbf46b44c8006c2aa8391b +Subproject commit 88939b719021952864030ac9dbc1be4f9d3fa063 From 69586dd059c471ead8ef144131abdbf2ebf6254f Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Wed, 18 Dec 2019 16:19:13 +0200 Subject: [PATCH 081/104] fixup some post-rebase chaos --- src/common_tasks.c | 8 ++--- src/common_tasks.h | 8 ++--- src/coroutine.c | 3 +- src/move.c | 10 +++---- src/move.h | 22 +++++++------- src/projectile.c | 2 +- src/random.c | 2 +- src/random.h | 2 +- src/stages/corotest.c | 12 ++++---- src/stages/extra.c | 10 +++---- src/stages/stage1_events.c | 60 +++++++++++++++++++------------------- src/util/miscmath.c | 4 +-- src/util/miscmath.h | 4 +-- 13 files changed, 73 insertions(+), 74 deletions(-) diff --git a/src/common_tasks.c b/src/common_tasks.c index 69a32575cc..92840b4421 100644 --- a/src/common_tasks.c +++ b/src/common_tasks.c @@ -12,7 +12,7 @@ #include "random.h" DEFINE_EXTERN_TASK(common_drop_items) { - complex p = *ARGS.pos; + cmplx p = *ARGS.pos; for(int i = 0; i < ITEM_LAST - ITEM_FIRST; ++i) { for(int j = ARGS.items.as_array[i]; j; --j) { @@ -22,7 +22,7 @@ DEFINE_EXTERN_TASK(common_drop_items) { } } -void common_move_loop(complex *restrict pos, MoveParams *restrict mp) { +void common_move_loop(cmplx *restrict pos, MoveParams *restrict mp) { for(;;) { move_update(pos, mp); YIELD; @@ -53,8 +53,8 @@ DEFINE_EXTERN_TASK(common_call_func) { cmplx common_wander(cmplx origin, double dist, Rect bounds) { int attempts = 32; double angle; - complex dest; - complex dir; + cmplx dest; + cmplx dir; // assert(point_in_rect(origin, bounds)); diff --git a/src/common_tasks.h b/src/common_tasks.h index 08f70fab01..9b1b83dfc1 100644 --- a/src/common_tasks.h +++ b/src/common_tasks.h @@ -19,17 +19,17 @@ DECLARE_EXTERN_TASK( common_drop_items, - { complex *pos; ItemCounts items; } + { cmplx *pos; ItemCounts items; } ); DECLARE_EXTERN_TASK( common_move, - { complex *pos; MoveParams move_params; BoxedEntity ent; } + { cmplx *pos; MoveParams move_params; BoxedEntity ent; } ); DECLARE_EXTERN_TASK( common_move_ext, - { complex *pos; MoveParams *move_params; BoxedEntity ent; } + { cmplx *pos; MoveParams *move_params; BoxedEntity ent; } ); DECLARE_EXTERN_TASK( @@ -46,6 +46,6 @@ INLINE Rect viewport_bounds(double margin) { }; } -complex common_wander(complex origin, double dist, Rect bounds); +cmplx common_wander(cmplx origin, double dist, Rect bounds); #endif // IGUARD_common_tasks_h diff --git a/src/coroutine.c b/src/coroutine.c index 9a07cbfb4e..d55d845f8c 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -308,7 +308,7 @@ void *cotask_resume(CoTask *task, void *arg) { } void *cotask_yield(void *arg) { - CoTask *task = cotask_active(); + attr_unused CoTask *task = cotask_active(); TASK_DEBUG_EVENT(ev); TASK_DEBUG("[%zu] Yielding from task %s", ev, task->debug_label); arg = koishi_yield(arg); @@ -387,7 +387,6 @@ CoWaitResult cotask_wait_event(CoEvent *evt, void *arg) { */ CoTask *task = cotask_active(); - CoEventSnapshot snapshot = coevent_snapshot(evt); coevent_add_subscriber(evt, task); cotask_wait_init(task, COTASK_WAIT_EVENT); diff --git a/src/move.c b/src/move.c index 531312a877..7daace3c72 100644 --- a/src/move.c +++ b/src/move.c @@ -11,14 +11,14 @@ #include "move.h" #include "util/miscmath.h" -complex move_update(complex *restrict pos, MoveParams *restrict p) { - complex v = p->velocity; +cmplx move_update(cmplx *restrict pos, MoveParams *restrict p) { + cmplx v = p->velocity; *pos += v; p->velocity = p->acceleration + p->retention * v; if(p->attraction) { - complex av = p->attraction_point - *pos; + cmplx av = p->attraction_point - *pos; if(p->attraction_max_speed) { av = cclampabs(av, p->attraction_max_speed); @@ -30,8 +30,8 @@ complex move_update(complex *restrict pos, MoveParams *restrict p) { return v; } -complex move_update_multiple(uint times, complex *restrict pos, MoveParams *restrict p) { - complex v = p->velocity; +cmplx move_update_multiple(uint times, cmplx *restrict pos, MoveParams *restrict p) { + cmplx v = p->velocity; while(times--) { move_update(pos, p); diff --git a/src/move.h b/src/move.h index 708f6e1516..c6dad3f840 100644 --- a/src/move.h +++ b/src/move.h @@ -16,42 +16,42 @@ */ typedef struct MoveParams { - complex velocity, acceleration, retention; - complex attraction; - complex attraction_point; + cmplx velocity, acceleration, retention; + cmplx attraction; + cmplx attraction_point; double attraction_max_speed; } MoveParams; -complex move_update(complex *restrict pos, MoveParams *restrict params); -complex move_update_multiple(uint times, complex *restrict pos, MoveParams *restrict params); +cmplx move_update(cmplx *restrict pos, MoveParams *restrict params); +cmplx move_update_multiple(uint times, cmplx *restrict pos, MoveParams *restrict params); -INLINE MoveParams move_linear(complex vel) { +INLINE MoveParams move_linear(cmplx vel) { return (MoveParams) { vel, 0, 1 }; } -INLINE MoveParams move_accelerated(complex vel, complex accel) { +INLINE MoveParams move_accelerated(cmplx vel, cmplx accel) { return (MoveParams) { vel, accel, 1 }; } -INLINE MoveParams move_asymptotic(complex vel0, complex vel1, complex retention) { +INLINE MoveParams move_asymptotic(cmplx vel0, cmplx vel1, cmplx retention) { // NOTE: retention could be derived by something like: exp(-1 / halflife) return (MoveParams) { vel0, vel1 * (1 - retention), retention }; } -INLINE MoveParams move_asymptotic_simple(complex vel, double boost_factor) { +INLINE MoveParams move_asymptotic_simple(cmplx vel, double boost_factor) { // NOTE: this matches the old asymptotic rule semantics exactly double retention = 0.8; return move_asymptotic(vel * (1 + boost_factor * retention), vel, retention); } -INLINE MoveParams move_towards(complex target, complex attraction) { +INLINE MoveParams move_towards(cmplx target, cmplx attraction) { return (MoveParams) { .attraction = attraction, .attraction_point = target, }; } -INLINE MoveParams move_stop(complex retention) { +INLINE MoveParams move_stop(cmplx retention) { return (MoveParams) { .retention = retention }; } diff --git a/src/projectile.c b/src/projectile.c index 1eb9389240..8becd5c8f9 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -151,7 +151,7 @@ static inline int proj_call_rule(Projectile *p, int t) { } if(!(p->flags & PFLAG_MANUALANGLE)) { - complex delta_pos = p->pos - p->prevpos; + cmplx delta_pos = p->pos - p->prevpos; if(delta_pos) { p->angle = carg(delta_pos); diff --git a/src/random.c b/src/random.c index 732a70366c..ae374e5228 100644 --- a/src/random.c +++ b/src/random.c @@ -171,7 +171,7 @@ float vrng_f32_angle(rng_val_t v) { return vrng_f32(v) * (float)(M_PI * 2.0f); } -complex vrng_dir(rng_val_t v) { +cmplx vrng_dir(rng_val_t v) { return cdir(vrng_f64_angle(v)); } diff --git a/src/random.h b/src/random.h index a8b10998ee..1cb36b765a 100644 --- a/src/random.h +++ b/src/random.h @@ -124,7 +124,7 @@ float vrng_f32_angle(rng_val_t v) attr_pure; #define vrng_angle(v) vrng_f64_angle(v) #define rng_angle() vrng_angle(rng_next()) -complex vrng_dir(rng_val_t v) attr_pure; +cmplx vrng_dir(rng_val_t v) attr_pure; #define rng_dir() vrng_dir(rng_next()) bool vrng_f64_chance(rng_val_t v, double chance) attr_pure; diff --git a/src/stages/corotest.c b/src/stages/corotest.c index 15325450b2..3e8ea7aefc 100644 --- a/src/stages/corotest.c +++ b/src/stages/corotest.c @@ -21,12 +21,12 @@ TASK(laserize_proj, { BoxedProjectile p; int t; }) { Projectile *p = TASK_BIND(ARGS.p); WAIT(ARGS.t); - complex pos = p->pos; + cmplx pos = p->pos; double a = p->angle; Color clr = p->color; kill_projectile(p); - complex aim = 12 * cexp(I * a); + cmplx aim = 12 * cexp(I * a); create_laserline(pos, aim, 60, 80, &clr); p = PROJECTILE( @@ -50,7 +50,7 @@ TASK(wait_event_test, { BoxedEnemy e; int rounds; int delay; int cnt; int cnt_in // Event signaled. Since this is an enemy death event, e will be invalid // in the next frame. Let's save its position while we can. - complex pos = e->pos; + cmplx pos = e->pos; while(ARGS.rounds--) { WAIT(ARGS.delay); @@ -58,7 +58,7 @@ TASK(wait_event_test, { BoxedEnemy e; int rounds; int delay; int cnt; int cnt_in real angle_ofs = rng_angle(); for(int i = 0; i < ARGS.cnt; ++i) { - complex aim = cexp(I * (angle_ofs + M_PI * 2.0 * i / (double)ARGS.cnt)); + cmplx aim = cexp(I * (angle_ofs + M_PI * 2.0 * i / (double)ARGS.cnt)); PROJECTILE( .pos = pos, @@ -75,7 +75,7 @@ TASK(wait_event_test, { BoxedEnemy e; int rounds; int delay; int cnt; int cnt_in } TASK_WITH_FINALIZER(test_enemy, { - double hp; complex pos; complex dir; + double hp; cmplx pos; cmplx dir; struct { int x; } for_finalizer; }) { Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, ARGS.hp, BigFairy, NULL, 0)); @@ -103,7 +103,7 @@ TASK_WITH_FINALIZER(test_enemy, { WAIT(10); // pew pew!!! - complex aim = 3 * cnormalize(global.plr.pos - e->pos); + cmplx aim = 3 * cnormalize(global.plr.pos - e->pos); int pcount = 120; for(int i = 0; i < pcount; ++i) { diff --git a/src/stages/extra.c b/src/stages/extra.c index d219816ae6..0e12409df5 100644 --- a/src/stages/extra.c +++ b/src/stages/extra.c @@ -14,20 +14,20 @@ #include "common_tasks.h" TASK(glider_bullet, { - complex pos; double dir; double spacing; int interval; + cmplx pos; double dir; double spacing; int interval; }) { const int nproj = 5; const int nstep = 4; BoxedProjectile projs[nproj]; - const complex positions[][5] = { + const cmplx positions[][5] = { {1+I, -1, 1, -I, 1-I}, {2, I, 1, -I, 1-I}, {2, 1+I, 2-I, -I, 1-I}, {2, 0, 2-I, 1-I, 1-2*I}, }; - complex trans = cdir(ARGS.dir+1*M_PI/4)*ARGS.spacing; + cmplx trans = cdir(ARGS.dir+1*M_PI/4)*ARGS.spacing; for(int i = 0; i < nproj; i++) { projs[i] = ENT_BOX(PROJECTILE( @@ -36,7 +36,7 @@ TASK(glider_bullet, { .color = RGBA(0,0,1,1), )); } - + for(int step = 0;; step++) { int cur_step = step%nstep; @@ -60,7 +60,7 @@ TASK(glider_bullet, { } TASK(glider_fairy, { - double hp; complex pos; complex dir; + double hp; cmplx pos; cmplx dir; }) { Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(VIEWPORT_W/2-10*I, ARGS.hp, BigFairy, NULL, 0)); diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 633869bc0b..97b386eacc 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -664,7 +664,7 @@ TASK(burst_fairy, { cmplx pos; cmplx dir; }) { int n = 1.5 * global.diff - 1; for(int i = -n; i <= n; i++) { - complex aim = cdir(carg(global.plr.pos - e->pos) + 0.2 * i); + cmplx aim = cdir(carg(global.plr.pos - e->pos) + 0.2 * i); PROJECTILE( .proto = pp_crystal, @@ -695,7 +695,7 @@ TASK(circletoss_shoot_circle, { BoxedEnemy e; int duration; int interval; }) { play_loop("shot1_loop"); e->move.velocity *= 0.8; - complex aim = cdir(angle_step * i); + cmplx aim = cdir(angle_step * i); PROJECTILE( .proto = pp_rice, @@ -718,7 +718,7 @@ TASK(circletoss_shoot_toss, { BoxedEnemy e; int times; int duration; int period; double aim_angle = carg(global.plr.pos - e->pos); aim_angle += 0.05 * global.diff * rng_real(); - complex aim = cdir(aim_angle); + cmplx aim = cdir(aim_angle); aim *= rng_range(1, 3); PROJECTILE( @@ -735,7 +735,7 @@ TASK(circletoss_shoot_toss, { BoxedEnemy e; int times; int duration; int period; } } -TASK(circletoss_fairy, { complex pos; complex velocity; complex exit_accel; int exit_time; }) { +TASK(circletoss_fairy, { cmplx pos; cmplx velocity; cmplx exit_accel; int exit_time; }) { Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 1500, BigFairy, NULL, 0)); e->move = move_linear(ARGS.velocity); @@ -763,10 +763,10 @@ TASK(circletoss_fairy, { complex pos; complex velocity; complex exit_accel; int STALL; } -TASK(sinepass_swirl_move, { BoxedEnemy e; complex v; complex sv; }) { +TASK(sinepass_swirl_move, { BoxedEnemy e; cmplx v; cmplx sv; }) { Enemy *e = TASK_BIND(ARGS.e); - complex sv = ARGS.sv; - complex v = ARGS.v; + cmplx sv = ARGS.sv; + cmplx v = ARGS.v; for(;;) { sv -= cimag(e->pos - e->pos0) * 0.03 * I; @@ -775,7 +775,7 @@ TASK(sinepass_swirl_move, { BoxedEnemy e; complex v; complex sv; }) { } } -TASK(sinepass_swirl, { complex pos; complex vel; complex svel; }) { +TASK(sinepass_swirl, { cmplx pos; cmplx vel; cmplx svel; }) { Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 100, Swirl, NULL, 0)); INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { @@ -791,7 +791,7 @@ TASK(sinepass_swirl, { complex pos; complex vel; complex svel; }) { for(;;) { play_sound("shot1"); - complex aim = cnormalize(global.plr.pos - e->pos); + cmplx aim = cnormalize(global.plr.pos - e->pos); aim *= difficulty_value(2, 2, 2.5, 3); PROJECTILE( @@ -805,7 +805,7 @@ TASK(sinepass_swirl, { complex pos; complex vel; complex svel; }) { } } -TASK(circle_fairy, { complex pos; complex target_pos; }) { +TASK(circle_fairy, { cmplx pos; cmplx target_pos; }) { Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 1400, BigFairy, NULL, 0)); INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { @@ -827,7 +827,7 @@ TASK(circle_fairy, { complex pos; complex target_pos; }) { double a_ofs = rng_angle(); for(int i = 0; i < shot_count; ++i) { - complex aim; + cmplx aim; aim = circle_dir_ofs((round & 1) ? i : shot_count - i, shot_count, a_ofs); aim *= difficulty_value(1.7, 2.0, 2.5, 2.5); @@ -854,7 +854,7 @@ TASK(circle_fairy, { complex pos; complex target_pos; }) { STALL; } -TASK(drop_swirl, { complex pos; complex vel; complex accel; }) { +TASK(drop_swirl, { cmplx pos; cmplx vel; cmplx accel; }) { Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 100, Swirl, NULL, 0)); INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { @@ -868,7 +868,7 @@ TASK(drop_swirl, { complex pos; complex vel; complex accel; }) { WAIT(20); while(true) { - complex aim = cnormalize(global.plr.pos - e->pos); + cmplx aim = cnormalize(global.plr.pos - e->pos); aim *= 1 + 0.3 * global.diff + rng_real(); play_sound("shot1"); @@ -883,7 +883,7 @@ TASK(drop_swirl, { complex pos; complex vel; complex accel; }) { } } -TASK(multiburst_fairy, { complex pos; complex target_pos; complex exit_accel; }) { +TASK(multiburst_fairy, { cmplx pos; cmplx target_pos; cmplx exit_accel; }) { Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 1000, Fairy, NULL, 0)); INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { @@ -905,7 +905,7 @@ TASK(multiburst_fairy, { complex pos; complex target_pos; complex exit_accel; }) int n = global.diff - 1; for(int j = -n; j <= n; j++) { - complex aim = cdir(carg(global.plr.pos - e->pos) + j / 5.0); + cmplx aim = cdir(carg(global.plr.pos - e->pos) + j / 5.0); aim *= 2.5; PROJECTILE( @@ -930,7 +930,7 @@ TASK(instantcircle_fairy_shoot, { BoxedEnemy e; int cnt; double speed; double bo play_sound("shot_special1"); for(int i = 0; i < ARGS.cnt; ++i) { - complex vel = ARGS.speed * circle_dir(i, ARGS.cnt); + cmplx vel = ARGS.speed * circle_dir(i, ARGS.cnt); PROJECTILE( .proto = pp_rice, @@ -941,7 +941,7 @@ TASK(instantcircle_fairy_shoot, { BoxedEnemy e; int cnt; double speed; double bo } } -TASK(instantcircle_fairy, { complex pos; complex target_pos; complex exit_accel; }) { +TASK(instantcircle_fairy, { cmplx pos; cmplx target_pos; cmplx exit_accel; }) { Enemy *e = TASK_BIND_UNBOXED(create_enemy1c(ARGS.pos, 1200, Fairy, NULL, 0)); INVOKE_TASK_WHEN(&e->events.killed, common_drop_items, &e->pos, { @@ -1094,7 +1094,7 @@ TASK(burst_fairies_2, NO_ARGS) { TASK(burst_fairies_3, NO_ARGS) { for(int i = 10; i--;) { - complex pos = VIEWPORT_W/2 - 200 * sin(1.17 * global.frames); + cmplx pos = VIEWPORT_W/2 - 200 * sin(1.17 * global.frames); INVOKE_TASK(burst_fairy, pos, rng_sign()); stage_wait(60); } @@ -1104,7 +1104,7 @@ TASK(burst_fairies_3, NO_ARGS) { TASK(sinepass_swirls, { int duration; double level; double dir; }) { int duration = ARGS.duration; double dir = ARGS.dir; - complex pos = CMPLX(ARGS.dir < 0 ? VIEWPORT_W : 0, ARGS.level); + cmplx pos = CMPLX(ARGS.dir < 0 ? VIEWPORT_W : 0, ARGS.level); int delay = difficulty_value(30, 20, 15, 10); for(int t = 0; t < duration; t += delay) { @@ -1127,7 +1127,7 @@ TASK(circletoss_fairies_1, NO_ARGS) { } } -TASK(drop_swirls, { int cnt; complex pos; complex vel; complex accel; }) { +TASK(drop_swirls, { int cnt; cmplx pos; cmplx vel; cmplx accel; }) { for(int i = 0; i < ARGS.cnt; ++i) { INVOKE_TASK(drop_swirl, ARGS.pos, ARGS.vel, ARGS.accel); stage_wait(20); @@ -1162,9 +1162,9 @@ TASK(multiburst_fairies_1, NO_ARGS) { for(int row = 0; row < 3; ++row) { for(int col = 0; col < 5; ++col) { log_debug("WTF %i %i", row, col); - complex pos = rng_range(0, VIEWPORT_W); - complex target_pos = 64 + 64 * col + I * (64 * row + 100); - complex exit_accel = 0.02 * I + 0.03; + cmplx pos = rng_range(0, VIEWPORT_W); + cmplx target_pos = 64 + 64 * col + I * (64 * row + 100); + cmplx exit_accel = 0.02 * I + 0.03; INVOKE_TASK(multiburst_fairy, pos, target_pos, exit_accel); WAIT(10); @@ -1209,7 +1209,7 @@ static int snowflake_bullet_limit(int size) { return SNOWFLAKE_ARMS * 4 * size; } -TASK(make_snowflake, { complex pos; MoveParams move; int size; double rot_angle; BoxedProjectileArray *array; }) { +TASK(make_snowflake, { cmplx pos; MoveParams move; int size; double rot_angle; BoxedProjectileArray *array; }) { const double spacing = 12; const int split = 3; int t = 0; @@ -1219,8 +1219,8 @@ TASK(make_snowflake, { complex pos; MoveParams move; int size; double rot_angle; for(int i = 0; i < SNOWFLAKE_ARMS; i++) { double ang = M_TAU / SNOWFLAKE_ARMS * i + ARGS.rot_angle; - complex phase = cdir(ang); - complex pos0 = ARGS.pos + spacing * j * phase; + cmplx phase = cdir(ang); + cmplx pos0 = ARGS.pos + spacing * j * phase; Projectile *p; @@ -1243,11 +1243,11 @@ TASK(make_snowflake, { complex pos; MoveParams move; int size; double rot_angle; ++t; if(j > split) { - complex pos1 = ARGS.pos + spacing * split * phase; + cmplx pos1 = ARGS.pos + spacing * split * phase; for(int side = -1; side <= 1; side += 2) { - complex phase2 = cdir(M_PI / 4 * side) * phase; - complex pos2 = pos1 + (spacing * (j - split)) * phase2; + cmplx phase2 = cdir(M_PI / 4 * side) * phase; + cmplx pos2 = pos1 + (spacing * (j - split)) * phase2; p = PROJECTILE( .proto = pp_crystal, @@ -1395,7 +1395,7 @@ DEFINE_EXTERN_TASK(stage1_spell_perfect_freeze) { r2 = rng_f32(); } - complex aim = cnormalize(global.plr.pos - boss->pos); + cmplx aim = cnormalize(global.plr.pos - boss->pos); float speed = 2+0.2*global.diff; for(int sign = -1; sign <= 1; sign += 2) { diff --git a/src/util/miscmath.c b/src/util/miscmath.c index ef7737f7f0..6840bbbe27 100644 --- a/src/util/miscmath.c +++ b/src/util/miscmath.c @@ -252,11 +252,11 @@ double circle_angle(double index, double max_elements) { return (index * (M_PI * 2.0)) / max_elements; } -complex circle_dir(double index, double max_elements) { +cmplx circle_dir(double index, double max_elements) { return cdir(circle_angle(index, max_elements)); } -complex circle_dir_ofs(double index, double max_elements, double ofs) { +cmplx circle_dir_ofs(double index, double max_elements, double ofs) { return cdir(circle_angle(index, max_elements) + ofs); } diff --git a/src/util/miscmath.h b/src/util/miscmath.h index a10f71c2fd..eeb4704e97 100644 --- a/src/util/miscmath.h +++ b/src/util/miscmath.h @@ -53,8 +53,8 @@ float smooth(float x) attr_const; float smoothreclamp(float x, float old_min, float old_max, float new_min, float new_max) attr_const; float sanitize_scale(float scale) attr_const; double circle_angle(double index, double max_elements) attr_const; -complex circle_dir(double index, double max_elements) attr_const; -complex circle_dir_ofs(double index, double max_elements, double ofs) attr_const; +cmplx circle_dir(double index, double max_elements) attr_const; +cmplx circle_dir_ofs(double index, double max_elements, double ofs) attr_const; uint64_t upow10(uint n) attr_const; uint digitcnt(uint64_t x) attr_const; float normpdf(float x, float sigma) attr_const; From b5fc716920f73701140ebbc723f8553400cf3e88 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Wed, 11 Dec 2019 11:25:57 +0200 Subject: [PATCH 082/104] WIP proj draw rule revamp; YoumuB revamp; misc changes; giant mess cursed commit --- atlas/common/part/stardust.png | Bin 1143 -> 0 bytes atlas/common/proj/hghost.png | Bin 503 -> 0 bytes atlas/coroutines_temp/part/stardust.webp | Bin 0 -> 2330 bytes atlas/coroutines_temp/proj/hghost.webp | Bin 0 -> 2044 bytes atlas/meson.build | 1 + atlas/overrides/proj/hghost.spr | 5 +- external/koishi | 2 +- .../gfx/atlas_coroutines_temp_0.tex | 7 + .../gfx/atlas_coroutines_temp_0.webp | Bin 0 -> 4464 bytes .../00-taisei.pkgdir/gfx/part/stardust.spr | 6 +- .../00-taisei.pkgdir/gfx/proj/hghost.spr | 14 +- resources/00-taisei.pkgdir/shader/meson.build | 3 +- .../shader/sprite_bullet.frag.glsl | 2 +- .../shader/sprite_bullet_dead.frag.glsl | 4 +- .../shader/sprite_particle.frag.glsl | 7 + .../shader/sprite_particle.prog | 1 + .../sprite_youmu_charged_shot.frag.glsl | 24 - .../shader/sprite_youmu_charged_shot.prog | 1 - .../sprite_youmu_charged_shot.vert.glsl | 7 - .../shader/sprite_youmu_myon_shot.frag.glsl | 2 +- src/boss.c | 18 +- src/coroutine.c | 25 +- src/coroutine.h | 7 + src/drawlayers.inc.h | 1 + src/enemy.c | 58 +- src/entity.c | 8 +- src/entity.h | 11 + src/player.c | 14 +- src/plrmodes/marisa_a.c | 3 +- src/plrmodes/reimu_a.c | 330 ++++++------ src/plrmodes/reimu_b.c | 7 +- src/plrmodes/youmu_a.c | 15 +- src/plrmodes/youmu_b.c | 498 +++++++++--------- src/projectile.c | 409 +++++++++----- src/projectile.h | 55 +- src/random.h | 3 +- src/renderer/api.h | 21 +- src/stages/stage1_events.c | 2 +- src/stages/stage3_events.c | 8 +- src/stages/stage4_events.c | 3 +- src/stages/stage6_events.c | 15 +- src/util/compat.h | 31 +- src/util/compat_cmplx.h | 62 +++ src/util/glm.h | 6 + src/util/miscmath.c | 16 + src/util/miscmath.h | 4 + 46 files changed, 1022 insertions(+), 694 deletions(-) delete mode 100644 atlas/common/part/stardust.png delete mode 100644 atlas/common/proj/hghost.png create mode 100644 atlas/coroutines_temp/part/stardust.webp create mode 100644 atlas/coroutines_temp/proj/hghost.webp create mode 100644 resources/00-taisei.pkgdir/gfx/atlas_coroutines_temp_0.tex create mode 100644 resources/00-taisei.pkgdir/gfx/atlas_coroutines_temp_0.webp create mode 100644 resources/00-taisei.pkgdir/shader/sprite_particle.frag.glsl create mode 100644 resources/00-taisei.pkgdir/shader/sprite_particle.prog delete mode 100644 resources/00-taisei.pkgdir/shader/sprite_youmu_charged_shot.frag.glsl delete mode 100644 resources/00-taisei.pkgdir/shader/sprite_youmu_charged_shot.prog delete mode 100644 resources/00-taisei.pkgdir/shader/sprite_youmu_charged_shot.vert.glsl create mode 100644 src/util/compat_cmplx.h diff --git a/atlas/common/part/stardust.png b/atlas/common/part/stardust.png deleted file mode 100644 index 8d7ffeab8777f62f68cbd955813c6e7fce92be23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1143 zcmV--1c>{IP)*Le00000006+KdUoyrvYjgq;CPo?w^$lFi*1Xo^rp5QHaicob~UKPKbm5bWN;b z^rdS-N1El9n_}#dPKX5$gRNO+&#@xAJ33NVTsx=jy6V=)bdq{&n^8w)z@$|t!d=lY z+FfE2`cUFy&K|-lsiER5fPuQ)M@6rhQeP9u{TdoDLOCDzpwN>*l}!^Y*wS-LS~4HP z&(eHFN%m9jpMlOcHGc-`(rce!PpHHm+KUDq@G=ihq%#tK;uha;Q&L{XzVLiE6g|F2 z82yBV+Hm2+UFNJ5A19Ri0VjgXO;1Dz7HSDsEUytpH|fq7;c);rp~>o^o?)N&H+tBN zHkt`#PVq0sOJ1IJ(JE_&nCsj|mg`sL)vnjLD5(ncjzoAuT6Ov)+UEU8{Sd1LOhOtCK zc8lKWS5x*CfvT&I(QQT_$+K?ZxiMq3^?*1m=`0C^oTG;><1&>FiFeHLX;(wC?yT&rvATFqXGRfV?}^>wWlYoT(royFX-L|8>&bvGoT%YMk&p$(DQ~xznA8nkc z`SFi%qqURsKHhB2&$OeNZwGOhMH?+etG&~0YqES0h52ck?%-8UxS}Ra4}XjFd&X?v zY8`rls6&5a$4}b10~r7S0DwXM*7x`dq**E>4gdfE0000000{a&UoPxRLZtuz002ov JPDHLkV1iKi8dLxP diff --git a/atlas/common/proj/hghost.png b/atlas/common/proj/hghost.png deleted file mode 100644 index 4a5f93d2a8ecf0c76055ad6fc968755bdcee1714..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 503 zcmVsb_n!XC zULFU*4}tf*<~B1(iYJ`OD(>=@4;17*FS$fDqT+7BSg!Dj_k1YAJ03BI#G=A~ag3+M zM}b$Ir9x5nwm&z+TM&o0++{LRLE$tu@_^T0z2Oe~*~(`2a6MT6nn&#CuY$t$+07ju z^MHM}4MVND9O0jA9M57)?h?lSYgvkj&q-WCW90$xu?l z@NW!e3^z@QuizDiz3#GaBxnN@*&S7OqI=U$Tjna6-u7AJT}vg;U5N@#Dy?a-e!S tVG$0m)5tayvu;GxhhPTf0AUs_0RY+m*!xFxf_ne}002ovPDHLkV1mY|;|c%( diff --git a/atlas/coroutines_temp/part/stardust.webp b/atlas/coroutines_temp/part/stardust.webp new file mode 100644 index 0000000000000000000000000000000000000000..7e2749ba45722c6df36c2b16b37a89bb2f2c6670 GIT binary patch literal 2330 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 A@&Et; literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/proj/hghost.webp b/atlas/coroutines_temp/proj/hghost.webp new file mode 100644 index 0000000000000000000000000000000000000000..3809e2aa48c649834536b39c3d0d6e2110fdd568 GIT binary patch literal 2044 zcmV#zq?c|@V&C+G1eyb=E#M}>)BxS)TB|M@UL!0G z6trz4nLqCRcK|{xn9QFtjL!Z~09~s9NRh>hs{Gmu4B9r5pDoQE*zu9u?_EDDt$- zY!~U6-T=%{qzHy>BPrTr?7vcYoS6xr=>DJEw)y?f$ooHW`S0>O{NZug@qk$ty2{XX zF?+}A5IuBV?3R&1Wc;(Pi`kK?LaYJ_2#Wk4Eg;#pZQ8l-Ts`Y6w$*|3I(|b!7ucz zd&U7W${H8YY#&0zfmDTvgntleJYheqNz9{U5lGExj$zKBf&>sbnP4P>kPw`9wPFrt zJY%{B8LR+kVeJtXkgUL|q_TM(p#0xisnf`->^TsZ{ptVpwmKglBz2F;O3 zL<~tU;+e$?N|>AGgfdss+LNNq7~!k8z3BhcEj{egj3glnX6B9+(G~z#e>120`{nhf z2(ebqCizShEzwBd(>KT4l9-E1Y5~n7LMf*4p1tkMJLQoXEjVV@YpUwW3|%GhLRBC! zV?9Jhf`=o2uc~NHU#>W{2oH_7&ncqn zZ8?qF_J682J)C8mXtZlK=r3?)EL9qyiuyIws;KwnJL4#~$zvZSa~Noa+sUT-v!f8|^t`GIZ&x!LE;`aHPDVgRF%fowBg)= z`<2@q6&VcjS7tU-%dz2Ed(d{E=|(Bi+D2WH4qcT_BDf`t>^mMMOXn;_^f~ost*{H15Y&SZBz3nUx4(LGPx>*s6XE zIKPGzLjo|Fc~6SOLGvP^A;IU?y<=on8t`b0p)uwtL%a=wC{z*Hykbw%rP2jGEw;Y66h}B3*LdtNOFYW&&BzZF8vM*q67#P}P741;E0~OkP4XgPx57 z^alGXc|9UwVXe|yfkPZH>XgVpG`8%!^vsTXb?jpAdI(ZIB!CMLUFxJNJ}XN0V`cVm z^C3)P^Zcy0J=IczGJrKIP&JS_m_CfN8ODMvahagt`w%4-zD&t_I; zr#zX^C<1#xS3M&^&sgl8o5|cm(SmqR$4t*OZEL-@5DHmxkl3906y|T~ z!YH4|u4P!VHy|!Up|(L&p`=K50PPqUUZ~;i22tVt4q0)HY*m}xX!Gb>B??Ygk3M_$ z8BEr9Sg|mBKVR1gX;o*MFH5Lxs8oT{>58G*hiD7~CeOt==KaWHJ(k1i?NlX|1ccp1 z7+kW8B!6}+mwDrYg`pok7wxSIb8PIdZ=5b+b0s|_^Cz?chsgX!dYF-Gdy6E1P*Noj^dgaM?4`UipoL!~6g{pLCc337>Et7=ofhgpF{( z#A3ABQdlDX>ESgNy!YS}m~6so>zM6FryD5ulKYip?p4~o-WTaHRl-c4IM!e8=QeMo zEK1iI5I8JkeQV&hi-es#lI}+%*2_zq-aD=+?PjwDX-(pE>&sJV0S-SA9^Wkc+dH+p zyCA@C)7xaZ>0h;}W8n*U@o_zpLNQdPYunxBG*x3}_%nQO9_p3FblJP1EM~WN_U>bI zoOYJ%y8<3d6OR_+-~&{T2Ggv)w=GoU+l$c;9J{wB78V~RvIPnIFwHw-C6vLF#Et$T zHt(Eh8CoHS|DV}UZN~-$j?UQo8UAul#L~e(U{mOm-umOI>#7mR)GnXhhW?2M`aMfY zd&a7T&4qss8+B%Gjvqj8;aI%PDvyKi9M6y5wPXU?UQ}J5tn-gp?J=i5C*kNv2oum7 aQ|fT4tOhPPA_+jz_84NF2P_FdAkab?mfYz8 literal 0 HcmV?d00001 diff --git a/atlas/meson.build b/atlas/meson.build index 216e1f0684..284e26816b 100644 --- a/atlas/meson.build +++ b/atlas/meson.build @@ -44,6 +44,7 @@ atlases = [ ['gray16', [preset_png]], ['huge', []], ['portraits', ['--width=4096', '--height=4096']], + ['coroutines_temp', []], # TODO merge this into `common` when coroutines are merged ] atlas_profiles = [ diff --git a/atlas/overrides/proj/hghost.spr b/atlas/overrides/proj/hghost.spr index aa80c2871e..d869dd38a7 100644 --- a/atlas/overrides/proj/hghost.spr +++ b/atlas/overrides/proj/hghost.spr @@ -1,3 +1,2 @@ - -w = 22 -h = 23 +w = 21 +h = 34 diff --git a/external/koishi b/external/koishi index 88939b7190..76c7d3d316 160000 --- a/external/koishi +++ b/external/koishi @@ -1 +1 @@ -Subproject commit 88939b719021952864030ac9dbc1be4f9d3fa063 +Subproject commit 76c7d3d3160da7a2fc73d558b3a0d759f48e8444 diff --git a/resources/00-taisei.pkgdir/gfx/atlas_coroutines_temp_0.tex b/resources/00-taisei.pkgdir/gfx/atlas_coroutines_temp_0.tex new file mode 100644 index 0000000000..4d6cfc9045 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/atlas_coroutines_temp_0.tex @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +source = res/gfx/atlas_coroutines_temp_0.webp + +# -- Pasted from the global override file -- + +anisotropy = 1 diff --git a/resources/00-taisei.pkgdir/gfx/atlas_coroutines_temp_0.webp b/resources/00-taisei.pkgdir/gfx/atlas_coroutines_temp_0.webp new file mode 100644 index 0000000000000000000000000000000000000000..697ff4765d9b861f077f51c848197c3f76de6502 GIT binary patch literal 4464 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 Ce<}_D literal 0 HcmV?d00001 diff --git a/resources/00-taisei.pkgdir/gfx/part/stardust.spr b/resources/00-taisei.pkgdir/gfx/part/stardust.spr index fcb72863f2..3101a8906a 100644 --- a/resources/00-taisei.pkgdir/gfx/part/stardust.spr +++ b/resources/00-taisei.pkgdir/gfx/part/stardust.spr @@ -1,7 +1,7 @@ # Autogenerated by the atlas packer, do not modify -texture = atlas_common_0 -region_x = 2362 -region_y = 1724 +texture = atlas_coroutines_temp_0 +region_x = 2 +region_y = 2 region_w = 100 region_h = 100 diff --git a/resources/00-taisei.pkgdir/gfx/proj/hghost.spr b/resources/00-taisei.pkgdir/gfx/proj/hghost.spr index 25d7ce24e8..ac829857dc 100644 --- a/resources/00-taisei.pkgdir/gfx/proj/hghost.spr +++ b/resources/00-taisei.pkgdir/gfx/proj/hghost.spr @@ -1,12 +1,12 @@ # Autogenerated by the atlas packer, do not modify -texture = atlas_common_0 -region_x = 1632 -region_y = 372 -region_w = 22 -region_h = 23 +texture = atlas_coroutines_temp_0 +region_x = 106 +region_y = 2 +region_w = 42 +region_h = 68 # -- Pasted from the override file -- -w = 22 -h = 23 +w = 21 +h = 34 diff --git a/resources/00-taisei.pkgdir/shader/meson.build b/resources/00-taisei.pkgdir/shader/meson.build index 5fb9e3b194..cda4e352ef 100644 --- a/resources/00-taisei.pkgdir/shader/meson.build +++ b/resources/00-taisei.pkgdir/shader/meson.build @@ -55,11 +55,10 @@ glsl_files = files( 'sprite_hakkero.frag.glsl', 'sprite_hakkero.vert.glsl', 'sprite_negative.frag.glsl', + 'sprite_particle.frag.glsl', 'sprite_silhouette.frag.glsl', 'sprite_silhouette.vert.glsl', 'sprite_yinyang.frag.glsl', - 'sprite_youmu_charged_shot.frag.glsl', - 'sprite_youmu_charged_shot.vert.glsl', 'sprite_youmu_myon_shot.frag.glsl', 'stage1_water.frag.glsl', 'stage6_sky.frag.glsl', diff --git a/resources/00-taisei.pkgdir/shader/sprite_bullet.frag.glsl b/resources/00-taisei.pkgdir/shader/sprite_bullet.frag.glsl index ad8b4a5ae7..4e81c6c5e3 100644 --- a/resources/00-taisei.pkgdir/shader/sprite_bullet.frag.glsl +++ b/resources/00-taisei.pkgdir/shader/sprite_bullet.frag.glsl @@ -9,5 +9,5 @@ void spriteMain(out vec4 fragColor) { discard; } - fragColor = (color * texel.g + vec4(texel.b)) * (1 - customParams.r); + fragColor = (color * texel.g + vec4(texel.b)) * customParams.r; } diff --git a/resources/00-taisei.pkgdir/shader/sprite_bullet_dead.frag.glsl b/resources/00-taisei.pkgdir/shader/sprite_bullet_dead.frag.glsl index b77d871a3a..e5be58c580 100644 --- a/resources/00-taisei.pkgdir/shader/sprite_bullet_dead.frag.glsl +++ b/resources/00-taisei.pkgdir/shader/sprite_bullet_dead.frag.glsl @@ -4,8 +4,8 @@ void spriteMain(out vec4 fragColor) { vec4 texel = texture(tex, texCoord); - float oWhite = texel.b * (1 - clamp(2 * customParams.r, 0, 1)); - float oColor = texel.g * (1 - clamp(2 * customParams.r - 1, 0, 1)); + float oWhite = texel.b * (1 - clamp(2 * (1 - customParams.r), 0, 1)); + float oColor = texel.g * (1 - clamp(2 * (1 - customParams.r) - 1, 0, 1)); float o = clamp(oWhite + oColor, 0, 1); vec4 col = (texel.g * color + vec4(texel.b)) * o; col.a *= o; diff --git a/resources/00-taisei.pkgdir/shader/sprite_particle.frag.glsl b/resources/00-taisei.pkgdir/shader/sprite_particle.frag.glsl new file mode 100644 index 0000000000..0728dc7286 --- /dev/null +++ b/resources/00-taisei.pkgdir/shader/sprite_particle.frag.glsl @@ -0,0 +1,7 @@ +#version 330 core + +#include "lib/sprite_main.frag.glslh" + +void spriteMain(out vec4 fragColor) { + fragColor = color * texture(tex, texCoord) * customParams.r; +} diff --git a/resources/00-taisei.pkgdir/shader/sprite_particle.prog b/resources/00-taisei.pkgdir/shader/sprite_particle.prog new file mode 100644 index 0000000000..dc6b30e6c8 --- /dev/null +++ b/resources/00-taisei.pkgdir/shader/sprite_particle.prog @@ -0,0 +1 @@ +objects = sprite_bullet.vert sprite_particle.frag diff --git a/resources/00-taisei.pkgdir/shader/sprite_youmu_charged_shot.frag.glsl b/resources/00-taisei.pkgdir/shader/sprite_youmu_charged_shot.frag.glsl deleted file mode 100644 index e165a66ce1..0000000000 --- a/resources/00-taisei.pkgdir/shader/sprite_youmu_charged_shot.frag.glsl +++ /dev/null @@ -1,24 +0,0 @@ -#version 330 core - -#include "lib/sprite_main.frag.glslh" - -/* -ported from: - -.R[1] = mix_colors(c_b, c_r, sqrt(charge)), -.G[1] = c_g, -.B[1] = mix_colors(multiply_colors(c_r, rgba(2, 0, 0, 0)), c_b, 0.75 * charge), -.A[1] = c_a, -*/ - -void spriteMain(out vec4 fragColor) { - vec4 texel = texture(tex, texCoord); - float charge = customParams.r; - - fragColor = vec4(0.0); - fragColor.rgb += texel.r * mix(vec3(color.r, 0.0, 0.0), vec3(0.0, 0.0, color.b), sqrt(charge)); - fragColor.g += texel.g * color.g; - fragColor.rgb += texel.b * mix(vec3(0.0, 0.0, color.b), vec3(2.0 * color.r, 0.0, 0.0), 0.75 * charge); - fragColor.a = texel.a * color.a; - fragColor *= customParams.g; -} diff --git a/resources/00-taisei.pkgdir/shader/sprite_youmu_charged_shot.prog b/resources/00-taisei.pkgdir/shader/sprite_youmu_charged_shot.prog deleted file mode 100644 index 2ff3751073..0000000000 --- a/resources/00-taisei.pkgdir/shader/sprite_youmu_charged_shot.prog +++ /dev/null @@ -1 +0,0 @@ -objects = sprite_youmu_charged_shot.vert sprite_youmu_charged_shot.frag diff --git a/resources/00-taisei.pkgdir/shader/sprite_youmu_charged_shot.vert.glsl b/resources/00-taisei.pkgdir/shader/sprite_youmu_charged_shot.vert.glsl deleted file mode 100644 index 5ae2438f77..0000000000 --- a/resources/00-taisei.pkgdir/shader/sprite_youmu_charged_shot.vert.glsl +++ /dev/null @@ -1,7 +0,0 @@ -#version 330 core - -#define SPRITE_OUT_COLOR -#define SPRITE_OUT_TEXCOORD -#define SPRITE_OUT_CUSTOM - -#include "lib/sprite_default.vert.glslh" diff --git a/resources/00-taisei.pkgdir/shader/sprite_youmu_myon_shot.frag.glsl b/resources/00-taisei.pkgdir/shader/sprite_youmu_myon_shot.frag.glsl index bba1f6d850..0d5b3a0ecd 100644 --- a/resources/00-taisei.pkgdir/shader/sprite_youmu_myon_shot.frag.glsl +++ b/resources/00-taisei.pkgdir/shader/sprite_youmu_myon_shot.frag.glsl @@ -9,5 +9,5 @@ void spriteMain(out vec4 fragColor) { fragColor.rgb += vec3(texel.r); fragColor.rgb += texel.b * vec3(color.r*color.r, color.g*color.g, color.b*color.b); fragColor.a = texel.a * color.a; - fragColor *= (1 - customParams.r); + fragColor *= customParams.r; } diff --git a/src/boss.c b/src/boss.c index f9ab7d60ed..458e5f9102 100644 --- a/src/boss.c +++ b/src/boss.c @@ -578,7 +578,8 @@ static void draw_spell_portrait(Boss *b, int time) { r_state_pop(); } -static void BossGlow(Projectile *p, int t) { +DEPRECATED_DRAW_RULE +static void BossGlow(Projectile *p, int t, ProjDrawRuleArgs args) { float s = 1.0+t/(double)p->timeout*0.5; float fade = 1 - (1.5 - s); float deform = 5 - 10 * fade * fade; @@ -632,7 +633,7 @@ static void spawn_particle_effects(Boss *boss) { if(!(global.frames % 13) && !is_extra) { PARTICLE( .sprite = "smoke", - .pos = cexp(I*global.frames), + .pos = cdir(global.frames), .color = RGBA(shadowcolor->r, shadowcolor->g, shadowcolor->b, 0.0), .rule = enemy_flare, .timeout = 180, @@ -1120,7 +1121,7 @@ void process_boss(Boss **pboss) { if(dying) { float t = (global.frames - boss->current->endtime)/(float)BOSS_DEATH_DELAY + 1; - RNG_ARRAY(rng, 6); + RNG_ARRAY(rng, 2); Color *clr = RGBA_MUL_ALPHA(0.1 + sin(10*t), 0.1 + cos(10*t), 0.5, t); clr->a = 0; @@ -1129,13 +1130,11 @@ void process_boss(Boss **pboss) { .sprite = "petal", .pos = boss->pos, .rule = asymptotic, - .draw_rule = Petal, + .draw_rule = pdraw_petal_random(), .color = clr, .args = { - vrng_sign(rng[5]) * (3 + t * 5 * vrng_real(rng[0])) * cdir(M_PI*8*t), + vrng_sign(rng[0]) * (3 + t * 5 * vrng_real(rng[1])) * cdir(M_PI*8*t), 5+I, - vrng_real(rng[2]) + vrng_real(rng[3])*I, - vrng_real(rng[4]) + 360.0*I*vrng_real(rng[1]) }, .layer = LAYER_PARTICLE_PETAL, .flags = PFLAG_REQUIREDPARTICLE, @@ -1254,7 +1253,8 @@ void boss_reset_motion(Boss *boss) { boss->move.retention = 0.8; } -static void boss_death_effect_draw_overlay(Projectile *p, int t) { +DEPRECATED_DRAW_RULE +static void boss_death_effect_draw_overlay(Projectile *p, int t, ProjDrawRuleArgs args) { FBPair *framebuffers = stage_get_fbpair(FBPAIR_FG); r_framebuffer(framebuffers->front); r_uniform_sampler("noise_tex", "static"); @@ -1360,7 +1360,7 @@ void boss_start_attack(Boss *b, Attack *a) { .color = RGBA(0.2, 0.3, 0.4, 0.0), .rule = linear, .timeout = 50, - .draw_rule = GrowFade, + .draw_rule = pdraw_timeout_scalefade(0, 1, 1, 0), .args = { vrng_sign(rng[2]) * 10 * vrng_range(rng[3], 1, 4) }, ); } diff --git a/src/coroutine.c b/src/coroutine.c index d55d845f8c..518fa8fde2 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -34,11 +34,6 @@ enum { COTASK_WAIT_EVENT, }; -typedef struct CoEventSnapshot { - uint32_t unique_id; - uint16_t num_signaled; -} CoEventSnapshot; - struct CoTask { LIST_INTERFACE(CoTask); koishi_coroutine_t ko; @@ -237,11 +232,18 @@ static void *cotask_wake_and_resume(CoTask *task, void *arg) { return cotask_force_resume(task, arg); } -static CoEventStatus coevent_poll(const CoEvent *evt, const CoEventSnapshot *snap) { +CoEventSnapshot coevent_snapshot(const CoEvent *evt) { + return (CoEventSnapshot) { + .unique_id = evt->unique_id, + .num_signaled = evt->num_signaled, + }; +} + +CoEventStatus coevent_poll(const CoEvent *evt, const CoEventSnapshot *snap) { EVT_DEBUG("[%p]", (void*)evt); - EVT_DEBUG("evt->unique_id == %u", evt->unique_id); + EVT_DEBUG("evt->unique_id == %u", evt->unique_id); EVT_DEBUG("snap->unique_id == %u", snap->unique_id); - EVT_DEBUG("evt->num_signaled == %u", evt->num_signaled); + EVT_DEBUG("evt->num_signaled == %u", evt->num_signaled); EVT_DEBUG("snap->num_signaled == %u", snap->num_signaled); if( @@ -351,13 +353,6 @@ int cotask_wait(int delay) { return 0; } -static inline CoEventSnapshot coevent_snapshot(CoEvent *evt) { - return (CoEventSnapshot) { - .unique_id = evt->unique_id, - .num_signaled = evt->num_signaled, - }; -} - static void coevent_add_subscriber(CoEvent *evt, CoTask *task) { evt->num_subscribers++; assert(evt->num_subscribers != 0); diff --git a/src/coroutine.h b/src/coroutine.h index 4a30869ce6..8c41b4905a 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -53,6 +53,11 @@ typedef struct CoEvent { uint8_t num_subscribers_allocated; } CoEvent; +typedef struct CoEventSnapshot { + uint32_t unique_id; + uint16_t num_signaled; +} CoEventSnapshot; + struct CoSched { LIST_ANCHOR(CoTask) tasks, pending_tasks; }; @@ -99,6 +104,8 @@ void coevent_init(CoEvent *evt); void coevent_signal(CoEvent *evt); void coevent_signal_once(CoEvent *evt); void coevent_cancel(CoEvent *evt); +CoEventSnapshot coevent_snapshot(const CoEvent *evt); +CoEventStatus coevent_poll(const CoEvent *evt, const CoEventSnapshot *snap); void _coevent_array_action(uint num, CoEvent *events, void (*func)(CoEvent*)); diff --git a/src/drawlayers.inc.h b/src/drawlayers.inc.h index 99a3ebe750..056a8105c0 100644 --- a/src/drawlayers.inc.h +++ b/src/drawlayers.inc.h @@ -1,4 +1,5 @@ +LAYER(NODRAW) LAYER(BACKGROUND) LAYER(PLAYER_SHOT) LAYER(PARTICLE_LOW) diff --git a/src/enemy.c b/src/enemy.c index 8d9b20f468..a8ed8921e3 100644 --- a/src/enemy.c +++ b/src/enemy.c @@ -115,27 +115,50 @@ Enemy *create_enemy_p(EnemyList *enemies, cmplx pos, float hp, EnemyVisualRule v return e; } +static void enemy_death_effect(cmplx pos) { + for(int i = 0; i < 10; i++) { + RNG_ARRAY(rng, 2); + PARTICLE( + .sprite = "flare", + .pos = pos, + .timeout = 10, + .rule = linear, + .draw_rule = pdraw_timeout_fade(1, 0), + .args = { vrng_range(rng[0], 3, 13) * vrng_dir(rng[1]) }, + ); + } + + PARTICLE( + .proto = pp_blast, + .pos = pos, + .timeout = 20, + .draw_rule = pdraw_blast(), + .flags = PFLAG_REQUIREDPARTICLE + ); + + PARTICLE( + .proto = pp_blast, + .pos = pos, + .timeout = 20, + .draw_rule = pdraw_blast(), + .flags = PFLAG_REQUIREDPARTICLE + ); + + PARTICLE( + .proto = pp_blast, + .pos = pos, + .timeout = 15, + .draw_rule = pdraw_timeout_scalefade(0, rng_f32_range(1, 2), 1, 0), + .flags = PFLAG_REQUIREDPARTICLE + ); +} + static void* _delete_enemy(ListAnchor *enemies, List* enemy, void *arg) { Enemy *e = (Enemy*)enemy; if(e->hp <= 0 && e->hp != ENEMY_IMMUNE && e->hp != ENEMY_BOMB) { play_sound("enemydeath"); - - for(int i = 0; i < 10; i++) { - RNG_ARRAY(rng, 2); - PARTICLE( - .sprite = "flare", - .pos = e->pos, - .timeout = 10, - .rule = linear, - .draw_rule = Fade, - .args = { vrng_range(rng[0], 3, 13) * vrng_dir(rng[1]) }, - ); - } - - PARTICLE(.proto = pp_blast, .pos = e->pos, .timeout = 20, .draw_rule = Blast, .flags = PFLAG_REQUIREDPARTICLE); - PARTICLE(.proto = pp_blast, .pos = e->pos, .timeout = 20, .draw_rule = Blast, .flags = PFLAG_REQUIREDPARTICLE); - PARTICLE(.proto = pp_blast, .pos = e->pos, .timeout = 15, .draw_rule = GrowFade, .flags = PFLAG_REQUIREDPARTICLE); + enemy_death_effect(e->pos); for(Projectile *p = global.projs.first; p; p = p->next) { if(p->type == PROJ_ENEMY && !(p->flags & PFLAG_NOCOLLISION) && cabs(p->pos - e->pos) < 64) { @@ -242,7 +265,8 @@ void BigFairy(Enemy *e, int t, bool render) { .pos = offset, .color = RGBA(0.0, 0.2, 0.3, 0.0), .rule = enemy_flare, - .draw_rule = Shrink, + .draw_rule = pdraw_timeout_scalefade(2+2*I, 0.5+2*I, 1, 0), + .angle = M_PI/2, .timeout = 50, .args = { (-50.0*I-offset)/50.0, add_ref(e) }, ); diff --git a/src/entity.c b/src/entity.c index dc82660bb8..334bcddc32 100644 --- a/src/entity.c +++ b/src/entity.c @@ -129,6 +129,10 @@ static int ent_cmp(const void *ptr1, const void *ptr2) { return r; } +static inline bool ent_is_drawable(EntityInterface *ent) { + return (ent->draw_layer & ~LAYER_LOW_MASK) > LAYER_NODRAW && ent->draw_func; +} + void ent_draw(EntityPredicate predicate) { call_hooks(&entities.hooks.pre_draw, NULL); qsort(entities.array, entities.num, sizeof(EntityInterface*), ent_cmp); @@ -138,7 +142,7 @@ void ent_draw(EntityPredicate predicate) { ent->index = _ent - entities.array; assert(entities.array[ent->index] == ent); - if(ent->draw_func && predicate(ent)) { + if(ent_is_drawable(ent) && predicate(ent)) { call_hooks(&entities.hooks.pre_draw, ent); r_state_push(); ent->draw_func(ent); @@ -151,7 +155,7 @@ void ent_draw(EntityPredicate predicate) { ent->index = _ent - entities.array; assert(entities.array[ent->index] == ent); - if(ent->draw_func) { + if(ent_is_drawable(ent)) { call_hooks(&entities.hooks.pre_draw, ent); r_state_push(); ent->draw_func(ent); diff --git a/src/entity.h b/src/entity.h index b08eef4742..be653d9a43 100644 --- a/src/entity.h +++ b/src/entity.h @@ -274,6 +274,17 @@ INLINE void _ent_array_add_Entity(struct EntityInterface *ent, BoxedEntityArray } \ } while(0) +#define ENT_ARRAY_FOREACH_COUNTER(_array, _cntr_var, _ent_var, _block) do { \ + for(uint MACROHAX_ADDLINENUM(_ent_array_iterator) = 0; MACROHAX_ADDLINENUM(_ent_array_iterator) < (_array)->size; ++MACROHAX_ADDLINENUM(_ent_array_iterator)) { \ + void *MACROHAX_ADDLINENUM(_ent_array_temp) = ENT_ARRAY_GET((_array), MACROHAX_ADDLINENUM(_ent_array_iterator)); \ + if(MACROHAX_ADDLINENUM(_ent_array_temp) != NULL) { \ + _cntr_var = MACROHAX_ADDLINENUM(_ent_array_iterator); \ + _ent_var = MACROHAX_ADDLINENUM(_ent_array_temp); \ + _block \ + } \ + } \ +} while(0) + #define ENT_ARRAY_CLEAR(_array) ((_array)->size = 0) #endif // IGUARD_entity_h diff --git a/src/player.c b/src/player.c index f873fbf0d6..54b890379f 100644 --- a/src/player.c +++ b/src/player.c @@ -431,7 +431,8 @@ static void _powersurge_trail_draw(Projectile *p, float t, float cmul) { }); } -static void powersurge_trail_draw(Projectile *p, int t) { +DEPRECATED_DRAW_RULE +static void powersurge_trail_draw(Projectile *p, int t, ProjDrawRuleArgs args) { if(t > 0) { _powersurge_trail_draw(p, t - 0.5, 0.25); _powersurge_trail_draw(p, t, 0.25); @@ -709,7 +710,8 @@ static int powersurge_discharge(Projectile *p, int t) { return ACTION_NONE; } -static void powersurge_distortion_draw(Projectile *p, int t) { +DEPRECATED_DRAW_RULE +static void powersurge_distortion_draw(Projectile *p, int t, ProjDrawRuleArgs args) { if(config_get_int(CONFIG_POSTPROCESS) < 1) { return; } @@ -774,7 +776,7 @@ static void player_powersurge_expired(Player *plr) { PROJECTILE( .pos = plr->pos, .size = 1+I, - .draw_rule = ProjNoDraw, + .layer = LAYER_NODRAW, .timeout = 10, .type = PROJ_PLAYER, .rule = powersurge_discharge, @@ -849,7 +851,8 @@ void player_realdeath(Player *plr) { plr->lives--; } -static void player_death_effect_draw_overlay(Projectile *p, int t) { +DEPRECATED_DRAW_RULE +static void player_death_effect_draw_overlay(Projectile *p, int t, ProjDrawRuleArgs args) { FBPair *framebuffers = stage_get_fbpair(FBPAIR_FG); r_framebuffer(framebuffers->front); r_uniform_sampler("noise_tex", "static"); @@ -867,7 +870,8 @@ static void player_death_effect_draw_overlay(Projectile *p, int t) { r_state_push(); } -static void player_death_effect_draw_sprite(Projectile *p, int t) { +DEPRECATED_DRAW_RULE +static void player_death_effect_draw_sprite(Projectile *p, int t, ProjDrawRuleArgs args) { float s = t / p->timeout; float stretch_range = 3, sx, sy; diff --git a/src/plrmodes/marisa_a.c b/src/plrmodes/marisa_a.c index f968e6e17f..87584ba041 100644 --- a/src/plrmodes/marisa_a.c +++ b/src/plrmodes/marisa_a.c @@ -315,7 +315,8 @@ static int marisa_laser_renderer(Enemy *renderer, int t) { #undef FOR_EACH_SLAVE #undef FOR_EACH_REAL_SLAVE -static void marisa_laser_flash_draw(Projectile *p, int t) { +DEPRECATED_DRAW_RULE +static void marisa_laser_flash_draw(Projectile *p, int t, ProjDrawRuleArgs args) { Animation *fire = get_ani("fire"); AniSequence *seq = get_ani_sequence(fire, "main"); Sprite *spr = animation_get_frame(fire, seq, p->birthtime); diff --git a/src/plrmodes/reimu_a.c b/src/plrmodes/reimu_a.c index 18ad31eecf..c57ef1a162 100644 --- a/src/plrmodes/reimu_a.c +++ b/src/plrmodes/reimu_a.c @@ -77,15 +77,6 @@ static int reimu_spirit_needle(Projectile *p, int t) { #define REIMU_SPIRIT_HOMING_SCALE 0.75 -static void reimu_spirit_homing_draw(Projectile *p, int t) { - r_mat_mv_push(); - r_mat_mv_translate(creal(p->pos), cimag(p->pos), 0); - r_mat_mv_rotate(p->angle + M_PI/2, 0, 0, 1); - r_mat_mv_scale(REIMU_SPIRIT_HOMING_SCALE, REIMU_SPIRIT_HOMING_SCALE, 1); - ProjDrawCore(p, &p->color); - r_mat_mv_pop(); -} - static Projectile* reimu_spirit_spawn_ofuda_particle(Projectile *p, int t, double vfactor) { Color *c = HSLA_MUL_ALPHA(t * 0.1, 0.6, 0.7, 0.3); c->a = 0; @@ -173,24 +164,6 @@ static Color *reimu_spirit_orb_color(Color *c, int i) { return c; } -static void reimu_spirit_bomb_orb_visual(Projectile *p, int t) { - cmplx pos = p->pos; - - for(int i = 0; i < 3; i++) { - cmplx offset = (10 + pow(t, 0.5)) * cexp(I * (2 * M_PI / 3*i + sqrt(1 + t * t / 300.0))); - - Color c; - r_draw_sprite(&(SpriteParams) { - .sprite_ptr = p->sprite, - .shader_ptr = p->shader, - .pos = { creal(pos+offset), cimag(pos+offset) }, - .color = reimu_spirit_orb_color(&c, i), - -// .shader_params = &(ShaderCustomParams) {.vector = {0.3,0,0,0}}, - }); - } -} - static int reimu_spirit_bomb_orb_trail(Projectile *p, int t) { if(t < 0) { return ACTION_ACK; @@ -204,162 +177,219 @@ static int reimu_spirit_bomb_orb_trail(Projectile *p, int t) { return ACTION_NONE; } -static void reimu_spirit_bomb_orb_draw_impact(Projectile *p, int t) { - float attack = min(1, (7 + 5 * p->args[0]) * t / p->timeout); - float decay = t / p->timeout; - - Color c = p->color; - color_lerp(&c, RGBA(0.2, 0.1, 0, 1.0), decay); - color_mul_scalar(&c, pow(1 - decay, 2) * 0.75); +static void reimu_spirit_bomb_impact_balls(cmplx pos, int count) { + real offset = rng_real(); - r_draw_sprite(&(SpriteParams) { - .sprite_ptr = p->sprite, - .pos = { creal(p->pos), cimag(p->pos) }, - .color = &c, - .shader_ptr = p->shader, - .shader_params = &p->shader_params, - .scale.both = (0.75 + 0.25 / (pow(decay, 3.0) + 1.0)) + sqrt(5 * (1 - attack)), - }); + for(int i = 0; i < count; i++) { + PARTICLE( + .sprite_ptr = get_sprite("proj/glowball"), + .shader = "sprite_bullet", + .color = HSLA(3 * (float)i / count + offset, 1, 0.5, 0), + .timeout = 60, + .pos = pos, + .args = { cdir(2 * M_PI / count * (i + offset)) * 15 }, + .angle = rng_angle(), + .rule = linear, + .draw_rule = Fade, + .layer = LAYER_BOSS, + .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, + ); + } } -static int reimu_spirit_bomb_orb(Projectile *p, int t) { - int index = creal(p->args[1]) + 0.5; +TASK(reimu_spirit_bomb_orb_impact, { BoxedProjectile orb; }) { + cmplx pos = ENT_UNBOX(ARGS.orb)->pos; - if(t == EVENT_BIRTH) { - if(index == 0) - global.shake_view = 4; - p->args[3] = global.plr.pos; - return ACTION_ACK; - } + play_sound("boom"); + play_sound("spellend"); - if(t == EVENT_DEATH) { - if(global.gameover > 0) { - return ACTION_ACK; - } + global.shake_view = 20; + global.shake_view_fade = 0.6; - global.shake_view = 20; - global.shake_view_fade = 0.6; + double damage = 2000; + double range = 300; - double damage = 2000; - double range = 300; + ent_area_damage(pos, range, &(DamageInfo){damage, DMG_PLAYER_BOMB}, NULL, NULL); + stage_clear_hazards_at(pos, range, CLEAR_HAZARDS_ALL | CLEAR_HAZARDS_NOW); - ent_area_damage(p->pos, range, &(DamageInfo){damage, DMG_PLAYER_BOMB}, NULL, NULL); - stage_clear_hazards_at(p->pos, range, CLEAR_HAZARDS_ALL | CLEAR_HAZARDS_NOW); + reimu_spirit_bomb_impact_balls(pos, 21); - int count = 21; - real offset = rng_real(); + int num_impacts = 3; + int t = global.frames; + BoxedProjectileArray impact_effects = ENT_ARRAY(Projectile, 3); + RNG_ARRAY(rand, num_impacts); + Color base_colors[3]; - for(int i = 0; i < count; i++) { - PARTICLE( - .sprite_ptr = get_sprite("proj/glowball"), - .shader = "sprite_bullet", - .color = HSLA(3 * (float)i / count + offset, 1, 0.5, 0), - .timeout = 60, - .pos = p->pos, - .args = { cdir(2 * M_PI / count * (i + offset)) * 15 }, - .angle = rng_angle(), - .rule = linear, - .draw_rule = Fade, - .layer = LAYER_BOSS, - .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, - ); - } + for(int i = 0; i < 3; ++i) { + base_colors[i] = *reimu_spirit_orb_color(&(Color){0}, i); - for(int i = 0; i < 3; ++i) { - PARTICLE( - .sprite = "blast", - .color = color_mul_scalar(reimu_spirit_orb_color(&(Color){0}, i), 2), - .pos = p->pos + 30 * cexp(I*2*M_PI/3*(i+t*0.1)), - .timeout = 40, - .draw_rule = ScaleFade, - .layer = LAYER_BOSS + 2, - .args = { 0, 0, 7.5*I }, - .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, - ); + PARTICLE( + .sprite = "blast", + .color = color_mul_scalar(COLOR_COPY(&base_colors[i]), 2), + .pos = pos + 30 * cexp(I*2*M_PI/num_impacts*(i+t*0.1)), + .timeout = 40, + .draw_rule = ScaleFade, + .layer = LAYER_BOSS + 2, + .args = { 0, 0, 7.5*I }, + .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, + ); - PARTICLE( - .sprite = "fantasyseal_impact", - .color = reimu_spirit_orb_color(&(Color){0}, i), - .pos = p->pos + 2 * cexp(I*2*M_PI/3*(i+t*0.1)), - .timeout = 120, - .draw_rule = reimu_spirit_bomb_orb_draw_impact, - .layer = LAYER_BOSS + 1, - .args = { rng_real() }, - .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, - ); - } + ENT_ARRAY_ADD(&impact_effects, PARTICLE( + .sprite = "fantasyseal_impact", + .color = reimu_spirit_orb_color(&(Color){0}, i), + .pos = pos + 2 * cexp(I*2*M_PI/num_impacts*(i+t*0.1)), + .timeout = 120, + .layer = LAYER_BOSS + 1, + .angle = -M_PI/2, + .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, + )); + } - play_sound("boom"); - play_sound("spellend"); + for(;;) { + int live = 0; - return ACTION_ACK; + ENT_ARRAY_FOREACH_COUNTER(&impact_effects, int i, Projectile *p, { + float t = (global.frames - p->birthtime) / p->timeout; + float attack = min(1, vrng_range(rand[i], 7, 12) * t); + float decay = t; + + Color c = base_colors[i]; + color_lerp(&c, RGBA(0.2, 0.1, 0, 1.0), decay); + color_mul_scalar(&c, powf(1.0f - decay, 2.0f) * 0.75f); + p->color = c; + p->scale = (0.75f + 0.25f / (powf(decay, 3.0f) + 1.0f)) + sqrtf(5.0f * (1.0f - attack)); + + ++live; + }); + + if(!live) { + break; + } + + YIELD; } +} + +TASK(reimu_spirit_bomb_orb_visual_kill, { BoxedProjectileArray components; }) { + ENT_ARRAY_FOREACH(&ARGS.components, Projectile *p, { + kill_projectile(p); + }); +} + +TASK(reimu_spirit_bomb_orb_visual, { BoxedProjectile orb; }) { + Projectile *orb = TASK_BIND(ARGS.orb); + DECLARE_ENT_ARRAY(Projectile, components, 3); - if(!player_is_bomb_active(&global.plr) > 0) { - return ACTION_DESTROY; + Sprite *glowball = get_sprite("proj/glowball"); + ShaderProgram *shader = r_shader_get("sprite_bullet"); + + for(int i = 0; i < components.capacity; ++i) { + ENT_ARRAY_ADD(&components, PARTICLE( + .sprite_ptr = glowball, + .shader_ptr = shader, + .color = reimu_spirit_orb_color(&(Color){0}, i), + .opacity = 0.7, + .layer = LAYER_PLAYER_FOCUS - 1, + .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, + )); } - double circletime = 100+20*index; + INVOKE_TASK_AFTER(&orb->events.killed, reimu_spirit_bomb_orb_visual_kill, components); + CANCEL_TASK_AFTER(&orb->events.killed, THIS_TASK); + + for(;;) { + cmplx pos = orb->pos; + + ENT_ARRAY_FOREACH_COUNTER(&components, int i, Projectile *p, { + real t = global.frames - p->birthtime; + cmplx32 offset = (10 + pow(t, 0.5)) * cdir(2.0 * M_PI / 3*i + sqrt(1 + t * t / 300)); + p->pos = pos + offset; + }); - if(t == circletime) { - p->args[3] = global.plr.pos - 256*I; - p->flags &= ~PFLAG_NOCOLLISION; - play_sound("redirect"); + YIELD; } +} - cmplx target_circle = global.plr.pos + 10 * sqrt(t) * p->args[0]*(1 + 0.1 * sin(0.2*t)); - p->args[0] *= cexp(I*0.12); +TASK(reimu_spirit_bomb_orb, { BoxedPlayer plr; int index; real angle; }) { + int index = ARGS.index; + + Player *plr = ENT_UNBOX(ARGS.plr); + Projectile *orb = TASK_BIND_UNBOXED(PROJECTILE( + .pos = plr->pos, + .timeout = 200 + 20 * index, + .type = PROJ_PLAYER, + .damage = 1000, + .damage_type = DMG_PLAYER_BOMB, + .size = 10 * (1+I), + .layer = LAYER_NODRAW, + .flags = PFLAG_NOREFLECT | PFLAG_NOCOLLISION | PFLAG_NOMOVE | PFLAG_MANUALANGLE, + )); + + BoxedProjectile b_orb = ENT_BOX(orb); + + INVOKE_TASK(reimu_spirit_bomb_orb_visual, b_orb); + INVOKE_TASK_WHEN(&orb->events.killed, reimu_spirit_bomb_orb_impact, b_orb); + CANCEL_TASK_AFTER(&orb->events.killed, THIS_TASK); + + int circletime = 100 + 20 * index; + cmplx target_homing = plr->pos; + cmplx dir = cdir(ARGS.angle); + cmplx vel = 0; + + for(int t = 0;; ++t) { + if(!player_is_bomb_active(plr)) { + kill_projectile(orb); + return; + } - double circlestrength = 1.0 / (1 + exp(t-circletime)); + if(t == circletime) { + target_homing = global.plr.pos - 256*I; + orb->flags &= ~PFLAG_NOCOLLISION; + play_sound("redirect"); + } - p->args[3] = plrutil_homing_target(p->pos, p->args[3]); - cmplx target_homing = p->args[3]; - cmplx homing = target_homing - p->pos; - cmplx v = 0.3 * (circlestrength * (target_circle - p->pos) + 0.2 * (1-circlestrength) * (homing + 2*homing/(cabs(homing)+0.01))); - p->args[2] += (v - p->args[2]) * 0.1; - p->pos += p->args[2]; + cmplx target_circle = plr->pos + 10 * sqrt(t) * dir * (1 + 0.1 * sin(0.2 * t)); + dir *= cdir(0.12); - for(int i = 0; i < 3 /*&& circlestrength < 1*/; i++) { - cmplx trail_pos = p->pos + 10 * cexp(I*2*M_PI/3*(i+t*0.1)); - cmplx trail_vel = global.plr.pos - trail_pos; - trail_vel *= 3 * circlestrength / cabs(trail_vel); + double circlestrength = 1.0 / (1 + exp(t - circletime)); - PARTICLE( - .sprite_ptr = get_sprite("part/stain"), - // .color = reimu_spirit_orb_color(&(Color){0}, i), - .color = HSLA(t/p->timeout, 0.3, 0.3, 0.0), - .pos = trail_pos, - .angle = rng_angle(), - .timeout = 30, - .draw_rule = ScaleFade, - .rule = reimu_spirit_bomb_orb_trail, - .args = { trail_vel, 0, 0.4 }, - .flags = PFLAG_NOREFLECT, - ); - } + target_homing = plrutil_homing_target(orb->pos, target_homing); + cmplx homing = target_homing - orb->pos; + cmplx v = 0.3 * (circlestrength * (target_circle - orb->pos) + 0.2 * (1 - circlestrength) * (homing + 2*homing/(cabs(homing)+0.01))); + vel += (v - vel) * 0.1; + orb->pos += vel; - return ACTION_NONE; + for(int i = 0; i < 3; i++) { + cmplx trail_pos = orb->pos + 10 * cdir(2*M_PI/3*(i+t*0.1)); + cmplx trail_vel = global.plr.pos - trail_pos; + trail_vel *= 3 * circlestrength / cabs(trail_vel); + + PARTICLE( + .sprite_ptr = get_sprite("part/stain"), + // .color = reimu_spirit_orb_color(&(Color){0}, i), + .color = HSLA(t/orb->timeout, 0.3, 0.3, 0.0), + .pos = trail_pos, + .angle = rng_angle(), + .timeout = 30, + .draw_rule = ScaleFade, + .rule = reimu_spirit_bomb_orb_trail, + .args = { trail_vel, 0, 0.4 }, + .flags = PFLAG_NOREFLECT, + ); + } + + YIELD; + } } static void reimu_spirit_bomb(Player *p) { int count = 6; for(int i = 0; i < count; i++) { - PROJECTILE( - .sprite = "glowball", - .pos = p->pos, - .draw_rule = reimu_spirit_bomb_orb_visual, - .rule = reimu_spirit_bomb_orb, - .args = { cexp(I*2*M_PI/count*i), i, 0, 0}, - .timeout = 200 + 20 * i, - .type = PROJ_PLAYER, - .damage = 1000, - .size = 10 + 10*I, - .layer = LAYER_PLAYER_FOCUS - 1, - .flags = PFLAG_NOREFLECT | PFLAG_NOCOLLISION, - ); + INVOKE_TASK_DELAYED(1, reimu_spirit_bomb_orb, ENT_BOX(p), i, 2*M_PI/count*i); } + global.shake_view = 4; play_sound("bomb_reimu_a"); play_sound("bomb_marisa_b"); } @@ -446,13 +476,13 @@ static void reimu_spirit_slave_shot(Enemy *e, int t) { .pos = e->pos, .color = RGBA_MUL_ALPHA(1, 0.9, 0.95, 0.7), .rule = reimu_spirit_homing, - .draw_rule = reimu_spirit_homing_draw, .args = { v , 60, 0, e->pos + v * VIEWPORT_H * VIEWPORT_W /*creal(e->pos)*/ }, .type = PROJ_PLAYER, .damage_type = DMG_PLAYER_SHOT, .damage = creal(e->args[2]), // .timeout = 60, .shader = "sprite_default", + .scale = REIMU_SPIRIT_HOMING_SCALE, .flags = PFLAG_NOCOLLISIONEFFECT, ); } diff --git a/src/plrmodes/reimu_b.c b/src/plrmodes/reimu_b.c index 71f7d4d634..bd94151eec 100644 --- a/src/plrmodes/reimu_b.c +++ b/src/plrmodes/reimu_b.c @@ -108,12 +108,12 @@ static int reimu_dream_gap_bomb_projectile(Projectile *p, int t) { return ACTION_NONE; } -static void reimu_dream_gap_bomb_projectile_draw(Projectile *p, int t) { +static void reimu_dream_gap_bomb_projectile_draw(Projectile *p, int t, ProjDrawRuleArgs args) { r_draw_sprite(&(SpriteParams) { .sprite_ptr = p->sprite, .shader_ptr = p->shader, .color = &p->color, - .shader_params = &p->shader_params, + .shader_params = &(ShaderCustomParams) {{ p->opacity }}, .pos = { creal(p->pos), cimag(p->pos) }, .scale.both = 0.75 * clamp(t / 5.0, 0.1, 1.0), }); @@ -341,10 +341,11 @@ static void reimu_dream_spawn_warp_effect(cmplx pos, bool exit) { .layer = LAYER_PLAYER_FOCUS, ); + Color *clr = color_mul_scalar(RGBA(0.75, rng_range(0, 0.4), 0.4, 0), 0.8-0.4*exit); PARTICLE( .sprite = exit ? "stain" : "stardust", .pos = pos, - .color = color_mul_scalar(RGBA(0.75, rng_range(0, 0.4), 0.4, 0), 0.8-0.4*exit), + .color = clr, .timeout = 20, .angle = rng_angle(), .draw_rule = ScaleFade, diff --git a/src/plrmodes/youmu_a.c b/src/plrmodes/youmu_a.c index 73ebf6ecf8..52d81d9434 100644 --- a/src/plrmodes/youmu_a.c +++ b/src/plrmodes/youmu_a.c @@ -56,7 +56,8 @@ static int myon_flare_particle_rule(Projectile *p, int t) { return r; } -static void myon_draw_trail(Projectile *p, int t) { +DEPRECATED_DRAW_RULE +static void myon_draw_trail(Projectile *p, int t, ProjDrawRuleArgs args) { float fadein = clamp(t/10.0, p->args[2], 1); float s = min(1, 1 - t / (double)p->timeout); float a = p->color.r*fadein; @@ -128,7 +129,8 @@ static void myon_spawn_trail(Enemy *e, int t) { spawn_stardust(pos, f, 60, stardust_v); } -static void myon_draw_proj_trail(Projectile *p, int t) { +DEPRECATED_DRAW_RULE +static void myon_draw_proj_trail(Projectile *p, int t, ProjDrawRuleArgs args) { float time_progress = t / p->timeout; float s = 2 * time_progress; float a = min(1, s) * (1 - time_progress); @@ -166,12 +168,13 @@ static int myon_proj(Projectile *p, int t) { .angle = p->angle, ); - p->shader_params.vector[0] = pow(1 - min(1, t / 10.0), 2); + p->opacity = 1.0f - powf(1.0f - fminf(1.0f, t / 10.0f), 2.0f); return ACTION_NONE; } -static void myon_proj_draw(Projectile *p, int t) { +DEPRECATED_DRAW_RULE +static void myon_proj_draw(Projectile *p, int t, ProjDrawRuleArgs args) { youmu_common_draw_proj(p, &p->color, 1); } @@ -402,13 +405,11 @@ static void youmu_mirror_bomb_damage_callback(EntityInterface *victim, cmplx vic .sprite = "petal", .pos = victim_origin, .rule = asymptotic, - .draw_rule = Petal, + .draw_rule = pdraw_petal_random(), .color = RGBA(sin(5*t) * t, cos(5*t) * t, 0.5 * t, 0), .args = { vrng_sign(R[0]) * vrng_range(R[1], 3, 3 + 5 * t) * cdir(M_PI*8*t), 5+I, - vrng_real(R[2]) + vrng_real(R[3])*I, - vrng_real(R[4]) + vrng_range(R[5], 0, 360)*I, }, .layer = LAYER_PARTICLE_PETAL, ); diff --git a/src/plrmodes/youmu_b.c b/src/plrmodes/youmu_b.c index 1b7baf29c5..413f857012 100644 --- a/src/plrmodes/youmu_b.c +++ b/src/plrmodes/youmu_b.c @@ -11,224 +11,46 @@ #include "global.h" #include "plrmodes.h" #include "youmu.h" +#include "util/glm.h" static cmplx youmu_homing_target(cmplx org, cmplx fallback) { return plrutil_homing_target(org, fallback); } -static void youmu_homing_draw_common(Projectile *p, float clrfactor, float scale, float alpha) { - Color c = p->color; - color_mul(&c, RGBA(0.7f + 0.3f * clrfactor, 0.9f + 0.1f * clrfactor, 1, 1)); +static void youmu_homing_trail(Projectile *p, cmplx v, int to) { + uint32_t tmp = p->ent.spawn_id; + float u = M_PI * 2.0f * (float)(splitmix32(&tmp) / (double)UINT32_MAX); - if(alpha <= 0) { - return; - } - - bool special_snowflake_shader_bullshit = p->shader_params.vector[1] != 0; - - if(special_snowflake_shader_bullshit) { - // FIXME: maybe move this to logic someh-- nah. Don't even bother with this crap. - float old = p->shader_params.vector[1]; - p->shader_params.vector[1] = alpha; - youmu_common_draw_proj(p, &c, scale); - p->shader_params.vector[1] = old; - } else { - color_mul_scalar(&c, alpha); - youmu_common_draw_proj(p, &c, scale); - } -} - -static void youmu_homing_draw_proj(Projectile *p, int t) { - float a = clamp(1.0f - (float)t / p->args[2], 0, 1); - youmu_homing_draw_common(p, a, 1, 0.5f); -} - -static void youmu_homing_draw_trail(Projectile *p, int t) { - float a = clamp(1.0f - (float)t / p->timeout, 0, 1); - youmu_homing_draw_common(p, a, 5 * (1 - a), 0.15f * a); -} + RNG_ARRAY(R, 5); -static void youmu_trap_draw_trail(Projectile *p, int t) { - float a = clamp(1.0f - (float)t / p->timeout, 0, 1); - youmu_homing_draw_common(p, a, 2 - a, 0.15f * a); -} - -static void youmu_trap_draw_child_proj(Projectile *p, int t) { - float to = p->args[2]; - float a = clamp(1.0 - 3 * ((t - (to - to/3)) / to), 0, 1); - a = 1 - pow(1 - a, 2); - youmu_homing_draw_common(p, a, 1 + 2 * pow(1 - a, 2), a); -} - -static float youmu_trap_charge(int t) { - return pow(clamp(t / 60.0, 0, 1), 1.5); -} + PARTICLE( + .sprite = "stardust", + .pos = p->pos + vrng_range(R[0], 3, 12) * vrng_dir(R[1]), + .color = RGBA(0.0, 0.3 * vrng_real(R[2]), 0.3, 0.0), + // .draw_rule = pdraw_timeout_fade(1, 0), + .draw_rule = pdraw_timeout_scalefade_exp(0.001*I, vrng_range(R[3], 0.5, 1.0)*(1+I), 2, 0, 2), + .move = move_linear(-v), + .timeout = to, + .scale = 0.5, + .angle = vrng_angle(R[4]), + .flags = PFLAG_NOREFLECT | PFLAG_PLRSPECIALPARTICLE | PFLAG_MANUALANGLE, + .layer = LAYER_PARTICLE_MID, + ); -static Projectile* youmu_homing_trail(Projectile *p, cmplx v, int to) { - return PARTICLE( - .sprite_ptr = p->sprite, + PARTICLE( + .sprite = "smoothdot", .pos = p->pos, - .color = &p->color, - .angle = p->angle, - .rule = linear, + .color = color_mul(RGBA(0.2, 0.24, 0.3, 0.2), &p->color), + .move = move_asymptotic_simple(-0.5*v*cdir(0.2*sin(u+3*creal(p->pos)/VIEWPORT_W*M_TAU) + 0.2*cos(u+3*cimag(p->pos)/VIEWPORT_H*M_TAU)), 2), + .draw_rule = pdraw_timeout_scalefade_exp(0.5+0.5*I, 3+7*I, 1, 0, 2), .timeout = to, - .draw_rule = youmu_homing_draw_trail, - .args = { v }, .flags = PFLAG_NOREFLECT, - .shader_ptr = p->shader, - .shader_params = &p->shader_params, .layer = LAYER_PARTICLE_LOW, ); } -static int youmu_homing(Projectile *p, int t) { // a[0]: velocity, a[1]: aim (r: base, i: gain), a[2]: (r: timeout, i: charge), a[3]: initial target - if(t == EVENT_BIRTH) { - return ACTION_ACK; - } - - if(t == EVENT_DEATH) { - PARTICLE( - .sprite = "blast", - .color = color_lerp(RGBA(0.5, 0.7, 1.0, 0.5), RGBA(1.0, 0.65, 0.8, 0.5), cimag(p->args[2])), - .pos = p->pos, - .timeout = 20, - .draw_rule = ScaleFade, - .layer = LAYER_PARTICLE_HIGH, - .args = { 0, 0, 0.5 * I }, - .flags = PFLAG_NOREFLECT, - .angle = rng_angle(), - ); - return ACTION_ACK; - } - - if(t > creal(p->args[2])) { - return ACTION_DESTROY; - } - - p->args[3] = youmu_homing_target(p->pos, p->args[3]); - - double v = cabs(p->args[0]); - cmplx aimdir = cexp(I*carg(p->args[3] - p->pos)); - - p->args[0] += creal(p->args[1]) * aimdir; - // p->args[0] = v * cexp(I*carg(p->args[0])) + cimag(p->args[1]) * aimdir; - p->args[0] *= v / cabs(p->args[0]); - - p->args[1] = creal(p->args[1]) + cimag(p->args[1]) * (1 + I); - - p->angle = carg(p->args[0]); - p->pos += p->args[0]; - - Projectile *trail = youmu_homing_trail(p, 0.5 * p->args[0], 12); - trail->args[2] = p->args[2]; - - p->shader_params.vector[0] = cimag(p->args[2]); - trail->shader_params.vector[0] = cimag(p->args[2]); - - return 1; -} - -static Projectile* youmu_trap_trail(Projectile *p, cmplx v, int t, bool additive) { - Projectile *trail = youmu_homing_trail(p, v, t); - trail->draw_rule = youmu_trap_draw_trail; - // trail->args[3] = global.frames - p->birthtime; - trail->shader_params.vector[0] = p->shader_params.vector[0]; - trail->flags |= PFLAG_REQUIREDPARTICLE; - - if(additive) { - trail->color.a = 0; - } else { - trail->flags |= PFLAG_PLRSPECIALPARTICLE; - } - - return trail; -} - -static int youmu_trap(Projectile *p, int t) { - if(t == EVENT_DEATH) { - PARTICLE( - .proto = pp_blast, - .pos = p->pos, - .timeout = 15, - .draw_rule = Blast, - .flags = PFLAG_REQUIREDPARTICLE, - .layer = LAYER_PARTICLE_LOW, - ); - return ACTION_ACK; - } - - // FIXME: replace this with timeout? - double expiretime = creal(p->args[1]); - - if(t > expiretime) { - return ACTION_DESTROY; - } - - if(t < 0) { - return ACTION_ACK; - } - - float charge = youmu_trap_charge(t); - p->shader_params.vector[0] = charge; - - if(!(global.plr.inputflags & INFLAG_FOCUS)) { - PARTICLE( - .proto = pp_blast, - .pos = p->pos, - .timeout = 20, - .draw_rule = Blast, - .flags = PFLAG_REQUIREDPARTICLE, - .layer = LAYER_PARTICLE_LOW, - ); - - PARTICLE( - .proto = pp_blast, - .pos = p->pos, - .timeout = 23, - .draw_rule = Blast, - .flags = PFLAG_REQUIREDPARTICLE, - .layer = LAYER_PARTICLE_LOW, - ); - - int cnt = round(creal(p->args[2])); - int dmg = cimag(p->args[2]); - cmplx aim = p->args[3]; - - for(int i = 0; i < cnt; ++i) { - int dur = 120; // 55 + 20 * nfrand(); - float a = (i / (float)cnt) * M_PI * 2; - cmplx dir = cexp(I*(a)); - - PROJECTILE( - .proto = pp_youmu, - .pos = p->pos, - .color = RGBA(1, 1, 1, 0.85), - .rule = youmu_homing, - .args = { 5 * (1 + charge) * dir, aim, dur + charge*I, creal(p->pos) - VIEWPORT_H*I }, - .type = PROJ_PLAYER, - .damage = dmg, - .draw_rule = youmu_trap_draw_child_proj, - .shader = "sprite_youmu_charged_shot", - .shader_params = &(ShaderCustomParams){{ 0, 1 }}, - ); - } - - // TODO: dedicated sound for this? - play_sound("enemydeath"); - play_sound("hit"); - - return ACTION_DESTROY; - } - - p->angle = global.frames + t; - p->pos += p->args[0] * (0.01 + 0.99 * max(0, (10 - t) / 10.0)); - - youmu_trap_trail(p, cexp(I*p->angle), 30 * (1 + charge), true); - youmu_trap_trail(p, cexp(I*-p->angle), 30, false); - return 1; -} - -static void youmu_particle_slice_draw(Projectile *p, int t) { +DEPRECATED_DRAW_RULE +static void youmu_particle_slice_draw(Projectile *p, int t, ProjDrawRuleArgs args) { double lifetime = p->timeout; double tt = t/lifetime; double f = 0; @@ -286,18 +108,15 @@ static int youmu_particle_slice_logic(Projectile *p, int t) { if(t%5 == 0) { cmplx phase = cdir(p->angle); - RNG_ARRAY(R, 4); PARTICLE( .sprite = "petal", .pos = p->pos-400*phase, .rule = youmu_slice_petal, - .draw_rule = Petal, + .draw_rule = pdraw_petal_random(), .args = { phase, phase*cdir(0.1), - vrng_real(R[0]) + vrng_real(R[1])*I, - vrng_real(R[2]) + vrng_range(R[3], 0, 360)*I, }, .layer = LAYER_PARTICLE_HIGH | 0x2, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, @@ -380,8 +199,7 @@ static void youmu_haunting_power_shot(Player *plr, int p) { .proto = pp_hghost, .pos = plr->pos, .rule = youmu_asymptotic, - .color = RGB(0.7 + 0.3 * (1-np), 0.8 + 0.2 * sqrt(1-np), 1.0), - .draw_rule = youmu_homing_draw_proj, + .color = color_mul_scalar(RGB(0.7 + 0.3 * (1-np), 0.8 + 0.2 * sqrt(1-np), 1.0), 0.5), .args = { speed * dir * (1 - 0.25 * (1 - np)), 3 * (1 - pow(1 - np, 2)), 60, }, .type = PROJ_PLAYER, .damage = 20, @@ -390,6 +208,237 @@ static void youmu_haunting_power_shot(Player *plr, int p) { } } +TASK(youmu_homing_shot, { BoxedPlayer plr; }) { + Projectile *p = TASK_BIND_UNBOXED(PROJECTILE( + .proto = pp_hghost, + .pos = ENT_UNBOX(ARGS.plr)->pos, + .color = RGB(0.75, 0.9, 1), + .type = PROJ_PLAYER, + .damage = 120, + .shader = "sprite_default", + )); + + real speed = 10; + real aim_strength = 0; + real aim_strength_accel = 0.02; + p->move = move_linear(-I * speed); + cmplx target = VIEWPORT_W * 0.5; + + for(int i = 0; i < 60; ++i) { + target = youmu_homing_target(p->pos, target); + cmplx aimdir = cnormalize(target - p->pos - p->move.velocity*10); + p->move.velocity += aim_strength * aimdir; + p->move.velocity *= speed / cabs(p->move.velocity); + aim_strength += aim_strength_accel; + + youmu_homing_trail(p, 0.5 * p->move.velocity, 12); + YIELD; + } +} + +TASK(youmu_orb_homing_spirit_expire, { BoxedProjectile p; }) { + Projectile *p = ENT_UNBOX(ARGS.p); + + PARTICLE( + .sprite_ptr = p->sprite, + .shader_ptr = p->shader, + .color = &p->color, + .timeout = 30, + .draw_rule = pdraw_timeout_scalefade(1+I, 0.1+I, 1, 0), + .pos = p->pos, + .move = p->move, + .angle = p->angle, + .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, + .layer = LAYER_PLAYER_SHOT, + ); +} + +static int youmu_orb_homing_spirit_timeout(Projectile *orb) { + return orb->timeout - projectile_time(orb); +} + +TASK(youmu_orb_homing_spirit, { cmplx pos; cmplx velocity; cmplx target; real charge; real damage; real spin; BoxedProjectile orb; }) { + int timeout = youmu_orb_homing_spirit_timeout(ENT_UNBOX(ARGS.orb)); + + if(timeout <= 0) { + return; + } + + Projectile *p = TASK_BIND_UNBOXED(PROJECTILE( + .proto = pp_hghost, + .pos = ARGS.pos, + .color = color_mul_scalar(RGB(0.75, 0.9, 1), 0.5), + .type = PROJ_PLAYER, + .timeout = timeout, + .damage = ARGS.damage, + .shader = "sprite_particle", + )); + + INVOKE_TASK_AFTER(&p->events.killed, youmu_orb_homing_spirit_expire, ENT_BOX(p)); + + real speed = cabs(ARGS.velocity); + real speed_target = speed; + real aim_strength = -0.1; + p->move = move_accelerated(ARGS.velocity, -0.06 * ARGS.velocity); + p->move.retention = cdir(ARGS.spin); + cmplx target = ARGS.target; + + bool aim_peaked = false; + bool orb_died = false; + Projectile *orb = NULL; + + for(;;) { + if(!orb_died) { + orb = ENT_UNBOX(ARGS.orb); + + if(orb == NULL) { + orb_died = true; + p->timeout = 0; + // p->move.velocity = 0; + p->move.retention *= 0.9; + aim_peaked = false; + aim_strength = -0.2; + speed *= 1.2; + } + } + + if(orb) { + target = orb->pos; + } else { + target = youmu_homing_target(p->pos, creal(global.plr.pos) - 128*I); + } + + cmplx aimdir = cnormalize(target - p->pos - p->move.velocity); + capproach_asymptotic_p(&p->move.retention, 0.8, 0.1, 1e-3); + p->move.acceleration *= 0.95; + p->move.acceleration += aim_strength * aimdir; + + if(aim_peaked) { + if(!orb) { + approach_p(&aim_strength, 0.00, 0.001); + } + } else { + approach_p(&aim_strength, 0.1, 0.02); + if(aim_strength == 0.1) { + aim_peaked = true; + } + } + + real s = max(speed, cabs(p->move.velocity)); + p->move.velocity = s * cnormalize(p->move.velocity + aim_strength * s * aimdir); + approach_asymptotic_p(&speed, speed_target, 0.05, 1e-5); + + youmu_homing_trail(p, 0.5 * p->move.velocity, 12); + YIELD; + } +} + +TASK(youmu_orb_update, { BoxedPlayer plr; BoxedProjectile orb; }) { + Player *plr = ENT_UNBOX(ARGS.plr); + Projectile *orb = TASK_BIND(ARGS.orb); + + for(;;) { + float tf = glm_ease_bounce_out(1.0f - projectile_timeout_factor(orb)); + orb->color.g = tf * tf; + orb->color.b = tf; + orb->scale = 0.5 + 0.5 * tf; + orb->angle += 0.2; + + // TODO events for player input? + if(!(plr->inputflags & INFLAG_FOCUS)) { + PARTICLE( + .sprite = "blast_huge_rays", + .pos = orb->pos, + .timeout = 20, + .color = RGBA(0.1, 0.5, 0.1, 0.0), + .draw_rule = pdraw_timeout_scalefade_exp(0.01*(1+I), 1, 1, 0, 2), + .flags = PFLAG_REQUIREDPARTICLE, + .angle = rng_angle(), + .layer = LAYER_PARTICLE_LOW, + ); + + PARTICLE( + .sprite = "blast_huge_halo", + .pos = orb->pos, + .timeout = 30, + .color = RGBA(0.1, 0.1, 0.5, 0.0), + .draw_rule = pdraw_timeout_scalefade_exp(1, 0.01*(1+I), 1, 0, 2), + .flags = PFLAG_REQUIREDPARTICLE, + .angle = rng_angle(), + .layer = LAYER_PARTICLE_LOW, + ); + + PARTICLE( + .sprite = "blast_huge_halo", + .pos = orb->pos, + .timeout = 40, + .color = RGBA(0.5, 0.1, 0.1, 0.0), + .draw_rule = pdraw_timeout_scalefade_exp(0.8, -0.3*(1+I), 1, 0, 2), + .flags = PFLAG_REQUIREDPARTICLE, + .angle = rng_angle(), + .layer = LAYER_PARTICLE_LOW, + ); + + // TODO sound effect; + kill_projectile(orb); + break; + } + + YIELD; + } +} + +TASK(youmu_orb_death, { BoxedProjectile orb; BoxedTask control_task; }) { + cotask_cancel(cotask_unbox(ARGS.control_task)); + Projectile *orb = ENT_UNBOX(ARGS.orb); + + PARTICLE( + .proto = pp_blast, + .pos = orb->pos, + .timeout = 20, + .draw_rule = pdraw_blast(), + .flags = PFLAG_REQUIREDPARTICLE, + .layer = LAYER_PARTICLE_LOW, + ); + + PARTICLE( + .proto = pp_blast, + .pos = orb->pos, + .timeout = 23, + .draw_rule = pdraw_blast(), + .flags = PFLAG_REQUIREDPARTICLE, + .layer = LAYER_PARTICLE_LOW, + ); +} + +TASK(youmu_orb_shot, { BoxedPlayer plr; }) { + Player *plr = ENT_UNBOX(ARGS.plr); + int pwr = plr->power / 100; + + Projectile *orb = TASK_BIND_UNBOXED(PROJECTILE( + .proto = pp_youhoming, + .pos = plr->pos, + .color = RGB(1, 1, 1), + .type = PROJ_PLAYER, + .damage = 1000, + .timeout = 100 + 10 * pwr, + .move = move_asymptotic(-30.0*I, -0.7*I, 0.8), + .flags = PFLAG_MANUALANGLE, + )); + + INVOKE_TASK(youmu_orb_update, ARGS.plr, ENT_BOX(orb)); + INVOKE_TASK_AFTER(&orb->events.killed, youmu_orb_death, ENT_BOX(orb), THIS_TASK); + + real pdmg = 120 - 18 * 4 * (1 - pow(1 - pwr / 4.0, 1.5)); + cmplx v = 5 * I; + + for(;;) { + WAIT(11); + INVOKE_TASK(youmu_orb_homing_spirit, orb->pos, v, 0, 0, pdmg, 0.1, ENT_BOX(orb)); + INVOKE_TASK(youmu_orb_homing_spirit, orb->pos, v, 0, 0, pdmg, -0.1, ENT_BOX(orb)); + } +} + static void youmu_haunting_shot(Player *plr) { youmu_common_shot(plr); @@ -398,34 +447,11 @@ static void youmu_haunting_shot(Player *plr) { int pwr = plr->power / 100; if(!(global.frames % (45 - 4 * pwr))) { - int pcnt = 11 + pwr * 4; - int pdmg = 120 - 18 * 4 * (1 - pow(1 - pwr / 4.0, 1.5)); - cmplx aim = 0.15*I; - - PROJECTILE( - .proto = pp_youhoming, - .pos = plr->pos, - .color = RGB(1, 1, 1), - .rule = youmu_trap, - .args = { -30.0*I, 120, pcnt+pdmg*I, aim }, - .type = PROJ_PLAYER, - .damage = 1000, - .shader = "sprite_youmu_charged_shot", - .shader_params = &(ShaderCustomParams){{ 0, 1 }}, - ); + INVOKE_TASK(youmu_orb_shot, ENT_BOX(plr)); } } else { if(!(global.frames % 6)) { - PROJECTILE( - .proto = pp_hghost, - .pos = plr->pos, - .color = RGB(0.75, 0.9, 1), - .rule = youmu_homing, - .args = { -10.0*I, 0.02*I, 60, VIEWPORT_W*0.5 }, - .type = PROJ_PLAYER, - .damage = 120, - .shader = "sprite_default", - ); + INVOKE_TASK(youmu_homing_shot, ENT_BOX(plr)); } for(int p = 1; p <= 2*PLR_MAX_POWER/100; ++p) { @@ -448,10 +474,6 @@ static void youmu_haunting_preload(void) { "part/youmu_slice", NULL); - preload_resources(RES_SHADER_PROGRAM, flags, - "sprite_youmu_charged_shot", - NULL); - preload_resources(RES_TEXTURE, flags, "youmu_bombbg1", NULL); diff --git a/src/projectile.c b/src/projectile.c index 8becd5c8f9..8fab134807 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -13,12 +13,12 @@ #include "global.h" #include "list.h" #include "stageobjects.h" +#include "util/glm.h" static ht_ptr2int_t shader_sublayer_map; static ProjArgs defaults_proj = { .sprite = "proj/", - .draw_rule = ProjDraw, .dest = &global.projs, .type = PROJ_ENEMY, .damage_type = DMG_ENEMY_SHOT, @@ -30,13 +30,12 @@ static ProjArgs defaults_proj = { static ProjArgs defaults_part = { .sprite = "part/", - .draw_rule = ProjDraw, .dest = &global.particles, .type = PROJ_PARTICLE, .damage_type = DMG_UNDEFINED, .color = RGB(1, 1, 1), .blend = BLEND_PREMUL_ALPHA, - .shader = "sprite_default", + .shader = "sprite_particle", .layer = LAYER_PARTICLE_MID, }; @@ -60,8 +59,8 @@ static void process_projectile_args(ProjArgs *args, ProjArgs *defaults) { } } - if(!args->draw_rule) { - args->draw_rule = ProjDraw; + if(!args->draw_rule.func) { + args->draw_rule = pdraw_basic(); } if(!args->blend) { @@ -100,6 +99,16 @@ static void process_projectile_args(ProjArgs *args, ProjArgs *defaults) { } } + if(args->scale == 0) { + args->scale = 1+I; + } else if(cimagf(args->scale) == 0) { + args->scale = CMPLXF(crealf(args->scale), crealf(args->scale)); + } + + if(args->opacity == 0) { + args->opacity = 1; + } + assert(args->type <= PROJ_PLAYER); } @@ -196,12 +205,48 @@ cmplx projectile_graze_size(Projectile *p) { return 0; } +float32 projectile_timeout_factor(Projectile *p) { + return p->timeout ? (global.frames - p->birthtime) / p->timeout : 0; +} + static double projectile_rect_area(Projectile *p) { double w, h; projectile_size(p, &w, &h); return w * h; } +void projectile_set_layer(Projectile *p, drawlayer_t layer) { + if(!(layer & LAYER_LOW_MASK)) { + drawlayer_low_t sublayer; + + switch(p->type) { + case PROJ_ENEMY: + // 1. Large projectiles go below smaller ones. + sublayer = LAYER_LOW_MASK - (drawlayer_low_t)projectile_rect_area(p); + sublayer = (sublayer << 4) & LAYER_LOW_MASK; + // 2. Group by shader (hardcoded precedence). + sublayer |= ht_get(&shader_sublayer_map, p->shader, 0) & 0xf; + // If specific blending order is required, then you should set up the sublayer manually. + layer |= sublayer; + break; + + case PROJ_PARTICLE: + // 1. Group by shader (hardcoded precedence). + sublayer = ht_get(&shader_sublayer_map, p->shader, 0) & 0xf; + sublayer <<= 4; + sublayer |= 0x100; + // If specific blending order is required, then you should set up the sublayer manually. + layer |= sublayer; + break; + + default: + break; + } + } + + p->ent.draw_layer = layer; +} + static Projectile* _create_projectile(ProjArgs *args) { if(IN_DRAW_CODE) { log_fatal("Tried to spawn a projectile while in drawing code"); @@ -228,14 +273,11 @@ static Projectile* _create_projectile(ProjArgs *args) { p->damage_type = args->damage_type; p->clear_flags = 0; p->move = args->move; - - if(args->shader_params != NULL) { - p->shader_params = *args->shader_params; - } + p->scale = args->scale; + p->opacity = args->opacity; memcpy(p->args, args->args, sizeof(p->args)); - p->ent.draw_layer = args->layer; p->ent.draw_func = ent_draw_projectile; projectile_set_prototype(p, args->proto); @@ -247,33 +289,7 @@ static Projectile* _create_projectile(ProjArgs *args) { log_fatal("Tried to spawn a projectile with invalid size %f x %f", creal(p->size), cimag(p->size)); } - if(!(p->ent.draw_layer & LAYER_LOW_MASK)) { - drawlayer_low_t sublayer; - - switch(p->type) { - case PROJ_ENEMY: - // 1. Large projectiles go below smaller ones. - sublayer = LAYER_LOW_MASK - (drawlayer_low_t)projectile_rect_area(p); - sublayer = (sublayer << 4) & LAYER_LOW_MASK; - // 2. Group by shader (hardcoded precedence). - sublayer |= ht_get(&shader_sublayer_map, p->shader, 0) & 0xf; - // If specific blending order is required, then you should set up the sublayer manually. - p->ent.draw_layer |= sublayer; - break; - - case PROJ_PARTICLE: - // 1. Group by shader (hardcoded precedence). - sublayer = ht_get(&shader_sublayer_map, p->shader, 0) & 0xf; - sublayer <<= 4; - sublayer |= 0x100; - // If specific blending order is required, then you should set up the sublayer manually. - p->ent.draw_layer |= sublayer; - break; - - default: - break; - } - } + projectile_set_layer(p, args->layer); coevent_init(&p->events.killed); ent_register(&p->ent, ENT_PROJECTILE); @@ -444,14 +460,14 @@ static void ent_draw_projectile(EntityInterface *ent) { static Projectile prev_state; memcpy(&prev_state, proj, sizeof(Projectile)); - proj->draw_rule(proj, global.frames - proj->birthtime); + proj->draw_rule.func(proj, global.frames - proj->birthtime, proj->draw_rule.args); if(memcmp(&prev_state, proj, sizeof(Projectile))) { set_debug_info(&proj->debug); log_fatal("Projectile modified its state in draw rule"); } #else - proj->draw_rule(proj, global.frames - proj->birthtime); + proj->draw_rule.func(proj, global.frames - proj->birthtime, proj->draw_rule.args); #endif } @@ -481,10 +497,11 @@ Projectile* spawn_projectile_collision_effect(Projectile *proj) { .flags = proj->flags | PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, .layer = LAYER_PARTICLE_HIGH, .shader_ptr = proj->shader, - .rule = linear, - .draw_rule = DeathShrink, + .draw_rule = pdraw_timeout_scale(2+I, 0+I), .angle = proj->angle, - .args = { 5*cexp(I*proj->angle) }, + // .rule = linear, + // .args = { 5*cexp(I*proj->angle) }, + .move = { .velocity = 5*cexp(I*proj->angle), .retention = 0.95 }, .timeout = 10, ); } @@ -524,9 +541,10 @@ bool clear_projectile(Projectile *proj, uint flags) { } void kill_projectile(Projectile* proj) { - coevent_signal_once(&proj->events.killed); proj->flags |= PFLAG_INTERNAL_DEAD | PFLAG_NOCOLLISION | PFLAG_NOCLEAR; - proj->draw_rule = ProjNoDraw; + proj->ent.draw_layer = LAYER_NODRAW; + // WARNING: must be done last, an event handler may cancel the task this function is running in! + coevent_signal_once(&proj->events.killed); } void process_projectiles(ProjectileList *projlist, bool collision) { @@ -617,6 +635,10 @@ bool projectile_is_clearable(Projectile *p) { return false; } +int projectile_time(Projectile *p) { + return global.frames - p->birthtime; +} + int linear(Projectile *p, int t) { // sure is physics in here; a[0]: velocity if(t == EVENT_DEATH) { return ACTION_ACK; @@ -702,24 +724,25 @@ static inline void apply_common_transforms(Projectile *proj, int t) { */ } -static void bullet_highlight_draw(Projectile *p, int t) { +static void bullet_highlight_draw(Projectile *p, int t, ProjDrawRuleArgs args) { float timefactor = t / p->timeout; - float sx = creal(p->args[0]); - float sy = cimag(p->args[0]); + float sx = args[0].as_float[0]; + float sy = args[0].as_float[1]; + float tex_angle = args[1].as_float[0]; float opacity = pow(1 - timefactor, 2); opacity = min(1, 1.5 * opacity) * min(1, timefactor * 10); - opacity *= 1 - p->shader_params.vector[0]; + opacity *= p->opacity; r_mat_tex_push(); r_mat_tex_translate(0.5, 0.5, 0); - r_mat_tex_rotate(p->args[1], 0, 0, 1); + r_mat_tex_rotate(tex_angle, 0, 0, 1); r_mat_tex_translate(-0.5, -0.5, 0); r_draw_sprite(&(SpriteParams) { .sprite_ptr = p->sprite, .shader_ptr = p->shader, - .shader_params = &(ShaderCustomParams) {{ 1 - opacity }}, + .shader_params = &(ShaderCustomParams) {{ opacity }}, .color = &p->color, .scale = { .x = sx, .y = sy }, .rotation.angle = p->angle + M_PI * 0.5, @@ -757,8 +780,7 @@ static Projectile* spawn_projectile_highlight_effect_internal(Projectile *p, boo .shader = "sprite_bullet", .size = p->size * 4.5, .layer = LAYER_PARTICLE_HIGH | 0x40, - .draw_rule = ScaleSquaredFade, - .args = { 0, 0, (0 + 2*I) * 0.1 * fmax(sx, sy) * (1 - 0.2 * vrng_real(R[0])) }, + .draw_rule = pdraw_timeout_scalefade_exp(0, 0.2f * fmaxf(sx, sy) * vrng_f32_range(R[0], 0.8f, 1.0f), 1, 0, 2), .angle = vrng_angle(R[1]), .pos = p->pos + vrng_range(R[2], 0, 8) * vrng_dir(R[3]), .flags = PFLAG_NOREFLECT, @@ -778,8 +800,11 @@ static Projectile* spawn_projectile_highlight_effect_internal(Projectile *p, boo .size = p->size * 4.5, .shader = "sprite_bullet", .layer = LAYER_PARTICLE_HIGH | 0x80, - .draw_rule = bullet_highlight_draw, - .args = { 0.125 * (sx + I * sy), vrng_angle(R[0]) }, + .draw_rule = { + bullet_highlight_draw, + .args[0].as_cmplx = 0.125 * (sx + I * sy), + .args[1].as_float = vrng_angle(R[0]), + }, .angle = p->angle, .pos = p->pos + vrng_range(R[1], 0, 5) * vrng_dir(R[2]), .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, @@ -800,25 +825,24 @@ static Projectile* spawn_bullet_spawning_effect(Projectile *p) { return NULL; } -static void projectile_clear_effect_draw(Projectile *p, int t) { +static void projectile_clear_effect_draw(Projectile *p, int t, ProjDrawRuleArgs args) { r_mat_mv_push(); apply_common_transforms(p, t); float timefactor = t / p->timeout; float plrfactor = clamp(1 - (cabs(p->pos - global.plr.pos) - 64) / 128, 0, 1); plrfactor *= clamp(timefactor * 10, 0, 1); - float f = 1 - (1 - timefactor) * (1 - plrfactor); + float opacity = timefactor * plrfactor; Sprite spr = *p->sprite; Sprite *ispr = get_sprite("item/bullet_point"); - spr.w = f * ispr->w + (1 - f) * spr.w; - spr.h = f * ispr->h + (1 - f) * spr.h; + spr.w = lerpf(spr.w, ispr->w, opacity); + spr.h = lerpf(spr.h, ispr->h, opacity); r_draw_sprite(&(SpriteParams) { .sprite_ptr = &spr, - .color = RGBA(p->color.r, p->color.g, p->color.b, p->color.a * (1 - 0)), - .shader_params = &(ShaderCustomParams){{ f }}, - // .scale.both = 1 + 0.5 * sqrt(tf), + .color = &p->color, + .shader_params = &(ShaderCustomParams){{ opacity }}, }); r_mat_mv_pop(); @@ -847,7 +871,7 @@ static int projectile_clear_effect_logic(Projectile *p, int t) { return ACTION_NONE; } -Projectile* spawn_projectile_clear_effect(Projectile *proj) { +Projectile *spawn_projectile_clear_effect(Projectile *proj) { if((proj->flags & PFLAG_NOCLEAREFFECT) || proj->sprite == NULL) { return NULL; } @@ -873,80 +897,128 @@ Projectile* spawn_projectile_clear_effect(Projectile *proj) { .rule = projectile_clear_effect_logic, .draw_rule = projectile_clear_effect_draw, .angle = proj->angle, + .opacity = proj->opacity, + .scale = proj->scale, .timeout = 24, .args = { -1 }, .layer = layer, ); } -void ProjDrawCore(Projectile *proj, const Color *c) { +SpriteParams projectile_sprite_params(Projectile *proj, SpriteParamsBuffer *spbuf) { + spbuf->color = proj->color; + spbuf->shader_params = (ShaderCustomParams) {{ proj->opacity, 0, 0, 0 }}; + + SpriteParams sp = { 0 }; + sp.blend = proj->blend; + sp.color = &spbuf->color; + sp.pos.x = creal(proj->pos); + sp.pos.y = cimag(proj->pos); + sp.rotation = (SpriteRotationParams) { + .angle = proj->angle + (float)(M_PI/2), + .vector = { 0, 0, 1 }, + }; + sp.scale.x = crealf(proj->scale); + sp.scale.y = cimagf(proj->scale); + sp.shader_params = &spbuf->shader_params; + sp.shader_ptr = proj->shader; + sp.sprite_ptr = proj->sprite; + + return sp; +} + +static void projectile_draw_sprite(Sprite *s, const Color *clr, float32 opacity, cmplx32 scale) { + if(opacity <= 0 || crealf(scale) == 0) { + return; + } + + ShaderCustomParams p = { + opacity, + }; + r_draw_sprite(&(SpriteParams) { - .sprite_ptr = proj->sprite, - .color = c, - .shader_params = &proj->shader_params, + .sprite_ptr = s, + .color = clr, + .shader_params = &p, + .scale = { crealf(scale), cimagf(scale) }, }); } -void ProjDraw(Projectile *proj, int t) { - r_mat_mv_push(); - apply_common_transforms(proj, t); +void ProjDrawCore(Projectile *proj, const Color *c) { + projectile_draw_sprite(proj->sprite, c, proj->opacity, proj->scale); +} - float eff = proj_spawn_effect_factor(proj, t); +void ProjDraw(Projectile *proj, int t, ProjDrawRuleArgs args) { + SpriteParamsBuffer spbuf; + SpriteParams sp = projectile_sprite_params(proj, &spbuf); - /* - if(eff < 1 && proj->color.a > 0) { - Color c = proj->color; - c.a *= sqrt(eff); - ProjDrawCore(proj, &c); - } else { - ProjDrawCore(proj, &proj->color); - } - */ + float eff = proj_spawn_effect_factor(proj, t); if(eff < 1) { - float o = proj->shader_params.vector[0]; - float a = min(1, eff * 2); - proj->shader_params.vector[0] = 1 - (1 - o) * a; - Color c = proj->color; - c.a *= eff;//sqrt(eff); - ProjDrawCore(proj, &c); - proj->shader_params.vector[0] = o; - } else { - ProjDrawCore(proj, &proj->color); + spbuf.color.a *= eff; + spbuf.shader_params.vector[0] *= fminf(1.0f, eff * 2.0f); } - r_mat_mv_pop(); + r_draw_sprite(&sp); } -void ProjNoDraw(Projectile *proj, int t) { +ProjDrawRule pdraw_basic(void) { + return (ProjDrawRule) { ProjDraw }; } -void Blast(Projectile *p, int t) { - r_mat_mv_push(); - r_mat_mv_translate(creal(p->pos), cimag(p->pos), 0); - r_mat_mv_rotate(creal(p->args[1]) * DEG2RAD, cimag(p->args[1]), creal(p->args[2]), cimag(p->args[2])); +static void pdraw_blast_func(Projectile *p, int t, ProjDrawRuleArgs args) { + vec3 rot_axis = { + args[0].as_float[0], + args[0].as_float[1], + args[1].as_float[0], + }; + + float32 rot_angle = args[1].as_float[1]; + float32 secondary_scale = args[2].as_float[0]; - if(t != p->timeout && p->timeout != 0) { - r_mat_mv_scale(t/(double)p->timeout, t/(double)p->timeout, 1); + float32 tf = projectile_timeout_factor(p); + float32 opacity = (1.0f - tf) * p->opacity; + + if(tf <= 0 || opacity <= 0) { + return; } - float fade = 1.0 - t / (double)p->timeout; - r_color(RGBA_MUL_ALPHA(0.3, 0.6, 1.0, fade)); + SpriteParamsBuffer spbuf; + SpriteParams sp = projectile_sprite_params(p, &spbuf); + sp.rotation.angle = rot_angle; + glm_vec3_copy(rot_axis, sp.rotation.vector); + sp.scale.x = tf; + sp.scale.y = tf; - SpriteParams sp = { - .sprite_ptr = p->sprite, - .color = RGBA_MUL_ALPHA(0.3, 0.6, 1.0, fade), - }; + spbuf.color = *RGBA(0.3, 0.6, 1.0, 1); + spbuf.shader_params.vector[0] = opacity; + r_disable(RCAP_CULL_FACE); r_draw_sprite(&sp); - r_mat_mv_scale(0.5+creal(p->args[2]), 0.5+creal(p->args[2]), 1); - r_color4(0.3 * fade, 0.6 * fade, 1.0 * fade, 0); - sp.color = RGBA(0.3 * fade, 0.6 * fade, 1.0 * fade, 0); + sp.scale.as_cmplx *= secondary_scale; + spbuf.color.a = 0; r_draw_sprite(&sp); - r_mat_mv_pop(); } -void Shrink(Projectile *p, int t) { +ProjDrawRule pdraw_blast(void) { + float32 rot_angle = rng_f32_angle(); + float32 x = rng_f32(); + float32 y = rng_f32(); + float32 z = rng_f32(); + float32 secondary_scale = rng_f32_range(0.5, 1.5); + + vec3 rot_axis = { x, y, z }; + glm_vec3_normalize(rot_axis); + + return (ProjDrawRule) { + .func = pdraw_blast_func, + .args[0].as_float = { rot_axis[0], rot_axis[1] }, + .args[1].as_float = { rot_axis[2], rot_angle }, + .args[2].as_float = { secondary_scale, }, + }; +} + +void Shrink(Projectile *p, int t, ProjDrawRuleArgs args) { r_mat_mv_push(); apply_common_transforms(p, t); @@ -959,7 +1031,7 @@ void Shrink(Projectile *p, int t) { r_mat_mv_pop(); } -void DeathShrink(Projectile *p, int t) { +void DeathShrink(Projectile *p, int t, ProjDrawRuleArgs args) { r_mat_mv_push(); apply_common_transforms(p, t); @@ -972,7 +1044,7 @@ void DeathShrink(Projectile *p, int t) { r_mat_mv_pop(); } -void GrowFade(Projectile *p, int t) { +void GrowFade(Projectile *p, int t, ProjDrawRuleArgs args) { r_mat_mv_push(); apply_common_transforms(p, t); @@ -988,7 +1060,7 @@ void GrowFade(Projectile *p, int t) { r_mat_mv_pop(); } -void Fade(Projectile *p, int t) { +void Fade(Projectile *p, int t, ProjDrawRuleArgs args) { r_mat_mv_push(); apply_common_transforms(p, t); ProjDrawCore(p, color_mul_scalar(COLOR_COPY(&p->color), 1 - t/(double)p->timeout)); @@ -1010,33 +1082,111 @@ static void ScaleFadeImpl(Projectile *p, int t, int fade_exponent) { r_mat_mv_pop(); } -void ScaleFade(Projectile *p, int t) { +void ScaleFade(Projectile *p, int t, ProjDrawRuleArgs args) { ScaleFadeImpl(p, t, 1); } -void ScaleSquaredFade(Projectile *p, int t) { +void ScaleSquaredFade(Projectile *p, int t, ProjDrawRuleArgs args) { ScaleFadeImpl(p, t, 2); } -void Petal(Projectile *p, int t) { - float x = creal(p->args[2]); - float y = cimag(p->args[2]); - float z = creal(p->args[3]); +static void pdraw_scalefade_func(Projectile *p, int t, ProjDrawRuleArgs args) { + cmplx32 scale0 = args[0].as_cmplx; + cmplx32 scale1 = args[1].as_cmplx; + float32 opacity0 = args[2].as_float[0]; + float32 opacity1 = args[2].as_float[1]; + float32 opacity_exp = args[3].as_float[0]; + + float32 timefactor = t / p->timeout; + + cmplx32 scale = clerpf(scale0, scale1, timefactor); + float32 opacity = lerpf(opacity0, opacity1, timefactor); + opacity = powf(opacity, opacity_exp); + + SpriteParamsBuffer spbuf; + SpriteParams sp = projectile_sprite_params(p, &spbuf); + spbuf.shader_params.vector[0] *= opacity; + sp.scale.as_cmplx = cwmulf(sp.scale.as_cmplx, scale); + + r_draw_sprite(&sp); +} + +ProjDrawRule pdraw_timeout_scalefade_exp(cmplx32 scale0, cmplx32 scale1, float32 opacity0, float32 opacity1, float32 opacity_exp) { + if(cimagf(scale0) == 0) { + scale0 = CMPLXF(crealf(scale0), crealf(scale0)); + } + + if(cimagf(scale1) == 0) { + scale1 = CMPLXF(crealf(scale1), crealf(scale1)); + } - float r = sqrt(x*x+y*y+z*z); - x /= r; y /= r; z /= r; + return (ProjDrawRule) { + .func = pdraw_scalefade_func, + .args[0].as_cmplx = scale0, + .args[1].as_cmplx = scale1, + .args[2].as_float = { opacity0, opacity1 }, + .args[3].as_float = { opacity_exp }, + }; +} + +ProjDrawRule pdraw_timeout_scalefade(cmplx32 scale0, cmplx32 scale1, float32 opacity0, float32 opacity1) { + return pdraw_timeout_scalefade_exp(scale0, scale1, opacity0, opacity1, 1.0f); +} + +ProjDrawRule pdraw_timeout_scale(cmplx32 scale0, cmplx32 scale1) { + return pdraw_timeout_scalefade(scale0, scale1, 1, 1); +} + +ProjDrawRule pdraw_timeout_fade(float32 opacity0, float32 opacity1) { + return pdraw_timeout_scalefade(1+I, 1+I, opacity0, opacity1); +} + +static void pdraw_petal_func(Projectile *p, int t, ProjDrawRuleArgs args) { + vec3 rot_axis = { + args[0].as_float[0], + args[0].as_float[1], + args[1].as_float[0], + }; + + float32 rot_angle = args[1].as_float[1]; + + SpriteParamsBuffer spbuf; + SpriteParams sp = projectile_sprite_params(p, &spbuf); + glm_vec3_copy(rot_axis, sp.rotation.vector); + sp.rotation.angle = DEG2RAD*t*4.0f + rot_angle; + + spbuf.shader_params.vector[0] *= (1.0f - projectile_timeout_factor(p)); r_disable(RCAP_CULL_FACE); - r_mat_mv_push(); - r_mat_mv_translate(creal(p->pos), cimag(p->pos),0); - r_mat_mv_rotate(DEG2RAD * (t*4.0 + cimag(p->args[3])), x, y, z); - ProjDrawCore(p, &p->color); - r_mat_mv_pop(); + r_draw_sprite(&sp); +} + +ProjDrawRule pdraw_petal(float32 rot_angle, vec3 rot_axis) { + glm_vec3_normalize(rot_axis); + float32 x = rot_axis[0]; + float32 y = rot_axis[1]; + float32 z = rot_axis[2]; + + return (ProjDrawRule) { + .func = pdraw_petal_func, + .args[0].as_float = { x, y }, + .args[1].as_float = { z, rot_angle }, + }; +} + +ProjDrawRule pdraw_petal_random(void) { + float32 x = rng_f32(); + float32 y = rng_f32(); + float32 z = rng_f32(); + float32 rot_angle = rng_f32_angle(); + + return pdraw_petal(rot_angle, (vec3) { x, y, z }); } void petal_explosion(int n, cmplx pos) { for(int i = 0; i < n; i++) { - RNG_ARRAY(R, 6); + cmplx v = rng_dir(); + v *= rng_range(3, 8); real t = rng_real(); PARTICLE( @@ -1044,15 +1194,10 @@ void petal_explosion(int n, cmplx pos) { .pos = pos, .color = RGBA(sin(5*t) * t, cos(5*t) * t, 0.5 * t, 0), .rule = asymptotic, - .draw_rule = Petal, - .args = { - vrng_range(R[0], 3, 8) * vrng_dir(R[1]), - 5, - vrng_real(R[2]) + vrng_real(R[3])*I, - vrng_real(R[4]) + vrng_range(R[5], 0, 360)*I, - }, + .move = move_asymptotic_simple(v, 5), + .draw_rule = pdraw_petal_random(), // TODO: maybe remove this noreflect, there shouldn't be a cull mode mess anymore - .flags = PFLAG_NOREFLECT | (n % 2 ? 0 : PFLAG_REQUIREDPARTICLE), + .flags = PFLAG_NOREFLECT | (n % 2 ? 0 : PFLAG_REQUIREDPARTICLE) | PFLAG_MANUALANGLE, .layer = LAYER_PARTICLE_PETAL, ); } diff --git a/src/projectile.h b/src/projectile.h index 0e67fbea84..d308659b3e 100644 --- a/src/projectile.h +++ b/src/projectile.h @@ -34,9 +34,19 @@ typedef LIST_ANCHOR(Projectile) ProjectileList; typedef LIST_INTERFACE(Projectile) ProjectileListInterface; typedef int (*ProjRule)(Projectile *p, int t); -typedef void (*ProjDrawRule)(Projectile *p, int t); +// typedef void (*ProjDrawRule)(Projectile *p, int t); typedef bool (*ProjPredicate)(Projectile *p); +typedef union { + float32 as_float[2]; + cmplx32 as_cmplx; +} ProjDrawRuleArgs[RULE_ARGC]; + +typedef struct ProjDrawRule { + void (*func)(Projectile *p, int t, ProjDrawRuleArgs args); + ProjDrawRuleArgs args; +} ProjDrawRule; + typedef enum { PROJ_INVALID, @@ -90,7 +100,7 @@ struct Projectile { CoEvent killed; } events; Color color; - ShaderCustomParams shader_params; + attr_deprecated("this won't work") ShaderCustomParams shader_params; BlendMode blend; int birthtime; float damage; @@ -101,6 +111,9 @@ struct Projectile { ProjFlags flags; uint clear_flags; + cmplx32 scale; + float32 opacity; + // XXX: this is in frames of course, but needs to be float // to avoid subtle truncation and integer division gotchas. float timeout; @@ -121,7 +134,7 @@ typedef struct ProjArgs { Sprite *sprite_ptr; const char *shader; ShaderProgram *shader_ptr; - const ShaderCustomParams *shader_params; + attr_deprecated("this won't work") const ShaderCustomParams *shader_params; ProjectileList *dest; ProjRule rule; cmplx args[RULE_ARGC]; @@ -139,6 +152,9 @@ typedef struct ProjArgs { int max_viewport_dist; drawlayer_t layer; + cmplx32 scale; + float32 opacity; + // XXX: this is in frames of course, but needs to be float // to avoid subtle truncation and integer division gotchas. float timeout; @@ -204,6 +220,7 @@ Projectile* spawn_projectile_clear_effect(Projectile *proj); Projectile* spawn_projectile_highlight_effect(Projectile *proj); void projectile_set_prototype(Projectile *p, ProjPrototype *proto); +void projectile_set_layer(Projectile *p, drawlayer_t layer); bool clear_projectile(Projectile *proj, uint flags); void kill_projectile(Projectile *proj); @@ -212,16 +229,26 @@ int linear(Projectile *p, int t); int accelerated(Projectile *p, int t); int asymptotic(Projectile *p, int t); -void ProjDrawCore(Projectile *proj, const Color *c); -void ProjDraw(Projectile *p, int t); -void ProjNoDraw(Projectile *proj, int t); +#define DEPRECATED_DRAW_RULE attr_deprecated("") -void Shrink(Projectile *p, int t); -void DeathShrink(Projectile *p, int t); -void Fade(Projectile *p, int t); -void GrowFade(Projectile *p, int t); -void ScaleFade(Projectile *p, int t); -void ScaleSquaredFade(Projectile *p, int t); +void ProjDrawCore(Projectile *proj, const Color *c); +void ProjDraw(Projectile *proj, int t, ProjDrawRuleArgs args) DEPRECATED_DRAW_RULE; + +void Shrink(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; +void DeathShrink(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; +void Fade(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; +void GrowFade(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; +void ScaleFade(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; +void ScaleSquaredFade(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; + +ProjDrawRule pdraw_basic(void); +ProjDrawRule pdraw_timeout_scalefade_exp(cmplx32 scale0, cmplx32 scale1, float32 opacity0, float32 opacity1, float32 opacity_exp); +ProjDrawRule pdraw_timeout_scalefade(cmplx32 scale0, cmplx32 scale1, float32 opacity0, float32 opacity1); +ProjDrawRule pdraw_timeout_scale(cmplx32 scale0, cmplx32 scale1); +ProjDrawRule pdraw_timeout_fade(float32 opacity0, float32 opacity1); +ProjDrawRule pdraw_petal(float32 rot_angle, vec3 rot_axis); +ProjDrawRule pdraw_petal_random(void); +ProjDrawRule pdraw_blast(void); void Petal(Projectile *p, int t); void petal_explosion(int n, cmplx pos); @@ -232,5 +259,9 @@ void projectiles_preload(void); void projectiles_free(void); cmplx projectile_graze_size(Projectile *p); +float32 projectile_timeout_factor(Projectile *p); +int projectile_time(Projectile *p); + +SpriteParams projectile_sprite_params(Projectile *proj, SpriteParamsBuffer *spbuf); #endif // IGUARD_projectile_h diff --git a/src/random.h b/src/random.h index 1cb36b765a..b4798d8be3 100644 --- a/src/random.h +++ b/src/random.h @@ -14,7 +14,8 @@ #include "util/crap.h" #include "util/miscmath.h" -#define RNG_DEPRECATED attr_deprecated("Use the new rng_ API") +// #define RNG_DEPRECATED attr_deprecated("Use the new rng_ API") +#define RNG_DEPRECATED typedef struct RandomState { uint64_t state[4]; diff --git a/src/renderer/api.h b/src/renderer/api.h index 42d3d5323e..6e79ad08ba 100644 --- a/src/renderer/api.h +++ b/src/renderer/api.h @@ -361,13 +361,17 @@ typedef struct SpriteStateParams { ShaderProgram *shader; } SpriteStateParams; -typedef struct SpriteScaleParams { - union { - float x; - float both; +typedef union SpriteScaleParams { + struct { + union { + float x; + float both; + }; + + float y; }; - float y; + cmplx32 as_cmplx; } SpriteScaleParams; typedef struct SpriteRotationParams { @@ -388,6 +392,8 @@ typedef struct SpriteParams { ShaderProgram *shader_ptr; Texture *aux_textures[R_NUM_SPRITE_AUX_TEXTURES]; + + // TODO: maybe embed these by value and get rid of SpriteParamsBuffer? const Color *color; const ShaderCustomParams *shader_params; @@ -399,6 +405,11 @@ typedef struct SpriteParams { SpriteFlipParams flip; } SpriteParams; +typedef struct SpriteParamsBuffer { + Color color; + ShaderCustomParams shader_params; +} SpriteParamsBuffer; + // Matches vertex buffer layout typedef struct SpriteInstanceAttribs { mat4 mv_transform; diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 97b386eacc..6d5ab4ec87 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -1304,7 +1304,7 @@ TASK_WITH_INTERFACE(icy_storm, BossAttack) { // play_sound("shot_special1"); ENT_ARRAY_FOREACH(&snowflake_projs, Projectile *p, { - spawn_projectile_highlight_effect(p)->shader_params.vector[0] = 0.75; + spawn_projectile_highlight_effect(p)->opacity = 0.25; color_lerp(&p->color, RGB(0.5, 0.5, 0.5), 0.5); p->move.velocity = 2 * cdir(p->angle); p->move.acceleration = -cdir(p->angle) * difficulty_value(0.1, 0.15, 0.2, 0.2); diff --git a/src/stages/stage3_events.c b/src/stages/stage3_events.c index 5f7a538b3d..e8e09591dd 100644 --- a/src/stages/stage3_events.c +++ b/src/stages/stage3_events.c @@ -861,7 +861,8 @@ static int wriggle_rocket_laserbullet(Projectile *p, int time) { return 1; } -static void wriggle_slave_part_draw(Projectile *p, int t) { +DEPRECATED_DRAW_RULE +static void wriggle_slave_part_draw(Projectile *p, int t, ProjDrawRuleArgs args) { float b = 1 - t / (double)p->timeout; r_mat_mv_push(); r_mat_mv_translate(creal(p->pos), cimag(p->pos), 0); @@ -1203,7 +1204,8 @@ void wriggle_light_singularity(Boss *boss, int time) { } -static void wriggle_fstorm_proj_draw(Projectile *p, int time) { +DEPRECATED_DRAW_RULE +static void wriggle_fstorm_proj_draw(Projectile *p, int time, ProjDrawRuleArgs args) { float f = 1-min(time/60.0,1); r_mat_mv_push(); r_mat_mv_translate(creal(p->pos), cimag(p->pos), 0); @@ -1249,7 +1251,7 @@ static int wriggle_fstorm_proj(Projectile *p, int time) { p->args[1] *= 2/cabs(p->args[1]); p->angle = carg(p->args[1]); p->birthtime = global.frames; - p->draw_rule = wriggle_fstorm_proj_draw; + p->draw_rule = (ProjDrawRule) { wriggle_fstorm_proj_draw }; p->sprite = NULL; projectile_set_prototype(p, pp_rice); spawn_projectile_highlight_effect(p); diff --git a/src/stages/stage4_events.c b/src/stages/stage4_events.c index a8add93299..4cb2bd899c 100644 --- a/src/stages/stage4_events.c +++ b/src/stages/stage4_events.c @@ -1223,7 +1223,8 @@ static int kurumi_extra_bigfairy1(Enemy *e, int time) { return 1; } -static void kurumi_extra_drainer_draw(Projectile *p, int time) { +DEPRECATED_DRAW_RULE +static void kurumi_extra_drainer_draw(Projectile *p, int time, ProjDrawRuleArgs args) { cmplx org = p->pos; cmplx targ = p->args[1]; double a = 0.5 * creal(p->args[2]); diff --git a/src/stages/stage6_events.c b/src/stages/stage6_events.c index 2ee99dc3b9..41313c1051 100644 --- a/src/stages/stage6_events.c +++ b/src/stages/stage6_events.c @@ -197,7 +197,8 @@ static int scythe_mid(Enemy *e, int t) { return 1; } -static void ScytheTrail(Projectile *p, int t) { +DEPRECATED_DRAW_RULE +static void ScytheTrail(Projectile *p, int t, ProjDrawRuleArgs args) { r_mat_mv_push(); r_mat_mv_translate(creal(p->pos), cimag(p->pos), 0); r_mat_mv_rotate(p->angle + (M_PI * 0.5), 0, 0, 1); @@ -1085,14 +1086,6 @@ static int broglie_particle(Projectile *p, int t) { return ACTION_ACK; } - /* - if(t == EVENT_BIRTH) { - // hidden and no collision detection until scattertime - p->type = FakeProj; - p->draw = ProjNoDraw; - } - */ - if(t < 0) { return ACTION_ACK; } @@ -1112,7 +1105,7 @@ static int broglie_particle(Projectile *p, int t) { } } else { if(t == scattertime && p->type != PROJ_DEAD) { - p->draw_rule = ProjDraw; + projectile_set_layer(p, LAYER_BULLET); p->flags &= ~(PFLAG_NOCLEARBONUS | PFLAG_NOCLEAREFFECT | PFLAG_NOCOLLISION); double angle_ampl = creal(p->args[3]); @@ -1215,7 +1208,7 @@ static int broglie_charge(Projectile *p, int t) { fast ? 2.0 : 1.5, (1 + 2 * ((global.diff - 1) / (double)(D_Lunatic - 1))) * M_PI/11 + s_freq*10*I }, - .draw_rule = ProjNoDraw, + .layer = LAYER_NODRAW, .flags = PFLAG_NOCLEARBONUS | PFLAG_NOCLEAREFFECT | PFLAG_NOSPAWNEFFECTS | PFLAG_NOCOLLISION, ); } diff --git a/src/util/compat.h b/src/util/compat.h index 880ce475ab..bb54111033 100644 --- a/src/util/compat.h +++ b/src/util/compat.h @@ -184,35 +184,8 @@ typedef cmplx64 cmplx; typedef struct { alignas(TAISEI_BUILDCONF_MALLOC_ALIGNMENT) char a; } max_align_t; #endif -// In case the C11 CMPLX macro is not present, try our best to provide a substitute -#if !defined CMPLX - #undef HAS_BUILTIN_COMPLEX - - #if defined __has_builtin - #if __has_builtin(__builtin_complex) - #define HAS_BUILTIN_COMPLEX - #endif - #else - #if defined __GNUC__ && defined __GNUC_MINOR__ - #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) - #define HAS_BUILTIN_COMPLEX - #endif - #endif - #endif - - #if defined HAS_BUILTIN_COMPLEX - #define CMPLX(re,im) __builtin_complex((double)(re), (double)(im)) - #elif defined __clang__ - #define CMPLX(re,im) (__extension__ (_Complex double){(double)(re), (double)(im)}) - #elif defined _Imaginary_I - #define CMPLX(re,im) (_Complex double)((double)(re) + _Imaginary_I * (double)(im)) - #else - #define CMPLX(re,im) (_Complex double)((double)(re) + _Complex_I * (double)(im)) - #endif -#elif defined __EMSCRIPTEN__ && defined __clang__ - // CMPLX from emscripten headers uses the clang-specific syntax without __extension__ - #pragma clang diagnostic ignored "-Wcomplex-component-init" -#endif +// polyfill CMPLX macros +#include "compat_cmplx.h" /* * Abstract away the nasty GNU attribute syntax. diff --git a/src/util/compat_cmplx.h b/src/util/compat_cmplx.h new file mode 100644 index 0000000000..1763fd2436 --- /dev/null +++ b/src/util/compat_cmplx.h @@ -0,0 +1,62 @@ +/* + * This software is licensed under the terms of the MIT License. + * See COPYING for further information. + * --- + * Copyright (c) 2011-2019, Lukas Weber . + * Copyright (c) 2012-2019, Andrei Alexeyev . +*/ + +#ifndef IGUARD_util_compat_cmplx_h +#define IGUARD_util_compat_cmplx_h + +#include "taisei.h" + +#undef HAS_BUILTIN_COMPLEX + +#if defined __has_builtin + #if __has_builtin(__builtin_complex) + #define HAS_BUILTIN_COMPLEX + #endif +#else + #if defined __GNUC__ && defined __GNUC_MINOR__ + #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) + #define HAS_BUILTIN_COMPLEX + #endif + #endif +#endif + +// In case the C11 CMPLX macro is not present, try our best to provide a substitute + +#if !defined CMPLX + #if defined HAS_BUILTIN_COMPLEX + #define CMPLX(re,im) __builtin_complex((double)(re), (double)(im)) + #elif defined __clang__ + #define CMPLX(re,im) (__extension__ (_Complex double){ (double)(re), (double)(im) }) + #elif defined _Imaginary_I + #define CMPLX(re,im) (_Complex double)((double)(re) + _Imaginary_I * (double)(im)) + #else + #define CMPLX(re,im) (_Complex double)((double)(re) + _Complex_I * (double)(im)) + #endif +#elif defined __EMSCRIPTEN__ && defined __clang__ + // CMPLX from emscripten headers uses the clang-specific syntax without __extension__ + #pragma clang diagnostic ignored "-Wcomplex-component-init" +#endif + +// same for CMPLXF + +#if !defined CMPLXF + #if defined HAS_BUILTIN_COMPLEX + #define CMPLXF(re,im) __builtin_complex((float)(re), (float)(im)) + #elif defined __clang__ + #define CMPLXF(re,im) (__extension__ (_Complex float){ (float)(re), (float)(im) }) + #elif defined _Imaginary_I + #define CMPLXF(re,im) (_Complex float)((float)(re) + _Imaginary_I * (float)(im)) + #else + #define CMPLXF(re,im) (_Complex float)((float)(re) + _Complex_I * (float)(im)) + #endif +#elif defined __EMSCRIPTEN__ && defined __clang__ + // CMPLXF from emscripten headers uses the clang-specific syntax without __extension__ + #pragma clang diagnostic ignored "-Wcomplex-component-init" +#endif + +#endif // IGUARD_util_compat_cmplx_h diff --git a/src/util/glm.h b/src/util/glm.h index 2105e303ff..02c4580b53 100644 --- a/src/util/glm.h +++ b/src/util/glm.h @@ -29,4 +29,10 @@ PRAGMA(GCC diagnostic pop) #endif +typedef float (*glm_ease_t)(float); + +INLINE float glm_ease_apply(glm_ease_t ease, float f) { + return ease ? ease(f) : f; +} + #endif // IGUARD_util_glm_h diff --git a/src/util/miscmath.c b/src/util/miscmath.c index 6840bbbe27..d7508997a2 100644 --- a/src/util/miscmath.c +++ b/src/util/miscmath.c @@ -15,10 +15,18 @@ double lerp(double v0, double v1, double f) { return f * (v1 - v0) + v0; } +float lerpf(float v0, float v1, float f) { + return f * (v1 - v0) + v0; +} + cmplx clerp(cmplx v0, cmplx v1, double f) { return f * (v1 - v0) + v0; } +cmplx32 clerpf(cmplx32 v0, cmplx32 v1, float32 f) { + return f * (v1 - v0) + v0; +} + double approach(double v, double t, double d) { if(v < t) { v += d; @@ -117,6 +125,14 @@ cmplx cdir(double angle) { #endif } +cmplx cwmul(cmplx c0, cmplx c1) { + return CMPLX(creal(c0)*creal(c1), cimag(c0)*cimag(c1)); +} + +cmplx32 cwmulf(cmplx32 c0, cmplx32 c1) { + return CMPLXF(crealf(c0)*crealf(c1), cimagf(c0)*cimagf(c1)); +} + double psin(double x) { return 0.5 + 0.5 * sin(x); } diff --git a/src/util/miscmath.h b/src/util/miscmath.h index eeb4704e97..9ddce47080 100644 --- a/src/util/miscmath.h +++ b/src/util/miscmath.h @@ -17,7 +17,9 @@ #define M_TAU (M_PI * 2) double lerp(double v0, double v1, double f) attr_const; +float lerpf(float v0, float v1, float f) attr_const; cmplx clerp(cmplx v0, cmplx v1, double f) attr_const; +cmplx32 clerpf(cmplx32 v0, cmplx32 v1, float32 f) attr_const; intmax_t imin(intmax_t, intmax_t) attr_const; intmax_t imax(intmax_t, intmax_t) attr_const; uintmax_t umin(uintmax_t, uintmax_t) attr_const; @@ -41,6 +43,8 @@ void capproach_asymptotic_p(cmplx *val, cmplx target, double rate, double epsilo cmplx cnormalize(cmplx c) attr_const; cmplx cclampabs(cmplx c, double maxabs) attr_const; cmplx cdir(double angle) attr_const; +cmplx cwmul(cmplx c0, cmplx c1) attr_const; +cmplx32 cwmulf(cmplx32 c0, cmplx32 c1) attr_const; double psin(double) attr_const; int sign(double) attr_const; double swing(double x, double s) attr_const; From a034250df87f4c7557cdde44cca269d4fde50238 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Tue, 24 Dec 2019 19:53:47 +0200 Subject: [PATCH 083/104] shut up deprecation warnings from outdated stages --- src/stages/stage2.c | 3 +++ src/stages/stage2_events.c | 3 +++ src/stages/stage3.c | 3 +++ src/stages/stage3_events.c | 3 +++ src/stages/stage4.c | 3 +++ src/stages/stage4_events.c | 3 +++ src/stages/stage5.c | 3 +++ src/stages/stage5_events.c | 3 +++ src/stages/stage6.c | 3 +++ src/stages/stage6_events.c | 3 +++ 10 files changed, 30 insertions(+) diff --git a/src/stages/stage2.c b/src/stages/stage2.c index c5a487020f..5ca9ba2e4f 100644 --- a/src/stages/stage2.c +++ b/src/stages/stage2.c @@ -15,6 +15,9 @@ #include "stage.h" #include "stageutils.h" +PRAGMA(message "Remove when this stage is modernized") +DIAGNOSTIC(ignored "-Wdeprecated-declarations") + /* * See the definition of AttackInfo in boss.h for information on how to set up the idmaps. * To add, remove, or reorder spells, see this stage's header file. diff --git a/src/stages/stage2_events.c b/src/stages/stage2_events.c index ccca950c95..cdfbedc4e4 100644 --- a/src/stages/stage2_events.c +++ b/src/stages/stage2_events.c @@ -13,6 +13,9 @@ #include "stage.h" #include "enemy.h" +PRAGMA(message "Remove when this stage is modernized") +DIAGNOSTIC(ignored "-Wdeprecated-declarations") + static Dialog *stage2_dialog_pre_boss(void) { PlayerMode *pm = global.plr.mode; Dialog *d = dialog_create(); diff --git a/src/stages/stage3.c b/src/stages/stage3.c index 0977199920..111b660ee2 100644 --- a/src/stages/stage3.c +++ b/src/stages/stage3.c @@ -15,6 +15,9 @@ #include "stage.h" #include "stageutils.h" +PRAGMA(message "Remove when this stage is modernized") +DIAGNOSTIC(ignored "-Wdeprecated-declarations") + /* * See the definition of AttackInfo in boss.h for information on how to set up the idmaps. * To add, remove, or reorder spells, see this stage's header file. diff --git a/src/stages/stage3_events.c b/src/stages/stage3_events.c index e8e09591dd..9eeaf58b08 100644 --- a/src/stages/stage3_events.c +++ b/src/stages/stage3_events.c @@ -13,6 +13,9 @@ #include "stage.h" #include "enemy.h" +PRAGMA(message "Remove when this stage is modernized") +DIAGNOSTIC(ignored "-Wdeprecated-declarations") + static Dialog *stage3_dialog_pre_boss(void) { PlayerMode *pm = global.plr.mode; Dialog *d = dialog_create(); diff --git a/src/stages/stage4.c b/src/stages/stage4.c index 336ff7c9a1..a585d4ebff 100644 --- a/src/stages/stage4.c +++ b/src/stages/stage4.c @@ -17,6 +17,9 @@ #include "util/glm.h" #include "resource/model.h" +PRAGMA(message "Remove when this stage is modernized") +DIAGNOSTIC(ignored "-Wdeprecated-declarations") + /* * See the definition of AttackInfo in boss.h for information on how to set up the idmaps. * To add, remove, or reorder spells, see this stage's header file. diff --git a/src/stages/stage4_events.c b/src/stages/stage4_events.c index 4cb2bd899c..b7dbb64b89 100644 --- a/src/stages/stage4_events.c +++ b/src/stages/stage4_events.c @@ -15,6 +15,9 @@ #include "enemy.h" #include "laser.h" +PRAGMA(message "Remove when this stage is modernized") +DIAGNOSTIC(ignored "-Wdeprecated-declarations") + void kurumi_spell_bg(Boss*, int); void kurumi_slaveburst(Boss*, int); void kurumi_redspike(Boss*, int); diff --git a/src/stages/stage5.c b/src/stages/stage5.c index 3fe704f384..7b394bcc09 100644 --- a/src/stages/stage5.c +++ b/src/stages/stage5.c @@ -16,6 +16,9 @@ #include "global.h" #include "resource/model.h" +PRAGMA(message "Remove when this stage is modernized") +DIAGNOSTIC(ignored "-Wdeprecated-declarations") + /* * See the definition of AttackInfo in boss.h for information on how to set up the idmaps. * To add, remove, or reorder spells, see this stage's header file. diff --git a/src/stages/stage5_events.c b/src/stages/stage5_events.c index 98d1bd62b2..90908c7a91 100644 --- a/src/stages/stage5_events.c +++ b/src/stages/stage5_events.c @@ -12,6 +12,9 @@ #include "stage5.h" #include "global.h" +PRAGMA(message "Remove when this stage is modernized") +DIAGNOSTIC(ignored "-Wdeprecated-declarations") + static Dialog *stage5_dialog_post_midboss(void) { PlayerMode *pm = global.plr.mode; Dialog *d = dialog_create(); diff --git a/src/stages/stage6.c b/src/stages/stage6.c index 7967392ba3..c49c6343f2 100644 --- a/src/stages/stage6.c +++ b/src/stages/stage6.c @@ -17,6 +17,9 @@ #include "resource/model.h" #include "stagedraw.h" +PRAGMA(message "Remove when this stage is modernized") +DIAGNOSTIC(ignored "-Wdeprecated-declarations") + /* * See the definition of AttackInfo in boss.h for information on how to set up the idmaps. * To add, remove, or reorder spells, see this stage's header file. diff --git a/src/stages/stage6_events.c b/src/stages/stage6_events.c index 41313c1051..ce98cc9866 100644 --- a/src/stages/stage6_events.c +++ b/src/stages/stage6_events.c @@ -14,6 +14,9 @@ #include "stagetext.h" #include "stagedraw.h" +PRAGMA(message "Remove when this stage is modernized") +DIAGNOSTIC(ignored "-Wdeprecated-declarations") + static Dialog *stage6_dialog_pre_boss(void) { PlayerMode *pm = global.plr.mode; Dialog *d = dialog_create(); From 7fb06933a3bee27ef5f2812d413fc67d0de889c8 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 27 Dec 2019 17:59:15 +0200 Subject: [PATCH 084/104] new bullet clear effect --- .gitignore | 2 + .../part/bullet_clear.frame0000.webp | Bin 0 -> 17622 bytes .../part/bullet_clear.frame0001.webp | Bin 0 -> 19090 bytes .../part/bullet_clear.frame0002.webp | Bin 0 -> 20584 bytes .../part/bullet_clear.frame0003.webp | Bin 0 -> 22186 bytes .../part/bullet_clear.frame0004.webp | Bin 0 -> 22642 bytes .../part/bullet_clear.frame0005.webp | Bin 0 -> 23988 bytes .../part/bullet_clear.frame0006.webp | Bin 0 -> 24594 bytes .../part/bullet_clear.frame0007.webp | Bin 0 -> 25518 bytes .../part/bullet_clear.frame0008.webp | Bin 0 -> 26306 bytes .../part/bullet_clear.frame0009.webp | Bin 0 -> 27006 bytes .../part/bullet_clear.frame0010.webp | Bin 0 -> 27254 bytes .../part/bullet_clear.frame0011.webp | Bin 0 -> 27350 bytes .../part/bullet_clear.frame0012.webp | Bin 0 -> 27244 bytes .../part/bullet_clear.frame0013.webp | Bin 0 -> 27028 bytes .../part/bullet_clear.frame0014.webp | Bin 0 -> 26906 bytes .../part/bullet_clear.frame0015.webp | Bin 0 -> 26580 bytes .../part/bullet_clear.frame0016.webp | Bin 0 -> 26546 bytes .../part/bullet_clear.frame0017.webp | Bin 0 -> 26022 bytes .../part/bullet_clear.frame0018.webp | Bin 0 -> 25048 bytes .../part/bullet_clear.frame0019.webp | Bin 0 -> 23472 bytes .../part/bullet_clear.frame0020.webp | Bin 0 -> 19688 bytes .../part/bullet_clear.frame0021.webp | Bin 0 -> 16986 bytes .../part/bullet_clear.frame0022.webp | Bin 0 -> 12206 bytes .../part/bullet_clear.frame0023.webp | Bin 0 -> 11034 bytes .../part/bullet_clear.frame0024.webp | Bin 0 -> 9334 bytes .../part/bullet_clear.frame0025.webp | Bin 0 -> 8000 bytes .../part/bullet_clear.frame0026.webp | Bin 0 -> 6402 bytes .../part/bullet_clear.frame0027.webp | Bin 0 -> 5318 bytes .../part/bullet_clear.frame0028.webp | Bin 0 -> 3932 bytes .../part/bullet_clear.frame0029.webp | Bin 0 -> 3530 bytes .../part/bullet_clear.frame0030.webp | Bin 0 -> 3280 bytes .../part/bullet_clear.frame0031.webp | Bin 0 -> 2936 bytes .../part/bullet_clear.frame0032.webp | Bin 0 -> 2936 bytes .../gfx/atlas_coroutines_temp_0.webp | Bin 4464 -> 653076 bytes .../gfx/part/bullet_clear.ani | 3 + .../gfx/part/bullet_clear.frame0000.spr | 7 ++ .../gfx/part/bullet_clear.frame0001.spr | 7 ++ .../gfx/part/bullet_clear.frame0002.spr | 7 ++ .../gfx/part/bullet_clear.frame0003.spr | 7 ++ .../gfx/part/bullet_clear.frame0004.spr | 7 ++ .../gfx/part/bullet_clear.frame0005.spr | 7 ++ .../gfx/part/bullet_clear.frame0006.spr | 7 ++ .../gfx/part/bullet_clear.frame0007.spr | 7 ++ .../gfx/part/bullet_clear.frame0008.spr | 7 ++ .../gfx/part/bullet_clear.frame0009.spr | 7 ++ .../gfx/part/bullet_clear.frame0010.spr | 7 ++ .../gfx/part/bullet_clear.frame0011.spr | 7 ++ .../gfx/part/bullet_clear.frame0012.spr | 7 ++ .../gfx/part/bullet_clear.frame0013.spr | 7 ++ .../gfx/part/bullet_clear.frame0014.spr | 7 ++ .../gfx/part/bullet_clear.frame0015.spr | 7 ++ .../gfx/part/bullet_clear.frame0016.spr | 7 ++ .../gfx/part/bullet_clear.frame0017.spr | 7 ++ .../gfx/part/bullet_clear.frame0018.spr | 7 ++ .../gfx/part/bullet_clear.frame0019.spr | 7 ++ .../gfx/part/bullet_clear.frame0020.spr | 7 ++ .../gfx/part/bullet_clear.frame0021.spr | 7 ++ .../gfx/part/bullet_clear.frame0022.spr | 7 ++ .../gfx/part/bullet_clear.frame0023.spr | 7 ++ .../gfx/part/bullet_clear.frame0024.spr | 7 ++ .../gfx/part/bullet_clear.frame0025.spr | 7 ++ .../gfx/part/bullet_clear.frame0026.spr | 7 ++ .../gfx/part/bullet_clear.frame0027.spr | 7 ++ .../gfx/part/bullet_clear.frame0028.spr | 7 ++ .../gfx/part/bullet_clear.frame0029.spr | 7 ++ .../gfx/part/bullet_clear.frame0030.spr | 7 ++ .../gfx/part/bullet_clear.frame0031.spr | 7 ++ .../gfx/part/bullet_clear.frame0032.spr | 7 ++ .../00-taisei.pkgdir/gfx/proj/hghost.spr | 4 +- resources/00-taisei.pkgdir/shader/meson.build | 1 - .../shader/sprite_bullet_dead.frag.glsl | 14 --- .../shader/sprite_bullet_dead.prog | 1 - scripts/optimize-all-img.sh | 8 +- src/projectile.c | 104 +++++++----------- src/projectile.h | 1 + 76 files changed, 287 insertions(+), 82 deletions(-) create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0000.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0001.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0002.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0003.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0004.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0005.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0006.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0007.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0008.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0009.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0010.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0011.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0012.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0013.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0014.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0015.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0016.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0017.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0018.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0019.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0020.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0021.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0022.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0023.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0024.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0025.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0026.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0027.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0028.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0029.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0030.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0031.webp create mode 100644 atlas/coroutines_temp/part/bullet_clear.frame0032.webp create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.ani create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0000.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0001.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0002.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0003.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0004.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0005.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0006.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0007.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0008.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0009.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0010.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0011.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0012.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0013.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0014.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0015.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0016.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0017.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0018.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0019.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0020.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0021.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0022.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0023.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0024.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0025.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0026.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0027.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0028.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0029.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0030.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0031.spr create mode 100644 resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0032.spr delete mode 100644 resources/00-taisei.pkgdir/shader/sprite_bullet_dead.frag.glsl delete mode 100644 resources/00-taisei.pkgdir/shader/sprite_bullet_dead.prog diff --git a/.gitignore b/.gitignore index 370ac8c780..e554394c6b 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ __pycache__ *.kdev4 .kdev4/ *.kate-swp +*~ +*-autosave.kra diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0000.webp b/atlas/coroutines_temp/part/bullet_clear.frame0000.webp new file mode 100644 index 0000000000000000000000000000000000000000..4a8dc5ab343b13f5e35df43af9fea4e8107b42d7 GIT binary patch literal 17622 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 literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0001.webp b/atlas/coroutines_temp/part/bullet_clear.frame0001.webp new file mode 100644 index 0000000000000000000000000000000000000000..59f5982f63c06e4caa44de41dfec297e0b3886f8 GIT binary patch literal 19090 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∾*V!*E8wKwKi>fDrrdIX&IDh`F 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 literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0002.webp b/atlas/coroutines_temp/part/bullet_clear.frame0002.webp new file mode 100644 index 0000000000000000000000000000000000000000..dc9a6139cfe2188849f2b7bdc76748e37e2024b4 GIT binary patch literal 20584 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 HKY#`Ru9&t! literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0003.webp b/atlas/coroutines_temp/part/bullet_clear.frame0003.webp new file mode 100644 index 0000000000000000000000000000000000000000..4d550efdf88ebe9dabc9477906406775520c0721 GIT binary patch literal 22186 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

tczWzW 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

ypAqJQn9MXlqIKJSE0+&m9%8E!G{NcXT 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 xqY~o)v4c9!8<^8|)!GhK*E6AV723|AHk;>YkbZ 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 literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0005.webp b/atlas/coroutines_temp/part/bullet_clear.frame0005.webp new file mode 100644 index 0000000000000000000000000000000000000000..3798ecaca7ef943f07928e39ab5459a9ceba1a9f GIT binary patch literal 23988 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 literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0006.webp b/atlas/coroutines_temp/part/bullet_clear.frame0006.webp new file mode 100644 index 0000000000000000000000000000000000000000..501935245b747dc0cbd1b154435e5616f2bde76e GIT binary patch literal 24594 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 BOIQE^ literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0008.webp b/atlas/coroutines_temp/part/bullet_clear.frame0008.webp new file mode 100644 index 0000000000000000000000000000000000000000..f9f95aa5de4a47880b31889cdfd4a9241f5c2f0b GIT binary patch literal 26306 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˭U4IjNxKuGUZ~tOGzXW(CF+C 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 literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0010.webp b/atlas/coroutines_temp/part/bullet_clear.frame0010.webp new file mode 100644 index 0000000000000000000000000000000000000000..a6c0f91ca9e233f4a369ad38cbb0520c3337a980 GIT binary patch literal 27254 zcmV)3K+C^UNk&F)Y5)LNMM6+kP&iCtY5)K)qJSt60a~){#*L)FK!A`h_P=0~8mg-M zJEH#+Apaw|0qARN7rI4+aDT^avyX@r!u^}xMK1n=okY6F;*PufBQxVD5UmlOBYi$G zv*vb0{=#$4oO9kXGvh&b4)=UyR%Uh&=$@HV=bU<{7JJa$gE&`h~ z&O?+|SsjkCyBe6&ebHLk_7XJVbSCoxn64YGD%lw{0aqquvY)Lgq6?3&t2wFyyK$;I zTsjT|1=UlZY7>_xz-(5%0q8>2FUG*HOQ}+N+>*`c1%5K%_j9N!3gCA`?4+G|DmbVPj#oDdB7$H*!!mf1Ie=CcTYxGkTSTwjVB3O-(cNHW_mb|} zkjp?sgsrVzWxHrP=VaSMgtHk~nH@yP%t@}@eFw1p&P6=a-8XdKu_vzL+sp>KUlW&2 z<`VJ6);%Jly8-zsBO+SXgS{i-8xY|u5s8rPBH#R99Z*(n+mYlfilBM&k4D~0BmMuE zXr%F>DH9|?auH=7MbIuIjqF&qB1w+zg#39D_fh}2e2VfKgv*83fbfl5AUtbA2p4>0z~w`(y>`LO9^Y872So-Jezjv)&9{WB z{CAn$!lz!p&ViX{1t0+ktgMu-5GD%!$^{bkkrz5T8ev`lq`)HpA=a++{VhUA$GdcA zW$()NV_P<|m-ko@Opt)Fgfy(FdwY`@{08$bHCpJ85j!p`=dVHb^g+~Z8 zpYME58|8XQ&R~!mxucr9u7VQ)6j97J*~`%>AnW6_EkkJ@HP3+0`J6e*d@euFBY9-l zo!49Ni!NaZLnk z#TqJmYEq5se7}zK+zZFROlngUbzxxZ=qQc?XAV3nmUP7AFb9-bkf)#*5VGJ9fflpupBw1N;nhqeK z0gQaZ0GsqQLfGRL@VxZTZXr#bW$y&b?$?(if0LcMGg2UXR^DPWzm-!Ow;1TTC1)~K zex7^xd)a%vU(=*XbKPvz5*bEjhFuN}l%`CE%FEo^3WPB5k+a#jYSg`IuE@O+Wi)ex z>sx8kr1`xKe7C9+Z`2$1c7Vc$31JJ@zk!vJm3tgfZI6DoeffB1`YomkOTg&%8=@P1 zAOPVtXbenj2#)7JfR!z6hEGg%rq8L~V*#+ORC)Bh(GFBIdwO~rA^dgSq&bEV0{>IN zpbA|vm8p8!o9@qe51=C#D|I9h&=Eq?;IuSS03qOenx{Jw&I1TdQAj12Dax|=cF#Q^+~O7smG?AUm?)|= zf&OUFKxYB~jdRX{aFLMjuHR!}hvSoxb9O+$g+lB*~Ga$e{Ym+&!~L{}C|(_z&KbB*i}v#N8dKUrsXY=7!|qj=#RGWqV0763nk8 z6F)o1+nR*GHmN1a9k5MF@(aqOmLveufNf2ZAB;>qeYOBh%YMYRu?^9d<{E(HCHW3% zVx834ZZgY)wx2YarLo=Yw5=!Da{3KeNtWHTPHJxxg?Zm)g5)}>W0!R`d6M%5IsTuW$8C3PA=0yR?*NXNtrNoI^U}(8JmU?AJ7hK> zg|Ej{wrpoF#66DLCVTi~8L(&E0e85&!=ba}822C}4~Xr%I~?wVCCMo7l8kmTNmnc;6h6 zy=R$h$b&^f^sBDjwDGfst@DW@lV^4u;2z%Wk_xtNsuHdd;Pce zem4~|o3>5eG30~z0Kc_uyOLzvRvTl?IhSpWF{ZZ?TeB!zh!kMcJ9S7U_6}-u7^8?t zb6XRPl4iE?-h7`y$+m5|ZL<$RkSdnkb1%)bGK!2MgUG<^x+Vz{k73)kVd(DvlNTv) zB*~bwZ9Kq|wtsFLIlq5Z0U$`CH61WH=Ydw@#lXK|A zR!dEg0s&Oj{}IU^fkCtL^ZY@}w(YoWv>`Nt`Xtp?{nq@a=H4VgLa?Q6+uOF${rv<* z&}we!y%#Pa$&6+XBkv%4m@`3(m{sU-HlSGqmEL>cPReWmK8lSbIg%vzsNQ`}^cR#* zmphbfrEV^<7f>_rq^-yYP;w(lk|c?$=fmgSmEkJ0T&M3*6eLMfBuVBTk(mYEi^uT) z_wh7TW>5^06Q{OOhnpB4+jM|Nq=em@tJU+jbjCk^qn+WUs{)atF74B{%f&YJN zy?`uFwrxw2BuUbF^#cGzu9>CKa{i-}ng{{l|4*@zBuA3u9$7s%_e6gQUx9lzq^m-L zZM$*X`~d(d$#IAMuQWCRwQbulPMtibKH%B5ElH9jNxIDg07N3u=4JPeQxQQ?Yw~-`C zl0{_o4CenYojtlU!p&se@GU@+BuSDa0V0vu|9`H#s}N$|`3vg4B}uX*NwO^xW>qz_ zxa6&>`nmuA8XDuOjx00Fr)P{U+7GSkHlKlB0nJHsDkdS+k zJ)5OkMG_0wH!63SOgz`J>wh630bSF+>qjG#iio86^yaL!y?C>`%|I$P1UgIC>5bsW z=ykz40|_J~0D!Jv+sxcCq)tpM{Eze=e~J zC}ou>d5hb6CBUl7BsY+mBEcpMFiLWrT~S%tb+{LI)XfARld3-t1MaOlea`kdU6 zwXu)f-CMqM@?^3|qL2LI{r}7HwX(XFQH}lMCtv6OS;N@h&4*)qp)c!)(+lAOUmm_+ zZZ_(7l>58bspAYXug*Q~``u1@!~XH{Itu5e#CfH?q33Q|^EgRCJ}W&5G+K9WE{xX;?qIbfgpq;I^tbGN+jMW6Mz z-r;JkGALm04+4^?x&VTr!ymb1=Dn$Lg$FDv740Q)c0D^7V>+CH6W@R|C$%f&Fxds?% z+~Zy+K6dPsTOP=YBz@oo@3_C(*xJ@w@AX_E!1yCvsR=FUE^hJ7uc8U8QpuF9-~NV(J(_P)bx+;&x@aaef;P4=ks5_ z^HU)xRoL=kj8KdJ%~n2Pa}QSc16Bx`&xw*P0R#6nZc75usj1W1=0DCJ5P#L}8d@2E@-^$mu#KyUAq1 ztg2pWZdD%y*K+oA=gLexb8ESh9&7Df3-tr9lGjk?|0k7ZpeP4nx^E8h-^8%nm$a#yiT!3N$PqrDnXoxUb;?{dFDU(geJ z^8cCgze*P0U(w6shhkwHj-0e`^Wt{UcwlQ*+CeL*x+q86N&%%tpsJ#vEhVlSC9tT_ z5XR_Wf?Sw;d8+?${`z%3*mPzxT|}U!m6YiitY)~yv|6wA0}{)r;Tz`{_U&D~aTAu8MVgewY|Kda0T9x_Xx%N1HCN8{no#?%kU#rMt2N(Is!#fGM%(SoDv&h~6)A zptRhCqYA^@hE!V>M7=v;6X@9^7sZSOWp#DRNZsv5CP>j}X=^!(fDr(eMvJaJXXUza z$N8t8Kk#givf{+4X*IKxBCKr#uQUuPK2oM}>A6CTfkv!>Hmkwt9CBJTdxt7|$`KZ$ z;f_OO5jGSwA=oWb(yHW86F#aG-6Wk;b!6WW}h{d>X#&v450dTJOFw z*liI&Zej<$uBYhu{`K0+9{Yo#?S4$ZY>AxCLOj%kG#J(ZC^G~Q`P*KR5J3c@LKntD zBW0tYBdid#96{Y9`Wmwn8NvdDkP?bXr%GsOJG(7;NZLa=pa*bhg=nM&Mw>POvc62& zvisG3VZjEd6TAT02s4|bU5|%r6wGhs=O>rZcU^{~3<6Hwalh1C(i{Ktcl@QDk3R6X zmh2qDy5@Rv>-!RG2`+S2_`(0TSP2W9_rlNWLaVDDNHJL7cvm#bCPi#aXKvcy-LZ-s zwSbFir`eRA4K*IXwyKLtJO_VzT<>W96>>-8KHQuPPWmxLcCVFBoKvjoOS3;F7PSFx( z8v>NB4uVlAVSy4zg`wELP)kiGP21rWS)xzmnmrz~iMAxpD!0-X#ZB*)CPP|%&pHmy!8;zudtINnAHVd^to0wo zUn}3S`BTSh7^bOm>K)~((2!xHY#wV(o8nfBt}6r78IjM@QiUvli$QT#8f9%Et2|;` zB~jaGbB@rY1yTZlLKZFc`z_f{wS?pyxkf*R!fOma1L0)v6hFcul&sQ<=6ARKHq=W z!C&9_Y3;Lb?5$Y^#$>AMqb@RTnT<`r)Iqn0S`5+d8lA}0TxQy$(QzH~hN=L-Ur8lb zLKO$=S|@QmW0kD*%;(5xE`24D5KzT zJB?!*K9jr#jUsMvGLtdSu=A6h*I3>*dXT_jl2>v@l_pI**Y35U@N;1wd+fGtAGPB_ z*Q0wsX5VAxk7pjwyykGqINZ5&FnQ-w)NM)NokmH{Et}hB@HZW5^cy;lL5a61^Pz(U zY%4~f1%THfmJ|vVVxtBgvK_ssCn9|UehrpER!h*ff?fzJM2=p_*U_)o54kmr3_@G8 zJ@|Bs60gVf6u!bU;VZ(u33pF=XL47#JfMct#+(2P^+f&=xbtsSFGy#s!y=CLP9Cmn zU$3kEgXoV%pNQ@rhBL>?VB#zxAywKClB@T|nct$%g|(=L%)mHG5#vnfkO@O08(~4f zGm0t@p@vOf$ZL%JG^k5G1!<)bFf15^mXHWxDEckZKu(em&3CwuNy6ly#VrXwr`g1; z!r`!&v*Yz0pC&o8>Ar%FV0C4eSSqW3Tt6s zz(qEZHc7`&O(9sB?lPm{;mhCLsSu;1{{Vc~*9|m*cIXA{zxela^S`f(V>md+S9$M$ zT-GNtE5vM!k8n=m+$P^+oG)5>MaORM%-+#p%UTj635F?&;aGpw^{^E#6P66{f&>Au zW!b>C1PnmG)FvaF6-l(6dQnkCRnh_q0XPs4U<>qHG+;Xk>6!guE`>Cdp@@Rj&ffGx zk#F>d=&cz?*hmD}B&lfTgS(myYhdL2{N}?n_dDJ}=WgDK=OW1tKVokhvw%HbS1e9e zX2sTZJbVS+yW`U~c=6}XxwATapf6IFSeM_PHsl6P9VN@q1Wh)bRE7Wn^aeoy#Sv06 zltQCSmJFC|z_^W(0l?5k4S~oFhBDYB1vW~D1T8?Q%V6ENp!I``b8a$X)P{(R8MHyL zacOf&l3Zr-QO(cW)A!0*2&&SR(i-94cf7IQ-ufet6&?zJy8#2>$R!g$YS4(OnM;}y zl9TXNA4!~cbO6qqad*4er}yO~2XI{9lnTZtVY8zD+|>e?iRRXYNFf(667+(w61#-x zTYz}MdQWxt}4 zq^>wBR;z{ghDS0xr*{G8>D*wp^UT}HJ^Je?w|UiZZK7HsnAg^!ER(%9u04{ZOQb4rvDfx=sGZvfFIz7^ke677JJ`;%UiG+deuiMK9Lu2V{O{83)a zE|yUyCuwMFI`JBl>k=kwMR-930i_FyioysTg+GK}>bJJO(W?D}n-8ZaBhf||*4Cg5 z)Kw(h?|c3J*-xu4kA4I8Gfo#9@v(mveo>a9qwSLrASnh;xWR3Kv_x3gSS~LnHk-}d zAre(qhcyy1n|oef!$&iZq^NH=M0gwz4x8G_n9>gcoEW9!#Niaj{NR z@}qLbzY^R7J`NLa_NVcuQ`ZJl%qcg@E_I-pC;Sp2WO;ipHKRl{@1x}^6kW_cItQ*o=R^vx2%KiWHeHj6_^^! z67ASDy3di3cTH;IrsZTJ)yh>WS+Jl)wSAX6`4pTo6+^!b(kJ^_V^F=hz63 zxgbkQ0jRvT@H`+j)ff~hQtcS=UoWbl6WEc*P>V#;JJEL43CfDZ2qIc!VZ+6Si3tQA zaL>AWHXcHQSC44QN;cZ(%g{>65^BSG%J!6ZHgfiOx)H)DY6V_#+cb0*pfm{(Y$NZb zYwGHo8NHmnJ~>x#Aa9&JB9)2Ob&&`ePRx2|x@Ww+U64d2*3h$5i>dzy+o5q)x0Ua0 z-=Kqi053!IUc_4@7g^K8GMnm(D%E*&l#hx@<{ED#FMs=*UHchBUkeX@rGN^?4}(dx zG;DUDsqo1Epj%X?A1g0H;a3TLW# z=!w(Hn3(vsl#&>4C z`*VF_x27O2J5h>rnYIyp3%ZY=nj`bg=kY02%SZSwc&KJ-6E3)uYSIXEc~P%!O&o{RA9RVyGH z4p4EFQFS1#Xd2pF+EkW{NC74E=twtVP)f^6ld^bszV*`t_U!pTw=Pz_|`o4ra0q&Yn8knq(KE%lP7V83eXrvgmThoYpIZr zCXOgT3K2qsl_0X&Cse>-yB^xT$HZ|s(ll2Qw6QW~x$ECr&%ExS?8%Eo@|oI4+?mVq zCXG_`VqU`Y&i7{7*eorY%+&NY-N{yCnH~EwdS=Xorm!y|Nio4Mll7g&v`Wn)0)Dz{ z`7hpg*DL(yRff*p77b)lQpp{>`>xyD-c9@Nqt0}t+wz3zWr2X;z$>J1Rq!SCcjDON55%rAZGS8ZXf$0!A%h?M2~Zr(q4`G! zRU9{n>_(YEQ8z_Q>1Cy)7V=%0RSv^th3!MAD?}g@ZEWpH8*Xt1jD4Q)Ieo&)=_hwD zsR(eOV$mkr+(Z}lWi9I?#}a9vfD2)o37trYJ?Kr&GUY8$y>;$o!Tf<%;LlGpl60bG z6K6htevh8Z|DgW{fdRI&uyjJtiW~FRyyjLJ>lRYdcDIk<+k!3!48BXj5VQn;!u7xl zy@HZxCs_$)2uq*`0ipm2U+@wlbEvep1f|Ch_Men{%TuT}3APMRMt(}Dl4DenwpQnz zt9(?jtj-`n$EY&@lwIjOvshI**$J6e za0sgm5~zyks>z(969U7q+8-y=Ohva5q{XA%n4%)|ic>)+qpsV#w7L4@t35a0_d$7k z?PD}$(3G|g(_Fl7>_cpD=*7|kYzt0+(56M`#9RE5%4&;np-Na~e$M!w;!~1=u@FvL z+4ugHpZWWf@6fsZ9lCNWF2=FbopVdxh);D`YQY7b&Szt(SBI{rTReWqDUYO zM&lY{te|b!04$gDi+}v$*FXEcfA&j12~$|DcbA8F*o>iK>eqlih1H8gbrw~kx2IOm zC}Fv9@#LM|2e0#49~cWqjMqdI1yg6fbH2|v_r2#mS7%%s=0R2y`(FFYU&s3yBH+Xx zQd4#)t|HkTX*p?u&K<10_{dH*Vk0{!w$Z%maGu6*+x_L8|Rw+nkrq752_t%?2)=TLkiO9_H7;L-1?$@l&46!5wqpUixjxkKk}ga7J(=jyw| zqkM{+I^@$Uq`-yF3GeXxLEXE-mwnITdNXfy)3;&Jc2vjvGXBYJ|N7s!|AtJ|Mn4!g zR?|n-x=b(#;okUJ`?+XW)`hS%@qB+y`#ax#!q~?v416K{aP1clzq`95`87%%Z<0nf zdd=tH+Fw1#Z_|8d+8r1mznJ6Sy{=#9{ki$zD_@)W&{4}cm<8a;&D{fB84(NyEyUDO z6(gK((*q^!K%J>Kmu}g&4s+h{8HZa1j}XGpO6yWmOz4JA#H*I7h%g4Kn6~GqlSj+b zkEc98pZwQ{%j)+Zho6@<7orQn8KyXJ*5>??lLMagD2reeDCB_VB%7#*A1B}E^zJ;H zMbr|Ee!87ESmR%feV)Gk^phW@vt-TKE+4MXHf{}i4EsO*`5V!-kH0hi`px{o6yQWo zq6FlwZVNVr97nI=w>p2Z@wz4`3zDFq6jjgXWQWE1u>UQMdL>1UY0xZveK8;Z@4des zeTeen6PrDtRT^fo5`Kv@<_3|&i$^&aOs$SlFL-pKPMc-9KC_>m@8vkz4yOt%#$O|7 zX8;J4w1JL13Re;hfPg45NzVT}y?6euec$B2&Efd??>(P?F@ItNi69mHpa3A)w9nYR z9lAQ;TL5%a0c$8G9~gamJ^#A=XJ^l|obRPccCyitbYfB#cT44tUzM)?m&funRyd+W zM$3Qfb3wlC^Sj92=TGDX&)T6QD5`91hy0h6*S-w}Kvjp~k+sgS*0BK+u}y>8Ca zcz=3KP5W$Tt2i=%a59+dhtU};m@NyUWTf{eh(@}HyMQWDj?-Z%Cgl@zRqsvf&P2f^;cx!^l(YuSy;|Wo?YbO4D8E}L)gwpK#%fpe7gi%hzRBHqs|g-8Vo7Uo)X6>_qE_F# ziNb$|zlHw<>1mS{=E#;BD0!HFlNYOMB$gZZIE8C6F@~Rm@9BTtR#MnQBX|*iP?!id zAjU&i^QvGSJS`Ai{V!m3|3t@c&72k5)KIkXwqE^;+#LHIS!f|b1PX*mF1jq*T!ZxF zwf1diqw2)k3$9=LSF6``?%5hwNUSfI4j}zjB}tu>Yo#^@%#d;)=PS+1j$bCbb*`k? zGC;D>xqAVP!4Fg2bmm=ae9`k}Yj)nmz5j~-?ph84hH&*Ffu>HH%75J3DZOM?%@U^j zTeOkE;r$<@{%s}}hOO!hfP3m3kGdFO!P7XO$ZdFt9?>0XZ$U>;w@@%tS*w2P#e6PO z;vGZ07RfuH`?~%&Xnh(j2G|1+nSTS2p>rEEI3!^a>|$L2)XxuY+V8~4Sy2drji@X1 zJo-uJ{O+Xck_hMqQe+yMar<4vN+j#OCs|zm28~VY|Ni*#_~zqG8FnP1?p!&^YA^}6 zj+hZeUKPjl^eexb?C@;ms#24zPYPgw;0zdi2m6c*7vy1cwzAYK`Tpql=AE8j(X+vK zD=8!pI3-~lVa6(|m5tA_a`n&G)FI>dTpw?^|7ZD!WW3kOVxAXmXtfv4_`-&YCmgNw zB;LqYUe+%`Dz5f=Wu`xKCg=xPn=lAx(OF5l_cr_$G}ny64F|@8g|Lf1_yV{9 zAOlSeDKqz3?F1+*YsEH%vCTX62Y%-vGY`Jeypd!)=r!;i{09R-7DxgNa(Mzm>e{eK zMUhRZ^kz!44Bv5XMkeRvpHE?|B|1Mk=%(@3coI*V7F9A_2?3qZ_E>V*W?*j_yNUw2 zfu=mzRP=Rhb#=<4krWS^&u7hVZ_ZE22ZjnH#`I&@EhZ6Xio@eQ=#O7~KHvQ9HBqj$ zIR(SvAOu~ieHuJjepC=+$~2`*bUk$am@w{*X$(<<5=fy6orZ9*@`V0TrZW9#xWItQ zU4$&rW$oXv`>)qlaqq9)eeoBc`O9bi+>uKFA}nZB+Ei<3BVYwtD_$<7Pm*0n{^Dxa zQCibsqBZy}{!f}A0wACzl(l%(+9r{+Ca^!JE;^vIDrQ`kYi9QB*S&k$Jt&f_oV>j7Sd4V zth9o_!o!WL`GfDx&*t3|Fl(}Wr{rzk+5l@j`N{ktgmftkfq}eP7WnjBAb3>cuB5oa zwSXc}a`L1LPc29A9i7b+C?+Q$ z0U&seJF8Kq4_W5-k&wfJM56%Pv2@X9C2>-}xK%7To1#;~Ix-Jk@O zWl6;h)0p_wIW>NnUA&7DOreLG&{9%1Y#4i6<|pH9<^oS75TyY%DCeCXlr|q;GH7rW zhu8cZKxCv5f<|_1t;h1x*xD0!Pcjc}?p{tCXP@fRznc z5VrIMS6?#EB0X=)?UPbAPjj1%jhBu{la5RZ(ng=Txe)l=IkvZjD-$YNMs^)fYO?7C zcAExCaCjy;yQ4fD1{atBA%PSuOB%`Dh+&YB1kAD#uU$%}C-||smgy$~083<=ZY?z5 z>-F(?^-$csAxty*Xzk*mWVUJm6jKJ_h5!UMkopyFNyoAY(gwxrDM2L{$?lI$k2#@i zvhsph1x*H`VMu}o0bYqk0tc?zXzkf$(MX{Em>_d=eyldFZU@u^l(K+?Hdwqf`5-yu zt>Fm6LT;Q31xjsZ7&QtyHUO7LT4Qs4?pV0?UMyx#!_P)MUHlVZvseT`p!BJ(Ck|My z(vWma#R8WcI^o@{0-6@WAOM9)Wv@r!O0=l3lV`xDJXuCgb$x1Q58qWOuXM(qlTD7< zgP$I~PQG>$n11>)k^ILONNfN^4SKa&;%beFU4lwa30#U?=yiQY`7Enhv#MeV&ZSgq zllR412+d88kh$FNSEh?$w+9}CGE8%uJ8kQ3i+0c!Spg_x39sa1y|0(|#P-V+$8%8; zB`D^|YB1Oax+@3R>M?-&teWv=`plxe{V9Gb=-@wtVdv)Hi4L$e5Li_M9xew#STQ&W zDP8cvHIhME0-+>KMbbifK)#X?EZu>}QKxTUhb!PzHO6jx*BB?HwTMK|%da!$cVczD~~^Q^t+>#k4`tL4Zf@c(Lk ztZ5Y!XbOt6K0S}cXdo1vC^!^cCURIkihPUtgJ>D>AF1EH=h+po zSC9}kr&wS^u@-SNMULp+n)l1JrNMiO9iSm=dnFISfrhRJo&%^J&~c&0QoPk`2DdxPF{`Htb<7F^{R70Y8b^p zz___=Kq5Ce;|9}$7>2nt91^BWh}|1;%Q5&&TiwDG#8_*PSa|g#c|YAj@&q6@d2~M< zJVL_|txJRDNR_~B6(wpAs0yEFG}Ht&s2)TOeNTBw@GkS^&T}m|?yyvFKvD)HR0$wv zirY*G3rAl!zfuw{GhL8Ydd)YL*qN}srm zIl+>QAppr(wDuQTvOA$?Yg{Ld7uLNvYC?{snu#I={yUVBWz1#N01*HcAogoINJYi4 zse`?{W(Xk2@ZkqQ!>EWk0nSiyW`Fp}$GeeG#VSXz(LpE&JBR=%;^w%uoVY7p1!7>g z5KZ(d^AhRzd_|@bL)w9b)x;0Ri(zF^Wo@eM8WXF{Os5ZBQxH`V`o6llvQ>_CH zS7J*;0uU;m$$$BK)C*cd8A#C@t8N`d43NQrWzJxGmgYve{0w{tT3jrd{)kJ>RlVG2 zCzxTTeBFQNS8O!@(&U#$F%x=26yeL7jVBvvlT9XkFfzcw4ddW4wPpfh)3jwUt&+H= z_R!KcZWzlNol?_JF0_;|hR%HO8Eq&AE=?I7R)tL+CMBBi9nSRicw{DTU;Ligtyoi$ zyB=d_q!^oN3)i#y77Q8&cSi(z1fT^ThL1{Pz(7Paq+4D9$c*3m*JcJI4RD=6jtJla zeg4XgbN3icv~;QzrL}^902Hdk)+rgLR&{55VqY0|)~e3P_D->h5gNro;A5A%*=aRj z$V}47HmbEnG8K8l3Buay>F$%uhbK5W5a^=Bz-g376& zDllLORK)a+D2AasUfSQCK4-dTC{(0XA68XHQ#XZ=7HX_VgK>l1f;Lf5iSB@a_~1a* zA@QR%x8+ly&}dW+z!XYu7-7?fDj*ft0YmViLJ3Mqfz~>_(uEG)b`t!ngThcYTY@4) zeonE-Dl0T%DWdEzKZ~{w!N4(?rt5T!(wfaH)SAciY-S~CP8LX?1z{msZ>%}^m>ZxZ zfMWxMRmwvpSGJTw3T)x7T6o!T?9{7zk_4bPx=s*?w>SCu!>;?6yiqss1sBLf4Z;dA zfJR9C%p--|<9zhfC(|0zgc2Q8^I8eMbDBi08MV4mR`KXh$;e92G5RF!&Ml%n>7I6{ z>ra>a3{kS>Qe?OS=8OPs=I-Hokd>vZ7OkNJKU9JQ)>SGrQ|x5| zF*3D0HI~)`0tD`(q(*0>KMEyvpq=u|hkK2W*PrehgWv`NEFg^#nSr0hhB%%sr+wu! zs^gk1sdnS)`e-dRKv@hSTV!uXl(pNE&>aympLA8@Q}V6U?348eyhVWF9e{?N&HG$1 zl}rPTGTbie{nX^KCc-~>d z*8&*Wu1ip=n5jFZ(g|l?b=YJB776SrHWT`T1HW8TzF2h@LYHjU6?xv{kOHBGLYg=b z*ftwES(UTDjK27c>}h%L(j6^d4WqP9b9dSF0q(2~3khcU={ClQPJ8t==Xn zLyI?9sUaK^_yVMgR8S~s%L?f&a|4+|U_cGQ61N^}qBSn>!E$45ZauhI`&ac=MlK|$ z{Gs54$UsX0#jpkvma>_E6*dwLr6{V<6({+ttb?S%mrqv33d|7LKBu(-jEA6wFZscj zKO1-BQTh&;Ujbnl0EBhqlE+=sMS{Kq?zNM({gpv_VT)sX^8ul0ISeRiE}Eb$RHksG zQ_LqBMQ(*jU(uAJQ?eRVx_%h5w2&)ZsPB#~D^Q^hb4TGoF&KpKuBk0N zA@FTep`;~C1=DtViD7Dh;bvzQC|R($?zu~AKt)zsig#_AJVqNCD9V0DwPq0nG}1 zkCkR%bs|d?^(W}S&BB(!NwESl{&GfHhkJ|FV?g04Zk87-&5RKrA-U8{$YEvDMgHffUrDyZ?|z}i-y&{T=g zaq#E@M!;Vn4+Oef0gA{Nt^m4kt4l1@Zcp#wh~{wLW^?yNcw^oK)*MyT*GThfuT7OF zhI2`nA=`k3={(m8vx`GsFTKv zfz-W5l9srl{Ag92^ZLRLr`H<$VAE{TN%)dymlg#Tm|)GSl+m^=yX}J{6n0UZH}9Rm z7T5z|_WtG#c!!QUZkjRF;t+~(Ek3o8>2h3_?g;lxTQQ zqj6IO*-?3Aq0>+8uT8Lhsb%S-?eRnIcX7QMuCl|8#cbm~(twa!628e-e3mIg5+~ST zfR-MtFTzsdls4ndtX>Av-P=yxgl_ubQfC~;`a#PUE($6tD(>z5UoMXR(HEMK!2X4m zKTt@K{5m!-xJm>I3hfxLdAw*X`nyMFCK)02@Dwcr0Du2F1OaXK*8Vki7k;%euseHZ zMs$_+>22xm-y*##vuZQ{vclSEoI+C5lVp$q=++#R7fR89_efPy_Du~-Egh}V1P%@^y3qNRpWzK+wL;+u#LzT~ekBmnXd3HG!ixFI%d7XXgL!n4d5o|rLP zdY~iWTsc?x6kz7bBz1SwHL*IY`I~v3o=cRT2Gu%$jo^pX$y-mD9{p>W}M=R{ih zRrLoevEg^i9<1@G-0DPtgH3S`0WCi({muSB10WEIY+R^M-sNTcvgB$uMcm6Nj1EKn z2R~>NHH6Xw2_Ob^3#?R#6h5}4YIMCXb@13g5kPduyu5V%9SVZs{>5E7&PK?h5>0q<^Zg2q*QygXa4vV1Yz!lcOpx=PyoA4`V^v2#{uJt4$_Y<+Xw{ zdzlS*0c^_+&}<29HM(QAu{;-(t68I!F>0=0i?hT;*S?LXiDpX2c%-I#h!XF>zx!!HZY{&CaUUdpuP=fZtFmyuyZ%Ig>?*9MMAP9 zsNvD3EwE5evxG?@2|YaCR#TVDf8KtoE|LV$a0%U$1JvT)g6bFV&hMErv$uZ$4h_2= zCDVP>^wYup$*DhsIAdvA$8L4}YEwdw;P56fjx zNZTOS31|xT)`lL0YA((j!Z=&P@EXt+N#Y8^KqoNFSk0$Hbt7$PVo6a}84oymjOIKq zu%%1f`pyrsBQPvF@{`$@=@ecf{wT@8YNuyq{`3>bp`{{dZFs;?lmbKC=aawjBQAiX z>uY|ae?c5+jIA~HSLApG2J&oEqA5gLh<<8b=*c?il7LCOjNl_w3_$`2mo}EE&}YaD z?T~0GdF|6VxakY~bM2|+n%RF!4oPAb4*CD=R2r!1hpx)0@r{6LMpx0TgsC)ePY4XLiuwuz-DiHeCZl4>9oyHZTu;Lb*aUwQwD zSFBj$A`Kak+$eD&APYc^5t(%M*%ZEg$xP}?^x^qO`r%Z$xMZVa)e>1)dV=l?b>Ooh zO4tn8Lr^oYjkl&cX=#Qoz$8Gi1|TG)D$#_RG>NTL1{cYL@rGnFlHSIICrx8xxyjl# zG9tRhOfW#fPSFxlOR8Ul+0ZapQUAxuKqQedt~l#S)mh3SfyqpzerH<_pSYI=eL&i88{NOs4?HLo1S{@0fy(qov$Q>GlLLln5d$ zl1_Be7{hMt-Sq~e@Dfb91{ijykZ7ooHE0P#L>XM9SSAm^)scM5D`eR|ubo7e=H%|G z)gYg>#<4|w9W{F?g;;Hr7t2yN!MiF#L!}P+iX&c@?@scHB$+9WpN2?YZfOt5rw8mg> zit}>7MDnE)Lgmz;#s~;)E!@z>YBB^6%D{2^7SSMdvz{KS7628;mm1?ogpHoL(Y8>S@*0dU zjW)9(isD!WR}NmtXV@$qJ$fsCWb+`Kto|>o0CuB{q5?bsvwWL2B1Ox}p}ovNQ%1-& zZO(>8ZO(}`h&0gb;w=rwh;0G7-+)cX%GD&Q39E=G z>2bC>8fcm-9V21~gWPH!y2TvU&%hf$tY;Qw_()cKV1tbbjd*Y8!J|W(2C^6;kw{$C zX0USoA=PDus}HM=og13k-ZP}MJCZ?UxFHVcjW`1WbrN;Z zGcM_(krXH){w1eHBhydZ)Q)z-!3NQmaVv$E)4)JTMg%740Q;fWtGZdT!=Q8r8Ifbn zTmgvTqT)UEj|%Jvj0wSW;jRp$!3t>F?dFr0z10CM=UOhLQ_ZGzg`!-au*DwQv!4OW zc6!AlAv}~XYzs6X8QYH?t9f}<&T*gLY;YtjrU&fFYQPLsj3gD zD@c1n?M!!5XhL+f5IYa%5rAK!xa50Q08j&b>;!<+(7mD>MRTl%U3!#6jbZFi36>gZ zDsltgfh^7PAMhzz;dR>Bib0gx4w?`p3`mI*qR4<`SuvMg_^qL+K81EKh)JPoANMTMdKZb|yZG=zbfIM@f(@8K81~5Y zQxnw-@(@Lu3=F%#+#aZ$YI|2PJ>ZGzJ+?ao8>LV``$O#9iFNYVsHF1hVNtfWVGe}L?n+l)G+mmPG9(T#gVU#9WX zSx4e)WadFC?l%*3QH;7)uv6R5OKz3NaF7oY=NMzxndd57Yz`&m~?Ijq-lyx_FZrq!#H|;0ORn z7H5f?H^lMsX~c+u03Bsi><$O|>Pj4a+=1KBN4~uFq+R$~|HL=X=ewVtoLA>6VSul~ zZikqVAO-=0EC{9yFd|jRxsJyY0GftCjb+mgV5n3~pdwI6=HaEZ#|>hB!RLf9Laj@HUJN^QHfd5hYAMR=qy!$+9Rit<|}2W}s^slbOU5HJd%D9{n7q zp&@0Gv29>Wgd05dZY;4~$#l{Zbs^P4LI|tP@4WeH?|rM$IE7U9@=AJ-`{i}nBv;SQ z+lTO!@V7he2)-7miw*082a^u79YG_bcP zZY5N~*oLh1AX`p`D7i}9-$ggR^S=4V(9Q%dpVJnU1meF62 z{MNQyHx;#F>cNUt3}6g^NTJnfQ&0Ta3D*^Jt8dQJfQ2j$4IEIh154O!a14bc6-zIH zMGEL7u?=8=16ue0CzwRit*fC9is89_;C(5KJo`u~x{PTs$mo&CpA4f5eB|dZty!o3AwQq4Bhj=}ST2f9gD^`1 zqp9eQgJIR18n)yHOaR&ghhJ=RO;vGj^kGGp0Rv!QdnbrzQr@)F!CabJNRB&(h4QQ$ zXZi$BGW;^%VXgYi<*IwZB8FA~E8*MTrBIn>z5$ z5^@BQ19pZhV;hsJt6pd>aG&yPNwW^Ch>70(d}0_wug@*xWp zHZ3U)6grq{6hYYXpvVl&Z9m<*SM;it-e=tmvn`z3-3jtG<&QWWJp31^EWAncmR1HN$4SCa^(TM3A50Ppz4}#H7j{ zywmw6*X9Eu333Pp4Ox;m$x^__$lGlX->be$>+0=D&sam+^Z=d!3a7rK9X~ZM3`5~Hi{+R_Yxe)~ z)0b(a9}9|Q(~}{u1M?0UQ4!`c=TedIqrrQ=1{d4qbbgfCV8oVt{7n8zCw=zZMrn;| z5QS2tCYfQP`=s-$QL*%8oq!F`%WZrlehC&d4_!*cwY*uE>f1YLAQ1vUht$CQtUqWH zpo~%$us(FVIp!xA%JocgOPvZjI)kZJ=`HOoY33G`lw-P4WKlFqHzLZi*ZpCAP>L}m zkQ2#?uq-Mq>6~{(T!r;1*ZpWcpmI_Su?F;T3s_gC*WVWcxd~9iA`_`5{OLK~aTwE= zsGK5LT(#Y!r*R_KW*0oUBpwq(10`Jb5CTr@N8O?{qxMxP?Ge4MEtrFjHSPKCUd_c!h_SSD7) z5?Z@)wSD=-6KC+Iwkr5Aa-0CpiP=PZRMhU6MF@OeJfmH;vA5sO@s>VT)QTCKAlGIl z39zvfnKcFeXBiFvVkAc<+$mc+9C8G(q*%hp5u#y8S+3F(kRF#@l=2}aB<-LERHn6h zQ>Cj;Q4bko7)$oy_!R~ChyIF)I>@dek;LN(xmi2T;y?k@6H6y7k3EQkvcJ(C)1JIe z8wmy##3HE9RXgmWTMkfEd+Rz@afgf*@jp@B)>oBQ_hR$07!{>FW%Quu(z1(FHn z+)BK^N(Xc~fs~{s^rh?=PwDbojPcjtx~Eru{*FtED!MJy3NpRH*N5E+RnaFr%@pzU zWVw2h7IdNXOnsk;`4dcJFh%wZpV#BYElR8hng?9ef2|7y3|#Td1mL2fwHDH_=0e zu;~3jxCY#Oe=L7`H{I{^@MjhO+0-TPFMik>gWz+s3eyVp`w^lby&f*kxGrX5cOw&M zn(MTn2jp>_3q70m>Z4x6!hX$`WxC)VBaT4~ox@SMjLlsA(dP24@5HFW3U#XHoBAL%)-QLGT9YyU8Lv6p=bXc(HLGC>q?`Ua z_wSE=7uwLGk&EoP9@p;ZQ+O6Bi10Xf#Dp%?vDxml|MzSLKC)M)B zp8|T|$ue^{n3xCxJnQcpTfYI(BoQ+*g3H9RtUPglnQVxaZPk&YvT$?#L{>cFSEd*W6aEiwYuhDm$8cXkbbu{Q@l z8tM}$I^dem>*u8lmQt=KY!T(BL4g~9gt1@}(SLslN(&2!a{$5fJ-+cVGVa{@LzTf3 z?W;ViYN&sxeh_n<4Q7R+Fss^=x0vT4KSSna#C{|O1V68PT=r(Bs z1WFMkwIK^tC^ItavH=@9eH)zQyYM(+3vTQk>jS@*tzXyUdm9ig{@-Ginae`JCNl9{ zxx?$A2HsDUDzoDq?eB`8Q${7}m1}z0Thl77Ao3>Z{{uf-3dw2)R9@i*hcO(xE#wYq zAL`>7>?k8L>dDhG*)Z!}wdJsDH|FYN2se9Bz$V)HD2(}5K5WWQ9@BJS%VgXRrM#_+ z#{L>_2Sx$;n(>*Gi}Drz{r+I@a6wD4Dzp~+UI2DRH?LhJ_^_%1V2x*qT#t_EoRS@rge;WEv$Ak76PINAq9MBrNe) zPJ`o9xan=7Fw@;-;eH~2KI-p}?rR@1;rV3undy8Fk2_BV;guO@etz@+#gTltRNO4tjq-)l#k$l&`h+2+r*-s&^H9D8%Bs}p0e!T@O5BE+Ugm{Y#h%R=m05cEXOj@$(uy7o@Yq*H!bbKTdsDjTy}?$KuDnhxzHk+nb2d7HS_6C(Km_u zkj&+@)m1z8#6^pdecE@tSxUZGyMBRK(m*O0NF;dOIM<;L6bv0XG8yEk4QI-W>u z`t?Ew0~$(TEACXA)-il1+Co8g+6uB_D4ts@vSsOpx!CN7K1VH%XBgk3i2ymMfx2=j zZptF0*`M(dkdSO;Q+l4s4)Lxzck7ZYvB(=iLuEfzEx#*B@q2L9F-_1dA+fd%X_)${ zIrKqiUcWy(eMSW&i1OK9x`z+*qBG-G@%IC>sA@QOpEKVD>dO3@}jBc8{c zIx+3uHTwT0zP+`B8mI#k1TbtPBr&l23hcfUxInVhI^bt^(Ii4p=cDMxqd0Er7*XoH zxcLD(qnlH3{1yW@hq)1vH*~s1{LiI3ktAc>ALRZ=AN^&Vd#}Sgd#oY`|0>J?ERy$C zGFGuxNH<&r&K_J{L@B5~#1KHL4-VrORlyy^P~e9iH|p-{*@F|;4F zBFM?A+Stc+<{Az~Te=k;84hr$SOlx#R$7)l*vy>U=>E}~$Rw)#Ah@rj9gtC*xj8oq zaRV_O1gn;sjZjJTq#Ra5Zv2L+gII#9MUWz9b~<#E-rTm|uzuV zm=n`EjY`Z9gGW|1#ZF%BvoWPp4@DeaEMQCun!&4iBag}@Vn(yk!h`Q+s%~Xd#p;?G zl2AwKkULGT%4Jp-tcr_HITS3LspR-qe5U#w&IY}`he-2PIHQZn25+VpBSaB3%>8OB z$l4kRlwd}R)uNeRB#nSHD7aR2F_Ch~rTjsmL4aibL$A)JS9(Xu zR1=i!thi~L-+Q!gjMs43TqKotf+iWq9gc(Q4WGO727)S$7gQk7N5O-*FKbV%<}s*Q zVci>y&kutKi7myA;!I<{TDry4<-2pcIhdAvaU#@h7O%sgmgNTQ@R5HTpNFKrIE6cs z#ud{fqtU24X|K{F#VvH7kYUR86wzM&+9?Y@ExSDimi+>PTbw}o(5E(~Lm1or=F4|p z1ui)@mADYyuxx-@ilxX67nmRi8qlS3DFF#)(k+E*51pH8?OW=^DdYfW++TOUnjgO2 z05?T5Zp=LhvKaGXC$sF<>{L0?#bRWDga{>_jQQ`5y8tL;0YAvT@Hwato)=HYK8vZR zDyOZQx6O#^x28`Xqsa&s#Z1}5{d)^X#&B@lNi*0MDwb*6=oKgRT4%Iqm3Ey>X(G&y zWFZ>$NWyx{c(ZMdicaD^{Z>gBR-JcGo8`kLUUSJ@cA-xe6kU3I70QvT*+28{W8WPH zPpdw;xD#q(4_^i?pky3Gi3Y+#P#8Gy;!WUfSpygWUwhw>b4Tp1$1*hx_Da7#Ma9+n)X2F zu4DB4b+6WX%5yC%wlu}U^Ap=!PdvJ?cU5Xb4TT+aUvW&8Epx4Gz@{iA4)zQW$QuMI z#wj5z&7$ApX>G1m4V%oHqrIjPK?iHxMYXsE!$SP-K4`DLoyjW6Xz@JBgGAQ!3ZQ}j z0RVN*U8EeTeQkKP*1SD3bHSOj9?t2Fe&YV@Kwgl^oC*$wZNks|hQ9}0m|3F^YDzE_ z5Ky5(8X%x(A(J_oi+SVhPd{OF)zt0bCf?wF8s>ZMU7x^>);!rW*_DctMN-Faj*1sjQ5=!Rgv02oY=sTZM5K-Umwn z;aaNWBbc@lRi%ZS`0x3yf8-TY6OGg^PGP(N*_*3D2 zI(@&S1w0ll=rDW^O^Y|cZomhV!76->832R^0Z?cWz^c96m`sCfb;EPV+%bR$PLVBd zfnluG59WCC@(2Wa9-L178+jDQ+yew&tHy|~Lp?gUgKpRh^ve9WtmK#A~qk@_~g`Zpw4p$jGzXng~PHyKe7Z0IFd zRI)&NxwZZ|x&N`Rk7Q#>QzE7tp6o1?BbtEebdr-8B5E$}7wstWZ z69Z#)AjHm@)!ljq+|mmyr1Wh+iHpMn(d z2Ec${P>={ogf^7<)~ws`zU`~+3CX6}bO~E-RNa^yu}CJ#)@n#$WZoP{+L?KNNkGd? ziiNWM#1JPwPTE6Pt$!P9GxIJLBUDI?q%P$wV7S3c=V_gQ0l-=UU^n*WZUa%Og$7ih zmNSYlW-&yub9h<8w3@4)Lq)V(rQu!toAGbl+%a=`*0gX38rX*E^jI8 zszt~#G(>95JM$tH#-jPI?|FCVv^~iy<_2z-h$Plg+oK}|O0LmEJxK4w zS;@RzfbKui>3DZ*F#qto1o*&8tyhlV88VxpW~1z&b-^eN1e%3MLRxNn`)uv1RX8Xs zZ)rdbo9anI9=P9c`AT?5dTXDW(_>U!#^G^r?>kTjc~~~g0*>_uI^9LSN=qNfDCia>R7qD(aolGhx<|o)|C!TO;X6vt#namRJyA7M%VI15k96$fHz<> zKxpF*mA?aMb&L`Vjg5e;z#Z=E%fO(Bdc1VoE>bFho8B~Wv2FX@a;#*5sw!2Y%mfk4 zUA4H*Yrd2Hx4z!sw4QcGBq~`Bcz{8y<_M_DgPG7_T5#w~%v#s&^2F8%mZQ?eG@3B? z<3Znixh>m5&DKhV(rk!Zu7_gM%+6?H6R4qd$$MGns$6FFJlYMP2d#n+fh<)f?X>(; zCj3V@0{!iVU`Oh;pS$H3*;U-7z)Np42J*5W_U1Wkm7b*PlA|k=fF;hm$BXMg=E8`v zWyBtxD8(ZxTYSj>@a7QBGJ?gd$ucK*Zp-aAV!XicdSsARFo$=^$E)@-w9GSkG8fWL z)EIz@loOtdm8|j_G?2>%+I!OG5@fQT^e97V5Cu}I>I9zVPpy$p z26qSezQ|a!)w?_Tr^)~t>_3-XpPNhYKSK%tVr$_KZhC~(KK-=o={;%(GrEpDu}>{! zmuAZ-mjvwEL60jsqzEe!wAkW64T>r{IQT_g(nnn69akflo5#8J8VV7FKv|=fZ8e1b z&CNVuq)U$DCI}T%g1{i%=v8{Ajmj+vhBl%cu_y{zQp{t~!GUi5?DV&b-4}EGU3E!B zT+D4)*m^c=aWmq;PgiUqHP5g`jB$8BQ)5&_Z#$?8_EyNKt~xJd=u zz*b0rD4Gm%$ztL%W`l3X*_qyrIEMLb*4Hwf+AG&9IaSuXT_^Y-BgtJ?2}8n%VgzL8%xJ1S0EV-J1C16`ZO1ZgJup`yc$?>DThPC z;M>|Kx)l+6wYt%jKFN@}g2F<0H4q+sfrGiw0{{k3P|Y|)jZ_AfsUPESS+5Jl=9aZ8 zbfRl`4QD`I>o`M)5nWj#Y8bkSZMDBxg#biAN$N>UEaemnfCLd803g!lvt=Iy`ogg+rGh;YxHj zfI~YH>wOqy6fjv~85cZCzyK|(0Rb8UVf3s(cc*R`t}|P zuP&Y!Fv+9^X4wr|&<&MzmsGvX)U9!&8z=6>fCAt_8Uob%9RLA90T2!V24Ez>a$HN& zD4dEZD^0mb7m>+Ck9I^nyWF6+v%ZDWT6KTS^{B+;6NZ|ok5w(P)Qe5HDfeS>2Qrd? z_EIxm*T;}5NJQ#3!-&QHruDs1;2jl$yW=Ak<+82MQpq zep3;-B5omn4*udWHTN(Z{Yoh)G?qHw5kwt!`Dw%|O`dV*qrps!~0#eS9%pl=|6Kk&N%M)a1YJ7 zd2P=h*K_jhG}#}YOltY=oXu1K2~Q4~%$^3oBF0`gx6Ln`{8L0~IBer)u^-*%`000e zi0ePN7jU3RK*Ez3zJuY#PfXbBP-8Cq(7@+H!1WN8LI4~)^-bR|wzlhfM&}EBDt-gN z$mOyql52^6zy4S-Bn7o*D}UBUcLN z!oJd(CpvIg0^Z*^?RzY9rIO@2CA=MJl+4^qB|RcuELNZASUPA0xtSD5awKhmEg_^( zTS|dDox07*rF(moYp1_4&k?!DPF*a0j6wpJAj#rgy9C0~XU{CVCR z*#F^|xQu|2#&>+AtCrf$-i_qp2bc8p=l1^%hydz-N67#H literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0011.webp b/atlas/coroutines_temp/part/bullet_clear.frame0011.webp new file mode 100644 index 0000000000000000000000000000000000000000..46463fc82f14b2daeb9874612ead823535f4c7cc GIT binary patch literal 27350 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 NSJA4m2I7DGBLSQ6R}=sM literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0012.webp b/atlas/coroutines_temp/part/bullet_clear.frame0012.webp new file mode 100644 index 0000000000000000000000000000000000000000..91ff4cc273d05291771d793675426e02f5ff7cd4 GIT binary patch literal 27244 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 LKNNrf|HNDd7RvHe literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0013.webp b/atlas/coroutines_temp/part/bullet_clear.frame0013.webp new file mode 100644 index 0000000000000000000000000000000000000000..c10d1034d3224f9c7c5b3d38d519a197a5ab58dc GIT binary patch literal 27028 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 Dx#gE) literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0014.webp b/atlas/coroutines_temp/part/bullet_clear.frame0014.webp new file mode 100644 index 0000000000000000000000000000000000000000..196f4999aa0b602160667f75dab4fb5b6870cf1a GIT binary patch literal 26906 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 XsAIyl-uTn}#IpSB77oXD{7(e|k6RPn literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0016.webp b/atlas/coroutines_temp/part/bullet_clear.frame0016.webp new file mode 100644 index 0000000000000000000000000000000000000000..e5378fc3ef718d32b7f18d0783a38e788dfb4300 GIT binary patch literal 26546 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 literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0017.webp b/atlas/coroutines_temp/part/bullet_clear.frame0017.webp new file mode 100644 index 0000000000000000000000000000000000000000..ea0a425bc383dafac32f79de55e07488b7c06e34 GIT binary patch literal 26022 zcmV(_K-9ldNk&GVWdHzIMM6+kP&iDHWdHy#qJSt60ZDEnNs#+%M64(2Rxrs-S;vTgczkh_S|4R* zUXajr~!@tJhGo*sWhO7-4LRZ#UUsdt?Z`Z9^Zucv+(prG)4=t6(l6$C zgw1Hcnk806fFMZYEMI3ltJ;{3rZ>5bqA0+lZ>BbNH{Oq}*!ugqYh5@c&ctUT))Y8% zKFW7B?w&fMs1MKT6^Mv<#0!d|Jx~5Vvbw3(?`@~#S!RVbDE?F)zAkg;lOFA>HJ4K`{+3c>lG0z1BxXCB71iIFF(ziuue<6;o;| zntoW(Z#1@Kb0%-y@*|?C1mc{fT@*#(uaDP^5oiZJPIq9(0@|6nY^AN!8M0KL?iuVj=doi9+IeG<-uu6pzZ9^C*e}pyL`F35eLSU@ggm7{$J# z5`m(!=8$kkHza_-3>FKPR{z*a z6go?R!~W_B4A(_R5Lf`#bfmX}Ja@ZQfiXtV6#|2QXOHvg-Qh+QMNw$_Jum~zd<7anpWcbyyiH~T>tjZTm56zD z^D;lDi(a4k?Dko$_jTBVjuaYmU5sK?*4UaME&~K;r}f7zfMbqbbPB*46WaSxnTx5@ z)P)5Cmyf`pa5_Q7oc`vnN=Js(y1!-(uC40y?r&YtH-RgS_Has^2_7fo@!@!oXFhi9 zuh-lAYv{24BLY|7Cj&DxW;cp~z5B23fv5!j;;+Oa{*Hmbf20{Gxs4=9l0qi4|35k- zt7>L;?-4Np=YNvF^740ra?c6B0*mUdz^|b7iPmie4&NVEUr{@^$@w0pw$u9DQ^Oab z+Pc-&TGu)SK7zWfPt|tq)V2?9fNfXX$#rh4)xq0=t!-6E5}virb>zHtTRR~HLXx1H zot#&wn-&rhxP;caHlK8>YPA?`j|L0U^OhXU`K+A0Z(;u4vn} zylvA22)PmnZk^l9>QoZ)DZ$Ql+qtiEHBpjqIe^t};{~@0gphYo+HO5}4%%u0d6EDE zt}QPIaI5lwgo9JvHqJLwG2B&T-TdSnSht5Spl+?4&%v!e>wVo?l5fIP_d&O|BeoWC>Yf0Azfe~u)jR?VzDt@WK*Z6RH30@xS` zgYHmpIYQ9F#hfwGuzF8xv0`R>s(X9ZLVO=F=ma_dlyx5O4VmDcO9IrHD32J{Lko)- zHiQWQVPoM<3=`B?jfz0J{oeWb{T?=E;jM{0Elq3^z$Ao#TWx#l=9ih7nL)Qq$+Uu9 zW))q{kr6yV%G4R)R~crR662)^V%WBU9K!i_|A|i%fa&@FMUv$FBjO(s83o-#%gjtK zVQrs$x6k(3FJgM%!@hyJ_V_g{oXxb%G&~Jim6-wmh{MuA+vktzSY~E+9Y#HBmCPyA zGMkxs6lP|2n6ZqdR%vf#9F^IlG?v-RRF>wPKG9MdPG#ma&S|95sElc5W@fup%h2nA zzNMM%lDp+w$uv-Awr6Hj3*A>^pO(x_xeTp3%x#%hk|0S|Tt|r|z`K3_TP`zv@c`jR z+qOlLY}|pepeZD10vLs2eEh5&s zSN;E&R`oSaXaX=f|G!L_T$m}$>^+vORP09HjY7)dIfFUOY^UC> z@dl$(Da^1c=~bGUduJ?bZt$9+q`pBJ!^|!zWVXYwV-NG}!`Nzt)LV0m)k@O}TV@I= zB-gg}yve@5g_WH>XHIjJ;9@9%5@>*F9Oo!GDG+oSwrv|m%J%=qwI%@5|KFx<&H4Yw zm~*XtPC3T=e^2SBW#^u==A2`U;7!b!xA!Q{?ZtL(wPN2_5c|Zu)rxm7c3QS^TQPcO zxq7i}+cqCRt=P70r>xlbQ#-b8v~*%8rEZL#(W}aeZFGFwwp%y0ZCeEu0A)q*WBmV5 z-fv-v1mIheBukPc+ahKWGmpA=e?a&Df7bo^-ks@gD#E@cNwOqKvMnMOi|G0PkG*Cn zbK13l+qAalna`Ya?S0Pql>5I%{eIuQ*P8P-cF@|kjm|EebT&J?${2Q1rnT*kcfiW& zZ08F8i-=SGe;0P{|NQOO#iWn zpi+tMUfn%^iwSts%n)D>ERwqu9V+c7YIApYcXyhX z{r~@No^=o=1OVTXBw3Oq*%lFtn)iMF|2O9`+)agjOOj+sl4M(a6Hzmds7qh||2H$j z-Bcw7;9jSN6oKw$VigKQ2Y%9$^bd)-+Q2Wv-JV%V%ay673O zc@S}kjumchu|&7kK+8@JYzvNyZ+GKiTyhhVZY@+H%%h9cr63{>kLcR7D7EaR40l$n zdaA1^Wooj}=%B$yg98xh2B0P@(nf8YcKSDK-j?tN?%EvLy5zb_wgWUc6^Y*&(%*kr(=7qUn#>BZ{j)Wswl-!5PC~R z(!TV3F@Zevz7IV#_<`U%n$axK;IY-n8K~8C&;sIR(R8382N);>7J9Fvu@>}tzqfDM z@A~Kx=e`MXGNUuqV{(McuKl$o26jtJiy>1YPiN7aMrFp-PSt)u-*4#~Ei_e1XQ z6@BFam&ful;v~q-5b0QSs6Xe!o`SoJUakK>LCl>}I;VKkr*x}J7bo^9Eo0`zEqa55&luEcjNRY0m z2DQ^J51&D}(C~V$a)Dc^wB{0>8Bn$dz;ZCpMRXcaWs~|9-^|}Fa@sK?J zu*KXccb|8pm@(N>Y=31AEOvh1!{){fs0dOn+kF78g?#x$Mnl_w9mm~dnkppKc)~3V!%d=9@lNGXif-bHDcL`6M1QxcAhol z`r)xqntr1knm7DWoZ^sAYakpgL2l$dL%{^vZ^G$tx5#5;WlzON1JwtE$5fB4=%23O_a4HZ zZSiD&mp<257bqI>5-zSLB5vKUa2}9=loSqQasCvoQ?+JjUMmm-Ep|^mXhh+#hn0aETCOS=nshx0o6rnsy3$nSc!lc-l)kgdTAe{;d=n>fdx>*tj?%sgcvwd=k5M{3@0Vq>|I=uV9Q=Rp>UU4a8#e2OiN zQ?mBM_dcsv;W%avaHdxXYW0{{xz>uky?t6uwh2Yty#H|LeYMr z6-#K7>4LZjRc>7~PKi6j z?bw7xC|j9yB$uJx+okC0-Zs~Y%W6HDs19nc|jVu>$;1l_U}5l$pz%)yV?s5fFja|4z1a(-yP+QDg4guwJUxRw z1@mD@>FYJ>LH$xWPyj;-w71f&YRdS#8xW?&fp9dTQZp7ULqo&EhScC#-5>xFFX^il zNjkB+9Ot=Eq_Ln;UqV~CR;iGrI zdDS>I#nER~u9p8arOypMi$ZCJx<+k?33i6jMmZifur+UxH@9BIPj{T4ePTag8w?>U z+EvlEfHUN@1X!&g#9%VaOrRtd-Mp8DOUV`41~CC9V8m*;EScC(M<4Bn-S#tYvX=?g z1VAH#2tk}OoF*Xm!BJ@=W?}}{@OnR8H-twk>{mA0)SQ>B6Y}J@RtA$(f5!TXkBrw9#CW@5xOP|3c(ft`55L4*X;QC|srcIAuo%)u#- z;dp3c*h8PprbH3%EdcwFOr5K0D+fuUiQ$ReO$-Qt3Eb1Or6|ck#fv;csh5g}0!N5I zRwFCX83Tu2>{wmOxQF>CVN#f<`6rrk(>F35r2stW3bvfx?}_4}7&V(jUN4Gt>Bbm>TFAo>5go*De|-VKDr0*64FW2qm>c zrBiO>K(`_Q44?r#0UTkWTm}nc5rooq8SYv=U9IT3H&#RY>YM~E28sG!tO%KV=?JWg zfX5iW#}UX*WPZV8ezvhGNKuwy8-o3H)|A+2DN`n4n~yL|C4@i+0{uw#lFK?bYY_(F z87PD_5mX@-K_FDH(_2S$wYSwi>{S%QqmG9^udY_DwMVXf%G??7PYu&z&p&(-B^1w1 zQb2pja-smb6$xfozKKMU6R?;X9MXt%rOfJnU*;}Dt4}>YA#~HuQ`uIks}oq_ zE0I%aw8zSIdTVXoYhx*>AX{l3ZBC%?0v>gVh0PlMPTy4xqIcMjEFE*KE5|cWd3t zUk2btU4>s*;(T()*9{1bg^5^waalnkM`lYX%)q8r|7cOD97cv`G5M+1O|G%mzHRrm zqOG1wN5@jk&L}TQTg`K~jliK8dc5R1Accez30g)!=hN!05>1gz@p^+PuP-c)GCk`M zYEKd^P^e!&YbtVJkgE!_u4%IdjiA+UhF@>n2f;@iT!ychGA5jzC&a953>kP)t*Ai1 z&tTUu0jy2ZGB^Ej^)?oE>Ay^$tF++IutY=UP$39o6WR!R`D3BbBE zDEo(;+9JW+YQ}8SeqLo^O`1lnpF&mV;Xa1I4OC5N^a$iLXJ#$m1-~FMku&jI{KQ5( zvuFf4scafVjA5yJw?-n&CefHxOB0?V5@PAI)E7<~q>V|h{Cb^5G%g{=+oSu8)*6}& z@DNEA=Zmka(u>Hw?gHnN@h|ShKcAoZKYJnbdFW^D-+K9*O0fk@HYDK? zXUgZ1bJbVxe3#9^1JEEqR<;^icbw}rP@}ezuiWUx8nA&ch1F49a}=CJT#GlQ9*-Jn z87Y!=(36lAMoVB-5SWm$FUg(MvUotwn6LD@?s!cvvSU5HxI2pH6WQwZhy`dtj~llP zjhzv1FiMWJtw`8Tme{=YS(3@QaK)|_ zKB(8(xc%mo|M%+u{=Ccoxf#&lhfL(a;%_PtBuD8eH8%MuE}Vn7*SJM{6Duo?}syn8*E@mP()8rz#gj_o{y;pQ>lnlxwBVj@F6EU z88$|Pc&ceW1VEm=^>>0!Oy(&V@(DN>Z*Q<%JE^iaP7fW%ieue)GmC$n+waHCsfG>q zNLZz_{M#F=ldkj$-Ibnzh@5%O1{N&L1cy1V<>>`~vNmS6=f-_Y~M zTQhFxK8FLoJiBO{sdxAGija;-wMj5{yh--8IWgXd7}!Z*_&NI|@tetX5d`*DR2=@% zN51FRlgoyWbd088SyUGcK|`&fpp{tRIIT~d*-*JeLsz8aSWq!hP3nvx0Os2=JQ-H_ zDVd}Cq?~5k8&G=EJb2vV{or(r#T==`!$L~J0(OvIu9VTSIpc7WsYB$1CPHIotg-a} z7RTU3AOR)w80+vNY`rsGOQ9yzfYz-`z9^u2Kt?s_85{I$&B}T8;H%NUE%UeM`P+5= z_K4;vNp~`4sGS}+`?W-nDDrF8u)bIQ)AJnP`4!lbNzQieLCdi`Q<9gQZaxf(I7vyo z=Dm4u**zk3Qk2ye3PdL~Us)X)iDXt@>!|c19kdDkg_FExvAHdbW8+vs4`5b{ksR^g z_l%{eIn3GG8KEGk=;m~S4U(WBfuNyv1xZ45JXQ}Y7z`EgNaM-D)AWbQ03WmN*b{{o z-M%39kzqB2@@b(T3f(U<<)DLfzyo@bKA>$hX`?#A-l(}tm$#FbPwt$&@;NWRN`FJ~ zF~+(h*G99)CX*rYW>sg!>sgI98{wyjl$>n#S}L~U#+mfLd3}pO^Ykt61&g~#0eA#s zL$_|6vr&CoD3y^G9w+O@(B82%F>T}REsJCKHxB@oK0Ek5j*?V@Nt7q8 zwWwffa*5&YUkFaI{causf^bPgkg$cz(TPDyBAtx^dY2rCBvH^WlLjf2BsHC!`%Fh= zRUZuj9=Sb2kth-g9)AFnUwQ{I~Or8za@W!`f+2ci6yvJ zGKHJTL$Z^*T^l!C7-y}6ITkoY!< z{|H{l)=*1kwUzGIp-ExKy#rGbbn|v@gZP%>SR)mzvV+wIokRuNxGELY-6#B6p*wu8 z>47Mtw)=exQ9p0(Lcb#>BSH?dseL;CIZUu9TAE1f9BuNfCR=&k7~2k`5fE^VaCenAxsj7>1?Ix3uMbc6^O{9?33(CPMYY#JB+(IQTkL2V~{O!7H5=AYlnzT5fm7Yn9E)8xwyGFJ@Sb$ zf_EA(fdJnbAC*FOLgt2b;_4hp2z%{VPi-t(L+lwoc|2W$$`aU)o*6t-P*CjoEni(qYfW_q=-d;nABvtnMdp z>m?dUIwcw+jiE_Nyon^wokkWlggVsV3OqJ28PU=6&<-h($C?~fhjL^F8Nj3>_K`|J zO^Rue_R%N1`VCVVtF;nSJ(bkX^|`s_%obg%Yb{MiWf&Zp1&ZmgI+=4SW#i{W{O43E z=~_ngq0*5V<%jHiS^PMQuSB4h1xQ^HCpFuI1?gl|yJg?_+4y+^9Z)QH+Q0#8h-OQMjuoO?RN{A&UiQHxA zyzQZlGAzIsE#z0_;Y%GVv?lJc097~SXMr13Gpc#;1 zmk~Q(yK`-nv40@KDJ{E~gFwl!SC-0`F&?H(Fjaj;Q}bZ}2@9DIe)d2Tj|JC+P+Ws% z+H7)3`N!r2T0hb~vXe1k7jERrAQY-%Hn+1<-tsdk#0mY?$%#jfM2)N?@5z6{W8h#s zSa366`7+f=*icNEy?n391WFPgEt-su!`i;Qj7JX8E54#e0Eb0^+At23@j%zv8ttfh z^zh-sC3mj0bz_sSm;7~wcaYaA-;pnZ|8(@5%|1pMOh0di_6UEN^(kRUbfh$86i3xL zRSSl$sSDEel=Wrm9BaG{>={Y|2fmtV>%9SdRe@y<+a6OBX$uM^tcp3R^;1~L&eQ6K zhQVpzO#05FtQLJTVb6FMoiSKxa04Wmawgs*eNk~D8F(2FsljDWL8&|lTEYZ9zye)_ z#GS3eTGwz6yg|IE&_f$15z>%iE0EhIF0?u!eeN`B4;c>%;Mfe+OZdckw*=Yt#WHKH zy*&3ve)FU7k>(D2opF;3L?V~GuHJ6#$JsHN2zo3vn!<%L3RT*J#Uk@5GzD(^TB)A6 z3R;>FWyVXUKk!aqQaFM0mEIeWS`a95P17cv7TB1SgMbdWG`pl)WHCP1lBLJiJ?O!{ z&Iq%)_OKj#&h&XFaE|F}>Zv4lqsXu|D{srL-jf-6MNxxuQwOvFNyu^XfuUpL2c$nkzY&#W zGxuY+SAQYEO^UqQ1H80^%>i1~5Xs>d9hK^WBKf=|Vz6qM>ryY`6p1D-MlQLuH$+5Ad-Y~H;$xtj0&Vcy`WcLRAXho#G>*UivP565xs;tY?&G? zh>rsuw1Lhp9>dvz_b}uBi4M*gT zZZxyeH^Ov6wy7^MA8j*ETL~(NdD{k*U*h~<<6IUC6irPc0z}lNL6WfSd3eAeAxY@= zSfd@F8yKrpDmJ(Lruyd_5F#rdvN;6iGb0d6i<(7f#jiIIstBhRIR-*Nu_>J*l}Z^( zx~QB*wuDxugs%P{ZGw^4uoM{ZLk~MG`lW?zHWXKxFKOT_$dez|Q-Lt(4D}|uyBr)} z8++r@-{!mhZT~HQ>Rx2vY_hdu)tV zPQ5ar`42_@k=n%ClEz~5vAHa)sZ%vE;Ieo}^kWcu>g|qQWqwxiTd&fYJoo zn?=*xF#}34A8gllC0sr^f+gB$7b6tN`tA~MS$q165d>z5*=rruvZ7V<-P6)c8+}|? zB0xiin#5*9>9uF|<)TiN&*$Um>)udOj-kL#7A-CWt5~YgCZ^}f%RJR((jY_42a}u)hlwL8ii>yHna}Ty()-nYj$nIB{|ba z%H7d67q>ZGgmzM(Y1cq98m4?2Zm~f} zYYYtlaG3AUtLJGHg{n}h4hrc$v6%z>FA@JWGd#OpK^coLhiVs zuG>mI-T6elvAeMwx!`m;7I&=hX&y_!5(`mr#kfYh=U)TC`nDN71+X0*oldNk4y;)>b3(0 zD^N477_Hs4tw~oMEiL1~z@4P>pd)wDMXG})eaQH7^6=OB8L37u&@mZ9^R*ExNcqu^ z3mOM9b7H?FR!S{<5-|p#3ld6sc7O5f1lddNob)ICZ|)Bm#QyQf8gQU zMa80mlf_etpExSJhvdw-kT-mJxv)8r+5|6t@GNJn3tU%MT6nW}L;$jO91tKXsrC`Gt|{pgo%weI{GV1*aJ(H(mFL zEmyeTHxxZEdvQ=fp~Fo+~ArRp~1Zo>+QapK*3V;|0$fLULw8pb_ODFJS}(ST&H@l9;kdesz{@mFPRa6O-UU z9s8%v2M0TH_%;r})&rWy!4Xrp%7B7ed~7F!pT*Gl`PS_JF^(E_Qy8c6rXpCNA>GE_eP-;&8xoj(vXNb%@vC{3d_v-EPJlv867|RVT3?3uEY^(c z7|Y3yWCY=4gtAmb5HBc|B*v$Ucbk&so27&g9Asi5Z7MyoeZrG=H9h~UG3;TQcZOCl z%ZJ>GK&<4G1XdZ+1Sau@7_J^&FTzT70_MrjV%M#vNJbd`Q)0#OaQqRD+V7G_p`x%H zUVxuI+J-euyUi9g*geSt+ZTZ+<0d~OXt`|XEt}&KZll`qgw&ZvDGCD)N(jxn71~YoD{&YGVJJc%6eJ!PhbPv=fboLQw3x8|O=eC54rqc% z#d$+mwWBR-wSvoEYec0C=d?9qw|PrPR(~wtAzmu#17SJSxw$SYNupkpm@2~ zQP2kC({;g2-_A}S_{mXR(o}#Po%tqp+zQ#U=>^@@33d1d7#OG_N^XS29&0g|`Dv6O9f@tdI{8OK}aMJ z%-f-6%W=14$9_&O4p$hC%AFPX9t$!vdEH&*uc|-7H0$dwskm?LO=`HfAI+c|#C029 z5(y)iqo4Xa9XD-P8jB3IhfO%#se=l0bxA=-cWqm@*#HiFcg3{tXJWos_4*xQy-=J$ zSzHoNp1rY&D61iMXBbn5595D7{UXYpjngWHVbxSe#7R2kJD*!JDiJGMewYX`OmkP! z9bc+(i?f8*@~Hqt%BOkkpC}MPUO^yE*(UE;tHtri?o96Fb(Ne6x??CewSb?o;8i{_ zU*mmWws^JdO!qT~wjE%dQ1Rj>`_Uh5K{s^!(iaIQqP~6jj8Z?-J(|`m{qWZHbbXg> zkYi3g=SU%}=!porZ(GFr#Q@nuAm?kSQXgZgmnhL40c;+aRwhw4UkhxX)2mG&ZIwOGgmj?-G_CW-h)GR92u>A_?!;y9+z zH0qfmBnpnj$F3T3lbejBHzrlj>;B?(bCo-KqSwt=g}BmHvRp5unUZA2)%hSzUPcpT zlQ6W7MT=QmT+|uE#MN-Ci&~0BIjSy}zhnPRUjFW-j+b8)IYCD`Dv%^Zn{cbXQNz(3 z2Jg0T60D(r!@CGi3HMB}j3ffK#xb5eK_&~xdut=O`z2?g`PZjXJ#aY2F?1UCj)+}F ze0$lMcUg>HD(xgh1!LCNaHLmppL8C4v-CDQ8<(L(kXsRsf#9l#j*Z%}R!h45F*mw( z!hP6uZ?H0?usN763K1)13{g1~)a$t9TTl1jt~;8HDvVnzqp=w8fk^xJ@oIWNwXm{pWm|i{l@-OE&s^)QrArhs zDLVyJ$+H!-#3BG$KOH;nPhVZ@M9*4^XV^KWD^XmP1c}IGt1S|UaFxy@|K}<^+a*v%~Vf8Av1dTQVLk+-!fmp=_ds@GL)>CeBgn{DN zaQdHa2Rdc5iDUD=Dvw5*h`ZykvfQFPO@2P&eG#8UO&!jfj4wY6p9lVh5Gi9try?-` zEYO||9@MMJZ(5hA{+jOG@1Xs+`G}^`mqrsLZ@>5hFvdn@TP=~ex)c#SWbqgv3F8SB zWM=+qFvQ7^KHy!PsF0me57wXU|M>ile@FWEtiF=@{q`JNh!^FY9S+B;uZa!0)W8he z$A}_>8nj#*r=fc2*`p{>9151sTWlN<5|~YyL3#w#sZV-NWOJE=O0J{TZ7oV1m61F- zbvoeeUampCKe694rFHr%J!968V=#eaBz3$nHb^^rRensIM^c0NgjCcVraKVcZew12dDN zuZb4)UcP6Z4J7Pmc~qLhnDtGjAfFj1Y349Q&ML$Evo*!$Z7FCOH=GI$j9SmmUB7);e2$ zS?~pCaAo9$M}%Js?$h`S5!dkkg(v^An-vP%#`$+bm_ z3v878rl4vE?6~FIpRAfqv$d@eX^hU8+l=tZ&bF_snOL5@S>hh_1td0I{3@SpZvY5K zb*)R2QungBpBq%x1RVNup!#w{SsE<}`8BZNF8jN*kUeuCUNr^ksb@N=*1sPTBd~^2 zEI3Y0=u7Wz**KxPn|P0+`$@<;XJcuG=ZOBUQD1mQJ3w4hZk#m%c7>|yx5K^>wkz$5 zNxgXJ;8N(kAT80|*Z{*s7lhK#G0!%g=G@Kqts~~raU8GHoiPK>uEhhOFBf>pQRQuO zl)WUWo2E%(ba;djq)8n3L@t1DT3ENyR;lk)PU77S4a?`Lx2)vch#TVIaxVA>zJdP- zD%<%&*BiTi6;h8NSIXtg>z)38$+sL`u9vl5#1fT;NXi{?2&4zt2va}+Y2eMdu^^++ zwrQ7F+ECfxPX91o$x>*^lVrrccKcudb(T>$hHz<>R)3T!+F5WS%V8j&Vl28x0GJgfc+3FrO9D-}bD9#lrAw4=&$8g}A1Yy~H~ zwTm-2xKG_)_`#y^1URFjm`8eEF&PBV3?lK#;HCy5V%XIti7b7pbVD0&$qQ3@Ce1Mv z*@c5F5$<$1A3^5jr8YAhT2@)c_cnXiK$+6f=-!Yf*$~%Vfa@+Uk3*4PuAsi0bKBS4 z^+B9O#&O$GbpKWd&*~lXjjyKgTAg5R$D%#9{h~5(E;}F-OvN0vM$C2~vg(uADm$Xp|PkHSr zzH_&lAKJ(Fpz!i{C8O@(E$^Lq?|SL77_tTuUoXWUZKous1ke|u=&Uu~U{$V(>%_Pn z`qhH38&EQK-rj>{thchubN`W(BqKj$5*oi}@5)4PPM1PMZ*ea}9l!p3$yN>*7mwVFU}YD0b5#kV#TwadVCC z3}PuPaNXrd!NUJ2fAI;rsHkzbvfV7b=?GSlLn5dv}e)=cRB~0-NWXg$>>s= zL7rn>V;GxmHZjyrHCTOF^nwUnDp>jKRq8!GacfGCaO4Esm16>>Gf<467FL#Z3M3-W zOAqa~c5g=t3{zW+IT6!~MmOy|$t15U5mbduf)FW?LG!lJt7?+0wyjX|?dJtFe^;ls z0#A$0Fe(?SzI18N9A;VCy9FTtH%P5#V$1i1;EnrUZ}YFDG>EoQGYY$MSuDMqurk$^ zCeNJY6sX<6#Pa?%(rY+?tyFKTgPOx;&h}KYdK9h;W#U+r(eTby>YTq#aeB+$4@?$h zjj*<2NJ5DR&{gCbF8P@i?RNWcyHR}JVUAf6$Mlabn%>0DWRj3eTp}ZqB<;=Ftkud> z!0|w%fnQCL%Lnq`?v5{`u~&^YxazLZBGF`|wyQ6t;i`f5zM%+e!64;!5vXi9v4aQ` zk5O65UB|^%4|1dlJnulP<|{5>;i=vhZ7%*?Vl$8@JAosTuLbpB4QnfsrO8d##5E@h zz_-9h;i8TQerzK+fQ&P!g<+FH+&!<=zEz@ty?wCeU)$}d&EFS0maJ(8x>r0umX*Gz zyZM40@>Y)nnS&}Dr%BR%D5DxVBF##r0^Ytyk-NUTefzwOnee6X>T4}r5oTycT5Skg zTwY_yYXV?y7ZiQ&ar9VJLjx+pV+|g>ME=P-i4a&~u5<~;TAz8!r?VPqM2C@;ZnTPb z%P?br;uZJS@S1E{6em}wU#70k-}De)qX}p>nsH`mhCPnGS=B5zYUd;@=Ve%4XCI^Y zWc=h$VlZ#WbjR?{R}+39<;5HufAk|=koPmuktUi7noUSW6;4s%`T5mZ1$f}c&cN;x zQl(W;iAaKV@zWR6op+xmr2WFoJ^zJeL^T-Wp!~f~PG^w_?@EtZKK_oC*}l8SwON z*1QGB!f`v+td=Js9-MRR5UMOkV6;ew&S-e|Wj*;%H_7PGm`*k|xIpoY&`>;ZLB>gG z^peeNA)=ywEM>LS#H=Bfy#vh&z-|GrcQzvo1`}ub=S?UtLXT0fIb~H@w6S7{svC-Q zD3ws{W#NPlbSj8>hpbJk=B}l30+G9p#9{4RZMKO6#{W^lH0)n$3v{+wR*fRAHLI=a z6gbd`p{l)ap6&S4M~gZlHdlh!OhflGA~R9R<5!TZ*?5|gQ-SbWG2sFf^cVVN&Z>dY zCoIhnl;^~Eb3DiVgrI@oEMDl?{we6jSU*u>9lD@;J{ ztD=fytHdEYbGo?Nm`-@@%kgFaCRB!Cu2k*Y=C6x4Gseb9d0hCVv%M+M(Rd;A zj2l;$4ob4cTe~tZC_QPcfksD@V-?R3gW_#wtTlDsZrKJ|RUSkC1D0k0DV>WiI_ z1Y=XuBQzr7osNmUIf56nKqi!HtDG!&TM~@TdyE@)dW^O3P?Rjpp3A1cNRR*v1ZE_# z4d*fb$OK~Sc?CVdg6XhTKi}52`q)a>4Z(o#%uXV$q^i^hOV*ag@yv~RRt9qsg|?}6 z&sWm$-ck9^eB7ILHHxbwPkxO19XHd3{e{5$~c2}~s0FZ;Gs!1D@hA|CwC$HL# z2^a(+qJwD7s4}V4%H8(MP&yF|DNa1#C6oJFH)*x{BE#H(rJVltUn_HLEB^PcQ#TBB zhv&sH`yD=f*kP`_{lI}LmsFiP<&NvlhEq;asqC)|2A%SGU8R8e;Ks&$9>_sNa3PW* zKjx_qaN15$UqN5$WQTVSJ(A4x1SxP0UA<0Z-Y&Y({nhZ~RTa+0wW7aROA0zwuo`B$ zsqS9hHg4FC(NQrIQVK>_sfP|p8>rG%>AQ#51a=+F)GVWxJC1GVpnCRsu^P46uto7~ zZOas75PX7eUa)`v5B}f?W#U(5>K$7S;F5_uT+sU!ck1;~D@IbSw&+K^(`-w2=xT6L zVKkL;?A|~Pr>>s9>ad+ZP+sqEPUP<@Uzg$AksTQv*(%j>lWmy8HR2A%1X?S;Cl|KD zZ<@?i^_eMHR17rVOpI&Dl(f_PltVHjwLg~U7rdH!EpHW@1&VD1aZHQ8o3t*khyn;= zl7Q$cBPe=l#clO8>;l#axh|*KhMQz$3OuN!Ocs+Um8AVDM+dxVuY`djb8SZ>R@8fqXCznPb@?dfunpboMwrUNK5SKIc>@ef?9k>r7JcF zzz5-yVS#Mak=~|hdPV%C6}zxA_!LOBJ#M17Da6JFW@0ALT_8;rC3~OE7H5+SPS%g= zc$+7zb+>}q4C-)$?oWo>rH2}&CN`KqytuK#=#D3BOXvz*cibEch%lGbV(s5<#AjSd4e5R+($e!3m92d2@z4bU|LJ7IrAj;QD@Z7 zc~ifePNwm|IfVrh8!Xr#C6jW_f=jOw(Jqd-=A6YnezF(G!3^r8@#sgcwj%Mml}JY`JRMRc7fUE?FhL{TBV#$|Cu_Bx~GL1f%GS26pKJf3aFz`M?B(+YUxPCfi2S-fYtH6Ia$ zU!So!v39^9%05KMsI(%Z{iJyLaTE8h<2pW389irUZ*;~&d-~gp>UnL%X7j6mAFnZ? zy=V47>5jFXBWFkMW^pxQ{l1&*aR#jxrr;X$1$!5}-POScR1|R)5B3I?H*n`Yhm8YV zAt>6DJv%BWIxTEai?azA)c2|Q+-i{uvuGW=cOmeM+M!<~M)ka*-6Wr&pm9x4!r}!{ z^Yl*jhA9177pIb^-zgJN+Ddoab>R`|1d81SU-1))pb<@3g8~!m=?uR{9Bie8{TGg3|cpVeNj=&{V z2u6y`$w{}?A@r5opC`Gl`wbM%`JoFpxTroz?ffw#W0g_w=w>V~CYkCfz}nT=u2AqDW;-$9NndU=P$|~3m*Xd{crtN=E4I(E6B|`WL}Ost0tYARw|E3 zLG&bE=-;_0v{v&RQKn3<_Cq0aVBdhNGG>Y6S+f~8Mg$jVa@!sFlUfD4L|NR1`A}NY z=@$4)sDQzr0w%i5mb40;ihtfmemMP+TBtkNmVto-f>2~HYm{w(GQB3;92COPihZ>q zGmqpH+7>r6oC4EOtp>QFl-AeRIWA-;ruI_kb^+a$wR-PZan@prESW@jB05CkXu{&{ z{=se^?q`U#rRT$lIAVl(kQkzrCYi%2?xe#M(dcSS)zqzZ3@IiuVh3WDPfifMAVSSu z@H`(Ie+c|i8bRq4wAjLJ?gERE7K4nSA0}%DuHXc03Ir1xPW5OAXX<=FrM#lMb~GQH z){!AcaKW}SU~wB2am*M!RK9nH-}WGXnvAVAlVqfD8^Ycjcv*yh zi$FCaac2T$T1!a0L!k<#JHk5#u6UFqip?VB1MAD^9hPzAo_bk*ND%?U1?cGde?M2* zGpQ?C(pK%kLS}bDL&*tZL}_6PiCbhuNRX!a#AfD50eXo*@nBcC7dnhtuRp;|7Z}Q_ z?UhImLg~O`Ohhfzl~Zhq1f6aul19o~T~~nCn<}mcES1eff|gSofw%AN@OQWPRp3pc zs9lL|?ct8|(&CGMh)t8yp8Fk8np(7L$MUhM?G^D`P zA$5I^A-2tXJ$kY!vfIKxc2vpjB`G7x8^6HzHM#mk1SNy7^g-0?^-|rzx>0-IwCm{= z+Gf&@hdetX?PXUVEdjkOP-rB^b4Z;yY?PxBtk!9@21>~qQiP{gn4gB3&$iyn7u`O; z9S8mLqWbS?Rfl3L<6PVl9RK;A$f){Yy79ADf_UD7terD7q%p~K_MCboC&j61cBI>s${(xb zHl)>ZlS@lCsZ-&~8`bM2n;5C|R_c8Mex(47rzZCDfvlr~qs3g|t9eUD7jk3`wy(Rt zNiSlYoYJkhUx=t2sLv|7CaMf8W81Y&YPDZkrc2adH~c@=!Px|A1!9+II=&y&hg0Y@ zLZS~+7aXKHS7$GaEy5cnBM#Eo&AHT2(ZXd5n`aj)AeOXb9+*%1&Sw$Cu)}~jNZU&< z{+pnAlSRFuIv-__WRcWPZgZOw#YeXQ+t9i+8IosxcrY=iRxg$6-sJLt`cv_t+|;cW zJ%A%`toJ($k4gb4Rie7aU8WffRgm7KYg-4H;n^i3dzC*@x}GQM9xa=h!zK z6EkKW;nPZ~WYI^K!N%S<-g!Kfr3wbUaU1*QyCEXu$xy zUJz@?EL$GbHI$R+1z}UaLR>|DMT=fKExJI$**I{03KnOYD}R`ROmP@NyKgnzV)i(X^F?TP;I1S#n}Dg(me}UV_T3J( zzgL9%6U`ZUbH%!VZO_~SH$@IvT$+MkmhfAtxhWeDo_^He3{&NY*5=ABDENq*`I%8i zz+Ct?QoO2j4O|=&^n7z2DG6+9y(7Jzo?g2$NHTg@QWi-f0n+5IYP z5o%~!01m`EUYqfqvxzTynA;Yh-e${cUm_%+glbEL?eNNs%dnkNemWK_aoJ5RzTH#DqO2YKuBil95q3?PHvMH_#f_1Xmh@UnMwnD8Q59 z(gJK_ggi}kI9+07% zU6m^`QeZa85#O@f?Am)d?s7#?gT)@MaO5tU!R=vK4Bs)_aVPGJ{-WPyN^Br-9VdjC z?ly%)Y+DdQf`YhlC@;h@&qz*s=uM-C8s##(Ac}^`K%K>y&Vn$&VDL&n^1i`-03p8j z6FX}K;(%^pN5d&7S^LFAh`<)}YrI_T zS~3663jXk|CD#Fol)+ zV4*Or=Zi`5zK~zm0Ow3wF9Dh?wAmfmA`+zX=u%oCy|@;zRc6NEGs|WgorjQI+3bc4 z5e=*j^_J-0oB#DbO7+a{Gd=%t;r){+L95d?nrXWdvPaTAWN)wIaM?2V>%7Dgb2oEZn?z;J{>!LsS;u?4y|tK+)m>oOR$ zFh{kN~xqv_!Z>!D}UCAy3Nt-t9sFmkWW>!!*-Q}r=6#|5JkDnV%>6$%?53$b4$ z|62X|@Bihed*$w|;#WpKka(1=OJ0NXn>+hE!Pl6>)3)bF{MH89<|R$OCVo$j(bQcU zmLEnweWWXi8h&GaXLzbjit_kt0`4XNYEdUu2E_2y$j=NEQ|4=1wbVhzMNtsPa?;id zC9LEq4px&~jg}HyOvRVJqM>CP?WK&ARtn0@sX1Re(dhMk2_f1vLe)@Q#5Cc3ObiM< zzOp!mr3P=48bBbzDKlB=(u8Hn;u(uIz~g!4^0pg4lzYOXoq@>a@HFA0l=+_XYVl4AM7e5oj7p5~DblEH)8yhMYUJGY;I1)rbuYaPhG6?myY3QKJ~ec-7H z0#Yklt{akiJt9UFwc|5Qs*(PekX4HFhA3HFLK{~%1B}$zmbLDkohh8RdsQG56J!t^e6mE6G%ZgD6IAqb>2ZiqSURAy^p#%&?cwnh^|R{N zJ59XR!Pm}C@H(*s0q;7^t~h2M!RBJk-}{hw(uLRGyH3jYSaUKt{_0-o@wwgMjLwRW zEs16E@RuG2KKxqZWJ=^ma<-$@NI3KKLOS)Ovj#kSSA>i+w#8Pkd7fyQW$Nk%uhBle z{h70314-xAyvoW;pSp_cAngh4LeeOudMQ)ZXRBUI+Tzfa=Jln5uB73l?*4x6w+aXo zE0L>MT$c@Qg|(y-9!qKw86Ib?I?%fG;umJ`4qsh=c0Hd|R|Ai=8X@*dNGJQto_UdA zA*xE77>nfg#@Lpk)hli~ZnPxKC$4vl&dky3MngsGJ1Z~J&Mh%i64xvXP{41AFY z4(XWLGc&L{-_U1SPwDR8aGgrbvD?@qLx1C~ugX1J&Xxu@Z%0GXdAn}X&hc$EfERkn zZ@%F`3INa6xNIC7`ahdXDjV@0AwK;BRC_m!3*196Wg&2xTf zmSfi(qbn176-L6Qf5o(~GRG^uw_Axz{M_SH9a=-%h{WT=I(lNTs4t!33|fxb<{?HSRdAs3j9~BYjt%Pl24oG$s{aT9~k`4k(=ivl2+|{rnj$-zN9B zahwD!#nR@3W6>GD9z6mr?gw}Rpi!P^;uTA7m+DOn##GLF^vEIe7;~^}F-IVx8pqq- z7WNF-4z@7PuD-UyvD&Q=m62BEa^!;Apblu5%19Yldwx&fzr^O|UY)Y;;E_I&zc@c63vc|9CBoHZR7&Ws!x5+@GU)T%h_Y6F!}z|R3j?L6rjUs%_6 znfTA~HBO`{U7@*?S;4L_JDNmLc-tr%6K{&oRyh(p#1KgUKM3jUX4F#^;sna~ty00H zviw!QW}m{gd+yzLzu3JCY$Uz<9pARNu}BTIbw4!7vgumtclBFDoJf~S0_@806o4@e z3uGsU=SqjuV4GeC4rwb{6r!tgTz^r6XyQv^1=z2PiQ@y~8KX_tg*ztX==X_g$znA^S;8_zpkE*(2>ak~5;=e9`CRWZ(!! z{uAO-<7!E_#Sy$D{*gV>|J@H^-_mmI6Alh`4?+;~{-Dnh0nry{#_^WkkDq>h%&Spi-6gAKCR@b5|DF$*EGGPt`{+;40vcvLz7p;TwPfSl%o|sawm3D)BR!{B zPq(y-7to*u2Fz)4%b6t6)6)Tk`}z56|5Bojm4>b}LegR@CJh-(q8#*OQvn5h${`9fX}{^BIhpZvRbW7WKYw{R-+`bH{YW>)7q19gC44Ob`z#+ z#gy7zUg?G3CrsqEP~9OtBKDZjesE;plrL|7Y`S~z^JDO0hl3Ik`^p@I;!sXNEm`ke zFFuc`zA7ArDKI2^#<|5M8dmF>K;l-jZ+bd0AENLX@Utg&j@k*P0c9aPktn^nw4OND zqOK%%Vrxd9YEF(hoOggak~z#M&(UYroyZ|C4u24p4p;!1g|C_#S}7RO9PP%j zq1pr$E?hVcPF|fM>5!t*`Ey=6=A9B965GJv3Yi>F4*Ow+1wi0yXAeS} z>N^JhWB5P0dcIDNOW?Lu@4>Xuk$f=~48MN+f_}&C-i`|rdnD@RG;(&wX1D1P-Jibh z_kw+kw*TKkjQst^3x^1+{>$qksMY9i*(+D{(esNkkmNs6Q?sYPJPpzKXCFp;HC zo1g7aJr0^bmrVF*>2b|clzHhN?gokzbAb1iC1cf1m-4`RA|6yRN6y(ZUNeb3IC{k< zU6H+6@yoH{67G|}J1i$3Ci|UnXS(7o;=P#rwUYO<=7VE}hj2l7!AaKu`yuSichy2s zEk^6Tujix95|1NBMXWKXJYuGS6@{golC~czY8ha?WFLx2F=Xd`aPvj%S6q&z=MS(w z&mwMTG7-1dBy#V}_F;*YaQjrKaDagB7?&4zfqDvtj8zd+)P`Fa-_&dxwM*5V!%0x{ zMX#gjK4NP~Lu7}t5=#+e{upn>UTqV_{SdHZ)h0l^RVtopqM z{y*>htcu)UiZ-=YFdeK3cnEl)wsexne@~bj`W{r@GzTuM#@K@WhMP=G&@qW(7oyr3 z8Wu0GP6Uqdt+d!F3@GO%E6PnwuX8LhHj}?b#r44@-Gz?~V%zK3*jri!8uAG1dre1` zaA8}Y&>MR6JhtgPe{?!1H42$>%e9H|1)j_v>c+L#=OxEJgFG`b@8Qa+p2rT1H>ekm zfU+)zNVkiXOTm-K-T3Yq8p$xBy*lmJ3hw{=`MyMJ|2M+VzC4OE)1VozLy(y?`!VxJ zRjX9TpE(I<{O)t($|f8`Bb+nw;k0Y14ye+Zv^@2lJ7y&;xfChrN0YrOL?1h_4`#SN z3ook2D!wIlM`$^vJbD(dN0W3dxV$nmcEhSc{osQ>G(=QVZPR zM&`S&qorB%P{hlZ*4f}6i^Y8x0#s9kOYmMi< z=9LpAZ++oXje^|AhaT!#PTG%u9kZhd(LnWsuUH;8wTG?0ucDaYV~|LFN-@Y!9|jfy zz)lc7Pyit)uCMEBDBqtmY8P7E4iOMBhHIXyLwKQlI>M{1_Y>LByxTycKwb^1xLdD< zvexO3{u_j*;Gnd_mOywH=aJTiVN7XkBet+o$uPu7FjyJgmEBO0LGMN~nANz0Bx7H^ z`#ayO;cL}8UWo67=C;&MLMv$T#1wBfC)09L7ZT*h1xU$4R{h{V0y*>JjOZVS%J57C zC}F-cWI=wZ_Chj&1^ZT=B;6a%Cy7^#`uC$36~o!T5&cQ|g#$c>vGk90l8j1`p>mas zz>w&5iLT&{cZ@RDF8jhcV^m7aQ9_0|@Sa;4^^d@=4&d4{1}yrLM8>>QA~i^zZ6_yG z*y-qY`{t)-KeqkM@Ut*yww^}`|12U$C+-Y>Tnj}?*GfJtuLK@nR!?GV0K1lDWdx{i zpsM6m?Zkd(%2%$$385#ZK`5kWPZ@^B5$+fpV^N3?7~}NER`~#8L_?RgFn6!R{0yPeW7= zzSiopE*h`Y@F)&xP<$BsIzN3quZsQQ;=>QmHnF$<=V1BT?wZ%?+A9jKTCEN!G<;Yz z#hXD)0A3zE*4`d6g&XKN)|}Cw+2v!(_YJ;fw{iy7j%Z{nk$>XEl@?+a1oB>0!b^PW{-dzaontDdt0R*pzTZ0#e9 zb%3?iZ!ZS!w1d9Uu(2fB^Jgetvj156dZuF|ejBdq%M(}#n7MPS)oWIa5UL{5nlZbG zXP?>PS>BU@?wlJlC5bfJ#9CYAOu#OjjHl+iCSA1Hz49)~#l!Y1HcR>svaFtws#TWK z-jP#n{ZoQ3cK|6~4xfjchHrIwHtw!uAkd6~1~`rZ3Wirzjz^vupZVo){DIGBFW{al zwbeJB5V0~)`jwbucbCa~^>x)jinw<1;o3{C$$=AdrG2gB#qe>;3zRR85X_yM2tZPx zMVg9{~&FlHFuwr>9eY7HD-Ki23Kz>S&ty%#LO$TG;1U=`$ya~P}o zaV5Kg$-NWPr~nosmzE3Eni|n=?F2Ds(VOwi-G zYD0HiO&K>UF?ZBMYbm406g4rgRs?E#(z^io)XmTjlvl_qp!)IfWaV8pS)=o`_ZB|{bf>1ELhHWDqw()~n@ zEa*_|I(22^4=%gG(Ycy$7Jy;=eLn7}Y2&-{>Z^pBU=<1vbtu0HcTRVan*h?J87i8r z@v<_SF%&R|>dM?j-4UY|M$B_2ElG16V4cMS?B`#tfDxN?b36mf4@TpOIn19#dPJ@K zfTPkp8J0|gRm8xeea9S0Qw3d{QbsL_+LDdaRT;JvK_jbRVO6CnS)!Mh_~-kJX)4Y% z*R_3f7QEMMP1i?^l~4;Pa1+4&RQp;{icSFrnBEtynq%h!%N=mZKJT8R*>#1C*K#v{ zF<$#|3<`YWl{a-h1^vmM2Xj7#VlLeSHSsn1b7Y7hC3xycFm3Y-&1Xuv77X~Fs6yG4?_+cg8&Yw7p^_RLYq z>PNKH_L|fE36c-3ZUr^8u&J*563=GVvIaQS-DXb)a!012^tVcgCfH*jK~h;^>W8z$ zMhb~0tDeVkX7Y9-)*~Pbtv9ml;AS!{!K~MT3|qNAw7GWy-PrVE)ntpEBsi?g=E}5) z@oF=sPJZ4N_vcx>tb%FmipPX|$L)f`rDZo1Mk9l3fk;;jliOwY6F@Bu$Z211Tk@#ueZnZX3yU) z?`z$@-JaKEUCMl}!*8|&F7>zO+q?#9zPy1qd6C68X_vTmALTW6UVfFFvYJpvTf%#M zFulbe>ne>5T_prf(KRGdZE8#S=FP5sb)PlwugO79`jIK{`xqGL?9AJCb+131#@%z1 z_j>#vn{0Nb^RyGwV>L@Y_ZyWEG{xGGNNRejeQk5(95WNurrY?)q)YRLK%wbiu{&+y zJ!hG~P4JU;er)&k*X|~H$acTUW@*qAb)i5aQLVuv%jbpO#kMjMhwBbj7-LNks;1S- zD7RhT+QaG2!F%>>ba lO^{JKA!_inI0(N%1wznFAPu<*7i0*anTVPT0?j?U0syUlWUl}K literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0018.webp b/atlas/coroutines_temp/part/bullet_clear.frame0018.webp new file mode 100644 index 0000000000000000000000000000000000000000..e5e8692f986718f4a3d1a65d1d08d3b0ff5f0850 GIT binary patch literal 25048 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 znB38m�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 v0lo?sLTtrCg$URLaT<>aT1EJ25|0CG^?xbL literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0021.webp b/atlas/coroutines_temp/part/bullet_clear.frame0021.webp new file mode 100644 index 0000000000000000000000000000000000000000..228412be60511c4f27642a85db46aec7cc877469 GIT binary patch literal 16986 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 x)~x?6EW3^!v;S^y|agXI7K literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0022.webp b/atlas/coroutines_temp/part/bullet_clear.frame0022.webp new file mode 100644 index 0000000000000000000000000000000000000000..87c37695070f880c44421b5614b75dd983878924 GIT binary patch literal 12206 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 literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0023.webp b/atlas/coroutines_temp/part/bullet_clear.frame0023.webp new file mode 100644 index 0000000000000000000000000000000000000000..fd33ac5ea2ca0b8fde995677edc1e9ca909ba296 GIT binary patch literal 11034 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 literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0024.webp b/atlas/coroutines_temp/part/bullet_clear.frame0024.webp new file mode 100644 index 0000000000000000000000000000000000000000..26ec1f75f1b07d6541f6d296c6700dade4ea64f3 GIT binary patch literal 9334 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 literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0025.webp b/atlas/coroutines_temp/part/bullet_clear.frame0025.webp new file mode 100644 index 0000000000000000000000000000000000000000..b82075e2eec5ce0500e69580d8f4900faad20eeb GIT binary patch literal 8000 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 C-aJwO literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0026.webp b/atlas/coroutines_temp/part/bullet_clear.frame0026.webp new file mode 100644 index 0000000000000000000000000000000000000000..3f75b2c30860bb781903e3725c4853fdd73c6326 GIT binary patch literal 6402 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 Y$7;nzKK3fyUghx>k3~oV7ybnl1cOs}DgXcg literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0028.webp b/atlas/coroutines_temp/part/bullet_clear.frame0028.webp new file mode 100644 index 0000000000000000000000000000000000000000..20b52be7c1bf9140f8efdce4ee44d512f77ba9eb GIT binary patch literal 3932 zcmV-i52Nr>Nk&Fg4*&pHMM6+kP&iCS4*&o!qJSt6cjKzIZB<$CJ>0c_0J88&0(W=L z-nT|Lh;3U{_Lc80XarJ_f}~U-g}V#Gwrw1pt{;B?S!)~z6o7vL5=IID0KlQ&No=*v zQit2RtcF)M<%Tb8SclB;!ykUEzqKdn;f8>K2*0c$Yw*gOrF|oVKp@tqOwZr?{(_V0 zaj(3o=-}{FKU98{zc?9dzvorfyQ!&up}tWKueSS5+)#F#4cugZ|OG(e{JtI_dmdBtUMtXn2G4W1GjA)$?JhP&X(&p z^#f=B=^87Zhw(S4EySAS4uco`Te7IVBtd^e5R!DUBL4L(S_Jrap?G z;=Xw&H3JWAf82;S{4?K%d9O*Yz9!T)sj%W+CDsD6gL-Z{-H>9IBII7xE0SJCw6RDv zU!UvV_$0sDu(lMg4SQDe^0z4+Thb>W^5TB1eoxJm`FU?ZMBHzvR}It6My({M=%gT7 zcmv4HT`=!;k|5++g}!@DB7rGAa)e}~>rN6bv~c121MKISE9M(vIC>sOAz#6!#3d^( zdlRuA0{cu>Hu)flHt^;vzK4&*cLUF4iPp4~_2D218KbT8mn#c=7_=DMu|00Ouf7f* zn?9W;yz9;&|nitZ6ka>KGE0dAyz;-09ateS&@?qm_Z zmyQ7fbR* z^c#uBC;v-^4oB4SMWNZ_gti<6z~=K8jl#nEHqxQI~jYz8x;G6fSTn z{Y4aLhvuXb4b;5{kMc0QAK3jU6na(qlLGT81oHFI*V-EiCgGO>jKpQ4Cggpw4w z^{dBVwMVL(m{I2!(-NVT_AVV|`pd`Etp+EzElz5d9P1v09xM;2sk<%2?SKmQ_Tg|u zP{mmqv1d9z)%7JQ-3@mnFUh-L%-~neZ}9Cz8`d{WW23S`62k{+ld8nU`n5M3KKf~0cEU{h{(?6g3H9ga>FSH)69XKsysZD&u0 zZNgDyE2moayry#-_zPF<`zR{RF|#eya|6qy$qaNA4&3A zuDV#GD{7U4FE3D;p*JZ#bS*482~~;E0E^V!>+F#`I~cV_u+GQ|k6tJ~BtM!$lJgMi zJt?BfwA)PrFuS3x;kgv;ng)fhGT0(AdO_DL@ep~Yf+<|% z@-jI58)+?+l(5f+o=^19kU-_-5gNY{=Tf;R4)1rVWu6tfgL+6Sqr5D=2(S@v!6?Ph zPK+vM_u|*lh7E;+jvx=7ccttmaeoJH#=^qNFGz9z3Dr#tTSGp(kb|Tt7f?36{Zd{8 zl@YH(FF9ksI-Do(?*Pa(EGxIAw-p^!P<)4%iT+5_JPdGCOwgKQN)=3rc~Sn(OECln z%9j3kLyEHyS4$>CXy%%HAq^E7rJ;rC@|!w_%E2v#@ulUT{uSmS)$3?z$0IkoHZF2k$B4R0dW|X6o ztL8>+1*AZ|G^l$~HM$b&vFSOC0CC@w!euE^5mG)434Ou-NcJ2;lfI0s^mR>+t*3OO zaV4Q9bDQ;zW18$Gfg>>NvKeE1DTE>StyAf@$P<>}$6@QXw5dTsKv7@2sSL?JzhDec zGL0k)&18&m?{I&;eB%yG2VOO+{tMXvgDfM< zD7J&--m!sc++GxQ1*G#5FxD&Lg9-@}y_A%8JF3-2x;`|gGTtLQtJesHqv{=JPyL

BH6ZykQON{jD#=^3Ha(|4rPBpl#fV; zB~DkEOyNLTjT)ceLhKo#H+t#j*tg&clY41BMQCI=&74uWErVlmlW*9mAItdwAs`$G zXfPaeI~zva;Q2wYGOjQ~*K3@KE?`DQU!3M_%;<`MKijBj@MY;58L+^VythefPGSv7 z>}jc$m4Xu!Yy6nb`2diY$)~6_kAiRak|<)|OhC)dreTX#p>WrET02;Pw3&Qj{=Y2y za?hEKBt&wDkZMdC3vy6P6ZQPW%nGY!b4kO%{vcNsF33*hS#1FcqWu`%t2$e$w4>nb zi6i>~m#HEU4;F_%U-x&BW@n(Aj>;B1+KR8*kI6y6N>NSFO;)Ep&7#XJhGe+2-zUq= zif79?b*@v&5^08Lbfc-R%XHlN5osnHAno!2g3Pm&PlX!(ev*Jts>vP3kQ*bOo)0vW zS9MQ1H0L_wQ`CEiKV_7v%FVmXU$!SMgEk;v)jgAa;FQ(bX(E(yu8>qU)n(pa?KW}V zb|bkucNSvZlkJ1ZTxa@BD(7aXeis^;c7i6rR>Z2C6VZ4O%wT0owX{`;7uw5R*PuR( zE!N0FrMp)Zwvv=_Lvx@5Im=a5#)5T`XUr6)$(oRqREw;;Y~tACbzkO?yS8~2EGq(~ zlj7-0=KA7%o@&#kzhm}22A`*lFTG{ahGvfq%l}XPzLg1`y9l>PQqhZ~sa=hQ#ZBYXT-7*6a!wbH>HoZxeW*eJYlH6+iLqKC3yG=a2b zRajLUa3njCfQTPrc$FkFxNeh<+?W`=dh38QE<{{mt3!p|aIqRN*kq7&Ut&ueN_}{p z5O_?q*KXj{|2p7|U4921<1|yhHxuM;bl@f^%yqV%D zT-&sz4TE`rI(E7th!bJ-p1{{U48p@(K@W?HF~sHWDzI4p(eHZP2w2PG1UG5x+FcL^ zJ?bDyZgjN{?r?D$zzN+BGp+piM<4fYQ`HlewF;$>yG$55=ro*jw!8p-Iq5BT5r01k zFZ{@!*e|JcVac`BYK(_{kr%43{kx?uQM>0c_neaUT1i?d@gSNwPKj%AEwI(E@}yrZ z@p3^GO8Ws%Nbt07%b@516l4pne1x6ealvHK2_XD&a8_insE=pq*@l5!!h&&LJy&Lv7E^?jdd-;`Nhdh=1m{75k-#f{8DOj)V64%Z2 z>kHa!)}NpofBop9dG{{i0sT=wF(q5Y$*RV(_vF&oS`jKB^|FI%iO8>!bbqegiwTKG zI&hW)o`1UH;vQb-d?mUgT6d}I1VqH9AnBwd{hva9KaQ3$#6y2NqJ@MbFe*&;lMx6aE3yJ@91OWifYH)1; literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0029.webp b/atlas/coroutines_temp/part/bullet_clear.frame0029.webp new file mode 100644 index 0000000000000000000000000000000000000000..64c84e1f68a0cb7e499d04fce2791e422e9c8883 GIT binary patch literal 3530 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 E1bXMWH~;_u literal 0 HcmV?d00001 diff --git a/atlas/coroutines_temp/part/bullet_clear.frame0030.webp b/atlas/coroutines_temp/part/bullet_clear.frame0030.webp new file mode 100644 index 0000000000000000000000000000000000000000..981196dcb6dc55654534bcbf91f0722275dbb6dc GIT binary patch literal 3280 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 z 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 pzt-@-LC~Q+%Y-DS{${5}raS$oMloUXaxT zjb=s~A&=-m*%h{63Z#=19rEPqVgOPR6tTcLx3{^QZL@5$WNpY3IcGEMh`Nq?hLJiU z$`Dm`L8IaHk=s1H?0atanVXJY=vnMuh}PF=G#gSZHI^M#Jts&RM#n1zCTZ!viZ)GA zYAH*Sg=AOvPo}EVxUW?xmFOgPxx8F$EA6qi8dGeDer)|gaI|k7EYt+CAwT)q=wd)n z_2G%YP?>J8WCCxJFGtz|cZ*$8C}xT?$RvG8WHRI1xMvmoT$YGb1hp3!9~l_S#<`C3 zd5SNC{)*WYd4X0@?)jF?xL=7G8T#(v;^ThrM>D_YBFuqGzXAO3(>WYg&qP9pVF)S^ z1Dqe~Sw%Zk{pIT9JdaX8mc(A!Sli6FfaUPx?#-2Iw!D(+pw+$*7%GEG&60}f<&?C6 zt?HsX#hcak3Iy+8vBhXH*w5Uoxf@m@3yO_JfhjEngEX)jkOg!|Dby-u$ZaP#ECez- z;Spe)ci|!sRR~!rmu5hrmbtPk$pi6ev9MMoG15}HB7BNIM?l~ajtWw9QoambluBgH z(#pzsdSv=^g?_F4f0--$_gvZAI+G^Q!E^t~AN-^EoqrbJ^DZq@;1#n`0M)5C8#(pK z5B2SjO>2-bypau0QW@-gJ?+F;iD}VKsy4|^%{i3jAd5T9*HrqLlU_CC6*0Gj45ix> zOg)y{W^2nRqTnu&;Ae-sB_T`@uZXWg1mKGtZ*7?+oapJk#6%!dIf;AJo4t91sV6qI zUHV8SPJGz)l56{{-F4w(8QJbT?fEP3`eK3T_ACA1bCwvFO-pu})h3LDpxJbxND9Li zrPkSFd}VMO==Kk$GggkZ#(V~Iu}V$EvUO|=k^6I|N_orhZE>$J)?|g$*?6k-krdOx ztM#3CX=)4d@bEEoIo{2Td{jYe_!=F+(yBUlciDWpjbkTed$%2ITeb2w@5n_PRs@#W zXUa%R(XvEIoVW3(N^0yXi*jk*n#ye)y90T?5!V19@>2Bk--lqb+wPhJbyfS z@^*8&A#==K3Wa^=+j3F4sbf~9?NrLLC+84XY!XQAENiYO^;n5fJRt3LbT<9=6+EET z@VZhUX-IndFQ-p*C9;7b8WFExh_E^R##gO8k*Y&NC&);tov?47wO{q{FUaDeQJBnKa2GWaAXF+-irbwAl(?#HHFg<8Xe z>B4kNw9YVD(-wxQ3~F=Y&+~!5^nur?@mK%LpZ$`QD;;;+>sQ`tqWa3!!}ppPy~v|4 zjh!P)n+LCp{8;LEXR{dgY?Cg9kHqHpmf<+>{gDZ>NbsGidPEQ*RM+}(zlGm77qAv- zw%=OPn!NeSbzf3!E?MctV=waOYSqeSYh~(Xzbp8vKF5sCJy1n1QDI9cLdZba zy#N>~(oSxpxK@Q)6XLVcEcM-pU?1&l+P6udPh{2#Wyoq{+mzn7bxW;A*)-vs9sU}h z@*jNn{H1T2V5t_O=tx5NB_`E!;!)BD7l)=fBNhU0z zR0}GKO9X2qyMv*CD^3*ZSk`V31pv5aTccg?RT;;&)4fI)B!EBXJ+FYG_`yj)2ny;{ zJYXGUMut=i4jIpq(KszAWt8Dz;gSU40c3Ji+>pb$^et|JNU~J7eBLbI>%^(#X1905 zW%d6n-n$X~NUXy~*}8o5)MZb4J+HXwRxl66a@)G&1^ z|6kqnKjV5rF1aucu)r*yy4jKzRX30HB;WSoQe>yPZ`H!mqRXmQ+Pt#%%G#!KLL%iX z?g@r|1@rmXnzu*pQ06_zxqhW^Y#J%C^6*IHDt!bfr9;LNPLK0UA+Hh5nKY)ilIyOq z3qT{OR@8QyESM@*uaO*02WJ2baVk0w1)>OmZR!Gz)zV$CK#29VJ`5r|j;JW9Op(Y) zxMn~kj7obMi%T`3$WnC9fjNF47>Fx;kc8D}Qf+<&L?KYALMjbXWo}fO+~$qQe?Z$n z##qwg>fTB|)|<$8mab89Sy`kST>{^?7MQ7pRvO=hdJS5v9zmA)Sk@4HMa1$FDj`N| z$S9QZzR4QO8uExtkvh4C=SI1;hfa(vW^YfoDWI*CyJ?qv8BYY~0Mob;o7+{qVG`r0 zK|MCy9Ab8RP&q`aj3shVc7@LRodn2Bq$A3N(u3rQM!oT3U5ACcqqQAcTMZIAFQ6=j zz~WGAmClg87|*&C`v4FV#cy;{47?BLMfo_5F?^ZfMk9fgmwJA9U2r{sR>V91wfe@- z-uwPK_2Dmn^T)sWOZNQ8jh}_>`SG{sM?4>m;#D+ERbCMquKl=IQwbz(vmt1W8EeN= zoDd_986svPmJw)XCO|jHd2L|Ih-UGCnYFXjSaWu>bz-0c^dl1H?xXrH?$KeVmw@7| zGP#tQR1uA#?(up9&!MCPl>?Gy%%egv(^0MrQgFl+Ud9aDNaIrZ)jlu&Y|6ak$5WhF zE1#Y8abBhO^G#2_>Fjr0d(-Sq%bU-ABOoN4Sp)4QRP}Tqu$pdSOaUfErB?CU}R|&_rsm7!7<@V>YzrX*H@4Fd%GFxd_}J;#}cuBzZ&9v?M9Tz)a6RvBs6I1ud-x*`dx zmLyeaMW~qCL`<>Sjt#o)IGYS(Btp}KI~-bE9UL5~w`)>Dg<9_5dmat8J>h9>m*5oOE*3 z=8#3&p`n-($brhkRTf$waOlP%nA#jjaGcM_p%N}4NCb+enQo#5$F>x(W9@R=q=`iv z$BD(x%wq1PGoqAf5A$cr*d3fc7@QysLUbT3+z_F30#>mqwh0>;p%r#4=xoZc~)8i~oR2dM)r;M5;6UtvbU_V^KwF}!`X`7QVIl|OsN z`ww0GGavlTe{zDdFk5SuPIM~48BkJdWkdFjnv>(1Uj{N_32<1W zW}q7b%TRN)b(|hfqG(ZbJdDbEF|jU17$HKtguxC3)#i+tOCdt@JhTnKwTT<<*q_wv zZ>EJgZYs=slIIKuRRLO}xfNBef}l0FEoe1UMPyMbi77`}`6A?LWC_bXMS^ZI^D?^( z053?w4=k=;ocbe6&mfggF&qw=!Zh0%u7ze0Hv45`e*=OP&_sGQPT@8_D{_1R$ytdh z(^ZRXgO*#}K!P9$(xGHH84lu#WKWy=YXKcuNfnL7_*=p#3l_9?+AMYHm~CeFp;aZ| zWkRC<{p2Z82D%H>6SXGDm|E*eIfH1C6xbj!WkHb0ddktQH2}>bm!Pt6fh$#g+nSX) z-Y?Ho9B~Qyarv+Om+UwHHUH8-WA~{R@!UzCo+wUaCgVBJJk9MB)q#s)Wkjj5$bVb@ zD!uzx`aOTrcV6K!x192S+g}a729N zB2|kv8y}k2|&;DPx z^mqTaU**5%|GU8a`Rw@^S62^i7K|}Hx6ZttT5uQ*2A&&u(O;H83z#JqQDRxj7ax!h z$1MrpL*&QK{=x8_Pv3l){^O+{P|x)@g1tyC_vX^vHECIDtr5+Bh-)ufd=YS5n-bI z4E#ga6U&{2*`#O@=oSi zyIZu%($&qZvUjE0E!1?SBGKcm)}DBM*xfM{3B`>Qu%!b4-2ygF8g%eT3i@z|6GkSZ zmt}pcFAH8l<(hF7AIRPlI+YRHS$ah$%mJvRfw&dub@u4Ke$$8=j-$ue1p6UhMv@cm zzk*D2eUf7$4w`}2C|x0=6IZt#JYF5Qy~kfk89n$Vb&93DOM4ZR%34XRkc+K;2Aq z)`lD7O`>5ooK#jwH70?Zi+fTgF=ojos5T{#La|ha(IVF=H0o{b`(*2c;4C|_qo{zM z#;fr50RZw5Kyec+BxYGML4K@Zluj2{lcuRQXKkEXH{=f8?$8CM z8$%1pLgq%zj*^zr4%aAu)$m_A+z*Q3o8~YWX^wz7K|#4GwOMtVyVX6#y^>fJL|HBg zTyUiJ=^O8Rv!pgDw1%$HYdjJjDOP|tueTrxqTm54$f!{|-v@JZ`+G?U+LD#2+z~3$ zj$STq=^qU;)pLr$q>U~LiX|vD2GIQ>(JG(-eB@&W#<3pjih(J99pM**eg#>5fW$)U z$E+U@mf_M|xI1xqC;YqnFViORoB8?qMAGBQOTd4ZT-Wk{^AzVvFb42$RdthQydJ80 z!3)(Lky;hc4|b$EMaXGoEAgtC4PmOyT8OOx;48EqN2L z$|8x-0m;%>fz>*daRK;lc@&z-;vLExg&CQt;6illrI5OmM4QT&9{*JzzVb*a?AoR+ zNtaR)Rb6Tm}?OL|glC7Qn;qBe-zjon^ zfhZQy9pf#6TU?+Kf#!h6up^2kwni<3STqIA-5JZBBNc*no_jY%RcN0mo_s?vbCn+R zm3`=P)4POy&Yq3Wur-bf|Ei66>D8^Ib9KYqR+Q-^^TzoY3_HojIuJKKqbkBl`X5o;+?NBsK>UM6icQ=?>YAPa z*UqQ52+(F#(npHvYt%@QW0518@#ctXZJa7jQsm3~y&J37LB^7)aPLw7yBuA=_F1$R zg!&ty!M3Y+daf&<@;Pt4&b?cB;TfQ(q1uCW5r~HztRTMT039WUQQOVhs@I4jVib)D zqYRTbg3V?gnhovr=%TgIvXttOF^X_K0+{{tY``}iZ`js*3 z(dMOFZrXIGmOHDVYOdFkHxIp(oSaCr%pwV^ zu2FO_E&;PqgQ}*?T5}b-M@$e4wCd1Fr+X|>Fa`gYKb@nT3X`d(_o}?j8y+u~9d0I$ z;2u5GDgzL~7%qv-5~ems&!LfDhxsbZ3k!ECp$KvcIZ9?&lcCfqQfc=(aY!y5&PsUh z&5zn?q`3^|Ta;g7ebdmk%Jq($d3|V`QQerNntw z5{w1~JEE=-=9Y|p50*p4MVub8o^zSK;sog#W#4PXe7U<_jH`M6PC zsCkJDers`7*x!e(2wMUaH3Xq*gi_8ndNe28qoZTMQ3ux8T-eidM^OAOMY=n-J{E6m2OV ziVvnI+Bx4wqcOZjBkgiNNiyiqgoSF~_|7ApN88T7&F}um=10trZ2oAw4>dpH_o>_S zvtU1;PYVHFEQpFIe553B*W9)fLWp6+N|VTpc$ApU(P5g!7%j(aIiJYFD8+`+ELvw4 zqcx%1>eq$(0uJQ%ME#8)!drE%umv)uGG~)9DM!sCoPY9>pOq71RfPge&osZc{B`q#C4-F-We~xpp$Os7=IU-g zPyv`sZ5e2qVnb^fH7STFxVO=o)KYamNR|h4xur1NE$;{p_R5JoUx~;_|sQ`jQ(9|*Y=+~Ds*5mYgLLCFN zAjd;al5h3?Rlvvb)o+8~{%O02<+G^J1RJk)OL_8zGlZKs3ztWYoRG74`!(1p=r zMShZ+k_~E680WXji0#-W(c;lKi_uP7QWBIxNS-nhqpeTlw8?`LTl)jy@cA1qEDK>F z5YZzn#VA&bZ3Sg<3dR*{C5L-2VR#vfLe?2EGk)!8GkNpW!V{b)#S_{xYCDQ+W}|L| zRnRD&as~wlUzCrbf^xMz#pTQINtb_LVeLOO{M&_pbMQyz`{z67c>mDq_kG6d%h$df z{Yt?zNJVKyEuFmyS_EX)Bw{E-){6tIE-TJaR|>$6E^ccA-jrbgR~$O`*zO@B>~>tj zHBpMd`^bvKNwGm>5b^+24&r35syDn(-5eMLRgz_o|5p=bKCxIBK81J0enE3^3gV3V z6QaE|+ivhkd8@^qrR`OO8;Qm~Jz;g6DxExC3%gG1bpb*Yfu+m^3mqGx3l$@Bs0u88n zZEa62Gq}mSjc1?X(45fKaf&1%R0c{0x(0}*s18AAp`hB4Fg0mahN^BIe#L)CJiHQ= zWrQdYnwE$wvv!!)Dv67INZf;75N=Z|s};R3{`bazaP4w2Z<&?zpr-V-gMXT_Uysz$ zGvP;5)e!;6zm5(SxAAjUBNiEz6fCi`rpoN9w zBgdCeMvC}|wTI;2l)f-hl-Wk2N{%_--O4``V}ACxthq+HdK~Dj-QHV|HFXCW3zZ+o zp<*2d&J@NxF9+G(~7pD5~(z#&Jz_miNt)y! zKtS5zFi0C$2B4=BUF0Y&eCNqFH>0M%N}J*rvF|^0+}F^+|qm*^37_O z{N+gZ;d@P0s6jn&x7epDGLv*fAlXPWK!V)^ZXrp-u*cBBNJQYe6hagz8A$|oYMa5P zrO@h_fX=Ivp*7}%`*D?db=Sd1>wD{T<19zhiI503(`}YE9oc5E{zW*n+y|HG+$OS~ z^VcYRCSC8VAsk605qH}_&L{rp~9jhg&v%ZnMr}{$kR)Y~}`!%H_ zx5b`QJ@4AVQq2D*rGjnDrdndC-!{DEI_o(NP{@=LUp-?&ag+ioX9FvRd@x}AQG(Vc zij|Vls}5DT(cDFSsvOLs@C-Ck*Q}sYULBUbje`%&=lz+P6Ek=sYj3G)59fnZnx~1t}5~C|CSEkRc%eC?kPFW`tBS zRsuyEM<889UWdt*?+X~woO{Hj}Tb7j-&v9>rOB(FpR zV!5WNjc*?Q7c>0xk#v9!8X6C!MS(8UFm5cmwz&T`H&#KvXoJNv?#8I1M78Xzc4cyQ z+Xr8zH+@yQZ+B`7_9R|OPdxj+hiNUQ#{ux_0n3i2^=2v@+r8yXYVnb(W3}7PE^A$+ zIYDy_agDW81^`-1Clfvz0S1hq|*DisV&RLO~0Iuq>gzu zX&s8>5qSAXqqN#{RfA!^?P4KP)E-O~*+@ebnWa#evne#JsYM zc~;RR4jabJx9Jzrc97?tLVVIdMb+yg&uyCvr53$VHZ`Yh zn3R&5W$CgPy09~uC49E7r9@|a0SvI3pdvOiTq6IPQS2_x;!)7r9PynbLw7P*X6@Z} zZf>;j96G$}TY>Czs6isih9^lnZU~9Z$Ha_^tU^$pPqGZg1RxcB31d-3W#kaVAOY`Q ztxH~KAJCKfAWj|IOZg`952k*RHJ99FTwljM>m%n(_~31Pj@M>XUT!j6U|JQs>59y1 zw4!ZuDUwZ<#bl3^R$_|)M5cQ9qMs+dd_n#9v-X58JkBg8hK&XHM6c7HKX#%@R?!_OmdeqD+xDA zC-frIP@~1zsIa+;8pPDMJ^4-_dbga%mGtV91n|Xmf+s_M4Q$0h02b&(myGu-JTS8F z(i+E1^;KvLCtY^qVpYwiS~)d7C6A9g{Rs~q`ly$CQ{8=~edk1YSCCt#mexK7aa`=|hJHr=0p&V#aU)4W%G@@PD#e*#ujSjMK`p+psk& z7m2Qk=S#$iOqIN;&K+OCt?ZOT%{JZ~J9S~|=BsMCZLdXjT~TY?W~n#tp`?1HX;Y)w z>Z2sxdxkgX1-YI&gKY4&-4S${%KAbz=O11fDkR8MrW*-w#GXjWXkD{R!^|q&Lit?q zW!}d2t_)f@S-=8`;EO9zbVecUHUdV8rz4Qj!=Y zW2)S1`QBo7s17gPR+A033{A92CSz!nU>~81v3ib6k9^&8Kt@_)U=MXG1`O5G;ZTrm zTqc+_+pZVoDOc;2*`tewZG|Qq7BRD=xQZ1SqhikLkvttmRIv{jl3VD#Rxl9w)C+_H z6S;8ZBEJwDaz2Fy2!oFKv;Psd*{~+-GmDVGHeS0HMzR}tvx*lWm>9%!pl9iV=%$pI zv@Ee}Fs;V$Il^X$<;c;1tcbKo%kTBGA%>}ajChLJ#{(IX+g7I7@81UEqKKPf$dPV9 z8>3K$1sT9@URsuHOdIL-z)gMQNaOLhezfhW_x#B2hZ>JqJ|g$=^7+*D^QrUCXJP$3 zQtI`B&06IZRqYvWYXn&$Rx<@_Jw|3(B*w;i?AFKD!$T)!Sk6HSc{(kp`J#wGnrJcG zi7bIQ5=C{};oh6ODK#J)m$Eo6T_m!_cZ}w!Mm5KX%9w=W@ilWrAnwYOT^YM;TxBwk zVcGHf=ii4JWK5^8@RZ1m@W~`s&bUus$p>G2?H8Yq-!%Fgx!;I>Bl^6GMl8j(9Vl4L}?Mg2J<$f9g!gzQrMMSfAoCeM{M0&Gu2AL zK4E4(Kssz`Jz8AMjV0HfrP|ebj{JQLdn69A}Z35$m$M6tm<-ZBB>RbQUsfH znUG^^*KgVx(LR_q&Ww?0!=#MZ8}lIdGN+B%Vl+#OtHSvWoe9FI>;u}NP->(Zkqo+F zyy#oP4qw{-hQ;Xh=LR<%qzZj}WuJNZZJ(3wZ%?_OCvE2{!A_}{;aggs-_uI7{=+O! zy!wwDpPu5y?H>Kc;{H!*F-S(GRkjN_+Pl?Z|G%W*H-HaF8B8YWaGdlRngNJCViD1b zmC{4cX4zs)O=@B^%S8Y|%bh*3lxAZbhX7)<=4f>YEW^zuifto7FGMTF1KcasmrHTe zV%3S}s|)PO`Tcry-_KKzmuJ?mXV=yTlZ$cx^%)n?u6RA_VjebUVXKXX>W2&Z1b|(@ zi9Bbv6MMsT%liccVJ>>O9 z0W4rfluNCt+8hrU9=_Tff8PhfKPP4X;pyM9_(#_M5%SyDetXSVjW6>3QtgkEz06*& zzG_2=@TT?vdAYN#Wdo|LXco76vA`NL@mhh38Aofu&`n8Hcu=jIn?*U4b3jOp_DSBJ zO2G|f^y#27C`Z$C_`E6G{Nbrj^bB`=>PtXZ4b`S-73e}q#m@$PAhQ)CgwO_PHfInv zup(@`yJNRkWn78i(#KPjH_~yfAf1zskT71`VrDyoBoB~q<* z!(Jn9Z?J&LKLiY7cF5vg{*o`&ln}mf@l9zB`AkjJ9pN30*sMbtv^FYh2^bM5Ai84{Q*t={nh-x`F|#U`aZc4^{oI!fJ9Tg zxyu7*3*B@j;wthxyWR=lqaVG(!(JeA4#q;s%OD*CR3}mg$(TO;j~;yT;jO=4>gOe? zgd%7&3pB=s)VBH6JA0hVik1ARzT0AMg1OFiYX*pb5rw9rf{`@IxR)yDE zHDX0G@Y}IRVh6E{_0y|t=#Yd|L0xHIXThwaT6c^`dUf=A%=!yE4*IQ*2RdFPNs&av zLV=5)H2*f+>fVbUf3u9^j1fX(M%IK|!Pk{Ke5-*fyb8BG`=1Rn|GDMKdjn4iTs!q> zN^gFvrFEpIEflK{oab>18qN-k3CMg|V@VRd9$mo1mA>qBC=XFew`|?EdG$LBrcI%0 zp!`y_du@0U^`TK;J?qt@UDm)x`6)z~q)QZ}q4@rHeOE>M)D8!!G+Xj2#%q9DU<-b< z{EYB!IRXiN6)2T>3$}>Hri)~eq$Yq|}gpSfNo*xcw@hPhC)P}7ptVF&(IRea4T?jGUBj9U#( zRrWFaCbCFwK@G%HC_znmXa5Lx52-bIt>cBJX{orV$A+^N$Hia+n(D?{7*B5Ut44E@VIb26~ZZqZG^Z<_3Ju!_tXBP<-8f$Gs+%*C+EEB zoJ-CZ8%J9gs|5iS29K&*g&?rX0A)IV%@a}!UyXga(c3ndd0ZWL7T@ z8W*51ChyQycrHK9_yG8SH{a-UhX-FHEU-yJ*56wsd6P7g^G#hp^zm0c?wqezE0vz- zKp~u$coiOteH)U*3SpzsmU6{b7B!5jCWXdYCTlIStUr}EkE)ZZZYF6#BW060Alv$d zm%cLf7e;^c;MWM0V4dO;F7pF0dkcDj#%Dj}>ZhB1`*Ou91z)2}Z}9|CK|21bS?p$< z+~(xF^~e0ix9w)!oj9BCir>x*%A{>Fk2ArS?r`@?IkmE{Q&yH1AFbY2dv08dw^p`# zH;4`D5wu`rl-tnd&Kg%7Z9yaO02$O83r>(Rim-L0fcyIvrb(O!>woqJUqQ)`q(-REO5iFrS6 ze2VAYrJs)yC}g~WE;h^lcxt%EQ~Ubi$=udG6=c z*Foz`)7CZB6mToJ1}=zm(sXLOK34LP+jK37G`Y3`8)H*~ki*Xov~f?=I&>3F3ta|D zvLJE#SN-VtC;dH@!$!!6wrThlzW=Y)oq5B|mXjYBenQjh(ytRAsZ$an;MT4wmm?BC z$Gk*Y%dupf;cV@8#=1$YWv*pTfTNma%X}pD_bKMAoA>?z#gA9zPTE?jsoIv)UbnVf zX3@7KmY8%jfwy2Go}+3z6-{cHR6W{kF4a$)x^XBR9LD<~qVA{;=i>ECMzKZpuR4l5 z)9;zFP|Bi!(=c?q&*fEqTP~UQ8YS)n5JAz16BwBRm%b%QCP2C%f#l*McnuaTBKxvK z@(ASOdqsv|Z8QdfiLWr01Gy|>kWp%D%$P4e)Yt@aWxH<1f*=`oU+2ynUOn=vn@EX>cj5WExjB*>~$Ddjm5_Ljbfr=VHQnC zk#z)jm=3BoE?sfOQo!M}>TQ>8)S%oj0NtS28TFr!v->AT(c0$o@~iFl`m6lrw|UGR zNeAeQ%fU5BO2Ia|vt^5HhEu{13hL4-BQi%-Hy>^Y_bwr?@g3MDn}J`DEMiuh77j?x zwf*VGUwZhjyh?fHyDt45(bmvQr1xH2GG<$*OjcDT(W%N+FO6)T96tB)!#^}QMe3o^ zTf%v4M~P-jq(&&rWw+d4$RWP>oVO^aQfZTA>{erImbskSBHm66jeIbr&J;Fd52v0` z8YfTHD7^4GBenIkjFmR7LX}#wToLbEdICSYGtzmMXmh5hugS8%M>D5+3Pd!Xh^v_uJX`hL(T!EBs`0EP9@I(rEw-n87`y zJ>urr)JEUI-Dz;vl(}P0)*fK5(1R3W0ms$qRqCU07g!R$A|WEUAi((c@e?cn+k~s& zGjb@!)T3`9D(U9~;3Q-18Rkr52vy^UPy&4rV3jHxBdL-J2*TynO7|eFTRv*C!@iWg z4B(7TjlMN*?B-&ID_Xj|*_GQ@-(#$&A)&Pd5jDJwqk)EHWt12tRBLJJk*l7uRVd;bbnTMHCw?w8I8NNjgk;tYts>KRJvt z4Hh5ORQmo4uvSFRrN4Xthl6^9N`@u9ifJH#34rhko*!~<+?0l(MArB?IhGg1?}My6 z1|Me*yMgt)t0K1skQ>PcO}hvhTkc2+I{)#AuyDt#%LZP= z2sSfh%m9l~VjX7C2#U5o>0)ZuQ`3wsHH$LAK$Ia2LWD6GfH2LLV`$78LM)o~TLDgJ z2wsV`xhC#?R5ze*FXAvPsnl4bnyP11<3pghP$U$J9D)lh39M`xO9QfFbA`Js&HI@# z>4rU94<98mQNEr6ImI8m$NYGFm457BH2m#`Uvc$2R^P$;hW4$>&C)k)$urW9U|Usq zKx5@ zo^}0pY&IUom>MQD7Mh%M?m@Q9@+`+_X2}jI=Qkuo!gDLMl7 z)m4xZ2oa?!L}8*x^ytFLOgV7Y&!ckp8D9OMBNz2vDXgWzo@#0A^3Y4ht^{(K7X>a} zwwvCaKm0Cy@a<2(G4{pFJHpWPXf=`qv7u;uZ2fH9-1^&u!JvH)?RvvlGizsCV_T0s zTJ>@;DwS%?i4_Llm&#rHLPW+Y6NniFO|K;V`bM(=*^^xIbvO@$x8oNV(-)Jr? zN2L>S=fE*MWZ*e!b+Y2C<81SYogTV~GkGr->B7)lv3Wo(!TX4C*q%dU?3uT8a{0{F zWjLCwqzM^Z-r!d&qANtohu4OV&@d1gn#Hk=ZJeWJ3&QB}=B4K)Naz?vG*LmxciDSxO z6@4Z$+sDcv?_@_99|0R@0HxVnnGgxJA?5P)<-s2gemnd}s()&H7u5Ci_3YJ+uXwMw zepUMAZC}^<3Xs);$`FDwHgYKKt~F+*Xt}OsJ2f`xRL_>6jn+gMEPT`GErhfrsC8_~$h5)(!jNJ&5eX`Yq?NLB z8iW##uP;7ma<+;abuKrg^2y1`!yj~*t?L}iqqP~ca#Y58cXkuAl`>i@n|YKe02fwQ zd1&2$1jr(~x|)ONl{y?TN-Y{S1K1*zi#$E0Ddst@$jF@4$MQuRlVPP$EDb17uJ>oW zpvu%LKe)}u-J7N^aW<Zq?U~M6ED;_689Hw~oczm`cVdQk^lY^z6j+%iJ>81yAP zmZX`Rd*4pVjoobO4kA1wZR`?_kbYysGwskmPqIxrvlMHi9o?CsKp8C7jWgi}rC@^6W)wRG?}-k} z!-7Us2DBm}x^=Vf4!l)g=|%Ia)-MBZgUz7#O7F3zDAXf>?C(}QAluC7kB20uGAsA; znyx%{w6bC$fId8O3^<86cqaEa|H8zd*Hiz}XX>S%?8_wfGv)W6;cxpte`WuU|Ls@# zAMQWh{JCxQ;3z`-n7e{;IeTl-8p-PK?0NxwC%|(HIOPCkr9eDTmNK%GiACg=o^1VN zZ~gsC%#yUq7C^V8g+xf@1@|1U6~@A7O--a|A?i~2dYzaF>tXRoc@Y?tk4+U&N^VWI(1xslkQNkL89jJc5&{iv2&-uoVFdA>69Cpa;O)5y4*+KKA+KjuHLhiMk-f+BW^8QA|@|`V_dWu z)%0Zh6ZkUa>AFgR05d2C5C~HALX*RcZeAWY5O<<(qfWK0v*K9SJe6HrTU(r6=8Z2F zNy)d!#NvL;a?SGX*ZB{*Jk@PNYE@poey!occyRw^xb{dkdA$U^mH7d@nS6q~NNz?W zCm}T$F7xOADMxQO-d3ZxoqDhPfAZ9S_Kf~Zr~hx_(f=?W{ntbP&r<&>)t^(moIs{F zAZHva&Ji&O*Z|!E(g~siF+-7TJoq9607_m2PHh^s?P|j+fGDJk%{i~Or>+PqFm^ZT zPx&l;4D**m>4HR*W7y$_(K{J+(U_MR^Tx=+ncI18Bs-FgWQk^TosJh6Zmr^LX8e-L zy9<&8Q@Z+ERBi#Ah1k@D&FW^jkq=S3O1{H^?B~`7h!#8U zw;%kW`QhTi`YxwG-QoBCAO8GXrzX{;ZOpw5QFZO86;ekxrQ!$&jKw4Pq7Xu^Z7D$1vxzTcM&R&iq*+kxAo!AUE@_`2; zP2Z?Qp|A6{uh=-^I_pe@h@;~L5Rc7lliQ*#>k4;lz33~*E7dn6Uo!gY$d+gtEWrd0 zaS7+SH(te6ONC<16`4oI(<76oEBI~Y{}Jc^`}+$2;l9haHKjJHNN_7nd5z^g&?0rZhOT zaQ3aFy|RtVjAf=#PUOvhL)s=-kdW^7yA!<=o%wR3ufJEkoSw`zt527U<&zKBF4w+o z@#$vY-R13!dvP=dgr2>NUWav2^{@4)Uq(fh&7of{zw=k+N8Xj;y+*_?IQXD5Ad|L+ zuE1NVamR#my&1ED7y*~X6JU_mC{|-JYG9qJu@tYPm9kqYRqw62} zsDJ76Um1i%r*UN2hu-B6zg_n-eQeLt-Q4s+Z)Zl}eO~MJbRp-wVh{Gv@Z7iQ+_3ih zuOn-3n%ZWi!8%wKEW{K{twX6Jbt2wVkf6fu8DHwN{%id{>A%B&)!uXG>Sk$zXLG9I z>?fT0$dexzJYM{Y_&BZ2D@ZB46|Q(>4NEZJ66Bj=Px!Nb!r&BrG&>S|jON=xKh(cv zwe7NPEMI@Gzg9C_p4~Qp64S?&W6LuYSwi4a&8f(2!CSrj;vnOMQ`mNeqSoe7kDl{wSiO4I;pro#b2V-#n()bc5VlmYObj{k`p)L^S7!by zC4JeFoEC&iT3`f9m?NrOjIN(Ywf})xyTu{qclN2jO26HHwY@FZ_s!4|T!r2ZiVP`b zbxvFtfP^whh-sC{5pe$gI(eAD2vZpz9v1GiM$3@RQkT2hO`HsTA+~FqkzLGsWsEmG z`Owck)uyZULu0=QZi&9O@{voT;j@oS$QotJM#WNxXKz{Ba`E9_53hBc__)cDEWEk2 zkgeeB7^6mHkE_G2+uP|fStyl7V|+Fqx4D$b2I6=nUlW*$3?Z;&d=dDq+3$Y;VOtgd zD2-PCRD}i#OQ@4T6)6dnxO_P-!*dU{y1ojP z1Ux_#xLl2LRG_YcEi=Iooa=C+Dgp*#yr?D#C_0E_PzVUCWw;YBF@g#ZkYH9`3@{oH zLMvCL83JUe{Jbf{wJ(uNsTB3FC?23$89G&o%lTe~ke1J}x1NsJZ^PdT8>y|7U_b)} z6qQgJcI;Spw zNVmkJ10-7FC_Frbge$QOM)c1P5%~rkvp`r>DFGqq+e{>qMK^%XB2@^JuQP0Fk(*y| zQ*N0IkQ4xFtg2+ZWX=PTT@tn-OJNb~Afd_G6(bL9G*z2nc>d;WP& zJ^pb{8UNx#O}uVd@XpMdDBu`&aqFmHjpGIwG0n2Y9u__?Mx`*)BqK($qKsTTrS$eJ z!=hQtv8UNMDo{+Cq1ve07u`nHhf|gcXc<>haY*$Qqi?LT8Xt2 zUh?jEJKN@Gm?6;5qg)~1ONHl&{E1OAKX~E$_3}@?{N)$s`3CzI$xDno-}XrNjt94F z+yTY5UE@$}r=-xb?VGLb7mrx2?ke$ZFi(OG)fAj|_bUCoR`D+8)GR3$DMj5mc1jqjPBO~eM z_+|XXNuGQ2#f{lJInOJJdEbI834+By1!=29M76z5eL9$2|x%;zQ{T zVH4^ADG;OCh#E2a{hf(K+|^0uHp$D0eQ<@lpOtTX$c?A^`#ox9KFhW36+5jDxzp~Q zpHnvTsSR*>E%@C(MSkado0GocV-O(MWjW3efRiYJ^YKmk(12kZ0e z&7qw(pV8E%aM>d!|L9?#!T~D#!F-Gx9G4fN`{?;{{n7QcKUes@KPUXMKf1p3Gkcv! z<=98>)(fRzj*B}Oo4Y8OTP(>(dW67j12$Nh7f5*!3(g@onJznL5-wuBY!#~&E_KAb z7iS%=GJ7Ue$Ce|@Uwqxz$_1FDD=Q_cASPral0s{3j7JkF4w=m2QiZuiYt3doG6{o$ zWzPVT?e&q`D@IB{PEMKa3(=-$AAZ8&M*=|@wd0SUF+*lxQoP!?_byA>o@2aVfm_xl zMMOYG(3T^`ni~_F6WWuiK}(Rw@SB;A+${%A0S?gTXv?W!m?ByOO?|QouA|?2^48?; zP48aip6axBr@g*>=gPJ#cUF3@ZoSlbZ?6W24}}c@N@=?sdcI*xa_RMx~E``=Z)d_TUG}dnP*nKHD8MZK}yEsu&$choEAXJdT zgt*{;)I8Q|B|;tac;7265Ua>y+187-gBEhgi(-ZBuk$ni#*gsg zQ&n4)YR64)6t{-Q20V9<=d;zt$KE|Z_Tq@k5}vRRV9q&eTxIh}`QMv-^kp8o>_ad2 zsh557qBF0Ma4bP+1UJY<0>L1bSn^BG5iwZ{#ycVgM6mAha4-^@M?uhX=TfdVn)aiL zu`bBgfvCy_GZf4q;{j4alEkN~xf2b8ljdpv08at&Ks~Fg^DhjeK;!9x?}{Kdv3t$C z!dv8df{8VvA4rsjPN^zG$)h+a;93}Fd#QrUKiZ-czHISm8D$y3mq=uU%wtMpeZ}z) z%;>-J>EG5H@2id4PIBM&ga2j!-|zqYRsO&G|LphO?+ad}5p@_EG&q?@&DF2kV#`fW zccH7lvlWnm*F6Q?02KAP3&aD`I8c`&O0*<8F6e*TjmIk1t0)3#fy>43`mUQ`SLZXM zHotmY&+nQ-bsiMM5Vo2+>6|Mu2*7g?jrU^&I>Y#9qCHnr)y$H09*KFL3hj3s`PxT}(7?(a`h! z_jQ~7DVK!h5AKHTMgA-*$)xa)G~<xBYhR@bBkOV)?~l z)6w5k?@WHVul#nu`ma3V=F2sO`Y-n@|B1;zgZ^6j{~WTrx@P5;`<8pjy|8bM=q6au z8l}fd1&AWT1OU(hcR?-G#bQ&U+bu2@85f5YBe;w(RKszx6-k;CjYoAWV#}IIKbdUMCTJ9X1yta7yTl^O3VAG_{lkK;u+z|&k>zP!D zI0kiY^a6(imH4X>?&06Gj~3+$3t>Pxs2>YwL%I-~|FKbPAU`Ft*O0aI`BUH}NXBEA z))Ys~Fo@aIjBcbofQFC#eMQ*%a|DrfX2;o2~J$H*QVo&Ov} z$9R0EBe66uUV^qgi%dyRtg)Ch&iB~2^<_I(0W0Ur-Glmc9}envAT{CwwK=s%J;q)7 z*x#k+`f^8JICG(Cy*VK3YZOh#oaW|yDfw51zo-1JiX|lr!YJSrUR3SEmQ^uP4R4?= z@q(h3eCcqk`Gfe6TN?vWNCdpV8}|s&MJk|0T@izQp8weO{O~;A&y~;ThlNKN$Y;v& zT=R3Ba{i*q*wNYaC4tPw?a!#+sasD9&We(&lyZv~B#YiUxv%TXb!>ILewX3w{5RdthiS`? zFW$ELJ$&SQIQ$Go?w2F{u3!a|NCKa&ayhwWO;w!?T#OKr2)O(UW5QRSwm$f5`B8Dt zZMl;x`8dDeylm>1E%Sol8!yx2DoS_@V8~DaQQC}DnSRUK3%*sjU&Jfel|6uu+p-!% z%~)9Jv}o&+(#Tr|E!RoH^Gf1wlB_LCbGhbP0@tbL)Ut3+xu83KZ#rEFy{J`nyUv&U z^gAbYB~?if6e|ZHfGlka-O5FERk(Wn;;r73urcx832#PTnhj{04~d8333o^oR-sAn zH`eUH^(gc5$auPfT|0jr=l_rH{QvUU+1smfeM?2|M;_-N{=NTy$M^h?aew$#dY*Y* z*CCvI<`xpwX$p(oX!O-itdWcb2XKUD*q7m8TiCz2k#&po#`x zr!Gm66cPf(L4`YqPcr_j=4jR~i(T*!34f@$xUe~;T5yZqX36}14O8rDaUF3=mbVLU z@lmlzkhssV7lla4k!vNHjh17q%d+?FHe8i!eQv5zj;-L&2&?WIyQgq;UfZ;`9;-Fo zWKAw|mhCLMRLY`qk3tt<1CZH$--)YlHsnsv_at2>nZ4*!q_H3Va8CGS{qW--zRT=q zc=j_mxMf)vq|Ql=Q&xlJ?UH@M{40;*rdhvIF!D;C`(G{J=AUhEekWZ!QXLq6HVgB_ z=lEYW`WPP1viyF!xk;U)N8Gjgc`w`7TMvEEy3o9|&O%|q<_PIPx+C;>Zbd>KVZFw|gLw%0p(`VCKC?rq%9y_=ie&5bAUx)Gr_Zi7@_19M z6Zbe*^{K?X^U@Y!Gi*}An)9Aoa?+ zurt1+?my(izi`HuperNy-J^YS3cP-WADGy@bK{F+Sj?FBZBU~6Wjtm#+g}Y zmaR91qJ$LOGlZGi0IZ$asALDGH7&kd=SD?Y)1b5UU7~l!Uc5;6h|(N=97Mi*%QfEc z=lW^>^r!e7ANC;^a$EZfaZ;Cd!9m}CPg$o^k;Feqd`|@^FPIO6qev|E@J-Fs?vhIt zhnDjvHK%|+eo%0Abq|oZI*^IjD@|kY=Y(TfyVCIfbf;O@3zno3QYM#BrwHTBXI|iUr~d28?$U~MMirNkz1|DlVV@B1YdWFlQee&>aya!;@3)1)k2?}*V@UeQdH7imo)8M zlY6V#oj~>;|F?ah5Hv-+s`jWU=d(8Fvw!&Q$LBMAKL5TYfBv)onLqol-4Y0D|wDhu(v}}c71H{LrPDtv@ZyQxH0Yluh0VWi$>gy-{WyDt%B`5f=mw-Z{IbD zT&{R1$$e@3XJ`|Mgm_9A-ki#Uq!ce33q_gtwAshB`6UoVo#yGR183yG!C*($r79@Z z{i3tD@Q7D^&X2p*xc8Swaf>jlTV0^@wifh5`~+_SIcpbcNz|0V$Qse6(Xs3(17nNP zh!JCxV<|&hGi5-8AZw`52yLQ8vtp~EluzG6lWb~c(agH@1rSt1^;76YTt4B7m8ZT_5^f)rW>AfweSI2;XB zSre5L9f}%3t-W|K$_UZYG+Eiqs~+{({!P#5CI{PL7l9C~3qvyk=PYitZH`i1SOc6; z&1#Xe0x3s%YvNpC?+#YCE#+0ywpwuZ$glB0*O~Gr&%@7}Fe~@&U|HGGt(L{9dD*{B zaxt-uq*WGMr4|Wr7-cY$pb4$!|A;j$0u=*h4HH(zc9>Ddn%QtTv}W9_ScHUITJtc& zk(KuUEpn))N6ngw1g*GZUF>NTU}bdYfsonSA4h~OUQJWn1L#Ve0d49iY=NkTxBw;G z*21MI;*=FZ%tMuZuk79xZo9JMu+%#*JnvcRPwy|n^O%d}ciP3r*)u<)p(uNzdanF= zj9CWj#6$a-?C>&|`t=w?Rl+3U%jF(7J+wM;D4A_6b(%<|JE#WcWeZrGG%1Fi9_8!S z0&Of=GfbA6*t2^sp;$4ql!wV;EVf!aa;S_f5QPZM+K$cnb*q`O3<=eo88=QBLQ;1< z7smsyl(c11z3(&k{m6wYKXPR}8vTak4(B<(uAzLiP{ds%nI^hlrI-I0x!#ziw$j|K zpH2N()BXMcCO@rs%q>+CL)u03N)~45 z%8Db=i*D`*tv7=pCFz`eD4mtpL;`EQ-~CG4lt4QKSf3ZrVw;l}J_AN@7L%!!>Rp1X zl*j}p6^m))LT^1K0{NAg(SjB&%DpeiT}5T)S03FLcIEf&3qKz2F?{Jo_%uuLVF1wR z)BD+YM0|kdcvod^QQ?-3jpKR3^*31gF4=vl*Z$kzzp8cTfqz}|WAEI!m)F)^Ue#OA zXhk)1a76;8cqZ4aih04wb{P<13+Pe|15xNO=mQhlMv5l5Np^5}aBwI93=tBk8NrfX z@e`o~q2C{z08u~>DiKVoh#J@B7zm&XSjb5t1#(~kD7cd2Pz;J$;uyU_w4?Xc@|L&x z99M<0bnOP^or`&I_kR~*|Bu8aMD@i6*hU+rQ;IB6|n$Z z2@{e6w#s9KlDvRufrwHV+nhAEz0tMNHo)8(9|5M!=~l?QLLtBcBf-oO(sUZ5rKF5Z z#F?;&pny<8Xu>orOVDZQwD6YlUXsW3mN`?_he%U0#g4^RPX&vHM32sVbf%4)7Y-M^ zi?>=qB3hI!g0s|_DoIWfIUJHG^6jB<-@fo7e3~+M-Z{UMN5H>6`|WMEv};|&a=fc9 z9%wiGR@LtNG4YRlj`>(M<}Z3B?|Jdy{p@0Dqtf3Amq}4bO28o)07}fnW4u@t5JMno z=+g{@THe2VX#eKsYP%g)h(KOm)_oszUu2VV%VWbaStdka^9iw2A7yGuG}1|RrgmC0>CSVgkwDEP6H4&Q4$#jhR2{76yYU98AIcT{e2wX>jSu*ERUz~+XO>lDV!?6 z|FsBlEUW=Jfgq@AJ9a?H!7K7bhS#WZj$Wdu%0v-Dg;BJ&0*7fnK%8G{e92uvSI1m` z`(kS|J6GoymX(%VJwmd=ekxhBPL-=13(;cQUmBlT^8u(9Y@bO{VD)jJh6#KD$nS*NyjoQRrt=vqVMKx8vF$1LCnz?z14M)&SdC8$8SWR#vdNI6uL5_$eK`N}Ocb#j=%^h*wwA z2}&|3azTDuvE$y+F0UCuqcod!BX1Orq|Giasn{x>?z>|I7LJ4}A*56Zf%5^-{=h&c z(C+X~KY*>oQN`8Bw)6%kDU|4X%Qk+btTR>wRG|(8i%>)Zh&(kyq=bk_$ig~Px$RZ@K%VpGt zC@5s9wHmdZU>&6HERqJ7BsZuP60&_Oc+pmsA3;BIw2p8_@^l`QUIxw8v~|X$woM6W zsNnGRvZz4h4`vrTBnXMYTV}CqKF_Ka=lqyNV-Y^(68r)C)H*S=4DV?f-s5P#sxr6Q z{ZH$ZxT?x?r2Kt*C(q?JM{chZ#Vkgm;O6Haiq2e^SZi39lNh!q8{WL-U5T#5EOJVG zKbviu-SW$?d@kxL0gTGtU-;bme1X%uez%}P&|~0S3!u5+a4`@?4&~V&Og=pPv6}NZ z=W{^9qCU|RMa8p2k{_9L2I%8UX|5j83Tn!zK8)? zy@KD(qZ@yM?E#VU{(Iu)P>y^CeuAAH3#JLN5Jep2G2nM^Hg`!i4|yI=22l{$=v#0m)?}2qoK` ze&ZP$Kd{w@t2(k~C4jWc$x*gP*`D%~svQN@R?<3DI#GrnZeC=hLAS_m3$a*Q8$Xn| z0IQogfl4F?3PF-F?Mb8p_I#{j=hImXE6JeYb;&1BrH2D6J_o&ieNw+fHDtKo64T*J(~EBdTtu~+^EJT*5}H~%QWj3>wb>~}QyOK3EzWVH z`VL9V;R&o>&QZoHqHM9-mOZ|rw0Y|G9&MUtel~KO0Oo+WkeRx*nqswl%pKO=a=l)y z*|yCp_fE&~zoD-8#c=rL2L<(fO=cex{e zf)vGDlt550vSoH^{#Xwf5gDhvWdS=)w&_+QB zQ5~ATH|CNFo(bzV|9#pTM>dXOwz=!7%~j+T2|?*lDC{|sBh+`q$8dUip38ijO09O= zzHZuL%L5{Kp33|bb31b>gWy0|?U5=%iQYVL-%m2g##I9TNR(>okoURlfLh5(Q&6OGaWC=z6+ zeOrFdkPC-zK3J)%EszQ@gga$k$+4_a*HgD5=7^Jliz8^W4}lOmfj3a)1_cM~f^T6g zUt;}kZV*@~BKeKc{j+|^UBBDp&#c!df2$PFpqO#2F%)*#0=Y)A3j9X058iQ_F)dYO z9dYvrEeB*u=%Uy$jkw>R@=HJNyg%;B`%cQ>_-DU9&+;S^8t(&^aaEeha$WKEPgmK7 ztyopuL@s$~#oNRi$DtlfKTSZ2L;*GOt-w=AAP<_IoR~a=Hk@mwdgrnqkFWZ7{#pIu ze@m~&KlHVJDXYTa*itfZbH}QO6LP_-=2OVUSH0)XZ=b)@`{Ng3{CAE!mStpyGI-Fd z1%aSlVq>7_up*ibgvN|5Ly9M)R76vXAH~k2diSGt)ri^3%g}=((ZC2I9MG}znCHcR z221cmFvR)tJyf{GtH?MrF!aFAU}56A4Vj9mOKb)Cv7?xSNhLr9EHJu|dr;WIU;r!r zHTb28zwb*AU2g2Uvrl;RX4mE`+mG>vzw`;;wa2o1iVQhD^tiV4>&@rul{pSgw(p$C z*CC!Eh(QX}nzZIufxu@`qE@8%s8JCu2Wq511OVs-YES?<7=hu9i(yi|hB&C|We-Q-;;HIdfzMG|nLqWx7W_`d z-vGL&MbH@m1Z-KIpp&>eJSi}KMtbG4+i^?luj*}l(QT|hC$;5?BR{t0?Tb%Y=VE<7 zf%{g>JN^5q#eOJt%X#|>8NT!0@O$rIPH3m6Tq6Z}VT?5sdn_(ZZ8LrC(`OE7np6p> z28b48F4l{yJ5^;C{*@6pFz3x3^HR3#^Ahn4^d5cvurBb36K}d{#idSqB1oI+r~tmq zIHj*m{F535kx3r73BzjKe^S%EiMH*f*j;^;I$J-Ap~iv6sMi9HMW_%9C?NqLz=Qw< z2Skw{I7nn&t*rP-Y?vv4(*}gjo;boUiu$F*9EfEdM zJeXO!IU5fSZeA~*2IgMkV6L~eYZfD0Ftd%ZB`?AO4@K|{) z2%ynOZ*oW-`3&SBFVvJi5V^;ap+5hF_kaLuqf?dfH(;-1Y@{q`8-`Hm6)G!2b+?!_ zun&rbG+;{O89!&iP(&I5$ftDI15hn$shpv36dSyaQPpBWC~8xiyWyK0&l5D8IY*9I zcE%jN&gxaOe$yjte#TADYPoa6ubY3aOqVLjGMVNR{V*x5Q^Y{FL@L5?7+6P%;ecbz zu=~$q921gb7%BspjfQ1SmEOFwrY(^z-=Z*h2AzUygEbf=w6WL_QtVJUWO)jt33ghI z-Q8gGnwY2`54aZBs4Acp^Z@HT+%u4#RNV)RjhkqqaRa1)Mj)^;E!XpwlPye_csaY{ zZOjPe$r6OKh4sDiS)uBRW|#YU1n(v8BPtinMLiqMrM*i#{vgt7HuA9dac?0*A~w{r zm6mD_x2!qTlyOd4Q0MDom=p(8l@leW45~!{CyxiSVTmPL-Ykba_%KkhaaL_0uq|WOZRuAZbaEQc#N2B|59@n5YJ(t=8<3U(;v1G(Xd$COrJC z#C>J0OZr*TyTxYv49TQ!rv5T73nI~~*pSv(oI>@S>O~$gN`KbTh3d1>JNsPMdD zX27B`!%FEN63i0;j4TheDFM^ss<^~y!VSY@&_P#)s@f|?MhL>CW~n}mtylM#KDyub z%3q}Taev`s&$vH7xBebnrRbLW3i+qwrLzh%a~GSh8n=YUg`26Q=Q>+esFPTDb=9l!Gf)OS5o6=|0sHW`OS)ZK(-4za+DC)o zPvBR@7ziX8By;AJ#RN*wO{-SK6_03Wy(FqudV*&d?Rt0yKJ3bWLf^Y^yRGQ!4J7IZ*Y0O0jA_xc-Xo1 zO`3dJt9NFLQ#9^NwhJ$u7wS4Khvt4tpce-qA!e?A(0udWB< zx6gFJEK%XLstm<~T(qp{3yp=u>wm!xDExpz9HYH$%86(lg{mNBs=ypYOen*I%$+-w zi5a8OEP<*JRPP(O)|hK|E243Y9_=MVurdlPg`TnrA7e|`l+8bE~HY9ZZ#iy zxtz#hEJB{rkyS?r+4(@HK8R`-ycUT*3q^^vl{Wb4o3Fi#?@w9!@p`73X*Z^=7VVU8 zata%XP&3@=}t&q~7OtJ66=Ei|l6?+BMDp;K@+FgdLr*MTwnbQt`F#hGe zogZ5^p9??tF8NdTEa>8azx>`E70spi2s`0#(N6geE8JGt?q~NO4iEEOtL0vtd@ZfeodC|EPro}<1l?M_?P0=o zw&)G$PoVF=@UG6g6dhc|3o&}Qq4tEkqt4Jyel@*<9XEQO<}=Y{C6akyje?&+3a*hR zC^dS7H^3fg?eekVwXx5=%=S4@8QTZ!V8uR4PQcHCj|6AQb(*BGAEHO%ScnDuaERJW zNWh8=$p+C(dyLRCz|UsoS11&?7|i)g?esaoUjFR) z)%n$HD=ii2_7J_sHif^^LE!*vF}6fvg)*jJH=8HR@H0V?WOTOKZa%UYme!a`Sg|%u zS17TH$3!fsdHbFqO2tB!nAC9N!NO@SN^VJro79|IpS{!MQDQ*V$+7qsID!l?Q-+F?)>AR)b=kLHGxgU{A*vm;_^N(!Z zprd{{J;t8=Y;%!&@J1bvd-b}x4QEU62V8_tX_?G8$+B0-vr@54fYO;H2M%_-TC?Xp zVwhMwKJNcb4YR{4YmP3YE~>Vz^0ktJoNAJ3(?I|kPb*bRA+$fjy5qmWOUX$V1lR{$ zQTTv%fw6GI?CR(mqC@Z03(C}J;{-OPK<Qj^v7+XZ!i?ucar2w1^)Kuu<_*~T-KxzmL9QkkYY zbjx?{@1)4?eu%RPW>ER~+jq+6x^L~jQjyb?Y)4k+}+UPjXT7L>Y1V7B6r8J^>V z(A&#!wer*>nFk@#I8`>g0b(?`@(I0`JW67$j>VnOQFAY_hpKN+7fXhhxPhp2^5%oD zlP7OIS*1KmEL)$GJiHn9jVcim5s;eFj#Mt_bIR|C0wdzT1&O7${ZYA^*$bErQppl6`EF2jD1f7$xaRuJuP4w0EIpa)A z6FI{XDxk~*g$ zcqb)F-pKorbOT+)efOne^j2&!?i*PnfdG?7_7atG$|J>$|MlG@zS2?(=W0L}itvRK zl_#Yd=v?#04C%o*YsQlE2bP-QF9^l5f{3PJ(lMEG!M6B0`ZhK zQrBT^nkWsfKUQ)B7B5PRtCPvjxwsCuDw-L2be~ z0@8`&6);=?{X`2R7Mz3Q8R?3D*MdTYpE}9`xK{e)n@H~<< z#;ZlL>U}Q>=xo2D@ji%!%=mm*SXka3zT>(@>T$09*9Iu1SZhKlYah{!yzU;QuW#^ zmTURnfB&kF{)#{JSKRlQRcYc@vDA4zQm4Z zV=S7&OGgbT1(Fb`N~Gq?xj<56uMN3s#-t%d6C{Mh! zrbWSyIt&q*S#Te==?+-Yc-ffnNqt$CLR1EYDN$ytW>ZVhAIt=NMV0dB@z;)0dOx&xz zy%$w2t1P{p6M#k@8cZ&)eg@<79(?Y5FrE(vpY)#(*Zd^!jtY`QNadI5&dJyAgOb$P zE51bO$aTjR6}5xxM%5SQe1$lX>cmgf$`DgVsG3+bNL`$&PIjDu10VIyD%@h)qoS`k zov_r$Th@9PP8kF!DGil~W@uJJC31~YLQSJF5+1M#O*O1*yQcpCM7j+}0qzMCq@@~H z@vCrCj=SsLyY8^Vc8yW55pawM#Z6H{5n?7HN&z2iOad87!Zim20K_G(Ycm`7#yK=o z%VkbX{fim8=e)9+f`oXbY|6@1O;{*nC`}?VPbvrzHUfU`L$ZbJkgt}dFv)TXt)c2m z`L>mpV?DK&T$qzjr?)rFHo{abDyl}^-R^C2h?MF~m*xAoSMGe`25AkB9H9dS!3?5H z8;l?&672KVG(beEH-75E}H zAwg$wbM2K>z#Fxb2uB6!4o2S3n?&yhXGixcJ-ADwy92wMcm_Pah~H+O4V`^MVckqx zS2C-t`^;KCW9Ngs7u-vQ6~+A@6m!eQg@dg-I~G97BE;ZmBDE`{Rc!)V1qj;&&>Z4p za-!GFt4=8o4g_Pc6-yAE2~7j3IJ}sJCPcGXiU6A)eLwdLq|B6tF;1;X$r6~2(WW&< z8%D|OT!@H{jv)9wF$o;$y+-SYcNx$CIwo;AqWNnP2xV5@aG z3TJR(Vdw)qvZ_J~nrOx%W|f(U^!8h)xnN}3JZv|I0bF$a==c*H-)Wd;om!wR(AySo zpmv*4sCu%wEZ3gQ;Am&B+#-r5tDh0T3Qh534abr(D zgo?^qiP)ec>If$DXQ##hnKeLS4z|4nAxBG7A~ey4DIFh2i`InA9^bKhE=UuaV8sTT ztEVZ}Su)?u7SEYKqb3Ddz;md&KZtLR+X`(Jv;E-Njn62(uD)U}(M4nnnIS!`*eF@v zytnH%Z`F_OjXQCsmn!rg*0;%-`*{&QVeN5kO6~NrHl@+BSg^eQp7nFzRUwllV^ZOx z>yn?HIltwNpT6*ch0|T1S5Gcqw|g z57R%6k6&VO4m}IWL0X`|ww@H@4RZU=R33bskhAmlAQNQ`xeNz^q}?GG*Df-o1@2Yx zMRYJ<>cN04F3v3`=;FCIO;mFT;F;n8N@QHDm*-;DL1mdyN{}9r;l(1&x$2H*3tCCx z-Dz@V`mN6?U*R&V4n;va_=s~{BJ$X6YJ=5P5S)REyLYW}VyV7uLM@;uzUnXiV@qF!?ZKbwJG33=y zyiHNEl4v}+bA8lef{N%N0bpusCRP*~EJ7yYZV^Te77vaD=o%tii)vJp=r|~b6LGtd z$*oyv-x(}8rXZw%wH;CWjLG}Xp4E1>vymLt(0Nj$`6@f+J$zLBPtcbZgDxNPw!-v8Z{&Dlx2{1=Yb6*yfh{%Xi`9yh41?UA@0QU3`Nve9=Z@T93`0 z@q4sP5W#^5d<=?4#m?Z$kj=-Z1>P~EHcG&*&{D)3um-+acH^u;4XG253L+hCzzXeb ztLI0@N@}K)#!}OnGC&YYnGW(a+aL$)Au@r0WJki{zSdc`oCQ!;IWd@yZiW}=v-oSE zu*9{c7byPm#aN-(>Re^bXRqv4?%g@KV}}s0 zUgUk-b&hG_MY_51hr$0V%ky@YGjrny)rG_ssp*^#nyW!CE~^5VLi< z&#)1A_ zCD$r4#dL79EfI~g$J!6?o#%?nc6!{;GXIem!=KAyUdF~n`IwO*rsUXFvR05?D4SB7 zu`4!{_GpZk#O%4Q#pSw-F;WrBnM$*FT1nYf#&1=uqcG7GYMMT@(zFr+&{BxLr-yuZ zvdIa?O+*?54^avpD7FgT+`V%1{KSb3_7TY=dBt`N?NCO6z=D{`^dl<81k^NDRbcL8 z2qrA2HA-``%q@aNxQe^`P8L>w4d|WP<`F8c^GQ$g<#WVi(9~l1XIiL(-BY^+3um4| zqKg920uy*z25=MZh^-<4*5cI+tQnk@Ql=mep(v3T>ZxE_NPSG2MBM1o!J3rQ*Z4fX zyj-Ub`Z8{qCvSl=xLMTjYQr2=pxI^hGpc{s>LaaIN$qm4JN@)+Pi?}@ri~h)0tpEa z<0?rM*b4uklgbADUF4q-rxg4xZH_dNobPzC*l_Op^}V#aock%}2bQGgc z+%#mKzTQdhDe)2bqohCB!u|GF{y0rCyOu0%-$6eg#{S6OH;$iw%l!Gt6uoJ=T-=Who`8Uw!N!l zx2iQ0sNXC9Ql2}1nUSiAysG$0!4$H0?c}p>aBr{5ms7ZOB{?-i(+MqyamC@dvzGbL zqIY(5DQ+Z|jwA=Nx9kmkd5EsjNBsB}-|v=dS5kxEQ+X5;g>M;MCYAFsN)TPH=bBlw ztSv(yjPi&^A`VbP#$36U=o0q{8uzdF(e_)>;#!opNTO!Tq*~vWGw&Gxyv*HPKko+! zp-4%sgIAclsth!vykm!->%(7zM~QXzb5PF|d|;;8eLd!{03BO7zFQfxrLYuJl14|y z8t_wboBFTFb=!^J!SXX4z74^3#><#gzh)FhiYaJhx>_A^Oj1w4$VOte0J*&6eqZ=Q z!&vlx^)t5q`k8>Uyl42Dvrs-k{Yds2Su3WYWRp$~+8t@PWLyfG0Y%}E9%3aku?S$U zih}Hhx}Dz;_hi6E?gMyQQ~VUo68 zH6LQ*P$il(y3b+%n6#=n?W~mJDrFHu>pvC$w;BHRR{V~=X>DEM=pVWD z@gK;%6LTrwYGOiArd|oMkqE~U9@x;-^^VymXv<4!0|m3(V- z{ydNFpZYUg`LQOf9{Ng!t?yp`TUtPNqj3Wq)p!y7Ci7H_#gthUt1C{6MPfI2w9uyn z!S3MTbkz>DlUlmOPNkY-r&D`dx+1I^PF=j_5?zyD>q^Bd@7r10Mf;69ni4Y?^8VP zghjP1)^f2~tWi92#H{uVTW$~~zP8GIK6*CQmFhYMZ|N$yBov7U7x(wx@p`&5(PWj+ zQ9q_D<<4(h`N-l{&REQC&m{udz;Gf$Kmv9#rXoDn{!R%124MajCtJ=>eEfvZpF3F3 zo#gMQ^L%>wrX&gm;P&=Q`L}MQf5Q6P2EG$_Gd8b7dXG56%DgSllfm#)j@~z03Ov$@ zCTkQ)A~LCE6;T(A3V1br%Zx1(lE_&jxGCb)7Q5noC6<){$_P2;DBxlQeK?^X*#nP^ zzaA5K6OJ8#P~x7x^r-&Aqxh=dFzZKRI?8WO@_=S0zRBWQ^-Jo5+9NCZ$o&dM*2th0}l|*1NQvVzzRR=;zG8-F3odZ1 zB;6^Kl<$?=A!ZlMvk)fnPXp5c8-O$-HHZcBmrLc}`&L;FA9)*p?Vs{r>+kY9KH<3z zKZRR^WPMo-bNjH#ORbyjyqXNr%r5(}+k7YRaUy9ztx4xM*U-&V1$58>dIC;e1@Tc2 z;Ldq01EAo!Tc8KPWCm}!#Y#|n!~N|&wpZil*lv!NL_QIqf`PzR(8R_>1x3f_+{2pn z=aLXm6#%2!03k74Qcx-q~Bd^9`yul>R2k&8>gy zJC|PW=RW>}hflr#6b&CpR=vn#o+MUWoWswH_7^dCl9TFJjT z@tOuE5_RzTd(^>-r%YgOxCN}4Uqy_ImvK zOkCV@elE{kLle=YQ1H{fc&vQRwS7`QlTsH&L^+6SB|dnql(mx-xvgzHRr2a{4|ovc z2W2U7P5IihcG)LZE6Og&nx6D0pxj2ZiiHj|$e>lbc!-Wdh-;I##B7T{^^V3NTtE{p3h-8{~(f zz|Lc(!W5kP1rNZ`QeCvz@e82Pi>Q5ubpjU`-F6zjm6+lRtQZuHQcRmRs&QYRqBd1` z!#6RWC(w**Xfs>D%mI?7-+JVm4sJQ2a+3O>mF00)VvFn6$M7ZfL;S3-QHZ;`QS!rW{s7 z8H7bj%x2lf+01rtcOOe$(#|El zmvpau_sSa&*}M!`lxUqUK~j*mz_!)^6=AE5s={Um(HvE|hhSI;#EmgU%2V}3i@1a( zB$|!Gumq0?;E6XBX3oSS;;>0Ap#W@WCAAe=w|XB3msTNJwmK07K;fotiVB(8G^|yP zKi&hs&Sb>LurXD!2~ZKCYnz=H z2C2^jLlBG5h3Uy^U3fUBip^Dd+ehAaSHA4C`{lkvn{(0s_4T)Zzs{##;5DmXAwO3= z*(3iMei8hq`_n}nOWl$@b-BgPBbhqMrkL|e<{m6hoB@NzRiuq#BI*Ziq9VYO6tLD} zXF#&8^*2r|EsL^8SlRoKTOZL}fxXm`sN^8+C{Myl%W+~q(-U8H+2t#*-Tju& z#I<^+=1ji=Z=wFYa?x>^=MFQCF*eLv)Or^w?($T3;nA7&nOA-CrY97iri^K|3dg&+ zTwTLk5SDb*Z9;8YB4bT4Yi&l5wee~!bgSc=cjvp%e`)ObKzJ#vQO^Z-ZtX( z(?l(u;}v~#=rK{LTU=bX614DmLGGE zA|A!FEW~fJ6dz&-d>@TIoU2@cDX!h@xKkZ3>#SXwN#4%%D78GN=a1)|pWeBX-xL?t zUO}$n85)92p84Z>K`-`-qM}Ly5!Y6Xgn>Ga)&MD+B}?C%2y00+fjcL+6c7LsOe9z| z9ael2u8#l6wLcQD!~4b!$BgTfO7J+c%}=ViduPmC{~$8F_5N1X~s-q3MB!M zPSg?Ob5k$Bw#o=@%(1bR7uY(##MbyUe;CBRJ;j7|Xm_Z{Bz;ncy($PKd6o5{n35)h z7GX3HV1dJK8D(fI1t~LC1LUyTkYa&q5U}H^7BH%whym$q?WOb7?cGQ7y}NrgddQi0 z#u4yVkb5XOSi^)EiDIbl5Epo^;sv(w-E#>e$0o)!Y>3d91rtURAcRFi zCPFYm#t%rAqA`bs)0)H|^iMzkM7D)m5yc9VBDAXlji42ontu(e-5#yfg&YHpXs^*U zyrQnJ3XY*zohxV_)O&@E&tCJRyYEM@?B;!)ePp%#cDonqm+s(E4==)}y$imTrFlQS zn3_xTJ|8~+85s6jfv;EhErT<&?QLwgdWX~v5K6?tmh&A!Crm8f!mY%{O-C!yqsrtr!~? z`;fN@Z{3uS3LZ;>P@i~sh1w|$3&&1dV#VTgc!G;x?DX?b7iI!uW#*SVbZfq0l^7B) z_BGFck=fhxbTEb4vAQ-&1IGsH1VsfnkB#;xa#ewi1&&8%|FeNerV zUwH6kpWHklbAn^bOFRh8^~oDQ&)a+h)?ooTLR+co+Rsz_9NTf^Ba)XlKTYTke2a;iUFZ zekS^+yrd;4upNE%Uz0EWs^-UEc*&H4q!Oz{ttu3z(5CTf?Ov@jOsQS_tNyBEo~t}d zQZ;T0c_R5>N&e&93E$Y4nn;ahea; ze2hy{%%ITBTegZt<4}fWv`4u$ghyo>a1GH_Fm_M095lz$QYJVXj}{~M1ONDcbf#+p zIQRq>99$Z8e%kl_mHiC)VJ>dx5k;`ULySk|6TvWjOviVah!+4@#S*)$tL3iP;j?rj zPbzW}^BgFgP^UmDV6`Zk?S(rxN&Q@g`hfEvYB0*Y}7v%_5SAU+So zpCkT~k}+Z4F}6y{0iaudXj+xtm-KR)xZ)gN2)@!`9B@O|6({;})+8)Lt*{INOTa^HyN_w)OKa8P|^;dww}{L`>4c1MN;Ltu$l z4THclwh>dCv^PLGL5cS)0FdP8H;Kf6W@MqbATxPqhKokXLZxe$$8^Fa01<=(^qsfr z&`ksuogcqbYj@qKxTac%+n!$O)3=E1FJjn4PP4k_a>_M_sD`zIGj}q$@q>*Y<)^|o zCANg6OnW<41zxOZF{#*(pYWq=PLb$s8LvPq(T2W-HwYGN~woTu_$dUjMf9zpBr_+dW*Yzf+F+;qm9E zo7^gGQu~17HX{jHnRQUq#f#c;D9=>D0%YN&tFVMIx=9k(NCj&KpC9X zwA^xbH{85ozCE13!XZKVlmN30~wd zGtkRgmY^LWt|B1)>wVs5o_Ip@6P3e2B`76lyWuw7O(vr!2pOy^$`}dhS1QbYRHy-4 zTwaSY!FlOG%4%UiULvDxamYxy$WyJXGnLK7;M;9tu_00jlc6XX2&Tlr70OXo<_$Zg z0p~yW_KKN|aXPo-nYQklLkv8H?+^bY7$ zwva+B5euYbt5tPguv}7&A+ZyM6PTc|xFgb*%}Q;3ZHevZ019Lb`u`04I(5Gc_<}$8 zc=RLd=d;q-kn84zptMMvP9{ZwV}quEGGB0Ep1=_Hc&zq`+tV=t;~xmzLmfLZl$*LK z64~Y@`Nit|;xp`iVyeePdF!qvzxl+wd*rb;!FDrnlj3Q5#6oa6#rSmjCS3=+5k)0O zTN)+4qy)qb@gqnPP)hCAI!B9kIY#-QZL^tWi2I^CuKJ$QAD$SL4X2p7~7bY8%Ap_(?R)RpF z8jvYSDo`qJnQ<>B66Cp5=g0$F8WVXH$Lvc4!12J_2gF+msf(nQBbHq1pqi*pN3*hO z<*cKsGEu_?z$7gm9ux&H)wC=^aXBp#C>!>9b}4)w0EN=7lStd()Sd#CQHa{Wzfq3< z&%?7SUMj!hdaJv>-(Rk2DVB1Jk(Hn7)`(pVpbN|boqIPB`&0$L<&ZeS7>JU!>5lDt|J<-+293CbugFZ$_?iYqdu8VdDYuu+2$U zW_-GpTTa%peeEX8ec!lAEeYwBS{Ln9pdh$PVb_$#h%SnTK}EDO3CIMUrz^*;922(GSpeMmwZCYr&FEDAteuBJAn#CdKW6fq+QSD9=btB zvDWa(2e%qNy0#SG__LedmqE87%P*fW$Cf1+jp@L~bw2hYKAYn`E*?(wTKV$69LFeM zlX%ZU8?lV21)*Kke=L8JHB+>Zq^$DE7P%h)deOUvXLccGh z5QLo&1=5fgFp+Q+lbsZg0$4dNn+aG6yiW0JSIFCxh>E}V)A(!u|MHjr_-7t>r5fjA zvDtLL1y#FNv`w-TjYU}tAF~-9f}Hszk+1gh$&+9}e`Xts5{e3hgZYDszX||QA`PBU zknY6P0pI{`01vuk@)n1J3|zxR6f;4vfab8#HN~F#o7$Ct6~q-2CTS5gf~-osgpN+b zCP)YpK-nO;C?0w;3hMM)XGlJ3vu55YRut!;Ml~V{-3ovLC@2!0a3rm^Et2_5VeV%o zP>OW33J9}pop=ZCIw-a2lSf_s@Krxztsj!>X{f`EK^R8*q1u*L_ojZ!?PlYC_UoV8 zd~#GAUbQ(mZaFzP!G%N0#KN(7-7p1Dpki^1nl733m>x1RiNC4M+a;%m645h>AR=5X zfu`n89+V=QzO+R$!EbJ+{R2y3x{Rv2SN<{?jwCb=MHR@ZRs^_Vxk;auehXfU~X1-~D5UvO_ zdM=6tL?8$UIOVE+wfcm%IOnLoXoX-H``MX9Tv$_j>(K!91}WZ5fVE3 zK=*||l0WgwmtM9q!jcPf@>pJotXPKGIr&h_Fig1d_4y3v*-s30cyI~cMoGI@ez1_P zDwi?txYHqlgB88xM1Xh-O=YV`<-~sMna88gSX!vP_3x`x4lIoD`6O*R9 z?yJ+4b;u}K$q%h5(xPv`vNnhnE7p)%%LFmQqFD}Rt7dsakrs_`2YqjPH`-qiiZ8;k z)z3p-LeuzK_w{{)d!*YP+D;_Ufix$TY}`nhH|mJ6x*F0z8P@wHZWhhbK!E+L2&7>c z@rie+4OUea=Rpea!3K9h2FR2bdvq{51U5rAeda|^EyHvNkFsliJAJM^3g`_U>ic0` zcaN?vd}hWItxs(}x%+_Tf_g!6sd{PmA?8DR9-+@8x{o8bc07Ru9TpG?u|^%V)#1TG z3`}t9aydp?_TrsS0G+DCLs3QEjGIj~vmp^01=G2Tx2d!SM+x#K3 z`3!A0cC1_7EO<3}V$+b-Y4S!l@vNiA;zGeA@wJztj$t@%-Tz$KyI#R@l&h<%$h(%c zl`5Kpq}2){G-_eF+GM1?*a3GueA)VicbY)hSv*nQrT$Uz`=xK87LZHv^y(+kd~QUc z#;GISAGXI;HkP7+cTE=M!wMWZjeb<4}SvfW3xc}=<(%EvwC z`@Y7$_jn%Z;9d8`ul5<-rUw!HK4bY?Y1DmyuB%boByx4oDU^p}$E|tOXfa6$B?8BJ z-@z0aB`GAfv17JvR#LwV7TG98E!kqj+Fsd%CRuFK`j7}iYqB*ZDbS=CV>!*&E56YKGwxTzz`)(CXUW?$Mb#%4}3JKbAt{Y~mbG!Br`;fs_ zefnm!zgN!mWBD9iZx3DlxM@GuPPS#2_S&(}=Du{{W}Y;=;iJfW@Rlbv9j;Q=pZeXNtFFA;Q%f%P^!jkiQ;vhj*&yi~M@iUkev675(HY zJ5LP)q_F~I1h&v4d^ZC!{IJf2)#D;U15L)2(WsfVuBth z+Z%DkG36n~3l*_S5eUT;keB6C$76ZQ5o}yc2<3=cGZsdyIepX7{bf^lu3roP?Q(CN za88B0oMU$1`2NmSU6?1FX70GDy6(%s{W7_5rjNmvCw8az{Izej_UgLD*s3ckD^Uhs zK$CO4OcGioh_QX+VYHBg0LAB1537hYBssZ4!!Q5>3&vV7MluppnPwuS z&;=Wf1Q7IYc4)BNBrU1dq;qhZ6Jt|sgKMa52$Ph2rksP25i1M{h1T?CfYY>_4)y|# zB@dW$z!;ulJNy(AK%4Zbqa$$}>V=t$zL)RHC(g1;%ec7E_9(3qT>CV-EIRzzD7Uq{ z6ltOANJ^+$Yj*u?jMSNGZXH;HpkFS1$y(=ZJLVTP^z!-}eZ4g?3UiT=d+f`NbDYL; zXqK*|g&4*mQ3)?V1d2c_@i;g|HIN2%1Rb#;Sd1(ra^yiZOp>agC{u_L*|&Q>y-M%* zkeeqZDHOo5@!FP^ka zbJhl>qiEyo3q%nioTB7V(`lQCSS4xHjj%K^;Tw`56vEq`!%_qgyDGYQj+FDWA#dN5 zlD3+b0Y@V-*2RV{cPSUg(kHoK^)!YnbwI0roAOs4|JFx_UV>b@7Kcl@{l6FzWVOmF zaEdfxDhkf>v9`yVkJ2@-iigS5wVXNw2~K%Xuz_4yinuQI*r3d{92-@cVc{YrAfCB* z`BFDB6p=UqAX|RQ)x=C9^O(qpP-<8$e)ud(s#0*Gtu#p{@RWhvC|0$+q3cAF* zs6rPu+Mmd}QkJ)vqpDg*j>wEUJ=axw9Nsio5cJ)l6EiUO8FLVO$i`w9js+Wnq(_CIRr6zxOES6G*5lB%{ z>@nD}>)=pYB0%K9FpbOv&PbH=_drCb>MdWn<^B8tnJGSHZwm^*ze(s_;ie|#@rPNTwux(Z&-#ayrye=T>!Pq6P! z9*yTREdj^Y>o z6~$NGJm4t(z%ojToon;K(K(MR1B;MIh?ZBG#ZEAWSBt&+$bM+95m6YjNpT^ms<0Rk zBl4pXdQ(mkbZsQ;iODUN2q%7yT>SvBE^rzl$3|@=0XJL!IMUQ+n65fGyy}zodb%Q| z;$%~+G_~xcO;S@<18P(nHHvFU!eA3VcfS@u6XQJ$uPL~6;FzHA*nMQ%pivrB8<5Tu zF?VVEG4qFO|CHyv2M<5pPj}*ZY)4-xdH&$Bof+NpMDM7MtUuo9KcJx!>VWNfh=1w* zCBCYl09?n`E$OL|-MFu(>Q`O-l`3sFy>@yBkMkLf=lbKl{rb6Xxw88ncz$f~<5z$D z+&^XJZI|D&d0Y7TpM4W*eboB`_fTd4Y^-kav-2kYA_gO8!jC{s2R~zaB(}(AkMJ6r z5`qS(${mw}pwc%&(gvj%6f)&Aqo`Cm(sp%njyX~v#>H&zcL#i^=3FGAeJ89n$ww9r z9Fp=?^Csn$s;dvUbHuKZRUtv`rf+)lqNf}Jh8u}Hk>?BgvyH|}6b zt*>tZt&t6Kh3sPP8_9ak$DZ@uJ^v?l#DZbf9bmv-3{La@CFb7D8S6>^I}qhw(|{i ze)Z`$o{;pkszY}#`{a#3$kA%!7{(9OM#*0>kC@k*Z4p1yQYFBsC%S;AkfOArQi+KV z52AvCRH?Uc?vGWntm^cx%KH^b`-ni)w_H>s-#k@bvSw-hl=OF%CFLzfpiL+NWKe`U zXaEh(D`=sR36GmBYB461!Oy#uypj1nMb0)q$7_#$`*q&saX&uKr+oTdj=XDlOS*}7 zt)fsZIm(h3lp~r$a_)i~*4?pcaGm&=i>JAFQ{?r!Xorb-kMrK6hRn@tp>Cq0PZUa~ zD8(X%62%bKO9$|*IN+QWc@sP012nbo_ThFB_S3>cx)2i?LS2<5nq*~mPI9)X4y*}G zX+SjdM=I6`Tf|{`4fbqTvnF}v32TSxbC&HrEIkSxbyd<-Zr9Sf1inT%c=J#~WHmpp zH+)p+`Znp~E8X@N@jZ&h_!4uuTLT5KWCTNa=TbqDXRKrQi zoXEaZ`&q>|W>0}1xW07xo6bI4tUHOHdiJK@cmb4-v|lVdWJltlV#vUiPj}|yvwK%$ zAz!030Tl`bNH&Eu1gnsDm0Y5bT%aOns#zeQ_U5j)=N{|*5)}jnYztum!ZLt9tZamZ zd4dVNj$`H=(8e>`C0ZFQ?)xc~PXlK%Q2Gh%l1N3VL9xh>n{{8MgEzVvWXxLjS-<)W z%7ko@Y=Dp4*84J{%L=#A(P7r1=#d=G^a!pYyERU}Zl!E-JFmoAi8ad4+0_k5Ml*uL zdC?{i0<;e}1PUC$+{E17ac|r`65ajtzXb;C67~;cVEA> z%du+G=BeJtuUIu8$!;FD4V$54XNJba*2Baia)b*d*j6!LDBL31G)#yT79>~9o}r@9 zR7RSGOo=T(AQINN!VB0YLBhskPS*nfEZk4@&<>b#;Rpy6AE_%0nM%?KWkgbm#}3yN zS)_O_u+@o+#8sg!jt%UiD*M$RNN*WF?<0TlxQoq~4u_7LwKa&F8U{$}NuGWWFj_Qc%}R|%_bFR&8m15kpn8S^JUNr8l#=*pk}fbt|K1K12; zxgar6x7iJ2+E*EjTgy{;q^vfUSEO;@uo%~ET(`(G$ihFokA1#?QU{B*D|V?nm;v3L zYR~lI`81i0!=z{IhDf3zmD6vUoUCX?Yan66pjsyOXt;!CuVMP)9{FXE7YrJRWx3tq z0h;5>T3UU%f|jU71w_VGa0p|n*6Nx-*~c>MhLrE#djp8MD4Hh;-w6uHBv4wwO{K10 zfIt#GC_oAY8qt+7fVfp_Cb<-uMNOP`7fS6EQac4fB$%YMKtv3A00RoVx79%*B?Xv> z4rc~cVZ7=idQfLxCIw|`Be%W=edSm37T%V623zCU=jypJyKl3yq5kFyaY)hpwlqtK zI~Vzc>R8#5q541kXgnoxC3lEJC{yWqqm*HXKA}8pEEqK^YRbLA=)8`ePus{5Xt`i? z0bz@bb_Rf3>^mG_L_<1t3heTH71(-4GOjo!#jZpT;Uz+`Z4ykxm{X^yK&VUeK9=R( zwDS^xJ7jzTot@gm6>@F*su2s5k|yO$6E!Gm&~QIf43a$dW)@g09fi@43JXC0l%W5v9VRI)-Bn%JE29#NB!-jI?fPHs?_qEQ&t2h9* zL4#vS6fp_V1dC%ciy@cILH5+O&=|lbOtN*!X18t8lG!%UVp^C`EDP6xP!uw=(E-P5 z+NGK1kGbb}!K?;G5zlB1K^7_+8WO9Z@G1SoVdDyi+k9OT0hya?(Pc#=9aBUb4MeQ! zP#qq2*s~qrSVwO*y#FMs7*#UWxoAlSczc++2PFa*8dB9%_V5~87swAo+o5;Aw(i~e@pxp%xq5EbjQxK99``3V zb3$x($8Yv4wdAMGXR^!Wmspu!RD))ZSz({+gn?NZ< z8cIb{)~v*l0%=e}DWNIW5W$vMDYIg>v`e&f+{Wp+h1evsCB%{fW^pwQY&AARQ>Ck| zCafAWi1eU(7DRLu-W2)j8od+}*-^dg>Y(miv9vCcRVFct=IxYhtsmj(_R*eSPF}mM za_H2A1N}WBXAZvV$BpyjXp;}ke(tPfo9K2zzeuhOsX3pdNeqK4kz!(wJ8Vqx8!Xr> zc0doLdehYyrlFLS7gr~765F@}3DgxoM86kxkk|Cjfn!T>5lMr6)(uUC6;0a$N!mkbp*z2cHXJ3`!Z`RY8VpxU(xuG;@P{bxu)v04>Cnlj? zpR|>QNT{mpG?OF4sEb3_;CUhjr5YlM$Obkbiw5T}=Asut0*R;=BtiD{ zzFf|u_t?`HowRUeCII7Ur}eB>xWhox`Gi>@FDVe$X5`2OGQ$n#NX$qV4*3O%hlh&A z-~w*EF;4*V*6FFpFU1xiEFL!|P#B5hag4FCV2iohTcnpQ5+U0X!3HrZpbR1?B`luO z;KU8{teLCMK*3I2aKh%!+eKQR!W2w+0a%4iK^1NK+|=Ruc<+{H{>b^mEW`Ia-Ft6o-pB5En?%<{URCwh zBUuW?Fz0i`$1OZCFT6ZnsW_9ENsLca#1D@;(wn23j>d#C!J5v;lFwkULtC+{ zUN2;IqvbS=qYRwMLUS@pPcp;{^F$F@Q2Xb$>?3bnxo~BH#~{gipNW|OT|lD0u^DaS zGSPO>7W%-{Cs(AV*+loC9gM@P%dzG)=z?65j+9aIV82#;1Fja&A9!r-y4ximKIYo= zPU!53x%FsY*V>7DPi%AEM=o_kxsX_SitOIP=mbaChi{&_hSRWurY3C;zU;55I1jj{ z86$8Qa(X=qRTTPMUZw)j%3b-2F8*zvbK7eqv>Dmz8C^w=Fup zx%^Y|6+Tu>g-toU6f(Lr(|7AGUAibF33T{zahMwLP^c=#aUkmm#}q2k)>d0(XMf7@ zr}GItdQ*Ah#LefAB^f>7jX_n70~r{EH2GKAdanC!7iTp|;sPD|?h|{zYRN0W>4-g_ zIgwA9Ny*kQTSIK{Q5xwbHotV^%NzyikD(6@LDDm5$JB{6j>#CJXaQ#=i*E-A0NO4K zb``7C?h3ccyc~2}kTOt2P^6$xTn6wNQBDQD0ABj1+Hh%CLQ5X??dG!vwvJ5^|~pq{)JGpQE5z=mnAVU->(I+8Sx6^*DzFQ z(u_Q(>^p6KXxWp?3OF3L)R*?z(Yf+opZo34^Ddu!CjM{-4_~JKzVP<*)oV}cI13Vt zVHIfap|nxvqmh>342iD-KRT=c0gy9kTq)Lt{%wbU?TlrcZu$(EyUUvp*oB%S=^S@w}SEcc;$MA~F@SKxBaZL$M4xMFzP_}0d! zf**ud(^kRU0dEl{0s;_`1)TIwzO%HKNhGdy_?^RFd$3IN7;Q|Qumu4_yXKwr)m@G) z$wyp@?{gdcf_va=N;z}NZ3v%NF{|6n(PnAK+Q>Jm*roWIGmkn6M$3+AcqdjjzH8&z z@!bfQBwhu$$MMDBS2IS4hfI$)-{10be@wT=w5G(qbp)DOTkehFCFK^MH$Tsx4P$Iao!d;h@u+Rm;Du;U+R9PMvsR`7y$*F zY81^9RK&t4sd=JBcusT0v~k9a59-B~i~Ktc#UMuFEXGQy-%3qA%5zdYed0d9c3NDc zd`Y7pZZG_Mel%D<{)?}H0ZDxPVDSt6;ilac-DSYk>YY=C8uqZEB0F}*Y0 zX7N?&7MzRmV%}WZ64Qy65RV|7>Ihewqs4VUv_@k-#rqzt{FG0B>~kP8sC`Kx_e^ea z)@#&SGDdEZ%Is|Vw}Wf8tV%1uZ8ut-#;C1jlC6xs`4w-^K|3e0vTLtB^1-s*_ynHF zo2+T(#hR$-pUEsu#bW0kB3aaTLtHR7c^9dM+$=i6rg2AfC{AIv#-pKXh@gTT52z4J zg@T*cQ~3XD@p6U!&6sYrV=awGZ08Y7Uzg-4CMl){mO_vL1Qvjorp<01U`QwM26~?; zmjEilse0-i&$^VnF^U z`IzldN_%&5rg<9T2D=p&p(&-QtkJ2t1>?dtv1xE6Qfiq`-qtCzD(_h8n#{~GbP!Jv zH;LOZgK$*2B&c5&BaA?V77&nt2wf#vvxh3^4fLc}LKCQfay$^-&Av+WXUy2)e6|d) zF6+na;OP!8Zk^xHke^Lzv&JYnQSunid^YD;RaQZTQ9Ghqtc2G|iN>Xndngz8sSHUTAduCH>Ns;Gz=0Ev_|L7fxDNv*Yzt5YT!C8`JaJ@KGC@&Q zQD@Qa6xg&TggX63_A0q*T6d@~DItmwmKx2yh~RQ$JxI&>q|&3{T!eI|&}wZ;rOT+- z#a5~I_)4 z7N{m5t-Y&zoSHvr1s`p-^>?v;80p{K()q8KF?p^E1Yy1zFh|mnWF9YROc~&la(Q19 zc`-!~Wm5_zg%VyTd1R)5xhQwlqht*NmLyX|30-h`{}w!Y2`WHy0C43<6p(<2#B75H%!@lUx}(E=rf&M^d=ny}tT)%xOjLKSde2u( zLvpRbn2k^ORm*iAym_EYb{I|o^e7QxwubDgkX5go5J9AWI!MH=$E)FF+G+86(J~)gTloW6*3R6oBWRw8?P_z!Kj9dk|NJ zwmm@|f4xZZPM3js^sD(Zf6AZwE>4vuxOggVx{_$D`Dz`tytTP(2=V{PY(0VJ)|oXa z3e@K`2o*nD@S_7TaC881FrrP`Kn2=F4I~sqs8Lap0%$-F$E^&0%r*=oz$$QA1mgmb zBYn(plT11CZ{}&R4qg#n8FD#RsM|=M2Ae410E&blAyTFQ*9av9rG^xpUiBe$)L5C=j(Xj8Yz+i&DPmPUqjhIEflNhvxisCp!&e3 zPgBPO>hcL&ea35j@?EF?kdoZ8k@%ndxU(NV_0sZ|?k!3D@JkU{RD7zO8ngR$HdmB; zOtwn-be+GX^*05g#NVb5X;%{wL33*wg!vZVGhkNu6o&*Q3{G0%M zZ+Mhd)3qBQVQ)xK2kbWo@gvzEIUUl$<5&B(u7YxZM(x*R&pbHmVU&Hc&e6t*8J{pw z3v+SWcChTIc1{n^b9Cx0ebb$OI__-6rn7$6S>5L#oiwu3vv4ZfHSeVFP}rYwc#pXj zoDSbDsh94l!5X%TFCnxNwwe}^Cu3ZNwage{wt(`rXiUK_-B<(*i!mg^c1AvU46)TYbf`)%T zyp2KhT#y@Y zOecvcCaz4MVlUi^2!lWXinEvELw+RuuQ4>1F95umyBZv1A7KH$sHCW3&B2+2g!;kA zOJ4_F<|ozJkr3UAceyOyY27i}9&bJeL9tQUoR(n4N&`)@Exs+$fV1I6^tYFvEWWZX zfYPK@R!0pe2UP~&P#|yFZAFNLX8Fk# zCU$04%0P)_^du;J=ouxT7MC7V#mePL5F$tcq5|%gpoLh-P7dCskABCY26lJwQg+AN z_}KYJpiiN{-|KQ_9%9khX&SLyJ>F-&O6!zROZsU zuG2^r2tX+0u=6t!ZGHA&-I%R0X`vO0nyq3sxvd#ZBN(ofIzXz(t30c^y^GKw zH|s1_D;wp;`aOpuSG@Jg?|JAgkD5e-1<;@uiMf(#mGsHh7nQBfxRnDQ^0NCM7!Mh- zc&Qc)gasAcNxrf5x8IR*$T4INx{}OX9=Rmxu}ByhpQ>xn$m-GnNxH>9FW!(15sSp2 zo64f!9cdoeNgPr^0MxB`pf<=4!c+q#Q3)sMf$kUT>7j&?A|3%E;AW%UYNHB=#aUp= zl|@Icge4qQ49yn`Pmn^s<#0B_mUTb<2X<}8{K>$juLQnGqAS7>p2xGX-N{>f>O+yX3fceMp-~mR#HMMUC~zyQ@Evi1<0_=aOsS1eMz@@+?+rJ35m~me-6Rg7NNR$+cOQQw9;KuMC&4?A?zsTuCV)AqFwGU9nI|+WS0ahKsh$s*Z8*{{ql@iQS zyf_kP7X;YcufTm3EyXUO1$2T7U?aXovO!bH0hDkKAO&C53wvRbR3U3f?y6sE_<}H* z6a_bSCf3L~AVW0{b2-G3zM4y6c=>JRiHbT5MX6G;617uXb!kXc69Tbd`}OVm);x*o zpi-K1n)Myl-F)4lbwH?QkXkXX)kvywjfVH`Ub_!o-d-O(1S$#C5KXYA6pN=bVLDFC zNY*GY$V8Yjv6uoxu%Iem{(OFydUu6er<^_Aq^02E(DjGh{1okwq%P!smlC@SNVL`}&c;e(z| z-h!qXloiDoJEP=IiIc1E)mG;oWjTXBP7^y%bx%EH3p=0Ly86W7@(-zg4H(K8 zB+aciluHi3M}D^uq|@aN0w$~^8{(L{dDi!VW2l?Nch$V#7DIuYf0)&N%vZ*dgOfI2Zcz~#2)_P9_b6f5?Qv0I}Za^R84DZB5@|#ab zLB#yAvwSads0!C1s?!t=D@KMoIoWRZGASD+O*u_9h7_8zO_pL5G+KO3I9`t!oxuLJOX3U(@>2b4ves=r>B zA9{RYd2G=VBK(j*tpL5pc3RuK!uh*8-}QX3>rJI^-JXb^+PHO}eqDyYYR^C0+1V0V zj-L*mS9>~3{7-=nXNPv>=>BX0g&DEz=%bA^7vslhJ~IA#jpi%1 z^AafpNi(i5%`uyjQ{5?S&F+`+D0ZLep2|qusO^>)9cnz|c-Y|z`Qpf?jxWI9BfiYR zKVJzQFG~RN^Z$+u`4x4^g3597EI_eK{5@(g73@lxcBMf3g_XCbvi+vEAPRF-@|8Wv9GB%zk9)CTHp=(R`u{wKLX&$tZTC=*MW8w z93>wQRFAkGSQ2Zy-*?`2&AWO(d9(G6*Bg@_JB~1ra%Cf}JaB!(a#F=otH;aM$1o%_ zb>pE{N162@sdur(+#+qPH+EAvFz*NkPFh;6JZ|~-L6(ER>MdUdfwU-Pl>gVjGSIKV zwTPvl@0A-5NM)89BfK|M@t$Z-q&72{u(H{#bEIMN&JNIP*kUO@qB4$f3UJE2d4|=3 zEuxsTnoGrRF336_6N;xBqWtEJvoMZgTn)KS4>wy&_1FtJRDM`25lZ^Oy%@$xm|A;V zT{07;n_r-zPO4Jl=%y@XP!8N|c^&tx*wKImhMfe(G;oa3+_nuYgSLPJdm8|-7Y>U3 z7fod%!QAPh)y=NRNb61h5;$%u!(cpdPjg<}?a=fKMd%Wxz3MzX-SQ1rQ4W5O~qela&l;>1iGW$ z02=G3DUhasi}nHl;Gp|E=M1%{>_Nv**(%xs)mm%+kO9izF{%FlYoa>#-wIO6&i5~_ zuly5%;^Yieop3{F#8#0+CZ!-!2x?jpX&@tzFA-leB#W2?5%}&ym{Gf}%hriS$q}A- zJK`>YeMKr|DqCP-o?zVz9K|!1dIR%he&v+RBVAH@3U&pz2}*c};f@m1J?dlrnRv1K zSs(SOQFB#%QTeq?BycltI&`I)Z^Lq#6uVu*aAo7>9Lw5s)x6|llDQns!)2IQCN5{t z_BL?N{)M?Ipj(1g0v?J48V10?DzE`Kc>rpnD+7TP-N=_dg8-elZ}C+p>ZJz9vFYRI z3eEMT)`^vsU(OY)A3k)1rV;iWKBYqKBkY-6IA2fV1GWnmWIX&8Qp;?1b-f3Xkd7Ks=;lMTrwGJ@?L~`>lEF zu%fgOo6GT2W-s^&j}BCrhU7B*v?=IhQYYM#S9bbW_|#AFO|p&=nJd;_N=>~p^}UuD z^CzdAD)UXEm6+OPh{#uo4>kjR{DSyo^EOoc*}!jIMX5kI73ZOW+9E|0sU!jbtU}u^ z1@wak5OW#ag1M-KCLU{wCir7Zi$B2Kb8TXhzF(@y?_<<&4F57GY)iQbUKNBRpOACo>Z38q&l(H2VeXdU-Rj|_D3q)JZSi}zvVL@n&WjBFE3sW zZ8r!<<#`k#%cvoXMQcd!l?%(Zr(5Nxy*$M+sQ7cW367T#B*Zj9Dx3kGQ*Z`u&mR{01q+byOZUd+8lCKf=}CTx+*`)W>v+Ov)DL7DLp!# zBX{(J%+n8i%pPdyG&h9R?6uQqEs$gidImqPf%OMgH`S9X^fk0Wo1xB*JXu?9rxNM{ zE_G9`*EZkGGJRZPtcMa8I56$Xm^%X1Uiam}Nlr{K#ms#IfD#HqOh?)Eksc9zrWrM& zhXBU|LsB)st>-`x0x0rBagvdU5fa>bO&U>cNGY79ZI&ZikkBGMXzhT`784_SYk0(Y zM0Dw8O8n)$@k{8((q^zVHTF4?57XOIv(#qsUelJnsxpdLJGk)(>(Fx;D*zBeN(sOd zDud{KVl7vs2BxEYue&a8W@GrnP7d;t?Bh9C{S?kUa>0sOz72^}ry?mVLXw;6PYB$b zN>J*Zs=5e6#;qY@q)6GN>MUJY4|yZ!%IGhWyKJeAFq{ETrc`XlS^iab{KNeLZ~K+m~K;D#-K5a0D{smn{>={%p1GKIm6XQ4UHqAlomkcWdCXiou+SY~8L_Ja?7 z7x-LqMJ$j+Eff}EBqq`(C;>?6>;T>fz4H)a zGeSqgZDwEK+~%0?(z|xHjvhYx68r)B6z<>QU@t@<_8?Z;2EFSV$$G(jkg~n)cCfs% z{x2liB(sTZs@b|`BXVKpIyeicw4#Bf9d3elcHM|}5J+=Mgh-KGif~o9cracaot!te zU4(r+O+1ZKc4dT|Eq6A_X=(?94ewNISak@pkSI}#RTwZWfVN0t!O`LY=4f)nYXj4$ zYT%wm?J&zgz1}fSzh+k@cO*XKhdcJHxN&7$c7FKyM!!{r1s4b-17d(KD?rpmbqWQC zU9g{d9=fe#ju~mp8YNth1f=4t>BcVnzV!R+ckEBVC-LhECof%jY30&1h=Vd1;uKn^ zoAh+5hrg4&G4zJgg{ASDEc6L;A>T8;-AF`EllUaeJ86sBm9__MEEd7a4VEjLb zgPDy+o@D!5jnP(%SNV=yZr>$~Qdy`52QWcuwPlq9a*I$8`IVATQY4PT&LeE>U`yA_ zy}Nkim3(I$C*%2?Jz8?f{H5Ap9a#T-n$9Q3r6*QX;yOO}@Zk9H#I<7;577PGn?f2|`m!4_{?H zADY&*rcywtH|J|0Jlluj4$z8KsL=MTlx>YvV%1rw)grEFSZje<|L7wlK7QiHTfd3F z`mN{vCO%s3O0+%dm#21ZH+z}FzU*QYLsW?}FlQQ788e+Jw#&)cZJx26ws`fskV{{9 zg*+51t2qR)VqCx2QD(16CJ-PM2!nR&H&(u-1s!@e{L}PlSV8q_pxJ96vpNG^tQ)y> zxD<&M&^xphf9vQD-d-!+jwt1&$ek|$D=OFZP@=XWJCJYi8-5eq2}~9%Fa^yIqjUr zuAOu>PFZB^2T9h@6cM?nFA-H$5iQaVQDBn524!8m?!YlI*3Fi3CiHsAX7dbv-$*oL zr0uPV38WA>fs6Ti7fU-IYgZ*uX0Gi0tt_-czm3`0>Ne#@6m?O#X zsY}s_i78n#HqUP{zvk$=se(4a99a`Bqf>!Vfm#@;&r%l-Q454?ySX4=O?SvqS=JAL z3ScD#l;jMk!e!^EAW3;*EfFnNThtmF9AwgmIMrZtW{tpu$&w9Aq%6tID^F;w%X#+f z(A|bIG!Q(J2$3`zMC&OPi}^^7ahw_u1OOo~=YA%FfMGO}LZG+25JDh|B!WfM5Lz_I z)mEwK-BC2dQHU0k_pHz%mz<@adF$iR#&UeGyWo$Q#w&n3Q~~OI0-Z2G$xO1qOzh6I zEHYQzh|*+%pdHRARs~d8ph)2o1OONdmWmRT5v&wjGRPlH7@-+5GF?QNF&)MwOJX_X zoGlMPuxQE5VvZKgEHt?Y^LWkOq+5Vzz{c+NOj;v;@_Q5k=9h z7bR1HVg6W1?z?K4)s7EGYDVvZAMjKN1{Yw!f!{GL8@;9)Vk7UM)%aall@1-A-Mgfh&xd|{h-DCjTI8sv)w6@nl z_ms8u3Q3W)*+9LW1?fBEoz6hgMN4OtMfCK8?CA4Rwn^T_7Ja`csbJRC~9SNYDHOH z-jCTAdwzxE(#Zsam`%sPI?5dGCXASvmR24-}Sr2*~Qx&y}NHYEotXB0>62+)pmyK%zGEHPAmZwi;9&Z z1F#}1)Ar0-nXTb=R8QQ;&kT>5D|x5#@mjU>G7OV*2CV@QVqN|l5b3TzdyBqeZNO*K<$9k%yl`XTIme7rCV=`q}=G=cz!D9X}hzRJ6f>*}Q z6L)8R^n7mWd+RogNYwU-VrOeI$f_Vr_T-wNRObXEm3kATbEpXfEus*j(T^)(Y-?_V z-D>Uw`yhS5iS-<4Xe$5=^@|!&+?2flNO)>Yv!qBe&O5?F(I%*WE3vB*hav|Vs$I3N zEe0l4_tbS818;!t4BWOF(E%VQ!&4G=z}XU0&y2P+q*Q@VEF31m4DHOdoOzo>Q|hLi zrqYI-zy_tccom;_$ck?uzBE{8!JMSGEVr`o(6%}aL$^)DssL$wu;J?KA=Qt?YqKUJB=v>WzFT zo`j-`AN<-7x5Ylm_3nQ0UsCL(?2cWDS;di-FwrjC)H5MO@=Er43v$JKJV-Q(RpzV*qfd=y!|!u4E#(&@jq`X9)a zI1PF`AeGtHSX)EeRg$1Zbq!@ixEBW!EGx-@4!3|ryo@hnpJK-bV?Y3M2Fbu@l*$UA zixV|aM_b6;IU~A1a-5`7#zIJ1vFNT{bqz=e7+Q472 zQeu}vcZ!yQrb0N2adY{-rq4A4%kZ|2V8dT*lr4Snakmtf!=+ILvXW-TNoUkO53WfO zh*#^e`>7ekryujmW?b8OsDBI*L{`4(N|&}_Oc*C+Y_yiae3Txz<6h zflb5c;N!jJlXrQ~J7(V2t1OR4^*zpyd%;m1&n4q`a{c51C@D3{LZj|0cgHY|%8JHP zU2F5AR%^?KWAz~rb3@XUzf%O|GW=+9Wxj!Jmt6U_T&GLkDxQJdijCJ|gQqkK>zEND#P8lE+qHv4Ryvw46qp)5BrUP*`S`qo*L zDfmS13A7F~4<6f*=Pc+IA-8#4_82xpO7vWabfro@pRK1>Lf>LZbl0u1ET&*p%H67N z1_BcEu)R-eE-NR)Ah$WjwT!RvpdkS33y1*?U`?XcL;zS=3AzXH z0z3Lb;0Cu3*_F$p?>!^BECIWh(l7b(x=s$J#7)e)_6*xWN1irO<)&rtf1izYM`sgRt88HikT61Yl!H3KA9Zk<9DfhfTfe&(E~3L6vy z$cDi?_<0W)g|yN!6zfm2hjKhcV&OSh67HI&BHOI4nBe5>L?gKuh< zdXN*P2pznt57=Bm2e8ebeE@7hf$tVI2-sOd&jZjz0-gohNWj7TLB(H+O9AKy4FED& z!5Nc`aVhp#;#(NTmJ&B%NkXx3clmN)*k}0{246hGh2mNjy@IMVFHJ&2!je!?k_Zbz zipu1q8AL-ej3yA}VvaXRMIvDYziEQ16b)&aMoAW}Md96pHzD8%Do{U`xH6L@5)nMA zm~>*}0i{l>HEpf~Q%%@>gsYGIOFrdV^*{6Nzx3m#Uz&L>I6U;otn;JNh{_z&$)a)% z8{^eempQHtwd$|Mevny8yaygB^H7TyPYTSBED#@5{8M}QcS(H704xUvO69`D4F<)y zc>`_$;AI0fQbAgyE+YV^8I%y++15iA2R15hH}Yk|&T^Uv(w9}g*I!C$0sjW7RrWR=Z^INot;|tMrdFR70Drz{6@aYw_%5PxgFLXq8@% zEA(1gn=)UcE_T-#dK%&uNRdhIkIazy&Bvu+65s^MO!ZV8$v}qg28Jd|a+DcYO=> z*viB$i91>2>mmot0ooZLov@T-+}jf)#FK39usGnskJs4#j)s-&=0WM=2LZ_7BWc%} zo_3FhktCpoPKt-p$2`^}hYDn4Ga=`>w#YRk)65`;>kdc<2*{o$c8>@wz?#C_4{m5^ z%-^XlbU7seZLcS6sB~aG#i$0Qd6sNH3KY?&7}8{wQKC&zo4P5{Xy+xY$U}VhfHKHF z@|nccz)WHCAc>I3xQGU+3zAW1ds*)TEf6anoeX=d_%5bjG8rY<%yP=f3Up};xK|3G z)9_;P)5}Lz4cPW5uR;ZJScaNHkyUx2M%c63DGGzGK$>Xpal5z%?=8tebv?hnL=W(% z&{9p*SWNPCN#J_~E7J;@7h%+~)nvPo?7|U&E`+c?9Lb>LR+hup>~$ zUbHut6E^8wR9>`lVdT>5+8FLN#abvZhb&lBRqb|b znk-u-b@YT#-K-&Xm5XRJBHPgFe8Zt#%;LkWW?M z>6q3bj^d&7&J?3rDVwn2HLH3`tJJjqUOzTn%YQEZ<;u(W<;z!Y_3?QTrT|=Yb0C~Q zvc?1vDOXiL^c(ma2kjfgIJ&pwcw=Lb8)s2GNIrlfJnTmrRBkaP&kndx^5F7;PsFE# zg#gRw0-MzuAy7*Txd9Kxf=JRErb0tiX1XL6h_P9*k>fyDgki2<0`Gxj(z0#35`aU0v zbgC?7Gf2d`(%-her7cF!VsP7*8(TV{4KfjmFnX*y=S48Hbeyq#6s&{7JQ}YbXHDoy zXenE>-n4q3p{=w{pfp;V(f){vI;hsHbZahAq3kOaO?p6vXtml3=E_RzY^Ym}7hL-@ z{kBG3=VB`r^z*i*>@kfucI|QHXytiXAxZ79PJndX1*zmRa45-AyXm%_woaqP=m)ua zMU;_7FUPf4ODVR(2m^OyWt|Q(V<$LL4-iphz7oGXvYYInU(5eP@<~|0mD>A)L`E$l z(YO%Dzn?~eM3m_59c`w!-yz$+UdqK9NWO~P_=w*YmfW|XqSmYHCnViCrCf_@up#TQ zl>iM7r4RX6{$(=I;-a7wpb4CXAx=o8{Yk3^Peg1JWyfA5ymST>w^E@I0;ww`RlMY* zUM6hfUHd%tnDf4gj^lzB?yz8$X}Aw8{k!5Fewh3}@g^KxrT3ec1CcY| z+mpr-ucdgO%rFJGK&-=Bo(PQe6h`G_DJZZ!5MXH2s;iBF)(l@YbnKQwdL-xlrd5z&}ewLHP29Y zBzPLhW{)7#Xo(bohE2-B%!(zV5TRklkphAOMue=4Fe)P@3J6Xu)S3r53N4|ENCWkV zRl%d3ADx0ywoj*Yv>2&QY&dt^^RnRcc9$0O=O3IhPD{DO2@PvR)-Vd8NKgU_Vum_7 zw3CMyYg4Qdb99uL#9xjxgd~Un0SwQbH^czIY%DcPi4^EDWmigByi9~#=g4{-j~N+G zk6Y+fv?ze(5Qq@7^^D&{lcu3b3QR-s%s|=_)cRH>RI56)-lBolv8WIcR>4FpDG8ut zE{iNC>!P)|%(dzJ7Yji5WX2F6eS^fyx~L8Aq{ zs{Ddt$62a-M(o0SyV>{fWMh9TziZa6em^q0;i!@`oA|*_ojNlC4$j-(FQ=5XTW>r3 zRAcyZ1jb|ZU)Hbe$M{1Azhw5CnJpSa!I)x;nxGA|g>6V%XovbYTHQIm6jq9>#pOO| zTs9K2MfI-?UNF84?1f5=7sIu$AL%NdDXy}YH2pVJ!P?e!#aVFHo}9J}KKAg(PJVdt zvGfX4Lu#v8DI^Am>dDG0{hm5^ysSQl_?R{2_A;dJ&6vOq{P+zf<%lxX8QXL2KdqR= z5EKXmm`ziQT7_DpqidriZ^^93_58kL8uq6LwuCh+bg@dYO ziijLV4x;wC-1VhYf7MZ3_3Srg+We7IM^;x|kj%x1A(J395~f2Wxf*;}(JQ{SaH=F! zfbs5M8z|#-TwRFExE?_CxULp9kgFSRym2y@*CE?J>Nz2ir2bv{v2Qzl+tnY7^C|MA z&MU*ogd8}x;WN~Gbeq@I{P{&**R?iS87dcV8_zpE*Mv_^yXkXB?jb4aacErIJCP#M zj3ju>`cBT2T7xJk2<>w}xO(Q5v6WYd8|FQ5x7Z)jM>uR=;iG#p^VVkNWb6i}lM2xV znSx58NS*pyJ`i4&o zw4R=(_DHf}Q4-g7LknGvLR0QGtt}~t0t;bA^|80$#&;)Ic5YpCrs=t_&xu?{nN4WB z%^>X{X=*L$g<>w#AdSZurcLG{cqX^;^Bt8)3oaFhL^8max_)(#P@typLjvs&+A2_+ z0-Sc*X?JC>U$TxTDwm2PJzWu&>I*m91 z+_#oeL*FJm(gwm9u)%wX@8M7OMkxJiaZZ5`;(ZUNY&u?*ed;=+Ga8!&Ok~1wPfB)fy>b}$= zTOR2FTpuVUmg!o?-0^#N93zlg-bE}Ekjt?UUqyJv^2s_R7Lm(V17yM5XLMPxaz#bq zm`}MTnbz}Jcmg`-|3=P?wmd0{W|zjUfbphWtY6d2732r2e|eChM*;rf9tT6UJ^-xG z_5jDHhM!i@!NCp}y)b?0@?nH8EeVb0-)s5lg#X%J{wd}l;WHieo)VG&|QaZ|fU|M^XlECOkY+}S=!H1b3u>b8ge8A$v~c}#BjmBEapqx zO7v8+E};-}V4+;Cf|#wA!c_YIGxU0aZ{hDowL<60d2AZJUJpfK5MqXnnAOQ_$Lj+& z01$Z0I!6k^&;jQ6wxl`AjGS?}(E#>53sEIq!+C?DGC+OUP&udEG?It2u<>>eIig6C z4{~;>Ur8L)J9tw?Ltz%&t)x;opAHZc*CpbD1M{I4wKb$Bl?sV#MAjI`3Bp`D77IQx zv^1Te-6k-B%@goY6rhQTg#%L{o)F)xgj|HZQ@z06)rzz*e|CpuU=$e;4@Scxf)ulF z0@)=^QrZxJfT$DE@hwADY&bdAu4BV_=TJsvQd;d%oGQ~6y><`TJ=AC>xd|%$M4<3A zpnz*ra>scm88UJMB&cwg<#?BUb+TRp;ab}eGJsiI0vG(YW^C;i{d_`7i_S*Uj;664 ze$I#Wqp5D?MAn#z{T!5J3<^ZMJEm*@82UkT8f9m8$GLFep=hYCs7f%_RSr$fs8vtX zNFI65gIn6tv zzLFxCRAq}Q_;N-|)h%{0Xtg~=nYPoJOWM{j^0)_K;LCJ7rVJ=SXhUz%ISg11bPz$q z6Aci66EKXIy%|sOQCCDCbs$1Sy$kV!7QeV?F9MG;Z>$qm;O9;me#3L`$hBS0Qyo&s za~7H-79C!DhNLsLJ~-+0%7jY>T`U`lIf~Yyk;F!9S_dcjjVqQ)1HUMAv#c&HIO`idZeXoVB0Ym2|` zhuJroqjzQHoj&<1n|eDc-k)m8eWm?a?c=}yON-VuO zk?(q*eRE!)so@onVVr;j*<3(@8Z@BUg3YUHny5g72mpGZ*l_g?01iB6#E2A1%qSeg zBv%P>fe*)}BkFl$yt=T6A&cRbA=?<-G-5{o;W&|mC}AG%@+C@QE>a1S1=$rsb#&4+ zM4MmUuhCqQhKYm=>W*`upa~L##?VR>-XrsSwsQR=BNECgn8(P!ChADQ6{QYH;o_yiv88jLtmF8}c}>sVrzf~ZM3YLUuAZ#7sBWlyn&TjC zdooty(is!y%nc3DlTLL@K1KZEgd3~`y36^EmHY|uCk=kn@MS@#0vN{TmyMl3i8L6$ zz97Yc*~W2N^!_Oz3%CQlg(FFUb*@FA2&F6 z7^!QgQ#zo%cjY~O(3U^@Nv1A*YJnA z+uN63mNvFEHTF4{7xwYka<*nmz3>(ZulO!U@J2r#e=%;r{w^7qj~w5lf|MUqhK>rujk&yHFp6wVs~#p!W{LU5~JC;V8CE|9NG7id$;VG27x# zA}Fe}SSUL7M_?Ubb~BpOpdF}3DMyCsBXt;JHI5Ry(~yqO0!Pvnl)b(n*V z2}&ztLWi@)EQVB?({Q7f>>#j47=*-@AWIsp>gWO}9FMJN(qlK@s|YeQ+}&9f(7-Yr zgWu4*Z$HVB_OvJ^sI) za_64+Jp*~NYyHmA&R}ES42cSpExcvjsr4@MRI+>p1?baZyy_X=AH#z{XqrEAA=3Ocd}{s!)uSw`k`j7{g|;pwd~E<8TG z|8*FrT%AZHR*6idDL7pqVCPm#0jMe{5yCz#~1Ra#8X2AlNKnZ6!n7GeMPNkFvh}HWn?z@dOsVY4w1%kop?qlGkt5*-I&7&eY60W}p}-5dNVt}Sv%K`9$6{Av%kxAJF3t` zh9W?V5xb+idWmv?|0?)&Y24KWUBY4{fpqJ`XwPT?DpCmeKsvGTcP|Rmo5s5=y=FPVDdzKQ}Fb1V6%AW|-bqVlh-`g}2!5r`Rg!Qw-3*DSRL~K5<8)q5&o< z)4ur!Q>|Q85KJGpKx~nS7JLv8U?fsS${}QxXwR+}o*ixOalh+385l`6evYGg#-3@Q z*TKMV;oVyJ_nVo9;GAxnt3X};r=*BEz!Y$Tlpu%*iZEHC6lG6P2A3S6`ixDZepS`-j!|dr zyv-v(SiJgO-*soBhCIfdbcu_+;kNJJti81@&> z7}QKcm3RP+NJAmv#N?57giRnq0t>Jj)JABcFbXI3Zc)j$%io@yGh;^6*c-pVZuots z;nlFAz}rZ<$-I`MJ3H7IqH*OYA#li$z0D z8eAE^YSy<@?dEQM-@lV@cgt{yY1=oi;~k z0|hdCn-#B~tQ`?Ue2>v;2*P1vX$6zaPO+#&80-aH37j%^1xyf0uE!AJ4kOe{o9PeZ zKS95P%!yY=C)|@WAlQphuULq_(Uzf&ku&Ox@X3`=F30n7a50~kBA4pWm1{JhzfaKb z)02<)j&Vp^SxF_1^)J~pMnAN>1^pD{O=HCxf!0S? z|Ag7!(e?$}jRlj)lw=ESMccyu#Vy*uxFc=JHpptbltR(1OkOL}rrRV6mV5!buec!+ zF@3>$abIJ=O;950DYU9^qBE#Eq=Vw{O6|RG9_LdY{bQ$pWRpUCh~Qy7pE4Llr$13-U?qL~M>WDkwaUFsjQK~?C_ee1U zMR$yCC+;zvVo!5Fif>PCPU$26sr>hgeO7R_Du96I_sWqC%ZX6Kl}Pxp(P|?suOPF9 zYnMnW8B@3SB^-v6jTx(mT+?oRH{RweWUHg`xO!jMi>3J6xFdc7ZRZi@%$e6PhQCES zv~6S;mznBy&d_*Z@u?+C&m4S_K3hH)6^BefaHMEI1Vo4_g2OnFZcQrf93UQuMMnVB zKNioM-i%0xd~&F z`Ur9@D$fIN4DGe1H$C%r4=GkGUX)(Oxlg&=uS$ z!nR90F)f0IP@|?n)HelLh>41#Vyh{;a7MVKBcYrzJo+Y&L8c{$D{7Nup@BJ|Hi1SP z)Le;z+L{_3srn1ZOzwTKorzp^HUw6QU;UUC1aYi3w+YDf@3&2$1WR3xYUbtD&7u+z~*B0vTkd3FAlAO@h2vA zBn$m63R)wipu#fgAsW2cR)lQ0huyT89}D$ zIz6L|(+5h#&AxV{t<%=2z58dmj%~)M2R#)hA0QU-NkTaoQ&n^rrtzCa(PqK6{5atILuF zh_X8uD*yBbjC!mStAgvq=%^`-02tzGgwxwAMm``1E3-vlCiF*HJ_>KL{F^HM;f+*3 zE3Q<=S%B)8yOBy$wonS$0#nWJ_)t;`2GlA#)a)JT448^0LLtgBds~1S8Vdi#QXBA9 zQ4=p9wwE>+O}0CA4@zn{S6s-Mx4kUTf)&6+wsT+&fdGIpna7#k>%g9jGknJ3c^@KM z3eK4zZOM?chA0Q2N|sjiG+)&dosT9`p z->~4JklKooXrM=w&#@LVIIe5VW0IGJFD7g*M|@x~(nROYaeTLP80cUqBB%hJbrA%4 z>Hw6lc%DTIsGvQ-Y#%Vy%LhMB396V*;7gCg@(`t6^))_IaI@i@bZf5`YmrZKwwC2J zOZEXdY>buo-2|)He4=O6aRHqOYpd9T!UcVWU7?4J!}+mp36jVKF+en+NI2|dlM^Oo+-8leR$m!lhKi%x*~amP3V?BLd3PQEXj)@S@3Eu|%l zZ!LjtXLjK(Z3KpUfGHf90J^VNO?m*sQ&W4JeDJ+r>i|Fp`st6~V+Yh)TO7A3$PlF~ zscQmn3vDoS3wo{W6&g`V)EV*59-^x=T3Zdc?>5w>rDX=Mv8dlJ4Rd*p>Is6v2}il!M1e|XEVOFfG!)NJ7xE- zZ9mxV8*lrAm-*yn-+9|_dU4UC<4^h#dRMGf-L;S3#EjnA%$FVcBNcxcEtR$+Pi9P> zJS9IC<#H%mC~T@NzjWn%_iE&Ciu^Q|P$Jqiw{0VK9XR=v;lszTe(QVrWF^0tz_#Hw zbohipICaoXiu?8P#ld{2AJ~i*-xNIBL{L|j6p8;w2In%ogrIB3Q>xw5yyr>1&q-sv<_y_ z&3K-G2#9+i0Wgr-3<*i;kR=qmV{XQYTw5S+!o9-t^^h%Di1npE=JUf9;bTDU4m;!CG&98|(&6W`C{##{=iCMQcEVr`r3 z!qBH&nIIKO2onGhK|`Gw(zDKz!HTfwIXv{JM*yYhYl?Y@_;7K`!9}Jd$&;E7n_Ny* ziKlFK*#fa7n7ZA`<9Z$O3NQ6FGA&I-`Z(b-q`lbgm3G-TO%cEyc&(B^NB zyhJ>hn*h+gXzBoP!l|3P9dwDnh_@aqfeoh&4-aoX;bj+49E_-lUN(Rl^&mnU)V99O z9<;*FTulgP4{ZuMjrr4{hHJujS_{qc4m4C~@$!4C%qwbt=|0D+OiXqt8;f>e-674T zHLi5jfA%Z;SQ>yD9{%W8(!sQ6Mzp(a{+*pe>H7EJc^u52;?M;XF*)hfc18*|yyBv6XoHO}wfylb2n z2`b(bQrzbQJ3;`lGyp$hMq+32A>K*>j6fzQgnjl2NPP^6o+xTz9a%c9PgtOW_R1ub{$RHgC*hA4zAoA(kYFn5Pj! z>j{PN-0dI&)jqM|uZ|haQh*@~$GWx7V~Uow{UusXQ&Yx~M$EW_JQf?sKrO`p7ot|A z2pOoRPq_*SK=E-%0exr}U0Y=1GfTNXQ?~$VyhN$&LI%+BVYuet2I>rP_!>B(Tu7&W zWp+;}9V1~-NN7yix@|!e*87+w{pxceyaL~?@ zI#+4s%{&tRb}Y&F(}!EM$rx!(q34P$sEQ5iI@kPdk?bZMCgLS6T1M8$0e?(zwvwXxT6}$dUkAG_FM$f-cTdu$=Mi4(fn& zO|RE&^O~!6zP4=r&86?tHwRV+VnvgobI3o7KVA2EFCSbQ&jN9&(s$~ILmhq3z^B|8 zc%%xqp(HgGCZ^GB^x}^@^L4LYMo9+ichH93Hd;Xq#SX2^K!S*%g)|c_;&n)8=!Wzy zz8?1_I<>Ra(MWrnS!M{uqs(Rts?j_us-|70l9h)_VsUu?E*B00NjVj~(6%erS-t(N z{3vqvwabsrf<>hfKil{Go*RuAx0F75`>QtwHwPyf+%g}-nS4zm^!q?tso9-W1~#fy zK}1U}u|7CJQy|4?aTp03nVA3}G=k(3%tAJ^>p>{1giBTI-ehoNctJPrhSo*abs-F2On#AnbGH#HZO9c&VwIfr~Iunx$*MSOwuwVGDX^SB_JGQ z*iLUdz07dikkM(Q1T}syASX#!s6qAM8Bzd(0uy36$SKRax$nfkU-Y)ndcOL%s)Oi| zdPa;()w3(*_@mPERt^^>$i%u(;q!!@L=qj}>>pVL)fkQQ86X8j;)PdUH@VfxKW_TE z+B$|;4m#Go&+qW(7OwkYefXAi1xRuXAqx|cCaaPccFdOpcZ_!WN7vsG-s49SYC#l& zX|bxul~k++65VdXt{U1S1!@6#p?$Wi@zUZ7NmDFA{i4rmQ)g?xOKFsW8YQh=g_#ExLq%nMnTPkW;lqd~}fk_vBC_B|b1PTbIum~FCQM>Pl2;LM5 zFDtfvk~@!qtc)FHeK?M`7{lVS33;#`RR;h-1Jij2kYT>WbSX~YE}c^C#sp&yvk<3| zkPxz!vg%RgI?>LM$fx0iM?#z20x5p2kU~rlG`e*Z6GS3O{lZe1kUajEp=K798H*|O z&Nrr&p{qIh#|K!qkLIw5)$30=?)FL?=pDq=q!+{;r_*G1#MhLGQYdXyIF1Tvi3mVI zCD`mi#?D=DMOpu!I6+7G#`WfUThsA;nq=NH zIBn;FXVDs@5xnh=Y}Z-FSO^;@i)L@zwam$i5<&v8OrjKLb4ozOb%nz4kYEbQY#>~( zr{E)7XhPY{tEJ?UJ;SmxvH>B)h%$D_*oY%%14mxXwz;^E9EorCGJYy6?mpxI_c;hy#i#!D*6jYY#BwV z(OrU=bGaXfHL9Q5v1gSQtuuZ2!Ue5NRKdW-lPFHd55|U6;>w=Jb(g#OEtF4{toR z#J_(F3RKN~Ooqc53a^%BkWJ*W~c*a%!9=L=1ONy=qJ( z5^$Bb5#Pr78kv8>KO+61H1S#+6KZ-oFb*6CW`y_>hpH%O(4TaC#kHf#(2HpKInmp1dT21`-1<~fI1=I*(h|MB);r{C+p;4%Lc z>v!O?rKDk_v0$TYlC*)gur1j?!J~B0A0)9DL_o(cWa?v)P$?y+q7=G8ZGo4PUCRaW z)@6wqT^BT5PO2(9>@=Gv3uCIVQl1Tu&$SPJx;cOR$=mcK=g7#~YzxMt$iuI`rpQP8 zo!`G=jTlT8(dz%^N=aQeeg-3dHbj2(d{Ww~_m4(~KGhyQQO{%j9q|xTeFqd2m~y%F ziLj81Jds>O(@?D2NIQdLO!*#3*=5Ga&WI0T2;)o{t5^N$H@r za4GTEN^FX(1JjPkbeb_p%IP(7t7o`q+?yNr?zLKkU-4%|z+gj=$=u{>NpetkeyQ@C z56(JJJ@eretFtYZF9+Vs7?7fRh&x_C%lF4h-+722f~XrY$b2km)cuN4Vgs}-^aBN^ z0ESy2gdU25lZbjww7hU<#3LDW4}a{_@8M&9CJuk@;iEOt)$ZwDGgC3s`=61-EI6#X z(yJ)-YPv^yPKR^x%%_}whUazItUPy0z>uJzk+0NY(?$sdoZD` zxg$!UtIs5LdmR+{0g)!#g$@|ms()(?&m*X_dFSa^m2YSVypsE+vk79gR_G(exy#sT_=2W$a! zFk^##eTMM*o{UJx14}l{-&DP{fs()v`|+o8KJHoAeDeDBG2%+Ty)#rCtdsYEvsW`Fzq0NdvWyoE?%$gz3&6OKs;8x?mS#ik=0DCt7>!E&Fv;pq(>%V(Lj6*7=i z1SJsz3gp8v-Ifu<9%7xqEd-fC!x<|~Z>9?cTY2Yn-R3H6@wt=?q1AoW?Rn+x`-H~s zFJ*|FbPmN1K3hX|;{jeKp~kIkZ57cQF&y>y(m@hm8BU20Fa5xJle9JoaL|~9>vWR; z)`s(UCV8s)$wYq@#ismm+ScQ_Hu!XYK7lt;uS1qv@`5OowUklmF+Mhl$Rp}N5|<78s-89Wo5gjYf@2^38a^V454 z@G9{3s2Rg55X~NS)fTfAtp0|N~Kd_OKdC)@TXNvrEzg&#t|K3qwSOu z$!f?<>Ny0wPVr(l7WkxN5qKeC6Wss;h;NuD33M>@P!M{7KA;DPpeE2y7&v*%Lp#Hr zQ`%58_@T@2|8FlJ%nL)}=!gw?xxoO3Fx!_Scy?kEj&3*IzpE@CW^Z3W1nM2h9&ZTc zjyQTrlBky++mV-HaCAG9j<>GuA!xFBq|Je!>Y2DkvZX*1))-wrvmM#xq5h9{aFs*m z9JCm}&pyKm#DrpTN^{sPH(45kR&4>Q#tSp&nzFu)suz>)$a*&QqYk>-Lu0&Y3=`9{ z1_EI@jzUUbTN)*Z&@M!m`FUB&RkYx|MW0SVNcpgyCNG-Z^qv36nOj)GPKGR<@6smmOg0J59ou6=AO?&RmJ|JCwe z{Hy#IzgPbM^V?r7M6ud(@TI4nacSk94E{=#%Vyh9k;p`jm5(vX}O1O^jZ(0YnZN@`=U=o?CZq5#EIs-_+2BTMc?U3~z2hHv>)3mdKxK@S757VmLv1 zAQ`f=gf^i7?u!-@nxp`}+Y)qj90CBEG1JY8lt2(_?66BgdjPNzvEjS}06pw213AJEKR_yktq%d47J9&x zx^5=yUpi_3EMpczOWRE!LSHBE!#*d3mnz;+`3%?Ij<XWjTF4kRj>hKH^Gsp zFdA4j;djHnYF8y@(wsKe1lP;BmR`%$dN2-{t3`ACxQF)7QrVRy0g5RMZE#>gy!gp0;q)!Xkb)vl0*~D6GW#5Z4((O z5nIT{5hDo0meo4=P%rf?G8@S+e*CZTi#Egi#;^3Z@lJm0-z@39WwOS@j0i1`H9fq{ z(S6+<=o80*!}1Pb-%nvznE?#fB;=t0#H9Ov=A9PQ@5IO#_{Ym`cr2|%qDK?)ViVir zdbNwM`Y-I<;0Z7fx)9S%ETd)0#C?awTBK=L?ZP>VoPEh3I=ij1vDp&r%fgHc>#Mu}TM*A!Gze_PN( zP-k&Qh%zFnX(xKP*o(G=R6iL$01Geiz2m#GSJdSv%Z)?^9Pf&PC)Jp4X0ZytTwJU^ zeR&nE+y4ql2x356xw|vG4O<3Xbf2(8MRb8YBV8LzX|)zaAV7uj4ohP1qq15`m=e(t zKr!AVHNwq&dFb(Df=F{xKeZs;qG~1^!rL9`mg8WegM5L7_^Vi)pQNv#zhCD?!*frz zfW0I34&_^2Un_)&k)TzvqE85do#As+b-8q7urb`2Sx6R2HygH1t2ue7O<7VCK$c!R za>KZd#!8vM!v1rs(ybz@HMWyUBpDEmRDc?c5V~V#p)oVFpp=lt!4%9k(z51|QXs%W zm7_I}fm&41911W?9A*7!5j9wEyz#F2iJxd%480ey)%o=~kD=zwDTLK^l?D-#Z#Zsi z>DkiV+F0sbYHk)6F$;AqxoEf!`<1qGHd(}gr)B8maj3a|Yp}U07?hRwrGKhysPd|I zLcZv#cp3gD%zfU)b(eD>1rk)Aso(q1cDxA~ppE|)8_Er-sjkF=bP!$(hs)RA>g&GM zN54AK{MBINJJiQ3HjdmkFhNBxhgQ^*O^w70c?I>THtELDJ@Mm^1KiI^3l#;h+OksZoJe6{KqPHR%NaaE&LIzLhymkVq@PSbSMZlav@o70Zz@ODnJ=gm4>S^Sr3*{ z{zw?c*Z6(8fe5%o?(b$R$!z{m&F0$__2Nadgo6vw=U{AtUO|y7E46xXHrU@IGluFR z(rGT;q%A2#W}j3=p14-T<$tS}@=ogIIi=iS--by=4F~gO2CsSRq6ugjW(4_S;?_TvQ^*mcd335Z32G91^QyY;yUg3R<|tWA)%V~3F%95 zJn%~03du>CRaNq!3ECBqR%d=!&*%5$u6t>cW2@F= zdry6Pr+&O2*?sC_q|UojUMu10_8x=8=R18WSq|Zgu*GOcHV^r4i>`Qe?=l=|(PuCc zNW^kU8X3y?*qsE*0Qb~vOC3WKsfKq0Nwc{2(5`5pf(lEF11|%Po2d zJLNn0o$>!5@EVBUU}&vsJ`l@AHUc+R*m-GO6HB3*fQgwN9}}U81xOEi(R#FyjR-L< zD^Nz+qnkyE$35f{6u4T@5bxm?z|ni9wc+d#4RY@&PGoOZEG;S<##Y8$oNNvw({z3r z-ovhV9bG8%%0q7JwUgP)SQd>eSlPx|WZb}PWbRW%1r!BVD55Bb^6mj+{?GzIJl34` zhS989tlclUv0zqA7&&AC@?emY5t4@$!EDKS*1QOTI26f5AdX==9%D=vtyjcjBS8tY zxnyD0%!ES7lDbuwEWW@Qs00Jy4D=9s1pct@Ik*KZ<5k%dySmT^k0ljy4S&t_H43t> z^80qXfr**1e1)a>Fpcvc<}b~Uxl4Wr%|M}pk&H6V=v8!AT}t{K2KSXcQH zg7?BN4K0_L+WKCk0;A^c?TQO8mH)SlOr z_LVKZC^)ge+DymNX2Ls*oI2oLcj6q@B6xkq%}xgEE6PP9G(RT zD_cPeSV2oljoT5v9MeC+@11`M9FMo2fBH<|xZ-$MB3@`c$ulU&x(ofVJC$=Nwmb1z64`Cex#z(TwKYDSqj>sQ>0gh( z@A7}1|DDhIM_iY$DD#eGHe4|6+El8Yj!nWgu-}XoZ6oYNysfYkyr&n1XhG0{=x}jB zfw)<`Z6Azd>qcBUe59KJA77|)yG=+6e{KevSb(P!|^$fuS`soafY`mK!e zp32ASJW@|m2-ZN6in5RfI=S+bWPln3kEut{Gq~w%TaEmQ?0exAl+{hQ2m$~W!YLvt zB{D2;_3vRth!ug-iDJl$%ZyMJ-VEGOmQpsDY4D^Ur+V4%qw7Tmyj4>Ky;s{*<{k$a zOK`N|VL&ER!%|zz&TG5AX+mP6dXi{hQ*w3IFX(5%3lJIrqYvKS{vPZjaX{Usk&K8U z$6)!*{Fhfn6AgqMj1*Lim{H%Ay? zs5T{+sx$pyOul+l<*KIGw$fUWN6oex5(Nv-ySI$~boe0qX_%N){S@SKtmqiRwI z>3kPJ2SZyH&FgcSv03c%ncAPHukVxlIr?&^PoRtgw?pW%V8PH5n1CY!sDquZK!CjP zVyjRCJZ!{21Uw8N747^GuqOcyVvrvH#PO?B2t)kEh49m@V*|*hLlWUq*6#>!InPeO z6n{3(^YQvF(v@~Y)>-x;Wm0_(w^Ae$%mN7kC%7u~;hnr;bIur>u{s0$fLstZ0Lehb z;)#3LoxZWtQ^u?cJ4e_kj%=KLjeg@QkJ3Nz9t**QO|N6L4(6@HB;x_*`Gi0sA! z-dBFDS$~;laxzL!!yewHhi^HxXvFfVY#5UB_CVu^`9BQVbwBVaIMh@+Qd+gI#D_oec*^6Og~hgekhm19&fI97qvA%1w- z05qYr7e3{U>z{GXNw^JpTKPaDgr0Kh*Vm2S$x;QZihI z)+oA3UN$?Dt!f9_k@iS)TpTcCG*XQr5lTcBOJyg6M~60(nOXH4*h}%U?PTL}aRmnb z`hf^(!RaPo^QFDpSZlrvIm_D3?pPa}n-S-Uu@J(#C4^jF!0SC(T9izuI0-N3ET`Eh z7#au_g)9XuSq14MGKS+=!Z8?S6x+(8vZqToWVlvjv;)b|{an9#A$86ADe5ASMXtx$ zLXD#KJyScslzhmjkVCa)!+LUI{LBzR=q~W ziE=x%PkYG6G(u<&`cu%-O0UZJy;HohnDlgaIdy^OI@z0b2i0jnTG$dwso^ITjUg48 zPzTy7x@l}He%{K@lzt+dEhjRfG^mQqi2lC>zg^|8`fFkVZF}L$O_N22&9WI{dM}#Q ze#yy@9V?o%b@)9G=}_+~rBX|rC^%=FH#{#}yKPru$fBXB$|Q}~Vkb#HWOEQmf!~69 zt+nWo0@Cc{vHB9MrBK`_3tOe$ZHj=lI!Fq{4Ky;@p&XONE8*Ix8cFZ@MKL(2H>XL~ zIaoRlkDrer!sLD&1U(GY3t(i|2qLHfY{7{EHIWX_R!}SlRsbvciRVWD1onW08wOWlVsv_XY4YuLC$%U} zrEA1KwC$U>eXEUTbC%*p#TLdaej<+sq{G-eFf0O)4j#Fc=Uk4Tu&?mnH8TY*L7S0z zZnx6LvYpi~laiPk5gXMPCqHz^6wZtxk9PHQyy%|ad(Cd=F_tlwkil5iQoEN16+ja~Up7j-(sC&Vw%J*x*X z+1=9Mq~e8#4h85$4Q;Jm2yn0C3j_Ya<4=Ea5%`OZ_$RH^c}k{+PcwcxD5=mEKIuxs zvXay_+jt8t7jngk*IvL+l*f~M_$L|7%w5_`THbm_}$pe}pi1OPi zOTtexFJEJFXl`({gz6u6V|}b_Uv*%NHm3(Ne@iNFTI> zq5*wc2%t%X7AkN{e773_Af@r23k+z^0?Ud`;wq99%`l#TIV;I28>2BPQYk}iQ(Qq+?G<%m)D?%2Hw-f-*VNRGn#6nN5>&>a;p}U5=*2f?$hiNiRa8 z)ssst`!JWAej=Y!`xVp4G$WIP5k(6ST71*wi4m^+DtdUb0f&Mv1;q*gI0(RDzzw^ua(sklmo3SjY7T|txDQsH3Pw>u)*g&#HJ8+*nw;ccgx@C(huNf2`bZH`w^Os2N9}E&#}_3 zE{|z|Xpgd~s;ax^>(piWefDlE7pZe>{{!LIc!AY5a8K8HT1_~FYEZ(#jk5w8jug@+ zl)5o9Mro%KYOKTv<3NoI273vRL>s9Y^)BAUyCB#(n=i=F7yy+`u!Rp5AqE%%m-5UI zkM@UPB{apc0|~rC0O-aG04u!^;9tEfz?2g)x^Xge<`}2Z70S$7Yi+QOBIiaD=`t)D z+Jw?;F&NxZ>Tp(BI_8Kh`12$Wr3ifDiO$%0Du4h3?mcWwwE{ zvuuiv$_wuv#q`18HWwAQ8Ab|X2DRxtsn)A41M7hptFNTP&Lu+;SX8H|o9=r^=gs5j zB)wZCEultY3K}B5nVX@NkacL0_vrf~3C;MhVphyXOI-6t-(qZ-&?IcE{<-u&NN<2; z{yA_&d{nuVQdF6LoW5=9hok<2CI&6Kyu1dXh=pM~rTWV9(~Bp|gYflyX$;DX>U=kF z(7gwD&|cXb81NEw)SKu&k%4CLPo)b`Vaf!d5O7|cHKCLe23-bfnG1ChufPUyfuNns z1xZBkGmD8Gllwb|U_E51XYsU&3v!OAa*apKKf-;5j)dNGMzrZEc=yu5nw(3~2Vk*I z)7m^%#iBn=PE1qb!Zb7%MruthsW)3VRgA*csx@u>+ByHar#wNBrf9SQgxNw^EH16Y zLL8(nYWrf(mIj_MY}RUV@)BzH66Ek==9ch4SwN-drEC_h$0u-8Mu^!4t@h-h-CzoP z(W06QLZC`3RaueHd1_sg_HM5Ftdm%8ym1F#dCE{Ds(#8(>0&Q!vJ2>QKK(VUG_EA4 z<5owji6Y_{)+O$i<^^Ycd7rB0n67b*5><&E*e3JOPU6e`kCtpQ;; zmnOOlItwq*6L1*eJgeG37gj*OXw%0B^Y6yjpkwHWv_uPmQ*4@=^=7qMYg&EEepL|O zG!6U07xN~MOjdJPmLdY{%p|R;8c}d0Hzm`EDHc;((g*U%=OM(Oqd}D;xmnbvyX1F} za1o_Onu)BA#KgM)i#I|`{ZBqt=b2We8x>tYyddmL(=$k*%89xC9>L{57 zO~Hy1%Ym>@I3_D_%uQK2Vm;#XRPR+fPL$P$g2@AsPzptfN$tTq8=-bumY1>VHhUN`s2^J2) z2h($IT)-HP1>q@60Usi$H1RdzM;$P&y93g_O&RCsp<^&>wm!DpL(PO(X~KBKpeI+% zuoZJOvI7m=2aUNq-M9Ca_gNoFyi>C|7!fSRXpDpq1h7qEtOC97zzBJ6z5+fMEwv*U z0R`9y48E4j1hI@ja!7$tEFyv=k%UpBsB(Vw;S;2lI0&MQh4jTf41p8(0^#6ONlfR1 z^fEh@6UWUicg*GKE5zDfkfa=HdtLJ8mE@TFRiLpY(+)CdN)BIYLa|!y1)VDFwcJTE zmeH=zGnrcg31+XMd4@Kk;WQ3YPxFtwbkGZlkQGRg2$uS$fPhL|{jmf+Zf*ThPU^hi z5Z-}XOKPc3h!d3#iiy&rlDAkL6l=r5ZjG}kt+w8nhVzT^ac+8ZKxyEbhC_=7i_8n~ z2G5R4N0lYhF~_q>i!p`ZSO~=mDxwU{-*DEEM%J4%j+QMi+HO}MShToq7A-GT^Pj#* zkAQ|C*trIdB1m4!%#?GQ9-qc&(N6nnHIXxy(-ssdFXaeeE3Lty6ze4ym=2_b%}e7;#oG2 z*k&xdv~c@!7NXNt_JMMdsa0YHW+K!E7;#h!JA(@#AQlFv3`sR0slEl<-EcUtFfLiN zd6U4TN#uMMR`y%{50$^ro8UF|1Ncew+4#)mgXYeA$w+n*->8BZ_VXW2W+I$=apvF7fDXx|UPrk{`<($6Gh-X{t18 z+K84FZ7W*8nh_QW>py0NWnmG++-gEE1fmCz7o}e%f33_HT;KY!;d|GXvBhFdd3EVi zEaPe;!b4g?qN2)(RW)omS1Zti^S~UW^N2Lpxt0^*J=HUHj!fEqP)W+KcMhoYWgGKX z%w!O&L6V7Q|FhxR|K5*IRNqH=Cl+I|i;vt5F+cFUBcD5kJAJ+*UrWjt?@k ziNc)t;P$WY>yiS7PqOE{RNfx5g~HT^=nvsQ%;khFt7(B37~plk)j|tMqp;jDH-Ia` zH3Fhit`b%Sl#<)GhRBS(giv7Kt5TY4s!!xG~AgLwE!()u482xn7)cyb6 z|F3(t6(v(m;l85Ky5eeu8R4-iJ}KvsI{z+UpiSg)u+QakO$Q<|r`}av*R3CiQg6Zv z>%s1k=t|1ePz z$zW9*ZYs3&JE@Qb{g)+~4*`h9gNKNxsLCi56Z=j%YcBY-?~X&rt{`;^DuN<)N6*2< z#p}Y46(NF3KpVAJX3#tIE*CCEu*&8zKr{htLci` zD0tfx)z6GLG-wacX;06~>N$PoWRLrXp^LT*%i=g1;RmKTR>a4xKurg1Mb%nC`xr+w zp#U<#gW;=5v_r@dL^?!BkOT;Hh+lj|Q=rc-oJ;`@KVorc!w?&*KYj8;bv%pfv>>-z z`SkEwxs|TLJE}e@Oo}6ps3MdG1+nI)(=p%N^qHW6gbuBa*(S_QjJpeR!rCxYk`LYP zp*F)5GKyOte$NP+*i%>OJ@3jRYmH&X(cUY0Xg@;!CD=9ZaA@;J#wi*y3>T{Fo-=ih zWLP(moL+dc%!dpI&8A!p6N;*Di7E50ibcX~;e^O8@{VC{@fanRv-Ibab5gu(@oXJl zTjyFd&O?EQ$ED}V(9+kq_h|ci^fE6m=@h^2*1>a>SS3d7lpY@j_@OmIDyDz69ft%^ z0VGh{ade<9u!o=0PIK5(CUGd(9Dql4e!5|PIOiSK$!9sOwdsxQ~x4RCwi*_886yL;yJ27jC0c4Kg)UYtR7+Rz@8S z_F((G9DU^UvkcMp2up)wHt%XMT@Nre?X5*F;mn@-e>+_1?aG<$3-AdMT@(_z;6BynsU`@N#BV~KJc(uU z|8rtfqZvY%Xqf7P)K(%L)R9S3%vFLrPNA&t$~8>qwDKZ&ti{WMYc-u1)AEdH#4_R& z54C)^<>V|8Zr%x?PCw9#SdBiQ7dQo;s0-Y-B3x&0fR-Sv1eOCWC{Dm6ez!yUm{(6>@eO_F{xO<5C{S9ZH8CrF;?YR`@#WX zJW30~@u#A`i1ktCF3bd5=e4m;8E=@8J}oGb6w}OhkKEat zU(eL`mK!VJOCSlMkFd#@Z6p>ThH`->86+m+WGOpc>gzJ>a1U+jGz5?wa&CesBH=Ac z7!(RXk|n=w$DYCAi$)pbkzo})hy?S7Q=1V{ve8bS+4f-Bv#y^4J;X`;SQ&SXBB^BG z=;~~m+R2*V)N`5eO0*)V>SqluOI6=4YLrtg2E8mrcGpA>8NV2*c$fH%nnTO@#s3(Q z*&e=_=;w>~2*W_duX;Xv@+Z~gGn;pwa4;}%_A6Ws~5O;+1#qY`B^*{onvOkyso zd>XX$PJ(YPcBdG#F7Z#t0dOZlgI)koK(D`{lY*L3EM0>zJ+LCM8(8!;5OJ2rMr!@@ z5CfeUY+E1|7v31=*3(>>Zr7xZDXEKcR8##^QlQg{&p>zja zTxyfbczFA!i)Kn9l;3so?vo1z#ALbc=qsDq_E=kxhXadOQR+0XH9qC;`8v1H574`) z6{|J+g2w;D=NS0x;#<|>C3=n6V!Gge80$iAWFa+*q_DrOrME1k5(}1D-`cp1O)mBa zv-x1&jM}1!7DQk_F$f80@*$^9S3JWCq+70OuY= zbmJIuN}Q8s#7w*a*EQYEV6*j&MJmN&PN7Uju4RF>#&c*;f?6xDmm2zIa@k)lU(S_K zg&&f1za26_ZjWmUHDrd%X_xY*$evmKh zBm>-;Tm5=oz7obQjrcf>kQKD#-`=4+N7|-RM%$2D?@@0{`UDv|4n0nqqP3LD9FT#6 zJ6KOILQaHItl9lMT^zy}4uvhiLP+qp24q8Ii)Kg7=E%m-22V?*X*o2O7;ezb4R*~t z*1m!M9{6Pt43s>;w(7KT&93#c*Q5xF2<5Rig`oF*)^npY&6*abz(}p7wIa#5HPUKX z-|SdbTQi%DRIIt|;v48qF`-i0MX$H8iB83{o|GpcLuJj|Tl!#sXnH%LTH2x)yRv=x zp7bJmDeYU_My=3DgFnB6(ASQ}QX9G>b(Xr44+QWL_!IC#Br43JIomi*(_ygFDCuss zT4u9HFLdy$(GU%KaD+I4DoUy1?AD9#T}0P64!*enYj^yn`wXpq^8fRk&N-if{uo$r zDrM6}c+HSZq04*FzU%w{{>fshm{+88EZ1#GEZQvFplltKX&rJVqMh4nja;vwCXdR3 z%Kz6t7AvZihL_2D!`1Y>OY3se{vlise)ITm`O$Yidg~*7e7i1KJ?;;`d_@ygVH@Jc z*Wq4^+7<)LQ!224@$1Yg*8x6QWmd?mIBL5jtxC_omP5>7fO{Y11)!m(J!v{MFNWbmZ!LUVZiA=WY1x?VtPhC*Ooem0PnVIpo{~D|SjKiX|k9 zg=&qY)<75=LrB_0kj1#N)|I8Q2r*aQO@AZ*kf%e?dnGGSKJeg3+Lxw%(G9fGN2hD@ zVtE0^7BM)0R@4X__?K3O2H=!GKP{n1z2qNYiLRQ$9a za)l9wDsf%g((ldPFZz1p|1Z(McI7K!MeV`g&;R_X?$jKjN7IUAdQ@-JN@%(;-5d?`TdSIKXv`{aUyPhn;*|_ z_sT!$+=aLA+1vW@t-qvi>J;@0{zaL-4<+(3!A#{ARJp_~I2&Ux5n5#RNWW8^N`aS^ z^0d$J2&OnWoV(}XcFf*oUyTwd45&@a@P;9EeJ@dAtls9>SK0~iGPc5BhGWAX_*#gG zlnXZ1fnKuBz(%65d9$mow04G3A?ZXSbY2?+!XiGSPgX=>poYSdRwb3%gz9<@PcUF$ zq@zR`Gh?g_Q$h|olwj7FWgB!tdOgt?ML9$Dsn-p!j%b$i-bLUomM_jkusEGgb5bA^ zVX39_YS|q$K^J}|{5fb|iMm2lfn_{R43XS8Fok&<6C#FSBDnUo6r4*pY%XQe>hO(xL))Rf`2tfl|(|B#>qOdUY;i=MGg{ z)~s2pR<9-uZRZKt_RgK*in%oeQ_sG1@pTX}k}_Xc%ddr4(bbu)8b3>i*6B z>o2KO6;}rq;bU<-rCVX$vNptqqUSnAdq;YoKbU4sd%Ye8bn=GNHom*R67}w6=tk?s zo{gc+DvPM4%DjPiHG~}s=DZAXW7ZiZlyv~-tUdejsOvRmp;!|#5v+;p6FYigOP~VX ziG2Ft`#IfXtupd-zX~b9}s*W^YAV|}z zCYOvT9+*5N)W(q)(yGMW3uYe5FV7RtOhV{|W1) zlE^SBi?@%wH$?t37}a{EXZ1|)9AKPKcSfM+v*a5!~?-;N;jTYAIwbkGKPMs;J*=dK)gC8nTvz30X z^l#?hr~Lc;Z}jT_k$wM;ZC`v#!`+R$w#l_g)g)S&*reJ<-A1c_DU@t0UcXvqwO5D} zs3HQXxFh`~%0Fq#FI9N$!xEpSE0Z7f<5vf@0WMRBa>xDd6U=i~vFvc}&xXuD7vR~c_<1Ss zQ^&gWmur{u#K*nm`S}^F`H4BJMn|%q+TZyOE5Tn!cu15IiCH65oY@qPIw$Y@TSbcx z-z9sLFTu##(ejT0XN`o_dCOIvLOPnZ0u1$T7(gn*LcmffsssvnL{TE%=9AhYNvmx$ zX$`dCG5#@6pIJAv3ZdsxuI3B_TZBE9X+SonmXMug=S}e`;=}-9n5d#P=nL|>j4*&8 z!PeeqwZG-^-ldlyBRD*4B!L)&xOqz?m2sP0uEqI64tA)yRTWV{SU)2YMY`?3d<@RRhx1* zq!@CC6@UUl#^Ei)ckH=h&XQ|N9RAhJsq7h-?8t(}GMZ(hF5|LUBaRU?ODOWQAUe)A zPwdRbjmPUzVC868uA5WaSP%DHu=-pBqbWc@IjSFS5>kNL$#=Q9Kj>Yy1pWMaz{x;5 z|83v(u>$~rhJZ=fA<$JEVfU&d&7AJ9e`m@4=}>+e`3c8_(QF|0rd3z0I&x@)fqjA0aTn7@oz045{uZx_Tn}NwcbSXyZ&LrIk>$q(3%^g zt!62ssfJ}bDPQ;7U~=56<~$U9`Ak34O+@%nhxqaZ6XLjS0lEQn5~u?-RP2+UaW$b7 zsLx<}i1P6p+CX&99lS(**nd93(ACFBV^~ zicoLym%ye?$0lR98UIlB$$Za>F`Knl>iyRFw&Pm^S^2*#k<)n)H8h`$5tO97d%rDj z`eoCuqI;W5i-BD5p#&0`_-BFxGTD$$gyob?nJq<$RfrdtZ#81^kYz$Iz!>JEwmg0F z(29Z$2p1TR(jmo>RxU;-AI`l0Bu?jgp6lpZ&N{qS!eU`XpI1q`>UN z7z!dIM5G9Ml-;WXbTHc4ICA; zQ#k#T$$oV>Pa%KA*t&n3wnghaao`@SYjNkhAw^E3g2RKljXJZ=tJ`&K&4Z?obn>P) zOOT?HYX)C4!cIj^J|h-_sBzYAd1#jpcVi4+)XUto*%!EilAs6}V#Qqhm-<|#$+P&Tipc&v4L-?D1{6A}JWIE&J(#X|G7NgQ$LwAz)P)qe#*}}4BlaiBU zjGcDJ4I^2yS;`ia6clj|deULA(@lm!)Vz~$OTwlm&$4HXhCnon3uo=Mr_UKQJL&AJ?0mab-`2ED zHBHeVTa*u1$8Uoze?Q<4vHre^%~%G)!d+G(^#BtX9!5W~2IwI2Q_K&R0ha;cU_=Fi z(v+yXRwD2yUlJZFkh2m}qVq8w3Jk(d;8Fl?`ukT%XCAfAj zbmq%C7lzu5w2@U|F|b}K$UdYlqF4|wB6o=pIJKK-4nr*G4=OGp@>0QBl)P1Q6ny|N zfF}=Q^Uj?oYyv9&rjp-P5uHom0;!*15D%vf=RW;V^g%Ibxsr4l(&cKBM?y%1YYXDN z9HGvpgrY(86mb>YG=L&S#his~&QxOTR&=)|-^t3h8jHz?R0(k{NJdCjU0wAhfaOKT z*BM&i+9LSA4`Obu{D z=8}RJPTD!J>5NUMF3#9pMa&;AvBlvLE~m|esJ5_Camuq5xcUREi69)nFls2)0Kj{c z_!2s&cE&Ej$MnE8>dRJOxCRklFrU=q+~;RG0jo%n_%|-a--8?B*MArL0sUTY8R1Ua z?yaqZ3aIPO%EF2FkxPuGB|gzgkNC@5P6{t2&7kRyUm1&QMXui@peR!02+YM>&f+y^ zapMe`MCoNuU+!~RG~8e7ROKm}Q)m5W^@@EqU~zac#L<1gp?$$0S8>{S<9gLGd}VVrd4tB+w4UBMi3#1vv zn3=YlzIq`p>081~-ri}CkrC^Udc@;xGg2*|ah=Pq(Kq!ij@|<@`9IeAEiU`mO=};? z2)FD>#+|%y@Vdh6X{g6NdZzAfY9->R8a(_Ji4>4oj!G$>CJ)vW8xTB8hkd=eYv>WFM*rA+RDT%Ze}n*%$W%N zNsKYtiddlU7&B`Su>l2l{vrzUqDtY0>>1w0C&!>UGx* zFGu@!6c7q|L}BNyCmcj^aU7UJAskCG@w!F+<_!F!!w*OH_aPfBB1OW~TSS8|2iK{y zLvd)Wl^LTpOWAr3Vpa$kUE8hjdE!;TO2DVVyFt>D(jx4b(jxAVIv}w~!I**;2pj8| zEAyIn&)3sOSW!#1%krretuO8V(A7W0xH?fNLTyYt)Q)PbeD5{!=rw77x|rQy7x>l!-(9=o&AaEv zo-!;E^=~~PcnW7F7P@z>5F3AyWL<}ICpQsSDis=wttMrWX{s0zVMH=Vsu3KBEn^+P z(5(jNw`%LJ+}fhGx}y?!2mO6;;xoxrh~?{xjxEwl!;8hmdUE-rbRXSrWZy%3KYmB8 z^S7ZduRHTa?tVL}m$C?@wXmf6yq89rdwQAY(c3=0?<3mbdGXO(z4}$_rB?i{Lp`Tf zhJ#d+u0v9>J4hwDL1c9_ELZl*Z+&=wJox;`P3b#qr^_NLs^JD<;gl39uZ1HZLpatq z1%=gC<=XmiRFTR7Eh`u+$g1~7-AB*3$vlX^bnf_=_~)}Fic>itvZqDh%_AKU#OL$)Q*TLqJ0L|wl<6{FxwX9q18=+yol~e{s8%p;_pTa zb>1_MR@Ka!R#!@`ZtDxHZTVTSQWij~pl~9Va()QR zRoOZbgCk1wNo4k%!mlX9kz2Q>d6zbNaE)9ns=42fg?|-y&Vl1OGR-8(9nc0zZ1E=d zCZR1fsTx!k?LZA;hSH!k5vn8^b*1w?un`^W{!X{mo4IeIUyc6e;@`da`6O$oKO^l% zw~YUBLKL{b8=rlC069) z2_3RrQ+8~3;{HAScC1~P0lx_*dQ?FWRXTu1pa3qL4xS$`j*+0KY+01#X-P&{LO=qE z^4wM168mwyTjwc_o+dfG2fhZ!j?-<~%ee_8gH7FA*rDs-`(df@0-}ThqTyS*MPsD) z2^0x0rvlg8P;{%LNQ}w#nbCxjN{_v1%PE*C-x>xhJam*e@m`jDdlHO`EKwyIv#Bke zpe3P~e| zEFuB2n`-mWzNr-8+mwuZ+emZCq9r5k7J*0+X;o`4(Nf1oX-y^T5}~(4k8vm* z2k7=#@s)x~v7);*q2v<3 zJ%L5e@x?<1ENT$IX@)_PJbcOskzrd6GqE$bd8)a`Fa?$bYLgOfykiMKl9fHlAMw@X ztMSwLwcNqF%UgZr<>$Tb3@lN1kG$pC`^P?~-uS86qng#ZSA&-#e`w^T=w+Uidq^X< zj#y7k9(X`8o?eeE&-2E-7dao4iz?^w;Izc~4APHZGs72N7yh{a>d&8-vUa%`ukLv0 z_v6p=DW`89`KdIiJ2TbpBWY96UCWOngg8<(=0aR@>mhTZ_h9SjCFZYBRZj7)@CRUE zh8nlPIC1p!3kwI&paSkR|BCW;73C7RiRiVX|GD75@Bht~RwgPYsw`Bs$TOaF^>}%u z$LI7TA8q64RL;9wIUA?*(!8&2@QWJFSI6#tz5TiT|1AGg{zw1MN%6l1xm@8gmt3>( zu1$??3X8I~)mlbbUkhn3E80f2QF>WePQ3O$UILC>P!+vR^vfFY$_B#6-Ew&O%(Z1O zX6M$f5ypM2}9w;0?a+`1A*FV^`;cWUHV?<+l6J=T#OU^+EELw>Cc zULc+3!yV-3!|hL|lw6Cp^<-hPbyRh>;I|0(%KDVgmVZz6aIU(Fq&7ga zyc?7OTA2ek&1VClIv9lH*?-r&`}}z!C9g%&mUgr0I-g^wJBQ#p#{fOs_!Bk^0?P0j zmKnizLtRo#3>ir5(h%;P8e+**jq@;bE-3J02JnFz@mAu5rz#r05@vOm`4!jDhMkTqg;5vA(E zPc533|M*;dZIQx>BLF8EvQ3b%XZ?EVJh1A);n}$2xdx!S0!M*Ugbl#@<9Mvc&`P4N zQ|y+{%xm~*^!dplJWE5GqBlZQN`umn$P42ZfkxBLhl;f;B+pu*mXEW%Lkt7_!-=aln2lq50Dkuwy1beK+(F=| z4X^}M!Eap%e{@;}ZU34Adc=i6|0%7F9ct&2L5}DF8xVw12N{75L9cSq2+|y3_lEYL z-1Op|{@ogXb;xhs)9Symckp>W16r6Z=%W# z>Kt>^NWduETA4%>UU;+)RdO13+3w_qCyj?TPv9NKfD(a(&E|+XqDoW=S_ma&%TAdM zn2A+w!?NU|x1IU1^Y_O;PrBof;<3)lXjO5G*l`n4bYY9~(*0Nb|HS#)^QImpa<{>T6!=IDm?uO|~)JQXeJ_MRB6f>8X?S zmwev1R3jWas@4SQadA9-;qJ`+;@=P4TK@FliSbJnUk6@o8=ySKqQf5PpojgnmUB(| z^Ha@tah_}I(?ab@XQrchlEo>&>&J!K*x71saV~Nl$#Shyt*Gz%cX3y`jYtRgVd;CJ z(bSklL0k|oh3_eSO}Pu1f~?Fr-|mwydvKvAU>Fx0R_|nJo6$BRcvh&+J0nx+)q*YN ztLp4JM*zn-UoT4k7Z4A3pZHJ96qjrCp)$Q`t(v9S~S`d){5rc-XVM;)} zGV)HCwsuu6ca^-OWn6-t2%jwQg`In@u-bJfpjzM4MY(s zf^ZS`_5j@>0K)<4#Ix>F@S}+@fe0v|SOILrZ;mfm8X;|f+Yj$gy8%D+cxVq&&XW=f z{=T1(FZ;oY7MGR|Y#(a->EMbmXU026@s%@PD2N0E z&y#S=@=ivr8ki|(oHU*%>JwZ*x)2f`g-nfeb6gioOq-xF*irT-_jV|2QC_4Z6eX%%Pl51n;;aMG^B>@7PlO;ySMDs@b zI|*M2iZ=xoF~5NNA9dDN9~iA{&MTYxN}Vt3T1KleG*Be2HETasNkL)*Y@1A-L5&u= zv%>{w;sA!v8pad?bPMjEAG$O@+d$g2;g2kcFoKo9$py3vd{_iwNR3WOdMJPwfq}CI z0JsfS12_mc3|J2I0q8WlVhTKElw-nSvl$Nz3QRKMDB0Sw*@Z5;Y~HDH=txWoF+wzz zY>cooc%wuT5yB**!hNF+$G|8Gsbbjy5Q@lFmRv-8JNJH54HH_%rh%; z406Ir12_;O{In3O67V#DJ`k?I2Q01UVOdZ^IKmMCGh)Ov1#V$9tSwA%DhX#XOy&^I zTnX_(Z&thj>Ue^pfU3hdb0ykexnUbE3NP^B7Xa|Jnhe>iH`z<|wIJs`z4>7W#Mt|G-7 zwUJsy_<3GDqF*_}_B)w1s5ep&U+cWbGqW!_yt+0h6diFMV075TaOg?}+VM7aT)vQ1 za!syYF1SQN#am|mr#$j&56LuoE!XQVKe)3qZOk@IGmdA?&iLJ^s;Z9VbLt{|!d`eR zg}3YT<9NQN^h>xva||)gRa@2P%f(IB*1b{%Ylzf{vaOVnCTs@fOBs$8TkV^3O&Tw0 zR?9NIc$eY5Y3NSH@i_p_+*g|Nh^0oD~R|6U%kr^^K5 z|Cj$O@xSqZ62H&Ctq)xvpp_YNO~>ldJrT%(=$V@7M@^SdvjsZq&RAt5@34rFOc+__ zVcw=Lt1Ek0`=FX(5zbSZHZ}_wQ>H4HO-rD8pIcf5?f~i~pS@dIbn9W7PFsuO zDdHA&ih3K%@E#M+Eb%0QEy&io-H}a}MUzFr{(m586d4_prH#iFZ4=Ya&=O&>>6{Y5 zFe|$XG-*cA7?=vEn(l%>M*SZq4)yU`e@*%NhLiQI9}C601fsS`Rd%NzQ|h#`=p(x;Q(PsL%lhA zXKsM=0dpc2LSK>?F*d<+D5LFCW}!g>ay<^-36&Yt*l0IOZ(y#NvN_Y7=$K>?hehN( zaL-;={=d4paR)DDYkZn-R~x;C{=ViB2|-Y6g}ip-CN4cz=fj3SboKi{L<&q`3;T+! zVy&E3zJvlW5mJqkAfO~ejIhM4Uai(A4|TJX^UGHMUgDoneS340|5<$9CfkKobW}Pl zXNyf?wpjCoCNyiBn#Y!(+Ih0nTdsub#AAiylR~lQ1w046DBNAV6O*WIAc7o1!$CAy zT#H;`!27AUSKbbsN-x!clsauHS&IXSK-WK=;PgcJBej4HvxEzVMjhNKnaZ7RRNH8i4$>zuTAY!!& zhQw4FHR3taE1Ip{-tJ}&VCdYswbpO0zi|Cli!n9gyWr0achms+D)d^in$$Ou_Jc~~ zR_C8rBdc%1+85%U&uV$F_2ciqKjJs6 zLfJU7?!`Un)34U|YA>F`Ei?5ik>;$5GXJ#mbOC43MacR7`ERd3AyRlM5&>$p0Ia%2 z>mjiy>2TL-iX8Zw(hA7!Uter2cDz66h`1L5LllH85*|Qw<>t=YY4Ou{GPV!wKb6Jp zXUl($%jFlFb8Ffd(y=_x+v#p8M@-qASfPF^fD5mjnJilh)qhCtCMlozP&A&AyM zOBgWA0x9v(`I}w{9`v2$ze&H(8|cxYxqbKeVynfzBy7v3)F&b!9(fKKgU$yC`dE+! zNmPKKW9*Zch;E38kjLi9z!3$1*{6+^hs3)u(7j?0)H|%#0otQ&re?DyLlwh&-|sN*Z1j&(11r$hv6lwM(*Ch!8?B6KqSR6AWMhgmL3uUQBJXvEA6QjY= zL_BI4F#$&(P4o~uk<03x3)XWsvG;4whaITV0Kh$Ndr~z~p_xgZO zL5>1W;X+`FfI$JCk#PtDj3?xPj0VR{8^Pp>L=3Z+J6HyqQI7`q$rMI;c_?mWbe-bY z!Sf{K8%V~dkhGK&mG&EZ%9RhL6jSIzXgFJQs}nk?vJBN*Q>8!NrLwgOs7=H;5ip@U zw}vZp=ax$FK=v}Y3Np3<6LOQ5pb5uQvTR4<)WRZix6RW>wd2}6#{)0L_fz*;_)h(? zWjRrOgtQ~t0llN~7GXh2>|CmsVv+^vu+uI@YQ7V`i%4Z~-qF#zlLretn{kIq!VcnQ zgp26!DBM$gQ-L{qlj+=1Kon7nz+-JbIOp_ph{k$@xrAbtEQcoAVTUTc@A?{VWKG!hb`QRG^>w0y2m7jz5g`_9N7qWM)0B#GB39`mNECR(oWYS&Ou6 z+6HRLlDpJWk`YQBeinA1uSfj4pl{?x3Bg7bBxaR4vj9VZJA59~YcMOZ1bI0bC*O1n zFJReuaH1t+rBPDPP(*fyeVR~GSV$^n7po5{88j0&s?EWY;k;ockpe)IEe<(PLQ%Qo zhGK@<=u9f_-u@R+x+ya)Vw=eS7#S^+PvqEP0~vDVkd=l#1s?@P&eeR;sgHr_tA zO}1O-mgl^?$MfBLZ@<-{iU>W{nS+taC3{I}@|yZubw%aWZAWiT{eto3;PeEi#_ub8 ziUPI!xq~Bx_{6m>RK#NOk5zoDYF#Rt$i^Q0`-1=8|5J|>EG7IHrNd>(@Xj>kWs`>^ zM|h39{LiL)+n}DmY9e&z1f=`u8dSD*p>!{NI%3_zZ2kkABO8`;V02TOQnhs`Y6nES|Z;=dT|) z?~T1Jkwi|Xl%bzM9I#lvmA;0C+JBxbIJQ1nm?%oU(x&YtO>e| z%E~uk86b$Ofg-}f@{zWd$f}}>csCNO6M`UA(aLF2OVceWF6YO{vW`dW(IP%Ho+q4I zZJcXZc4x>u-7>N{$(&szE`vo_#)^0rP!8$@6-NqMFxcO6xlS_Gi*-`uE(X1ty+BDR z+S*jfY3Y>M1u>x25?YWh+(jFiOgqScREW4Mp?Gl3=1rUH^&ov!>-p-n1A1n3z3yt9 zHd2b0)uZ;~p=&Siz%nhlDKVdtMvF{T8O^$n_m%OVk4e?qtMIb@Ix}xSq@uKX`p3uh zYc2n#fBgH}<8%A*iI1~e|7Jz*WqMP-Wd*er3J;X??I5jKBoV6Oj;)}=()}Ls!LeCk zkx(v3BLOjSYCr<0P;|YHxVdO{iOGc~5HiBrZk3wp$JTimD-COp&B+zA5?F~>v;us@ z8eqc_Ps9X0IRTf$I0?H>ewg1`*T3Id=LcolCbdzu(KMB8RJCY3q|mpXVP`_4?w3?X z*f8>zv)?#l9ug)%n2;y-N@N?A6RFFLikVW>Lq%rgk0Dg4I0_FESZzSnXeGVHG$t;tDRP1-)DdhQ8qhh+bS#_hNWk@)&OV?KmoY` zqPsln$!127)-tD^e(Chv7jSvC8u4N1D*YE8w}o02k`yK1)~Y{cRvlP-Qr4j6;liL* zv~Qs?LwwRGp|!^;frjWV@U8*@W(Dq4&{c8Q8DBW_mpqE5`gh@}SL+*Zb9e)L1m&i6 zM|=Q_>V3bBNxaI4(@40W%v}tVM6>%P(+Q{RMLT5EwalT7r#2giIpiXS0VQxlqQXYl z3{VBq6x2!ZmI1$i88XaTW*y(%IJZ2l`!iF;ms(GRHvZb>0@+Fas#EyU6Q?X;bTotd zNi6F){et^){UMDKMyLx`6{7)O?%)wstnFmx3#4=l!Z%%iZ)EX+E@y2@oB%b!U)yraY zFk)%Q$AdDIK(ZmbL0hx!@}|XhSqsqyQA=@R1-?*4W`djFJT4?#9o$@i$-e z*ScVmH3Dm80zu@0m5)t7Zhvi=^Kl%x;_eIc<{YVj`rTJ;Il%)th>p@`F$^PXycG?T z@ymBuhWXY^|saqDBDH|=ZuH= zMa54){^cb*ey3VVYrHLqHGE0YNRm%U)0>jQOWeAna|LmeNt8+z!)rZyVH?w?-V@0c z_np!Ma~^85V+Edq1+=DgUoB>j=PFu~S1gZ^Um5)!SJpCc##A+Xl(j!OzDMkNXcK;`@>wm3WZ}M_V17u3QtufH6d(F9~@V9OlpOLm^0;^iW{!&KI#WLI!YvE(cg507ZY}y5|OABL_`kQJX|!>n@}&MT2e*RHqvh{wlTUx zayjTb*Ac-1y$_aRPB}y%1{E=j)mr-t!Bn-bIR!W};z+0NTNVpUjp|s-#>Ik^#+)6? zv@gvf_XrZj)D?3o3j76GEs4m*MrL}mRJ9V@iQn|)Rh*ji+}izoR`LUspbe+=0KgP7 zWErq|C2$ZwSjkTyV2q(6df?jtz{yh`7;ygiQ@0tAAuu4tO9A-F(OL%?0EDO|(Cp6P&s%vW8#-!Cc-xt8u^);{zFMw_^36X|)HA{mb z5LgTlggBPhPlXU%L)l;IgHf}Q{ZQ&0<01#7_jStm)vIcY|bn03hA z&)`Uz#z;+0qljU#8SjlS#y?phu;G@@wJCkp@*e2<-}XP%|8M`>{rCER`y*cvE`Vku zaxzi_O5bvuzb*{4tIQ+@6C}t`00434Elh9*Vh#z=oQ(1v%{IM34s;%gf}F+G7T_%7 zDfXuK_DQm!B=3gGqtxi9V zYpu2R>jbRc(ej1Lukrphc+PNaY^G&#|2JIQOshnxDHx*GH=V33E41A9!^m>7$P8<> zv-tKTk3-(i1%Hrn)W53y{eoX_a#A6;FI&kzm3e9lupIM3t*Jqbm;k3X&uaDhBtB=6 zuRuqc1d2olsGuBy7K2DE9TjW2ta-1Eu5)9Os#mc2Q;G{mB-`wLyOBqv4XG4opd*7( zel1!yv@{I4*ebxq9l#i$K_#eyDLmw(gCwE^Cu+Ku^YeOD13GK=wf`kH>1)5_Zzf${VT%)#FdQx^&*4( znd^^i9S0kF2fiJ&WpqE)9JP2)^2Zl^NlE58HIQBl*P<)SUtD?-T?<|D{T+Gd(EHSH zG{IMtC%WMvVaKAGS;@VsvPMS+Ys8jxaSkymjg)1f%W)&~WN2%(Y*MdDUwBrw2jd5) z`+V;B>$QzfXe=%GLw3houaNKI*j_rn!q1og8riULF?%n_w+x9}q1^6NXZ9N7`VQwE z4w%ngtfL}J#eQWzo@CT|8VmS+vJluh;KDXq?oks3!ipO4r;+z%H8RUj+DS4Jo@hjm`L z&p~&@YjM=>nCq?`H-p0;Tg``3<(1^I7hIoIbzkZ*^tLHFRj+w42Yi)m8{f z@W}S2G*=%1e+~V8>>$3-iFm&0DDM15Y`J!6^11-jAR<==tD;aP++9kEpmAkP{!y4y z*rlOivZ$UBYbK%|FcBrZEc2o%^hVPvT1tAa^a5U+P<8EH=S%qGq@Uu6bRZ0^3CoI@ z^@5po`KNHJ$`SaaXM_k0(BliJ%R5Xgq?9?i>U=ehOq4`4KvN;7fR$>P>oL1a-7W zI7$Ir8@=3Le%hSVdb`T56sMnkZqH#o!r0pJP2v{zM%2o?bUtQt6B}QrArW|nYXrOf zM=7=?KQ+JP`l(-C4iS?{3TRPW<%!hZRqi z#xJj(xoHR(Vj&hMU1vt-6+96xlA@O$y>{^JF@8Owp6b2D4@JXwfj~rg;!T%s0$Q3| z8e2@|i)JAMbj;GeH`P_Hy;PZQYj*LG>1O!{m@%jG`dOCf?aShaYOg>=R0Eamy}9c5 zVxRMm&HyhstcIN_KrKk7O&I0CW)9z!XW5h@y%NC@jI#lroI14O*`SIE*a@(_dt=8m z=H<=#)SOu9>eFfrWgS^j0UH5 zg^ND%fgj^BlH7ajdtarox8htTzZ5{Hh1`?Pc-W&_T4d6$`Rkx~_pQ#&q|!tlczySu z@vxNa#Tp=3P(e7|%NR27=0HZWS?O8L&`q8hb*O{Z-c|=J&Awb+dg=OU*Mnr2Ycs_4|@Dd&Xo#RoD4r0vKz!Z6)u;E6lbYH85SVP zXQCyV0kXWxwvr-P%=%(3j7`c`tXQ-34$WlZbhRtrrK@S*$0gC28UOeNBA!rJXzRN5 zVk!ZG*9Y@%vnMK%3K&$tVw22L)3cvh6C*KVD8)+YfR!D)V6?rQLk?ZH-A&JV&7SRPC5;r zI``wa=?5I?PHuCmI+bGk{Bv!-SM$BfF1**T{qu^=NcAtCACVqlcYIAnPG)M3pnX6; z$!|UL;w7K?)$G$!I)C5LoFD&t{?ERz|KtAsU#_q51!}^_VM1azPg{S<C3aA|=7*OUKy&MGIilN~tn3DRB=UWwU*{;)-2fLk@vJjsm;hbJ1 zu&^h7RliMSdEmqOlZh=Q&1ye99=^jm4SkEFU~5GYrzi!fW}_++vz;b@IId`6A)$Z? zbU`;+S8mF_e?MjgmbJsRHQ~&XVq=x96K}_?I(0@RCpFHRsq40^^OJ+O4?c>!KIZeg zAfNvI`QeYh_QSMCoBJV0`*`_z2!Rt=e9hYH{T=;1{bRrX`_EEe{qOb1T5y6Jo9>=6 zXs0Nx%R~!A#AZaA+wl8*{E_zvC0&f4_QWLG?Ln6kCy=+tPM9JE$yfZT0O&{r1(YfU|fT5F51!ilN+Cv{y52V-^D@h zYxh+BoFB^ZycXCZJ7k z{gD~)|4c*xPe8E08C&|V*nIO)bmM^gD|{9D5N*b6Q`b=}c-6d+px%VG_=P~-%oHEDD{OF_u2+$$0;14RC9KZg4>2R(ovmRkR!Wf4J zkUGG56)-lm4htAZ`6$BvgYeYt(3494=`jB#I{u_PNm_3TqKpO?%m&fySmOR{upze#HT*8c*k2K~%|vOJxj6c07Z4B5 zR^lBMUh2711CdSAQ1w!*A&rXE*vS=T=fvGro7$>q_T|$~nTP zO&>rcvEjysP%IYDH%7|V_L#T7R8qK-H|y6_#Pn1PM?GHmc`8eJ7d# z@+AdhZ=E}L*3-YN^?&X@e!W|UZy;)Zg6u=YCvH5{v*?B8ZWhlu_@U&wxPZ$PKbxcx zbe8Owv7a?lt(L9mqJCH+ki&~a>HV-h4cztdApow zO(UN@_Z|-~pC3YF9tp!pOp}uFlOlca0hm#)oVM1_ZXdsZP4;Lqcwht2=(b-t6`7}>I(SUl-Xmm&*j~8Ic=fE^a#pW> zbhRGDlx0#i<4o;s`2U{)T@1SeuHM`E%wG1VU)NRqjK=ze=5HWb3tF1LBBa#bwaE|s`2;bBwoB_^x^ThQX>m64PSv0xb^5sxFBd&)N%Lr9&g0o5{i;y~_2|fo7JLsfA z*lGKoEC;s>P_L^QEpysf1~$L-iwrJ52=7$8i49`YecR^+Kb%x0$)I40See2iPV z#Pelw8<*?ODc#?T>ou=-$L#tNm|c(VISI8v2z-?JVoDGYq~pn*1V^le!&l)4?x*`#w$)ptu}?S9{SF2}nZ%~z^$TY)hQb6`YvEy)%>ddM@?7c}8t@!4}{dLnNVe*XC9 z8HH2TUYfD%N-^}ug?8if*Den&K$DZd*!$XN zw^|p=mIZIdKzKTS6zAM`3*Yz_sTxXX%u83I^8`$28$*m>94pYC)&-VtE--941axAA zcn&7Rz~76vY9ckKbI!$CTf6dnci&HZMduaPE9|`Q?c?6~5hZ@|bVWznV|b*qP0AcA z1~^u-F5dqi|Aurc*tKW`IflmhzE@~%R<~0+-;zwTXdbgD_I*xHS<* zZN9-Lwc+5P#97but6@P2xeUWk3HJC{JMP#BKpaU}fu6tfn>6L+=KeEf|1E5j>h>C~ zmR3o1Pu%usW%ORoFB&Qnakcm-ho7RLOJ~{$V#U?1XZ6d?DW`(1WFqqjeZq1A@9vwQ z(PDabvFcxU;IBgTTI1e+6f<=VW&TjxzOYhutDv-s@3m#-W0}pKP2!U)q!+&OmeEb9 zc8Z?YUF+~9x=4zRkE4Z8qMpqkq8Z`NZS}0(8Ji;O2{VU1n7rI}6lYQ%`DX7N8xYMR zK?;Kp)n&bD*%mv+GcF(mqOi^oVy2Y$O!YUecrc6`X>iOv#^ih^!vL6-aZb*G$3zAL zVYMu*%u9&Qdz;?0HD(`gs?G@r+6j0$cGWW87pOOTg%@qC7lk&@Y`<_+IS7fCh$y^d z5kn~OY_!CyiI+CLMz5#M94%FrveWN_OZJ`v1e$Fg1fpmwvLN;zIe-4XbmwQzk$N7) zvNSw{Yi+Pf<+Hd0UXXLR=cipF`bHQLOpS4>r+XFvwgI>VXN_)FIA3b$yriRbyR4K* zK$c61byXzQ`Yn@Qw5m6)pSbatcJWEVGBZr!(b6KxM>dFnTd}zG$+_z12+5AevYAWT z`n8E$ASB}+dcx+BKe@4l+6vUSs?F(z+}So#EXw9la3q|q+HntQNl%;g-)}rt#sAo; z2Z$z3hHO+83fd6%8C4?d*bdo^`DuXhUi?DolJl)o_=cazHlcGu$5UR*#K?+v=h) z-@jldpRj-N?C~M2Vub1x>?5X-po4RROQXQrn#KAR7}g0Q&Ei;FN~mkpW8)9|UDRy# z+A3hl*=)ya(>f>Q^d5D`2poSIMnkc#3-IOF3u(V0pbOx?@vFlBORIfR2W-z7tZKq4 zo4p?HKT?syJNi%4 zUnH-=9%$`8HQqMdmOuRsMiiL-0;p*wA5&VR+%g20pP3)tKbrybuaJ8~lP`1oh zp|?zaacpN?(${o%zQnUB%b+aDD{56ca~|oCNa&3Jv7_HqdL$nH`Sf+^r_cbZHH=_b zGC|wb(kDXOkCA}}iXlv*lP8Zf_l}~V1gsIOW-J`J%!*BE-Ok&;$qU0d9*)s4#*#X+ z_8PW4Z~j%7%wsU7a6?~j`472HvWA@wV7iq=x7C%^7`o)g(t3p?-zU_z!d8##A>(0; z)(~O3fzIlm!2h+BiZSu=3qDHq+SSqK#=9iXLYj8v#(_@aLMD%(CQd!D_o=h54dn?1>* zZqedJ88OjqDtfS4TjgKp44sex=;BuN@ zfhQ}cNrt}n!p0IWjx?M^%UgpyD1ETV$o&W9-~J8!%fCrn;rJnb`-k-SBmMllIWL$^ zjK)1t&MIBy#Arb2foLu86ldh=a)2FhddmKH3;=~0`R)*xpc4~Lao5(Dm zR~XJEigw%a5EbeodlquwLLFHb;gw`_#5fAPH0R4rrND{z-Ew55e~&0rshlcE$vd~2 zC6|)8uyyJD3MsG3d7?dGf05ezRZ{Fv>S7|CLSt z<9IQRC(nUla##)*XFhT&S?Ts1>`b;f*fOBNHax7c0#aTrmH@(KaBkr34ztz!fyAf< zca>j7Uk30LL+JzbeH)$9N8_F9YgNy?nPXlV8$vjUaK07s;=a@Pe#nCApwiXE-SYN>?El37RuiYma?c(~JAHhJEd9m+7T4XHK|OliXaR-szP0dRFd+_T)< z?i(Qi1+>OFTmx;9sxlnOGbxqDyzdp^>ubOH;_s6_``^p|lYdSc`wDqa;;#$n!6$^J z2Y&n4F079W>%#~rJ%0SfUw=O*>770PrU`7sNm_zTQo`kG00s%>WvE>5~t5T120YkR7eeKnn6Q+X`RUv?tFXb@I8YKN$guz zSu-SP#+Rf(3c1CT-{K5nhR%}3+*pb+npv?DN@KP}R0wD$f-<*5KW5YrRTh`+K(OKOZ39`f^dGmJ6d)PX^z}ERiGVECB^M+m=$V#9J_`b^AIjra{ zk=LqC$u6?yk~Ui#JMMY-vno8U;U~BI^w6N1HtwJekru_;LKB8$c*U}+EYf8{YrK{h z$fote)EA!q%bby1D@RzxAG!GW=e5WEX8Q4K-m4id${`<j&ZT%7#mi<*4JMrcAk36d4Zs*CfFccUY+}~m5-f%cOTE^smn@xN369- ziGR_H@t^;w|G7WY&qqMn89KNbgmjer_CBMfuYb+h08Qu{UUmG}{&_W;E_Ui8(gai- zL4;yc;kfJTsf}IIqdrm9%fC^ix;07r>EJ;!=b|*Dd*`0>o|7#nWCcd76*t6wU{?MJ zxD>Niz+OP6!9t3dMZpksLDlV3aZrT#!O^~OABXK+dFvJ1Y3K60>*K=~K>fATOT5=M za~=XD30Lkf$)<35M2U(9HD~-Lc}DIrxKBu39JeR8nJvcwZ37etMl4Sw$RlIkIFwm= z;WgDd^(bB(6{$DJd^QLv8ncnsn=x%a|Hfp?NopiB}?D?^8JYTix z6)`3O`0&&MH=}Y0!C`I^O9lXiZPr0sf(F`0D*(4oc2&HbLL937jnhYVe(!#s<@fvq zc!v`7+o`gzsCjDRm8^{_#1s_U9Nub+h-kl1cLwwwep}l;Hqx91g&HVEq8VzdY;p}?pXYD8bki;`RC|iDj?8vJ` zCBl7XvU>~}%)u}6=cBYzo7zeNpZ#$3auFqb-VXbDlOhkR$PsfuzuR|a3aOzz3IG@i zngJNXqKl+Kx|{%*GhhjLkYeu`DY|_d#PB$H)EMcocc1$-shESAVjsCB8FJtWb=2je z*7XvyvEh+A6^`4Dy>+}@@5tZ!72;3C{Pk|T@@-FB9h)Bt55Bu~$GTrqAMs;C&p|_0 zaTEAyp$Xqh*ty76aLmi{+8p*FW6z4VmTf(uqcI=63-iNH;LGOx92djy^%D6jNaZuI z9&X)iY2H)jQo?cN*ri*Z#d$M7bCRcTemZfSdDzNP%cj&Wfl6yC5yyD}FSuE@6VF@p z$+_moP_AfPu-wpaiE|%$y#5o%`sk6;Jb;0n$3-nUZiNj=%hTH z=1aT2uJ^hbHK&1C`P@Y&ZawWK0$OhlT1-F>IDcB+@3%WYQ~gctSXxEP6Lba1c!Z!a z1hXRNDWL5FcrD1mry?r+K2;UozzB{(bG`JrVt8gQUFdbz$=Jau2dIKxFD>xefyO%4 zkFw;L+8Nk>k$czcnYQ!M0d!QplGB%5oU*U-m$fz~wrbRU_x6ABku{o{rN!17lel-} z$PtW4FtPlUWE$DlFOtZxYAzlzLy52z-R)z$JZXg>zWDAsfM^?fu}awa18fnl`I`Bn zM_%P|A9(Xb81M$?b9SyY=dn}KhMo|hCzPlFBI-i{*YSfxbH+XQF0bb{UYpFVx1F@_ z%Zer!-+9lnqb444`rQ-Uk$-8sPvcl=X04_R`D8XFHLB=cZch!xI!km`Pk?W?N#boX zSe@Yhw_w?(F2X15>Vdk5KSCR0Re3gWa@S;z7vEISNpYWlJ`PiAR2OUF;C=v65VuTKM zDo&WpM zAXec)+?enN*pNEwK^{4pE_b#bk4Z02@=3c{I!PPM!W=$A|Its=2u9%52dk~;*Zr~H za_ajhH{o#d=+co*6eCU4Y7Jk}7}|=|;?E^~t|y%J<3~N5@@aW(GZWQuRo3one_6fy z@7eg9uh9!FKs6LFWU5|Ds2Jqe7Rv{bmt3a;gBv{Aono2rq`$ZK_)WW1Zfx6U+P6R; z&u(Jg`fl6ac^C@Bjq&Vt*L3Ri(AYN6+p8f7tFw*c+tX)wxIrha_$$sIwbZHa@0H44 zsRnP;X^Zoo6<-*7Ic?j(KfHVXWLuZQ5^qT`5^uensbnZwmZ>I1)7IF8)2r;X)H3P( zs0-Ph!TYa(^cN#t4%%u&_gggJur0W_^k#(p$3&CamzRCi>mL0UpM3uLuIJ&<=FqX~ z5w)hR2=Qt$E3{m5V4wAFjFRd&{DaqryM6MgsH3@MIOZWIy#}A%HxsfM@ML1C1(bjw z%Z-?zqGa!>c&?^LEI4rX7%X{Nn zU=m4?h@IZ~GkgBNZ(qMiTc@y}<&f*6prK4+7n*}+6R6SL<(3k6KY!eh6=`t11fIqU zhQF$V*`hsd`3%;9c$%I#;2Cvj;#GR$yGH^I(rv)u{7W1};k zNtkkp#IVEAd8@i4f@;s>6B@Vo@#w_Re-dtQyg2b=gX3YnaZBhhK>!SbOsv)5d$ zR*(9-Sbtj+q1i3;LOc>V5ln5C#0IB>_8mSJ9FTYO(sttc1|2AwQ`}oDw&(A$0~|Xc zOnAs0pTW3_ayYQGMaKz|*|^;aZZ42#@CU$+oh|R_X^k;euSto>C?cd-*U?ivuu?mT zu)JC~J!(9|A?2F;xp6ib7I{&omw7%^0Jlz3v)!B*N>I@HF{TD2Gx=_GBIKj&TMBV7_bN?-QHuQ~bazHrOQJ7zsFTZ6n|#16c1h0l$D25(Cr}ODtuPl)IyZT1M%h1SIebq#!!@ndT}d21+wzMr@h2$nc3C zm(Dk~JjcV)3NwZJa6!FB!bd#ha=fd_yo|M(Q+&BrXlS#fSFXtzreJ?eWI`;>sWpUW z#or-M!XQ#ErGyxVak$i9%q`rO{BOj6G+7<`6#ah>{>9Siy4754NuI@AElJS(2D=a6 z@a4HqX9y`e+qX-n`Elu)6$w6Xvo=O{)P7TU{0n*Br50%m(qpwq139Oh;J$A4NHiK; z&cK?q0M2S3{QkxNnW67fx*gSLq<=9u94Z*~=%6ws6tiY+(5ftjtUX`L1=Wv)=MHB= z4jeQbe1zBi$ZkACn|AwY=he~A=ke1Nd5=w^9SgPR$ZxP`e#GwiaghaE!Vil9?n~UU z-no>g@9+59;JKXLnP0DS`P@fyxRQzHR_3j)Dxqo(4M@HaHgu#`nQK{?0_3cWjT!ye z>i_NquLsd8-v5*Q{@<$SOD;eNViJCFKg)GKHs+({o*}BS=UC~(;<4C#bR1bm!r@1c zrh87!jv*+NQG^E$%XJj0uG`O3OAj^9ewDX*Vqar>9E5xtKbqku*FL+0r*B3jf+U@c z=fF=BD>dB{;x_*5-~p3`1E>oUe*wCpb4c8YBLF29#H4XS0D?$zC3PT4kj4y^4VRrj zE~i2D)lFZusj6|I^SS*g@wpFleQyuP#*+EveX+A749j~P(QQ$x2~&Yoimz3-V>IdV%k!heH&E4qDi7vk%Mf0_Ftj4yKw2yx=-dbdg! zi|d5-eWz;A@$DVvQP(3=9#7)>P3p+Tk>EIs%X}YNtoT84$rq1a=ZSkp9aDt;2ojR8 zyL^gvCK{A({;m%U69Av}?p3JnvA#gQMygZ8l%DASb+f3E$r32Ztk=0WEzykbXf#M- zvIq!232i{C(|9&vDwkb=0*bmYAQeDxHiX2I7?e@Gp!&Afy&8S_nte%p zqxqHp{%7&=O*w9Iyvvg}JX?bnzlm zm=p!s^>(`UD;e8mzzx6zHz#-HRs*bU z6`>ROW8awO2@HgAvv9YB#x8#s1wWiFmxJ^ zk_12}*BDTY<{A2fRln}nK6-4*kw*0?^90DiwqgVH3JsK&1&I_^5v>+*?qKzHC*R4* z%W+O*=GVr*ywhMZiC4G~pK)%;D~tUibeMDiB^t>kQm${8S3{;gWO)g8E6t$-VxXD` z1>5U8){qfpgi@Liaw_g;-VIZ=&KZ_SU2%s8(=78HgE<&Ep-Xh3G{#x zo?7NLg-jr~MuX6f^JA`ZXG_nc@K_hloaB+?-Z}rt8-|E%2rY%clJ%RP$KjGKT3l9x zaa+)y^|WsZUvv8Vo~eDGUaOR#bHk6h{_eY+{9t_Fe)6{AdvJWN&rv)!<|F8tv~T)* zUYV6jj%AFkr{Ztvw-b6C)2!z|@+@^Q_x}5cO^~j)nvAg2Rs6gZnZ87yHFF+cU8|-0 z9tlpHEA8y>8(^U{(yJRSw|RLnbv@2CatXY4JL?D8O~28mt2k;-=p)r*?vJe(UV&q+ zs1^)m?+uSyzQSEg7f%6O3%FlK0PR5`g|tWjgb_0mZGjF-+EwfZ&be);i=M9YX12jE zux~WO167b3L>f0Xg+n@QdEAMjp z)+J>eb&p2~9W~0Jezoqm__#mYhd$EJKSfI$&nucZQIL!Y8>kKPS&i6veDSh#RJiZl zH$iC(?q`@r>4ZR(TA2A85u+ZL$(y4qJznAwTUPArxlB(R zGF$eJ-tGP9UGD%dbsYA_cDKM51>U$KsWD^v;XaPYFe1+S88j!l{|*Tjj~JfB|{T zgChX=1U&NMg5YBM#Y?Ww-T#mMkFWT;Wq#_ zOOi$10&GZ+%dwrs(h7y;A{He%JMnsShy3G5G=dq~Vr0U=$!2 z*)u_&soqO!h1pWfDIJAUN#a6x)GQHLl^XGe0#k+SQjYeLjl1|U@8KWMk5j(2?@r#Y zMz{O=fs!(r49H>g;C{@v2cHxZBdWZR9$}0UOwh_Jyz(@WA}i8Vxr!1=>in8VtUjtQ zea75_=pvf)Hl5u|cxSt(UYf2kc;&B;4>|mB&f<=G)Da+P-v1$kHU*eZSqQ^wtwUk$Z}RH%%mg|w>-b>I8_ zKk4(`#`W87$3NN0Lyp6Vw`42gGJoCS$?EavryI{tEqkM0qSn!KQk>)-k2)y^a?on45Ul=1 zmaDcppT7-ODA`&m3?eUkDQk+Wb(OXD_1`GUkn2fDGO{2UW}sn%bNa;*xqGTRH6yL8 zeTCQaE`0m?ndJ2xD|r=0zvwZqtXBE4iu)$qSGorO2Y2zu?d6^vawXlzm0#*gcX=0+ zLn0_T;#ChL8Z*AaMCn+g>@KxPyB-zuB`{PH#ySv0P4rP8N<&mb&1i;_lpNt2-Uzc) zn}}|F`z6{?&&%|nPrPWHnW2oG@2x)-SOH)Kp++r80bujHL6FAixX0t<*^zl3@7ZzR zO?%Li_0* z#j$4c#D3-#bOL$`t3x4c9792?<;m9K1=+Idqp!MZrMA}ldXoaoNS>kZQGom2cL$-y z@AFO+jC=YJcoOYptVkh}N&T6QX>YCuV)J~7%(Tl|s6DNGyu5+d^6wvm;Q@QT? zR-c2LI5B3^8V3i~H?R8y^o#zH@^)c;tygp0E49DxXXiH;O^5E5W1ZP<^h@VT&m8{D za6sKvaHBb&9$nM|3DEi4D$KCvf$Neo6d=+UnWuZHsaVhU0bE z#@9g&KTIM1M9HyHuW61%`edGyzB6|5MWIkONef;nfx{h}r1?LE*e>UblNj18A zOb%yzP2$q_x%rD^qm;HPXv-L@!v)s-Bbt=hv!>8KA+9V{l5x{rrQ%#v7- zE=~T9$X_@V+LBejR@AJK#<{hNFtFb96w&03d#Y_!FGB61af@o^>WE z(J+D&YE_DVtgC+67jI)&te-;`qGkKcD3R$f-Qx7l6)j+$2)U5ByE-munb*FvD_|TV zED9)1fGO;fsI&;tDRYPE(wMSPT57XeTUGoQyexNr)BTg|!0p$h~kTQ~a#U z_%tdV2}i_jZ};(njk;nI8c$Tjr^I4Z{6aCWs;Wd{VkQhNF9bYTLNSyzjsj*DGZQ={ zk0jyFruUwkxLydRhbmFJr6O$frkMr=gQqS>QCNI z)Jf0J`|~LrdpAad(}jrtjlBitI|AbN;1uaicVV8jGF7)}8aO&eV4UX{0Ia8zF8N#w zgzY%^kylVzpm_vf8gd_$!F%{Dr8NcAK0KyH~4Sjuzid~Bq1){jtT5AWdPWHdV z{M&2h$cFj^E~9DQI)NLeWzcJ9~nH# zaBP!TMgp}#@9q5wXFQuoWh5!Vl*Tk(G&V^l-&qw|4M4E($ScuG;_v95USg@EA_|n9 z$UuzItQef|7mIJ-G!g#*{eM~dpS$#Wwkm)^rCCwrWNBpUj^rx8@n~as&#-MggCqL@ z4#3E|Gpmw8Ts~v%a!t|dyK!SgTy7b!u4<$Xu!xE8h$HG)97ctC`9?fkT<`M8N)7n( z-*@P*Dfi5kbsYSmI+;71W}>MUYnd6b)Q6!fhlm_B#D6d}Cghbrb4#oB$fN7q;|~GF zd#>nI>)ba>SKIlKSug^=0rn;+PdXN7toUNkA7c;Ym1?c1Eq^i2x2(B>{WlS9PiUYCR7fvK1PuXJ-{+#Bp#dxkjqdT4#Y!gaAY_(Se`~B2_(wMnp5x z8d;c20b_#|^!w6pjl5u0J>KZcs&mWdntNtx-8vnrvx?8vakm;xD~qkizwN=B4~&7% z%OG+LXD(l#i)nP7);vRT4zH69KTEQCtM%&1drtNMs#s%6BpR?%OzP9ETFb^w@F~k!zr>c|; zhSov%6;MM(NCJScD?~nAeOc9Qh4w@3KeBPb``;fOKWmSBao#mdY&<`He%|(RzIFU1 zn$G!*;R`mcz2e>%`#G?8{aSHOOMWzY`ySJsz#iaAc)fT~=k^)i0dZLYjPWg+u3z`$ zue|DAe+q*$*J4XImJ?25cJ^B=eyF~RIPUhgpHf#yJtsrKh2ENVOWY4*lamP7x{uXA zgRQ2G*NN*HLQU^!3kM5kb&OoDNm`WDtJ2z%ED%lZ>eXFpB)K|nCPe81n&T;h{Rtek z-L?|%We))=Tby@nROs0DrtSy?f$k8Y(SVGGp=TuCLD=->GYFv9uNHwrNW={e0Gy<7 zCn;%^DLy7Dqw-j)?9lwt*}TGK|G?FD)nhgn*XjyYpg%az%JR<`Mk~vq8YPcI1|7Ou8EWt+QT^*63^h>_Ne_}P==}qxRgB*>)eh13@=k-e5cxW zz3!`XfB5wG10DRHAHCo7gYqA2`{1$&7x$3Qz~5(Kee`)sMXB&wgGayZ*<*g@ll`7t zaX(Tnc42`Fla(Z!7on9E-*|U#y}c2~w_HyRBRN|zvtpr%4H1SgpkjHcG870K(|f(* zOJh&2jWaNXqw~e0ww;~ccfUxxU3ctl@tv-%Frg|rB49&(d>4+7b`Ly=L*OKo*SCVfd zU(w2GIP>mcQ(s*?-s{r)dLc5x4%$qb(sl;zF|@;s8Tf$~773U?<<60mEV$b9K;?_K z*)0q5D-ThF2qO*W&cz5Vzl{p}rY>cVdE-t;V%P)xH7WRcdV$9R;~v+z*(02|NO^#V@h;hZya16KAK3f(2`qB4j zU)S3nwP%D)Sc9?A?2kS9@$>xQv!B8Bym>jpBi8zy$*o`Y#-s6&*@&(5-Rh6_c;A`0 zWkp_6Ause_XmWfI8`Bp(<3p)*>ZCk(P7_dq2z4P7GMWHSN-2Ufv_}f!fHUDAs=TCA z#mHrFD|y`=eDs5pANt*_X_OzOI3Yc$_hgA(5i19*kTnSb0&gD`p>Ee)p&`jYg4IrE z&TnZhJ`Fh)t;v+=uG|&!oZ`u(RL_Od&%K`$f0>aBmTAD3Nq9GfYfi^_ddp@+!yANX zNANLqSL&bEhX6P8M7dQpj++Uhk|E1jP-<6C*0~6)Zn}ZWh)GIgnd7M0c^zC?T_v0J-jMq~QW1CXPm0i;feVAYYIK?rU3(!%Js?lPI z!UUatp7F}Q9S(cSY=AEID1@|W3x!4OICsNGzq^_5@cqPQCzYd{PfA}%t>OcYQRax$ zYU^7ds)2^pK-)&05)rvUA}6AS{@79DsI|J}ell*7o}|UA9d_J_+`3M}1J9k)KgqL9 zHwbVs!cM3*7%9x|*ZDzt{YZON_I-0CfkvaXSQ$+PgXWRzfg2l>a3d1PmF+Z9c#&UF zaYLkr=4p$lV?{9n2cgWzxhv9XEo(P&j$uoZNZz(_DUE>3zK9DM3;qsMCaN%cqhOpZ z3h)OOfQx_`Ank-6dJ&$GVJ4=0F-9^PAy1vsiFGD=kjR8KIxqpY0Kns}Q^ha6?x$bj z`TWt)pMCRDC$Y3BTgt_@E9^YAs69{G^4nlj8^fNNE@)7`19@1lN&ibuda*pL2n{C{@b)8P2cNyQY1}i zQGVjcEGNbdyY~CXrEv%CZ{o@HWbfJu7x3OgdEG5bHc^^{coqC^>j15#jsz4bu zYwV9qDR+I$^)wCKZkF!%aQXb)iGTaoKcnlP-}(A>@)zc>6OxyqLmG$h;5Ns;9dSFs zwZIfEg(uP>xnYAy%6kQb2?;UWM#%vSQfjSy%aPymz?zwsi;#$D9=x~N*tG9^8L+}G z&@1)ZgXklfuHtn|av5MV+g-Nn;b0}2@_D=6$;i8jwbGWl?GzgL1&L#~sW>;J_Sip0 zw4)2X>1@=$pmXV^oh?c#^DgCtbSmt%Y4j<7^2qZm^4Z&;ByPPpA2wPm`P+D;Een~5 zF()DrwFt8gTqJ#%&lo^r(gl@|2tuTjAr_B90AK_duk7CT>YO4SKX<<$=TrXp`GeU% zqvqyorr+-q-Iv(I)Pe_&vod(8Az)eL&{h{{#s2REU#%OyOq>HzI_m@69q0!tMxtCbTpL>_SKYb++ zVmc-sbLmUD^*djZl%$&rd`hnCxKPM?ag60+xxV*Ui5#U&ic!q>qOKl^qz87PChAs1 z4J6RAM{M}x4`a7lRl!tTd&w>I51bs9s?A+fO!Ra++UK}GKIW}&fLhR1N}rCX12p7$ zlp!OD>auT6-BrJyo6D}twd;M2x?xaKJMC?~v(n#m>5J_iPWtZfswGCOYb;AiSr*u6 z9d$X7dY34xG9bq+{UveWZEmFBthT2(-Dtj2#z}@LqJ^CKgIIP$nF+hF^1qoMEBzb( z?r-&5kM?(Q>N`u?c2z4)6IfEG@P3hLScWZztJO+b7IB;;JS(O((w^h$=cq)2JUMd! z7*4!;y5cf3&Z&mGAg4)fCBoBM-lT11Yog)E&Jll%zDChE=J*Iw zz*Vlgu|TbjLhL^Nb-(cHkn9GhaP|G3$GNv#^J~6NHKg(Kf~b;{H6yggj{9Xj&PEPf zxhq2#cq@qNL#C2wg52CsN>)*=@;1u$xm3>ykC}1vwIhSC7})pO%S$hvU(ufV5&7(< zc9GsV){U&cm*^(1)SDbp?^d@ZQV}EU# zWp%46a@5zN`&hSQE;kTu!Z~{@a#fC*TGH`Kcji_-;Y+Ofhxd}AHN~(Zmr$UamuQi! zVvs6n5EABJ`j`47c;~GV^3mN<3<7@EWnESwgEk-PXo@2Vd-63yoB1>4Dyh#{tcJ5r zmO55fo-*1MEg8M})|dLqcP|&(;d1kQ_&NcnI@PFe=|BLbO_fY;H7@wScN^FsY)H-^&ehjZYjVHVO>}@OCP4DtipW?x% z_|lJwAS=``70f&H9L%I##3wC&5P*`X!x!?h?L-wZNjKec(i5IvgU{o?-r>V*fTu;0 z;6_IS4p(-A?(AR_!>&~I)i4zXhn=@v%QpIR(_X*S?U(Xf<9Fh&KzIEhDgX`WEdk5} zJI|>(m3b@Av|PVewdK~Lq?+psI?B1WrO1!NT@DN7l-U^PA>EkPdzS20j##_yg^L~) zG&};}I=~%{lY~$Rz<^#rLb1DEV8&I-+@&|WaaRCUJ4Ntxk)2}S}N}?{CZAn#R*XKuOiHs3vHS&8;Z;8kw=c1QOXwfB)*KB^`ugb@b z;BK?fEtuf`O#n8fh_g$AsK2oIdjr)NCpkM9{=-R`=E8?a>03SR`YDeR<#QCb{2^$g z_CRs1ZByqB?c90Kd*1W>N6~ANjwnnKF@D(=6wp|VTt|r|6!i1gaQz~x~iW-i^CT|Iyw9+{K7@!_mw}yBw1bUMfHfOr?U7ntp z-iO1;?8vwV&NW|0OcGod3rR{N1}Zd$U_?{J^p%zYmpjt0vZNP+kfAKbQH*7lz-i1& zask9Alf-*^snHFifgC5t(#e42a?OaD<8M$4P{?rGF0;<*g8?}cfbdbg(y$dA3j)vm zHp?L+HYtuJxCZx>=iLJEK@?HhFp2<5QXy=|=)yD{YYL1k5KkEhb6aM!Q7~KG4kNmQ zVyba(n~_N|Pk>`{qfx>d&v%h>D6jPx$#syglj^N5xWz$oT?M(5Nwe)lhPLig)$U*QNN!vddRxjxv>7LB#CQQhVXM{j(6?PvkC{Tj=&pHG!v z`I3G0%-{`L=~q-aY+wI3R@HN9`~+fbSK zcNhQfy!@|w`RfTwRCTVOx-+DS^MV4FSE|s4{x3dwc+>+ILJCfnpSe8TYjGXgJk-Fa z)Ec~->O0>pHq>CBkW4fT%8&yEgIuVCmV*kA8mSJgH@cF0^~z^ntO8@TapcEFziqgq z#-YnYHGx`>mh)1~8boE=9`g)QD21SqxlilQIjTo=>&k9?K*ssbqtfom+YsE89_RRC zy7Q^Ke1FSe7jz8Y1Uwad)IIQ@CJX$|HTG`A3JrU` znfwJ_mA$K8%;}2}?oQiRDED(1+R)v|{~umqul46Yh#!Bp#wEr^X<=RYxpwBKJ3c>U z=JVCtjO>iM?6Fc|e_?I%&JpkUYV4frAFkzj`mg@3+xw(+?f|$W=yrppKxhrPC_a~D zv#o0Hs2oF78Ryzu{SUadU7Db^36(h8>-ofKo0ppsrD(Bzc!ttgo_`Z+#XVL-psqTl zm`MrcWQWc4m8mI>5G&1dz567t+>mpPp{;Tf4Qqh3EggDwD*f63Z35ahw2wdsd&LK1%f9 zGWcaC@reSLHk$OxqL4I^AI|@VWe9+5UC>GepqheeOmR(R1_`>Rv*noQKhFUMI=!5b zBNLEfwUrc5|N5P9+~oLPTdnM_f|$+aIX@WB$9~LDdH&`6*-x1*_YNBMb26OMZ*YsJ z%`BEmq`hkLwm%<;HZo)$L6it-CWST}du_1D3leENPQhwU2zpgOSzQFe!N+bn!B7@Y zZEqS$*@`ICStZrgzVeX@j5A9x%&6tE74Qb|KVF zMyFAsDg+M0EB{A-$~}$Q^3=WuOt+DugHqMqT-eQvOp6i}bs&R7M}wMf6DgbWGIPuC z{3yj$qv2gdb6_M6R)7HJBBM!Bw2;;Lf%gZ##B4h%pe39@0@M(7AuqJc!#f4l_9!r< zQeFp5U+MexyZGUq@Qrbt{9O1S&~I3Qx3CTVM1olq_)Q=sSkuOo>H-yVk?to8^3|P? zCn!_X)bWDrk(PUh;gGmKTFW3bc`!|x2-6<5z<5y9+BG#)hwXw6MT%)dn0k3M1PWg! za)3oyP2qrK*jDx0j^k)+Mrp`F5^nTTTmz1n;a@|9x^MUPReJ#}XTE!0`%RzETLla3 za{T)qd_r$e@nlcA{-MuPDx4}D|KsPJGXMTHznf6tJy5m>)V6e{DsPL=b ze$Kx%@wbYL?7O+u6Y`6!YsjmzK4@~TTVZ-?CS3ahb%LV?r63pmwDZ3moA|#!-@1A7 z8m~#=$@#7K?lS4*Je^8RBTW7ekyEi=D}Plqe);CjcUh(%Tz4fUXdK*uL?}+~pTnwu zyC8&A^R2b5%J$0qgLnr?TZkgS6k|xJ8KJaZ+`t<%4&p{hYUGKMnwH05Rp!MTGk+A| zufg=fW$<_7?E8S0vFWEr?K+ejS2?_T+~U?c=SR@i>X!8mU4fRoxFeGhnH5B-=p%;7 zx&UP)lt;Th$*^chu~Re~O7z*jRYO5_vR>n!QN^%JZ(A83yYk0Ie{l7U(a&I>wP#%( ze>vr^U!(G$zXI=>gzE55wElvf*J-Jocc1!?{FqyjnE0!oah7;-&qTB5La7~nCk{nyBhev_r!HiL1yLQMX0dFeHU2cu{yahb zya0M0di+Sz%TpQ&AExkN_<3GIC<>@Bi*gm*N!^q3XnnQYj{#tLdY(XMFV_;|4%t+V z$}Bh*_{#ipRhm^K5ImjLX-Tfly_mfH*&n~Wex)`J#yREq{0Qyw{Pp3w9z=_Bv?*?^ zfLvez0hSkH*)!nFg;bM3n%zhk%$I~M!+79wb3J(o(`w)`?lx#sovDB^rbJ=d8E7)@g1etb{i5SGi%wB+15Y_q~)r}rka%#D&ittKX$g^ zGiJQCaNU|rLoD;EbC^TMb0_DnX!^x?U@NEuqqz4YG(Ur!kMf6{y?3W9qY&fK2pv{t zdKT>4O192J-2o1`=zw0a+0;8fC`+xJ>m0RvKGFOIf}$OO2@2{JKdL zPBGz85-_!7kW-kOGtsqW&@C`uC4o6VsOPrnMV-lvsBP=390A~#PE+0hp)99WxVUV-jpxw8T?uQxU2Ecvr~kl( zhp+UUx4!S8VnRpR9qWd~W0gxXE;M3ln7Wc(xfjsqy>IX>P#IlQ?k+@1H9-V&iw_m} zclP^grRBwqw#sWPz5co4V?w6 zPfbbL`&c5Ig_H%Sdh1+dceHEM@H?xX@<+hV%hPYO_>s@=*MICcJW;*vMP*FQcIG|j zOkiR<6A1$I$omP}*n;eZQgwQ0=^T`t4kMZM1E}6%N1xI5b$ICQ@3=o;elz^=Q+~f6 z_ui?xi7&^fIVql6-=~a_+=+TeU39aEmX2QMw4knvKdd`Zkpkk`$j%C#OAXawb=EY= zB9Jmt$W|57ix6mpSv(K*uVC69#wNqYd*^xMfNy_Vf@I&!}QzURXuo1)?!1dZu6Axos?T;+g>?*rA}6;0iD!iD2`q6bEzCO{h1taSXOG4Ws5&+fk){}T85*%;>Y~^ZlRaRdlf=GC3H_AA25}K>RZ7);eLraWwa|2H<8KcV4kGp^b z6yj=*qo0ZJkWke25seKp)zpJ9Qfhq_*N*U^&sCh#H*zF=4hA;;-rVGP)D@EnYMv2k z|N5WWsj<{Yg zI#i_9X_nJs;`E56CL|JxHcp89&WEk!<_xVR6T^>+*)g@gO!v7ssPb!;9MQMZ>BJ0T zw=G*%Lh;HL(YC65>A#1%a2rEWLMT4QH&ViaP?9>0HG}ru#cLxt!?&`RFPc z0}vd5#sM%;nTE=Is1H~()Zj@PpuW(nx1TfGzqh;U!>TuzM)z%PT(Pa&-sac4=m$Mg zz!c*5v%@xPTbj=?(?bo~lCfYf+u8O|XJuQ(o8_m+|G{$5(*~XqZ;0PPx5FtNcD(KP zAEWG%X&0y3{Mp}qKXUQx`r%VP{C-^@4GY%V6K`DAolB1lx6^D>RLn?Ck+J@*0NHF7 zw7g2hmL0#a?P&7E+<%9gp8l9OI6aJ7NY#)~jS=hOYv&#Wh6kDGax}kN@Gd{UpWqj8 z^^h79-WJd!1JDNDV}5I;Dt+uhROL7NxF{6Wo6#NDtewq9+Fxv6}MYKf%n z&?vFHGy&U)OxwDf^di?g!-W!6Bz8E%F_EN`Vf8h1L$MhYk$T^8EkMpWujXcycit4A96y1?9(CJq&&b;6qG2zTj$PqA`>w$@o7ipQ+;>OK zecmTJrmAY-0Cr>crsa?kF4n^mx&+t9wg;O;8_)0+oBPwz?J6x^_QQ9c`K_?LBGx-y z?j-B3Zc|kuzqo$*CeEx~9JS>}X~kr>8B$w#{^DCy-t(=+9`C|QJ;v`g)crOV-4;dObJ4m>UQoW_)YU;kSCLw>lH$7nbffzi#6)!XP# z%_aC@mgj9o3eApoV4BZ*8Ce(Rr-Myasn_~EHArQ89q%1A$`259bF^(1;~11=IT&>5 z9ey@`f&Pz|KklWE+wX}Asb&1Gv^~RKwL3NN@1ptqk;Q7S^0v|4VJ1FZ_r;|n-zpx_ zBftAd?|5UbSH}V-9{;7HQ(N}9$|8bV&_Xh#c%bAUVIM*YsNpU;Sa&x5yjKp^uuuQS z;M>lxf--2G%Ep$&aEqDMs&%65$k3Zx6)8d?BBj-;JmFKlC8||y?98uSxjnX$35`k5 zbCx=p72<{Q*J~C{q8&>Cze6LNF>#9U6$93t>`2hE(@qK;C*pE2h_OH?X{l)ry^}?haFI0@$jlZe;X>Ca`L>hT7 z#@z1Nk0{N8pgwp00~C%bNA8OhlR!bcR@G}tPYh<{kxKlzW5S1mK;$cHl@!sY4gv*Yjk}iLGCi z?;*yCRgD8I!NF#7k))Qzwiy+Cn;Tbx~w#eFZ%Thx(a=R0E)$@&HhZA&|LZ(CYFXLZ^9hKbZ*&}Om% zgcTJ>ONB>^PdYMa)|iZU?+2=E5Bxfp#Sdle|8={Ks>}to>)}OLhS0`L5jzuJ!pyIT zt}xfLg?WzZI=XG1MRimU1`br9RMyhc&Yl4pXzYy22h(vvMFDH%XMU`Ik!(j_oMuAT zW^-6k0(Bc{4jHA}O(q4>XXy_K%gT+22$@S2aRG&V)vST`3az|b?v=`lOVq6jD1>lg zdeiDluG{H_IKFEC8`+6vQ)EDZW=Gu#!35>L#@O@%nte8B}t7{s4IrztPIJytH*rug{md1LAxe!9;aU#y;s z&YzX&zJ6S!fml$jLx&-i`bO`H4gZQWkZAxK5Nkq@>hmVqSOE)7wq0unn+o2y+p=B4 z8WPYQ=yvHgFOi&bB(Q*&f-~(t{a0$$mCuP{tIsNTL%0@W*0{nSfqxUG$7Ck+*o*TM zUIyhmwhwB@JklaRoXj3g=?g-iN8KC|R;C3*7Z!O+uzLNN8Nq^UIzpn4Ih zw4%m;Pjof7of_X<*=@OuRI)^GI*pCFrOhUh+fw>5V-dN7^YgKfx%l)bpRdu&udl#= zyaNBt9sW7ZElVSvy#)zV97jF=n+1%a)@FbiEX=@10%uIW&JOO+`Vo&ZzHW+7z50jf zTn~l$g5(?}0e{VM{wnG!?4eW}7acUJXV=V&MOZ3@s+vaIPK5kFf6bq!J2V69(AZIMZ!QYE>>}L;)1jATYE>L;@@c zmr5%{^tqd-mQ;dtdmq=JiWOq^tjVw-P#iC z9Q}-=u};qgUN(9pj4Kc^bWK<-yT&(U=GFvEC}9ZXNnPglx1Hz|5$STitx4PUdRyb$ zbI=0lAxn>u*n$pBAm~*;8oO@0<9u>X2jxLswVrlqd5@tweeMLYLapL$s2wX84~pl)Krc*l;jINt)^hsWy+35P+3K}% zKK}5NF*>?q&xH`{%2W1#4~KCX6de4_t$G33&_WBRV)QWV!31h;Mj=z#ayFjbHCyob z;a28O9^&aIc}Dvr4Nu!ZDDa|8U6%g&bTE4d)6W~L9DSN#<|9)u=qfybsm)o#h@zBM zooEdxsNq^|HRBmnc0rUXRC-;!oHA|4B!lDmtSj&>m_jTG4|;j&X&cSyX7(n4TA&<^ zB6C2gN7{$7Cn$gP-e`|lQN`*bo07bW#J0S=2qL*Qb#wowkpg6=S+0K3^sQ(+2t%K| z4*4v6WaDXH@54T>4Wlfyw9t*MR3m;i+kxWoz%^;}W1_?Tb!4}kgW=G$l1ivl zMYeJ72z}sd^uv-MPK9St7j#@-R2N^nl8s)bwkTKVX-EF*jGbmdiFf*)@prE5FZ2j7 zMq9%@Xa2Ya4!h*NcF8+U;6*(z=K-<{t8#6@-04F;>h}|d!ff7 z=EAKjM}6UWi-WS+5M+Y1v8%vPDo+3a?LN?MA_N4s(y)Xaxv0bdOpADcPu-4Ys2c2d z%JT+e*Yw#C3A%QSWa}ua?3KPe(o6aQ^haaoh*zzp720+M5xNCYkT!1x3e`yXVx&qM z(>G>bbMTfr*(jc}=f?5Rji0i2=a-8EkB3!+jn;>1uj0Jy25{K0p`Kr_D_9?iWN{>X zb$sLwKU*w|qvb})8kA;55{SOBWJ6zy&5kWXgNk$?nSO7Zxb(Lc)X-k+OPy(j7*I|6oOKJks>BHjX zW;TI3>p#i9*7g+)6_;-eE;bwgWdGy2&qRw2wPGgds%2~A23Bsxmeay&0xK1*(jO0yd_G--FAgE4S=0!!`*Q|f2i0d*lw$;X0c)e`x@19F- zmy5}}aPqCs+|sr|TM|OU^A~bwk~f|?EV7!cC9y~=qL!XWPF(lnXO1l7W<_Ad!d2fc zrz*dMjD%@8(gtF53-Jr)lZxo01}^DL9%GYEn^P3Kk!(GTU*awY;4b?n?(z~ZdSqbp zz-A^kH<1tFV+`ga`iQptk+0wL#2@@9^Fu?UyFGU^Q@*Q7qMoH(%)QTNrs-D)hZRgr zeCdgI7T;OlioXC$kyH}$+Sw>ud)uPODUukz*{G^gM+IZT?n=O8sFw!acfZ3|C~=Zu zs>~e+8Vz6el!`L>?>Q&^lmDK->hC1=;a$7N(&$aeqZiw$P6;ok&Q}_(f7NCFieyr; z)kztC3a?#0bo^5#2llrD(&VHe8`8RrSm%MrcdvbIaxp<&(OhQA%Afcewyw{q^q&b2 zVXxtXeV5(Lkv{SCr^gL=`}>9Ba{KL1fHc<05t0D_SeH05MSLJmx@H186g@}c+AlIg zGbaqa21{UwrZ8js@xYb%+mXRObb* zUJ-^YOMQx`1~2xOe(^d8&w9<*n`KlaTO;8r>#{99*?TOj8hc9_WeY0p;Jr=Ff5Ch~ zVY%mVqVCCNS=D-R#@BQ=DhRlHcU8XM*loJvku4q&q!wUCu}T=Sv9Vh9f=blLWSmd| zY;J+4az~r2(tk%5F|8Q06UiRR#XxUIZ&^p#$$h}&yK!4x#*G2Z{f5uul?QL)6=(Iv zww$&$H(i#Q_}afjRW6Y&>6a4~X7L!?wwfgxqBFHdUp`&rPmQ9eYf3iA{{{Kq_1D8} zH9~g}sx6iPw|%Isuhp2RrEfKU?Vqen{W=_;Dla0TO{#u&B8KW%w2ft3jh0O2l11~| z9d*?IXiqSr9a{W7;fOp$%8?O^W>CXt&9zda@`MxA0@Etij9 zORO4J{OE#AOX9>HlPl6Y)B2$cQUn^ts#HB}8L^wP4xZ8Fu#?aQcvZ19-AwMJ1=x#2 zV$Z5wzyzxHg=doHcQiNBe%DFvq`Bju3AVAk(zE|#eDHrSV*I}gyZ+HeeWmI~rM#UF z3HwotwqK*w(`Mw78p+AWJ$vq9TU$Pi-VG+_*t>VKqyT!Z&QFEfm&uj_VP5f6Jb z3|M;e#Ihd=G>EPaU~2xn^M(dYJ8Mcn7!R^vrE16vrTgD5{>&4e{^Yuv4wk;mue`JB zrm^0M2x|e8ZW4Ohkb`)s5mPJXRUvmJ)~oKIWhN(T<0)?Pv8n2XUB{(PCTs;xZ<+o& z55RdO%`ZC2XJwi`kxjc{vRzb69H-C2LfAaIL^8|_E(59vqm~fU2@$x_Qea>iiUi#q zqP4*}gUQ?0;LVRfSuas-uVQQE0cm$_SXqvLiI$h7pBM>_uW@G9bY)awyh1hq#~U+Z z48tCBS{lE!lp30r|B1 zsQN}cS~oB)jQ2>SuJXkD@lv$B<>v8FR1iaT_UfppO~59gp||1z zY)?`m$x!s>ASj!hqA6w<2)g>%NWoEb-m-4p#%1=h?mAev{Lb5R4?q|a4)@PU`##$H z0Bw2X%@2NfHotW1D_-wQm1op?3_yIE0rRUwb$lVQyft#&_70wW+sFPH zJoD|V`&Iju9X#?bkGq3mYMU;HY>f0tKD}+!9v=aD2@X20XnXKB-AV{RVt1g4z0G5z zSwl_`5*PslWjAM03cggUu`GooBsGHe;8de1+XJqy_J5Usul@b_-T$J`G8`7>)}UTR z??CtqY&367fI~%v^(K{i$~m^3hGn3ud5t>Z&4Z>5U?i$f5mrkvv-KELW2xBHso6dC zaNRFfUs=we9pM~uL)-k9q(ZJreHlG@G4iF{iX&uUu+^uxdgf9HZanDwh=0$Ek)lMR z`Q#O}U@E=ojR~&;F;pcvWF;iSb!pon0xBY_jfFMimDREMG#Q2kv`@cn-&ZH^ zeEs#h+kKy(;d_7L%tyT^-|nwkc}d=?82MRBd{V}yik~f78b=Vh4mzcu}kPIAKf?jImU$xyPwjreLr-0h8KHV32O_>c!C=>Wr#hVm1U4 zdq4ltnu5WXGUJ|ZEi$AaY=AZ5giJ-~XFDlMqN%A>75IJhfm_~X@k7osiP0DWnnYBV zG!c|6Cigh%F&S=gMt2lr$|KFD&`Px}tdux)(0vYdH#5t}illb?BZ2{T;Y!U~U98P> zl_X*pF{=!i^YQBh=aE0>(U<)N`HyFS*TT9(8JMxb`aD|(1^y_pGljpW$E!I5UZ30C zRt0cC02U2$)YdK=&b<@w=f|IZ+^Ewd=S!u^5v`USB#xkgiY#Dx$s;gX9O?88Tb%W9 zIX7Id98;_ni}OOEYm-zc*PmIOBO;+)7SQ(TV?39nL1P&rYaxoELIpt|xvD~YQ^t-m zvi8WJ1NWyMil+33 z6I=E7RtH3A&TZG}>QFXkSVA0lPq<$6ddNZL77-)?kKRKwt3I{l-q5kLu?S0I>b+z6 zxO9~m24({)05)?}Ro7$`rCN_#U94v$nrmek4CDafB(0D!!LI!GyU4<)K~uQErWQDJ zJcTRz-SHbEu4+}aK-_AvdwC-0O8hGxd;;;sSbmXnN3V^XQ+Phr5?*m0ZW8eT+(!!Sho^?m+A}N?nMxw9hN)lh6=rXGCeINo-IPv??O+Qd<8{KzQ z<8ahd2-qy8NkfYYq?kibdy2JOb_Lo^D;D7w-@!j-qXC-e&m!HSlZC@~*7>%h(PBEf z+VZH9V$6aAySe7+rX#1xCHV-tL;ehY$)wAI>>D&Qfk0l-VblIGx!mb}@tGe_kB(1z zy7bBI9v&L>PabQFL%lhOoZ;&4HrAkojRtRpMKqeBLuhde~JlxQ5UE8q_@DQbTa+!ZB&izIy`5t;jn*9W20IM2LK-k6wv_apTbMNQFGm%tu7Z$s5VJj^`ZZtTy)1I2 zo96&h=4m?KdkPO#HU!Wp__rXR*Fi=Hi51KZCmlSkT(g%g8 z7p{@Yz@*4i#eCnorXwn`ZnxD$#%Eo{sd*FIk*&1Uuo&hbSH&U%D}Ol~;o*3ypRXAl z{^M(K-%9FXWnTlz`JuJY)xrf>5_oq^W%LvrF5Hl5fWSdSwmW4`14_MNhM$hgON zFoy%%fyCp%p$g2PYSL6+*&xw~N7MnyVEgOS9iajABSaR~*spV(a;c@Sk7>bFadd7c zLLhAq@<+Gz^tNlcw)phri&PY=LLl3$5qRn+<*f72=J7-4U8_WvRkLWIBW1-b?j{6Z zNhFhN4&FRSQ^giFiOF84NwXBV16B&#mz%ANR>hM*Y~^-5>2G|J=JFLKm7(y^)6t7; zfbGEELIho~qw|X>2vT4l&4flnLlL^JwcJ+Ckuhs=k$+B&A&%YwUK#ZkO;mNO&P%jE z9YSI*->EyGZ-DxN&I7LAzCN7ULIpiwxXNKjyu!{qE>Rr`yvkQNZDMkMH8Aq z^G!Zrz92q{{1RTjk+tVNXaoCDYSp1~N5k%bvR>;_Hg_$J^~gF?7@JK;Cc`X;)eF-G zPi)zOKm=ej0_y6>l;`e9Vu-B$3DQ!1dRy;sj;$+6&Fb=zyMFD9H>6|qk39T9`R$gR~jA#Qwbx>-M3T0)*}`p)#p-`QH+UqNH?K;H>S*de&;EV z6vX~3OwbBPh^K|g;Rp~PJ3_oD`4IBxGF4-gSM(2hUAN2YybLWHq{y~goE^&bx};&J zhLvize;t>LH=EzHS!;2nTECXwedOku!bu*h#Jdgxx=o4q>R&j9AzY+44#7*l&%X+G z%b`!5u1`HV(`<5DvJ+c_*<{%ft6HYHY)Mwhp}4fo0}-)2LRVC6kx8sv5c2rsb^?~L z>vq6t?TB%mg&Qjeta>7C%?zt0tehc(-Kz64Wf90^&HC%ttUp~Q{xY4s^XzIeW?Fy$ z_EB=D6qyu;CgG7LXueYTkH)paD<_QOxbN}gyh|k&L8&a;?#o&`9lgvcNz5XAs$4Rw z2}9a8k<-?T7p)ETpE;K*I@C6^3SB^X*s;&+LO7I=07Gfap-R`DW|2|I(>0G(oHr!(cFgK6DPZ2+u zJLP~Q%}4~9R*D;yTrGzy-ezfshz&-HhEx8ERgGk-HN-bxbfBWm5fT-(khzRwHxdlw zElAvv32X=cT7EP*Z$(8F|ZbJSk=kmW17H;J}v9-tIe$!1!L zD$#zoM*p$3zW;yQnEb~g&-&+R>SdE4t*2jOA_t@M6-^ss>O41Clc5iD2a5!@MX@ty z&Ym5CCq~HXUm>bcXrf@qIRhvlD`O1tx?Yzz>@;Mr>$8xIBt+szMtJMLZD3XZlKJy6 zf8LNMy4h}JiSygV#& zVZOt8S`e9U(oMOH)CSjLVls%At;>+96;%+ZGO0oX3X!ZV#$vi0mc*-6noF@uTXXo% zk(Vpb3aq5v<8OWH?R{vEC^&~E<>?1Ai^UqxXuD6e4*H&|=TYkv8dnxu?`2F81VG#W zYWMGTW!99>zPq3N+5flCpYBKB{_yQjcKFbrTf zEYY_>J;+M*44)$vHp>>Rbgh|P3LywyABxBUMko;hNI*&ergKAP(U4$B8M0*tRpn`a z6u%z-b>hF}-{P10^!NFwz=%*|fG3=Y*~=r2m=KJnFDNRq6x;x?u(59HZPcwWU(B1l zW%WX;ib)Bfi(6&{^|+{&EtXW?Q=LLrwn`8avChr40y;kGFDSWDnALNOd@j=SD8CH#c zZ)f=OJ*@HupT&L1+0{8IkxH(ra3ptJW+bC89{dg>>wZyW_q3%%lnAYI1x$R-wV(a5 z!SyxG47JpfeMa&#C69~_wOpac*&Wg1D%1C$Iei(7^z4WH$GZgvFoC?i)=o4tn>;om zd`Q0%szcg*YXakVy>l7v5{*o-mcKbKc>TIi+GhUgZ!=aXkx;VB40jU z80gJWXLJjY@Vjg4dCY(M`)yPodFkT99C~p4%@6l`_UiY?@XlCh6VxE{_XDT4TwEk+ z%5ZN;4ndV9no%eQGK7ak#ZaV%vjDj=vY08)G~Ci48I#6mR#j+3j<{pd6p3Ya=U4!i zJk}D*L4p(n5y*fF2{EX_UP}d{QHa`!H;+`71@wh_@2GLyTG=p#4UUQvj>IKmu8UkH zCmcg!ija7P{cBOQa%jiaQ5=?7h+*;0j{O;USE^KY^?JB2ye77ioLTeFDxZcT#K&Ym*Xz|Fj><-MJH7ldfFlRF7y>DW^$ge$PedQzBYy z$Bf&Si=FWHNYbi;hE6D~D_iWcarH!xN_yD>uN}00#X{1TcZsMfRF()eTbYHL3SCPG zw9GI_sjjP(?OFe{QOpZ(3IJguKmdkoLBS|+uqas6p#a}H<@X*hyL`RE>C%(s6JdtZ zz7@s7(BWD}1B9h|+X_t-OSGLBfF;Yll^;G+?0QY5lic_RI{x?b?l{)1l-FHx z`DgsO)Gpyw>wv6_RR+V(hOH$tWdt*8LbC~&v+X)tg|Ulq1#FxU8`wIAe;kB`=Rl&W zV28MqSaznwv#<;|6$o)81-w8b-4(49$kbPzkxo1wGbufGD%YjEC8VvbJ0k80i&#$5iyT5xscI15n-T6t}LC2 zE~E45Yd<1#bWr@idgr{EuleJZokNzOn?guwdhCt&jvuQQ$tKIN-`rzHx3+#LZ?#~X6byc3?`M*T9r=KJ($w&DH_elHB>|ypw z`%34Gy%A|ZQlw^7@R^{5WHWCFGz9JV8h*+(KX~+c^5)Zh<2U1>9oXWU8TawQi-H%Whh}dg zqtaX5TN^hL{+KRWG(Gc_hz)xSQL1i8EXvYAxTcgX6i5V=P|Djbi{@hyMcGGI#;7|~ z@T`)kn)A=0*<5qeEmzAp>;AyJU`Fpe>c>-9Rb02_0WKfyM~nZQFhvTuBB+Y}ghsoj;OjUlWGV7u85jX)CiJsG$N?eT`TbUIA+>Qq$GhQ1wc( z-Z)u*Qp(b@Co+5dEGxC}4a%Tut&dur2RTL0OI~rhmhNLUmE)1-6|Jua?iM@D><^|8NL53uE7ei9s?Nn~ z!S#);t{?YZp8Rm;YOpr3Eye99QiKZp5T8GPB1f71Jwr2$=ATB1rl&t(aT4wWT zH9Ys}j>)vjy40UXy;Fx&S6{vFB3M^FANwYluDiRJC6VD4J6he3Nva zs5E+0`h0+MD^Kg4;4`-q53dYD=%o*`v&6m5Kk^LH-X4u;Y9D{aHR7wMV{VMnq?lI(Vn6|u5nHeNmtuUSG=dS257Tj+oui+MGiY zEfn|F`Koov5%X2|Bd1Ee8PiR^`d=W@yIe-E2+tJ9a90o?7~GYz9{%q z=NZ#lhFA%lI)$eQQkzq3@vw=$g!9A_h+cd{T_aTmOi*MJ$z8_gGhXo*@kMy>M^u6U z%wsb)BQx6IoBwlS$k&%NYTT%J_ug%qvgc4Ahfu8GT)gPe`p(#ZPpXR!(V{NPh})uA zMljh`K>j!WANX%#D zt<(-(8fsN!)*VOf-e>k#7(Tabd3_qa0D3-Ycad>>Nfn#)?a^p5&6O9DzSd|vqP0Ld-0B|ge-bPU)RbKgN?ZSIFgQVsy7p5l+h+yhu* z?)X`PV25MZv!%F!Ey;U4F|U@_G9@M=iIPj`ut9pk@j(9K;|a6u5LIyD*P3=R8zc02 z$FoUeCQ2bQ<>p?>ioogBshyDRKvX+`IjE@2?w|P~;j0+cVp)?H%R)CjU0Y0|rgxPHLOO0^Q6P43mi9v9^0_ z$QnUdLWP(P8VZ*H4oGQ_v-HR)-R{CdFKDZ!LKFQ(w}B_6uYLiAz`mwHsEh2}KflLsVIqzw-g5@;J z80x65P8xu)Kx$1cq+i=@;~V!5eY(idtB4)n@(l5OrpN6tVA7ZZr}sp8cw-k1PVwd} zvuf|&y{UfuD{ODE7)dOw9>N@>mckk zCu)w>_mMv4x+!bdB2DVTy(KBhLXfvgJ5yHUKR!PbXD`>TUu5v~4oCay-sXAttBF3$3>iP;9IP0Zan0 zgrhzk3fVZ24TY@YwjZ7v{x*KE{^GxP{9*fz_HmYAwnFu`R;E;m=G@ug60(lMK4})6 zb{b4!S0FFy;$t|s*MuSnP_0W*Nx>2cx_%s5>S3SGK%k1y67`@=r;~NOq&CzZp498% zPG7kM$%O=WxcJx~{`BRSS1r=c2f82O_anSAPt!R0)%?0}y0};juNPo08oakUL$)d{ zqyB!dIo}i%-tR{eIXPbyU2PK4fJ1djy}pnb5T} zjX>0RFFsmgp^ThYSz~L3++DIg6rGlZ7AB|gN&GUiZNY}a?(zORAI+~d)AXQPTN@5$ z?uMFs=H#pfZ{Ab8ei;HJK@+7l>cleJW+m9xtRJlDCPrrZU>D?7{{OE2b1P4Uv)y_w z3PRtf1oc3sozk&yS5cIC7>W8XE*RP)_cVG$V93lniL#IL2y3>R-v*zUZ;7nX28I*X z7Ep%F%crYzuDJ~q!&Tz+(gq1g;9I9bz3%IM@DjgJLV3YIm}e5}fC949M{=cZhI7l+ zB9#&>HPH$XTIM68NfCOAR0cff2Qw_HMlxs#VCB~HSdh7@qH`DD<5ofxmHtloyKo8o zmID`Ezp(ja6)x+h0~HrU(?rnxHC_s;(iBw+tCXZUVy&SjQ|jv$WB(a7BT9x4SBCM* zYD~zb`;K~{E--~vq{;PMyBN#p$o+i3;x8P^A>}B2K&KfDu_377j>&?MSgC#H;_}iO z%&gdC5lKzXWMQtGeI2C5>0_%Y6L@S{yFH*h0X%@Bx-+DXX27|yv`N;RGAg0JH7i+5 zk0Ow0>fQYn^bFC@#q+p#@$_PE7km(NVK+={aLz!=*n{1S0KYxtyklQ}3; z=!_F~kDhR_F)2T@AKG^2!b%`aCy)b;fKI$_2sS-Jez9qGKL7PcfTg+Sh#!PV0orA@ zAbtLw=iJdztAsl0V}4fOs~T5Rp7B@w*`+80oWP2RiEJpk(q&2(P4Y))tZp#h1iG+w z@m782w&hD7A11`1X{L%uB2x4qor~#~IvKRg3q{`7&h1cUwSF7q>r|mGXmK$nK;zJm zt;%-Jp_g$fYy_2qAG{`6pePt{fddLa9R<68`6`RCx+{!JC~k7~==~F3TfEon(dhYf zuQzxv%i-~bIMk=>(ezV?MBI^24-%=_b?&mN+1%-Kr(c8@kha{A>+pQwExD*3AV^J% zqS*9H%i564hSsGHK2Q%I>5};BR(hWh8dsKhtZnZ_V`F=z=QAg@`gs852f^b{b>ry`2GLC|Gt+EF+_$!bhHd8d%(I&Z5`UtskdOgdF#_ za6P;jO59xSCP=^(3?vbB&|RsV3#b1Q**q|Yj0f)V=2L5rcdT_R@EEVe_;DXR9vlgx z$OT7N9L&OZK2H7oW~-4q&;Ib>OOdT{bdl!t1QgZAs2Yrvxn?Vo(ZeY=w&ZOL5t`JK zn`vm5J|VZ}B}mfwlrGn}mqyl&EGB+WWQ-T)yaRxaQ3h9wR>Ii6Rm7mzt>!I8;$_tI z8L;(;nYKOJnH#G*uS<+`sp?dYG__!H@tmUqvFE0rHD;kq!)EVMqOBx2xHr-_W-3q6 z1%4PUi%V@xJNwkHq^nz>8D01K?1mvof#UybI@FD3qes#?CFt=5ze@7#bdoM5JhsM9Vvkb`vxr8A6FxBqgo7W9wyWf=qyJLAD}_ur;<%)+O@HT$Fsp4A3M7G1M52to0}>EQQT9lslc#!? zV?)83>4fJ>SQ?sO=wt7~=lSOI{=z(Oo_&Gd5N=W4@VW2sZ>uZfUa11SV1X1;@Rg~t zP?1h`eGnnvh!O`8T1Lrt;At%mYP!D8@m{0XXQk8#ZzklLrNKSIfwLK79Hc1ucv5~W zd{{bih_?sgy;z{AJwq`Mi}QWSZ5%xh7w94;@PQ$~{PUQnqJ7PMOeio-c<8M0nM*4p zq>V~@zPA05=`Z~VIKT1uw9+fe8ETKlDQ#pkp%eMS+Cm6X@znkW5PS$UGIxy|#r9Hf)^YV=QIp1#1JJ2YLN^vA# zS~3%##6i#HXy!@q-&e1AgSeyUaIv}+2IWs%ex&}v5|d{#QZIr!mS6~aWDB#Mexk%2 ziF{;;v&B<7a#g?&ZNLK9|J_&w7W&B3`0S*Io(FEbEr5VIa=;`?+|{l!0PJ$$6BEkO zCg{G+OKo>6I0XG*Wdyrqq`*OpURSWEoV2)MSaSGa&|2~2VKiDo7Ps1FR=wb{5ygb! z04j7kDI|iZ)wxm>xyfWu8{8F8;Q!AR@Fz)lForMqCGi(Jy>K5p1LjZx23JO=R|9*P zKBn#2EzC|m>V=nDA7(sATIMXSyS7e3*U=I8P>Yj&$sr!BRzcpB$Nnjge)}gMe|T+t z95S!i=B01@jP5xuSM;>g0t>Q@;uZHuG(4!H5g^km$AFDM0R}~eQl>-4-7wFGuWF%E zuIp4IrGosYzxpHE7k+@0yz>mBrBUw&IRJBJxN}+5E#_%6q!5ofK0Z%zo9en6JyvDn zqI{$=K^UlM=;#UEbk3m_+=ArcP45YDL|w&WEjL%QN~B`PxwBxDCP@};Fw5og#v34X ztj6}p-=NFjjWPTg=Zt#3umfD_`%Ll7n@-N^!H=^e>+_d>EtMF<;<=UM5_y6bMqjDS zntt9Z?~R8;&+C=IjWIbU^=#dF;I-F>L2l!5He;;g$Y;JH&^#4gjW<5-J;WS3Xm<$! z11XCH<$wZ+^E`hZE=q2{KD(&LS;RfnAcTSDWEh2^l#7`Su%0z8joXfGAR1t4Sx`}2 zGp1wrS$H-}D<@oDc>7h0YLlb%8hn&dlSd2{J2G$Qw?jwB%iMM>n%zM%f@)x9x-GzEu#q~rQi3%y->xsYjIq7ftTcKzoDPMCaj655i%O3~3 zs8jb<+nHWkgXsp)23FD$n$4u0^`x%jdUb~K6fz9ZZ#Qudg=zH?9lnFB?Avw3-dk_2 zorwB4+8w%6PWN##8|v*lfHvs{(!O_Nq(F37Sf!)+%bAw-F@a6Bz(PXF;=oEQRaGR9 zey}^S22uKRJ8ouX(@Co`tgziKzaG1ze7P&H4;=QR7}nVigd(+0BsojcCCi?#M4S=IWaq`=#a=YRas-_r_x-G zx&SWl1NFPkPAq24!!})Qa+k)u~(Ta_NVoq*+Re zsi2g>Rvlm1{QcMk%ULtwbX}PD^=^XvdOiHn4}bTg@6|y5ytkZzL9tca3JQI-`Ep2Q zYpG+)y;p9quGw0j45q?_KnB%1O~}Z_G%*|Fz@yeKJ%A09-A+6JZ3hT*z&j?ylI*3VjyBr0FfE!?E#WlUx%=3wMQ^J3sbP*T;%` zmCHTp^Xl8R!Tm1}Oj*&H1^SZRy_RYmUgo#1;k(!QnB~OTCOhq5gF{$|JHa}f((8H;#&UG;~3`3$l(H3b$Y+1B1qbQPj5gP-V zcc(!6WIHIyh)ARMvVehJPt99ee|?cKh)#g$qeNpLgu_IcPX-xqxHu64Xnf&EYeD5ef1S?@O3B> zW*g?U9Ml4?0PJZInn;{bH=IgbK75Lcr0UT^<9*0`Ny6h~jC1!bZ=Mt1r+s*G^)fH9 z42_IMUL5B@@ie?(*q4(5!!0deq$P-S)1qWSJRzwZxnYk71*gH*_G${(q3cH9qqJv_ znocy<7OerG32lLJ56s{42A52ti(6+@M^Hu|npt)sHF8N+%Pn+U63L0AE;|8}NO#ow z;f19u3NRGwbz@}`naXh}nk>r5m5K~N?5LNpwD26A-nuTH0MVTSx*+O+2`GNi;a|oN zaW2SS5gR-WB7Airaq{NLYE(+EG{c{EiN_N5=)8`T|H3Cf@pNBc&c@>|avBLI z@q{7|!-RlpU^Ux_sw`$uRn=6r;V9swVkU4fN~|;BJOR(W1QYkWDZ5ECF#H$`sD<>V z?NQ}FCN!T!UkAjY;)M|#=Q7{4T!Dkii5&%%NjnM0iLRckyvDTB~b_a><%1!({kk{ox^3#vMjUmuA}Gyz5FSOGzRB1nuz z8&rM9=A|joH4%N~J5y_)znRvXC-bl3D=(d&mqurHUO5p%G-XfS?$MT)Sv36l-kfKx zT;(PvyTmTk+}oAVv~~P-Z20I0b6X%^h{u&eIq!%}MUBS(y)$7hI zzn&`;){U^E^bynneIkK%nQ@Y?>kFW-y#EJ2KAUv8;^le#+xO@#kMHk;wn0bl3^bt1 zrYqd>1Y+zvEKCr(&HkEAE#+V-n@yfn>sF4Ze4<`IZjByNe2%I>wl9yR@dsi3;{^*nJ5&4vtK3LB~w zKuTi~YdagnrXxbrnYz1h|Ke-NOZfl%k3T9C_X%(3RaoqmUnrIJ&Y-PoY|cb1)n|v# z?EQ>eTNc#KRJE6#sySsv-SO^ICyP-dG(sy(mfCW%dh;QJ#u`Y4a=Hl zx|LVB)v@!1R^BR{n$$URZvlj?%F3rOxSoO9Avjq~q@pD;_@V{Tt+#X#7TyEbSu?)|sN2z0DBS`={Cdsxsy=*TZP~u%j znd)KsiF|6?h?!q@2RjnWcC8bb0y`W#?wczDqqHa0_VI=8+D%CWU_k{G=e8rcd@&w<2&jBNVc zd5qNOx&n&9FBs%5v=?lZQ@Wix7RP^g?QCtkV(+T7I%6Gq(|G=xeug~M&%8Sh3?Uar zU1%1OTtaKF??!`&>U`nn6NCFa;bXlTq@V(5EXxzp1eBDT285g%Tk7+;34vJw#CJg= zl3j(@g$GTvt;WfqqxLxtcUgasR41 z*P9h01U&T#)ks}LCrEKhgm@MsO_O@|SZU2eSFyWvKJawV?{5ys;e1ka)YPf}xaX)+9?7 zdxzdF^bA^!4Tvx>MjAlNPpvn>kMWPhiF%BM0J<(L7M7M7zLRIZT8Cjqp3MH}_ zaV@15m{6neQH@5FD6_{13tME#$!_1ZKBcZfDlGygVub3%FCQI`MF$*vo4+KkQ znTfR+MJXM74<1LS5B9`&c%In3Kr$RR_Kn$>3*NNO8^x`bBhHE5Q@QO)D>)f^n?=1T zEe8(JSt`e|vedN9Iw7M&xV4ZIBU`yOoZ6V?2|Ohye1N|*Uh+Wd=;gU9+5d>rz$jDs z^qQqGg(y!xxo5bI6IV-L@%}*bhW4XH0>Fo1>S9SEK)`To2^A4RI6Z&9rISo>a%ujJ zpCL2?XHRZtE-%dpCAKPFJ+-fm9<_2MPQP5KM&J^M?+Y9_vxX*f3u=BAql+?G z>U!dc_I1z-f+JIAB}~`BS2T=4X|&3k7h^VHV?ZnZwC$7ZrNGsUTOx^&*~K4u`_tc= z`<_i$vcN)JSdR9vj?VQRLsXvLTgeSlRe16uziSMGv-Qt}!`Pg3Ho6f?jN5rWRmebH zDKm^!!Wg4(1KBTdkFkK(BhnnH0jh6eeKC=3nVVoaWs1IO zMSJuaL!jMj(=*p^D{b?6yQ_XFy^JLvw5qon6ldirm+3f-(8d(BQF$soMG(w}F2P!) zMx&r=Tf^FH?P>11ZgnZdrh~Jhv{9iD)Lo4=2Eb3-KT60LUQ7sTug7%(T7|Ha{Nm*W87oejp1;;;=qGZFahQXu#x8C0bZ1t0vK$?xl$b; zS7)f6eIwmXM%|zj^P1%8bCo3M;ecY_<_+t~dc~e6=m@CCK{&BXeHCfi#&zksL?Gq` zS_>L9p~m`g&_VK+Bf6R6J{$a;_-mWK6L=O1UR*p>Ja)M%YpP)ZqQ@0EO(4bV!-B8+ z?I~2K>R8^icRth@-ZbIMxstl=;^XP&Pma!>yUky;?l|;oi?jGj=qEh_Y(mG0zD{w7 z{PC9f-g@z-4`05#-F&+F9BIyyJ5T!k@gc8oPv@5(R=;2uU;lljOs^{jp;TCy7vra-hAYfvr=geisdK|Mp3A`3brJal-O z#793$ZqcO746O3`R9GaC*)>Wsnlg>DGCu?(LqITKjA>r3N^~hAy7(Ku&dUMWAJV;n zM3JJH5GB-Eqi$~4YxOeVPFUmkU~#b$Zfd)jz{d1d*~Vi&N} z^my%9J6HDGTF?iJ{Qusuqf-K&0ua>n&D{;-i(9_OZ@U?QP#cF9~0R<@p4KuDy7X}C~^?Of5C zSX)m}+NiGR6_@0lmBdagstWVdNjvzO{={$D*MLXaR?Cg&OZ)3{j66+o?d_KD+*aZg ze!?VSvRuuC)LL2vNvrKWD`SO~L*Lh?<+tcO?pZthb)M$z)mPqMM#ebxVJmOlMCi^^ zyJ(D~f-u6}`U!y#ePRTh)j2TLfsL}#(>+zP%!;mW@p%!i>$rzoIuh@^VKSkZaixn2 z4tq2V%fWi<-}(svm>-%S3eXl07}2Her;9KaADC<@N-AwphfAXfN@3VD^ z{CkE*Azb{RZqNe+)x^MhAPqs-(4{<|%kAcCIwtsCc1zXYEm!2ieGTYvqpJ$l%cdzm z>*8!C!Y^3fA1e0Iwdm1+tEpWTLDiOVzj6UUieZt6Pd zq^G?hShI)&Et3N*WW!so+>K+gM-mT(QS%CrEiUj7wOg~P;A`$$b5LiY zM{0!jG+s2F9{1=Z*Hs$Zvq!CPcdPGGu`pM!v+^EF`8Y8ky^K|N%d#xxq_$5s@h7G! zACJaixA+$9CE*=U9aq?<;fEuYZeP!1IgK`n(X8ESXIW;-uD1}5dCv65#B)%$dnvb{ zpK&p{aqD(e03e6i7?%~ma%VS)Q8?6&E#!uR8s_{`s_Yq$=f^1}-A5azG}I`AHjOeU zHrb@lB4_Thz>j0&D42TiF@Z+f7})(DbCZtr8Zup{6=f@z%5#Zri_N16S~4;dD}qoQ zI&>v|`nXGVBXvS`?@7CFsyM@ZCfTA2L=N6Umu&#wLObjWo8Go6sk&W=>d6aG?K&U4k53+bo0S(NZ4erukK)y5 ztjLzR!P=CRtSBXsOPdIlLpD!-Xl^`NGYWh#FUa&K_ry{l$IeUMLZ#`@p?A~8bLLFZ zZvwz$M6zwBuH^b1>x5Z>ZAyVeeBnaJ2girAoaHQ=%^ofG|7Q$^uGU_%DtmBM2br3h zx(9%lQSxZTRV^*Q&fw9EL9%6^g+-Sr?)kABCyfmT023CtGt2^{DC8nbGuA;frtKn1 zG}h3qAxG5sz2aQiWyW|E|unDKOWc0NU1Ugl~!{7Q~nm)X#CsMyIW z5_I?_Kmo~;3~+2^B!GPooVerbt@;h>n>c9X4a3+Jak4y{^ol#&hELPbg6A^f1-pzm z=_ii%S~BLnb_^U#!K0vKe6R5wjoD`7&4>xK2f>ietvhE%?HnEK;}3v|i2I_sWC}<= zA$~^nDg|ZxUcEpr3wyW%Z0t=E36X})t4KM3qdj+`+N;HkGrBT0uVM6p-MNDKzuthy?`qKPKtmu=>Sn1*u5|H?l1vYzeYCh%q`{*oYcpn#(DvmBMZF06R(f*t*YO4@-6yL zdv5&n=k@cWeixai){dKC9o4nc2dQc_N?

oyE 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

!gNZBi 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 literal 4464 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 Ce<}_D diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.ani b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.ani new file mode 100644 index 0000000000..285c0af5f2 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.ani @@ -0,0 +1,3 @@ +@sprite_count = 33 + +main = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0000.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0000.spr new file mode 100644 index 0000000000..480efd829c --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0000.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 1609 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0001.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0001.spr new file mode 100644 index 0000000000..a99704f116 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0001.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 1442 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0002.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0002.spr new file mode 100644 index 0000000000..cb91f93162 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0002.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 1776 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0003.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0003.spr new file mode 100644 index 0000000000..a07c0aa407 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0003.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 774 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0004.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0004.spr new file mode 100644 index 0000000000..27fd1a5c4b --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0004.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 1108 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0005.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0005.spr new file mode 100644 index 0000000000..e7d7f2f67a --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0005.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 607 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0006.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0006.spr new file mode 100644 index 0000000000..99d55085a9 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0006.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 941 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0007.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0007.spr new file mode 100644 index 0000000000..57fe0aa3e7 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0007.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 1275 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0008.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0008.spr new file mode 100644 index 0000000000..dd7eb0f977 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0008.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 1943 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0009.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0009.spr new file mode 100644 index 0000000000..0806335476 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0009.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 2110 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0010.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0010.spr new file mode 100644 index 0000000000..9b0e7c110c --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0010.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 2277 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0011.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0011.spr new file mode 100644 index 0000000000..668d4b0fd9 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0011.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 2778 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0012.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0012.spr new file mode 100644 index 0000000000..413f4c8c84 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0012.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 2611 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0013.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0013.spr new file mode 100644 index 0000000000..9b8b37b84d --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0013.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 2444 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0014.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0014.spr new file mode 100644 index 0000000000..cb42d82b98 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0014.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 2945 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0015.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0015.spr new file mode 100644 index 0000000000..80b92c7325 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0015.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 3112 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0016.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0016.spr new file mode 100644 index 0000000000..0f8789caa1 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0016.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 3279 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0017.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0017.spr new file mode 100644 index 0000000000..60a320289b --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0017.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 3613 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0018.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0018.spr new file mode 100644 index 0000000000..e9559ace60 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0018.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 3446 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0019.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0019.spr new file mode 100644 index 0000000000..6ee1a07a2e --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0019.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 2 +region_y = 169 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0020.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0020.spr new file mode 100644 index 0000000000..49c2a80434 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0020.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 3780 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0021.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0021.spr new file mode 100644 index 0000000000..2d93f7e424 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0021.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 169 +region_y = 169 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0022.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0022.spr new file mode 100644 index 0000000000..8695aef242 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0022.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 336 +region_y = 169 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0023.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0023.spr new file mode 100644 index 0000000000..69f8b23cd1 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0023.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 503 +region_y = 169 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0024.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0024.spr new file mode 100644 index 0000000000..70b3c51f66 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0024.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 837 +region_y = 169 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0025.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0025.spr new file mode 100644 index 0000000000..0488ae1b58 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0025.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 1338 +region_y = 169 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0026.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0026.spr new file mode 100644 index 0000000000..2f211c8373 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0026.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 1004 +region_y = 169 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0027.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0027.spr new file mode 100644 index 0000000000..ee2f29858e --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0027.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 670 +region_y = 169 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0028.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0028.spr new file mode 100644 index 0000000000..3e12a5c49d --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0028.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 1171 +region_y = 169 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0029.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0029.spr new file mode 100644 index 0000000000..f154eb117a --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0029.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 1505 +region_y = 169 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0030.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0030.spr new file mode 100644 index 0000000000..9a4bdcebdd --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0030.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 273 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0031.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0031.spr new file mode 100644 index 0000000000..ba53c3a8a1 --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0031.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 106 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0032.spr b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0032.spr new file mode 100644 index 0000000000..b9713cbf4a --- /dev/null +++ b/resources/00-taisei.pkgdir/gfx/part/bullet_clear.frame0032.spr @@ -0,0 +1,7 @@ +# Autogenerated by the atlas packer, do not modify + +texture = atlas_coroutines_temp_0 +region_x = 440 +region_y = 2 +region_w = 163 +region_h = 163 diff --git a/resources/00-taisei.pkgdir/gfx/proj/hghost.spr b/resources/00-taisei.pkgdir/gfx/proj/hghost.spr index ac829857dc..9491925d0d 100644 --- a/resources/00-taisei.pkgdir/gfx/proj/hghost.spr +++ b/resources/00-taisei.pkgdir/gfx/proj/hghost.spr @@ -1,8 +1,8 @@ # Autogenerated by the atlas packer, do not modify texture = atlas_coroutines_temp_0 -region_x = 106 -region_y = 2 +region_x = 1672 +region_y = 169 region_w = 42 region_h = 68 diff --git a/resources/00-taisei.pkgdir/shader/meson.build b/resources/00-taisei.pkgdir/shader/meson.build index cda4e352ef..60272d913d 100644 --- a/resources/00-taisei.pkgdir/shader/meson.build +++ b/resources/00-taisei.pkgdir/shader/meson.build @@ -45,7 +45,6 @@ glsl_files = files( 'spellcard_walloftext.frag.glsl', 'sprite_bullet.frag.glsl', 'sprite_bullet.vert.glsl', - 'sprite_bullet_dead.frag.glsl', 'sprite_circleclipped_indicator.frag.glsl', 'sprite_circleclipped_indicator.vert.glsl', 'sprite_default.frag.glsl', diff --git a/resources/00-taisei.pkgdir/shader/sprite_bullet_dead.frag.glsl b/resources/00-taisei.pkgdir/shader/sprite_bullet_dead.frag.glsl deleted file mode 100644 index e5be58c580..0000000000 --- a/resources/00-taisei.pkgdir/shader/sprite_bullet_dead.frag.glsl +++ /dev/null @@ -1,14 +0,0 @@ -#version 330 core - -#include "lib/sprite_main.frag.glslh" - -void spriteMain(out vec4 fragColor) { - vec4 texel = texture(tex, texCoord); - float oWhite = texel.b * (1 - clamp(2 * (1 - customParams.r), 0, 1)); - float oColor = texel.g * (1 - clamp(2 * (1 - customParams.r) - 1, 0, 1)); - float o = clamp(oWhite + oColor, 0, 1); - vec4 col = (texel.g * color + vec4(texel.b)) * o; - col.a *= o; - - fragColor = col; -} diff --git a/resources/00-taisei.pkgdir/shader/sprite_bullet_dead.prog b/resources/00-taisei.pkgdir/shader/sprite_bullet_dead.prog deleted file mode 100644 index 2546ced82e..0000000000 --- a/resources/00-taisei.pkgdir/shader/sprite_bullet_dead.prog +++ /dev/null @@ -1 +0,0 @@ -objects = sprite_bullet.vert sprite_bullet_dead.frag diff --git a/scripts/optimize-all-img.sh b/scripts/optimize-all-img.sh index 235a4d139a..8c5b9110d0 100755 --- a/scripts/optimize-all-img.sh +++ b/scripts/optimize-all-img.sh @@ -1,4 +1,8 @@ #!/usr/bin/env bash -cd "$(dirname "${BASH_SOURCE[0]}")"/.. || exit $? -find resources -type f -name "*.png" -or -name '*.webp' | parallel -j$(nproc) scripts/optimize-img.sh +opwd="$PWD" +cd "$(dirname "${BASH_SOURCE[0]}")" || exit $? +script_dir="$PWD" +cd "$opwd" || exit $? + +find "$@" -type f -name "*.png" -or -name '*.webp' | parallel -j$(nproc) "$script_dir"/optimize-img.sh diff --git a/src/projectile.c b/src/projectile.c index 8fab134807..6cf16a6f7f 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -507,15 +507,10 @@ Projectile* spawn_projectile_collision_effect(Projectile *proj) { } static void really_clear_projectile(ProjectileList *projlist, Projectile *proj) { - Projectile *effect = spawn_projectile_clear_effect(proj); - Item *clear_item = NULL; + spawn_projectile_clear_effect(proj); if(!(proj->flags & PFLAG_NOCLEARBONUS)) { - clear_item = create_clear_item(proj->pos, proj->clear_flags); - } - - if(clear_item != NULL && effect != NULL) { - effect->args[0] = add_ref(clear_item); + create_clear_item(proj->pos, proj->clear_flags); } delete_projectile(projlist, proj); @@ -550,7 +545,6 @@ void kill_projectile(Projectile* proj) { void process_projectiles(ProjectileList *projlist, bool collision) { ProjCollisionResult col = { 0 }; - char killed = 0; int action; bool stage_cleared = stage_is_cleared(); @@ -574,9 +568,8 @@ void process_projectiles(ProjectileList *projlist, bool collision) { proj->graze_counter_reset_timer = global.frames; } - if(proj->type == PROJ_DEAD && killed < 10 && !(proj->clear_flags & CLEAR_HAZARDS_NOW)) { + if(proj->type == PROJ_DEAD && !(proj->clear_flags & CLEAR_HAZARDS_NOW)) { proj->clear_flags |= CLEAR_HAZARDS_NOW; - killed++; } if(action == ACTION_DESTROY) { @@ -826,49 +819,29 @@ static Projectile* spawn_bullet_spawning_effect(Projectile *p) { } static void projectile_clear_effect_draw(Projectile *p, int t, ProjDrawRuleArgs args) { - r_mat_mv_push(); - apply_common_transforms(p, t); + float o_tf = projectile_timeout_factor(p); + float tf = glm_ease_circ_out(o_tf); - float timefactor = t / p->timeout; - float plrfactor = clamp(1 - (cabs(p->pos - global.plr.pos) - 64) / 128, 0, 1); - plrfactor *= clamp(timefactor * 10, 0, 1); - float opacity = timefactor * plrfactor; - - Sprite spr = *p->sprite; - Sprite *ispr = get_sprite("item/bullet_point"); - spr.w = lerpf(spr.w, ispr->w, opacity); - spr.h = lerpf(spr.h, ispr->h, opacity); - - r_draw_sprite(&(SpriteParams) { - .sprite_ptr = &spr, - .color = &p->color, - .shader_params = &(ShaderCustomParams){{ opacity }}, - }); - - r_mat_mv_pop(); -} - -static int projectile_clear_effect_logic(Projectile *p, int t) { - if(t == EVENT_DEATH) { - free_ref(p->args[0]); - return ACTION_ACK; - } + Animation *ani = args[0].as_ptr; + AniSequence *seq = args[1].as_ptr; + float angle = args[2].as_float[0]; + float scale = args[2].as_float[1]; - if(t == EVENT_BIRTH) { - return ACTION_ACK; - } + SpriteParamsBuffer spbuf; + SpriteParams sp = projectile_sprite_params(p, &spbuf); - if((int)p->args[0] < 0) { - return ACTION_NONE; - } + float o = spbuf.shader_params.vector[0]; + spbuf.shader_params.vector[0] = o * fmaxf(0, 1.5 * (1 - tf) - 0.5); - Item *i = REF(p->args[0]); + r_draw_sprite(&sp); - if(i != NULL) { - p->pos = i->pos; - } + sp.sprite_ptr = animation_get_frame(ani, seq, o_tf * (seq->length - 1)); + sp.scale.as_cmplx *= scale * (0.0 + 1.5*tf); + spbuf.color.a *= (1 - tf); + spbuf.shader_params.vector[0] = o; + sp.rotation.angle += t * 0.5*0 + angle; - return ACTION_NONE; + r_draw_sprite(&sp); } Projectile *spawn_projectile_clear_effect(Projectile *proj) { @@ -876,16 +849,16 @@ Projectile *spawn_projectile_clear_effect(Projectile *proj) { return NULL; } - // spawn_projectile_highlight_effect_internal(proj, false); + cmplx v = proj->move.velocity; + if(!v) { + v = proj->pos - proj->prevpos; + } - ShaderProgram *shader = proj->shader; - uint32_t layer = LAYER_PARTICLE_BULLET_CLEAR; + Animation *ani = get_ani("part/bullet_clear"); + AniSequence *seq = get_ani_sequence(ani, "main"); - if(proj->shader == defaults_proj.shader_ptr) { - // HACK - shader = r_shader_get("sprite_bullet_dead"); - layer |= 0x1; - } + Sprite *sprite_ref = ani->sprites[seq->frames[0].spriteidx]; + float scale = fmaxf(proj->sprite->w, proj->sprite->h) / sprite_ref->w; return PARTICLE( .sprite_ptr = proj->sprite, @@ -893,15 +866,19 @@ Projectile *spawn_projectile_clear_effect(Projectile *proj) { .pos = proj->pos, .color = &proj->color, .flags = proj->flags | PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, - .shader_ptr = shader, - .rule = projectile_clear_effect_logic, - .draw_rule = projectile_clear_effect_draw, + .shader_ptr = proj->shader, + .draw_rule = { + projectile_clear_effect_draw, + .args[0].as_ptr = ani, + .args[1].as_ptr = seq, + .args[2].as_float = { rng_angle(), scale }, + }, .angle = proj->angle, .opacity = proj->opacity, .scale = proj->scale, - .timeout = 24, - .args = { -1 }, - .layer = layer, + .timeout = seq->length - 1, + .layer = LAYER_PARTICLE_BULLET_CLEAR, + .move = move_asymptotic(v, 0, 0.85), ); } @@ -1209,7 +1186,6 @@ void projectiles_preload(void) { "sprite_silhouette", defaults_proj.shader, defaults_part.shader, - "sprite_bullet_dead", }; const uint num_shaders = sizeof(shaders)/sizeof(*shaders); @@ -1240,6 +1216,10 @@ void projectiles_preload(void) { "part/stardust_green", NULL); + preload_resources(RES_ANIM, RESF_PERMANENT, + "part/bullet_clear", + NULL); + preload_resources(RES_SFX, RESF_PERMANENT, "shot1", "shot2", diff --git a/src/projectile.h b/src/projectile.h index d308659b3e..b09d5d12c6 100644 --- a/src/projectile.h +++ b/src/projectile.h @@ -40,6 +40,7 @@ typedef bool (*ProjPredicate)(Projectile *p); typedef union { float32 as_float[2]; cmplx32 as_cmplx; + void *as_ptr; } ProjDrawRuleArgs[RULE_ARGC]; typedef struct ProjDrawRule { From 86d5c3f0841fb2d08678d9e9f04d08d82590c40c Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 30 Dec 2019 00:24:08 +0200 Subject: [PATCH 085/104] emscripten: build with STRICT=1; use closure in release builds --- emscripten/preamble.js | 8 -------- src/meson.build | 21 +++++++++++++-------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/emscripten/preamble.js b/emscripten/preamble.js index 203240bb9d..3f756a9c66 100644 --- a/emscripten/preamble.js +++ b/emscripten/preamble.js @@ -7,14 +7,6 @@ Module['preRun'].push(function() { FS.mkdir('/persistent'); FS.mount(IDBFS, {}, '/persistent'); - - // This function has been removed from Emscripten, but SDL still uses it... - Module['Pointer_stringify'] = function(ptr) { - return UTF8ToString(ptr); - } - - Pointer_stringify = Module['Pointer_stringify'] - window.Pointer_stringify = Module['Pointer_stringify'] }); function SyncFS(is_load, ccptr) { diff --git a/src/meson.build b/src/meson.build index 280d93dd6a..d393c33303 100644 --- a/src/meson.build +++ b/src/meson.build @@ -193,27 +193,30 @@ if host_machine.system() == 'emscripten' '-s', 'ALLOW_MEMORY_GROWTH=1', '-s', 'ENVIRONMENT=web', '-s', 'EXIT_RUNTIME=0', - '-s', 'EXTRA_EXPORTED_RUNTIME_METHODS=["ccall"]', + # NOTE: the _SDL_LoadWAV_RW is an LTO workaround; we don't actually care about that function. + '-s', 'EXPORTED_FUNCTIONS=["_main", "_vfs_sync_callback", "_SDL_LoadWAV_RW"]', '-s', 'EXPORT_NAME=Taisei', + '-s', 'EXTRA_EXPORTED_RUNTIME_METHODS=["ccall"]', '-s', 'FILESYSTEM=1', '-s', 'FORCE_FILESYSTEM=1', '-s', 'GL_POOL_TEMP_BUFFERS=0', + '-s', 'GL_PREINITIALIZED_CONTEXT=1', '-s', 'LZ4=1', + '-s', 'MAX_WEBGL_VERSION=2', + '-s', 'MIN_WEBGL_VERSION=2', '-s', 'MODULARIZE=0', + '-s', 'STRICT=1', '-s', 'TOTAL_MEMORY=268435456', - '-s', 'USE_WEBGL2=1', '-s', 'WASM=1', - # NOTE: the _SDL_LoadWAV_RW is an LTO workaround; we don't actually care about that function. - '-s', 'EXPORTED_FUNCTIONS=["_main", "_vfs_sync_callback", "_SDL_LoadWAV_RW"]', - '-s', 'GL_PREINITIALIZED_CONTEXT=1', + '-lGL', + '-legl.js', '-lidbfs.js', - - # Try enabling this if unpatched Freetype crashes - # '-s', 'EMULATE_FUNCTION_POINTER_CASTS=1', ] em_link_args += subproject('koishi').get_variable('koishi_external_link_args') + taisei_c_args += ['-s', 'STRICT=1'] + if em_debug # em_link_output_suffixes += ['wasm.map'] em_link_args += [ @@ -231,6 +234,7 @@ if host_machine.system() == 'emscripten' '-g0', '-s', 'ASSERTIONS=0', '-s', 'GL_TRACK_ERRORS=0', + '--closure', '1', ] endif @@ -272,6 +276,7 @@ if host_machine.system() == 'emscripten' output : em_link_outputs, install : true, install_dir : bindir, + console : true, ) bindist_deps += taisei_html From 0b4c8e182c110279221584e4affcfd37caa12f0a Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 3 Jan 2020 23:13:17 +0200 Subject: [PATCH 086/104] emscripten: move all JS code out of the html --- emscripten/preamble.js | 122 ++++++++++++++++++++++++++++++++++------- emscripten/shell.html | 85 ---------------------------- src/meson.build | 12 +++- 3 files changed, 111 insertions(+), 108 deletions(-) diff --git a/emscripten/preamble.js b/emscripten/preamble.js index 3f756a9c66..00a9b98e81 100644 --- a/emscripten/preamble.js +++ b/emscripten/preamble.js @@ -1,14 +1,106 @@ -Module['preRun'].push(function() { - ENV["TAISEI_NOASYNC"] = "1"; - ENV["TAISEI_NOUNLOAD"] = "1"; - ENV["TAISEI_PREFER_SDL_VIDEODRIVERS"] = "emscripten"; - ENV["TAISEI_RENDERER"] = "gles30"; - - FS.mkdir('/persistent'); - FS.mount(IDBFS, {}, '/persistent'); +function E(id) { return document.getElementById(id); } + +var statusElement = E('status'); +var progressElement = E('progress'); +var spinnerElement = E('spinner'); +var canvasElement = E('canvas'); +var canvasContainerElement = E('canvasContainer'); +var logToggleElement = E('logToggle'); +var logToggleContainerElement = E('logToggleContainer'); +var logContainerElement = E('logContainer'); +var logOutputElement = E('output'); +var dlMessage = statusElement.innerText; +logToggleElement.checked = false; + +function toggleLog() { + logContainerElement.hidden = !logToggleElement.checked; + logOutputElement.scrollTop = logOutputElement.scrollHeight; +} + +var glContext = canvasElement.getContext('webgl2', { + 'alpha' : false, + 'antialias' : false, + 'depth' : false, + 'powerPreference' : 'high-performance', + 'premultipliedAlpha' : true, + 'preserveDrawingBuffer' : false, + 'stencil' : false, }); +// glContext = WebGLDebugUtils.makeDebugContext(glContext); + +canvasElement.addEventListener("webglcontextlost", function(e) { + alert('WebGL context lost. You will need to reload the page.'); + e.preventDefault(); +}, false); + +logOutputElement.value = ''; // clear browser cache + +Module = { + 'preRun': [function() { + ENV["TAISEI_NOASYNC"] = "1"; + ENV["TAISEI_NOUNLOAD"] = "1"; + ENV["TAISEI_PREFER_SDL_VIDEODRIVERS"] = "emscripten"; + ENV["TAISEI_RENDERER"] = "gles30"; + + FS.mkdir('/persistent'); + FS.mount(IDBFS, {}, '/persistent'); + }], + 'postRun': [], + 'onFirstFrame': function() { + canvasContainerElement.hidden = false; + logToggleContainerElement.style.display = "inline-block"; + Module['setStatus']('', true); + }, + 'print': function(text) { + if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' '); + console.log(text); + logOutputElement.value += text + "\n"; + logOutputElement.scrollTop = logOutputElement.scrollHeight; // focus on bottom + }, + 'printErr': function(text) { + if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' '); + console.error(text); + }, + 'canvas': canvasElement, + 'preinitializedWebGLContext': glContext, + 'setStatus': function(text, force) { + var ss = Module['setStatus']; + if (!text && !force) return; + if (!ss.last) ss.last = { time: Date.now(), text: '' }; + if (text === ss.last.text) return; + var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/); + var now = Date.now(); + if (m && now - ss.last.time < 30) return; // if this is a progress update, skip it if too soon + ss.last.time = now; + ss.last.text = text; + if (m) { + text = m[1]; + progressElement.value = parseInt(m[2])*100; + progressElement.max = parseInt(m[4])*100; + progressElement.hidden = false; + spinnerElement.hidden = false; + } else { + progressElement.value = null; + progressElement.max = null; + progressElement.hidden = true; + if (!text) spinnerElement.hidden = true; + } + statusElement.innerText = text.replace(/^Downloading(?: data)?\.\.\./, dlMessage).replace('...', '…'); + console.log("[STATUS] " + statusElement.innerText); + }, + 'totalDependencies': 0, + 'monitorRunDependencies': function(left) { + Module['totalDependencies'] = Math.max(Module['totalDependencies'], left); + Module['setStatus'](left ? 'Preparing… (' + (Module['totalDependencies']-left) + '/' + Module['totalDependencies'] + ')' : 'All downloads complete.'); + } +}; + +window.onerror = function(error) { + Module['setStatus']('Error: ' + error); +}; + function SyncFS(is_load, ccptr) { FS.syncfs(is_load, function(err) { Module['ccall']( @@ -17,16 +109,6 @@ function SyncFS(is_load, ccptr) { [is_load, err, ccptr] ); }); -}; - -Module['preinitializedWebGLContext'] = document.getElementById('canvas').getContext('webgl2', { - alpha : false, - antialias : false, - depth : false, - powerPreference : 'high-performance', - premultipliedAlpha : true, - preserveDrawingBuffer : false, - stencil : false, -}); +} -// Module['preinitializedWebGLContext'] = WebGLDebugUtils.makeDebugContext(Module['preinitializedWebGLContext']); +var debug_tables; // closure may fail on debug builds without this diff --git a/emscripten/shell.html b/emscripten/shell.html index e25e26e19b..db9210aa69 100644 --- a/emscripten/shell.html +++ b/emscripten/shell.html @@ -210,91 +210,6 @@

Note: this web port is experimental and may not perform as well as the origi
Powered by 
Emscripten - {{{ SCRIPT }}} diff --git a/src/meson.build b/src/meson.build index d393c33303..1fee4e19f1 100644 --- a/src/meson.build +++ b/src/meson.build @@ -195,7 +195,6 @@ if host_machine.system() == 'emscripten' '-s', 'EXIT_RUNTIME=0', # NOTE: the _SDL_LoadWAV_RW is an LTO workaround; we don't actually care about that function. '-s', 'EXPORTED_FUNCTIONS=["_main", "_vfs_sync_callback", "_SDL_LoadWAV_RW"]', - '-s', 'EXPORT_NAME=Taisei', '-s', 'EXTRA_EXPORTED_RUNTIME_METHODS=["ccall"]', '-s', 'FILESYSTEM=1', '-s', 'FORCE_FILESYSTEM=1', @@ -234,10 +233,17 @@ if host_machine.system() == 'emscripten' '-g0', '-s', 'ASSERTIONS=0', '-s', 'GL_TRACK_ERRORS=0', - '--closure', '1', ] endif + if get_option('optimization') != '0' + em_link_args += ['--closure', '1'] + + if em_debug + em_link_args += ['-g1'] + endif + endif + foreach suffix : em_link_output_suffixes em_link_outputs += ['@0@.@1@'.format(taisei_basename, suffix)] endforeach @@ -259,8 +265,8 @@ if host_machine.system() == 'emscripten' cc.cmd_array(), taisei.full_path(), emscripten_global_link_args, - em_bundle_link_args, '--pre-js', em_preamble, + em_bundle_link_args, '--shell-file', em_shell, get_option('c_args'), get_option('c_link_args'), From 5616fde8d728b61af570c8e743afa04b94cc159f Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 3 Jan 2020 23:57:50 +0200 Subject: [PATCH 087/104] Get rid of youmu_common_draw_proj continuing unraveling the youmu draw code spaghetti --- src/plrmodes/youmu.c | 10 ------- src/plrmodes/youmu.h | 1 - src/plrmodes/youmu_a.c | 65 ++++++++++++++++++++++++------------------ 3 files changed, 37 insertions(+), 39 deletions(-) diff --git a/src/plrmodes/youmu.c b/src/plrmodes/youmu.c index 4520e29573..429f1148f5 100644 --- a/src/plrmodes/youmu.c +++ b/src/plrmodes/youmu.c @@ -121,15 +121,6 @@ void youmu_common_bombbg(Player *plr) { capture_frame(bomb_buffer, r_framebuffer_current()); } -void youmu_common_draw_proj(Projectile *p, const Color *c, float scale) { - r_mat_mv_push(); - r_mat_mv_translate(creal(p->pos), cimag(p->pos), 0); - r_mat_mv_rotate(p->angle + M_PI/2, 0, 0, 1); - r_mat_mv_scale(scale, scale, 1); - ProjDrawCore(p, c); - r_mat_mv_pop(); -} - void youmu_common_bomb_buffer_init(void) { FBAttachmentConfig cfg; memset(&cfg, 0, sizeof(cfg)); @@ -141,4 +132,3 @@ void youmu_common_bomb_buffer_init(void) { cfg.tex_params.wrap.t = TEX_WRAP_MIRROR; bomb_buffer = stage_add_background_framebuffer("Youmu bomb FB", 0.25, 1, 1, &cfg); } - diff --git a/src/plrmodes/youmu.h b/src/plrmodes/youmu.h index 4fee81cfcb..973b7d76c5 100644 --- a/src/plrmodes/youmu.h +++ b/src/plrmodes/youmu.h @@ -20,7 +20,6 @@ extern PlayerCharacter character_youmu; double youmu_common_property(Player *plr, PlrProperty prop); void youmu_common_shot(Player *plr); -void youmu_common_draw_proj(Projectile *p, const Color *c, float scale); void youmu_common_bombbg(Player *plr); void youmu_common_bomb_buffer_init(void); diff --git a/src/plrmodes/youmu_a.c b/src/plrmodes/youmu_a.c index 52d81d9434..a16e7ea6ac 100644 --- a/src/plrmodes/youmu_a.c +++ b/src/plrmodes/youmu_a.c @@ -15,7 +15,7 @@ #define MYON (global.plr.slaves.first) -static Color* myon_color(Color *c, float f, float opacity, float alpha) { +static Color *myon_color(Color *c, float f, float opacity, float alpha) { // *RGBA_MUL_ALPHA(0.8+0.2*f, 0.9-0.4*sqrt(f), 1.0-0.2*f*f, a); *c = *RGBA_MUL_ALPHA(0.8+0.2*f, 0.9-0.4*sqrt(f), 1.0-0.35*f*f, opacity); c->a *= alpha; @@ -56,14 +56,28 @@ static int myon_flare_particle_rule(Projectile *p, int t) { return r; } -DEPRECATED_DRAW_RULE -static void myon_draw_trail(Projectile *p, int t, ProjDrawRuleArgs args) { - float fadein = clamp(t/10.0, p->args[2], 1); - float s = min(1, 1 - t / (double)p->timeout); - float a = p->color.r*fadein; - Color c; - myon_color(&c, creal(p->args[3]), a * s * s, 0); - youmu_common_draw_proj(p, &c, fadein * (2-s) * p->args[1]); +static void myon_draw_trail_func(Projectile *p, int t, ProjDrawRuleArgs args) { + float focus_factor = args[0].as_float[0]; + float scale = args[0].as_float[1]; + + float fadein = clamp(t/10.0, 0, 1); + float s = 1 - projectile_timeout_factor(p); + + SpriteParamsBuffer spbuf; + SpriteParams sp = projectile_sprite_params(p, &spbuf); + + float a = spbuf.color.r * fadein; + myon_color(&spbuf.color, focus_factor, a * s * s, 0); + sp.scale.as_cmplx *= fadein * (2-s) * scale; + + r_draw_sprite(&sp); +} + +static ProjDrawRule myon_draw_trail(float scale, float focus_factor) { + return (ProjDrawRule) { + .func = myon_draw_trail_func, + .args[0].as_float = { focus_factor, scale }, + }; } static void spawn_stardust(cmplx pos, float myon_color_f, int timeout, cmplx v) { @@ -72,10 +86,10 @@ static void spawn_stardust(cmplx pos, float myon_color_f, int timeout, cmplx v) PARTICLE( .sprite = "stardust", .pos = pos + vrng_range(R[0], 0, 5) * vrng_dir(R[1]), - .draw_rule = myon_draw_trail, + .draw_rule = myon_draw_trail(vrng_range(R[2], 0.2, 0.3), myon_color_f), .rule = myon_particle_rule, .timeout = timeout, - .args = { v, vrng_range(R[2], 0.2, 0.3), 0, myon_color_f }, + .args = { v, 0, 0, myon_color_f }, .angle = vrng_angle(R[3]), .flags = PFLAG_NOREFLECT, .layer = LAYER_PARTICLE_LOW | 1, @@ -94,7 +108,7 @@ static void myon_spawn_trail(Enemy *e, int t) { PARTICLE( .sprite = "smoke", .pos = pos + vrng_range(R[0], 0, 10) * vrng_dir(R[1]), - .draw_rule = myon_draw_trail, + .draw_rule = myon_draw_trail(0.2, f), .rule = myon_particle_rule, .timeout = 60, .args = { 0, -0.2, 0, f }, @@ -105,7 +119,7 @@ static void myon_spawn_trail(Enemy *e, int t) { PARTICLE( .sprite = "flare", .pos = pos + vrng_range(R[3], 0, 5) * vrng_dir(R[4]), - .draw_rule = Shrink, + .draw_rule = pdraw_timeout_scale(2, 0.01), .rule = myon_particle_rule, .timeout = 10, .args = { 0.5 * vrng_dir(R[5]), 0.2, 0, f }, @@ -120,7 +134,7 @@ static void myon_spawn_trail(Enemy *e, int t) { .rule = myon_flare_particle_rule, .timeout = 40, .args = { f * stardust_v, 0, 0, f }, - .draw_rule = Shrink, + .draw_rule = pdraw_timeout_scale(2, 0.01), .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, .angle = rng_angle(), .layer = LAYER_PARTICLE_LOW, @@ -129,14 +143,16 @@ static void myon_spawn_trail(Enemy *e, int t) { spawn_stardust(pos, f, 60, stardust_v); } -DEPRECATED_DRAW_RULE static void myon_draw_proj_trail(Projectile *p, int t, ProjDrawRuleArgs args) { - float time_progress = t / p->timeout; + float time_progress = projectile_timeout_factor(p); float s = 2 * time_progress; float a = min(1, s) * (1 - time_progress); - Color c = p->color; - color_mul_scalar(&c, a); - youmu_common_draw_proj(p, &c, s * p->args[1]); + + SpriteParamsBuffer spbuf; + SpriteParams sp = projectile_sprite_params(p, &spbuf); + color_mul_scalar(&spbuf.color, a); + sp.scale.as_cmplx *= s; + r_draw_sprite(&sp); } static int myon_proj(Projectile *p, int t) { @@ -161,11 +177,11 @@ static int myon_proj(Projectile *p, int t) { // .color = derive_color(p->color, CLRMASK_A, rgba(0, 0, 0, 0.075)), .color = c, .draw_rule = myon_draw_proj_trail, - .rule = linear, .timeout = 10, - .args = { p->args[0]*0.8, 0.6 }, + .move = move_linear(p->args[0]*0.8), .flags = PFLAG_NOREFLECT, .angle = p->angle, + .scale = 0.6, ); p->opacity = 1.0f - powf(1.0f - fminf(1.0f, t / 10.0f), 2.0f); @@ -173,11 +189,6 @@ static int myon_proj(Projectile *p, int t) { return ACTION_NONE; } -DEPRECATED_DRAW_RULE -static void myon_proj_draw(Projectile *p, int t, ProjDrawRuleArgs args) { - youmu_common_draw_proj(p, &p->color, 1); -} - static Projectile* youmu_mirror_myon_proj(ProjPrototype *proto, cmplx pos, double speed, double angle, double aoffs, double upfactor, float dmg) { cmplx dir = cexp(I*(M_PI/2 + aoffs)) * upfactor + cexp(I * (angle + aoffs)) * (1 - upfactor); dir = dir / cabs(dir); @@ -209,7 +220,6 @@ static Projectile* youmu_mirror_myon_proj(ProjPrototype *proto, cmplx pos, doubl .pos = pos, .rule = myon_proj, .args = { speed*dir }, - .draw_rule = myon_proj_draw, .type = PROJ_PLAYER, .layer = LAYER_PLAYER_SHOT | 0x10, .damage = dmg, @@ -346,7 +356,6 @@ static Projectile* youmu_mirror_self_shot(Player *plr, cmplx ofs, cmplx vel, flo .damage = dmg, .shader = "sprite_default", .layer = LAYER_PLAYER_SHOT | 0x20, - .draw_rule = myon_proj_draw, .rule = youmu_mirror_self_proj, .args = { vel*0.2*cexp(I*M_PI*0.5*sign(creal(ofs))), vel, turntime, From 997e2548f135e7b814e4ff157630d03615fff738 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 4 Jan 2020 00:00:00 +0200 Subject: [PATCH 088/104] replace remaining Shrink usage in non-stage code --- src/boss.c | 2 +- src/player.c | 2 +- src/plrmodes/marisa_a.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/boss.c b/src/boss.c index 458e5f9102..c6eebc99cd 100644 --- a/src/boss.c +++ b/src/boss.c @@ -637,7 +637,7 @@ static void spawn_particle_effects(Boss *boss) { .color = RGBA(shadowcolor->r, shadowcolor->g, shadowcolor->b, 0.0), .rule = enemy_flare, .timeout = 180, - .draw_rule = Shrink, + .draw_rule = pdraw_timeout_scale(2, 0.01), .args = { 0, add_ref(boss), }, .angle = rng_angle(), ); diff --git a/src/player.c b/src/player.c index 54b890379f..937c7482e2 100644 --- a/src/player.c +++ b/src/player.c @@ -929,7 +929,7 @@ void player_death(Player *plr) { .pos = plr->pos, .rule = linear, .timeout = 40, - .draw_rule = Shrink, + .draw_rule = pdraw_timeout_scale(2, 0.01), .args = { vrng_range(R[0], 3, 10) * vrng_dir(R[1]) }, .flags = PFLAG_NOREFLECT, ); diff --git a/src/plrmodes/marisa_a.c b/src/plrmodes/marisa_a.c index 87584ba041..4049866618 100644 --- a/src/plrmodes/marisa_a.c +++ b/src/plrmodes/marisa_a.c @@ -92,7 +92,7 @@ static void trace_laser(Enemy *e, cmplx vel, float damage) { .pos = col.location, .rule = linear, .timeout = vrng_range(R[0], 3, 8), - .draw_rule = Shrink, + .draw_rule = pdraw_timeout_scale(2, 0.01), .args = { vrng_range(R[1], 2, 8) * vrng_dir(R[2]) }, .flags = PFLAG_NOREFLECT, .layer = LAYER_PARTICLE_HIGH, From dcafa42dc18d9e8524230573ed640ae52c1f25bb Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 4 Jan 2020 00:12:20 +0200 Subject: [PATCH 089/104] replace remaining Fade usage in non-stage code --- src/boss.c | 2 +- src/item.c | 2 +- src/plrmodes/reimu_a.c | 2 +- src/plrmodes/youmu_a.c | 2 +- src/projectile.c | 2 ++ 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/boss.c b/src/boss.c index c6eebc99cd..abcf83b73d 100644 --- a/src/boss.c +++ b/src/boss.c @@ -1160,7 +1160,7 @@ void process_boss(Boss **pboss) { .pos = boss->pos, .timeout = vrng_range(rng[2], 60, 70), .rule = linear, - .draw_rule = Fade, + .draw_rule = pdraw_timeout_fade(1, 0), .args = { vrng_range(rng[0], 3, 13) * vrng_dir(rng[1]) }, ); } diff --git a/src/item.c b/src/item.c index 08d73c7d4f..4d38bd0242 100644 --- a/src/item.c +++ b/src/item.c @@ -149,7 +149,7 @@ Item *create_clear_item(cmplx pos, uint clear_flags) { .sprite = "flare", .pos = pos, .timeout = 30, - .draw_rule = Fade, + .draw_rule = pdraw_timeout_fade(1, 0), .layer = LAYER_BULLET+1 ); diff --git a/src/plrmodes/reimu_a.c b/src/plrmodes/reimu_a.c index c57ef1a162..865e74826c 100644 --- a/src/plrmodes/reimu_a.c +++ b/src/plrmodes/reimu_a.c @@ -190,7 +190,7 @@ static void reimu_spirit_bomb_impact_balls(cmplx pos, int count) { .args = { cdir(2 * M_PI / count * (i + offset)) * 15 }, .angle = rng_angle(), .rule = linear, - .draw_rule = Fade, + .draw_rule = pdraw_timeout_fade(1, 0), .layer = LAYER_BOSS, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, ); diff --git a/src/plrmodes/youmu_a.c b/src/plrmodes/youmu_a.c index a16e7ea6ac..84b3bd9e68 100644 --- a/src/plrmodes/youmu_a.c +++ b/src/plrmodes/youmu_a.c @@ -453,7 +453,7 @@ static int youmu_mirror_bomb_controller(Enemy *e, int t) { .sprite = "arc", .pos = e->pos, .rule = linear, - .draw_rule = Fade, + .draw_rule = pdraw_timeout_fade(1, 0), .color = RGBA(0.9, 0.8, 1.0, 0.0), .timeout = 30, .args = { diff --git a/src/projectile.c b/src/projectile.c index 6cf16a6f7f..d9279fb532 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -1111,10 +1111,12 @@ ProjDrawRule pdraw_timeout_scalefade(cmplx32 scale0, cmplx32 scale1, float32 opa } ProjDrawRule pdraw_timeout_scale(cmplx32 scale0, cmplx32 scale1) { + // TODO: specialized code path without fade component return pdraw_timeout_scalefade(scale0, scale1, 1, 1); } ProjDrawRule pdraw_timeout_fade(float32 opacity0, float32 opacity1) { + // TODO: specialized code path without scale component return pdraw_timeout_scalefade(1+I, 1+I, opacity0, opacity1); } From 579c4f18de3a77c2d12392ed76f20b22f4fb7bbe Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 4 Jan 2020 03:03:08 +0200 Subject: [PATCH 090/104] Make animation_get_frame never return transient sprites Animations now store flipped copies of frames as needed. --- src/aniplayer.h | 5 +- src/boss.c | 14 +--- src/player.c | 3 +- src/projectile.c | 2 +- src/resource/animation.c | 169 +++++++++++++++++++++++++++------------ src/resource/animation.h | 18 ++--- 6 files changed, 132 insertions(+), 79 deletions(-) diff --git a/src/aniplayer.h b/src/aniplayer.h index 19a57c3cb7..84cc9022a3 100644 --- a/src/aniplayer.h +++ b/src/aniplayer.h @@ -66,7 +66,7 @@ // aniplayer_hard_switch(&plr->ani, "right", 0); // // Similar examples occur throughout the code so if you want context, you can just look there. -// +// #include "resource/animation.h" #include "stageobjects.h" #include "list.h" @@ -76,7 +76,7 @@ struct AniQueueEntry{ LIST_INTERFACE(AniQueueEntry); AniSequence *sequence; - int clock; // frame counter. As long as clock < duration this entry will keep running + int clock; // frame counter. As long as clock < duration this entry will keep running int duration; // number of frames this sequence will be drawn }; @@ -92,7 +92,6 @@ void aniplayer_create(AniPlayer *plr, Animation *ani, const char *startsequence) void aniplayer_free(AniPlayer *plr); // AniPlayer version of animation_get_frame. -// CAUTION: the returned Sprite is only valid until the next call to animation/aniplayer_get_frame Sprite *aniplayer_get_frame(AniPlayer *plr) attr_nonnull(1); // See comment above for these three stooges. diff --git a/src/boss.c b/src/boss.c index abcf83b73d..2f80bef97c 100644 --- a/src/boss.c +++ b/src/boss.c @@ -598,27 +598,17 @@ static void BossGlow(Projectile *p, int t, ProjDrawRuleArgs args) { }); } -static int boss_glow(Projectile *p, int t) { - if(t == EVENT_DEATH) { - free(p->sprite); - } - - return linear(p, t); -} - static Projectile* spawn_boss_glow(Boss *boss, const Color *clr, int timeout) { - // XXX: memdup is required because the Sprite returned by animation_get_frame is only temporarily valid return PARTICLE( - .sprite_ptr = memdup(aniplayer_get_frame(&boss->ani), sizeof(Sprite)), + .sprite_ptr = aniplayer_get_frame(&boss->ani), // this is in sync with the boss position oscillation .pos = boss->pos + 6 * sin(global.frames/25.0) * I, .color = clr, - .rule = boss_glow, .draw_rule = BossGlow, .timeout = timeout, .layer = LAYER_PARTICLE_LOW, .shader = "sprite_silhouette", - .flags = PFLAG_REQUIREDPARTICLE, + .flags = PFLAG_REQUIREDPARTICLE | PFLAG_NOMOVE | PFLAG_MANUALANGLE, ); } diff --git a/src/player.c b/src/player.c index 937c7482e2..cb88d14449 100644 --- a/src/player.c +++ b/src/player.c @@ -447,7 +447,6 @@ static int powersurge_trail(Projectile *p, int t) { } if(t == EVENT_DEATH) { - free(p->sprite); return ACTION_ACK; } @@ -506,7 +505,7 @@ static void player_powersurge_logic(Player *plr) { player_powersurge_calc_bonus(plr, &plr->powersurge.bonus); PARTICLE( - .sprite_ptr = memdup(aniplayer_get_frame(&plr->ani), sizeof(Sprite)), + .sprite_ptr = aniplayer_get_frame(&plr->ani), .pos = plr->pos, .color = RGBA(1, 1, 1, 0.5), .rule = powersurge_trail, diff --git a/src/projectile.c b/src/projectile.c index d9279fb532..c52e9aa6cf 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -857,7 +857,7 @@ Projectile *spawn_projectile_clear_effect(Projectile *proj) { Animation *ani = get_ani("part/bullet_clear"); AniSequence *seq = get_ani_sequence(ani, "main"); - Sprite *sprite_ref = ani->sprites[seq->frames[0].spriteidx]; + Sprite *sprite_ref = animation_get_frame(ani, seq, 0); float scale = fmaxf(proj->sprite->w, proj->sprite->h) / sprite_ref->w; return PARTICLE( diff --git a/src/resource/animation.c b/src/resource/animation.c index 5dc19f0bf4..e947659187 100644 --- a/src/resource/animation.c +++ b/src/resource/animation.c @@ -42,7 +42,7 @@ typedef struct AnimationLoadData { } AnimationLoadData; // See ANIMATION_FORMAT.rst for a documentation of this syntax. -static bool animation_parse_sequence_spec(AniSequence *seq, const char *specstr) { +static bool animation_parse_sequence_spec(AniSequence **seq, int seq_capacity, const char *specstr) { const char *delaytoken = "d"; const char *mirrortoken = "m"; @@ -60,7 +60,6 @@ static bool animation_parse_sequence_spec(AniSequence *seq, const char *specstr) int delay = 1; // standard frame duration: one frame. bool mirrored = false; - int seqcapacity = 0; int command = 1; // This loop is supposed to parse one command per iteration. @@ -124,22 +123,23 @@ static bool animation_parse_sequence_spec(AniSequence *seq, const char *specstr) log_error("AniSequence syntax error: '%s'[%d] sprite index cannot be negative.",specstr,command); return false; } - int spriteidx = arg; + + // temporarily store flipped sprites with negative indices. + // a later pass will allocate actual flipped sprites for these and fix up the indices. + int spriteidx = mirrored ? -(arg + 1) : arg; + for(int i = 0; i < delay; i++) { - if(seqcapacity <= seq->length) { - seqcapacity++; - seqcapacity *= 2; - seq->frames = realloc(seq->frames,sizeof(AniSequenceFrame)*seqcapacity); + if(seq_capacity <= (*seq)->length) { + seq_capacity *= 2; + *seq = realloc(*seq, sizeof(AniSequence) + seq_capacity * sizeof(*(*seq)->frame_indices)); } - seq->frames[seq->length].spriteidx = spriteidx; - seq->frames[seq->length].mirrored = mirrored; - seq->length++; + (*seq)->frame_indices[(*seq)->length++] = spriteidx; } } command++; } - if(seq->length <= 0) { + if((*seq)->length <= 0) { log_error("AniSequence syntax error: '%s' empty sequence.",specstr); return false; } @@ -152,39 +152,46 @@ static bool animation_parse_callback(const char *key, const char *value, void *d // parse fixed keys - if(!strcmp(key,"@sprite_count")) { + if(!strcmp(key, "@sprite_count")) { char *endptr; ani->sprite_count = strtol(value,&endptr,10); if(*value == '\0' || *endptr != '\0' || ani->sprite_count <= 0) { - log_error("Syntax error: %s must be positive integer",key); + log_error("%s must be a positive integer (got `%s`)", key, value); return false; } return true; } + if(key[0] == '@') { + log_warn("Unknown animation property `%s` ignored", key); + return true; + } + // otherwise it is a sequence - AniSequence *seq = calloc(1,sizeof(AniSequence)); - bool rc = animation_parse_sequence_spec(seq, value); - if(!rc) { - free(seq->frames); + AniSequence *prev_seq; + if((prev_seq = ht_get(&ani->sequences, key, NULL))) { + log_warn("Animation sequence `%s` overwritten", key); + } + + int init_seq_size = 4; + AniSequence *seq = calloc(1, sizeof(AniSequence) + init_seq_size * sizeof(*seq->frame_indices)); + if(!animation_parse_sequence_spec(&seq, init_seq_size, value)) { free(seq); return false; } ht_set(&ani->sequences, key, seq); + free(prev_seq); return true; } static void *free_sequence_callback(const char *key, void *data, void *arg) { - AniSequence *seq = data; - free(seq->frames); - free(seq); - + free(data); return NULL; } -void* load_animation_begin(const char *filename, uint flags) { +void *load_animation_begin(const char *filename, uint flags) { char *basename = resource_util_basename(ANI_PATH_PREFIX, filename); char name[strlen(basename) + 1]; strcpy(name, basename); @@ -215,32 +222,83 @@ void* load_animation_begin(const char *filename, uint flags) { return data; } -union check_sequence_frame_callback_arg { - int sprite_count, errors; +struct anim_remap_state { + Animation *ani; + ht_int2int_t flip_map; + int num_flipped_sprites; + int errors; }; -static void *check_sequence_frame_callback(const char *key, void *value, void *varg) { +static void flip_sprite(Sprite *s) { + FloatRect *tex_area = &s->tex_area; + tex_area->x += tex_area->w; + tex_area->w *= -1; +} + +static int remap_frame_index(struct anim_remap_state *st, int idx) { + int64_t remapped_idx; + + if(idx >= 0) { + return idx; + } + + if(st->num_flipped_sprites > 0 && ht_lookup(&st->flip_map, idx, &remapped_idx)) { + return remapped_idx; + } + + if(st->num_flipped_sprites == 0) { + ht_create(&st->flip_map); + } + + remapped_idx = st->ani->sprite_count; + int local_idx = st->num_flipped_sprites; + int orig_idx = -(idx + 1); + + ++st->num_flipped_sprites; + ++st->ani->sprite_count; + + ht_set(&st->flip_map, idx, remapped_idx); + + st->ani->local_sprites = realloc(st->ani->local_sprites, sizeof(*st->ani->local_sprites) * st->num_flipped_sprites); + st->ani->local_sprites[local_idx] = *st->ani->sprites[orig_idx]; + flip_sprite(st->ani->local_sprites + local_idx); + + log_debug("%i -> %i", orig_idx, (int)remapped_idx); + log_debug("sprite_count: %i", st->ani->sprite_count); + + return remapped_idx; +} + +static void *remap_sequence_callback(const char *key, void *value, void *varg) { AniSequence *seq = value; - union check_sequence_frame_callback_arg *arg = varg; - int sprite_count = arg->sprite_count; + struct anim_remap_state *st = varg; + // needs to be cached, because we may grow the count to allocate flipped sprites + int sprite_count = st->ani->sprite_count; int errors = 0; for(int i = 0; i < seq->length; i++) { - if(seq->frames[i].spriteidx >= sprite_count) { - log_error("Animation sequence %s: Sprite index %d is higher than sprite_count.", key, seq->frames[i].spriteidx); + int abs_idx = seq->frame_indices[i]; + abs_idx = abs_idx >= 0 ? abs_idx : -(abs_idx + 1); + + if(abs_idx >= sprite_count) { + log_error("Animation sequence `%s`: Sprite index %i is higher than sprite_count (%i).", key, abs_idx, sprite_count); errors++; } + + if(seq->frame_indices[i] < 0) { + seq->frame_indices[i] = remap_frame_index(st, seq->frame_indices[i]); + } } if(errors) { - arg->errors = errors; - return arg; + st->errors += errors; + return st; } return NULL; } -void* load_animation_end(void *opaque, const char *filename, uint flags) { +void *load_animation_end(void *opaque, const char *filename, uint flags) { AnimationLoadData *data = opaque; if(opaque == NULL) { @@ -266,14 +324,36 @@ void* load_animation_end(void *opaque, const char *filename, uint flags) { ani->sprites[i] = res->data; } - union check_sequence_frame_callback_arg arg = { ani->sprite_count }; + struct anim_remap_state remap_state = { 0 }; + remap_state.ani = ani; + int prev_sprite_count = ani->sprite_count; - if(ht_foreach(&ani->sequences, check_sequence_frame_callback, &arg) != NULL) { + if(ht_foreach(&ani->sequences, remap_sequence_callback, &remap_state) != NULL) { unload_animation(ani); ani = NULL; } + if(ani->sprite_count != prev_sprite_count) { + // remapping generated new flipped sprites - add them to our sprites array + + assume(ani->sprite_count > prev_sprite_count); + assume(remap_state.num_flipped_sprites == ani->sprite_count - prev_sprite_count); + assume(ani->local_sprites != NULL); + ani->sprites = realloc(ani->sprites, sizeof(*ani->sprites) * ani->sprite_count); + + for(int i = 0; i < remap_state.num_flipped_sprites; ++i) { + ani->sprites[prev_sprite_count + i] = ani->local_sprites + i; + } + } else { + assert(remap_state.num_flipped_sprites == 0); + assert(ani->local_sprites == NULL); + } + done: + if(remap_state.num_flipped_sprites > 0) { + ht_destroy(&remap_state.flip_map); + } + free(data->basename); free(data); @@ -285,6 +365,7 @@ void unload_animation(void *vani) { ht_foreach(&ani->sequences, free_sequence_callback, NULL); ht_destroy(&ani->sequences); free(ani->sprites); + free(ani->local_sprites); free(ani); } @@ -296,24 +377,14 @@ AniSequence *get_ani_sequence(Animation *ani, const char *seqname) { AniSequence *seq = ht_get(&ani->sequences, seqname, NULL); if(seq == NULL) { - log_fatal("Sequence '%s' not found.",seqname); + log_fatal("Sequence '%s' not found.", seqname); } return seq; } -Sprite* animation_get_frame(Animation *ani, AniSequence *seq, int seqframe) { - AniSequenceFrame *f = &seq->frames[seqframe%seq->length]; - if(f->mirrored) { - memcpy(&ani->transformed_sprite,ani->sprites[f->spriteidx],sizeof(Sprite)); - // XXX: maybe add sprite_flip() or something - FloatRect *tex_area = &ani->transformed_sprite.tex_area; - tex_area->x += tex_area->w; - tex_area->w *= -1; - return &ani->transformed_sprite; - } - - assert(f->spriteidx < ani->sprite_count); - return ani->sprites[f->spriteidx]; +Sprite *animation_get_frame(Animation *ani, AniSequence *seq, int seqframe) { + int idx = seq->frame_indices[seqframe % seq->length]; + assert(idx < ani->sprite_count); + return ani->sprites[idx]; } - diff --git a/src/resource/animation.h b/src/resource/animation.h index eca2bbd15e..0595c7840b 100644 --- a/src/resource/animation.h +++ b/src/resource/animation.h @@ -14,20 +14,15 @@ #include "resource.h" #include "sprite.h" -typedef struct AniSequenceFrame { - uint spriteidx; - bool mirrored; -} AniSequenceFrame; - typedef struct AniSequence { - AniSequenceFrame *frames; int length; + int frame_indices[]; } AniSequence; typedef struct Animation { ht_str2ptr_t sequences; Sprite **sprites; - Sprite transformed_sprite; // temporary sprite used to apply animation transformations. + Sprite *local_sprites; int sprite_count; } Animation; @@ -40,18 +35,17 @@ void unload_animation(void *vani); Animation *get_ani(const char *name); AniSequence *get_ani_sequence(Animation *ani, const char *seqname); -// Returns a sprite for the specified frame from an animation sequence named seqname. -// CAUTION: this sprite is only valid until the next call to this function. -// +// Returns a sprite for the specified frame from an animation sequence named seqname. +// // The frames correspond 1:1 to real ingame frames, so // // draw_sprite_p(x, y, animation_get_frame(ani,"fly",global.frames)); // // already gives you the fully functional animation rendering. You can use // an AniPlayer instance for queueing. -// +// // Note that seqframe loops (otherwise the example above wouldn’t work). -// +// Sprite *animation_get_frame(Animation *ani, AniSequence *seq, int seqframe); From ddf141148b4f6cef5b77dd43ed6a9d18fba03abb Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 4 Jan 2020 03:21:11 +0200 Subject: [PATCH 091/104] fix MarisaA laser flares --- src/plrmodes/marisa_a.c | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/src/plrmodes/marisa_a.c b/src/plrmodes/marisa_a.c index 4049866618..5dbe43366f 100644 --- a/src/plrmodes/marisa_a.c +++ b/src/plrmodes/marisa_a.c @@ -315,25 +315,13 @@ static int marisa_laser_renderer(Enemy *renderer, int t) { #undef FOR_EACH_SLAVE #undef FOR_EACH_REAL_SLAVE -DEPRECATED_DRAW_RULE static void marisa_laser_flash_draw(Projectile *p, int t, ProjDrawRuleArgs args) { - Animation *fire = get_ani("fire"); - AniSequence *seq = get_ani_sequence(fire, "main"); - Sprite *spr = animation_get_frame(fire, seq, p->birthtime); - - Color *c = color_mul_scalar(COLOR_COPY(&p->color), 1 - t / p->timeout); - c->r *= (1 - t / p->timeout); - - cmplx pos = p->pos; - pos += p->args[0] * 10; - - r_draw_sprite(&(SpriteParams) { - .sprite_ptr = spr, - .color = c, - .pos = { creal(pos), cimag(pos)}, - .rotation.angle = p->angle + M_PI/2, - .scale.both = 0.40, - }); + SpriteParamsBuffer spbuf; + SpriteParams sp = projectile_sprite_params(p, &spbuf); + float o = 1 - t / p->timeout; + color_mul_scalar(&spbuf.color, o); + spbuf.color.r *= o; + r_draw_sprite(&sp); } static int marisa_laser_slave(Enemy *e, int t) { @@ -373,15 +361,21 @@ static int marisa_laser_slave(Enemy *e, int t) { cmplx dir = -cexp(I*(angle*factor + ld->lean + M_PI/2)); trace_laser(e, 5 * dir, creal(e->args[1])); + Animation *fire = get_ani("fire"); + AniSequence *seq = get_ani_sequence(fire, "main"); + Sprite *spr = animation_get_frame(fire, seq, global.frames); + PARTICLE( + .sprite_ptr = spr, .size = 1+I, - .pos = e->pos, + .pos = e->pos + dir * 10, .color = color_mul_scalar(RGBA(2, 0.2, 0.5, 0), 0.2), .rule = linear, .draw_rule = marisa_laser_flash_draw, .timeout = 8, .args = { dir, 0, 0.6 + 0.2*I, }, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, + .scale = 0.4, // .layer = LAYER_PARTICLE_LOW, ); } From 62fca6c5bf7c739463e5dc1c662a0210fbafdda0 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 4 Jan 2020 04:08:15 +0200 Subject: [PATCH 092/104] replace remaining GrowFade usage in non-stage code --- src/boss.c | 11 ++++------- src/laser.c | 2 +- src/player.c | 10 +++++----- src/plrmodes/marisa_a.c | 15 +++++++-------- src/plrmodes/marisa_b.c | 10 ++++------ src/plrmodes/youmu_a.c | 3 +-- 6 files changed, 22 insertions(+), 29 deletions(-) diff --git a/src/boss.c b/src/boss.c index 2f80bef97c..f9d66eafd3 100644 --- a/src/boss.c +++ b/src/boss.c @@ -817,10 +817,9 @@ static void boss_rule_extra(Boss *boss, float alpha) { 0.5 + 0.5 * psina * v, 0.0 ), 0.8), - .rule = linear, .timeout = 30*lt, - .draw_rule = GrowFade, - .args = { vel * (1 - 2 * !(global.frames % 10)), 2.5 }, + .draw_rule = pdraw_timeout_scalefade(0, 3.5, 1, 0), + .move = move_linear(vel * (1 - 2 * !(global.frames % 10))), ); } } @@ -1159,16 +1158,14 @@ void process_boss(Boss **pboss) { .proto = pp_blast, .pos = boss->pos, .timeout = 60, - .args = { 0, 3.0 }, - .draw_rule = GrowFade, + .draw_rule = pdraw_timeout_scalefade(0, 4, 1, 0), ); PARTICLE( .proto = pp_blast, .pos = boss->pos, .timeout = 70, - .args = { 0, 2.5 }, - .draw_rule = GrowFade, + .draw_rule = pdraw_timeout_scalefade(0, 3.5, 1, 0), ); } diff --git a/src/laser.c b/src/laser.c index cb804fec72..7c1e7ee761 100644 --- a/src/laser.c +++ b/src/laser.c @@ -451,7 +451,7 @@ void process_lasers(void) { .sprite = "flare", .pos = p, .timeout = 20, - .draw_rule = GrowFade + .draw_rule = pdraw_timeout_scalefade(0, 1, 1, 0), ); laser->deathtime = 0; } diff --git a/src/player.c b/src/player.c index cb88d14449..a73f06d4ec 100644 --- a/src/player.c +++ b/src/player.c @@ -900,7 +900,7 @@ static int player_death_effect(Projectile *p, int t) { .pos = p->pos + vrng_range(R[0], 2, 3) * vrng_dir(R[1]), .color = RGBA(0.15, 0.2, 0.5, 0), .timeout = i + vrng_range(R[2], 10, 14), - .draw_rule = GrowFade, + .draw_rule = pdraw_timeout_scalefade(0, 1, 1, 0), .angle = vrng_angle(R[3]), .flags = PFLAG_NOREFLECT, .layer = LAYER_OVERLAY, @@ -941,9 +941,9 @@ void player_death(Player *plr) { .pos = plr->pos, .color = RGBA(0.5, 0.15, 0.15, 0), .timeout = 35, - .draw_rule = GrowFade, - .args = { 0, 2.4 }, - .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, + .draw_rule = pdraw_timeout_scalefade(0, 3.4, 1, 0), + .angle = rng_angle(), + .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE | PFLAG_NOMOVE | PFLAG_MANUALANGLE, ); PARTICLE( @@ -953,7 +953,7 @@ void player_death(Player *plr) { .draw_rule = player_death_effect_draw_overlay, .blend = BLEND_NONE, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, - .layer = LAYER_OVERLAY, + .layer = LAYER_NODRAW, // LAYER_OVERLAY, .shader = "player_death", ); diff --git a/src/plrmodes/marisa_a.c b/src/plrmodes/marisa_a.c index 5dbe43366f..b71456a111 100644 --- a/src/plrmodes/marisa_a.c +++ b/src/plrmodes/marisa_a.c @@ -489,9 +489,9 @@ static int masterspark(Enemy *e, int t2) { .color = c, .rule = masterspark_star, .timeout = 50, - .args= { (10 * dir - 10*I)*diroffset, 4 }, + .args= { (10 * dir - 10*I)*diroffset }, .angle = rng_angle(), - .draw_rule = GrowFade, + .draw_rule = pdraw_timeout_scalefade(0, 5, 1, 0), .flags = flags, ); dir = -conj(dir); @@ -501,21 +501,20 @@ static int masterspark(Enemy *e, int t2) { .color = c, .rule = masterspark_star, .timeout = 50, - .args = { (10 * dir - 10*I)*diroffset, 4 }, + .args = { (10 * dir - 10*I)*diroffset }, .angle = rng_angle(), - .draw_rule = GrowFade, + .draw_rule = pdraw_timeout_scalefade(0, 5, 1, 0), .flags = flags, ); PARTICLE( .sprite = "smoke", .pos = global.plr.pos-40*I, .color = HSLA(2*t,1,2,0), //RGBA(0.3, 0.6, 1, 0), - .rule = linear, .timeout = 50, - .args = { -7*dir + 7*I, 6 }, + .move = move_linear(-7*dir + 7*I), .angle = rng_angle(), - .draw_rule = GrowFade, - .flags = flags, + .draw_rule = pdraw_timeout_scalefade(0, 7, 1, 0), + .flags = flags | PFLAG_MANUALANGLE, ); } diff --git a/src/plrmodes/marisa_b.c b/src/plrmodes/marisa_b.c index 418866d9fe..455b98b0e7 100644 --- a/src/plrmodes/marisa_b.c +++ b/src/plrmodes/marisa_b.c @@ -75,8 +75,7 @@ static int marisa_star_projectile(Projectile *p, int t) { .color = RGBA(0.5*(1-focus),0,0.5*focus,0), .timeout = 5, .angle = t*0.1, - .draw_rule = GrowFade, - .args = { 1, 0.4}, + .draw_rule = pdraw_timeout_scalefade(0, 1.4, 1, 0), .flags = PFLAG_NOREFLECT, ); } @@ -180,8 +179,7 @@ static int marisa_star_orbit(Enemy *e, int t) { .color = color2, .timeout = 10, .angle = t*0.1, - .draw_rule = GrowFade, - .args = { 1, tb*4}, + .draw_rule = pdraw_timeout_scalefade(0, 1 + 4 * tb, 1, 0), .flags = PFLAG_NOREFLECT, ); } @@ -192,10 +190,10 @@ static int marisa_star_orbit(Enemy *e, int t) { .pos = e->pos, .color = &color, .rule = marisa_star_orbit_star, - .draw_rule = GrowFade, + .draw_rule = pdraw_timeout_scalefade(0, 6, 1, 0), .timeout = 150, .flags = PFLAG_NOREFLECT, - .args = { -5*dir/cabs(dir), 5 }, + .args = { -5*dir/cabs(dir) }, ); } diff --git a/src/plrmodes/youmu_a.c b/src/plrmodes/youmu_a.c index 84b3bd9e68..e3d5ec40aa 100644 --- a/src/plrmodes/youmu_a.c +++ b/src/plrmodes/youmu_a.c @@ -468,14 +468,13 @@ static int youmu_mirror_bomb_controller(Enemy *e, int t) { .sprite = "stain", .pos = e->pos, .rule = accelerated, - .draw_rule = GrowFade, + .draw_rule = pdraw_timeout_scalefade(0, 3, 1, 0), .angle = vrng_angle(R[0]), .color = RGBA(0.2, 0.1, 1.0, 0.0), .timeout = 50, .args = { -1*e->args[0]*cdir(0.2*rng_real())/30, 0.1*e->args[0]*I*sin(t/4.)/30, - 2 }, .flags = _i%2 == 0 ? PFLAG_REQUIREDPARTICLE : 0 ); From 24904877911f0b7e73b29e269e89fb6749e68058 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 4 Jan 2020 05:24:24 +0200 Subject: [PATCH 093/104] fix and tweak player death effect --- src/player.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/player.c b/src/player.c index a73f06d4ec..b6ff5400d4 100644 --- a/src/player.c +++ b/src/player.c @@ -17,6 +17,7 @@ #include "stagetext.h" #include "stagedraw.h" #include "entity.h" +#include "util/glm.h" void player_init(Player *plr) { memset(plr, 0, sizeof(Player)); @@ -850,7 +851,6 @@ void player_realdeath(Player *plr) { plr->lives--; } -DEPRECATED_DRAW_RULE static void player_death_effect_draw_overlay(Projectile *p, int t, ProjDrawRuleArgs args) { FBPair *framebuffers = stage_get_fbpair(FBPAIR_FG); r_framebuffer(framebuffers->front); @@ -869,25 +869,26 @@ static void player_death_effect_draw_overlay(Projectile *p, int t, ProjDrawRuleA r_state_push(); } -DEPRECATED_DRAW_RULE static void player_death_effect_draw_sprite(Projectile *p, int t, ProjDrawRuleArgs args) { float s = t / p->timeout; - float stretch_range = 3, sx, sy; - sx = 0.5 + 0.5 * cos(M_PI * (2 * pow(s, 0.5) + 1)); - sx = (1 - s) * (1 + (stretch_range - 1) * sx) + s * stretch_range * sx; - sy = 1 + pow(s, 3); + s = glm_ease_quad_in(s); + + sx = (1 - pow(2 * pow(1 - s, 4) - 1, 4)); + sx = lerp(1 + (stretch_range - 1) * sx, stretch_range * sx, s); + sy = 1 + 2 * (stretch_range - 1) * pow(s, 4); if(sx <= 0 || sy <= 0) { return; } - r_draw_sprite(&(SpriteParams) { - .sprite_ptr = p->sprite, - .pos = { creal(p->pos), cimag(p->pos) }, - .scale = { .x = sx, .y = sy }, - }); + SpriteParamsBuffer spbuf; + SpriteParams sp = projectile_sprite_params(p, &spbuf); + sp.scale.x *= sx; + sp.scale.y *= sy; + sp.rotation.angle = 0; + r_draw_sprite(&sp); } static int player_death_effect(Projectile *p, int t) { @@ -926,10 +927,9 @@ void player_death(Player *plr) { PARTICLE( .sprite = "flare", .pos = plr->pos, - .rule = linear, .timeout = 40, .draw_rule = pdraw_timeout_scale(2, 0.01), - .args = { vrng_range(R[0], 3, 10) * vrng_dir(R[1]) }, + .move = move_linear(vrng_range(R[0], 3, 10) * vrng_dir(R[1])), .flags = PFLAG_NOREFLECT, ); } @@ -953,14 +953,14 @@ void player_death(Player *plr) { .draw_rule = player_death_effect_draw_overlay, .blend = BLEND_NONE, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, - .layer = LAYER_NODRAW, // LAYER_OVERLAY, + .layer = LAYER_OVERLAY, .shader = "player_death", ); PARTICLE( .sprite_ptr = aniplayer_get_frame(&plr->ani), .pos = plr->pos, - .timeout = 30, + .timeout = 38, .rule = player_death_effect, .draw_rule = player_death_effect_draw_sprite, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, From 737e2d14b3fcfbb43bc3f272447e9d6700eeb91a Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 6 Jan 2020 00:46:40 +0200 Subject: [PATCH 094/104] clean up some dead code --- src/coroutine.c | 37 +++++-------------------------------- 1 file changed, 5 insertions(+), 32 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index 518fa8fde2..853567d36a 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -329,28 +329,19 @@ int cotask_wait(int delay) { CoTask *task = cotask_active(); assert(task->wait.wait_type == COTASK_WAIT_NONE); - cotask_wait_init(task, COTASK_WAIT_DELAY); - task->wait.delay.remaining = delay; - if(cotask_do_wait(task)) - cotask_yield(NULL); - return cotask_wait_init(task, COTASK_WAIT_NONE).frames; - - /* if(delay == 1) { cotask_yield(NULL); return 1; } - if(delay > 1) { - cotask_wait_init(task, COTASK_WAIT_DELAY); - task->wait.delay.remaining = delay; - cotask_do_wait(task); + cotask_wait_init(task, COTASK_WAIT_DELAY); + task->wait.delay.remaining = delay; + + if(cotask_do_wait(task)) { cotask_yield(NULL); - return cotask_wait_init(task, COTASK_WAIT_NONE).frames; } - */ - return 0; + return cotask_wait_init(task, COTASK_WAIT_NONE).frames; } static void coevent_add_subscriber(CoEvent *evt, CoTask *task) { @@ -374,13 +365,6 @@ static void coevent_add_subscriber(CoEvent *evt, CoTask *task) { CoWaitResult cotask_wait_event(CoEvent *evt, void *arg) { assert(evt->unique_id > 0); - /* - CoWaitResult result = { - .frames = 0, - .event_status = CO_EVENT_PENDING, - }; - */ - CoTask *task = cotask_active(); coevent_add_subscriber(evt, task); @@ -393,16 +377,6 @@ CoWaitResult cotask_wait_event(CoEvent *evt, void *arg) { } return cotask_wait_init(task, COTASK_WAIT_NONE); - - /* - while(true) { - if((result.event_status = coevent_poll(evt, &snapshot)) != CO_EVENT_PENDING) { - return result; - } - - ++result.frames; - cotask_yield(arg); - }*/ } CoWaitResult cotask_wait_event_or_die(CoEvent *evt, void *arg) { @@ -475,7 +449,6 @@ static void coevent_wake_subscribers(CoEvent *evt) { if(task && cotask_status(task) != CO_STATUS_DEAD) { EVT_DEBUG("Resume CoEvent{%p} subscriber %s", (void*)evt, task->debug_label); - // cotask_wake_and_resume(task, NULL); cotask_resume(task, NULL); } } From b26226b10b5345d3f622eb8148504ab5ed024006 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 6 Jan 2020 06:33:09 +0200 Subject: [PATCH 095/104] remove DeathShrink --- src/projectile.c | 13 ------------- src/projectile.h | 1 - 2 files changed, 14 deletions(-) diff --git a/src/projectile.c b/src/projectile.c index c52e9aa6cf..4d9ff59c8c 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -1008,19 +1008,6 @@ void Shrink(Projectile *p, int t, ProjDrawRuleArgs args) { r_mat_mv_pop(); } -void DeathShrink(Projectile *p, int t, ProjDrawRuleArgs args) { - r_mat_mv_push(); - apply_common_transforms(p, t); - - float s = 2.0-t/(double)p->timeout*2; - if(s != 1) { - r_mat_mv_scale(s, 1, 1); - } - - ProjDrawCore(p, &p->color); - r_mat_mv_pop(); -} - void GrowFade(Projectile *p, int t, ProjDrawRuleArgs args) { r_mat_mv_push(); apply_common_transforms(p, t); diff --git a/src/projectile.h b/src/projectile.h index b09d5d12c6..3fcfd7a765 100644 --- a/src/projectile.h +++ b/src/projectile.h @@ -236,7 +236,6 @@ void ProjDrawCore(Projectile *proj, const Color *c); void ProjDraw(Projectile *proj, int t, ProjDrawRuleArgs args) DEPRECATED_DRAW_RULE; void Shrink(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; -void DeathShrink(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; void Fade(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; void GrowFade(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; void ScaleFade(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; From a56123422270542f163fdee6c8a628f010ac29f6 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 6 Jan 2020 06:47:43 +0200 Subject: [PATCH 096/104] fix some trivial deprecations --- src/boss.c | 8 +++----- src/player.c | 2 -- src/projectile.c | 4 ++-- src/projectile.h | 1 - 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/boss.c b/src/boss.c index f9d66eafd3..fc7fff4ce2 100644 --- a/src/boss.c +++ b/src/boss.c @@ -578,8 +578,7 @@ static void draw_spell_portrait(Boss *b, int time) { r_state_pop(); } -DEPRECATED_DRAW_RULE -static void BossGlow(Projectile *p, int t, ProjDrawRuleArgs args) { +static void boss_glow_draw(Projectile *p, int t, ProjDrawRuleArgs args) { float s = 1.0+t/(double)p->timeout*0.5; float fade = 1 - (1.5 - s); float deform = 5 - 10 * fade * fade; @@ -598,13 +597,13 @@ static void BossGlow(Projectile *p, int t, ProjDrawRuleArgs args) { }); } -static Projectile* spawn_boss_glow(Boss *boss, const Color *clr, int timeout) { +static Projectile *spawn_boss_glow(Boss *boss, const Color *clr, int timeout) { return PARTICLE( .sprite_ptr = aniplayer_get_frame(&boss->ani), // this is in sync with the boss position oscillation .pos = boss->pos + 6 * sin(global.frames/25.0) * I, .color = clr, - .draw_rule = BossGlow, + .draw_rule = boss_glow_draw, .timeout = timeout, .layer = LAYER_PARTICLE_LOW, .shader = "sprite_silhouette", @@ -1240,7 +1239,6 @@ void boss_reset_motion(Boss *boss) { boss->move.retention = 0.8; } -DEPRECATED_DRAW_RULE static void boss_death_effect_draw_overlay(Projectile *p, int t, ProjDrawRuleArgs args) { FBPair *framebuffers = stage_get_fbpair(FBPAIR_FG); r_framebuffer(framebuffers->front); diff --git a/src/player.c b/src/player.c index b6ff5400d4..97b8cc395c 100644 --- a/src/player.c +++ b/src/player.c @@ -432,7 +432,6 @@ static void _powersurge_trail_draw(Projectile *p, float t, float cmul) { }); } -DEPRECATED_DRAW_RULE static void powersurge_trail_draw(Projectile *p, int t, ProjDrawRuleArgs args) { if(t > 0) { _powersurge_trail_draw(p, t - 0.5, 0.25); @@ -710,7 +709,6 @@ static int powersurge_discharge(Projectile *p, int t) { return ACTION_NONE; } -DEPRECATED_DRAW_RULE static void powersurge_distortion_draw(Projectile *p, int t, ProjDrawRuleArgs args) { if(config_get_int(CONFIG_POSTPROCESS) < 1) { return; diff --git a/src/projectile.c b/src/projectile.c index 4d9ff59c8c..fe88fda855 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -925,7 +925,7 @@ void ProjDrawCore(Projectile *proj, const Color *c) { projectile_draw_sprite(proj->sprite, c, proj->opacity, proj->scale); } -void ProjDraw(Projectile *proj, int t, ProjDrawRuleArgs args) { +static void pdraw_basic_func(Projectile *proj, int t, ProjDrawRuleArgs args) { SpriteParamsBuffer spbuf; SpriteParams sp = projectile_sprite_params(proj, &spbuf); @@ -940,7 +940,7 @@ void ProjDraw(Projectile *proj, int t, ProjDrawRuleArgs args) { } ProjDrawRule pdraw_basic(void) { - return (ProjDrawRule) { ProjDraw }; + return (ProjDrawRule) { pdraw_basic_func }; } static void pdraw_blast_func(Projectile *p, int t, ProjDrawRuleArgs args) { diff --git a/src/projectile.h b/src/projectile.h index 3fcfd7a765..b5fe426ced 100644 --- a/src/projectile.h +++ b/src/projectile.h @@ -233,7 +233,6 @@ int asymptotic(Projectile *p, int t); #define DEPRECATED_DRAW_RULE attr_deprecated("") void ProjDrawCore(Projectile *proj, const Color *c); -void ProjDraw(Projectile *proj, int t, ProjDrawRuleArgs args) DEPRECATED_DRAW_RULE; void Shrink(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; void Fade(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; From 74bf6f6e2072d32653086b2d06587c20057c5514 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 6 Jan 2020 06:52:55 +0200 Subject: [PATCH 097/104] 'modernize' youmu_particle_slice_draw --- src/plrmodes/youmu_b.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/plrmodes/youmu_b.c b/src/plrmodes/youmu_b.c index 413f857012..fdc816b3ea 100644 --- a/src/plrmodes/youmu_b.c +++ b/src/plrmodes/youmu_b.c @@ -49,27 +49,26 @@ static void youmu_homing_trail(Projectile *p, cmplx v, int to) { ); } -DEPRECATED_DRAW_RULE static void youmu_particle_slice_draw(Projectile *p, int t, ProjDrawRuleArgs args) { - double lifetime = p->timeout; - double tt = t/lifetime; - double f = 0; + float lifetime = p->timeout; + float tt = t/lifetime; + float f = 0; + if(tt > 0.1) { f = min(1,(tt-0.1)/0.2); } + if(tt > 0.5) { f = 1+(tt-0.5)/0.5; } - r_mat_mv_push(); - r_mat_mv_translate(creal(p->pos), cimag(p->pos),0); - r_mat_mv_rotate(p->angle, 0, 0, 1); - r_mat_mv_scale(f, 1, 1); - ProjDrawCore(p, &p->color); - r_mat_mv_pop(); + SpriteParamsBuffer spbuf; + SpriteParams sp = projectile_sprite_params(p, &spbuf); + sp.scale.x *= f; + r_draw_sprite(&sp); - double slicelen = 500; - cmplx slicepos = p->pos-(tt>0.1)*slicelen*I*cexp(I*p->angle)*(5*pow(tt-0.1,1.1)-0.5); + float slicelen = 500; + cmplx slicepos = p->pos-(tt>0.1)*slicelen*I*cdir(p->angle)*(5*pow(tt-0.1,1.1)-0.5); r_draw_sprite(&(SpriteParams) { .sprite_ptr = aniplayer_get_frame(&global.plr.ani), @@ -160,7 +159,7 @@ static int youmu_slash(Enemy *e, int t) { .rule = youmu_particle_slice_logic, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, .timeout = 100, - .angle = carg(pos), + .angle = carg(pos) + M_PI/2, .layer = LAYER_PARTICLE_HIGH | 0x1, ); } From c6154920ca8e57d2dfb716b87bbb29288afd1871 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 6 Jan 2020 07:22:44 +0200 Subject: [PATCH 098/104] fix remaining deprecations (except in legacy stages) --- src/player.c | 29 ++++++++++++++----------- src/plrmodes/reimu.c | 4 ++-- src/plrmodes/reimu_a.c | 44 +++++++++++++++----------------------- src/plrmodes/reimu_b.c | 14 +++++------- src/plrmodes/youmu_a.c | 3 +-- src/projectile.c | 4 ---- src/projectile.h | 1 - src/stages/stage1_events.c | 5 ++--- 8 files changed, 43 insertions(+), 61 deletions(-) diff --git a/src/player.c b/src/player.c index 97b8cc395c..02685333c9 100644 --- a/src/player.c +++ b/src/player.c @@ -515,22 +515,24 @@ static void player_powersurge_logic(Player *plr) { .flags = PFLAG_NOREFLECT, ); - if(!(global.frames % 6)) { + if(!(global.frames % 6) && plr->powersurge.bonus.discharge_range > 0) { Sprite *spr = get_sprite("part/powersurge_field"); double scale = 2 * plr->powersurge.bonus.discharge_range / spr->w; double angle = rng_angle(); + assert(scale > 0); + PARTICLE( .sprite_ptr = spr, .pos = plr->pos, .color = color_mul_scalar(rng_bool() ? RGBA(1.5, 0.5, 0.0, 0.1) : RGBA(0.0, 0.5, 1.5, 0.1), 0.25), .rule = powersurge_charge_particle, - .draw_rule = ScaleFade, + .draw_rule = pdraw_timeout_fade(1, 0), .timeout = 14, .angle = angle, - .args = { 0, 0, (1+I)*scale, 0}, .layer = LAYER_PLAYER - 1, .flags = PFLAG_NOREFLECT, + .scale = scale, ); PARTICLE( @@ -538,12 +540,12 @@ static void player_powersurge_logic(Player *plr) { .pos = plr->pos, .color = RGBA(0.5, 0.5, 0.5, 0), .rule = powersurge_charge_particle, - .draw_rule = ScaleFade, + .draw_rule = pdraw_timeout_fade(1, 0), .timeout = 3, .angle = angle, - .args = { 0, 0, (1+I)*scale, 0}, .layer = LAYER_PLAYER - 1, .flags = PFLAG_NOREFLECT, + .scale = scale, ); } @@ -714,7 +716,7 @@ static void powersurge_distortion_draw(Projectile *p, int t, ProjDrawRuleArgs ar return; } - double radius = p->args[0] * pow(1 - t / p->timeout, 8) * (2 * t / 10.0); + double radius = args[0].as_float[0] * pow(1 - t / p->timeout, 8) * (2 * t / 10.0); Framebuffer *fb_aux = stage_get_fbpair(FBPAIR_FG_AUX)->front; Framebuffer *fb_main = r_framebuffer_current(); @@ -750,8 +752,10 @@ static void player_powersurge_expired(Player *plr) { .size = 1+I, .pos = plr->pos, .timeout = 60, - .draw_rule = powersurge_distortion_draw, - .args = { bonus.discharge_range }, + .draw_rule = { + powersurge_distortion_draw, + .args[0].as_float = { bonus.discharge_range }, + }, .layer = LAYER_PLAYER, .flags = PFLAG_REQUIREDPARTICLE | PFLAG_NOREFLECT, ); @@ -760,10 +764,10 @@ static void player_powersurge_expired(Player *plr) { .sprite_ptr = blast, .pos = plr->pos, .color = RGBA(0.6, 1.0, 4.4, 0.0), - .draw_rule = ScaleFade, + .draw_rule = pdraw_timeout_scalefade(2, 0, 1, 0), .timeout = 20, - .args = { 0, 0, scale * (2 + 0 * I) }, .angle = rng_angle(), + .scale = scale, .flags = PFLAG_REQUIREDPARTICLE | PFLAG_NOREFLECT, ); @@ -1357,10 +1361,9 @@ void player_graze(Player *plr, cmplx pos, int pts, int effect_intensity, const C .sprite = "graze", .color = c, .pos = pos, - .rule = asymptotic, + .draw_rule = pdraw_timeout_scalefade_exp(1, 0, 1, 0, 2), + .move = move_asymptotic_simple(0.2 * vrng_range(R[0], 1, 6) * vrng_dir(R[1]), 16 * (1 + 0.5 * vrng_sreal(R[3]))), .timeout = vrng_range(R[2], 4, 29), - .draw_rule = ScaleSquaredFade, - .args = { 0.2 * vrng_range(R[0], 1, 6) * vrng_dir(R[1]), 16 * (1 + 0.5 * vrng_sreal(R[3])), 1 }, .flags = PFLAG_NOREFLECT, // .layer = LAYER_PARTICLE_LOW, ); diff --git a/src/plrmodes/reimu.c b/src/plrmodes/reimu.c index 1905bc64df..3bbdc42467 100644 --- a/src/plrmodes/reimu.c +++ b/src/plrmodes/reimu.c @@ -83,9 +83,9 @@ int reimu_common_ofuda(Projectile *p, int t) { .color = &p->color, .timeout = 12, .pos = p->pos + p->args[0] * 0.3, - .args = { p->args[0] * 0.5, 0, 1+2*I }, + .args = { p->args[0] * 0.5 }, .rule = reimu_ofuda_trail, - .draw_rule = ScaleFade, + .draw_rule = pdraw_timeout_scalefade(1, 2, 1, 0), .layer = LAYER_PARTICLE_LOW, .flags = PFLAG_NOREFLECT, ); diff --git a/src/plrmodes/reimu_a.c b/src/plrmodes/reimu_a.c index 865e74826c..f34d322711 100644 --- a/src/plrmodes/reimu_a.c +++ b/src/plrmodes/reimu_a.c @@ -65,9 +65,8 @@ static int reimu_spirit_needle(Projectile *p, int t) { .color = &c, .timeout = 12, .pos = p->pos, - .args = { p->args[0] * 0.8, 0, 0+2*I }, - .rule = linear, - .draw_rule = ScaleFade, + .move = move_linear(p->args[0] * 0.8), + .draw_rule = pdraw_timeout_scalefade(0, 2, 1, 0), .layer = LAYER_PARTICLE_LOW, .flags = PFLAG_NOREFLECT, ); @@ -77,7 +76,7 @@ static int reimu_spirit_needle(Projectile *p, int t) { #define REIMU_SPIRIT_HOMING_SCALE 0.75 -static Projectile* reimu_spirit_spawn_ofuda_particle(Projectile *p, int t, double vfactor) { +static Projectile *reimu_spirit_spawn_ofuda_particle(Projectile *p, int t, double vfactor) { Color *c = HSLA_MUL_ALPHA(t * 0.1, 0.6, 0.7, 0.3); c->a = 0; @@ -87,12 +86,12 @@ static Projectile* reimu_spirit_spawn_ofuda_particle(Projectile *p, int t, doubl .color = c, .timeout = 12, .pos = p->pos, - .args = { p->args[0] * rng_range(0.6, 1.0) * vfactor, 0, (1+1.5*I) * REIMU_SPIRIT_HOMING_SCALE }, .angle = p->angle, - .rule = linear, - .draw_rule = ScaleFade, + .move = move_linear(p->args[0] * rng_range(0.6, 1.0) * vfactor), + .draw_rule = pdraw_timeout_scalefade(1, 1.5, 1, 0), .layer = LAYER_PARTICLE_LOW, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, + .scale = REIMU_SPIRIT_HOMING_SCALE, ); } @@ -118,12 +117,12 @@ static Projectile* reimu_spirit_spawn_homing_impact(Projectile *p, int t) { .color = &p->color, .timeout = 32, .pos = p->pos, - .args = { 0, 0, (1+1.5*I) * REIMU_SPIRIT_HOMING_SCALE }, .angle = p->angle, .rule = reimu_spirit_homing_impact, - .draw_rule = ScaleFade, + .draw_rule = pdraw_timeout_scalefade(1, 1.5, 1, 0), .layer = LAYER_PARTICLE_HIGH, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, + .scale = REIMU_SPIRIT_HOMING_SCALE, ); } @@ -228,9 +227,8 @@ TASK(reimu_spirit_bomb_orb_impact, { BoxedProjectile orb; }) { .color = color_mul_scalar(COLOR_COPY(&base_colors[i]), 2), .pos = pos + 30 * cexp(I*2*M_PI/num_impacts*(i+t*0.1)), .timeout = 40, - .draw_rule = ScaleFade, + .draw_rule = pdraw_timeout_scalefade(0, 7.5, 1, 0), .layer = LAYER_BOSS + 2, - .args = { 0, 0, 7.5*I }, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, ); @@ -371,9 +369,9 @@ TASK(reimu_spirit_bomb_orb, { BoxedPlayer plr; int index; real angle; }) { .pos = trail_pos, .angle = rng_angle(), .timeout = 30, - .draw_rule = ScaleFade, + .draw_rule = pdraw_timeout_scalefade(0.4, 0, 1, 0), .rule = reimu_spirit_bomb_orb_trail, - .args = { trail_vel, 0, 0.4 }, + .args = { trail_vel }, .flags = PFLAG_NOREFLECT, ); } @@ -529,13 +527,6 @@ static int reimu_spirit_slave(Enemy *e, int t) { return ACTION_NONE; } -static int reimu_spirit_yinyang_flare(Projectile *p, int t) { - double a = p->angle; - int r = linear(p, t); - p->angle = a; - return r; -} - static void reimu_spirit_yinyang_focused_visual(Enemy *e, int t, bool render) { if(!render && player_should_shoot(&global.plr, true)) { RNG_ARRAY(R, 4); @@ -544,11 +535,10 @@ static void reimu_spirit_yinyang_focused_visual(Enemy *e, int t, bool render) { .color = RGBA(0.5, vrng_range(R[0], 0, 0.25), 0, 0), .timeout = vrng_range(R[1], 8, 10), .pos = e->pos, - .args = { -I * vrng_range(R[2], 5, 10), 0, 0.25 + 0*I }, .angle = vrng_angle(R[3]), - .rule = reimu_spirit_yinyang_flare, - .draw_rule = ScaleFade, - .flags = PFLAG_NOREFLECT, + .move = move_linear(-I * vrng_range(R[2], 5, 10)), + .draw_rule = pdraw_timeout_scalefade(0.25, 0, 1, 0), + .flags = PFLAG_NOREFLECT | PFLAG_MANUALANGLE, ); } @@ -567,9 +557,9 @@ static void reimu_spirit_yinyang_unfocused_visual(Enemy *e, int t, bool render) .pos = e->pos, .args = { -I * vrng_range(R[2], 5, 10), 0, 0.25 + 0*I }, .angle = vrng_angle(R[3]), - .rule = reimu_spirit_yinyang_flare, - .draw_rule = ScaleFade, - .flags = PFLAG_NOREFLECT, + .move = move_linear(-I * vrng_range(R[2], 5, 10)), + .draw_rule = pdraw_timeout_scalefade(0.25, 0, 1, 0), + .flags = PFLAG_NOREFLECT | PFLAG_MANUALANGLE, ); } diff --git a/src/plrmodes/reimu_b.c b/src/plrmodes/reimu_b.c index bd94151eec..6478740968 100644 --- a/src/plrmodes/reimu_b.c +++ b/src/plrmodes/reimu_b.c @@ -82,9 +82,8 @@ static int reimu_dream_gap_bomb_projectile(Projectile *p, int t) { .color = &p->color, .pos = p->pos, .timeout = 20, - .draw_rule = ScaleFade, + .draw_rule = pdraw_timeout_scalefade(0, 3 * range / spr->w, 1, 0), .layer = LAYER_BOSS + 2, - .args = { 0, 0, 3 * range / spr->w * I }, .flags = PFLAG_NOREFLECT | PFLAG_REQUIREDPARTICLE, ); @@ -336,8 +335,7 @@ static void reimu_dream_spawn_warp_effect(cmplx pos, bool exit) { .color = RGBA(0.5, 0.5, 0.5, 0.5), .timeout = 20, .angle = rng_angle(), - .draw_rule = ScaleFade, - .args = { 0, 0, 0.2 + 1 * I }, + .draw_rule = pdraw_timeout_scalefade(0.2, 1, 1, 0), .layer = LAYER_PLAYER_FOCUS, ); @@ -348,8 +346,7 @@ static void reimu_dream_spawn_warp_effect(cmplx pos, bool exit) { .color = clr, .timeout = 20, .angle = rng_angle(), - .draw_rule = ScaleFade, - .args = { 0, 0, 0.1 + 0.6 * I }, + .draw_rule = pdraw_timeout_scalefade(0.1, 0.6, 1, 0), .layer = LAYER_PLAYER_FOCUS, ); } @@ -435,9 +432,8 @@ static int reimu_dream_needle(Projectile *p, int t) { .color = c, .timeout = 12, .pos = p->pos, - .args = { p->args[0] * 0.8, 0, 0+3*I }, - .rule = linear, - .draw_rule = ScaleFade, + .move = move_linear(p->args[0] * 0.8), + .draw_rule = pdraw_timeout_scalefade(0, 3, 1, 0), .layer = LAYER_PARTICLE_LOW, .flags = PFLAG_NOREFLECT, ); diff --git a/src/plrmodes/youmu_a.c b/src/plrmodes/youmu_a.c index e3d5ec40aa..d448423156 100644 --- a/src/plrmodes/youmu_a.c +++ b/src/plrmodes/youmu_a.c @@ -396,8 +396,7 @@ static void youmu_mirror_bomb_damage_callback(EntityInterface *victim, cmplx vic .pos = victim_origin, .color = RGBA(vrng_range(R[0], 0.6, 0.7), 0.8, vrng_range(R[1], 0.7, 0.775), vrng_range(R[2], 0, 0.5)), .timeout = 30, - .draw_rule = ScaleFade, - .args = { 0, 0, (0.0 + 0.5*I) }, + .draw_rule = pdraw_timeout_scalefade(0, 0.5, 1, 0), .layer = LAYER_PARTICLE_HIGH | 0x4, .angle = vrng_angle(R[3]), .flags = PFLAG_REQUIREDPARTICLE, diff --git a/src/projectile.c b/src/projectile.c index fe88fda855..241f42049b 100644 --- a/src/projectile.c +++ b/src/projectile.c @@ -1050,10 +1050,6 @@ void ScaleFade(Projectile *p, int t, ProjDrawRuleArgs args) { ScaleFadeImpl(p, t, 1); } -void ScaleSquaredFade(Projectile *p, int t, ProjDrawRuleArgs args) { - ScaleFadeImpl(p, t, 2); -} - static void pdraw_scalefade_func(Projectile *p, int t, ProjDrawRuleArgs args) { cmplx32 scale0 = args[0].as_cmplx; cmplx32 scale1 = args[1].as_cmplx; diff --git a/src/projectile.h b/src/projectile.h index b5fe426ced..4d24af95ef 100644 --- a/src/projectile.h +++ b/src/projectile.h @@ -238,7 +238,6 @@ void Shrink(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; void Fade(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; void GrowFade(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; void ScaleFade(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; -void ScaleSquaredFade(Projectile *p, int t, ProjDrawRuleArgs) DEPRECATED_DRAW_RULE; ProjDrawRule pdraw_basic(void); ProjDrawRule pdraw_timeout_scalefade_exp(cmplx32 scale0, cmplx32 scale1, float32 opacity0, float32 opacity1, float32 opacity_exp); diff --git a/src/stages/stage1_events.c b/src/stages/stage1_events.c index 6d5ab4ec87..f093544fbd 100644 --- a/src/stages/stage1_events.c +++ b/src/stages/stage1_events.c @@ -32,15 +32,14 @@ static Dialog *stage1_dialog_post_boss(void) { return d; } -static Projectile* spawn_stain(cmplx pos, float angle, int to) { +static Projectile *spawn_stain(cmplx pos, float angle, int to) { return PARTICLE( .sprite = "stain", .pos = pos, - .draw_rule = ScaleFade, + .draw_rule = pdraw_timeout_scalefade(0, 0.8, 1, 0), .timeout = to, .angle = angle, .color = RGBA(0.4, 0.4, 0.4, 0), - .args = {0, 0, 0.8*I} ); } From 8a202cf0917cc3c8510dd499a2d5d7b228b193c8 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Mon, 6 Jan 2020 07:46:23 +0200 Subject: [PATCH 099/104] convert reimu_dream_needle into a task (test) --- src/plrmodes/reimu_b.c | 75 ++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/src/plrmodes/reimu_b.c b/src/plrmodes/reimu_b.c index 6478740968..549dd1d652 100644 --- a/src/plrmodes/reimu_b.c +++ b/src/plrmodes/reimu_b.c @@ -411,36 +411,6 @@ static int reimu_dream_ofuda(Projectile *p, int t) { return r; } -static int reimu_dream_needle(Projectile *p, int t) { - if(t >= 0) { - reimu_dream_bullet_warp(p, t); - } - - p->angle = carg(p->args[0]); - - if(t < 0) { - return ACTION_ACK; - } - - p->pos += p->args[0]; - - Color *c = color_mul(COLOR_COPY(&p->color), RGBA_MUL_ALPHA(0.75, 0.5, 1, 0.35)); - c->a = 0; - - PARTICLE( - .sprite_ptr = p->sprite, - .color = c, - .timeout = 12, - .pos = p->pos, - .move = move_linear(p->args[0] * 0.8), - .draw_rule = pdraw_timeout_scalefade(0, 3, 1, 0), - .layer = LAYER_PARTICLE_LOW, - .flags = PFLAG_NOREFLECT, - ); - - return ACTION_NONE; -} - static void reimu_dream_shot(Player *p) { play_loop("generic_shot"); int dmg = 60; @@ -482,6 +452,40 @@ static void reimu_dream_slave_visual(Enemy *e, int t, bool render) { } } +TASK(reimu_dream_needle, { cmplx pos; cmplx vel; }) { + Projectile *p = TASK_BIND_UNBOXED(PROJECTILE( + .proto = pp_needle2, + .pos = ARGS.pos, + .color = RGBA_MUL_ALPHA(1, 1, 1, 0.35), + .move = move_linear(ARGS.vel), + .type = PROJ_PLAYER, + .damage = 42, + .shader = "sprite_particle", + )); + + MoveParams trail_move = p->move; + trail_move.velocity *= 0.8; + Color *trail_color = color_mul(COLOR_COPY(&p->color), RGBA_MUL_ALPHA(0.75, 0.5, 1, 0.35)); + trail_color->a = 0; + + for(int t = 0;; ++t) { + reimu_dream_bullet_warp(p, t); + + PARTICLE( + .sprite_ptr = p->sprite, + .color = trail_color, + .timeout = 12, + .pos = p->pos, + .move = trail_move, + .draw_rule = pdraw_timeout_scalefade(0, 3, 1, 0), + .layer = LAYER_PARTICLE_LOW, + .flags = PFLAG_NOREFLECT, + ); + + YIELD; + } +} + static int reimu_dream_slave(Enemy *e, int t) { if(t < 0) { return ACTION_ACK; @@ -508,16 +512,7 @@ static int reimu_dream_slave(Enemy *e, int t) { if(player_should_shoot(&global.plr, true)) { if(!((global.frames + 3) % 6)) { - PROJECTILE( - .proto = pp_needle2, - .pos = e->pos, - .color = RGBA_MUL_ALPHA(1, 1, 1, 0.35), - .rule = reimu_dream_needle, - .args = { 20.0 * shotdir }, - .type = PROJ_PLAYER, - .damage = 42, - .shader = "sprite_default", - ); + INVOKE_TASK(reimu_dream_needle, e->pos, 20 * shotdir); } } From b38778fd7251df6370e438411f450299dda1e0ab Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 10 Jan 2020 06:32:47 +0200 Subject: [PATCH 100/104] show num. of context swiches/frame in coroutine stats --- src/coroutine.c | 64 ++++++++++++++++++++++++++++++++++------------ src/coroutine.h | 2 +- src/renderer/api.c | 2 +- 3 files changed, 49 insertions(+), 19 deletions(-) diff --git a/src/coroutine.c b/src/coroutine.c index 853567d36a..7f7693cc06 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -15,6 +15,10 @@ // #define EVT_DEBUG +#ifdef DEBUG + #define CO_TASK_STATS +#endif + #ifdef CO_TASK_DEBUG #define TASK_DEBUG(...) log_debug(__VA_ARGS__) #else @@ -74,11 +78,25 @@ struct CoTask { #define SUBTASK_NODE_TO_TASK(n) CASTPTR_ASSUME_ALIGNED((char*)(n) - offsetof(CoTask, subtask_chain), CoTask) static LIST_ANCHOR(CoTask) task_pool; -static size_t num_tasks_allocated; -static size_t num_tasks_in_use; CoSched *_cosched_global; +#ifdef CO_TASK_STATS +static struct { + size_t num_tasks_allocated; + size_t num_tasks_in_use; + size_t num_switches_this_frame; +} cotask_stats; + +#define STAT_VAL(name) (cotask_stats.name) +#define STAT_VAL_SET(name, value) ((cotask_stats.name) = (value)) +#else +#define STAT_VAL(name) (0) +#define STAT_VAL_SET(name, value) (0) +#endif + +#define STAT_VAL_ADD(name, value) STAT_VAL_SET(name, STAT_VAL(name) + (value)) + #ifdef CO_TASK_DEBUG static size_t debug_event_id; #define TASK_DEBUG_EVENT(ev) uint64_t ev = debug_event_id++ @@ -105,23 +123,23 @@ CoTask *cotask_unbox(BoxedTask box) { CoTask *cotask_new(CoTaskFunc func) { CoTask *task; - ++num_tasks_in_use; + STAT_VAL_ADD(num_tasks_in_use, 1); if((task = alist_pop(&task_pool))) { koishi_recycle(&task->ko, func); TASK_DEBUG( "Recycled task %p for proc %p (%zu tasks allocated / %zu in use)", (void*)task, *(void**)&func, - num_tasks_allocated, num_tasks_in_use + STAT_VAL(num_tasks_allocated), STAT_VAL(num_tasks_in_use) ); } else { task = calloc(1, sizeof(*task)); koishi_init(&task->ko, CO_STACK_SIZE, func); - ++num_tasks_allocated; + STAT_VAL_ADD(num_tasks_allocated, 1); TASK_DEBUG( "Created new task %p for proc %p (%zu tasks allocated / %zu in use)", (void*)task, *(void**)&func, - num_tasks_allocated, num_tasks_in_use + STAT_VAL(num_tasks_allocated), STAT_VAL(num_tasks_in_use) ); } @@ -145,12 +163,12 @@ void cotask_free(CoTask *task) { memset(&task->wait, 0, sizeof(task->wait)); alist_push(&task_pool, task); - --num_tasks_in_use; + STAT_VAL_ADD(num_tasks_in_use, -1); TASK_DEBUG( "Released task %s (%zu tasks allocated / %zu in use)", task->debug_label, - num_tasks_allocated, num_tasks_in_use + STAT_VAL(num_tasks_allocated), STAT_VAL(num_tasks_in_use) ); } @@ -217,6 +235,7 @@ static void *cotask_force_resume(CoTask *task, void *arg) { TASK_DEBUG_EVENT(ev); TASK_DEBUG("[%zu] Resuming task %s", ev, task->debug_label); + STAT_VAL_ADD(num_switches_this_frame, 1); arg = koishi_resume(&task->ko, arg); TASK_DEBUG("[%zu] koishi_resume returned (%s)", ev, task->debug_label); @@ -313,6 +332,7 @@ void *cotask_yield(void *arg) { attr_unused CoTask *task = cotask_active(); TASK_DEBUG_EVENT(ev); TASK_DEBUG("[%zu] Yielding from task %s", ev, task->debug_label); + STAT_VAL_ADD(num_switches_this_frame, 1); arg = koishi_yield(arg); TASK_DEBUG("[%zu] koishi_yield returned (%s)", ev, task->debug_label); return arg; @@ -550,19 +570,29 @@ void coroutines_shutdown(void) { #include "resource/font.h" #endif -void coroutines_draw_debug(void) { -#ifdef DEBUG +void coroutines_draw_stats(void) { +#ifdef CO_TASK_STATS static char buf[128]; - snprintf(buf, sizeof(buf), "Tasks: %4zu / %4zu ", num_tasks_in_use, num_tasks_allocated); - Font *font = get_font("monotiny"); - text_draw(buf, &(TextParams) { - .pos = { SCREEN_W, font_get_lineskip(font) }, - .font_ptr = font, + TextParams tp = { + .pos = { SCREEN_W }, .color = RGB(1, 1, 1), - .shader = "text_default", + .shader_ptr = r_shader_get("text_default"), + .font_ptr = get_font("monotiny"), .align = ALIGN_RIGHT, - }); + }; + + float ls = font_get_lineskip(tp.font_ptr); + + tp.pos.y += ls; + snprintf(buf, sizeof(buf), "Tasks: %4zu / %4zu ", STAT_VAL(num_tasks_in_use), STAT_VAL(num_tasks_allocated)); + text_draw(buf, &tp); + + tp.pos.y += ls; + snprintf(buf, sizeof(buf), "Switches/frame: %4zu ", STAT_VAL(num_switches_this_frame)); + text_draw(buf, &tp); + + STAT_VAL_SET(num_switches_this_frame, 0); #endif } diff --git a/src/coroutine.h b/src/coroutine.h index 8c41b4905a..1ea0044c54 100644 --- a/src/coroutine.h +++ b/src/coroutine.h @@ -81,7 +81,7 @@ typedef char CoTaskDebugInfo; void coroutines_init(void); void coroutines_shutdown(void); -void coroutines_draw_debug(void); +void coroutines_draw_stats(void); CoTask *cotask_new(CoTaskFunc func); void cotask_free(CoTask *task); diff --git a/src/renderer/api.c b/src/renderer/api.c index acfd87b341..4f3fcf37ac 100644 --- a/src/renderer/api.c +++ b/src/renderer/api.c @@ -602,7 +602,7 @@ VsyncMode r_vsync_current(void) { } void r_swap(SDL_Window *window) { - coroutines_draw_debug(); + coroutines_draw_stats(); _r_sprite_batch_end_frame(); B.swap(window); } From 55dc548fb3942a29c9446ecacbd828c1d15ffed9 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Fri, 10 Jan 2020 06:55:43 +0200 Subject: [PATCH 101/104] cont. coroutinizing ReimuB; gapping works properly now --- src/plrmodes/reimu.c | 36 +++----------------- src/plrmodes/reimu.h | 1 + src/plrmodes/reimu_a.c | 41 ++++++++++++++++------ src/plrmodes/reimu_b.c | 77 +++++++++++++++++++++++++----------------- 4 files changed, 83 insertions(+), 72 deletions(-) diff --git a/src/plrmodes/reimu.c b/src/plrmodes/reimu.c index 3bbdc42467..56f4d6859a 100644 --- a/src/plrmodes/reimu.c +++ b/src/plrmodes/reimu.c @@ -52,45 +52,19 @@ double reimu_common_property(Player *plr, PlrProperty prop) { UNREACHABLE; } -static int reimu_ofuda_trail(Projectile *p, int t) { - int r = linear(p, t); - - if(t < 0) { - return r; - } - - p->color.g *= 0.95; - - return r; -} - -int reimu_common_ofuda(Projectile *p, int t) { - if(t == EVENT_DEATH) { - return ACTION_ACK; - } - - p->angle = carg(p->args[0]); - - if(t == EVENT_BIRTH) { - return ACTION_ACK; - } - - p->pos += p->args[0]; - - PARTICLE( +Projectile *reimu_common_ofuda_swawn_trail(Projectile *p, ProjectileList *dest) { + return PARTICLE( // .sprite_ptr = p->sprite, .sprite_ptr = get_sprite("proj/hghost"), .color = &p->color, .timeout = 12, - .pos = p->pos + p->args[0] * 0.3, - .args = { p->args[0] * 0.5 }, - .rule = reimu_ofuda_trail, + .pos = p->pos + p->move.velocity * 0.3, + .move = move_linear(p->move.velocity * 0.5), .draw_rule = pdraw_timeout_scalefade(1, 2, 1, 0), .layer = LAYER_PARTICLE_LOW, .flags = PFLAG_NOREFLECT, + .dest = dest, ); - - return ACTION_NONE; } void reimu_common_draw_yinyang(Enemy *e, int t, const Color *c) { diff --git a/src/plrmodes/reimu.h b/src/plrmodes/reimu.h index 8512f642fa..8d1351d683 100644 --- a/src/plrmodes/reimu.h +++ b/src/plrmodes/reimu.h @@ -20,6 +20,7 @@ extern PlayerMode plrmode_reimu_b; double reimu_common_property(Player *plr, PlrProperty prop); int reimu_common_ofuda(Projectile *p, int t); +Projectile *reimu_common_ofuda_swawn_trail(Projectile *p, ProjectileList *dest); void reimu_common_draw_yinyang(Enemy *e, int t, const Color *c); void reimu_common_bomb_bg(Player *p, float alpha); void reimu_common_bomb_buffer_init(void); diff --git a/src/plrmodes/reimu_a.c b/src/plrmodes/reimu_a.c index f34d322711..2370c50889 100644 --- a/src/plrmodes/reimu_a.c +++ b/src/plrmodes/reimu_a.c @@ -408,21 +408,42 @@ static void reimu_spirit_bomb_bg(Player *p) { colorfill(0, 0.05 * alpha, 0.1 * alpha, alpha * 0.5); } +TASK(reimu_spirit_ofuda, { cmplx pos; cmplx vel; real damage; }) { + Projectile *ofuda = PROJECTILE( + .proto = pp_ofuda, + .pos = ARGS.pos, + .color = RGBA_MUL_ALPHA(1, 1, 1, 0.5), + .move = move_linear(ARGS.vel), + .type = PROJ_PLAYER, + .damage = ARGS.damage, + .shader = "sprite_particle", + ); + + BoxedProjectile b_ofuda = ENT_BOX(ofuda); + ProjectileList trails = { 0 }; + + int t = 0; + while((ofuda = ENT_UNBOX(b_ofuda)) || trails.first) { + if(ofuda) { + reimu_common_ofuda_swawn_trail(ofuda, &trails); + } + + for(Projectile *p = trails.first; p; p = p->next) { + p->color.g *= 0.95; + } + + process_projectiles(&trails, false); + YIELD; + ++t; + } +} + static void reimu_spirit_shot(Player *p) { play_loop("generic_shot"); if(!(global.frames % 3)) { int i = 1 - 2 * (bool)(global.frames % 6); - PROJECTILE( - .proto = pp_ofuda, - .pos = p->pos + 10 * i - 15.0*I, - .color = RGBA_MUL_ALPHA(1, 1, 1, 0.5), - .rule = reimu_common_ofuda, - .args = { -20.0*I }, - .type = PROJ_PLAYER, - .damage = 100 - 8 * (p->power / 100), - .shader = "sprite_default", - ); + INVOKE_TASK(reimu_spirit_ofuda, p->pos + 10 * i - 15.0*I, -20*I, 100 - 8 * (p->power / 100)); } for(int pwr = 0; pwr <= p->power/100; ++pwr) { diff --git a/src/plrmodes/reimu_b.c b/src/plrmodes/reimu_b.c index 549dd1d652..3ff9418ea8 100644 --- a/src/plrmodes/reimu_b.c +++ b/src/plrmodes/reimu_b.c @@ -351,8 +351,8 @@ static void reimu_dream_spawn_warp_effect(cmplx pos, bool exit) { ); } -static void reimu_dream_bullet_warp(Projectile *p, int t) { - if(creal(p->args[3]) > 0 /*global.plr.power / 100*/) { +static void reimu_dream_bullet_warp(Projectile *p, int *warp_count) { + if(*warp_count < 1) { return; } @@ -361,7 +361,7 @@ static void reimu_dream_bullet_warp(Projectile *p, int t) { Rect p_bbox = { p->pos - p_long_side * half, p->pos + p_long_side * half }; FOR_EACH_GAP(gap) { - double a = (carg(-gap->pos0) - carg(p->args[0])); + double a = (carg(-gap->pos0) - carg(p->move.velocity)); if(fabs(a) < 2*M_PI/3) { continue; @@ -390,30 +390,55 @@ static void reimu_dream_bullet_warp(Projectile *p, int t) { reimu_dream_spawn_warp_effect(gap->pos + gap->args[0] * GAP_LENGTH * (fract - 0.5), false); reimu_dream_spawn_warp_effect(o, true); - p->args[0] = -cabs(p->args[0]) * ngap->pos0; - p->pos = o + p->args[0]; - p->args[3] += 1; + // p->args[0] = -cabs(p->args[0]) * ngap->pos0; + // p->pos = o + p->args[0]; + // p->args[3] += 1; + + cmplx new_vel = -cabs(p->move.velocity) * ngap->pos0; + real angle_diff = carg(new_vel) - carg(p->move.velocity); + + p->move.velocity *= cdir(angle_diff); + p->move.acceleration *= cdir(angle_diff); + p->pos = o + p->move.velocity; + --*warp_count; } } } -static int reimu_dream_ofuda(Projectile *p, int t) { - if(t >= 0) { - reimu_dream_bullet_warp(p, t); - } +TASK(reimu_dream_ofuda, { cmplx pos; cmplx vel; }) { + Projectile *ofuda = PROJECTILE( + .proto = pp_ofuda, + .pos = ARGS.pos, + .color = RGBA_MUL_ALPHA(1, 1, 1, 0.5), + .move = move_asymptotic(1.5 * ARGS.vel, ARGS.vel, 0.8), + .type = PROJ_PLAYER, + .damage = 60, + .shader = "sprite_particle", + ); - cmplx ov = p->args[0]; - double s = cabs(ov); - p->args[0] *= clamp(s * (1.5 - t / 10.0), s*1.0, 1.5*s) / s; - int r = reimu_common_ofuda(p, t); - p->args[0] = ov; + BoxedProjectile b_ofuda = ENT_BOX(ofuda); + ProjectileList trails = { 0 }; - return r; + int warp_cnt = 1; + int t = 0; + while((ofuda = ENT_UNBOX(b_ofuda)) || trails.first) { + if(ofuda) { + reimu_dream_bullet_warp(ofuda, &warp_cnt); + reimu_common_ofuda_swawn_trail(ofuda, &trails); + } + + for(Projectile *p = trails.first; p; p = p->next) { + p->color.g *= 0.95; + } + + process_projectiles(&trails, false); + YIELD; + ++t; + } } static void reimu_dream_shot(Player *p) { play_loop("generic_shot"); - int dmg = 60; if(!(global.frames % 6)) { for(int i = -1; i < 2; i += 2) { @@ -421,16 +446,7 @@ static void reimu_dream_shot(Player *p) { cmplx spread_dir = shot_dir * cexp(I*M_PI*0.5); for(int j = -1; j < 2; j += 2) { - PROJECTILE( - .proto = pp_ofuda, - .pos = p->pos + 10 * j * spread_dir, - .color = RGBA_MUL_ALPHA(1, 1, 1, 0.5), - .rule = reimu_dream_ofuda, - .args = { -20.0 * shot_dir }, - .type = PROJ_PLAYER, - .damage = dmg, - .shader = "sprite_default", - ); + INVOKE_TASK(reimu_dream_ofuda, p->pos + 10 * j * spread_dir, -20.0 * shot_dir); } } } @@ -463,20 +479,19 @@ TASK(reimu_dream_needle, { cmplx pos; cmplx vel; }) { .shader = "sprite_particle", )); - MoveParams trail_move = p->move; - trail_move.velocity *= 0.8; Color *trail_color = color_mul(COLOR_COPY(&p->color), RGBA_MUL_ALPHA(0.75, 0.5, 1, 0.35)); trail_color->a = 0; + int warp_cnt = 1; for(int t = 0;; ++t) { - reimu_dream_bullet_warp(p, t); + reimu_dream_bullet_warp(p, &warp_cnt); PARTICLE( .sprite_ptr = p->sprite, .color = trail_color, .timeout = 12, .pos = p->pos, - .move = trail_move, + .move = move_linear(p->move.velocity * 0.8), .draw_rule = pdraw_timeout_scalefade(0, 3, 1, 0), .layer = LAYER_PARTICLE_LOW, .flags = PFLAG_NOREFLECT, From 2de0a6b9d81ee81664dcd612e414be45e0725563 Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sat, 11 Jan 2020 18:30:02 +0200 Subject: [PATCH 102/104] Track peak coroutine stack usage (approximate) Also reduced CO_TASK_SIZE back to 64kb --- external/koishi | 2 +- src/coroutine.c | 147 ++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 144 insertions(+), 5 deletions(-) diff --git a/external/koishi b/external/koishi index 76c7d3d316..29a2780f8a 160000 --- a/external/koishi +++ b/external/koishi @@ -1 +1 @@ -Subproject commit 76c7d3d3160da7a2fc73d558b3a0d759f48e8444 +Subproject commit 29a2780f8a5c1594f9de66c61106d9b0307bac78 diff --git a/src/coroutine.c b/src/coroutine.c index 7f7693cc06..8662630fd0 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -11,7 +11,7 @@ #include "coroutine.h" #include "util.h" -#define CO_STACK_SIZE (128 * 1024) +#define CO_STACK_SIZE (64 * 1024) // #define EVT_DEBUG @@ -86,14 +86,21 @@ static struct { size_t num_tasks_allocated; size_t num_tasks_in_use; size_t num_switches_this_frame; + size_t peak_stack_usage; } cotask_stats; #define STAT_VAL(name) (cotask_stats.name) #define STAT_VAL_SET(name, value) ((cotask_stats.name) = (value)) -#else + +// enable stack usage tracking (loose) +#define CO_TASK_STATS_STACK + +#else // CO_TASK_STATS + #define STAT_VAL(name) (0) #define STAT_VAL_SET(name, value) (0) -#endif + +#endif // CO_TASK_STATS #define STAT_VAL_ADD(name, value) STAT_VAL_SET(name, STAT_VAL(name) + (value)) @@ -104,6 +111,131 @@ static size_t debug_event_id; #define TASK_DEBUG_EVENT(ev) ((void)0) #endif +#ifdef CO_TASK_STATS_STACK + +/* + * Crude and simple method to estimate stack usage per task: at init time, fill + * the entire stack with a known 32-bit pattern (the "canary"). The canary is + * pseudo-random and depends on the task's unique ID. After the task is finished, + * try to find the first occurrence of the canary since the base of the stack + * with a fast binary search. If we happen to find a false canary somewhere + * in the middle of actually used stack space, well, tough luck. This was never + * meant to be exact, and it's pretty unlikely anyway. A linear search from the + * end of the region would fix this potential problem, but is slower. + * + * Note that we assume that the stack grows down, since that's how it is on most + * systems. + */ + +/* + * Reserve some space for control structures on the stack; we don't want to + * overwrite that with canaries. fcontext requires this. + */ +#define STACK_BUFFER_UPPER 64 +#define STACK_BUFFER_LOWER 0 + +// for splitmix32 +#include "random.h" + +static inline uint32_t get_canary(CoTask *task) { + uint32_t temp = task->unique_id; + return splitmix32(&temp); +} + +static void *get_stack(CoTask *task, size_t *sz) { + char *lower = koishi_get_stack(&task->ko, sz); + + // Not all koishi backends support stack inspection. Give up in those cases. + if(!lower || !*sz) { + log_debug("koishi_get_stack() returned NULL"); + return NULL; + } + + char *upper = lower + *sz; + assert(upper > lower); + + lower += STACK_BUFFER_LOWER; + upper -= STACK_BUFFER_UPPER; + *sz = upper - lower; + return lower; +} + +static void setup_stack(CoTask *task) { + size_t stack_size; + void *stack = get_stack(task, &stack_size); + + if(!stack) { + return; + } + + uint32_t canary = get_canary(task); + assert(stack_size == sizeof(canary) * (stack_size / sizeof(canary))); + + for(uint32_t *p = stack; p < (uint32_t*)stack + stack_size / sizeof(canary); ++p) { + *p = canary; + } +} + +/* + * Find the first occurrence of a canary since the base of the stack, assuming + * the base is at the top. Note that since this is essentially a binary search + * on an array that may or may *not* be sorted, it can sometimes give the wrong + * answer. This is fine though, since the odds are low and we only care about + * finding an approximate upper bound on stack usage for all tasks, anyway. + */ +static uint32_t *find_first_canary(uint32_t *region, size_t offset, size_t sz, uint32_t canary) { + if(sz == 1) { + return region + offset; + } + + size_t half_size = sz / 2; + size_t mid_index = offset + half_size; + + if(region[mid_index] == canary) { + return find_first_canary(region, offset + half_size, sz - half_size, canary); + } else { + return find_first_canary(region, offset, half_size, canary); + } +} + +static void estimate_stack_usage(CoTask *task) { + size_t stack_size; + void *stack = get_stack(task, &stack_size); + + if(!stack) { + return; + } + + uint32_t canary = get_canary(task); + + size_t num_segments = stack_size / sizeof(canary); + uint32_t *first_segment = stack; + uint32_t *p_canary = find_first_canary(stack, 0, num_segments, canary); + assert(p_canary[1] != canary); + + size_t real_stack_size = stack_size + STACK_BUFFER_LOWER + STACK_BUFFER_UPPER; + size_t usage = (uintptr_t)(first_segment + num_segments - p_canary) * sizeof(canary) + STACK_BUFFER_UPPER; + double percentage = usage / (double)real_stack_size; + + if(usage > STAT_VAL(peak_stack_usage)) { + TASK_DEBUG(">>> %s <<<", task->debug_label); + log_debug("New peak stack usage: %zu out of %zu (%.02f%%); recommended CO_STACK_SIZE >= %zu", + usage, + real_stack_size, + percentage * 100, + (size_t)(topow2_u64(usage) * 2) + ); + STAT_VAL_SET(peak_stack_usage, usage); + } +} + +#else // CO_TASK_STATS_STACK + +static void setup_stack(CoTask *task) { } +static void estimate_stack_usage(CoTask *task) { } + +#endif // CO_TASK_STATS_STACK + BoxedTask cotask_box(CoTask *task) { return (BoxedTask) { .ptr = (uintptr_t)task, @@ -145,6 +277,7 @@ CoTask *cotask_new(CoTaskFunc func) { static uint32_t unique_counter = 0; task->unique_id = ++unique_counter; + setup_stack(task); assert(unique_counter != 0); #ifdef CO_TASK_DEBUG @@ -155,6 +288,8 @@ CoTask *cotask_new(CoTaskFunc func) { } void cotask_free(CoTask *task) { + estimate_stack_usage(task); + task->unique_id = 0; task->supertask = NULL; memset(&task->bound_ent, 0, sizeof(task->bound_ent)); @@ -585,7 +720,11 @@ void coroutines_draw_stats(void) { float ls = font_get_lineskip(tp.font_ptr); tp.pos.y += ls; - snprintf(buf, sizeof(buf), "Tasks: %4zu / %4zu ", STAT_VAL(num_tasks_in_use), STAT_VAL(num_tasks_allocated)); + snprintf(buf, sizeof(buf), "Peak stack: %zukb Tasks: %4zu / %4zu ", + STAT_VAL(peak_stack_usage) / 1024, + STAT_VAL(num_tasks_in_use), + STAT_VAL(num_tasks_allocated) + ); text_draw(buf, &tp); tp.pos.y += ls; From 85c97ac22fbf19d8b227c04047d72feeac19ad3c Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 19 Jan 2020 17:13:32 +0200 Subject: [PATCH 103/104] WIP dynamic glow effect --- .../shader/healthbar_radial.frag.glsl | 2 + .../shader/interface/healthbar.glslh | 1 + .../shader/interface/sprite.glslh | 1 + .../shader/lib/blur/blur13.glslh | 30 +++-- .../shader/lib/blur/blur25.glslh | 54 +++++---- .../shader/lib/blur/blur5.glslh | 14 ++- .../shader/lib/blur/blur9.glslh | 22 ++-- .../shader/lib/sprite_main.frag.glslh | 18 ++- .../00-taisei.pkgdir/shader/lib/util.glslh | 54 +++++++++ resources/00-taisei.pkgdir/shader/meson.build | 1 + .../shader/sprite_bullet.frag.glsl | 13 +- scripts/gen-blur-shader.py | 19 ++- src/coroutine.c | 2 +- src/stagedraw.c | 111 ++++++++++++++---- src/util/fbmgr.c | 28 +++-- src/util/miscmath.c | 4 +- 16 files changed, 282 insertions(+), 92 deletions(-) diff --git a/resources/00-taisei.pkgdir/shader/healthbar_radial.frag.glsl b/resources/00-taisei.pkgdir/shader/healthbar_radial.frag.glsl index 4467ce5bb1..114788b652 100644 --- a/resources/00-taisei.pkgdir/shader/healthbar_radial.frag.glsl +++ b/resources/00-taisei.pkgdir/shader/healthbar_radial.frag.glsl @@ -76,4 +76,6 @@ void main(void) { fragColor = alphaCompose(fragColor, borderColor * inner); fragColor = alphaCompose(fragColor, borderColor * outer); fragColor *= opacity; + + fragGlow = vec4(vec3(0), opacity * (glow + 2 * (fillFactor + inner + outer))); } diff --git a/resources/00-taisei.pkgdir/shader/interface/healthbar.glslh b/resources/00-taisei.pkgdir/shader/interface/healthbar.glslh index 3f31a8e182..1e6585d6ce 100644 --- a/resources/00-taisei.pkgdir/shader/interface/healthbar.glslh +++ b/resources/00-taisei.pkgdir/shader/interface/healthbar.glslh @@ -11,6 +11,7 @@ ATTRIBUTE(2) vec2 texCoordRawIn; #ifdef FRAG_STAGE OUT(0) vec4 fragColor; +OUT(1) vec4 fragGlow; #endif VARYING(0) vec2 texCoord; diff --git a/resources/00-taisei.pkgdir/shader/interface/sprite.glslh b/resources/00-taisei.pkgdir/shader/interface/sprite.glslh index 634b18eb55..a89fcf9abd 100644 --- a/resources/00-taisei.pkgdir/shader/interface/sprite.glslh +++ b/resources/00-taisei.pkgdir/shader/interface/sprite.glslh @@ -31,6 +31,7 @@ ATTRIBUTE(14) vec4 spriteCustomParams; #ifdef FRAG_STAGE OUT(0) vec4 fragColor; +OUT(1) vec4 fragGlow; #endif UNIFORM(0) sampler2D tex; diff --git a/resources/00-taisei.pkgdir/shader/lib/blur/blur13.glslh b/resources/00-taisei.pkgdir/shader/lib/blur/blur13.glslh index 53ff1ca26b..ceea352ed6 100644 --- a/resources/00-taisei.pkgdir/shader/lib/blur/blur13.glslh +++ b/resources/00-taisei.pkgdir/shader/lib/blur/blur13.glslh @@ -4,21 +4,25 @@ #ifndef BLUR_blur13_H #define BLUR_blur13_H +#ifndef BLUR13_SAMPLER_FUNC +#define BLUR13_SAMPLER_FUNC(sampler, uv) texture(sampler, uv) +#endif + vec4 sample_blur13(sampler2D tex, vec2 uv, vec2 dir) { return - texture(tex, uv - dir * 6.0) * 0.008178892620166084 + - texture(tex, uv - dir * 5.0) * 0.02044711192270963 + - texture(tex, uv - dir * 4.0) * 0.04327301698301055 + - texture(tex, uv - dir * 3.0) * 0.07752648775146245 + - texture(tex, uv - dir * 2.0) * 0.11757927456823031 + - texture(tex, uv - dir) * 0.15095905785041683 + - texture(tex, uv) * 0.16407231660800825 + - texture(tex, uv + dir) * 0.15095905785041683 + - texture(tex, uv + dir * 2.0) * 0.11757927456823031 + - texture(tex, uv + dir * 3.0) * 0.07752648775146245 + - texture(tex, uv + dir * 4.0) * 0.04327301698301055 + - texture(tex, uv + dir * 5.0) * 0.02044711192270963 + - texture(tex, uv + dir * 6.0) * 0.008178892620166084; + BLUR13_SAMPLER_FUNC(tex, uv - dir * 6.0) * 0.008178892620166084 + + BLUR13_SAMPLER_FUNC(tex, uv - dir * 5.0) * 0.02044711192270963 + + BLUR13_SAMPLER_FUNC(tex, uv - dir * 4.0) * 0.04327301698301055 + + BLUR13_SAMPLER_FUNC(tex, uv - dir * 3.0) * 0.07752648775146245 + + BLUR13_SAMPLER_FUNC(tex, uv - dir * 2.0) * 0.11757927456823031 + + BLUR13_SAMPLER_FUNC(tex, uv - dir) * 0.15095905785041683 + + BLUR13_SAMPLER_FUNC(tex, uv) * 0.16407231660800825 + + BLUR13_SAMPLER_FUNC(tex, uv + dir) * 0.15095905785041683 + + BLUR13_SAMPLER_FUNC(tex, uv + dir * 2.0) * 0.11757927456823031 + + BLUR13_SAMPLER_FUNC(tex, uv + dir * 3.0) * 0.07752648775146245 + + BLUR13_SAMPLER_FUNC(tex, uv + dir * 4.0) * 0.04327301698301055 + + BLUR13_SAMPLER_FUNC(tex, uv + dir * 5.0) * 0.02044711192270963 + + BLUR13_SAMPLER_FUNC(tex, uv + dir * 6.0) * 0.008178892620166084; } #endif diff --git a/resources/00-taisei.pkgdir/shader/lib/blur/blur25.glslh b/resources/00-taisei.pkgdir/shader/lib/blur/blur25.glslh index 2c3c01f941..95965f383f 100644 --- a/resources/00-taisei.pkgdir/shader/lib/blur/blur25.glslh +++ b/resources/00-taisei.pkgdir/shader/lib/blur/blur25.glslh @@ -4,33 +4,37 @@ #ifndef BLUR_blur25_H #define BLUR_blur25_H +#ifndef BLUR25_SAMPLER_FUNC +#define BLUR25_SAMPLER_FUNC(sampler, uv) texture(sampler, uv) +#endif + vec4 sample_blur25(sampler2D tex, vec2 uv, vec2 dir) { return - texture(tex, uv - dir * 12.0) * 0.0017488220286339797 + - texture(tex, uv - dir * 11.0) * 0.003305608712046086 + - texture(tex, uv - dir * 10.0) * 0.005911712274266129 + - texture(tex, uv - dir * 9.0) * 0.01000302024073443 + - texture(tex, uv - dir * 8.0) * 0.016014191642463458 + - texture(tex, uv - dir * 7.0) * 0.024256878344979343 + - texture(tex, uv - dir * 6.0) * 0.03476328537688979 + - texture(tex, uv - dir * 5.0) * 0.04713708609985263 + - texture(tex, uv - dir * 4.0) * 0.06047288180641397 + - texture(tex, uv - dir * 3.0) * 0.07340313576063635 + - texture(tex, uv - dir * 2.0) * 0.08429941797229662 + - texture(tex, uv - dir) * 0.09159896233905987 + - texture(tex, uv) * 0.09416999480345471 + - texture(tex, uv + dir) * 0.09159896233905987 + - texture(tex, uv + dir * 2.0) * 0.08429941797229662 + - texture(tex, uv + dir * 3.0) * 0.07340313576063635 + - texture(tex, uv + dir * 4.0) * 0.06047288180641397 + - texture(tex, uv + dir * 5.0) * 0.04713708609985263 + - texture(tex, uv + dir * 6.0) * 0.03476328537688979 + - texture(tex, uv + dir * 7.0) * 0.024256878344979343 + - texture(tex, uv + dir * 8.0) * 0.016014191642463458 + - texture(tex, uv + dir * 9.0) * 0.01000302024073443 + - texture(tex, uv + dir * 10.0) * 0.005911712274266129 + - texture(tex, uv + dir * 11.0) * 0.003305608712046086 + - texture(tex, uv + dir * 12.0) * 0.0017488220286339797; + BLUR25_SAMPLER_FUNC(tex, uv - dir * 12.0) * 0.0017488220286339797 + + BLUR25_SAMPLER_FUNC(tex, uv - dir * 11.0) * 0.003305608712046086 + + BLUR25_SAMPLER_FUNC(tex, uv - dir * 10.0) * 0.005911712274266129 + + BLUR25_SAMPLER_FUNC(tex, uv - dir * 9.0) * 0.01000302024073443 + + BLUR25_SAMPLER_FUNC(tex, uv - dir * 8.0) * 0.016014191642463458 + + BLUR25_SAMPLER_FUNC(tex, uv - dir * 7.0) * 0.024256878344979343 + + BLUR25_SAMPLER_FUNC(tex, uv - dir * 6.0) * 0.03476328537688979 + + BLUR25_SAMPLER_FUNC(tex, uv - dir * 5.0) * 0.04713708609985263 + + BLUR25_SAMPLER_FUNC(tex, uv - dir * 4.0) * 0.06047288180641397 + + BLUR25_SAMPLER_FUNC(tex, uv - dir * 3.0) * 0.07340313576063635 + + BLUR25_SAMPLER_FUNC(tex, uv - dir * 2.0) * 0.08429941797229662 + + BLUR25_SAMPLER_FUNC(tex, uv - dir) * 0.09159896233905987 + + BLUR25_SAMPLER_FUNC(tex, uv) * 0.09416999480345471 + + BLUR25_SAMPLER_FUNC(tex, uv + dir) * 0.09159896233905987 + + BLUR25_SAMPLER_FUNC(tex, uv + dir * 2.0) * 0.08429941797229662 + + BLUR25_SAMPLER_FUNC(tex, uv + dir * 3.0) * 0.07340313576063635 + + BLUR25_SAMPLER_FUNC(tex, uv + dir * 4.0) * 0.06047288180641397 + + BLUR25_SAMPLER_FUNC(tex, uv + dir * 5.0) * 0.04713708609985263 + + BLUR25_SAMPLER_FUNC(tex, uv + dir * 6.0) * 0.03476328537688979 + + BLUR25_SAMPLER_FUNC(tex, uv + dir * 7.0) * 0.024256878344979343 + + BLUR25_SAMPLER_FUNC(tex, uv + dir * 8.0) * 0.016014191642463458 + + BLUR25_SAMPLER_FUNC(tex, uv + dir * 9.0) * 0.01000302024073443 + + BLUR25_SAMPLER_FUNC(tex, uv + dir * 10.0) * 0.005911712274266129 + + BLUR25_SAMPLER_FUNC(tex, uv + dir * 11.0) * 0.003305608712046086 + + BLUR25_SAMPLER_FUNC(tex, uv + dir * 12.0) * 0.0017488220286339797; } #endif diff --git a/resources/00-taisei.pkgdir/shader/lib/blur/blur5.glslh b/resources/00-taisei.pkgdir/shader/lib/blur/blur5.glslh index 31279b045a..8ff34ba416 100644 --- a/resources/00-taisei.pkgdir/shader/lib/blur/blur5.glslh +++ b/resources/00-taisei.pkgdir/shader/lib/blur/blur5.glslh @@ -4,13 +4,17 @@ #ifndef BLUR_blur5_H #define BLUR_blur5_H +#ifndef BLUR5_SAMPLER_FUNC +#define BLUR5_SAMPLER_FUNC(sampler, uv) texture(sampler, uv) +#endif + vec4 sample_blur5(sampler2D tex, vec2 uv, vec2 dir) { return - texture(tex, uv - dir * 2.0) * 0.09242116269661459 + - texture(tex, uv - dir) * 0.24137602468441252 + - texture(tex, uv) * 0.33240562523794576 + - texture(tex, uv + dir) * 0.24137602468441252 + - texture(tex, uv + dir * 2.0) * 0.09242116269661459; + BLUR5_SAMPLER_FUNC(tex, uv - dir * 2.0) * 0.09242116269661459 + + BLUR5_SAMPLER_FUNC(tex, uv - dir) * 0.24137602468441252 + + BLUR5_SAMPLER_FUNC(tex, uv) * 0.33240562523794576 + + BLUR5_SAMPLER_FUNC(tex, uv + dir) * 0.24137602468441252 + + BLUR5_SAMPLER_FUNC(tex, uv + dir * 2.0) * 0.09242116269661459; } #endif diff --git a/resources/00-taisei.pkgdir/shader/lib/blur/blur9.glslh b/resources/00-taisei.pkgdir/shader/lib/blur/blur9.glslh index 4dd5ba4c75..0cfde8c54e 100644 --- a/resources/00-taisei.pkgdir/shader/lib/blur/blur9.glslh +++ b/resources/00-taisei.pkgdir/shader/lib/blur/blur9.glslh @@ -4,17 +4,21 @@ #ifndef BLUR_blur9_H #define BLUR_blur9_H +#ifndef BLUR9_SAMPLER_FUNC +#define BLUR9_SAMPLER_FUNC(sampler, uv) texture(sampler, uv) +#endif + vec4 sample_blur9(sampler2D tex, vec2 uv, vec2 dir) { return - texture(tex, uv - dir * 4.0) * 0.02111655355354975 + - texture(tex, uv - dir * 3.0) * 0.05871536970456706 + - texture(tex, uv - dir * 2.0) * 0.12189520708673413 + - texture(tex, uv - dir) * 0.18894157329529304 + - texture(tex, uv) * 0.21866259271971203 + - texture(tex, uv + dir) * 0.18894157329529304 + - texture(tex, uv + dir * 2.0) * 0.12189520708673413 + - texture(tex, uv + dir * 3.0) * 0.05871536970456706 + - texture(tex, uv + dir * 4.0) * 0.02111655355354975; + BLUR9_SAMPLER_FUNC(tex, uv - dir * 4.0) * 0.02111655355354975 + + BLUR9_SAMPLER_FUNC(tex, uv - dir * 3.0) * 0.05871536970456706 + + BLUR9_SAMPLER_FUNC(tex, uv - dir * 2.0) * 0.12189520708673413 + + BLUR9_SAMPLER_FUNC(tex, uv - dir) * 0.18894157329529304 + + BLUR9_SAMPLER_FUNC(tex, uv) * 0.21866259271971203 + + BLUR9_SAMPLER_FUNC(tex, uv + dir) * 0.18894157329529304 + + BLUR9_SAMPLER_FUNC(tex, uv + dir * 2.0) * 0.12189520708673413 + + BLUR9_SAMPLER_FUNC(tex, uv + dir * 3.0) * 0.05871536970456706 + + BLUR9_SAMPLER_FUNC(tex, uv + dir * 4.0) * 0.02111655355354975; } #endif diff --git a/resources/00-taisei.pkgdir/shader/lib/sprite_main.frag.glslh b/resources/00-taisei.pkgdir/shader/lib/sprite_main.frag.glslh index 19c7c21674..3e04847683 100644 --- a/resources/00-taisei.pkgdir/shader/lib/sprite_main.frag.glslh +++ b/resources/00-taisei.pkgdir/shader/lib/sprite_main.frag.glslh @@ -1,5 +1,6 @@ #include "../interface/sprite.glslh" +#include "util.glslh" #ifndef SPRITE_USE_DISCARD #define SPRITE_USE_DISCARD 1 @@ -14,15 +15,29 @@ #define SPRITE_DISCARD_DEBUG 0 #endif +#ifdef SPRITE_GLOW_CONTROL +void spriteMain(out vec4 fragColor, out vec4 fragGlow); +#else void spriteMain(out vec4 fragColor); +#endif void main(void) { vec4 color = vec4(0); + vec4 glow = vec4(0); + +#ifdef SPRITE_GLOW_CONTROL + spriteMain(color, glow); +#else spriteMain(color); + glow = glowmap(color); +#endif #if SPRITE_USE_DISCARD // if(color == vec4(0)) { - if(all(lessThan(color, vec4(SPRITE_DISCARD_THRESHOLD)))) { + if( + all(lessThan(color, vec4(SPRITE_DISCARD_THRESHOLD))) && + all(lessThan(glow, vec4(SPRITE_DISCARD_THRESHOLD))) + ) { #if SPRITE_DISCARD_DEBUG if(color == vec4(0)) { color = vec4(0, 1, 0, 1) * 0.05; @@ -36,4 +51,5 @@ void main(void) { #endif fragColor = color; + fragGlow = glow; } diff --git a/resources/00-taisei.pkgdir/shader/lib/util.glslh b/resources/00-taisei.pkgdir/shader/lib/util.glslh index 9aad2c2bdb..e49a67b7c4 100644 --- a/resources/00-taisei.pkgdir/shader/lib/util.glslh +++ b/resources/00-taisei.pkgdir/shader/lib/util.glslh @@ -58,6 +58,28 @@ vec4 alphaCompose(vec4 bg, vec4 fg) { return fg + bg * (1.0 - fg.a); } +vec4 glowmap(vec4 color, float additiveFactor, float opaqueFactor, float transFactor, float opaqueOcclusion) { + vec4 glowAdditive = vec4(additiveFactor * (max(vec3(0), color.rgb) - color.a), 0); + vec4 glowOpaque = vec4(color.rgb * opaqueFactor * color.a, color.a * opaqueOcclusion); + vec4 glowTrans = vec4(color.rgb * transFactor * (1 - color.a), 0); + return alphaCompose(glowAdditive + glowTrans, glowOpaque); +} + +vec4 glowmap(vec4 color) { + float additiveFactor = 1.0; + float opaqueFactor = 0.0; + float transFactor = 0.0; + float opaqueOcclusion = 1.0; + return glowmap(color, additiveFactor, opaqueFactor, transFactor, opaqueOcclusion); +} + +vec4 glowmap(vec4 color, float additiveFactor) { + float opaqueFactor = 0.0; + float transFactor = 0.0; + float opaqueOcclusion = 1.0; + return glowmap(color, additiveFactor, opaqueFactor, transFactor, opaqueOcclusion); +} + // Taken from http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl vec3 rgb2hsv(vec3 c) { @@ -83,6 +105,38 @@ vec3 hueShift(vec3 c, float s) { return hsv2rgb(hsv); } +float smoothmin(float a, float b, float k) { + float h = clamp(0.5 + 0.5 * (b - a) / k, 0.0, 1.0); + return mix(b, a, h) - k * h * (1.0 - h); +} + +vec2 smoothmin(vec2 a, vec2 b, vec2 k) { + vec2 h = clamp(0.5 + 0.5 * (b - a) / k, 0.0, 1.0); + return mix(b, a, h) - k * h * (1.0 - h); +} + +vec2 smoothmin(vec2 a, vec2 b, float k) { + return smoothmin(a, b, vec2(k)); +} + +vec3 smoothmin(vec3 a, vec3 b, vec3 k) { + vec3 h = clamp(0.5 + 0.5 * (b - a) / k, 0.0, 1.0); + return mix(b, a, h) - k * h * (1.0 - h); +} + +vec3 smoothmin(vec3 a, vec3 b, float k) { + return smoothmin(a, b, vec3(k)); +} + +vec4 smoothmin(vec4 a, vec4 b, vec4 k) { + vec4 h = clamp(0.5 + 0.5 * (b - a) / k, 0.0, 1.0); + return mix(b, a, h) - k * h * (1.0 - h); +} + +vec4 smoothmin(vec4 a, vec4 b, float k) { + return smoothmin(a, b, vec4(k)); +} + float flip_topleft_to_native(float x) { #ifdef NATIVE_ORIGIN_BOTTOMLEFT return 1 - x; diff --git a/resources/00-taisei.pkgdir/shader/meson.build b/resources/00-taisei.pkgdir/shader/meson.build index 60272d913d..2541a5cb96 100644 --- a/resources/00-taisei.pkgdir/shader/meson.build +++ b/resources/00-taisei.pkgdir/shader/meson.build @@ -22,6 +22,7 @@ glsl_files = files( 'fxaa.frag.glsl', 'fxaa.vert.glsl', 'glitch.frag.glsl', + 'glow_feedback.frag.glsl', 'graph.frag.glsl', 'healthbar.vert.glsl', 'healthbar_linear.frag.glsl', diff --git a/resources/00-taisei.pkgdir/shader/sprite_bullet.frag.glsl b/resources/00-taisei.pkgdir/shader/sprite_bullet.frag.glsl index 4e81c6c5e3..4a70cbcb47 100644 --- a/resources/00-taisei.pkgdir/shader/sprite_bullet.frag.glsl +++ b/resources/00-taisei.pkgdir/shader/sprite_bullet.frag.glsl @@ -1,13 +1,22 @@ #version 330 core +// #define SPRITE_GLOW_CONTROL #include "lib/sprite_main.frag.glslh" +#include "lib/util.glslh" -void spriteMain(out vec4 fragColor) { +void spriteMain(out vec4 fragColor/*, out vec4 glowColor*/) { vec4 texel = texture(tex, texCoord); if(texel.a == 0.0) { discard; } - fragColor = (color * texel.g + vec4(texel.b)) * customParams.r; + vec3 glowHSV = rgb2hsv(color.rgb); + // glowHSV.x -= 0.1; + glowHSV.y = 1 - (1 - glowHSV.y) * (1 - glowHSV.y); + glowHSV.z = 1.0; + vec3 glowRGB = hsv2rgb(glowHSV); + + fragColor = (vec4(glowRGB, 0) * texel.r + color * texel.g + vec4(texel.b)) * customParams.r; + // glowColor = vec4(color.rgb * texel.r * customParams.r * 0.4, 0); } diff --git a/scripts/gen-blur-shader.py b/scripts/gen-blur-shader.py index dee91c03b1..dc65d499f3 100755 --- a/scripts/gen-blur-shader.py +++ b/scripts/gen-blur-shader.py @@ -13,25 +13,31 @@ import argparse +def sampler_func_name(args): + return f'{args.name.upper()}_SAMPLER_FUNC' + + def gen_comment(args): return f'Generated by gen-blur-shader.py. kernel size = {args.kernel_size}; sigma = {args.sigma}' def gen_shader_func(args): - s = "" + s = '' kernel = gen_kernel(args.kernel_size, args.sigma) kernel_half_size = args.kernel_size // 2 s += f'vec4 sample_{args.name}(sampler2D tex, vec2 uv, vec2 dir) {"{"}\n' s += f' return\n' + sampler_func = sampler_func_name(args) + for i in range(-kernel_half_size, kernel_half_size+1): prefix = ' ' * 8 term = ';' if i == kernel_half_size else ' +' uv_ofs_mul = f' * {float(abs(i))}' if abs(i) > 1 else '' - uv_ofs = ((' + dir' if i >= 0 else ' - dir') + uv_ofs_mul) if i != 0 else "" - s += f'{prefix}texture(tex, uv{uv_ofs}) * {kernel[kernel_half_size + i]}{term}\n' + uv_ofs = ((' + dir' if i >= 0 else ' - dir') + uv_ofs_mul) if i != 0 else '' + s += f'{prefix}{sampler_func}(tex, uv{uv_ofs}) * {kernel[kernel_half_size + i]}{term}\n' s += '}\n' @@ -40,6 +46,7 @@ def gen_shader_func(args): def gen_lib_shader(args): macro = f'BLUR_{args.name}_H' + sampler_func = sampler_func_name(args) return ( '\n' @@ -48,6 +55,10 @@ def gen_lib_shader(args): f'#ifndef {macro}\n' f'#define {macro}\n' '\n' + f'#ifndef {sampler_func}\n' + f'#define {sampler_func}(sampler, uv) texture(sampler, uv)\n' + f'#endif\n' + '\n' f'{gen_shader_func(args)}' '\n' '#endif\n' @@ -138,7 +149,7 @@ def kernsize(v): if args.name is None: args.name = f'blur{args.kernel_size}' - shaders = args.rootdir / 'resources' / 'shader' + shaders = args.rootdir / 'resources' / '00-taisei.pkgdir' / 'shader' blurs = shaders / 'lib' / 'blur' blurs.mkdir(parents=True, exist_ok=True) diff --git a/src/coroutine.c b/src/coroutine.c index 8662630fd0..7901133526 100644 --- a/src/coroutine.c +++ b/src/coroutine.c @@ -16,7 +16,7 @@ // #define EVT_DEBUG #ifdef DEBUG - #define CO_TASK_STATS +// #define CO_TASK_STATS #endif #ifdef CO_TASK_DEBUG diff --git a/src/stagedraw.c b/src/stagedraw.c index 89e388d381..9fcfc4fdef 100644 --- a/src/stagedraw.c +++ b/src/stagedraw.c @@ -54,6 +54,7 @@ static struct { PostprocessShader *viewport_pp; FBPair fb_pairs[NUM_FBPAIRS]; FBPair powersurge_fbpair; + FBPair glow_fbpair; bool framerate_graphs; bool objpool_stats; @@ -169,15 +170,28 @@ static void stage_draw_fbpair_create( fbmgr_group_fbpair_create(stagedraw.mfb_group, name, &fbconf, pair); } +static void stage_draw_setup_glow_framebuffers(void) { + FBAttachmentConfig a = { 0 }; + a.attachment = FRAMEBUFFER_ATTACH_COLOR0; + a.tex_params.filter.min = TEX_FILTER_LINEAR; + a.tex_params.filter.mag = TEX_FILTER_LINEAR; + a.tex_params.width = VIEWPORT_W; + a.tex_params.height = VIEWPORT_H; + a.tex_params.type = TEX_TYPE_RGB_16_FLOAT; + a.tex_params.wrap.s = TEX_WRAP_CLAMP; + a.tex_params.wrap.t = TEX_WRAP_CLAMP; + + FramebufferConfig fbconf = { 0 }; + fbconf.attachments = &a; + fbconf.num_attachments = 1; + fbmgr_group_fbpair_create(stagedraw.mfb_group, "Stage glow", &fbconf, &stagedraw.glow_fbpair); +} + static void stage_draw_setup_framebuffers(void) { - FBAttachmentConfig a[2], *a_color, *a_depth; + FBAttachmentConfig a[2]; memset(a, 0, sizeof(a)); - a_color = &a[0]; - a_depth = &a[1]; - - a_color->attachment = FRAMEBUFFER_ATTACH_COLOR0; - a_depth->attachment = FRAMEBUFFER_ATTACH_DEPTH; + a[0].attachment = FRAMEBUFFER_ATTACH_COLOR0; StageFramebufferResizeParams rp_fg = { .scaling_base = FBPAIR_FG, .scale.best = 1, .scale.worst = 1 }; StageFramebufferResizeParams rp_fg_aux = { .scaling_base = FBPAIR_FG_AUX, .scale.best = 1, .scale.worst = 1 }; @@ -192,31 +206,36 @@ static void stage_draw_setup_framebuffers(void) { .wrap.t = TEX_WRAP_MIRROR, }; - memcpy(&a_color->tex_params, &tex_common, sizeof(tex_common)); - memcpy(&a_depth->tex_params, &tex_common, sizeof(tex_common)); - - a_depth->tex_params.type = TEX_TYPE_DEPTH; + for(int i = 0; i < ARRAY_SIZE(a); ++i) { + a[i].tex_params = tex_common; + } - // Foreground: 1 RGB texture per FB - a_color->tex_params.type = TEX_TYPE_RGB_16; - stage_draw_fbpair_create(stagedraw.fb_pairs + FBPAIR_FG, 1, a, &rp_fg, "Stage FG"); + // Foreground: 1 RGB texture + glow buffer per FB + a[0].tex_params.type = TEX_TYPE_RGB_16; + a[1].attachment = FRAMEBUFFER_ATTACH_COLOR1; + a[1].tex_params.type = TEX_TYPE_RGB_16_FLOAT; + stage_draw_fbpair_create(stagedraw.fb_pairs + FBPAIR_FG, 2, a, &rp_fg, "Stage FG"); // Foreground auxiliary: 1 RGBA texture per FB - a_color->tex_params.type = TEX_TYPE_RGBA_8; + a[0].tex_params.type = TEX_TYPE_RGBA_8; stage_draw_fbpair_create(stagedraw.fb_pairs + FBPAIR_FG_AUX, 1, a, &rp_fg_aux, "Stage FG AUX"); - // Background: 1 RGB texture + depth per FB - a_color->tex_params.type = TEX_TYPE_RGB_8; + // Background: 1 RGB texture + depth buffer per FB + a[0].tex_params.type = TEX_TYPE_RGB_8; + a[1].attachment = FRAMEBUFFER_ATTACH_DEPTH; + a[1].tex_params.type = TEX_TYPE_DEPTH; stage_draw_fbpair_create(stagedraw.fb_pairs + FBPAIR_BG, 2, a, &rp_bg, "Stage BG"); // Background auxiliary: 1 RGBA texture per FB - a_color->tex_params.type = TEX_TYPE_RGBA_8; + a[0].tex_params.type = TEX_TYPE_RGBA_8; stage_draw_fbpair_create(stagedraw.fb_pairs + FBPAIR_BG_AUX, 1, a, &rp_bg_aux, "Stage BG AUX"); // CAUTION: should be at least 16-bit, lest the feedback shader do an oopsie! - a_color->tex_params.type = TEX_TYPE_RGBA_16; - stagedraw.powersurge_fbpair.front = stage_add_background_framebuffer("Powersurge effect FB 1", 0.125, 0.25, 1, a); - stagedraw.powersurge_fbpair.back = stage_add_background_framebuffer("Powersurge effect FB 2", 0.125, 0.25, 1, a); + a[0].tex_params.type = TEX_TYPE_RGBA_16; + stagedraw.powersurge_fbpair.front = stage_add_background_framebuffer("Powersurge effect FB 1", 0.125, 0.25, 1, &a[0]); + stagedraw.powersurge_fbpair.back = stage_add_background_framebuffer("Powersurge effect FB 2", 0.125, 0.25, 1, &a[0]); + + stage_draw_setup_glow_framebuffers(); } static Framebuffer *add_custom_framebuffer( @@ -960,6 +979,50 @@ void stage_draw_viewport(void) { r_mat_mv_pop(); } +static void stage_draw_glow(void) { + r_state_push(); + + Framebuffer *glow_accum = stagedraw.glow_fbpair.front; + Framebuffer *glow_staging = stagedraw.glow_fbpair.back; + FBPair *foreground = stage_get_fbpair(FBPAIR_FG); + + r_shader("glow_feedback"); + r_uniform_vec2("blur_resolution", VIEWPORT_W, VIEWPORT_H); + + r_blend(BLEND_NONE); + r_framebuffer(glow_staging); + r_uniform_vec2("blur_direction", 1, 0); + r_uniform_float("fade", 1); + draw_framebuffer_attachment(foreground->front, VIEWPORT_W, VIEWPORT_H, FRAMEBUFFER_ATTACH_COLOR1); + + r_blend(BLEND_PREMUL_ALPHA); + r_framebuffer(glow_accum); + r_uniform_vec2("blur_direction", 0, 1); + r_uniform_float("fade", 1); + draw_framebuffer_tex(glow_staging, VIEWPORT_W, VIEWPORT_H); + + r_blend(BLEND_NONE); + + for(int i = 0; i < 1; ++i) { + r_framebuffer(glow_staging); + r_uniform_vec2("blur_direction", 1, 0); + r_uniform_float("fade", 1); + draw_framebuffer_tex(glow_accum, VIEWPORT_W, VIEWPORT_H); + + r_framebuffer(glow_accum); + r_uniform_vec2("blur_direction", 0, 1); + r_uniform_float("fade", 0.7); + draw_framebuffer_tex(glow_staging, VIEWPORT_W, VIEWPORT_H); + } + + r_blend(BLEND_PREMUL_ALPHA); + r_shader("glow_apply"); + r_framebuffer(foreground->front); + draw_framebuffer_tex(glow_accum, VIEWPORT_W, VIEWPORT_H); + + r_state_pop(); +} + void stage_draw_scene(StageInfo *stage) { #ifdef DEBUG bool key_nobg = gamekeypressed(KEY_NOBACKGROUND); @@ -986,6 +1049,10 @@ void stage_draw_scene(StageInfo *stage) { begin_viewport_shake(); + if(!key_nobg) { + r_clear(CLEAR_COLOR, RGBA(0, 0, 0, 1), 1); + } + if(draw_bg) { // blit the background r_state_push(); @@ -999,8 +1066,6 @@ void stage_draw_scene(StageInfo *stage) { if(global.plr.mode->procs.bombbg /*&& player_is_bomb_active(&global.plr)*/) { global.plr.mode->procs.bombbg(&global.plr); } - } else if(!key_nobg) { - r_clear(CLEAR_COLOR, RGBA(0, 0, 0, 1), 1); } // draw the 2D objects @@ -1012,6 +1077,8 @@ void stage_draw_scene(StageInfo *stage) { fbpair_swap(foreground); r_blend(BLEND_NONE); + stage_draw_glow(); + // bomb effects shader if present and player bombing if(global.plr.mode->procs.bomb_shader && player_is_bomb_active(&global.plr)) { ShaderRule rules[] = { global.plr.mode->procs.bomb_shader, NULL }; diff --git a/src/util/fbmgr.c b/src/util/fbmgr.c index 3200d3e399..3c2ed6b503 100644 --- a/src/util/fbmgr.c +++ b/src/util/fbmgr.c @@ -31,9 +31,15 @@ struct ManagedFramebufferGroup { static ManagedFramebufferData *framebuffers; -static inline void fbmgr_framebuffer_get_metrics(ManagedFramebuffer *mfb, IntExtent *fb_size, FloatRect *fb_viewport) { +static inline bool fbmgr_framebuffer_get_metrics(ManagedFramebuffer *mfb, IntExtent *fb_size, FloatRect *fb_viewport) { ManagedFramebufferData *mfb_data = GET_DATA(mfb); + + if(!mfb_data->resize_strategy.resize_func) { + return false; + } + mfb_data->resize_strategy.resize_func(mfb_data->resize_strategy.userdata, fb_size, fb_viewport); + return true; } static void fbmgr_framebuffer_update(ManagedFramebuffer *mfb) { @@ -41,7 +47,9 @@ static void fbmgr_framebuffer_update(ManagedFramebuffer *mfb) { FloatRect fb_viewport; Framebuffer *fb = mfb->fb; - fbmgr_framebuffer_get_metrics(mfb, &fb_size, &fb_viewport); + if(!fbmgr_framebuffer_get_metrics(mfb, &fb_size, &fb_viewport)) { + return; + } for(uint i = 0; i < FRAMEBUFFER_MAX_ATTACHMENTS; ++i) { fbutil_resize_attachment(fb, i, fb_size.w, fb_size.h); @@ -57,7 +65,6 @@ static void fbmgr_framebuffer_update_all(void) { } ManagedFramebuffer *fbmgr_framebuffer_create(const char *name, const FramebufferConfig *cfg) { - assert(cfg->resize_strategy.resize_func != NULL); assert(cfg->attachments != NULL); assert(cfg->num_attachments >= 1); @@ -72,11 +79,17 @@ ManagedFramebuffer *fbmgr_framebuffer_create(const char *name, const Framebuffer IntExtent fb_size; FloatRect fb_viewport; - fbmgr_framebuffer_get_metrics(mfb, &fb_size, &fb_viewport); - for(int i = 0; i < cfg->num_attachments; ++i) { - ac[i].tex_params.width = fb_size.w; - ac[i].tex_params.height = fb_size.h; + if(fbmgr_framebuffer_get_metrics(mfb, &fb_size, &fb_viewport)) { + for(int i = 0; i < cfg->num_attachments; ++i) { + ac[i].tex_params.width = fb_size.w; + ac[i].tex_params.height = fb_size.h; + } + } else { + fb_viewport.x = 0; + fb_viewport.y = 0; + fb_viewport.w = ac[0].tex_params.width; + fb_viewport.h = ac[0].tex_params.height; } fbutil_create_attachments(mfb->fb, cfg->num_attachments, ac); @@ -173,4 +186,3 @@ void fbmgr_group_fbpair_create(ManagedFramebufferGroup *group, const char *name, snprintf(buf, sizeof(buf), "%s FB 2", name); fbpair->back = fbmgr_group_framebuffer_create(group, buf, cfg); } - diff --git a/src/util/miscmath.c b/src/util/miscmath.c index d7508997a2..e44a9bfbec 100644 --- a/src/util/miscmath.c +++ b/src/util/miscmath.c @@ -195,8 +195,8 @@ double smoothstep(double edge0, double edge1, double x) { } double smoothmin(double a, double b, double k) { - float h = clamp(0.5 + 0.5 * (b - a) / k, 0.0, 1.0); - return lerp(b, a, h) - k * h * (1.0 - h); + float h = clamp(0.5 + 0.5 * (b - a) / k, 0.0, 1.0); + return lerp(b, a, h) - k * h * (1.0 - h); } int sign(double x) { From 3e1591f17dc5907eb0244ec460034146094d9d4b Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Thu, 23 Jan 2020 02:24:47 +0200 Subject: [PATCH 104/104] add forgotten glow shaders --- .../shader/glow_apply.frag.glsl | 14 +++++++ .../00-taisei.pkgdir/shader/glow_apply.prog | 2 + .../shader/glow_feedback.frag.glsl | 37 +++++++++++++++++++ .../shader/glow_feedback.prog | 2 + resources/00-taisei.pkgdir/shader/meson.build | 1 + 5 files changed, 56 insertions(+) create mode 100644 resources/00-taisei.pkgdir/shader/glow_apply.frag.glsl create mode 100644 resources/00-taisei.pkgdir/shader/glow_apply.prog create mode 100644 resources/00-taisei.pkgdir/shader/glow_feedback.frag.glsl create mode 100644 resources/00-taisei.pkgdir/shader/glow_feedback.prog diff --git a/resources/00-taisei.pkgdir/shader/glow_apply.frag.glsl b/resources/00-taisei.pkgdir/shader/glow_apply.frag.glsl new file mode 100644 index 0000000000..99ae5ca6d2 --- /dev/null +++ b/resources/00-taisei.pkgdir/shader/glow_apply.frag.glsl @@ -0,0 +1,14 @@ +#version 330 core + +#include "lib/render_context.glslh" +#include "interface/standard.glslh" + +void main(void) { + vec3 c = texture(tex, texCoord).rgb; + c = max(c, 0); + c = c / (1.0 + c); + // c *= smoothstep(0.0, 1.0, sqrt(c)); + + // c = c * c; + fragColor = vec4(c, 0); +} diff --git a/resources/00-taisei.pkgdir/shader/glow_apply.prog b/resources/00-taisei.pkgdir/shader/glow_apply.prog new file mode 100644 index 0000000000..3389e402f3 --- /dev/null +++ b/resources/00-taisei.pkgdir/shader/glow_apply.prog @@ -0,0 +1,2 @@ + +objects = standard.vert glow_apply.frag diff --git a/resources/00-taisei.pkgdir/shader/glow_feedback.frag.glsl b/resources/00-taisei.pkgdir/shader/glow_feedback.frag.glsl new file mode 100644 index 0000000000..05b99d8986 --- /dev/null +++ b/resources/00-taisei.pkgdir/shader/glow_feedback.frag.glsl @@ -0,0 +1,37 @@ +#version 330 core + +#define BLUR9_SAMPLER_FUNC(s, uv) max(vec4(0), texture(s, uv)) + +#include "interface/standard.glslh" +#include "lib/blur/blur9.glslh" +#include "lib/util.glslh" + +UNIFORM(1) vec2 blur_resolution; +UNIFORM(2) vec2 blur_direction; +UNIFORM(3) float fade; + +#define ONE_OVER_LN2 1.4426950408889634 + +float dim(float x) { + return max(0, smoothmin(x, 3, 1)); +} + +vec3 dim(vec3 v) { + return vec3(dim(v.x), dim(v.y), dim(v.z)); +} + +void main(void) { + vec3 c = sample_blur9(tex, texCoord, blur_direction / blur_resolution).rgb; + // c = mix(c, smoothstep(0.0, 1.0, c), sqrt(fade)); + // c = alphaCompose(c, vec4(0, 0, 0, 0.1*fade)); + + #if 0 + if(fade != 1.0) { + c = dim(c) * fade; + } + #else + c *= fade; + #endif + + fragColor = vec4(c, 0); +} diff --git a/resources/00-taisei.pkgdir/shader/glow_feedback.prog b/resources/00-taisei.pkgdir/shader/glow_feedback.prog new file mode 100644 index 0000000000..188251cf53 --- /dev/null +++ b/resources/00-taisei.pkgdir/shader/glow_feedback.prog @@ -0,0 +1,2 @@ + +objects = standardnotex.vert glow_feedback.frag diff --git a/resources/00-taisei.pkgdir/shader/meson.build b/resources/00-taisei.pkgdir/shader/meson.build index 2541a5cb96..be5c5c0448 100644 --- a/resources/00-taisei.pkgdir/shader/meson.build +++ b/resources/00-taisei.pkgdir/shader/meson.build @@ -22,6 +22,7 @@ glsl_files = files( 'fxaa.frag.glsl', 'fxaa.vert.glsl', 'glitch.frag.glsl', + 'glow_apply.frag.glsl', 'glow_feedback.frag.glsl', 'graph.frag.glsl', 'healthbar.vert.glsl',