diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/assets.c | 13 | ||||
-rw-r--r-- | src/assets.h | 8 | ||||
-rw-r--r-- | src/game.c | 9 | ||||
-rw-r--r-- | src/gameCommon.h | 4 | ||||
-rw-r--r-- | src/gameScreen.c | 63 | ||||
-rw-r--r-- | src/gameScreen.h | 5 | ||||
-rw-r--r-- | src/levels/level1.c | 2 | ||||
-rw-r--r-- | src/settings.c | 4 |
8 files changed, 86 insertions, 22 deletions
diff --git a/src/assets.c b/src/assets.c index cc6a7b0..bdd0d8d 100644 --- a/src/assets.c +++ b/src/assets.c @@ -4,7 +4,8 @@ const char textureAssetPaths[TEXTURE_ASSET_COUNT][ASSET_PATH_MAX] = { "/home/nathan/Documents/KillaFacsista/assets/icon.png", "/home/nathan/Documents/KillaFacsista/assets/icon128.png", "/home/nathan/Documents/KillaFacsista/assets/icon64.png", - "/home/nathan/Documents/KillaFacsista/assets/gyroscope.png" + "/home/nathan/Documents/KillaFacsista/assets/gyroscope.png", + "/home/nathan/Documents/KillaFacsista/assets/skyTexture.png" }; const char modelAssetPaths[MODEL_ASSET_COUNT][ASSET_PATH_MAX] = { @@ -17,7 +18,8 @@ const char modelAssetPaths[MODEL_ASSET_COUNT][ASSET_PATH_MAX] = { "/home/nathan/Documents/KillaFacsista/assets/mussolini.obj", "/home/nathan/Documents/KillaFacsista/assets/guidedMissile.obj", "/home/nathan/Documents/KillaFacsista/assets/missile.obj", - "/home/nathan/Documents/KillaFacsista/assets/gyroscope.obj" + "/home/nathan/Documents/KillaFacsista/assets/gyroscope.obj", + "/home/nathan/Documents/KillaFacsista/assets/sky.obj" }; // Some models have textures and other stuff to be set. @@ -28,6 +30,13 @@ void configModelAssets(Assets * assets) { MATERIAL_MAP_DIFFUSE, assets->textures[GYROSCOPE_TEXTURE_ASSET] ); + + // Sky. + SetMaterialTexture( + &assets->models[SKY_ASSET].materials[0], + MATERIAL_MAP_DIFFUSE, + assets->textures[SKY_TEXTURE_ASSET] + ); } void LoadAssets(Assets * assets) { diff --git a/src/assets.h b/src/assets.h index beeb672..e3d7ca2 100644 --- a/src/assets.h +++ b/src/assets.h @@ -5,8 +5,8 @@ #define ASSET_PATH_MAX 255 -#define TEXTURE_ASSET_COUNT 4 -#define MODEL_ASSET_COUNT 10 +#define TEXTURE_ASSET_COUNT 5 +#define MODEL_ASSET_COUNT 11 // Paths to assets. extern const char textureAssetPaths[TEXTURE_ASSET_COUNT][ASSET_PATH_MAX]; @@ -20,6 +20,7 @@ enum { ICON128_ASSET, ICON64_ASSET, GYROSCOPE_TEXTURE_ASSET, + SKY_TEXTURE_ASSET }; // Model asset ids. @@ -33,7 +34,8 @@ enum { MUSSOLINI_ASSET, GUIDED_MISSILE_ASSET, MISSILE_ASSET, - GYROSCOPE_ASSET + GYROSCOPE_ASSET, + SKY_ASSET }; typedef struct Assets { @@ -4,6 +4,8 @@ void initGame(Game * game) { // Window. InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, "Killa Facsista"); + SetWindowState(FLAG_WINDOW_RESIZABLE); + // Settings. initSettings(&game->settings); applySettings(&game->settings); @@ -64,6 +66,10 @@ void closeGame(Game * game) { CloseWindow(); } +void gameResize(Game * game) { + resizeGameScreen(game, &game->gameScreen); +} + void updateGame(Game * game) { BeginDrawing(); @@ -81,5 +87,8 @@ void updateGame(Game * game) { if (game->settings.drawFps) DrawFPS(5, 5); + if (IsWindowResized()) + gameResize(game); + EndDrawing(); } diff --git a/src/gameCommon.h b/src/gameCommon.h index 0186e35..2c655e3 100644 --- a/src/gameCommon.h +++ b/src/gameCommon.h @@ -25,8 +25,8 @@ typedef struct Entity Entity; // How far from center you can go. #define GAME_BOUNDS 1000.0 -#define WINDOW_WIDTH 960 -#define WINDOW_HEIGHT 540 +#define WINDOW_WIDTH 1280 +#define WINDOW_HEIGHT 720 // Memory management. #define KF_MALLOC(size) malloc(size) diff --git a/src/gameScreen.c b/src/gameScreen.c index 8cb9424..036107d 100644 --- a/src/gameScreen.c +++ b/src/gameScreen.c @@ -14,7 +14,7 @@ void initGameScreenGui(GameScreen * gameScreen) { gameScreen->targetInfoPosition = (Vector2){ width - (GAME_SCREEN_TEXT_SIZE * (GAME_SCREEN_TARGET_INFO_MAX / 2.0)), - height / 3.0 + height - RADAR_TEXTURE_SIZE - (GAME_SCREEN_TEXT_SIZE * 4.0) }; gameScreen->zoomViewPosition = (Vector2){width - GAME_SCREEN_ZOOM_VIEW_UI_SIZE - 20.0, 10.0}; @@ -160,7 +160,7 @@ void drawGameScreenGui(Game * game) { GameScreen * gameScreen = &game->gameScreen; // Draw cross hair. - if (gameScreen->mainCamera == FIRST_PERSON_CAMERA) { + if (gameScreen->mainCamera == FIRST_PERSON_CAMERA || gameScreen->mainCamera == ZOOM_CAMERA) { // Get color depending if on target or not. Entity * player = getEntityFromWorld(game->world, 0); AntifaShip * data = (AntifaShip*)player->data; @@ -243,9 +243,41 @@ void gameScreenHandleLevels(Game * game, GameScreen * gameScreen) { } } +void renderStars(Game * game) { + Entity * player = getEntityFromWorld(game->world, 0); + + float starSpacing = 30.0; + + Vector3 startPosition = player->position; + startPosition = Vector3Scale(startPosition, 1.0 / starSpacing); + startPosition = (Vector3){(int)startPosition.x, (int)startPosition.y, (int)startPosition.z}; + startPosition = Vector3Scale(startPosition, starSpacing); + + Vector3 endAt = Vector3Subtract(player->position, startPosition); + endAt = Vector3Zero(); + endAt = Vector3AddValue(endAt, 200.0); + + for (float z = -endAt.z; z < endAt.z; z += starSpacing) { + for (float y = -endAt.y; y < endAt.y; y += starSpacing) { + for (float x = -endAt.x; x < endAt.x; x += starSpacing) { + Vector3 starPosition = Vector3Add((Vector3){x, y, z}, startPosition); + float starDistance = Vector3Distance(player->position, starPosition); + + if (starDistance < 100.0) + continue; + + DrawPoint3D(starPosition, (Color){0xff, 0xff, 0xff, 0xff - (starDistance * 10.0)}); + } + } + } +} + void renderWorldGameScreen(Game * game, GameScreen * gameScreen) { BeginMode3D(game->cameras[gameScreen->mainCamera]); + //DrawModel(game->assets.models[SKY_ASSET], Vector3Zero(), 500.0, WHITE); + renderStars(game); + // Draw world. drawWorld(&game->world, game); @@ -253,14 +285,19 @@ void renderWorldGameScreen(Game * game, GameScreen * gameScreen) { } void drawZoomViewGameScreen(Game * game, GameScreen * gameScreen) { + CameraId cameraId = ZOOM_CAMERA; + + if (gameScreen->mainCamera == ZOOM_CAMERA) + cameraId = THIRD_PERSON_CAMERA; + // Update camera. - runCameraUpdate(game, game->cameras, ZOOM_CAMERA); + runCameraUpdate(game, game->cameras, cameraId); // Render onto texture. BeginTextureMode(gameScreen->zoomViewTexture); ClearBackground(BLACK); - BeginMode3D(game->cameras[ZOOM_CAMERA]); + BeginMode3D(game->cameras[cameraId]); drawWorld(&game->world, game); EndMode3D(); @@ -282,14 +319,16 @@ void drawZoomViewGameScreen(Game * game, GameScreen * gameScreen) { ); // Draw cross hair. - float halfSize = GAME_SCREEN_ZOOM_VIEW_UI_SIZE / 2.0; - Vector2 crossHairPosition = Vector2Add(gameScreen->zoomViewPosition, (Vector2){halfSize, halfSize}); + if (cameraId == ZOOM_CAMERA) { + float halfSize = GAME_SCREEN_ZOOM_VIEW_UI_SIZE / 2.0; + Vector2 crossHairPosition = Vector2Add(gameScreen->zoomViewPosition, (Vector2){halfSize, halfSize}); - Entity * player = getEntityFromWorld(game->world, 0); - AntifaShip * data = (AntifaShip*)player->data; - Color color = data->isOnTarget ? RED : BLUE; + Entity * player = getEntityFromWorld(game->world, 0); + AntifaShip * data = (AntifaShip*)player->data; + Color color = data->isOnTarget ? RED : BLUE; - drawCrossHairPosition(crossHairPosition, 4.0, 2.0, color); + drawCrossHairPosition(crossHairPosition, 4.0, 2.0, color); + } // Draw outline. DrawRectangleLines( @@ -345,6 +384,10 @@ void updateGameScreen(Game * game) { drawGameScreenGui(game); } +void resizeGameScreen(Game * game, GameScreen * gameScreen) { + initGameScreenGui(gameScreen); +} + void openGameScreen(Game * game) { game->screenId = SCREEN_GAME; diff --git a/src/gameScreen.h b/src/gameScreen.h index 009ba07..112897c 100644 --- a/src/gameScreen.h +++ b/src/gameScreen.h @@ -10,8 +10,8 @@ #define GAME_SCREEN_NEXT_LEVEL_DELAY 2.0 #define GAME_SCREEN_TARGET_INFO_MAX 20 -#define GAME_SCREEN_ZOOM_VIEW_SIZE 60 // Size it renders at. -#define GAME_SCREEN_ZOOM_VIEW_UI_SIZE 150 // Size on screen. +#define GAME_SCREEN_ZOOM_VIEW_SIZE 100 // Size it renders at. +#define GAME_SCREEN_ZOOM_VIEW_UI_SIZE 350 // Size on screen. // Gui stuff and shit. typedef struct GameScreen { @@ -37,6 +37,7 @@ void initGameScreen(Game * game, GameScreen * gameScreen); void freeGameScreen(GameScreen * gameScreen); void updateGameScreen(Game * game); +void resizeGameScreen(Game * game, GameScreen * gameScreen); void openGameScreen(Game * game); diff --git a/src/levels/level1.c b/src/levels/level1.c index 190d606..7ccfe0a 100644 --- a/src/levels/level1.c +++ b/src/levels/level1.c @@ -6,7 +6,7 @@ void initLevel1(Game * game, Levels * levels) { WorldEntry entries[2] = { (WorldEntry){ENTITY_ANTIFA, (Vector3){0.0, 0.0, 0.0}, QuaternionIdentity()}, - (WorldEntry){ENTITY_SOLDATO, (Vector3){0.0, 10.0, 50.0}, QuaternionIdentity()} + (WorldEntry){ENTITY_CAPORALE, (Vector3){0.0, 10.0, 50.0}, QuaternionIdentity()} }; addEntriesToWorld( diff --git a/src/settings.c b/src/settings.c index a383e9f..8f35206 100644 --- a/src/settings.c +++ b/src/settings.c @@ -14,8 +14,8 @@ void initSettings(Settings * settings) { .joystickSensitivity = 0.5, .fps = 60.0, .drawFps = true, - .renderWidth = 480, - .renderHeight = 270, + .renderWidth = 640, + .renderHeight = 360, .useWorldRenderTexture = true }; } |