#include "TOneWay.h" //----- (01015B61) -------------------------------------------------------- int __thiscall TOneway::get_scoring(TOneway *this, int a2) { int result; // eax if ( a2 >= 6 ) result = 0; else result = *(_DWORD *)((char *)this + 4 * a2 + 86); return result; } //----- (01015B7F) -------------------------------------------------------- void __thiscall TOneway::put_scoring(TOneway *this, int a2, int a3) { if ( a2 < 6 ) *(_DWORD *)((char *)this + 4 * a2 + 86) = a3; } //----- (01018032) -------------------------------------------------------- void __thiscall TOneway::Collision(TOneway *this, struct TBall *a2, struct vector_type *a3, struct vector_type *a4, float a5, struct TEdgeSegment *a6) { TOneway *v6; // edi int v7; // edi double v8; // st7 int v9; // eax v6 = this; if ( a6 == *(struct TEdgeSegment **)((char *)this + 82) ) { TBall::not_again(a2, a6); v8 = *(float *)((char *)a2 + 70) - a5; *(_DWORD *)((char *)a2 + 42) = *(_DWORD *)a3; v9 = *((_DWORD *)a3 + 1); *(float *)((char *)a2 + 70) = v8; *(_DWORD *)((char *)a2 + 46) = v9; if ( !*(_DWORD *)(*(_DWORD *)((char *)v6 + 30) + 370) ) { if ( *(_DWORD *)((char *)v6 + 74) ) loader_play_sound(*(_DWORD *)((char *)v6 + 74)); control_handler(63, v6); } } else if ( *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 370) ) { basic_collision(a2, a3, a4, *(float *)((char *)this + 54), *(float *)((char *)this + 58), 1000000000.0, 0.0); } else if ( basic_collision( a2, a3, a4, *(float *)((char *)this + 54), *(float *)((char *)this + 58), *(float *)((char *)this + 66), *(float *)((char *)this + 62)) > 0.2 ) { v7 = *(_DWORD *)((char *)v6 + 70); if ( v7 ) loader_play_sound(v7); } } //----- (01019204) -------------------------------------------------------- TOneway *__thiscall TOneway::TOneway(TOneway *this, struct TPinballTable *a2, int a3) { TLine *v3; // edi TOneway *v4; // esi TLine *v5; // eax TLine *v6; // eax TLine *v7; // eax float v8; // ST10_4 char v10; // [esp+10h] [ebp-60h] int v11; // [esp+18h] [ebp-58h] int *v12; // [esp+1Ch] [ebp-54h] unsigned int v13; // [esp+44h] [ebp-2Ch] int v14; // [esp+58h] [ebp-18h] int v15; // [esp+5Ch] [ebp-14h] int v16; // [esp+64h] [ebp-Ch] int v17; // [esp+68h] [ebp-8h] v3 = 0; v4 = this; TCollisionComponent::TCollisionComponent(this, a2, a3, 0); *(_DWORD *)v4 = &TOneway::vftable; loader_query_visual(a3, 0, &v10); if ( v11 == 2 ) { v16 = *v12; v17 = v12[1]; v14 = v12[2]; v15 = v12[3]; v5 = (TLine *)operator new(0x55u); if ( v5 ) v3 = TLine::TLine(v5, v4, (char *)v4 + 5, v13, (struct vector_type *)&v16, (struct vector_type *)&v14); if ( v3 ) { TLine::Offset(v3, *(float *)((char *)a2 + 282)); (*(void (__thiscall **)(TLine *))(*(_DWORD *)v3 + 8))(v3); objlist_class::Add((TOneway *)((char *)v4 + 42), (void *)v3); } v6 = (TLine *)operator new(0x55u); if ( v6 ) v7 = TLine::TLine(v6, v4, (char *)v4 + 5, v13, (struct vector_type *)&v14, (struct vector_type *)&v16); else v7 = 0; *(_DWORD *)((char *)v4 + 82) = v7; if ( v7 ) { v8 = -(*(float *)((char *)a2 + 282) * 0.8); TLine::Offset(v7, v8); (*(void (**)(void))(**(_DWORD **)((char *)v4 + 82) + 8))(); objlist_class::Add((TOneway *)((char *)v4 + 42), *(void **)((char *)v4 + 82)); } } return v4; } // 1002530: using guessed type void *TOneway::vftable; //----- (0101AAA7) -------------------------------------------------------- TOneway *__thiscall TOneway::`scalar deleting destructor`(TOneway *this, char a2) { TOneway *v2; // esi v2 = this; TCollisionComponent::~TCollisionComponent(this); if ( a2 & 1 ) operator delete((void *)v2); return v2; }