strichmaennchen git · main
git clone https://git.christianimmanuel.de/games/strichmaennchen.gitwget https://git.christianimmanuel.de/games/strichmaennchen/archive/strichmaennchen.tar.gzmain.c raw
#include <SDL3/SDL.h>
#include <SDL3/SDL_video.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include "renderer.h"
#include "object.h"
#include "camera.h"
#include "mesh.h"
#include "input.h"
#include "game.h"
#include "platform.h"
#include "time.h"
#include "skybox.h"
#include "ui.h"
#include "glfuncs.h"
// ----------------------
// Main
// ----------------------
int main(void) {
Renderer* renderer = Renderer_create(800, 800) ;
if (!renderer) return 1;
Camera camera;
Camera_init(&camera, vec3(0.0f, 1.8f, 5.0f), -90.0f, 0.0f, 70.0f);
Game game;
if (!Game_init(&game)) return 1;
Userinput userinput;
Input_reset(&userinput);
Uint64 prev_ticks = SDL_GetTicks();
Skybox skybox;
Skybox_init(&skybox, "shaders/skybox.vert", "shaders/skybox.frag");
SDL_GetWindowSize(renderer->window, &renderer->width, &renderer->height);
Ui ui;
if (!Ui_init(&ui, renderer, "fonts/uifont.ttf", 24)) {
SDL_Log("UI init failed");
return 1;
}
while (userinput.running) {
float dt = Time_delta(&prev_ticks);
if (dt > 0.05f) dt = 0.05f;
Time_update(game.time, dt);
prev_ticks = SDL_GetTicks();
Renderer_resize(renderer);
SDL_GetWindowSize(renderer->window, &renderer->width, &renderer->height);
Ui_resize(&ui, renderer->window);
Input_reset(&userinput);
Input_process(&userinput);
//printf("%.2f:%.2f\n", worldTime.hours, worldTime.minutes);
Camera_rotate(&camera, userinput.yaw_delta, userinput.pitch_delta);
Player_update(game.player, &userinput, &camera);
Game_update(&game, &userinput, dt);
Camera_followPlayer(&camera, game.player);
Camera_update(&camera, renderer);
Game_render(&game, renderer, &camera);
Skybox_draw(&skybox, renderer, &camera, game.time);
Ui_render(&ui, renderer, game.time);
SDL_GL_SwapWindow(renderer->window);
}
Ui_shutdown(&ui);
Skybox_destroy(&skybox);
Renderer_shutdown(renderer);
Platform_shutdown(renderer);
free(renderer);
return 0;
}