diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-06-22 11:10:29 +0200 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-06-22 11:10:29 +0200 |
commit | 125e7eca1a13a4e1ea374e480038e565d74d684b (patch) | |
tree | e38d9b7e106ba6d48f9c0c8c9f91ca725f1b46d8 | |
parent | 8b50cd53c82070bc614babdcb72001afd9053ed9 (diff) | |
download | dungeon_game-125e7eca1a13a4e1ea374e480038e565d74d684b.tar.xz |
Add on_level_up callback
-rw-r--r-- | plugins/score/score.c | 9 | ||||
-rw-r--r-- | plugins/score/score.h | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/plugins/score/score.c b/plugins/score/score.c index 6a8e85d..7e911df 100644 --- a/plugins/score/score.c +++ b/plugins/score/score.c @@ -11,6 +11,7 @@ static char *level_symbol = NULL; static size_t level_symbol_len = 0; static double score_timer = 0.0; static double level_timer = 0.0; +static struct list *on_level_up = NULL; static void level_up() { @@ -23,6 +24,9 @@ static void level_up() get_roman_numeral(level, &level_symbol, &level_symbol_len); level_timer = 2.0; + + for (struct list *ptr = on_level_up; ptr != NULL; ptr = ptr->next) + ((void (*)(int)) ptr->element)(level); } void add_score(int s) @@ -47,6 +51,11 @@ int get_level() return level; } +void register_on_level_up(void (*callback)(int new_level)) +{ + on_level_up = add_element(on_level_up, callback); +} + static void render_score(struct winsize ws) { int bar_flash = clamp(score_timer * 255, 0, 255); diff --git a/plugins/score/score.h b/plugins/score/score.h index 4d02903..92331cd 100644 --- a/plugins/score/score.h +++ b/plugins/score/score.h @@ -4,5 +4,6 @@ void add_score(int s); int get_score(); int get_level(); +void register_on_level_up(void (*callback)(int new_level)); #endif |