Files
ld58/code/game/bandit.h

75 lines
1.9 KiB
C
Raw Normal View History

#if !defined(LD_GAME_BANDIT_H_)
#define LD_GAME_BANDIT_H_
#include "outfit.h"
typedef enum BANDIT_ACTION BANDIT_ACTION;
2025-10-06 17:30:49 +01:00
enum BANDIT_ACTION
{
BANDIT_WAITING,
BANDIT_WALKING,
BANDIT_RUNNING,
2025-10-05 21:05:29 +01:00
BANDIT_SHOOTING,
2025-10-06 17:30:49 +01:00
BANDIT_SHOOTOUT,
};
typedef struct Bandit Bandit;
struct Bandit {
//// Personal
AABB collision;
Str8 name;
World_Area currentArea;
//// Actions
BANDIT_ACTION mode;
// How long they've been waiting.
F32 waitTime;
// How long they will wait in this location.
F32 maxWaitTime;
2025-10-05 21:05:29 +01:00
U32 poiCount;
// Places the bandit walks to / from
// E.g. hide outs, home, saloon
U32 pointsOfInterest[12];
//// Navigation
// The bandits's current path
NavPath path;
// Which node the bandit is on in the path
U32 currentNavNode;
// The current index of the bandit's current node
U32 pathIndex;
// Target navNode index the bandit is walking to
U32 targetNavNode;
// How long the bandit has been walking to the next index
F32 walkTimer;
// How many shots they can take.
U32 health;
// How paranoid they are about being hunted,
// this will make them more trigger happy.
F32 paranoidLevel;
// Max 6?
U8 bullets;
// How long it its between shots.
F32 shootDelay;
// After each shot this is set to shootDelay;
F32 shootCooldownTimer;
2025-10-06 17:30:49 +01:00
// Countdown to shootout
F32 shootoutTimer;
// How long it takes them to reload.
F32 reloadTime;
2025-10-06 17:30:49 +01:00
// When gun is empty this is set to reloadTime.
F32 reloadTimer;
// Accuracy, their shots can vary between this angle either side (rads)
F32 accuracyRange;
// A the circle around the bandit where they will trigger the quicktime reaction scene
F32 agroRadius;
// What the bandit is wearing
G_Outfit outfit;
// What the bandit's outfit id's are
U32 *outfitChoices;
};
function V2f ShootTowards(Bandit* bandit, V2f target, Random* r);
function void BanditDraw(D_Context *draw, Bandit *bandit);
#endif // LD_GAME_BANDIT_H_