aboutsummaryrefslogtreecommitdiff
path: root/src/entities/mussolini.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/entities/mussolini.c')
-rw-r--r--src/entities/mussolini.c23
1 files changed, 22 insertions, 1 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);