Files
PixelDefense/game/ai_actions.h
2024-02-13 19:01:51 +01:00

50 lines
1.3 KiB
C

#ifndef PIXELDEFENSE_AI_ACTIONS_H
#define PIXELDEFENSE_AI_ACTIONS_H
#include <breeze.h>
#include <flecs.h>
#include "components.h"
typedef struct AIBlackboard {
ecs_entity_t entity;
ecs_entity_t seenEnemy;
bool shouldMoveTo;
Vector2 moveToPos;
union {
struct {
ResourceType harvestType;
Vector2 harvestPos;
ecs_entity_t harvestTarget;
ecs_entity_t depositTarget;
} worker;
} as;
f32 proximity;
f32 elapsed;
} AIBlackboard;
BzBTStatus aiMoveTo(AIBlackboard *data, f32 dt);
BzBTStatus aiResetElapsed(AIBlackboard *data, f32 dt);
BzBTStatus aiIsEnemyNearby(AIBlackboard *data, f32 dt);
BzBTStatus aiAttackEnemy(AIBlackboard *data, f32 dt);
BzBTStatus aiEvadeEnemy(AIBlackboard *data, f32 dt);
// Worker
BzBTStatus aiFindNextHarvestable(AIBlackboard *data, f32 dt);
BzBTStatus aiFindNearestStorage(AIBlackboard *data, f32 dt);
BzBTStatus aiHarvestRes(AIBlackboard *data, f32 dt);
BzBTStatus aiDepositRes(AIBlackboard *data, f32 dt);
BzBTStatus aiCarryCapacityFull(AIBlackboard *data, f32 dt);
BzBTStatus aiCarryCapacityEmpty(AIBlackboard *data, f32 dt);
//BzBTStatus aiIsTargetHarvestable(AIBlackboard *data);
//BzBTStatus aiIsTargetStorage(AIBlackboard *data);
#endif //PIXELDEFENSE_AI_ACTIONS_H