Files
3d-pinball-space-cadet/Classes/Objlist/Objlist.cpp
T

83 lines
1.4 KiB
C++

#include "pinball.h"
//----- (01012E51) --------------------------------------------------------
int __stdcall objlist_add_object(_DWORD *a1, int a2)
{
int v2; // ecx
v2 = a1[1];
if ( v2 >= *a1 )
return 0;
a1[v2 + 2] = a2;
return ++a1[1];
}
//----- (01012E7A) --------------------------------------------------------
signed int __stdcall objlist_delete_object(int a1, int a2)
{
int v2; // edx
int v3; // ecx
_DWORD *v4; // esi
v2 = *(_DWORD *)(a1 + 4);
v3 = v2 - 1;
if ( v2 - 1 < 0 )
return 0;
v4 = (_DWORD *)(a1 + 4 * v3 + 8);
while ( *v4 != a2 )
{
--v3;
--v4;
if ( v3 < 0 )
return 0;
}
*(_DWORD *)(a1 + 4 * v3 + 8) = *(_DWORD *)(a1 + 4 * v2 + 4);
--*(_DWORD *)(a1 + 4);
return 1;
}
//----- (01012EBE) --------------------------------------------------------
_DWORD *__stdcall objlist_new(int a1)
{
_DWORD *result; // eax
result = (_DWORD *)memoryallocate(4 * a1 + 12);
if ( result )
{
result[1] = 0;
*result = a1;
}
return result;
}
//----- (01012EE8) --------------------------------------------------------
int *__stdcall objlist_grow(int *a1, int a2)
{
int *v2; // esi
int v3; // eax
int *v4; // eax
v2 = a1;
if ( a1 )
{
v3 = a2 + a1[1];
if ( v3 > *a1 )
{
v4 = (int *)memoryrealloc((int)a1, 4 * v3 + 12);
if ( v4 )
{
v2 = v4;
*v4 = a2 + v4[1];
}
}
}
return v2;
}
//----- (01013C6F) --------------------------------------------------------
void __stdcall objlist_destroy(int a1)
{
if ( a1 )
memoryfree(a1);
}