Cleanup object.h

See #42
This commit is contained in:
Alexander Batalov 2022-06-19 15:18:08 +03:00
parent 34eb29d797
commit b1a85de08b
2 changed files with 103 additions and 146 deletions

View File

@ -26,69 +26,99 @@
#include <assert.h> #include <assert.h>
#include <string.h> #include <string.h>
static int objectLoadAllInternal(File* stream);
static void _obj_fix_combat_cid_for_dude();
static void _object_fix_weapon_ammo(Object* obj);
static int objectWrite(Object* obj, File* stream);
static int _obj_offset_table_init();
static void _obj_offset_table_exit();
static int _obj_order_table_init();
static int _obj_order_comp_func_even(const void* a1, const void* a2);
static int _obj_order_comp_func_odd(const void* a1, const void* a2);
static void _obj_order_table_exit();
static int _obj_render_table_init();
static void _obj_render_table_exit();
static void _obj_light_table_init();
static void _obj_blend_table_init();
static void _obj_blend_table_exit();
static int _obj_save_obj(File* stream, Object* object);
static int _obj_load_obj(File* stream, Object** objectPtr, int elevation, Object* owner);
static int objectAllocate(Object** objectPtr);
static void objectDeallocate(Object** objectPtr);
static int objectListNodeCreate(ObjectListNode** nodePtr);
static void objectListNodeDestroy(ObjectListNode** nodePtr);
static int objectGetListNode(Object* obj, ObjectListNode** out_node, ObjectListNode** out_prev_node);
static void _obj_insert(ObjectListNode* ptr);
static int _obj_remove(ObjectListNode* a1, ObjectListNode* a2);
static int _obj_connect_to_tile(ObjectListNode* node, int tile_index, int elev, Rect* rect);
static int _obj_adjust_light(Object* obj, int a2, Rect* rect);
static void objectDrawOutline(Object* object, Rect* rect);
static void _obj_render_object(Object* object, Rect* rect, int light);
static int _obj_preload_sort(const void* a1, const void* a2);
// 0x5195F8 // 0x5195F8
bool gObjectsInitialized = false; static bool gObjectsInitialized = false;
// 0x5195FC // 0x5195FC
int gObjectsUpdateAreaHexWidth = 0; static int gObjectsUpdateAreaHexWidth = 0;
// 0x519600 // 0x519600
int gObjectsUpdateAreaHexHeight = 0; static int gObjectsUpdateAreaHexHeight = 0;
// 0x519604 // 0x519604
int gObjectsUpdateAreaHexSize = 0; static int gObjectsUpdateAreaHexSize = 0;
// 0x519608 // 0x519608
int* _orderTable[2] = { static int* _orderTable[2] = {
NULL, NULL,
NULL, NULL,
}; };
// 0x519610 // 0x519610
int* _offsetTable[2] = { static int* _offsetTable[2] = {
NULL, NULL,
NULL, NULL,
}; };
// 0x519618 // 0x519618
int* _offsetDivTable = NULL; static int* _offsetDivTable = NULL;
// 0x51961C // 0x51961C
int* _offsetModTable = NULL; static int* _offsetModTable = NULL;
// 0x519620 // 0x519620
ObjectListNode** _renderTable = NULL; static ObjectListNode** _renderTable = NULL;
// Number of objects in _outlinedObjects. // Number of objects in _outlinedObjects.
// //
// 0x519624 // 0x519624
int _outlineCount = 0; static int _outlineCount = 0;
// Contains objects that are not bounded to tiles. // Contains objects that are not bounded to tiles.
// //
// 0x519628 // 0x519628
ObjectListNode* gObjectListHead = NULL; static ObjectListNode* gObjectListHead = NULL;
// 0x51962C // 0x51962C
int _centerToUpperLeft = 0; static int _centerToUpperLeft = 0;
// 0x519630 // 0x519630
int gObjectFindElevation = 0; static int gObjectFindElevation = 0;
// 0x519634 // 0x519634
int gObjectFindTile = 0; static int gObjectFindTile = 0;
// 0x519638 // 0x519638
ObjectListNode* gObjectFindLastObjectListNode = NULL; static ObjectListNode* gObjectFindLastObjectListNode = NULL;
// 0x51963C // 0x51963C
int* gObjectFids = NULL; static int* gObjectFids = NULL;
// 0x519640 // 0x519640
int gObjectFidsLength = 0; static int gObjectFidsLength = 0;
// 0x51964C // 0x51964C
Rect _light_rect[9] = { static Rect _light_rect[9] = {
{ 0, 0, 96, 42 }, { 0, 0, 96, 42 },
{ 0, 0, 160, 74 }, { 0, 0, 160, 74 },
{ 0, 0, 224, 106 }, { 0, 0, 224, 106 },
@ -101,7 +131,7 @@ Rect _light_rect[9] = {
}; };
// 0x5196DC // 0x5196DC
int _light_distance[36] = { static int _light_distance[36] = {
1, 1,
2, 2,
3, 3,
@ -141,43 +171,43 @@ int _light_distance[36] = {
}; };
// 0x51976C // 0x51976C
int gViolenceLevel = -1; static int gViolenceLevel = -1;
// 0x519770 // 0x519770
int _obj_last_roof_x = -1; static int _obj_last_roof_x = -1;
// 0x519774 // 0x519774
int _obj_last_roof_y = -1; static int _obj_last_roof_y = -1;
// 0x519778 // 0x519778
int _obj_last_elev = -1; static int _obj_last_elev = -1;
// 0x51977C // 0x51977C
int _obj_last_is_empty = 1; static int _obj_last_is_empty = 1;
// 0x519780 // 0x519780
unsigned char* _wallBlendTable = NULL; unsigned char* _wallBlendTable = NULL;
// 0x519784 // 0x519784
unsigned char* _glassBlendTable = NULL; static unsigned char* _glassBlendTable = NULL;
// 0x519788 // 0x519788
unsigned char* _steamBlendTable = NULL; static unsigned char* _steamBlendTable = NULL;
// 0x51978C // 0x51978C
unsigned char* _energyBlendTable = NULL; static unsigned char* _energyBlendTable = NULL;
// 0x519790 // 0x519790
unsigned char* _redBlendTable = NULL; static unsigned char* _redBlendTable = NULL;
// 0x519794 // 0x519794
Object* _moveBlockObj = NULL; Object* _moveBlockObj = NULL;
// 0x519798 // 0x519798
int _objItemOutlineState = 0; static int _objItemOutlineState = 0;
// 0x51979C // 0x51979C
int _cd_order[9] = { static int _cd_order[9] = {
1, 1,
0, 0,
3, 3,
@ -190,41 +220,41 @@ int _cd_order[9] = {
}; };
// 0x6391D0 // 0x6391D0
int _light_blocked[6][36]; static int _light_blocked[6][36];
// 0x639530 // 0x639530
int _light_offsets[2][6][36]; static int _light_offsets[2][6][36];
// 0x639BF0 // 0x639BF0
Rect gObjectsWindowRect; static Rect gObjectsWindowRect;
// Likely outlined objects on the screen. // Likely outlined objects on the screen.
// //
// 0x639C00 // 0x639C00
Object* _outlinedObjects[100]; static Object* _outlinedObjects[100];
// 0x639D90 // 0x639D90
Rect gObjectsUpdateAreaPixelBounds; static Rect gObjectsUpdateAreaPixelBounds;
// Contains objects that are bounded to tiles. // Contains objects that are bounded to tiles.
// //
// 0x639DA0 // 0x639DA0
ObjectListNode* gObjectListHeadByTile[HEX_GRID_SIZE]; static ObjectListNode* gObjectListHeadByTile[HEX_GRID_SIZE];
// 0x660EA0 // 0x660EA0
unsigned char _glassGrayTable[256]; static unsigned char _glassGrayTable[256];
// 0x660FA0 // 0x660FA0
unsigned char _commonGrayTable[256]; unsigned char _commonGrayTable[256];
// 0x6610A0 // 0x6610A0
int gObjectsWindowBufferSize; static int gObjectsWindowBufferSize;
// 0x6610A4 // 0x6610A4
unsigned char* gObjectsWindowBuffer; static unsigned char* gObjectsWindowBuffer;
// 0x6610A8 // 0x6610A8
int gObjectsWindowHeight; static int gObjectsWindowHeight;
// Translucent "egg" effect around player. // Translucent "egg" effect around player.
// //
@ -232,20 +262,20 @@ int gObjectsWindowHeight;
Object* gEgg; Object* gEgg;
// 0x6610B0 // 0x6610B0
int gObjectsWindowPitch; static int gObjectsWindowPitch;
// 0x6610B4 // 0x6610B4
int gObjectsWindowWidth; static int gObjectsWindowWidth;
// obj_dude // obj_dude
// 0x6610B8 // 0x6610B8
Object* gDude; Object* gDude;
// 0x6610BC // 0x6610BC
char _obj_seen_check[5001]; static char _obj_seen_check[5001];
// 0x662445 // 0x662445
char _obj_seen[5001]; static char _obj_seen[5001];
// obj_init // obj_init
// 0x488780 // 0x488780
@ -432,7 +462,7 @@ int objectLoadAll(File* stream)
} }
// 0x488CF8 // 0x488CF8
int objectLoadAllInternal(File* stream) static int objectLoadAllInternal(File* stream)
{ {
if (stream == NULL) { if (stream == NULL) {
return -1; return -1;
@ -562,7 +592,7 @@ int objectLoadAllInternal(File* stream)
} }
// 0x48909C // 0x48909C
void _obj_fix_combat_cid_for_dude() static void _obj_fix_combat_cid_for_dude()
{ {
Object** critterList; Object** critterList;
int critterListLength = objectListCreate(-1, gElevation, OBJ_TYPE_CRITTER, &critterList); int critterListLength = objectListCreate(-1, gElevation, OBJ_TYPE_CRITTER, &critterList);
@ -587,7 +617,7 @@ void _obj_fix_combat_cid_for_dude()
// Fixes ammo pid and number of charges. // Fixes ammo pid and number of charges.
// //
// 0x48911C // 0x48911C
void _object_fix_weapon_ammo(Object* obj) static void _object_fix_weapon_ammo(Object* obj)
{ {
if ((obj->pid >> 24) != OBJ_TYPE_ITEM) { if ((obj->pid >> 24) != OBJ_TYPE_ITEM) {
return; return;
@ -631,7 +661,7 @@ void _object_fix_weapon_ammo(Object* obj)
} }
// 0x489200 // 0x489200
int objectWrite(Object* obj, File* stream) static int objectWrite(Object* obj, File* stream)
{ {
if (fileWriteInt32(stream, obj->id) == -1) return -1; if (fileWriteInt32(stream, obj->id) == -1) return -1;
if (fileWriteInt32(stream, obj->tile) == -1) return -1; if (fileWriteInt32(stream, obj->tile) == -1) return -1;
@ -3243,7 +3273,7 @@ void _obj_preload_art_cache(int flags)
} }
// 0x48CB88 // 0x48CB88
int _obj_offset_table_init() static int _obj_offset_table_init()
{ {
int i; int i;
@ -3330,7 +3360,7 @@ err:
} }
// 0x48CDA0 // 0x48CDA0
void _obj_offset_table_exit() static void _obj_offset_table_exit()
{ {
if (_offsetModTable != NULL) { if (_offsetModTable != NULL) {
internal_free(_offsetModTable); internal_free(_offsetModTable);
@ -3354,7 +3384,7 @@ void _obj_offset_table_exit()
} }
// 0x48CE10 // 0x48CE10
int _obj_order_table_init() static int _obj_order_table_init()
{ {
if (_orderTable[0] != NULL || _orderTable[1] != NULL) { if (_orderTable[0] != NULL || _orderTable[1] != NULL) {
return -1; return -1;
@ -3389,7 +3419,7 @@ err:
} }
// 0x48CF20 // 0x48CF20
int _obj_order_comp_func_even(const void* a1, const void* a2) static int _obj_order_comp_func_even(const void* a1, const void* a2)
{ {
int v1 = *(int*)a1; int v1 = *(int*)a1;
int v2 = *(int*)a2; int v2 = *(int*)a2;
@ -3397,7 +3427,7 @@ int _obj_order_comp_func_even(const void* a1, const void* a2)
} }
// 0x48CF38 // 0x48CF38
int _obj_order_comp_func_odd(const void* a1, const void* a2) static int _obj_order_comp_func_odd(const void* a1, const void* a2)
{ {
int v1 = *(int*)a1; int v1 = *(int*)a1;
int v2 = *(int*)a2; int v2 = *(int*)a2;
@ -3407,7 +3437,7 @@ int _obj_order_comp_func_odd(const void* a1, const void* a2)
// NOTE: Inlined. // NOTE: Inlined.
// //
// 0x48CF50 // 0x48CF50
void _obj_order_table_exit() static void _obj_order_table_exit()
{ {
if (_orderTable[1] != NULL) { if (_orderTable[1] != NULL) {
internal_free(_orderTable[1]); internal_free(_orderTable[1]);
@ -3421,7 +3451,7 @@ void _obj_order_table_exit()
} }
// 0x48CF8C // 0x48CF8C
int _obj_render_table_init() static int _obj_render_table_init()
{ {
if (_renderTable != NULL) { if (_renderTable != NULL) {
return -1; return -1;
@ -3442,7 +3472,7 @@ int _obj_render_table_init()
// NOTE: Inlined. // NOTE: Inlined.
// //
// 0x48D000 // 0x48D000
void _obj_render_table_exit() static void _obj_render_table_exit()
{ {
if (_renderTable != NULL) { if (_renderTable != NULL) {
internal_free(_renderTable); internal_free(_renderTable);
@ -3451,7 +3481,7 @@ void _obj_render_table_exit()
} }
// 0x48D020 // 0x48D020
void _obj_light_table_init() static void _obj_light_table_init()
{ {
for (int s = 0; s < 2; s++) { for (int s = 0; s < 2; s++) {
int v4 = gCenterTile + s; int v4 = gCenterTile + s;
@ -3472,7 +3502,7 @@ void _obj_light_table_init()
} }
// 0x48D1E4 // 0x48D1E4
void _obj_blend_table_init() static void _obj_blend_table_init()
{ {
for (int index = 0; index < 256; index++) { for (int index = 0; index < 256; index++) {
int r = (_Color2RGB_(index) & 0x7C00) >> 10; int r = (_Color2RGB_(index) & 0x7C00) >> 10;
@ -3495,7 +3525,7 @@ void _obj_blend_table_init()
// NOTE: Inlined. // NOTE: Inlined.
// //
// 0x48D2E8 // 0x48D2E8
void _obj_blend_table_exit() static void _obj_blend_table_exit()
{ {
_freeColorBlendTable(_colorTable[25439]); _freeColorBlendTable(_colorTable[25439]);
_freeColorBlendTable(_colorTable[10239]); _freeColorBlendTable(_colorTable[10239]);
@ -3505,7 +3535,7 @@ void _obj_blend_table_exit()
} }
// 0x48D348 // 0x48D348
int _obj_save_obj(File* stream, Object* object) static int _obj_save_obj(File* stream, Object* object)
{ {
if ((object->flags & OBJECT_TEMPORARY) != 0) { if ((object->flags & OBJECT_TEMPORARY) != 0) {
return 0; return 0;
@ -3554,7 +3584,7 @@ int _obj_save_obj(File* stream, Object* object)
} }
// 0x48D414 // 0x48D414
int _obj_load_obj(File* stream, Object** objectPtr, int elevation, Object* owner) static int _obj_load_obj(File* stream, Object** objectPtr, int elevation, Object* owner)
{ {
Object* obj; Object* obj;
@ -3722,7 +3752,7 @@ int _obj_load_dude(File* stream)
} }
// 0x48D778 // 0x48D778
int objectAllocate(Object** objectPtr) static int objectAllocate(Object** objectPtr)
{ {
if (objectPtr == NULL) { if (objectPtr == NULL) {
return -1; return -1;
@ -3750,7 +3780,7 @@ int objectAllocate(Object** objectPtr)
// NOTE: Inlined. // NOTE: Inlined.
// //
// 0x48D7F8 // 0x48D7F8
void objectDeallocate(Object** objectPtr) static void objectDeallocate(Object** objectPtr)
{ {
if (objectPtr == NULL) { if (objectPtr == NULL) {
return; return;
@ -3768,7 +3798,7 @@ void objectDeallocate(Object** objectPtr)
// NOTE: Inlined. // NOTE: Inlined.
// //
// 0x48D818 // 0x48D818
int objectListNodeCreate(ObjectListNode** nodePtr) static int objectListNodeCreate(ObjectListNode** nodePtr)
{ {
if (nodePtr == NULL) { if (nodePtr == NULL) {
return -1; return -1;
@ -3788,7 +3818,7 @@ int objectListNodeCreate(ObjectListNode** nodePtr)
// NOTE: Inlined. // NOTE: Inlined.
// //
// 0x48D84C // 0x48D84C
void objectListNodeDestroy(ObjectListNode** nodePtr) static void objectListNodeDestroy(ObjectListNode** nodePtr)
{ {
if (nodePtr == NULL) { if (nodePtr == NULL) {
return; return;
@ -3804,7 +3834,7 @@ void objectListNodeDestroy(ObjectListNode** nodePtr)
} }
// 0x48D86C // 0x48D86C
int objectGetListNode(Object* object, ObjectListNode** nodePtr, ObjectListNode** previousNodePtr) static int objectGetListNode(Object* object, ObjectListNode** nodePtr, ObjectListNode** previousNodePtr)
{ {
if (object == NULL) { if (object == NULL) {
return -1; return -1;
@ -3850,7 +3880,7 @@ int objectGetListNode(Object* object, ObjectListNode** nodePtr, ObjectListNode**
} }
// 0x48D8E8 // 0x48D8E8
void _obj_insert(ObjectListNode* objectListNode) static void _obj_insert(ObjectListNode* objectListNode)
{ {
ObjectListNode** objectListNodePtr; ObjectListNode** objectListNodePtr;
@ -3911,7 +3941,7 @@ void _obj_insert(ObjectListNode* objectListNode)
} }
// 0x48DA58 // 0x48DA58
int _obj_remove(ObjectListNode* a1, ObjectListNode* a2) static int _obj_remove(ObjectListNode* a1, ObjectListNode* a2)
{ {
if (a1->obj == NULL) { if (a1->obj == NULL) {
return -1; return -1;
@ -3951,7 +3981,7 @@ int _obj_remove(ObjectListNode* a1, ObjectListNode* a2)
} }
// 0x48DB28 // 0x48DB28
int _obj_connect_to_tile(ObjectListNode* node, int tile, int elevation, Rect* rect) static int _obj_connect_to_tile(ObjectListNode* node, int tile, int elevation, Rect* rect)
{ {
if (node == NULL) { if (node == NULL) {
return -1; return -1;
@ -3983,7 +4013,7 @@ int _obj_connect_to_tile(ObjectListNode* node, int tile, int elevation, Rect* re
} }
// 0x48DC28 // 0x48DC28
int _obj_adjust_light(Object* obj, int a2, Rect* rect) static int _obj_adjust_light(Object* obj, int a2, Rect* rect)
{ {
if (obj == NULL) { if (obj == NULL) {
return -1; return -1;
@ -4649,7 +4679,7 @@ int _obj_adjust_light(Object* obj, int a2, Rect* rect)
} }
// 0x48EABC // 0x48EABC
void objectDrawOutline(Object* object, Rect* rect) static void objectDrawOutline(Object* object, Rect* rect)
{ {
CacheEntry* cacheEntry; CacheEntry* cacheEntry;
Art* art = artLock(object->fid, &cacheEntry); Art* art = artLock(object->fid, &cacheEntry);
@ -4901,7 +4931,7 @@ void objectDrawOutline(Object* object, Rect* rect)
} }
// 0x48F1B0 // 0x48F1B0
void _obj_render_object(Object* object, Rect* rect, int light) static void _obj_render_object(Object* object, Rect* rect, int light)
{ {
int type = (object->fid & 0xF000000) >> 24; int type = (object->fid & 0xF000000) >> 24;
if (artIsObjectTypeHidden(type)) { if (artIsObjectTypeHidden(type)) {
@ -5165,7 +5195,7 @@ void _obj_fix_violence_settings(int* fid)
} }
// 0x48FB08 // 0x48FB08
int _obj_preload_sort(const void* a1, const void* a2) static int _obj_preload_sort(const void* a1, const void* a2)
{ {
int v1 = *(int*)a1; int v1 = *(int*)a1;
int v2 = *(int*)a2; int v2 = *(int*)a2;

View File

@ -12,66 +12,18 @@ typedef struct ObjectWithFlags {
Object* object; Object* object;
} ObjectWithFlags; } ObjectWithFlags;
extern bool gObjectsInitialized;
extern int gObjectsUpdateAreaHexWidth;
extern int gObjectsUpdateAreaHexHeight;
extern int gObjectsUpdateAreaHexSize;
extern int* _orderTable[2];
extern int* _offsetTable[2];
extern int* _offsetModTable;
extern int* _offsetDivTable;
extern ObjectListNode** _renderTable;
extern int _outlineCount;
extern ObjectListNode* gObjectListHead;
extern int _centerToUpperLeft;
extern int gObjectFindElevation;
extern int gObjectFindTile;
extern ObjectListNode* gObjectFindLastObjectListNode;
extern int* gObjectFids;
extern int gObjectFidsLength;
extern Rect _light_rect[9];
extern int _light_distance[36];
extern int gViolenceLevel;
extern int _obj_last_roof_x;
extern int _obj_last_roof_y;
extern int _obj_last_elev;
extern int _obj_last_is_empty;
extern unsigned char* _wallBlendTable; extern unsigned char* _wallBlendTable;
extern unsigned char* _glassBlendTable;
extern unsigned char* _steamBlendTable;
extern unsigned char* _energyBlendTable;
extern unsigned char* _redBlendTable;
extern Object* _moveBlockObj; extern Object* _moveBlockObj;
extern int _objItemOutlineState;
extern int _cd_order[9];
extern int _light_blocked[6][36];
extern int _light_offsets[2][6][36];
extern Rect gObjectsWindowRect;
extern Object* _outlinedObjects[100];
extern Rect gObjectsUpdateAreaPixelBounds;
extern ObjectListNode* gObjectListHeadByTile[HEX_GRID_SIZE];
extern unsigned char _glassGrayTable[256];
extern unsigned char _commonGrayTable[256]; extern unsigned char _commonGrayTable[256];
extern int gObjectsWindowBufferSize;
extern unsigned char* gObjectsWindowBuffer;
extern int gObjectsWindowHeight;
extern Object* gEgg; extern Object* gEgg;
extern int gObjectsWindowPitch;
extern int gObjectsWindowWidth;
extern Object* gDude; extern Object* gDude;
extern char _obj_seen_check[5001];
extern char _obj_seen[5001];
int objectsInit(unsigned char* buf, int width, int height, int pitch); int objectsInit(unsigned char* buf, int width, int height, int pitch);
void objectsReset(); void objectsReset();
void objectsExit(); void objectsExit();
int objectRead(Object* obj, File* stream); int objectRead(Object* obj, File* stream);
int objectLoadAll(File* stream); int objectLoadAll(File* stream);
int objectLoadAllInternal(File* stream);
void _obj_fix_combat_cid_for_dude();
void _object_fix_weapon_ammo(Object* obj);
int objectWrite(Object* obj, File* stream);
int objectSaveAll(File* stream); int objectSaveAll(File* stream);
void _obj_render_pre_roof(Rect* rect, int elevation); void _obj_render_pre_roof(Rect* rect, int elevation);
void _obj_render_post_roof(Rect* rect, int elevation); void _obj_render_post_roof(Rect* rect, int elevation);
@ -140,33 +92,8 @@ void _obj_process_seen();
char* objectGetName(Object* obj); char* objectGetName(Object* obj);
char* objectGetDescription(Object* obj); char* objectGetDescription(Object* obj);
void _obj_preload_art_cache(int flags); void _obj_preload_art_cache(int flags);
int _obj_offset_table_init();
void _obj_offset_table_exit();
int _obj_order_table_init();
int _obj_order_comp_func_even(const void* a1, const void* a2);
int _obj_order_comp_func_odd(const void* a1, const void* a2);
void _obj_order_table_exit();
int _obj_render_table_init();
void _obj_render_table_exit();
void _obj_light_table_init();
void _obj_blend_table_init();
void _obj_blend_table_exit();
int _obj_save_obj(File* stream, Object* object);
int _obj_load_obj(File* stream, Object** objectPtr, int elevation, Object* owner);
int _obj_save_dude(File* stream); int _obj_save_dude(File* stream);
int _obj_load_dude(File* stream); int _obj_load_dude(File* stream);
int objectAllocate(Object** objectPtr);
void objectDeallocate(Object** objectPtr);
int objectListNodeCreate(ObjectListNode** nodePtr);
void objectListNodeDestroy(ObjectListNode** nodePtr);
int objectGetListNode(Object* obj, ObjectListNode** out_node, ObjectListNode** out_prev_node);
void _obj_insert(ObjectListNode* ptr);
int _obj_remove(ObjectListNode* a1, ObjectListNode* a2);
int _obj_connect_to_tile(ObjectListNode* node, int tile_index, int elev, Rect* rect);
int _obj_adjust_light(Object* obj, int a2, Rect* rect);
void objectDrawOutline(Object* object, Rect* rect);
void _obj_render_object(Object* object, Rect* rect, int light);
void _obj_fix_violence_settings(int* fid); void _obj_fix_violence_settings(int* fid);
int _obj_preload_sort(const void* a1, const void* a2);
#endif /* OBJECT_H */ #endif /* OBJECT_H */