aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/assets.c13
-rw-r--r--src/assets.h8
-rw-r--r--src/game.c9
-rw-r--r--src/gameCommon.h4
-rw-r--r--src/gameScreen.c63
-rw-r--r--src/gameScreen.h5
-rw-r--r--src/levels/level1.c2
-rw-r--r--src/settings.c4
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 {
diff --git a/src/game.c b/src/game.c
index 7973807..764e2fa 100644
--- a/src/game.c
+++ b/src/game.c
@@ -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
};
}