commit 1e814c3cf0a3a6f341a40ab6d4907fec892ebfe0
parent aa0de9848d20edfdef0f5895251b7309377e803c
Author: Amin Mesbah <dev@aminmesbah.com>
Date:   Thu, 18 Apr 2019 21:55:15 -0700
Highlight current player tile
Diffstat:
| M | src/game.c | | | 65 | +++++++++++++++++++++++++++++++++++++++-------------------------- | 
1 file changed, 39 insertions(+), 26 deletions(-)
diff --git a/src/game.c b/src/game.c
@@ -121,6 +121,32 @@ void game_update_and_render(struct GameMemory *game_memory, struct GameInput *ga
     // Screen origin is in the upper left
     m4 projection = glmth_projection_ortho(0.0f, framebuffer.width, framebuffer.height, 0.0f, -1.0f, 0.0f);
 
+    // update player
+    {
+        f32 max_meters_per_second = 5.0f;
+        f32 movement_speed = max_meters_per_second * game_input->dt;
+
+        if (game_input->key_up)
+        {
+            game_state->player.pos.y += movement_speed;
+        }
+        else if (game_input->key_down)
+        {
+            game_state->player.pos.y -= movement_speed;
+        }
+
+        if (game_input->key_left)
+        {
+            game_state->player.pos.x -= movement_speed;
+        }
+        else if (game_input->key_right)
+        {
+            game_state->player.pos.x += movement_speed;
+        }
+        glmth_clamp(&(game_state->player.pos.x), 0, ROOM_TILE_DIM_X);
+        glmth_clamp(&(game_state->player.pos.y), 0, ROOM_TILE_DIM_Y);
+    }
+
     // render tiles
     {
         glBindVertexArray(game_state->tiles.vao);
@@ -170,6 +196,19 @@ void game_update_and_render(struct GameMemory *game_memory, struct GameInput *ga
                 {
                     color = (v3) {0.3f, 0.3f, 0.3f};
                 }
+
+                v2 player_pos = game_state->player.pos;
+                bool player_is_in_tile = (
+                    player_pos.x >= tile_pos.x
+                    && player_pos.x <= tile_pos.x + tile_size
+                    && player_pos.y >= tile_pos.y
+                    && player_pos.y <= tile_pos.y + tile_size
+                );
+                if (player_is_in_tile)
+                {
+                    color = (v3) {0.4f, 0.8f, 0.4f};
+                }
+
                 shader_setv3(&game_state->tiles.shader, "color", &color);
                 shader_setm4(&game_state->tiles.shader, "model", &model);
                 shader_setm4(&game_state->tiles.shader, "view", &view);
@@ -181,32 +220,6 @@ void game_update_and_render(struct GameMemory *game_memory, struct GameInput *ga
         glBindVertexArray(0);
     }
 
-    // update player
-    {
-        f32 max_meters_per_second = 5.0f;
-        f32 movement_speed = max_meters_per_second * game_input->dt;
-
-        if (game_input->key_up)
-        {
-            game_state->player.pos.y += movement_speed;
-        }
-        else if (game_input->key_down)
-        {
-            game_state->player.pos.y -= movement_speed;
-        }
-
-        if (game_input->key_left)
-        {
-            game_state->player.pos.x -= movement_speed;
-        }
-        else if (game_input->key_right)
-        {
-            game_state->player.pos.x += movement_speed;
-        }
-        glmth_clamp(&(game_state->player.pos.x), 0, ROOM_TILE_DIM_X);
-        glmth_clamp(&(game_state->player.pos.y), 0, ROOM_TILE_DIM_Y);
-    }
-
     // render player
     {
         shader_use(&game_state->player.shader);