diff options
author | nathansmithsmith <nathansmith7@mailfence.com> | 2023-09-15 15:01:37 -0600 |
---|---|---|
committer | nathansmithsmith <nathansmith7@mailfence.com> | 2023-09-15 15:01:37 -0600 |
commit | 7ffeaacac296155632705f2a494683d3bdffa684 (patch) | |
tree | 3eb67f9f3864d0242d20ab3c8e154c78e856dce5 /src | |
parent | 0612480baf3d173b2d210693d6a234d76bb902cf (diff) |
Mussolini missiles shoot from scary looking things
Diffstat (limited to 'src')
-rw-r--r-- | src/entities/mussolini.c | 23 | ||||
-rw-r--r-- | src/entities/mussolini.h | 6 | ||||
-rw-r--r-- | src/game.c | 2 | ||||
-rw-r--r-- | src/playerCamera.c | 6 |
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); @@ -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}; } |