aboutsummaryrefslogtreecommitdiff
path: root/src/entities/mussolini.c
diff options
context:
space:
mode:
authornathansmithsmith <nathansmith7@mailfence.com>2023-09-14 20:09:12 -0600
committernathansmithsmith <nathansmith7@mailfence.com>2023-09-14 20:09:12 -0600
commitc160543a7982a62062aae978da08e4f18ae1e712 (patch)
tree81c8e42af6e18d63dd78ed017cf92cd6d7746152 /src/entities/mussolini.c
parent3d114213c9797cce0a80918d0771c2314202ef95 (diff)
Missile worky worky
Diffstat (limited to 'src/entities/mussolini.c')
-rw-r--r--src/entities/mussolini.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/entities/mussolini.c b/src/entities/mussolini.c
index 9f56aa3..151e050 100644
--- a/src/entities/mussolini.c
+++ b/src/entities/mussolini.c
@@ -2,6 +2,9 @@
#include "assets.h"
#include "game.h"
#include "util.h"
+#include "missile.h"
+#include "world.h"
+#include "entity.h"
void initMussolini(Entity * entity, Game * game) {
entity->model = &game->assets.models[MUSSOLINI_ASSET];
@@ -18,11 +21,35 @@ void initMussolini(Entity * entity, Game * game) {
}
Mussolini * data = (Mussolini*)entity->data;
+
+ data->timeSinceLastMissile = GetTime();
}
void closeMussolini(Entity * entity) {
if (entity->data != NULL)
KF_FREE(entity->data);
+
+ entityFreeCollisionModel(entity->collisionModel);
+ entityFreeCollisionModel(entity->transformedCollisionModel);
+}
+
+void updateMussoliniGuns(Game * game, Entity * entity) {
+ double t = GetTime();
+ Entity * player = getEntityFromWorld(game->world, 0);
+ Mussolini * data = (Mussolini*)entity->data;
+
+ if (t - data->timeSinceLastMissile < MUSSOLINI_MISSILE_DOWN_COOL)
+ return;
+
+ // Shoot missile.
+ Entity missile = createEntity(ENTITY_MISSILE, game);
+ missile.position = entity->position;
+ aimMissileAtTarget(&missile, player->position);
+ scheduleEntityToAdd(&game->world, missile);
+
+ puts("shoot shoot");
+
+ data->timeSinceLastMissile = t;
}
void updateMussolini(Game * game, Entity * entity) {
@@ -32,6 +59,8 @@ void updateMussolini(Game * game, Entity * entity) {
Entity * player = getEntityFromWorld(game->world, 0);
Mussolini * data = (Mussolini*)entity->data;
+ updateMussoliniGuns(game, entity);
+
// Look at player.
Matrix matrix = MatrixLookAt(player->position, entity->position, (Vector3){0.0, 1.0, 0.0});
Quaternion rotation = QuaternionInvert(QuaternionFromMatrix(matrix));