Comprehensive Decompile/Organization
IDA Pro / Hex Rays Decompiler Organized source by C/C++ [Class] and by prefix
This commit is contained in:
1 parent
43a2b21d73
commit
6c7361c45c
84 files changed
+30453
No files matched your search
@@ -0,0 +1,195 @@
|
||||
//
|
||||
// Created by neo on 2019-08-15.
|
||||
|
||||
#include "TLightBargraph.h"
|
||||
|
||||
//----- (0100AA81) --------------------------------------------------------
|
||||
TZmapList *__thiscall TLightBargraph::~TLightBargraph(TLightBargraph *this)
|
||||
{
|
||||
TLightGroup *v1; // esi
|
||||
int v2; // eax
|
||||
|
||||
v1 = this;
|
||||
v2 = *(_DWORD *)((char *)this + 138);
|
||||
*(_DWORD *)this = &TLightBargraph::`vftable';
|
||||
if ( v2 )
|
||||
memoryfree(v2);
|
||||
return TLightGroup::~TLightGroup(v1);
|
||||
}
|
||||
// 1001A30: using guessed type void *TLightBargraph::`vftable';
|
||||
|
||||
//----- (0100AAA9) --------------------------------------------------------
|
||||
void __thiscall TLightBargraph::Reset(TLightBargraph *this)
|
||||
{
|
||||
TLightBargraph *v1; // edi
|
||||
_DWORD *v2; // esi
|
||||
|
||||
v1 = this;
|
||||
v2 = (_DWORD *)((char *)this + 142);
|
||||
if ( *(_DWORD *)((char *)this + 142) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 142));
|
||||
*v2 = 0;
|
||||
}
|
||||
*(_DWORD *)((char *)v1 + 146) = 0;
|
||||
TLightGroup::Reset(v1);
|
||||
}
|
||||
|
||||
//----- (0100AAD9) --------------------------------------------------------
|
||||
void __stdcall TLightBargraph::BargraphTimerExpired(int a1, void *a2)
|
||||
{
|
||||
int v2; // eax
|
||||
float v3; // ST04_4
|
||||
|
||||
v2 = *(_DWORD *)((char *)a2 + 146);
|
||||
*(_DWORD *)((char *)a2 + 142) = 0;
|
||||
if ( v2 )
|
||||
{
|
||||
v3 = (double)(v2 - 1);
|
||||
(**(void (__thiscall ***)(void *, signed int, _DWORD))a2)(a2, 45, LODWORD(v3));
|
||||
control_handler(60, (struct TPinballComponent *)a2);
|
||||
}
|
||||
else
|
||||
{
|
||||
(**(void (__thiscall ***)(void *, signed int, _DWORD))a2)(a2, 20, 0.0);
|
||||
control_handler(47, (struct TPinballComponent *)a2);
|
||||
}
|
||||
}
|
||||
|
||||
//----- (0100AB28) --------------------------------------------------------
|
||||
int __thiscall TLightBargraph::Message(TLightBargraph *this, int a2, float a3)
|
||||
{
|
||||
TLightBargraph *v3; // esi
|
||||
int v4; // ecx
|
||||
_DWORD *v5; // eax
|
||||
_DWORD *v6; // edi
|
||||
float v7; // ST0C_4
|
||||
int v8; // ebx
|
||||
int v9; // eax
|
||||
float v10; // ST08_4
|
||||
int v11; // eax
|
||||
signed int v13; // [esp+20h] [ebp+Ch]
|
||||
|
||||
v3 = this;
|
||||
switch ( a2 )
|
||||
{
|
||||
case 37:
|
||||
return *(_DWORD *)((char *)this + 146);
|
||||
case 45:
|
||||
if ( *(_DWORD *)((char *)this + 142) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 142));
|
||||
*(_DWORD *)((char *)v3 + 142) = 0;
|
||||
}
|
||||
v8 = (signed __int64)_floor(a3);
|
||||
v9 = 2 * *(_DWORD *)(*(_DWORD *)((char *)v3 + 46) + 4);
|
||||
if ( v8 >= v9 )
|
||||
v8 = v9 - 1;
|
||||
if ( v8 >= 0 )
|
||||
{
|
||||
v10 = (double)(v8 / 2);
|
||||
TLightGroup::Message(v3, 45, v10);
|
||||
if ( !(v8 & 1) )
|
||||
TLightGroup::Message(v3, 46, 0.0);
|
||||
v11 = *(_DWORD *)((char *)v3 + 138);
|
||||
if ( v11 )
|
||||
*(_DWORD *)((char *)v3 + 142) = timer_set(
|
||||
*(float *)(v11 + 4 * v8),
|
||||
(int)v3,
|
||||
(int)TLightBargraph::BargraphTimerExpired);
|
||||
*(_DWORD *)((char *)v3 + 146) = v8;
|
||||
}
|
||||
else
|
||||
{
|
||||
TLightGroup::Message(v3, 20, 0.0);
|
||||
*(_DWORD *)((char *)v3 + 146) = 0;
|
||||
}
|
||||
break;
|
||||
case 1011:
|
||||
(*(void (**)(void))(*(_DWORD *)this + 20))();
|
||||
break;
|
||||
case 1020:
|
||||
v6 = (_DWORD *)((char *)this + 142);
|
||||
if ( *(_DWORD *)((char *)this + 142) )
|
||||
{
|
||||
timer_kill(*(_DWORD *)((char *)this + 142));
|
||||
*v6 = 0;
|
||||
}
|
||||
*(_DWORD *)((char *)v3 + 4 * *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 218) + 150) = *(_DWORD *)((char *)v3 + 146);
|
||||
(*(void (__thiscall **)(TLightBargraph *))(*(_DWORD *)v3 + 20))(v3);
|
||||
v13 = *(_DWORD *)((char *)v3 + 4 * (unsigned __int64)(signed __int64)_floor(a3) + 150);
|
||||
*(_DWORD *)((char *)v3 + 146) = v13;
|
||||
if ( v13 )
|
||||
{
|
||||
v7 = (double)v13;
|
||||
TLightBargraph::Message(v3, 45, v7);
|
||||
}
|
||||
break;
|
||||
case 1024:
|
||||
(*(void (**)(void))(*(_DWORD *)this + 20))();
|
||||
v4 = 0;
|
||||
if ( *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 214) > 0 )
|
||||
{
|
||||
v5 = (_DWORD *)((char *)v3 + 150);
|
||||
do
|
||||
{
|
||||
*v5 = *(_DWORD *)((char *)v3 + 146);
|
||||
++v4;
|
||||
++v5;
|
||||
}
|
||||
while ( v4 < *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 214) );
|
||||
}
|
||||
TLightGroup::Message(v3, 1024, a3);
|
||||
break;
|
||||
default:
|
||||
TLightGroup::Message(this, a2, a3);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//----- (0100AE72) --------------------------------------------------------
|
||||
TLightBargraph *__thiscall TLightBargraph::TLightBargraph(TLightBargraph *this, struct TPinballTable *a2, int a3)
|
||||
{
|
||||
TLightBargraph *v3; // esi
|
||||
float *v4; // ebx
|
||||
int v5; // edi
|
||||
int v6; // eax
|
||||
int i; // eax
|
||||
|
||||
v3 = this;
|
||||
TLightGroup::TLightGroup(this, a2, a3);
|
||||
*(_DWORD *)v3 = &TLightBargraph::`vftable';
|
||||
*(_DWORD *)((char *)v3 + 138) = 0;
|
||||
TLightBargraph::Reset(v3);
|
||||
if ( a3 > 0 )
|
||||
{
|
||||
v4 = (float *)loader_query_float_attribute(a3, 0, 904);
|
||||
if ( v4 )
|
||||
{
|
||||
v5 = 2 * *(_DWORD *)(*(_DWORD *)((char *)v3 + 46) + 4);
|
||||
v6 = memoryallocate(8 * *(_DWORD *)(*(_DWORD *)((char *)v3 + 46) + 4));
|
||||
*(_DWORD *)((char *)v3 + 138) = v6;
|
||||
if ( v6 )
|
||||
{
|
||||
for ( i = 0; i < v5; ++v4 )
|
||||
*(float *)(*(_DWORD *)((char *)v3 + 138) + 4 * i++) = *v4;
|
||||
}
|
||||
}
|
||||
}
|
||||
return v3;
|
||||
}
|
||||
// 1001A30: using guessed type void *TLightBargraph::`vftable';
|
||||
|
||||
//----- (0100AEF9) --------------------------------------------------------
|
||||
TLightBargraph *__thiscall TLightBargraph::`vector deleting destructor'(TLightBargraph *this, char a2)
|
||||
{
|
||||
TLightBargraph *v2; // esi
|
||||
|
||||
v2 = this;
|
||||
TLightBargraph::~TLightBargraph(this);
|
||||
if ( a2 & 1 )
|
||||
operator delete((void *)v2);
|
||||
return v2;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user