aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornathansmithsmith <nathansmith7@mailfence.com>2023-09-15 15:01:37 -0600
committernathansmithsmith <nathansmith7@mailfence.com>2023-09-15 15:01:37 -0600
commit7ffeaacac296155632705f2a494683d3bdffa684 (patch)
tree3eb67f9f3864d0242d20ab3c8e154c78e856dce5 /src
parent0612480baf3d173b2d210693d6a234d76bb902cf (diff)
Mussolini missiles shoot from scary looking things
Diffstat (limited to 'src')
-rw-r--r--src/entities/mussolini.c23
-rw-r--r--src/entities/mussolini.h6
-rw-r--r--src/game.c2
-rw-r--r--src/playerCamera.c6
4 files changed, 31 insertions, 6 deletions
diff --git a/src/entities/mussolini.c b/src/entities/mussolini.c
index ed137b1..a7428da 100644
--- a/src/entities/mussolini.c
+++ b/src/entities/mussolini.c
@@ -6,6 +6,17 @@
#include "world.h"
#include "entity.h"
+const Vector3 mussoliniLaunchPositions[MUSSOLINI_LAUNCH_POSITIONS_COUNT] = {
+ (Vector3){-66.047, 30.628, 40.838},
+ (Vector3){-66.047, 10.209, 40.838},
+ (Vector3){-66.047, -10.209, 40.838},
+ (Vector3){-66.047, -30.628, 40.838},
+ (Vector3){66.047, 30.628, 40.838},
+ (Vector3){66.047, 10.209, 40.838},
+ (Vector3){66.047, -10.209, 40.838},
+ (Vector3){66.047, -30.628, 40.838}
+};
+
void initMussolini(Entity * entity, Game * game) {
entity->model = &game->assets.models[MUSSOLINI_ASSET];
entity->collisionModel = entityCreateCollisionModel(*entity->model);
@@ -43,7 +54,17 @@ void updateMussoliniGuns(Game * game, Entity * entity) {
// Shoot missile.
Entity missile = createEntity(ENTITY_MISSILE, game);
- missile.position = entity->position;
+
+ // Set missile position.
+ SetRandomSeed(clock());
+ Vector3 missileStartPosition = mussoliniLaunchPositions[GetRandomValue(0, MUSSOLINI_LAUNCH_POSITIONS_COUNT)];
+
+ missile.position = Vector3Add(
+ entity->position,
+ Vector3RotateByQuaternion(missileStartPosition, entity->rotation)
+ );
+
+ // Launch this mother fucker!!!
launchMissileAtTarget(&missile, player->position, 200.0);
startMissileCountDown(&missile, 4.0);
scheduleEntityToAdd(&game->world, missile);
diff --git a/src/entities/mussolini.h b/src/entities/mussolini.h
index 9ce453d..33968da 100644
--- a/src/entities/mussolini.h
+++ b/src/entities/mussolini.h
@@ -6,12 +6,16 @@
#define MUSSOLINI_H
#define MUSSOLINI_TURN_SPEED 1.0
-#define MUSSOLINI_MISSILE_DOWN_COOL 3.0
+#define MUSSOLINI_MISSILE_DOWN_COOL 0.5
typedef struct Mussolini {
double timeSinceLastMissile;
} Mussolini;
+// Positions for the missiles to start at.
+#define MUSSOLINI_LAUNCH_POSITIONS_COUNT 8
+extern const Vector3 mussoliniLaunchPositions[MUSSOLINI_LAUNCH_POSITIONS_COUNT];
+
void initMussolini(Entity * entity, Game * game);
void closeMussolini(Entity * entity);
void updateMussolini(Game * game, Entity * entity);
diff --git a/src/game.c b/src/game.c
index 8ee592b..372199e 100644
--- a/src/game.c
+++ b/src/game.c
@@ -35,7 +35,7 @@ void initGame(Game * game) {
WorldEntry entries[2] = {
(WorldEntry){ENTITY_ANTIFA, (Vector3){0.0, 0.0, 0.0}, QuaternionIdentity()},
- (WorldEntry){ENTITY_MUSSOLINI, (Vector3){0.0, 0.0, 150.0}, QuaternionIdentity()}
+ (WorldEntry){ENTITY_MUSSOLINI, (Vector3){0.0, 0.0, 200.0}, QuaternionIdentity()}
};
addEntriesToWorld(
diff --git a/src/playerCamera.c b/src/playerCamera.c
index f759166..096ee36 100644
--- a/src/playerCamera.c
+++ b/src/playerCamera.c
@@ -23,7 +23,7 @@ void updatePlayerCamera(Camera3D * camera, Game * game) {
// Up.
camera->up = Vector3RotateByQuaternion((Vector3){0.0, 1.0, 0.0}, player->rotation);
- camera->target = player->position;
- camera->position = (Vector3){10.0, 10.0, 10.0};
- camera->up = (Vector3){0.0, 1.0, 0.0};
+ // camera->target = player->position;
+ // camera->position = (Vector3){10.0, 10.0, 10.0};
+ // camera->up = (Vector3){0.0, 1.0, 0.0};
}