From 8551458965e19f806536b333293b5781c132cf7a Mon Sep 17 00:00:00 2001 From: Miguel Angel Astor Romero Date: Sat, 8 Mar 2014 18:26:53 -0430 Subject: [PATCH] Added test map file. --- maps/start.map | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/in_game.c | 31 +++++++++++++++---------- 2 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 maps/start.map diff --git a/maps/start.map b/maps/start.map new file mode 100644 index 0000000..c47a355 --- /dev/null +++ b/maps/start.map @@ -0,0 +1,61 @@ +[MAP] +32 32 +00000000000000000000000000000000 +00000000000044444440000000000000 +00000000000441111144000000000000 +00000000004411666114400000000000 +44444000044116777611440000000000 +41514400441167777761144000000000 +41771440411677737776114444444000 +41777144416777383777614115114000 +41997711116773888377611166614000 +41797726626738888837666666654000 +41997711116773888377611166614000 +41777144416777383777614115114000 +41771440411677737776114444444000 +41514400441167777761144000000000 +44444000044116777611440000000000 +00000000004411666114400000000000 +00000000000441161144000000000000 +00000000000044565440000000000000 +00000000000004161400000000000000 +00000000000004565400000000000000 +00000000444444161444444000000000 +00000000411551161155114000000000 +00000000416666666666614000000000 +00000000456666666666654000000000 +00000000456677777776654000000000 +00000000416677777776614000000000 +00000000416677777776614000000000 +00000000456677777776654000000000 +00000000456666666666654000000000 +00000000416666666666614000000000 +00000000411551151155114000000000 +00000000444444444444444000000000 +[PLAYER] +%player = X Y +player = 27 15 +[EXITS] +%exit = X Y MAP_NAME MAP_X MAP_Y +exit = 8 25 maps/start.map 0 0 +exit = 9 25 maps/start.map 0 0 +exit = 10 24 maps/start.map 0 0 +exit = 10 25 maps/start.map 0 0 +[DOORS] +%door = X Y ID UNLOCKED +door = 9 22 0 0 +[KEYS] +%key = X Y ID +key = 7 2 0 +[PERSONS] +%person = X Y NAME DIALOG_ID +person = 8 24 Hugo 0 +person = 9 2 Paco 1 +person = 23 11 Luis 2 +person = 23 19 Donald 3 +[DIALOGS] +%dialog = ID TEXT +dialog = 0 Step into the elevator to retry. +dialog = 1 I'm unreachable! +dialog = 2 Welcome to Cyjam! +dialog = 3 Have fun. diff --git a/src/in_game.c b/src/in_game.c index 60229da..00ed4cd 100644 --- a/src/in_game.c +++ b/src/in_game.c @@ -28,7 +28,7 @@ static bool **vis; static bool **seen; static bool ** wmap; static bool w_mov = FALSE; -static bool uK, dK, lK, rK; +static bool uK, dK, lK, rK, esc; static clock_t then, msgThen; static player_t player; static map_cell_t ** map; @@ -56,6 +56,8 @@ bool canMoveTo(int, int); void initInGameState( gs_t * gs) { int i, j; + uK = dK = lK = rK = esc = FALSE; + gs->name = IN_GAME; gs->input = &input; gs->update = &update; @@ -86,7 +88,7 @@ void initInGameState( gs_t * gs) { } initObjects(); - loadMap("map_file.map"); + loadMap("maps/start.map"); fov_settings_init(&fov_settings); fov_settings_set_opacity_test_function(&fov_settings, opaque); @@ -103,6 +105,7 @@ void input(){ if(key == KEY_DOWN) dK = TRUE; if(key == KEY_LEFT) lK = TRUE; if(key == KEY_RIGHT) rK = TRUE; + if(key == 27) esc = TRUE; } } @@ -123,6 +126,8 @@ gsname_t update(){ if(rK) nX = (iX + 1) % mW; + if(esc) return IN_GAME; + /* Find if the player is standing on an exit, then load the next map. */ for(i = 0; i < nO; i++){ if(objs[i].type == EXIT){ @@ -135,7 +140,7 @@ gsname_t update(){ } } - /* TODO: use keys.*/ + /* If the player is standing on a key, pick it up. */ for(i = 0; i < nO; i++){ if(objs[i].type == KEY){ if(objs[i].x == iY && objs[i].y == iX){ @@ -150,7 +155,7 @@ gsname_t update(){ } } - /* Listen to a person. */ + /* If the player bumps into a person, listen to what they have to say. */ for(i = 0; i < nO; i++){ if(objs[i].type == PERSON){ if(objs[i].x == nY && objs[i].y == nX){ @@ -172,6 +177,7 @@ gsname_t update(){ } } + /* If the player bumps into a door, open it if the key is available. */ for(i = 0; i < nO; i++){ if(objs[i].type == DOOR){ if(objs[i].x == nY && objs[i].y == nX){ @@ -200,6 +206,7 @@ gsname_t update(){ } } + /* Clear the message buffer after a timeout. */ if(newMsg){ msgNow = clock(); delta = msgNow - msgThen; @@ -336,14 +343,14 @@ void render(int w, int h){ if(objs[k].type == DOOR){ printw("\u25D9"); }else{ - if(vis[dj][di]){ - if(objs[k].type == KEY){ - printw("k"); - }else if(objs[k].type == PERSON){ - printw("\u263A"); - } - } - } + if(vis[dj][di]){ + if(objs[k].type == KEY){ + printw("k"); + }else if(objs[k].type == PERSON){ + printw("\u263A"); + } + } + } } }