Cleanup party_member.h

See #42
This commit is contained in:
Alexander Batalov 2022-06-18 18:33:10 +03:00
parent b6b6cf6834
commit 428b4baa7b
2 changed files with 61 additions and 69 deletions

View File

@ -1,6 +1,7 @@
#include "party_member.h" #include "party_member.h"
#include "combat_ai.h" #include "combat_ai.h"
#include "combat_ai_defs.h"
#include "animation.h" #include "animation.h"
#include "color.h" #include "color.h"
#include "config.h" #include "config.h"
@ -30,6 +31,46 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
typedef struct PartyMemberDescription {
bool areaAttackMode[AREA_ATTACK_MODE_COUNT];
bool runAwayMode[RUN_AWAY_MODE_COUNT];
bool bestWeapon[BEST_WEAPON_COUNT];
bool distanceMode[DISTANCE_COUNT];
bool attackWho[ATTACK_WHO_COUNT];
bool chemUse[CHEM_USE_COUNT];
bool disposition[DISPOSITION_COUNT];
int level_minimum;
int level_up_every;
int level_pids_num;
int level_pids[5];
} PartyMemberDescription;
typedef struct STRU_519DBC {
int field_0;
int field_4; // party member level
int field_8; // early what?
} STRU_519DBC;
typedef struct STRUCT_519DA8 {
Object* object;
Script* script;
int* vars;
struct STRUCT_519DA8* next;
} STRUCT_519DA8;
static int partyMemberGetDescription(Object* object, PartyMemberDescription** partyMemberDescriptionPtr);
static void partyMemberDescriptionInit(PartyMemberDescription* partyMemberDescription);
static int _partyMemberPrepLoadInstance(STRUCT_519DA8* a1);
static int _partyMemberRecoverLoadInstance(STRUCT_519DA8* a1);
static int _partyMemberNewObjID();
static int _partyMemberNewObjIDRecurseFind(Object* object, int objectId);
static int _partyMemberPrepItemSave(Object* object);
static int _partyMemberItemSave(Object* object);
static int _partyMemberItemRecover(STRUCT_519DA8* a1);
static int _partyMemberClearItemList();
static int _partyFixMultipleMembers();
static int _partyMemberCopyLevelInfo(Object* object, int a2);
// 0x519D9C // 0x519D9C
int gPartyMemberDescriptionsLength = 0; int gPartyMemberDescriptionsLength = 0;
@ -37,32 +78,32 @@ int gPartyMemberDescriptionsLength = 0;
int* gPartyMemberPids = NULL; int* gPartyMemberPids = NULL;
// //
STRUCT_519DA8* _itemSaveListHead = NULL; static STRUCT_519DA8* _itemSaveListHead = NULL;
// List of party members, it's length is [gPartyMemberDescriptionsLength] + 20. // List of party members, it's length is [gPartyMemberDescriptionsLength] + 20.
// //
// 0x519DA8 // 0x519DA8
STRUCT_519DA8* gPartyMembers = NULL; static STRUCT_519DA8* gPartyMembers = NULL;
// Number of critters added to party. // Number of critters added to party.
// //
// 0x519DAC // 0x519DAC
int gPartyMembersLength = 0; static int gPartyMembersLength = 0;
// 0x519DB0 // 0x519DB0
int _partyMemberItemCount = 20000; static int _partyMemberItemCount = 20000;
// 0x519DB4 // 0x519DB4
int _partyStatePrepped = 0; static int _partyStatePrepped = 0;
// 0x519DB8 // 0x519DB8
PartyMemberDescription* gPartyMemberDescriptions = NULL; static PartyMemberDescription* gPartyMemberDescriptions = NULL;
// 0x519DBC // 0x519DBC
STRU_519DBC* _partyMemberLevelUpInfoList = NULL; static STRU_519DBC* _partyMemberLevelUpInfoList = NULL;
// 0x519DC0 // 0x519DC0
int _curID = 20000; static int _curID = 20000;
// partyMember_init // partyMember_init
// 0x493BC0 // 0x493BC0
@ -260,7 +301,7 @@ void partyMembersExit()
} }
// 0x4941F0 // 0x4941F0
int partyMemberGetDescription(Object* object, PartyMemberDescription** partyMemberDescriptionPtr) static int partyMemberGetDescription(Object* object, PartyMemberDescription** partyMemberDescriptionPtr)
{ {
for (int index = 1; index < gPartyMemberDescriptionsLength; index++) { for (int index = 1; index < gPartyMemberDescriptionsLength; index++) {
if (gPartyMemberPids[index] == object->pid) { if (gPartyMemberPids[index] == object->pid) {
@ -273,7 +314,7 @@ int partyMemberGetDescription(Object* object, PartyMemberDescription** partyMemb
} }
// 0x49425C // 0x49425C
void partyMemberDescriptionInit(PartyMemberDescription* partyMemberDescription) static void partyMemberDescriptionInit(PartyMemberDescription* partyMemberDescription)
{ {
for (int index = 0; index < AREA_ATTACK_MODE_COUNT; index++) { for (int index = 0; index < AREA_ATTACK_MODE_COUNT; index++) {
partyMemberDescription->areaAttackMode[index] = 0; partyMemberDescription->areaAttackMode[index] = 0;
@ -504,7 +545,7 @@ int _partyMemberPrepLoad()
// partyMemberPrepLoadInstance // partyMemberPrepLoadInstance
// 0x49480C // 0x49480C
int _partyMemberPrepLoadInstance(STRUCT_519DA8* a1) static int _partyMemberPrepLoadInstance(STRUCT_519DA8* a1)
{ {
Object* obj = a1->object; Object* obj = a1->object;
@ -610,7 +651,7 @@ int _partyMemberRecoverLoad()
// partyMemberRecoverLoadInstance // partyMemberRecoverLoadInstance
// 0x494A88 // 0x494A88
int _partyMemberRecoverLoadInstance(STRUCT_519DA8* a1) static int _partyMemberRecoverLoadInstance(STRUCT_519DA8* a1)
{ {
if (a1->script == NULL) { if (a1->script == NULL) {
showMesageBox("\n Error!: partyMemberRecoverLoadInstance: No script!"); showMesageBox("\n Error!: partyMemberRecoverLoadInstance: No script!");
@ -859,7 +900,7 @@ int _getPartyMemberCount()
} }
// 0x495070 // 0x495070
int _partyMemberNewObjID() static int _partyMemberNewObjID()
{ {
Object* object; Object* object;
@ -901,7 +942,7 @@ int _partyMemberNewObjID()
} }
// 0x4950F4 // 0x4950F4
int _partyMemberNewObjIDRecurseFind(Object* obj, int objectId) static int _partyMemberNewObjIDRecurseFind(Object* obj, int objectId)
{ {
Inventory* inventory = &(obj->data.inventory); Inventory* inventory = &(obj->data.inventory);
for (int index = 0; index < inventory->length; index++) { for (int index = 0; index < inventory->length; index++) {
@ -935,7 +976,7 @@ int _partyMemberPrepItemSaveAll()
} }
// partyMemberPrepItemSaveAll // partyMemberPrepItemSaveAll
int _partyMemberPrepItemSave(Object* object) static int _partyMemberPrepItemSave(Object* object)
{ {
if (object->sid != -1) { if (object->sid != -1) {
Script* script; Script* script;
@ -957,7 +998,7 @@ int _partyMemberPrepItemSave(Object* object)
} }
// 0x495234 // 0x495234
int _partyMemberItemSave(Object* object) static int _partyMemberItemSave(Object* object)
{ {
if (object->sid != -1) { if (object->sid != -1) {
Script* script; Script* script;
@ -1015,7 +1056,7 @@ int _partyMemberItemSave(Object* object)
// partyMemberItemRecover // partyMemberItemRecover
// 0x495388 // 0x495388
int _partyMemberItemRecover(STRUCT_519DA8* a1) static int _partyMemberItemRecover(STRUCT_519DA8* a1)
{ {
int sid = -1; int sid = -1;
if (scriptAdd(&sid, SCRIPT_TYPE_ITEM) == -1) { if (scriptAdd(&sid, SCRIPT_TYPE_ITEM) == -1) {
@ -1051,7 +1092,7 @@ int _partyMemberItemRecover(STRUCT_519DA8* a1)
} }
// 0x4954C4 // 0x4954C4
int _partyMemberClearItemList() static int _partyMemberClearItemList()
{ {
while (_itemSaveListHead != NULL) { while (_itemSaveListHead != NULL) {
STRUCT_519DA8* node = _itemSaveListHead; STRUCT_519DA8* node = _itemSaveListHead;
@ -1143,7 +1184,7 @@ int partyGetBestSkillValue(int skill)
} }
// 0x495620 // 0x495620
int _partyFixMultipleMembers() static int _partyFixMultipleMembers()
{ {
debugPrint("\n\n\n[Party Members]:"); debugPrint("\n\n\n[Party Members]:");
@ -1508,7 +1549,7 @@ int _partyMemberIncLevels()
} }
// 0x495EA8 // 0x495EA8
int _partyMemberCopyLevelInfo(Object* critter, int a2) static int _partyMemberCopyLevelInfo(Object* critter, int a2)
{ {
if (critter == NULL) { if (critter == NULL) {
return -1; return -1;

View File

@ -1,63 +1,22 @@
#ifndef PARTY_MEMBER_H #ifndef PARTY_MEMBER_H
#define PARTY_MEMBER_H #define PARTY_MEMBER_H
#include "combat_ai_defs.h"
#include "db.h" #include "db.h"
#include "obj_types.h" #include "obj_types.h"
#include "scripts.h"
typedef struct PartyMemberDescription {
bool areaAttackMode[AREA_ATTACK_MODE_COUNT];
bool runAwayMode[RUN_AWAY_MODE_COUNT];
bool bestWeapon[BEST_WEAPON_COUNT];
bool distanceMode[DISTANCE_COUNT];
bool attackWho[ATTACK_WHO_COUNT];
bool chemUse[CHEM_USE_COUNT];
bool disposition[DISPOSITION_COUNT];
int level_minimum;
int level_up_every;
int level_pids_num;
int level_pids[5];
} PartyMemberDescription;
typedef struct STRU_519DBC {
int field_0;
int field_4; // party member level
int field_8; // early what?
} STRU_519DBC;
typedef struct STRUCT_519DA8 {
Object* object;
Script* script;
int* vars;
struct STRUCT_519DA8* next;
} STRUCT_519DA8;
extern int gPartyMemberDescriptionsLength; extern int gPartyMemberDescriptionsLength;
extern int* gPartyMemberPids; extern int* gPartyMemberPids;
extern STRUCT_519DA8* _itemSaveListHead;
extern STRUCT_519DA8* gPartyMembers;
extern int gPartyMembersLength;
extern int _partyMemberItemCount;
extern int _partyStatePrepped;
extern PartyMemberDescription* gPartyMemberDescriptions;
extern STRU_519DBC* _partyMemberLevelUpInfoList;
extern int _curID;
int partyMembersInit(); int partyMembersInit();
void partyMembersReset(); void partyMembersReset();
void partyMembersExit(); void partyMembersExit();
int partyMemberGetDescription(Object* object, PartyMemberDescription** partyMemberDescriptionPtr);
void partyMemberDescriptionInit(PartyMemberDescription* partyMemberDescription);
int partyMemberAdd(Object* object); int partyMemberAdd(Object* object);
int partyMemberRemove(Object* object); int partyMemberRemove(Object* object);
int _partyMemberPrepSave(); int _partyMemberPrepSave();
int _partyMemberUnPrepSave(); int _partyMemberUnPrepSave();
int partyMembersSave(File* stream); int partyMembersSave(File* stream);
int _partyMemberPrepLoad(); int _partyMemberPrepLoad();
int _partyMemberPrepLoadInstance(STRUCT_519DA8* a1);
int _partyMemberRecoverLoad(); int _partyMemberRecoverLoad();
int _partyMemberRecoverLoadInstance(STRUCT_519DA8* a1);
int partyMembersLoad(File* stream); int partyMembersLoad(File* stream);
void _partyMemberClear(); void _partyMemberClear();
int _partyMemberSyncPosition(); int _partyMemberSyncPosition();
@ -66,17 +25,10 @@ Object* partyMemberFindByPid(int a1);
bool _isPotentialPartyMember(Object* object); bool _isPotentialPartyMember(Object* object);
bool objectIsPartyMember(Object* object); bool objectIsPartyMember(Object* object);
int _getPartyMemberCount(); int _getPartyMemberCount();
int _partyMemberNewObjID();
int _partyMemberNewObjIDRecurseFind(Object* object, int objectId);
int _partyMemberPrepItemSaveAll(); int _partyMemberPrepItemSaveAll();
int _partyMemberPrepItemSave(Object* object);
int _partyMemberItemSave(Object* object);
int _partyMemberItemRecover(STRUCT_519DA8* a1);
int _partyMemberClearItemList();
int partyMemberGetBestSkill(Object* object); int partyMemberGetBestSkill(Object* object);
Object* partyMemberGetBestInSkill(int skill); Object* partyMemberGetBestInSkill(int skill);
int partyGetBestSkillValue(int skill); int partyGetBestSkillValue(int skill);
int _partyFixMultipleMembers();
void _partyMemberSaveProtos(); void _partyMemberSaveProtos();
bool partyMemberSupportsDisposition(Object* object, int disposition); bool partyMemberSupportsDisposition(Object* object, int disposition);
bool partyMemberSupportsAreaAttackMode(Object* object, int areaAttackMode); bool partyMemberSupportsAreaAttackMode(Object* object, int areaAttackMode);
@ -86,7 +38,6 @@ bool partyMemberSupportsDistance(Object* object, int distanceMode);
bool partyMemberSupportsAttackWho(Object* object, int attackWho); bool partyMemberSupportsAttackWho(Object* object, int attackWho);
bool partyMemberSupportsChemUse(Object* object, int chemUse); bool partyMemberSupportsChemUse(Object* object, int chemUse);
int _partyMemberIncLevels(); int _partyMemberIncLevels();
int _partyMemberCopyLevelInfo(Object* object, int a2);
bool partyIsAnyoneCanBeHealedByRest(); bool partyIsAnyoneCanBeHealedByRest();
int partyGetMaxWoundToHealByRest(); int partyGetMaxWoundToHealByRest();