summaryrefslogtreecommitdiff
path: root/height-map-display/src
diff options
context:
space:
mode:
authorSchark <jordan@schark.online>2024-03-18 20:52:03 -0700
committerSchark <jordan@schark.online>2024-03-18 20:52:03 -0700
commitf113ca2e53e8a4403779d47bd162bc7a7f902ca1 (patch)
treea659e9c30c41f1245f398069d925bab1e5e9079e /height-map-display/src
parent8e2508626776d1300b351f2326773b5bb0cb528f (diff)
downloadgamedev-f113ca2e53e8a4403779d47bd162bc7a7f902ca1.tar.gz
gamedev-f113ca2e53e8a4403779d47bd162bc7a7f902ca1.zip
Moving selected square via arrow keys
Diffstat (limited to 'height-map-display/src')
-rw-r--r--height-map-display/src/main.c51
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);