50 lines
1.3 KiB
C
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
|