#include "jumpnrun.h"
#include "collision.h"
#include "levels.h"
+#include "stats.h"
#include "../ui/display.h"
#include "../ui/event.h"
*/
};
+badge_sprite const *jumpnrun_hacker_symbol(void) {
+ return &anim_hacker[0];
+}
+
static badge_sprite const anim_sickle[] = {
{ 3, 3, (uint8_t const *) "\xab\x01" },
{ 3, 3, (uint8_t const *) "\xee\x00" }
memset(&gs, 0, sizeof(gs));
for(gs.lives = 99; gs.status != JUMPNRUN_WON && gs.lives != 0; --gs.lives) {
+ jumpnrun_show_lives_screen(&gs);
+
+ for(uint8_t i = 0; i < 75; ) {
+ badge_event_t ev = badge_event_wait();
+ if(badge_event_type(ev) == BADGE_EVENT_GAME_TICK) {
+ ++i;
+ } else if(i > 25) {
+ uint8_t old_state = badge_event_old_input_state(ev);
+ uint8_t new_state = badge_event_new_input_state(ev);
+ uint8_t new_buttons = new_state & (old_state ^ new_state);
+
+ if(new_buttons != 0) break;
+ }
+ }
+
gs.status = JUMPNRUN_PLAYING;
gs.left = 0;
memset(&gs.player, 0, sizeof(gs.player));
vec2d hacker_extents(void);
void jumpnrun_passive_movement(vec2d *inertia);
+badge_sprite const *jumpnrun_hacker_symbol(void);
uint8_t jumpnrun_play(char const *lvname);
--- /dev/null
+#include "stats.h"
+#include "jumpnrun.h"
+#include "items.h"
+#include "../ui/display.h"
+#include "../ui/font.h"
+
+void jumpnrun_show_lives_screen(jumpnrun_game_state const *state) {
+ badge_framebuffer fb = { { { 0 } } };
+
+ badge_sprite const *hacker = jumpnrun_hacker_symbol();
+ badge_sprite const *key = &jumpnrun_item_type_data[JUMPNRUN_ITEM_TYPE_KEY].sprite;
+
+ int8_t y_upper = BADGE_DISPLAY_HEIGHT / 2 - BADGE_FONT_HEIGHT;
+ int8_t y_lower = (BADGE_DISPLAY_HEIGHT + BADGE_FONT_HEIGHT) / 2;
+ int8_t x_left = BADGE_DISPLAY_WIDTH / 2 - hacker->width - BADGE_FONT_WIDTH - 5;
+ int8_t x_mid = (BADGE_DISPLAY_WIDTH - BADGE_FONT_WIDTH) / 2;
+ int8_t x_right = x_mid + BADGE_FONT_WIDTH + 5;
+
+ char buf[] = "x";
+ if(state->keys != 0) {
+ y_upper -= BADGE_FONT_HEIGHT;
+ }
+
+ badge_framebuffer_blt (&fb, x_left , y_upper, hacker, 0);
+ badge_framebuffer_render_text (&fb, x_mid , y_upper, buf);
+ badge_framebuffer_render_number(&fb, x_right, y_upper, state->lives);
+
+ if(state->keys != 0) {
+ badge_framebuffer_blt (&fb, x_left , y_lower, key, 0);
+ badge_framebuffer_render_text (&fb, x_mid , y_lower, buf);
+ badge_framebuffer_render_number(&fb, x_right, y_lower, state->keys);
+ }
+
+ badge_framebuffer_flush(&fb);
+}
--- /dev/null
+#ifndef INCLUDED_BADGE_JUMPNRUN_STATS_H
+#define INCLUDED_BADGE_JUMPNRUN_STATS_H
+
+#include "jumpnrun.h"
+
+void jumpnrun_show_lives_screen(jumpnrun_game_state const *state);
+
+#endif
jumpnrun/items.c \
jumpnrun/jumpnrun.c \
jumpnrun/tiles.c \
- jumpnrun/level_load.c
+ jumpnrun/level_load.c \
+ jumpnrun/stats.c
BADGE_CXXOBJS = $(BADGE_CXXSRCS:%.cc=%.o)
BADGE_COBJS = $(BADGE_CSRCS:%.c=%.o)