159 lines
2.8 KiB
C
Raw Normal View History

2024-05-23 19:19:28 +02:00
#pragma once
#ifndef AI_H
#define AI_H
2024-06-03 17:59:57 +02:00
#include "export.h"
#include "main.h"
#include "vector.h"
#include "baddy.h"
#include "mem.h"
2024-06-04 18:12:47 +02:00
#include "stateflags.h"
2024-06-04 19:25:55 +02:00
struct SMoveToInfo
{
CVector field_0;
int field_C;
int field_10;
int field_14;
};
enum AIProcType
{
UNK_257 = 257,
UNK_258 = 258,
LOOKAT_TWO = 259,
2024-06-04 17:55:26 +02:00
UNK_260 = 260,
2024-06-04 18:02:47 +02:00
PROC_FALL_TYPE = 770,
2024-06-04 18:12:47 +02:00
STATE_SWITCH_SEND_MESSAGE = 0x60601,
2024-06-04 18:26:36 +02:00
MONITOR_ATTACK = 1281,
2024-06-04 18:55:29 +02:00
ACCZ = 1025,
2024-06-04 19:25:55 +02:00
MOVE_TO = 1794,
};
2024-06-03 17:59:57 +02:00
class CAIProc : public CClass
{
public:
EXPORT virtual ~CAIProc(void);
2024-06-04 16:54:12 +02:00
EXPORT int Wait(void);
EXPORT void AttachProc(AIProcType, CBaddy*, int);
2024-06-06 00:04:26 +02:00
EXPORT virtual void Execute(void) = 0;
2024-06-04 16:54:12 +02:00
CBaddy* pBaddy;
AIProcType mAIProcType;
2024-06-04 16:54:12 +02:00
int field_C;
int field_10;
int field_14;
CAIProc* field_18;
2024-07-01 18:17:13 +01:00
CAIProc* mNext;
2024-06-03 17:59:57 +02:00
};
class CAIProc_LookAt : public CAIProc
{
public:
EXPORT CAIProc_LookAt(CBaddy*, CBody*, CVector *, int, int, int);
EXPORT CAIProc_LookAt(CBaddy*, int, int, int, int);
EXPORT void SetUpVariables(int, int);
2024-06-06 00:04:26 +02:00
EXPORT virtual void Execute(void);
int field_20;
SHandle field_24;
CVector field_2C;
int field_38;
int field_3C;
2024-06-03 17:59:57 +02:00
};
2024-06-04 17:55:26 +02:00
class CAIProc_RotY : public CAIProc
{
public:
EXPORT CAIProc_RotY(CBaddy*, int, int ,int);
2024-06-10 18:49:15 +02:00
// @TODO
// this doesn't exist, i'm confused
void Execute(void)
{
}
2024-06-04 17:55:26 +02:00
int field_20;
int field_24;
};
2024-06-04 18:02:47 +02:00
class CAIProc_Fall : public CAIProc
{
public:
EXPORT CAIProc_Fall(CBaddy *, int);
2024-08-02 15:51:17 +02:00
EXPORT virtual CAIProc_Fall(void);
EXPORT virtual void Execute(void);
2024-06-04 18:02:47 +02:00
};
2024-06-04 18:12:47 +02:00
class CAIProc_StateSwitchSendMessage : public CAIProc
{
public:
EXPORT CAIProc_StateSwitchSendMessage(CBaddy *, int);
EXPORT virtual ~CAIProc_StateSwitchSendMessage(void);
EXPORT void Execute(void);
2024-06-04 18:12:47 +02:00
SStateFlags mFlags;
int field_24;
};
2024-06-04 18:26:36 +02:00
class CAIProc_MonitorAttack : public CAIProc
{
public:
EXPORT CAIProc_MonitorAttack(CBaddy*, int, int, int, int);
EXPORT virtual ~CAIProc_MonitorAttack(void);
EXPORT void Execute(void);
2024-06-04 18:26:36 +02:00
int field_20;
int field_24;
int field_28;
int field_2C;
CVector *field_30;
int field_34;
2024-06-04 18:26:36 +02:00
};
2024-06-03 17:59:57 +02:00
2024-06-04 18:55:29 +02:00
class CAIProc_AccZ : public CAIProc
{
public:
EXPORT CAIProc_AccZ(CBaddy*, int, int, int);
2024-08-02 15:50:19 +02:00
EXPORT virtual ~CAIProc_AccZ(void);
EXPORT virtual void Execute(void);
2024-06-04 18:55:29 +02:00
int field_20;
int field_24;
};
2024-06-04 19:25:55 +02:00
class CAIProc_MoveTo : public CAIProc
{
public:
EXPORT CAIProc_MoveTo(CBaddy*, SMoveToInfo*, int);
2024-08-02 15:48:37 +02:00
EXPORT virtual ~CAIProc_MoveTo(void);
2024-06-06 00:04:26 +02:00
EXPORT virtual void Execute(void);
2024-06-04 19:25:55 +02:00
CVector field_20;
int field_2C;
CVector field_30;
2024-06-06 00:04:26 +02:00
int field_3C;
2024-06-04 19:25:55 +02:00
};
2024-06-03 17:59:57 +02:00
void validate_CAIProc(void);
void validate_CAIProc_LookAt(void);
2024-06-04 17:55:26 +02:00
void validate_CAIProc_RotY(void);
2024-06-04 18:02:47 +02:00
void validate_CAIProc_Fall(void);
2024-06-04 18:12:47 +02:00
void validate_CAIProc_StateSwitchSendMessage(void);
2024-06-04 18:26:36 +02:00
void validate_CAIProc_MonitorAttack(void);
2024-06-04 18:55:29 +02:00
void validate_CAIProc_AccZ(void);
2024-06-04 19:25:55 +02:00
void validate_SMoveToInfo(void);
void validate_CAIProc_MoveTo(void);
2024-06-03 17:59:57 +02:00
#endif