aboutsummaryrefslogtreecommitdiff
path: root/src/entities
diff options
context:
space:
mode:
authornathansmithsmith <nathansmith7@mailfence.com>2023-08-04 14:58:45 -0600
committernathansmithsmith <nathansmith7@mailfence.com>2023-08-04 14:58:45 -0600
commit6411d4eabe48104211be728663afb146dbd12711 (patch)
treed05676d1f6793bcc201c7baae59da464c45b1bb0 /src/entities
parent2849ccc2afcf89c46a9471b787b1ab14959637ae (diff)
Started working on generale
Diffstat (limited to 'src/entities')
-rw-r--r--src/entities/generale.c38
-rw-r--r--src/entities/generale.h15
-rw-r--r--src/entities/maresciallo.c2
3 files changed, 52 insertions, 3 deletions
diff --git a/src/entities/generale.c b/src/entities/generale.c
index 017f213..4865d4e 100644
--- a/src/entities/generale.c
+++ b/src/entities/generale.c
@@ -4,17 +4,51 @@
void initGenerale(Entity * entity, Game * game) {
entity->model = &game->assets.models[GENERALE_ASSET];
+ entity->collisionModel = entityCreateCollisionModel(*entity->model);
+ entity->transformedCollisionModel = entityCreateCollisionModel(*entity->model);
setEntityRadius(entity);
- entity->velocity.angularVelocity = (AxisAngle){(Vector3){1.0, 1.0, 1.0}, 1.0};
+
+ // Allocate data.
+ entity->data = KF_MALLOC(sizeof(Generale));
+
+ if (entity->data == NULL) {
+ ALLOCATION_ERROR;
+ return;
+ }
+
+ Generale * data = (Generale*)entity->data;
+
+ data->flyToPoint = (EntityFlyToPointInfo){
+ .controller.bangbang.speed = 85.0,
+ .controller.bangbang.stopAt = 0.0,
+ .controlType = ENTITY_FLY_TO_POINT_BANG_BANG,
+ .rotationSpeed = 0.0,
+ .applyRotation = false
+ };
+
+ data->zigzag = GENERALE_ZIG;
}
void closeGenerale(Entity * entity) {
+ if (entity->data != NULL)
+ KF_FREE(entity->data);
+
+ entityFreeCollisionModel(entity->collisionModel);
+ entityFreeCollisionModel(entity->transformedCollisionModel);
}
void updateGenerale(Game * game, Entity * entity) {
- entityUpdateRotation(entity);
+ entityUpdateLastValues(entity);
+
+ entityCheckTransformedCollisionModel(entity);
}
void drawGenerale(Game * game, Entity * entity) {
entityDraw(entity);
}
+
+void getTargetGenerale(Game * game, Entity * entity) {
+ Entity * player = getEntityFromWorld(game->world, 0);
+
+ Vector3 dis = Vector3Subtract(
+}
diff --git a/src/entities/generale.h b/src/entities/generale.h
index 12b1ccb..2266e98 100644
--- a/src/entities/generale.h
+++ b/src/entities/generale.h
@@ -4,9 +4,24 @@
#ifndef GENERALE_H
#define GENERALE_H
+#define GENERALE_ZIGZAG_SIZE 10.0
+
+typedef enum GeneraleZigZag {
+ GENERALE_ZIG,
+ GENERALE_ZAG
+} GeneraleZigZag;
+
+typedef struct Generale {
+ EntityFlyToPointInfo flyToPoint;
+ GeneraleZigZag zigzag;
+ Vector3 target;
+} Generale;
+
void initGenerale(Entity * entity, Game * game);
void closeGenerale(Entity * entity);
void updateGenerale(Game * game, Entity * entity);
void drawGenerale(Game * game, Entity * entity);
+void getTargetGenerale(Game * game, Entity * entity);
+
#endif
diff --git a/src/entities/maresciallo.c b/src/entities/maresciallo.c
index a302b89..a5b0628 100644
--- a/src/entities/maresciallo.c
+++ b/src/entities/maresciallo.c
@@ -20,7 +20,7 @@ void initMaresciallo(Entity * entity, Game * game) {
Maresciallo * data = (Maresciallo*)entity->data;
PIDConfig flyToPointPID = (PIDConfig){
- .kP = 1.1, // 1.1
+ .kP = 1.1,
.kI = 0.0,
.kD = 0.0,
.angleMode = false,