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

View File

@ -1,63 +1,22 @@
#ifndef PARTY_MEMBER_H
#define PARTY_MEMBER_H
#include "combat_ai_defs.h"
#include "db.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* 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();
void partyMembersReset();
void partyMembersExit();
int partyMemberGetDescription(Object* object, PartyMemberDescription** partyMemberDescriptionPtr);
void partyMemberDescriptionInit(PartyMemberDescription* partyMemberDescription);
int partyMemberAdd(Object* object);
int partyMemberRemove(Object* object);
int _partyMemberPrepSave();
int _partyMemberUnPrepSave();
int partyMembersSave(File* stream);
int _partyMemberPrepLoad();
int _partyMemberPrepLoadInstance(STRUCT_519DA8* a1);
int _partyMemberRecoverLoad();
int _partyMemberRecoverLoadInstance(STRUCT_519DA8* a1);
int partyMembersLoad(File* stream);
void _partyMemberClear();
int _partyMemberSyncPosition();
@ -66,17 +25,10 @@ Object* partyMemberFindByPid(int a1);
bool _isPotentialPartyMember(Object* object);
bool objectIsPartyMember(Object* object);
int _getPartyMemberCount();
int _partyMemberNewObjID();
int _partyMemberNewObjIDRecurseFind(Object* object, int objectId);
int _partyMemberPrepItemSaveAll();
int _partyMemberPrepItemSave(Object* object);
int _partyMemberItemSave(Object* object);
int _partyMemberItemRecover(STRUCT_519DA8* a1);
int _partyMemberClearItemList();
int partyMemberGetBestSkill(Object* object);
Object* partyMemberGetBestInSkill(int skill);
int partyGetBestSkillValue(int skill);
int _partyFixMultipleMembers();
void _partyMemberSaveProtos();
bool partyMemberSupportsDisposition(Object* object, int disposition);
bool partyMemberSupportsAreaAttackMode(Object* object, int areaAttackMode);
@ -86,7 +38,6 @@ bool partyMemberSupportsDistance(Object* object, int distanceMode);
bool partyMemberSupportsAttackWho(Object* object, int attackWho);
bool partyMemberSupportsChemUse(Object* object, int chemUse);
int _partyMemberIncLevels();
int _partyMemberCopyLevelInfo(Object* object, int a2);
bool partyIsAnyoneCanBeHealedByRest();
int partyGetMaxWoundToHealByRest();