diff options
author | Schark <jordan@schark.online> | 2024-03-18 20:52:03 -0700 |
---|---|---|
committer | Schark <jordan@schark.online> | 2024-03-18 20:52:03 -0700 |
commit | f113ca2e53e8a4403779d47bd162bc7a7f902ca1 (patch) | |
tree | a659e9c30c41f1245f398069d925bab1e5e9079e | |
parent | 8e2508626776d1300b351f2326773b5bb0cb528f (diff) | |
download | gamedev-f113ca2e53e8a4403779d47bd162bc7a7f902ca1.tar.gz gamedev-f113ca2e53e8a4403779d47bd162bc7a7f902ca1.zip |
Moving selected square via arrow keys
Diffstat (limited to '')
-rw-r--r-- | height-map-display/src/main.c | 51 |
1 files changed, 37 insertions, 14 deletions
diff --git a/height-map-display/src/main.c b/height-map-display/src/main.c index aeb599d..de4d278 100644 --- a/height-map-display/src/main.c +++ b/height-map-display/src/main.c @@ -21,6 +21,9 @@ float camera_speed = 0.1f; float yaw_speed = 0.5f; float pitch_speed = 0.5f; +int SELECTED_X = 6; +int SELECTED_Y = 6; + bool draw_grid = true; bool debug_spin = false; bool DEBUG = false; @@ -196,7 +199,7 @@ void free_squares(Square **squares, int X) { } // TODO: Move into controller struct, avoid key rollover -void process_input(GLFWwindow* window, Square* square) { +void process_input(GLFWwindow* window, Square** squares) { if (glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS) camera_pos_y -= camera_speed; if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS) @@ -210,24 +213,44 @@ void process_input(GLFWwindow* window, Square* square) { if (glfwGetKey(window, GLFW_KEY_X) == GLFW_PRESS) draw_grid = !draw_grid; if (glfwGetKey(window, GLFW_KEY_G) == GLFW_PRESS) - square->terrain = TERRAIN_GREEN; + squares[SELECTED_X][SELECTED_Y].terrain = TERRAIN_GREEN; if (glfwGetKey(window, GLFW_KEY_H) == GLFW_PRESS) - square->terrain = TERRAIN_FAIRWAY; + squares[SELECTED_X][SELECTED_Y].terrain = TERRAIN_FAIRWAY; if (glfwGetKey(window, GLFW_KEY_J) == GLFW_PRESS) - square->terrain = TERRAIN_ROUGH; + squares[SELECTED_X][SELECTED_Y].terrain = TERRAIN_ROUGH; if (glfwGetKey(window, GLFW_KEY_Q) == GLFW_PRESS) camera_yaw -= yaw_speed; if (glfwGetKey(window, GLFW_KEY_E) == GLFW_PRESS) camera_yaw += yaw_speed; - if (glfwGetKey(window, GLFW_KEY_UP) == GLFW_PRESS) - camera_yaw += yaw_speed; - if (glfwGetKey(window, GLFW_KEY_DOWN) == GLFW_PRESS) - camera_yaw += yaw_speed; - if (glfwGetKey(window, GLFW_KEY_LEFT) == GLFW_PRESS) - camera_yaw += yaw_speed; - if (glfwGetKey(window, GLFW_KEY_DOWN) == GLFW_PRESS) - camera_yaw += yaw_speed; + if (glfwGetKey(window, GLFW_KEY_UP) == GLFW_PRESS) { + if (SELECTED_Y != 0) { + squares[SELECTED_X][SELECTED_Y].selected = false; + SELECTED_Y = SELECTED_Y - 1; + squares[SELECTED_X][SELECTED_Y].selected = true; + } + } + if (glfwGetKey(window, GLFW_KEY_DOWN) == GLFW_PRESS) { + if (SELECTED_Y < (MAP_HEIGHT - 2)) { + squares[SELECTED_X][SELECTED_Y].selected = false; + SELECTED_Y = SELECTED_Y + 1; + squares[SELECTED_X][SELECTED_Y].selected = true; + } + } + if (glfwGetKey(window, GLFW_KEY_LEFT) == GLFW_PRESS) { + if (SELECTED_X != 0) { + squares[SELECTED_X][SELECTED_Y].selected = false; + SELECTED_X = SELECTED_X - 1; + squares[SELECTED_X][SELECTED_Y].selected = true; + } + } + if (glfwGetKey(window, GLFW_KEY_RIGHT) == GLFW_PRESS) { + if (SELECTED_X < (MAP_WIDTH - 2)) { + squares[SELECTED_X][SELECTED_Y].selected = false; + SELECTED_X = SELECTED_X + 1; + squares[SELECTED_X][SELECTED_Y].selected = true; + } + } } int main(int argc, char *argv[]) { @@ -275,11 +298,11 @@ int main(int argc, char *argv[]) { change_square_terrain(&squares[1][5], TERRAIN_FAIRWAY); change_square_terrain(&squares[1][4], TERRAIN_FAIRWAY); change_square_terrain(&squares[1][3], TERRAIN_GREEN); - squares[3][3].selected = true; + squares[SELECTED_X][SELECTED_Y].selected = true; while (!glfwWindowShouldClose(window)) { logger("Processing input..."); - process_input(window, &squares[3][3]); + process_input(window, squares); logger("Entering main loop..."); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); |