feat: Airfields, scaling and movement

This commit is contained in:
2026-04-16 22:18:42 +01:00
parent 8b6b0a20f3
commit 965c0f393c
5 changed files with 63 additions and 12 deletions

View File

@@ -8,6 +8,7 @@
#include "sim/world.hpp"
#include "sim/aircraft.hpp"
#include "sim/airfield.hpp"
static SDL_Window *window;
static SDL_Renderer *sdl_renderer;
@@ -44,8 +45,8 @@ int main(int argc, char *argv[])
// World init
dxd::sim::World world = dxd::sim::World({ .x = 10, .y = 10 });
dxd::sim::Aircraft *ac = new dxd::sim::Aircraft({ 0, 0 }, 1, 0.1);
world.add_obj(ac);
world.add_obj(new dxd::sim::Aircraft({ 0, 0 }, 1, 5));
world.add_obj(new dxd::sim::Airfield({ 15, 0 }));
SDL_Event event;
bool running = true;
@@ -53,20 +54,29 @@ int main(int argc, char *argv[])
while (running) {
while (SDL_PollEvent(&event)) {
if (event.type == SDL_EVENT_QUIT) running = false;
if (event.type == SDL_EVENT_KEY_DOWN) {
if (event.key.key == SDLK_ESCAPE) running = false;
}
}
const bool *key_states = SDL_GetKeyboardState(NULL);
if (key_states[SDL_SCANCODE_W]) renderer.move_camera(vec2_unity * 30 * (1.0f / 60.0f));
if (key_states[SDL_SCANCODE_S]) renderer.move_camera(-vec2_unity * 30 * (1.0f / 60.0f));
if (key_states[SDL_SCANCODE_A]) renderer.move_camera(-vec2_unitx * 30 * (1.0f / 60.0f));
if (key_states[SDL_SCANCODE_D]) renderer.move_camera(vec2_unitx * 30 * (1.0f / 60.0f));
// Clear
renderer.color(0, 0, 0, 255);
SDL_RenderClear(sdl_renderer);
// World draw
renderer.color(255, 255, 255, 255);
world.draw(&renderer);
world.tick(1.0f / 60.0f);
// Usual test
renderer.color(127, 0, 0, 255);
renderer.line(-vec2_one, vec2_one);
renderer.color(64, 64, 64, 255);
renderer.line(-vec2_unity * 2000, vec2_unity * 2000);
renderer.line(-vec2_unitx * 2000, vec2_unitx * 2000);
SDL_RenderPresent(sdl_renderer);
SDL_Delay(1000 / 60);