Vergessene Dinge eingecheckt.
[hackover2013-badge-firmware.git] / badge / jumpnrun / items.c
index cc296c3..42e83b1 100644 (file)
@@ -1,12 +1,13 @@
 #include "items.h"
 #include "jumpnrun.h"
+#include "game_state.h"
 
 static void on_collect_win(jumpnrun_item       *self,
                            jumpnrun_game_state *state,
                            jumpnrun_level      *lv) {
   (void) lv;
   self->flags |= JUMPNRUN_ITEM_COLLECTED;
-  state->status = JUMPNRUN_WON;
+  state->flags |= JUMPNRUN_STATE_WON;
 }
 
 static void on_collect_checkpoint(jumpnrun_item       *self,
@@ -15,11 +16,29 @@ static void on_collect_checkpoint(jumpnrun_item       *self,
   (void) state;
   self->flags |= JUMPNRUN_ITEM_COLLECTED;
   lv->start_pos = (vec2d) { self->pos.x,
-                            fixed_point_sub(fixed_point_add(self->pos.y, FIXED_INT(self->type->sprite.height)), hacker_extents().y)
+                            fixed_point_sub(fixed_point_add(self->pos.y, FIXED_INT(self->type->sprite.height)), jumpnrun_player_extents().y)
   };
 }
 
+static void on_collect_key(jumpnrun_item       *self,
+                           jumpnrun_game_state *state,
+                           jumpnrun_level      *lv) {
+  (void) lv;
+  self->flags |= JUMPNRUN_ITEM_COLLECTED;
+  ++state->player.keys;
+}
+
+static void on_collect_encrypted(jumpnrun_item       *self,
+                                 jumpnrun_game_state *state,
+                                 jumpnrun_level      *lv) {
+  if(state->player.keys != 0) {
+    on_collect_win(self, state, lv);
+  }
+}
+
 jumpnrun_item_type const jumpnrun_item_type_data[JUMPNRUN_ITEM_TYPE_COUNT] = {
   { { 6,  7, (uint8_t const *) "\x7c\x61\xb5\x1a\xfc\x03"                             }, on_collect_win },
-  { { 9, 12, (uint8_t const *) "\xff\x1f\x04\x49\x10\x05\x49\x50\x04\x51\x10\x04\x7f" }, on_collect_checkpoint }
+  { { 9, 12, (uint8_t const *) "\xff\x1f\x04\x49\x10\x05\x49\x50\x04\x51\x10\x04\x7f" }, on_collect_checkpoint },
+  { { 3,  7, (uint8_t const *) "\xa7\xfe\x01"                                         }, on_collect_key },
+  { { 9, 10, (uint8_t const *) "\xfc\x0b\x98\x65\xbd\x1d\x06\x98\x6a\x80\xff\x03"     }, on_collect_encrypted }
 };
This page took 0.022398 seconds and 4 git commands to generate.