#include #include #include #include #include #include "gunner/config.h" #include "gunner/utils.h" #include "gunner/text.c" #include "gunner/texture_sys.c" #include "gunner/shader_sys.c" #include "gunner/controller.c" #include "gunner/rumble.c" #include "gunner/rand_sys.c" #include "gunner/audio_sys.c" #include "game/config.h" int main() { SetTraceLogLevel(LOG_WARNING); InitWindow(GAME_WIDTH * DEFAULT_SCALE, GAME_HEIGHT * DEFAULT_SCALE, GAME_NAME); SetTargetFPS(FRAMERATE); InitAudioDevice(); rand_seed(); init_tex_sys(); init_shader_sys(); i32 idx = load_font("assets/fonts/berry-rotunda.fnt"); //load_music("assets/wicked_glee.ogg"); //set_music_loop_point(15.73f); //play_music(); Model amanita = LoadModel("assets/models/amanita.m3d"); RenderTexture2D tex = LoadRenderTexture(320, 240); Camera camera = { 0 }; camera.position = (Vector3){ 0.5f, .5f, 1.5f }; // Camera position camera.target = (Vector3){ 0.0f, .5f, 0.0f }; // Camera looking at point camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) camera.fovy = 45.0f; // Camera field-of-view Y camera.projection = CAMERA_PERSPECTIVE; // Camera mode type Shader psx = LoadShader("assets/shaders/ps1vert.vs", "assets/shaders/ps1frag.fs"); amanita.materials[1].shader = psx; while(!WindowShouldClose()){ float dt = GetFrameTime(); poll_rumble(dt); update_audio(); update_textures(); update_shaders(); ClearBackground(WHITE); BeginDrawing(); BeginTextureMode(tex); ClearBackground(WHITE); BeginMode3D(camera); rlDisableBackfaceCulling(); DrawModel(amanita, (Vector3){0.f, 0.f, 0.f}, 1.0f, WHITE); rlEnableBackfaceCulling(); EndMode3D(); draw_text_font_centered(idx, "Amanita", 4.f, 18, BLACK); EndTextureMode(); DrawTexturePro(tex.texture, (Rectangle){0, 0, 320, -240}, (Rectangle){0, 0, 640, 480}, (Vector2){0, 0}, 0.f, WHITE); EndDrawing(); } UnloadRenderTexture(tex); UnloadShader(psx); UnloadModel(amanita); unload_all_fonts(); unload_active_audio(); unload_current_music(); unload_active_textures(); unload_active_shaders(); CloseAudioDevice(); CloseWindow(); return 0; }