diff options
author | nathansmithsmith <nathansmith7@mailfence.com> | 2023-09-14 20:09:12 -0600 |
---|---|---|
committer | nathansmithsmith <nathansmith7@mailfence.com> | 2023-09-14 20:09:12 -0600 |
commit | c160543a7982a62062aae978da08e4f18ae1e712 (patch) | |
tree | 81c8e42af6e18d63dd78ed017cf92cd6d7746152 /src/entities/mussolini.c | |
parent | 3d114213c9797cce0a80918d0771c2314202ef95 (diff) |
Missile worky worky
Diffstat (limited to 'src/entities/mussolini.c')
-rw-r--r-- | src/entities/mussolini.c | 29 |
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)); |