Level-MenĂ¼ in Simulator
authorWintermute <wintermute@hannover.ccc.de>
Sun, 20 Oct 2013 19:21:40 +0000 (21:21 +0200)
committerWintermute <wintermute@hannover.ccc.de>
Sun, 20 Oct 2013 19:21:40 +0000 (21:21 +0200)
badge/jumpnrun/game_state.c
mock/badge_main_loop.c

index 386a7a1..d8186d5 100644 (file)
@@ -2,7 +2,7 @@
 
 void jumpnrun_game_state_init(jumpnrun_game_state *state, jumpnrun_level const *lv) {
   memset(state, 0, sizeof(*state));
-  jumpnrun_player_spawn(&state->player, lv->start_pos, 99);
+  jumpnrun_player_spawn(&state->player, lv->start_pos, 5);
 }
 
 void jumpnrun_game_state_respawn(jumpnrun_game_state *state, jumpnrun_level const *lv) {
index 3a1c3d2..e893c18 100644 (file)
 #include <string.h>
 #include <unistd.h>
 
+#define MAX_LEVELS 1024
+
 void badge_main_loop(void) {
-  char const *const menu[] = {
-    "smb",
-    "skynet",
-    "wrongturn",
-    "lubiXOXO",
-    "lubilove",
-    "gnobbel",
-    "foo",
-    "mean",
-    "xyzzy",
-    "abc",
-    "nonsense"
-  };
-
-  size_t choice = badge_menu(menu, ARRAY_SIZE(menu), 0, 0);
-
-  printf("%zu\n", choice);
+  char menu_buf[MAX_LEVELS][32];
+  FILE *fd = fopen("../badge/jumpnrun/levels.txt", "r");
+
+  int i;
+
+  for(i = 0; i < MAX_LEVELS && fgets(menu_buf[i], sizeof(menu_buf[i]), fd); ++i) {
+    menu_buf[i][strlen(menu_buf[i]) - 1] = '\0';
+  }
+
+  fclose(fd);
+
+  char const *menu[i];
+  for(int j = 0; j < i; ++j) {
+    menu[j] = menu_buf[j];
+  }
 
   for(;;) {
-    FILE *fd = fopen("../badge/jumpnrun/levels.txt", "r");
-    char buf[12];
-
-    while(fgets(buf, sizeof(buf), fd)) {
-      buf[strlen(buf) - 1] = '\0';
-      char lvname[256];
-      sprintf(lvname, "../badge/jumpnrun/%s.lvl", buf);
-      while(jumpnrun_play(lvname) != JUMPNRUN_WON)
-        ;
-    }
-
-    fclose(fd);
+    size_t choice = badge_menu(menu, ARRAY_SIZE(menu), 0, 0);
+    char lvname[256];
+    sprintf(lvname, "../badge/jumpnrun/%s.lvl", menu[choice]);
+
+    jumpnrun_play(lvname);
   }
 }
This page took 0.031659 seconds and 4 git commands to generate.