From c160543a7982a62062aae978da08e4f18ae1e712 Mon Sep 17 00:00:00 2001 From: nathansmithsmith Date: Thu, 14 Sep 2023 20:09:12 -0600 Subject: Missile worky worky --- src/entities/mussolini.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/entities/mussolini.c') 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)); -- cgit v1.2.3