]> git.lizzy.rs Git - dungeon_game.git/commitdiff
Add on_level_up callback
authorElias Fleckenstein <eliasfleckenstein@web.de>
Tue, 22 Jun 2021 09:10:29 +0000 (11:10 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Tue, 22 Jun 2021 09:10:29 +0000 (11:10 +0200)
plugins/score/score.c
plugins/score/score.h

index 6a8e85d37251c83b61f7b76b17959226e1fe3391..7e911df4edb5bbe25a64550ac16571b1b5a45955 100644 (file)
@@ -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);
index 4d029036ed717962a75d64f65ee06e2ad9a5aa62..92331cd535c89f6bbecc1d155e12ec0274eed12d 100644 (file)
@@ -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