#include "game.h" #include "utils.h" void initGame(Game* game) { game->sceneId = GAME_SCENE; // Settings. game->settings = defaultSettings(); // Window. InitWindow(game->settings.windowWidth, game->settings.windowHeight, "Find Things"); SetWindowState(FLAG_WINDOW_RESIZABLE); // Assets. initAssets(&game->assets); // Skybox. game->skybox = LoadModelFromMesh(GenMeshCube(1.0, 1.0, 1.0)); game->skybox.materials[0].shader = game->assets.shaders[SKYBOX_SHADER]; SetShaderValue( game->skybox.materials[0].shader, GetShaderLocation(game->skybox.materials[0].shader, "environmentMap"), (int[1]){ MATERIAL_MAP_CUBEMAP }, SHADER_UNIFORM_INT); game->skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture = LoadTextureCubemap(game->assets.images[SKYBOX_IMAGE], CUBEMAP_LAYOUT_AUTO_DETECT); // World. game->world = createWorld(134235234); // Player. game->player = createPlayer(); game->player.position = Vector3Scale(game->world.size, 0.5); DisableCursor(); } void updateMainMenuScene(Game* game) { ClearBackground(BLACK); } void updateGameScene(Game* game) { ClearBackground(BLACK); BeginMode3D(game->player.camera); // Render skybox. rlDisableBackfaceCulling(); rlDisableDepthMask(); DrawModel(game->skybox, Vector3Zero(), 1.0, WHITE); rlEnableBackfaceCulling(); rlEnableDepthMask(); updatePlayer(&game->player, game); updateWorld(&game->world, game); EndMode3D(); } void updateGame(Game* game) { BeginDrawing(); switch (game->sceneId) { case MAIN_MENU_SCENE: updateMainMenuScene(game); break; case GAME_SCENE: updateGameScene(game); break; default: break; } DrawFPS(0, 0); EndDrawing(); } void closeGame(Game* game) { closeAssets(&game->assets); UnloadTexture(game->skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture); UnloadModel(game->skybox); freeWorld(game->world); CloseWindow(); }