From f02054359968f1f466b8835f546b552fbf755678 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 15 Aug 2023 23:41:39 +1000 Subject: [PATCH] Use sizeof for setup prop sizes instead of literals --- src/game/setuputils.c | 94 +++++++++++++++++++++---------------------- src/include/types.h | 15 ++++++- 2 files changed, 61 insertions(+), 48 deletions(-) diff --git a/src/game/setuputils.c b/src/game/setuputils.c index b62fc2d64..1bdd81f0d 100644 --- a/src/game/setuputils.c +++ b/src/game/setuputils.c @@ -24,62 +24,62 @@ u32 setupGetCmdLength(u32 *cmd) #endif switch ((u8)cmd[0]) { - case OBJTYPE_CHR: return 11; - case OBJTYPE_DOOR: return 55; - case OBJTYPE_DOORSCALE: return 2; - case OBJTYPE_BASIC: return 23; - case OBJTYPE_DEBRIS: return 23; - case OBJTYPE_GLASS: return 24; - case OBJTYPE_TINTEDGLASS: return 26; - case OBJTYPE_SAFE: return 23; - case OBJTYPE_GASBOTTLE: return 23; - case OBJTYPE_KEY: return 24; - case OBJTYPE_ALARM: return 23; - case OBJTYPE_CCTV: return 49; - case OBJTYPE_AMMOCRATE: return 24; - case OBJTYPE_WEAPON: return 26; - case OBJTYPE_SINGLEMONITOR: return 53; - case OBJTYPE_MULTIMONITOR: return 140; - case OBJTYPE_HANGINGMONITORS: return 23; - case OBJTYPE_AUTOGUN: return 43; - case OBJTYPE_LINKGUNS: return 2; - case OBJTYPE_HAT: return 23; - case OBJTYPE_GRENADEPROB: return 2; - case OBJTYPE_LINKLIFTDOOR: return 5; - case OBJTYPE_SAFEITEM: return 5; - case OBJTYPE_MULTIAMMOCRATE: return 42; - case OBJTYPE_SHIELD: return 26; - case OBJTYPE_TAG: return 4; - case OBJTYPE_RENAMEOBJ: return 10; - case OBJTYPE_BEGINOBJECTIVE: return 4; + case OBJTYPE_CHR: return sizeof(struct packedchr) / sizeof(u32); + case OBJTYPE_DOOR: return sizeof(struct doorobj) / sizeof(u32); + case OBJTYPE_DOORSCALE: return sizeof(struct doorscaleobj) / sizeof(u32); + case OBJTYPE_BASIC: return sizeof(struct defaultobj) / sizeof(u32); + case OBJTYPE_DEBRIS: return sizeof(struct debrisobj) / sizeof(u32); + case OBJTYPE_GLASS: return sizeof(struct glassobj) / sizeof(u32); + case OBJTYPE_TINTEDGLASS: return sizeof(struct tintedglassobj) / sizeof(u32); + case OBJTYPE_SAFE: return sizeof(struct safeobj) / sizeof(u32); + case OBJTYPE_GASBOTTLE: return sizeof(struct gasbottleobj) / sizeof(u32); + case OBJTYPE_KEY: return sizeof(struct keyobj) / sizeof(u32); + case OBJTYPE_ALARM: return sizeof(struct alarmobj) / sizeof(u32); + case OBJTYPE_CCTV: return sizeof(struct cctvobj) / sizeof(u32); + case OBJTYPE_AMMOCRATE: return sizeof(struct ammocrateobj) / sizeof(u32); + case OBJTYPE_WEAPON: return sizeof(struct weaponobj) / sizeof(u32); + case OBJTYPE_SINGLEMONITOR: return sizeof(struct singlemonitorobj) / sizeof(u32); + case OBJTYPE_MULTIMONITOR: return sizeof(struct multimonitorobj) / sizeof(u32); + case OBJTYPE_HANGINGMONITORS: return sizeof(struct hangingmonitorsobj) / sizeof(u32); + case OBJTYPE_AUTOGUN: return sizeof(struct autogunobj) / sizeof(u32); + case OBJTYPE_LINKGUNS: return sizeof(struct linkgunsobj) / sizeof(u32); + case OBJTYPE_HAT: return sizeof(struct hatobj) / sizeof(u32); + case OBJTYPE_GRENADEPROB: return sizeof(struct grenadeprobobj) / sizeof(u32); + case OBJTYPE_LINKLIFTDOOR: return sizeof(struct linkliftdoorobj) / sizeof(u32); + case OBJTYPE_SAFEITEM: return sizeof(struct safeitemobj) / sizeof(u32); + case OBJTYPE_MULTIAMMOCRATE: return sizeof(struct multiammocrateobj) / sizeof(u32); + case OBJTYPE_SHIELD: return sizeof(struct shieldobj) / sizeof(u32); + case OBJTYPE_TAG: return sizeof(struct tag) / sizeof(u32); + case OBJTYPE_RENAMEOBJ: return sizeof(struct textoverride) / sizeof(u32); + case OBJTYPE_BEGINOBJECTIVE: return sizeof(struct objective) / sizeof(u32); case OBJTYPE_ENDOBJECTIVE: return 1; case OBJECTIVETYPE_DESTROYOBJ: return 2; case OBJECTIVETYPE_COMPFLAGS: return 2; case OBJECTIVETYPE_FAILFLAGS: return 2; case OBJECTIVETYPE_COLLECTOBJ: return 2; case OBJECTIVETYPE_THROWOBJ: return 2; - case OBJECTIVETYPE_HOLOGRAPH: return 4; + case OBJECTIVETYPE_HOLOGRAPH: return sizeof(struct criteria_holograph) / sizeof(u32); case OBJECTIVETYPE_1F: return 1; - case OBJECTIVETYPE_ENTERROOM: return 4; - case OBJECTIVETYPE_THROWINROOM: return 5; + case OBJECTIVETYPE_ENTERROOM: return sizeof(struct criteria_roomentered) / sizeof(u32); + case OBJECTIVETYPE_THROWINROOM: return sizeof(struct criteria_throwinroom) / sizeof(u32); case OBJTYPE_22: return 1; - case OBJTYPE_BRIEFING: return 4; - case OBJTYPE_PADLOCKEDDOOR: return 4; - case OBJTYPE_TRUCK: return 34; - case OBJTYPE_HELI: return 35; + case OBJTYPE_BRIEFING: return sizeof(struct briefingobj) / sizeof(u32); + case OBJTYPE_PADLOCKEDDOOR: return sizeof(struct padlockeddoorobj) / sizeof(u32); + case OBJTYPE_TRUCK: return sizeof(struct truckobj) / sizeof(u32); + case OBJTYPE_HELI: return sizeof(struct heliobj) / sizeof(u32); case OBJTYPE_TANK: return 32; - case OBJTYPE_CAMERAPOS: return 7; - case OBJTYPE_LIFT: return 37; - case OBJTYPE_CONDITIONALSCENERY: return 5; - case OBJTYPE_BLOCKEDPATH: return 4; - case OBJTYPE_HOVERBIKE: return 56; - case OBJTYPE_HOVERPROP: return 39; - case OBJTYPE_FAN: return 29; - case OBJTYPE_HOVERCAR: return 38; - case OBJTYPE_CHOPPER: return 58; - case OBJTYPE_PADEFFECT: return 3; - case OBJTYPE_MINE: return 26; - case OBJTYPE_ESCASTEP: return 27; + case OBJTYPE_CAMERAPOS: return sizeof(struct cameraposobj) / sizeof(u32); + case OBJTYPE_LIFT: return sizeof(struct liftobj) / sizeof(u32); + case OBJTYPE_CONDITIONALSCENERY: return sizeof(struct linksceneryobj) / sizeof(u32); + case OBJTYPE_BLOCKEDPATH: return sizeof(struct blockedpathobj) / sizeof(u32); + case OBJTYPE_HOVERBIKE: return sizeof(struct hoverbikeobj) / sizeof(u32); + case OBJTYPE_HOVERPROP: return sizeof(struct hoverpropobj) / sizeof(u32); + case OBJTYPE_FAN: return sizeof(struct fanobj) / sizeof(u32); + case OBJTYPE_HOVERCAR: return sizeof(struct hovercarobj) / sizeof(u32); + case OBJTYPE_CHOPPER: return sizeof(struct chopperobj) / sizeof(u32); + case OBJTYPE_PADEFFECT: return sizeof(struct padeffectobj) / sizeof(u32); + case OBJTYPE_MINE: return sizeof(struct weaponobj) / sizeof(u32); + case OBJTYPE_ESCASTEP: return sizeof(struct escalatorobj) / sizeof(u32); } #if VERSION < VERSION_NTSC_1_0 diff --git a/src/include/types.h b/src/include/types.h index 13d49685e..57181e3bc 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -1519,6 +1519,10 @@ struct keyobj { // objtype 0x04 u32 keyflags; }; +struct alarmobj { // objtype 0x05 + struct defaultobj base; +}; + struct cctvobj { // objtype 0x06 struct defaultobj base; @@ -1653,6 +1657,10 @@ struct linkgunsobj { // objtype 0x0e s16 offset2; }; +struct debrisobj { // objtype 0x0f + struct defaultobj base; +}; + struct hatobj { // objtype 0x11 struct defaultobj base; }; @@ -1685,6 +1693,7 @@ struct shieldobj { // objtype 0x15 struct defaultobj base; /*0x5c*/ f32 initialamount; /*0x60*/ f32 amount; + /*0x64*/ u32 unk64; }; struct tag { // objtype 0x16 @@ -1711,6 +1720,10 @@ struct briefingobj { // objtype 0x23 struct briefingobj *next; }; +struct gasbottleobj { // objtype 0x24 + struct defaultobj base; +}; + struct padlockeddoorobj { // objtype 0x26 u32 unk00; struct doorobj *door; @@ -1757,7 +1770,7 @@ struct glassobj { // objtype 0x2a }; struct safeobj { // objtype 0x2b - u32 unk00; + struct defaultobj base; }; struct safeitemobj {