summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorkartofen <mladenovnasko0@gmail.com>2023-04-09 23:36:55 +0300
committerkartofen <mladenovnasko0@gmail.com>2023-04-09 23:36:55 +0300
commit80ead50951c8b0d2c60c9fd57b8a4c943634b084 (patch)
tree635d8479b7e862d3cd7b3bc69b0cb64e31c38c2e /src/main.c
parentfc027f7d214028086178a7328926c9b14ead464d (diff)
things...
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c65
1 files changed, 50 insertions, 15 deletions
diff --git a/src/main.c b/src/main.c
index 8b5aa40..108649d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -30,17 +30,10 @@ int main(void)
SDL_LogSetAllPriority(SDL_LOG_PRIORITY_ERROR);
#endif
- map_t m;
- if(map_load(&m, "files/map_clear.txt"))
- return 1;
- map_print(&m);
- map_unload(&m);
-
- return 0;
-
// ----------------- START SDL ----------------- //
int ret = 1;
SDL_Window *window = NULL;
+ map_t map = {0};
if(SDL_Init(SDL_INIT_VIDEO) != 0) {
log_critical(LOG_VIDEO, "SDL_Init: %s", SDL_GetError());
@@ -62,14 +55,13 @@ int main(void)
}
// --------------------------------------------- //
+ if(map_load(&map, "files/map_clear.txt"))
+ return 1;
bool quit = false;
- while(!quit) {
- // ----------------- GAME LOOP ----------------- //
- for(int i = 0; i < SW; i++)
- vline(i, 0, SH-1, COLOR_LIGHTWHITE);
- // --------------------------------------------- //
-
+ int wasd[4] = {0};
+ while(!quit)
+ {
SDL_Event event;
while(SDL_PollEvent(&event)) {
// ----------------- EVENTS ----------------- //
@@ -77,13 +69,55 @@ int main(void)
case SDL_QUIT:
quit = true;
break;
+ case SDL_KEYDOWN:
+ switch(event.key.keysym.sym)
+ {
+ case 'w': wasd[0] = 1; break;
+ case 'a': wasd[1] = 1; break;
+ case 's': wasd[2] = 1; break;
+ case 'd': wasd[3] = 1; break;
+ }
+ break;
+ case SDL_KEYUP:
+ switch(event.key.keysym.sym)
+ {
+ case 'w': wasd[0] = 0; break;
+ case 'a': wasd[1] = 0; break;
+ case 's': wasd[2] = 0; break;
+ case 'd': wasd[3] = 0; break;
+ }
+ break;
default:
- log_debug(LOG_APPLICATION, "event: %d", event.type);
+ // log_debug(LOG_APPLICATION, "event: %d", event.type);
break;
}
// ------------------------------------------ //
}
+ // ----------------- GAME LOOP ----------------- //
+
+ int x,y;
+ SDL_GetRelativeMouseState(&x,&y);
+ map.player.angle += x * 0.03f;
+
+ float move_vec[2] = {0.f, 0.f};
+ if(wasd[0]) { move_vec[0] += map.player.anglecos*0.2f; move_vec[1] += map.player.anglesin*0.2f; }
+ if(wasd[2]) { move_vec[0] -= map.player.anglecos*0.2f; move_vec[1] -= map.player.anglesin*0.2f; }
+ if(wasd[1]) { move_vec[0] += map.player.anglesin*0.2f; move_vec[1] -= map.player.anglecos*0.2f; }
+ if(wasd[3]) { move_vec[0] -= map.player.anglesin*0.2f; move_vec[1] += map.player.anglecos*0.2f; }
+ int pushing = wasd[0] || wasd[1] || wasd[2] || wasd[3];
+ float acceleration = pushing ? 0.4 : 0.2;
+
+ map.player.pos.x += move_vec[0] * acceleration;
+ map.player.pos.y += move_vec[1] * acceleration;
+
+ player_update(&map.player);
+
+ for(int i = 0; i < SW-1; i++)
+ vline(i, 0, SH-1, COLOR_LIGHTWHITE);
+ map_draw(&map, SW, SH);
+ // --------------------------------------------- //
+
if(SDL_UpdateWindowSurface(window) != 0) {
log_error(LOG_VIDEO, "SDL_UpdateWindowSurface: %s", SDL_GetError());
}
@@ -91,6 +125,7 @@ int main(void)
ret = 0;
exit:
+ map_unload(&map);
if(window != NULL) SDL_DestroyWindow(window);
SDL_Quit();
return ret;