Decompile chrNavCheckForObstacle

This commit is contained in:
Ryan Dwyer 2021-12-24 17:23:35 +10:00
parent 6383cd2b11
commit 0d42ee99c8
4 changed files with 355 additions and 1329 deletions

File diff suppressed because it is too large Load Diff

View File

@ -3920,13 +3920,13 @@
#define VOICEBOX_MALE2 2
#define VOICEBOX_FEMALE 3
#define WAYMODE_EXPENSIVE 0
#define WAYMODE_1 1
#define WAYMODE_2 2
#define WAYMODE_3 3
#define WAYMODE_4 4
#define WAYMODE_5 5
#define WAYMODE_MAGIC 6
#define WAYMODE_INIT 0
#define WAYMODE_LOST1 1
#define WAYMODE_RETRY 2
#define WAYMODE_LOST2 3
#define WAYMODE_HAVEAIMPOS 4
#define WAYMODE_NEWOBSACTLE 5
#define WAYMODE_MAGIC 6
enum weaponnum {
/*0x00*/ WEAPON_NONE,

View File

@ -66,7 +66,7 @@ void chrDamageByImpact(struct chrdata *chr, f32 damage, struct coord *vector, st
void chrDamageByExplosion(struct chrdata *chr, f32 damage, struct coord *vector, struct prop *prop, struct coord *explosionpos);
void playerUpdateDamageStats(struct prop *attacker, struct prop *victim, f32 damage);
void chrDamage(struct chrdata *chr, f32 damage, struct coord *vector, struct gset *gset, struct prop *aprop, s32 hitpart, bool damageshield, struct prop *prop2, struct modelnode *node, struct model *model, s32 side, s16 *arg11, bool explosion, struct coord *explosionpos);
bool func0f03645c(struct chrdata *chr, struct coord *arg1, s16 *arg2, struct coord *arg3, struct coord *arg4, s32 arg5);
bool func0f03645c(struct chrdata *chr, struct coord *arg1, s16 *arg2, struct coord *arg3, struct coord *arg4, s32 cdtypes);
bool func0f03654c(struct chrdata *chr, struct coord *pos, s16 *rooms, struct coord *pos2, s16 *rooms2, struct coord *vector, f32 arg6, u32 types);
bool propchrHasClearLineToPos(struct prop *prop, struct coord *dstpos, struct coord *vector);
bool propchrHasClearLineInVector(struct prop *prop, struct coord *coord, f32 arg2);
@ -88,7 +88,7 @@ s16 chrPatrolCalculatePadNum(struct chrdata *chr, s32 numsteps);
void chrPatrolGetCurWaypointInfoWithFlags(struct chrdata *chr, struct coord *pos, s16 *rooms, u32 *flags);
void func0f037580(struct chrdata *chr);
void func0f0375b0(struct chrdata *chr);
void chrGoPosTickMagic(struct chrdata *chr, struct waydata *waydata, f32 speed, struct coord *arg3, s16 *rooms);
void chrNavTickMagic(struct chrdata *chr, struct waydata *waydata, f32 speed, struct coord *arg3, s16 *rooms);
void chrCalculatePosition(struct chrdata *chr, struct coord *pos);
void chrGoPosChooseAnimation(struct chrdata *chr);
bool chrGoToPos(struct chrdata *chr, struct coord *pos, s16 *rooms, u32 flags);
@ -166,11 +166,11 @@ bool posIsArrivingLaterallyAtPos(struct coord *prevpos, struct coord *curpos, st
bool posIsArrivingAtPos(struct coord *prevpos, struct coord *curpos, struct coord *targetpos, f32 range);
void chrTickRunPos(struct chrdata *chr);
void func0f044b68(struct coord *arg0, struct coord *arg1, struct coord *arg2);
bool func0f044c38(struct chrdata *chr, struct coord *pos, s16 *rooms, struct coord *aimpos, struct coord *arg4, struct coord *arg5, f32 negwidth, f32 width, s32 arg8, s32 arg9);
bool func0f0451a8(struct chrdata *chr, struct coord *pos, s16 *rooms, struct coord *aimpos, struct coord *arg4, struct coord *arg5, f32 negwidth, f32 width, s32 soundnum, s32 arg9);
bool func0f045760(struct chrdata *chr, struct coord *arg1, bool arg2, struct coord *arg3, f32 width, bool arg5, struct coord *nextpos, struct waydata *waydata, f32 arg8, s32 arg9, s32 arg10);
bool chrNavCanSeeNextPos(struct chrdata *chr, struct coord *pos, s16 *rooms, struct coord *aimpos, struct coord *arg4, struct coord *arg5, f32 negwidth, f32 width, s32 cdtypes, s32 arg9);
bool chrNavCheckForObstacle(struct chrdata *chr, struct coord *chrpos, s16 *chrrooms, struct coord *aimpos, struct coord *leftpos, struct coord *rightpos, f32 negchrwidth, f32 chrwidth, s32 cdtypes, bool hasobstacle);
bool chrNavTryObstacle(struct chrdata *chr, struct coord *arg1, bool arg2, struct coord *arg3, f32 width, bool arg5, struct coord *nextpos, struct waydata *waydata, f32 arg8, s32 cdtypes, s32 arg10);
struct prop *chrOpenDoor(struct chrdata *chr, struct coord *coord);
void chrTickWay(struct chrdata *chr, struct coord *pos, struct waydata *waydata, bool arg3);
void chrNavTickMain(struct chrdata *chr, struct coord *pos, struct waydata *waydata, bool arg3);
bool goPosUpdateLiftAction(struct chrdata *chr, u32 curpadflags, bool arg2, bool arrivingatlift, s16 curpadnum, s32 nextpadnum);
s16 chrGoPosGetNextPadNum(struct chrdata *chr);
void chrTickGoPos(struct chrdata *chr);

View File

@ -1171,11 +1171,11 @@ struct waydata {
/*0x01*/ s8 iter;
/*0x02*/ s8 gotaimpos;
/*0x03*/ s8 gotaimposobj;
/*0x04*/ struct coord aimpos;
/*0x10*/ struct coord unk10;
/*0x1c*/ struct coord unk1c;
/*0x04*/ struct coord aimpos; // world coords of next pad
/*0x10*/ struct coord obstacleleft; // world coord of left (from chr's perspective) edge of obj
/*0x1c*/ struct coord obstacleright; // world coord of right (from chr's perspective) edge of obj
/*0x28*/ s32 age;
/*0x2c*/ struct coord aimposobj;
/*0x2c*/ struct coord aimposobj; // left or right edge + chr's width, or aimpos if no obj
// These are the distances between the current waypoint and the previous
// when using magic mode.