Clarify some proto params
This commit is contained in:
parent
c72d8778ba
commit
cbb9cbc6fd
87
src/proto.cc
87
src/proto.cc
|
@ -24,7 +24,6 @@
|
||||||
|
|
||||||
namespace fallout {
|
namespace fallout {
|
||||||
|
|
||||||
static int _proto_critter_init(Proto* a1, int a2);
|
|
||||||
static int objectCritterCombatDataRead(CritterCombatData* data, File* stream);
|
static int objectCritterCombatDataRead(CritterCombatData* data, File* stream);
|
||||||
static int objectCritterCombatDataWrite(CritterCombatData* data, File* stream);
|
static int objectCritterCombatDataWrite(CritterCombatData* data, File* stream);
|
||||||
static int _proto_update_gen(Object* obj);
|
static int _proto_update_gen(Object* obj);
|
||||||
|
@ -39,8 +38,8 @@ static int _proto_load_pid(int pid, Proto** out_proto);
|
||||||
static int _proto_find_free_subnode(int type, Proto** out_ptr);
|
static int _proto_find_free_subnode(int type, Proto** out_ptr);
|
||||||
static void _proto_remove_some_list(int type);
|
static void _proto_remove_some_list(int type);
|
||||||
static void _proto_remove_list(int type);
|
static void _proto_remove_list(int type);
|
||||||
static int _proto_new_id(int a1);
|
static int _proto_new_id(int type);
|
||||||
static int _proto_max_id(int a1);
|
static int _proto_max_id(int type);
|
||||||
|
|
||||||
// 0x50CF3C
|
// 0x50CF3C
|
||||||
static char _aProto_0[] = "proto\\";
|
static char _aProto_0[] = "proto\\";
|
||||||
|
@ -482,31 +481,31 @@ int proto_item_subdata_init(Proto* proto, int type)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x49EDB4
|
// 0x49EDB4
|
||||||
static int _proto_critter_init(Proto* a1, int a2)
|
int proto_critter_init(Proto* proto, int pid)
|
||||||
{
|
{
|
||||||
if (!_protos_been_initialized) {
|
if (!_protos_been_initialized) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int v1 = a2 & 0xFFFFFF;
|
int num = pid & 0xFFFFFF;
|
||||||
|
|
||||||
a1->pid = -1;
|
proto->pid = -1;
|
||||||
a1->messageId = 100 * v1;
|
proto->messageId = 100 * num;
|
||||||
a1->fid = buildFid(OBJ_TYPE_CRITTER, v1 - 1, 0, 0, 0);
|
proto->fid = buildFid(OBJ_TYPE_CRITTER, num - 1, 0, 0, 0);
|
||||||
a1->critter.lightDistance = 0;
|
proto->critter.lightDistance = 0;
|
||||||
a1->critter.lightIntensity = 0;
|
proto->critter.lightIntensity = 0;
|
||||||
a1->critter.flags = 0x20000000;
|
proto->critter.flags = 0x20000000;
|
||||||
a1->critter.extendedFlags = 0x6000;
|
proto->critter.extendedFlags = 0x6000;
|
||||||
a1->critter.sid = -1;
|
proto->critter.sid = -1;
|
||||||
a1->critter.data.flags = 0;
|
proto->critter.data.flags = 0;
|
||||||
a1->critter.data.bodyType = 0;
|
proto->critter.data.bodyType = 0;
|
||||||
a1->critter.headFid = -1;
|
proto->critter.headFid = -1;
|
||||||
a1->critter.aiPacket = 1;
|
proto->critter.aiPacket = 1;
|
||||||
if (!artExists(a1->fid)) {
|
if (!artExists(proto->fid)) {
|
||||||
a1->fid = buildFid(OBJ_TYPE_CRITTER, 0, 0, 0, 0);
|
proto->fid = buildFid(OBJ_TYPE_CRITTER, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
CritterProtoData* data = &(a1->critter.data);
|
CritterProtoData* data = &(proto->critter.data);
|
||||||
data->experience = 60;
|
data->experience = 60;
|
||||||
data->killType = 0;
|
data->killType = 0;
|
||||||
data->damageType = 0;
|
data->damageType = 0;
|
||||||
|
@ -940,13 +939,13 @@ int _proto_dude_init(const char* path)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x49FBBC
|
// 0x49FBBC
|
||||||
int proto_scenery_init(Proto* proto, int a2)
|
int proto_scenery_init(Proto* proto, int pid)
|
||||||
{
|
{
|
||||||
int v1 = a2 & 0xFFFFFF;
|
int num = pid & 0xFFFFFF;
|
||||||
|
|
||||||
proto->scenery.pid = -1;
|
proto->scenery.pid = -1;
|
||||||
proto->scenery.messageId = 100 * v1;
|
proto->scenery.messageId = 100 * num;
|
||||||
proto->scenery.fid = buildFid(OBJ_TYPE_SCENERY, v1 - 1, 0, 0, 0);
|
proto->scenery.fid = buildFid(OBJ_TYPE_SCENERY, num - 1, 0, 0, 0);
|
||||||
if (!artExists(proto->scenery.fid)) {
|
if (!artExists(proto->scenery.fid)) {
|
||||||
proto->scenery.fid = buildFid(OBJ_TYPE_SCENERY, 0, 0, 0, 0);
|
proto->scenery.fid = buildFid(OBJ_TYPE_SCENERY, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
@ -995,13 +994,13 @@ int proto_scenery_subdata_init(Proto* proto, int type)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x49FCFC
|
// 0x49FCFC
|
||||||
int proto_wall_init(Proto* proto, int a2)
|
int proto_wall_init(Proto* proto, int pid)
|
||||||
{
|
{
|
||||||
int v1 = a2 & 0xFFFFFF;
|
int num = pid & 0xFFFFFF;
|
||||||
|
|
||||||
proto->wall.pid = -1;
|
proto->wall.pid = -1;
|
||||||
proto->wall.messageId = 100 * v1;
|
proto->wall.messageId = 100 * num;
|
||||||
proto->wall.fid = buildFid(OBJ_TYPE_WALL, v1 - 1, 0, 0, 0);
|
proto->wall.fid = buildFid(OBJ_TYPE_WALL, num - 1, 0, 0, 0);
|
||||||
if (!artExists(proto->wall.fid)) {
|
if (!artExists(proto->wall.fid)) {
|
||||||
proto->wall.fid = buildFid(OBJ_TYPE_WALL, 0, 0, 0, 0);
|
proto->wall.fid = buildFid(OBJ_TYPE_WALL, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
@ -1016,13 +1015,13 @@ int proto_wall_init(Proto* proto, int a2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x49FD84
|
// 0x49FD84
|
||||||
int proto_tile_init(Proto* proto, int a2)
|
int proto_tile_init(Proto* proto, int pid)
|
||||||
{
|
{
|
||||||
int v1 = a2 & 0xFFFFFF;
|
int num = pid & 0xFFFFFF;
|
||||||
|
|
||||||
proto->tile.pid = -1;
|
proto->tile.pid = -1;
|
||||||
proto->tile.messageId = 100 * v1;
|
proto->tile.messageId = 100 * num;
|
||||||
proto->tile.fid = buildFid(OBJ_TYPE_TILE, v1 - 1, 0, 0, 0);
|
proto->tile.fid = buildFid(OBJ_TYPE_TILE, num - 1, 0, 0, 0);
|
||||||
if (!artExists(proto->tile.fid)) {
|
if (!artExists(proto->tile.fid)) {
|
||||||
proto->tile.fid = buildFid(OBJ_TYPE_TILE, 0, 0, 0, 0);
|
proto->tile.fid = buildFid(OBJ_TYPE_TILE, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
@ -1035,13 +1034,13 @@ int proto_tile_init(Proto* proto, int a2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x49FDFC
|
// 0x49FDFC
|
||||||
int proto_misc_init(Proto* proto, int a2)
|
int proto_misc_init(Proto* proto, int pid)
|
||||||
{
|
{
|
||||||
int v1 = a2 & 0xFFFFFF;
|
int num = pid & 0xFFFFFF;
|
||||||
|
|
||||||
proto->misc.pid = -1;
|
proto->misc.pid = -1;
|
||||||
proto->misc.messageId = 100 * v1;
|
proto->misc.messageId = 100 * num;
|
||||||
proto->misc.fid = buildFid(OBJ_TYPE_MISC, v1 - 1, 0, 0, 0);
|
proto->misc.fid = buildFid(OBJ_TYPE_MISC, num - 1, 0, 0, 0);
|
||||||
if (!artExists(proto->misc.fid)) {
|
if (!artExists(proto->misc.fid)) {
|
||||||
proto->misc.fid = buildFid(OBJ_TYPE_MISC, 0, 0, 0, 0);
|
proto->misc.fid = buildFid(OBJ_TYPE_MISC, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
@ -1353,7 +1352,7 @@ int protoInit()
|
||||||
compat_mkdir(path);
|
compat_mkdir(path);
|
||||||
|
|
||||||
// TODO: Get rid of cast.
|
// TODO: Get rid of cast.
|
||||||
_proto_critter_init((Proto*)&gDudeProto, 0x1000000);
|
proto_critter_init((Proto*)&gDudeProto, 0x1000000);
|
||||||
|
|
||||||
gDudeProto.pid = 0x1000000;
|
gDudeProto.pid = 0x1000000;
|
||||||
gDudeProto.fid = buildFid(OBJ_TYPE_CRITTER, 1, 0, 0, 0);
|
gDudeProto.fid = buildFid(OBJ_TYPE_CRITTER, 1, 0, 0, 0);
|
||||||
|
@ -1472,7 +1471,7 @@ void protoReset()
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
// TODO: Get rid of cast.
|
// TODO: Get rid of cast.
|
||||||
_proto_critter_init((Proto*)&gDudeProto, 0x1000000);
|
proto_critter_init((Proto*)&gDudeProto, 0x1000000);
|
||||||
gDudeProto.pid = 0x1000000;
|
gDudeProto.pid = 0x1000000;
|
||||||
gDudeProto.fid = buildFid(OBJ_TYPE_CRITTER, 1, 0, 0, 0);
|
gDudeProto.fid = buildFid(OBJ_TYPE_CRITTER, 1, 0, 0, 0);
|
||||||
|
|
||||||
|
@ -2047,7 +2046,7 @@ int proto_new(int* pid, int type)
|
||||||
proto->item.pid = *pid;
|
proto->item.pid = *pid;
|
||||||
break;
|
break;
|
||||||
case OBJ_TYPE_CRITTER:
|
case OBJ_TYPE_CRITTER:
|
||||||
_proto_critter_init(proto, *pid);
|
proto_critter_init(proto, *pid);
|
||||||
proto->critter.pid = *pid;
|
proto->critter.pid = *pid;
|
||||||
break;
|
break;
|
||||||
case OBJ_TYPE_SCENERY:
|
case OBJ_TYPE_SCENERY:
|
||||||
|
@ -2162,18 +2161,18 @@ int protoGetProto(int pid, Proto** protoPtr)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4A21DC
|
// 0x4A21DC
|
||||||
static int _proto_new_id(int a1)
|
static int _proto_new_id(int type)
|
||||||
{
|
{
|
||||||
int result = _protoLists[a1].max_entries_num;
|
int result = _protoLists[type].max_entries_num;
|
||||||
_protoLists[a1].max_entries_num = result + 1;
|
_protoLists[type].max_entries_num = result + 1;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4A2214
|
// 0x4A2214
|
||||||
static int _proto_max_id(int a1)
|
static int _proto_max_id(int type)
|
||||||
{
|
{
|
||||||
return _protoLists[a1].max_entries_num;
|
return _protoLists[type].max_entries_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4A22C0
|
// 0x4A22C0
|
||||||
|
|
13
src/proto.h
13
src/proto.h
|
@ -112,19 +112,20 @@ int _proto_action_can_pickup(int pid);
|
||||||
char* protoGetMessage(int pid, int message);
|
char* protoGetMessage(int pid, int message);
|
||||||
char* protoGetName(int pid);
|
char* protoGetName(int pid);
|
||||||
char* protoGetDescription(int pid);
|
char* protoGetDescription(int pid);
|
||||||
int proto_item_init(Proto* proto, int a2);
|
int proto_item_init(Proto* proto, int pid);
|
||||||
int proto_item_subdata_init(Proto* proto, int type);
|
int proto_item_subdata_init(Proto* proto, int type);
|
||||||
|
int proto_critter_init(Proto* proto, int pid);
|
||||||
void objectDataReset(Object* obj);
|
void objectDataReset(Object* obj);
|
||||||
int objectDataRead(Object* obj, File* stream);
|
int objectDataRead(Object* obj, File* stream);
|
||||||
int objectDataWrite(Object* obj, File* stream);
|
int objectDataWrite(Object* obj, File* stream);
|
||||||
int _proto_update_init(Object* obj);
|
int _proto_update_init(Object* obj);
|
||||||
int _proto_dude_update_gender();
|
int _proto_dude_update_gender();
|
||||||
int _proto_dude_init(const char* path);
|
int _proto_dude_init(const char* path);
|
||||||
int proto_scenery_init(Proto* proto, int a2);
|
int proto_scenery_init(Proto* proto, int pid);
|
||||||
int proto_scenery_subdata_init(Proto* proto, int type);
|
int proto_scenery_subdata_init(Proto* proto, int type);
|
||||||
int proto_wall_init(Proto* proto, int a2);
|
int proto_wall_init(Proto* proto, int pid);
|
||||||
int proto_tile_init(Proto* proto, int a2);
|
int proto_tile_init(Proto* proto, int pid);
|
||||||
int proto_misc_init(Proto* proto, int a2);
|
int proto_misc_init(Proto* proto, int pid);
|
||||||
int proto_copy_proto(int srcPid, int dstPid);
|
int proto_copy_proto(int srcPid, int dstPid);
|
||||||
bool proto_is_subtype(Proto* proto, int subtype);
|
bool proto_is_subtype(Proto* proto, int subtype);
|
||||||
int protoGetDataMember(int pid, int member, ProtoDataMemberValue* value);
|
int protoGetDataMember(int pid, int member, ProtoDataMemberValue* value);
|
||||||
|
@ -134,7 +135,7 @@ void protoExit();
|
||||||
int _proto_save_pid(int pid);
|
int _proto_save_pid(int pid);
|
||||||
int proto_new(int* pid, int type);
|
int proto_new(int* pid, int type);
|
||||||
void _proto_remove_all();
|
void _proto_remove_all();
|
||||||
int protoGetProto(int pid, Proto** out_proto);
|
int protoGetProto(int pid, Proto** protoPtr);
|
||||||
int _ResetPlayer();
|
int _ResetPlayer();
|
||||||
|
|
||||||
static bool isExitGridPid(int pid)
|
static bool isExitGridPid(int pid)
|
||||||
|
|
Loading…
Reference in New Issue