0
|
1 #pragma once
|
|
2 #include "OSAPI.h"
|
|
3
|
|
4 #include "VectorTypes.h"
|
|
5
|
|
6
|
|
7
|
|
8 /* 107 */
|
|
9 #pragma pack(push, 1)
|
|
10 struct ThreadWard
|
|
11 {
|
|
12 //----- (00438B0B) --------------------------------------------------------
|
|
13 inline ThreadWard()
|
|
14 {
|
|
15 InitializeCriticalSection(&csAsyncMouse);
|
|
16 InitializeCriticalSection(&cs2);
|
|
17 InitializeCriticalSection(&cs3);
|
|
18 InitializeCriticalSection(&csAsyncKeyboard);
|
|
19 }
|
|
20
|
|
21 //----- (00438B54) --------------------------------------------------------
|
|
22 virtual ~ThreadWard()
|
|
23 {
|
|
24 ThreadWard *v1; // esi@1
|
|
25
|
|
26 v1 = this;
|
|
27 //this->vdestructor_ptr = &ThreadWard_destructors;
|
|
28 DeleteCriticalSection(&this->csAsyncKeyboard);
|
|
29 DeleteCriticalSection(&v1->cs3);
|
|
30 DeleteCriticalSection(&v1->cs2);
|
|
31 DeleteCriticalSection(&v1->csAsyncMouse);
|
|
32 }
|
|
33
|
|
34 void (__thiscall ***vdestructor_ptr)(ThreadWard *, bool);
|
|
35 _RTL_CRITICAL_SECTION csAsyncMouse;
|
|
36 _RTL_CRITICAL_SECTION cs2;
|
|
37 _RTL_CRITICAL_SECTION cs3;
|
|
38 _RTL_CRITICAL_SECTION csAsyncKeyboard;
|
|
39 };
|
|
40 #pragma pack(pop)
|
|
41
|
|
42 /* 106 */
|
|
43 #pragma pack(push, 1)
|
|
44 struct Mouse
|
|
45 {
|
|
46 //----- (00467E4E) --------------------------------------------------------
|
|
47 inline Mouse(ThreadWard *pWard)
|
|
48 {
|
|
49 uCursorTextureID = 0;
|
|
50 uCursorTextureID_2 = 0;
|
|
51 hWnd = 0;
|
|
52 pCursorBitmap_sysmem = 0;
|
|
53 field_34 = 0;
|
|
54 pCursorBitmap2_sysmem = 0;
|
|
55 pCursorBitmap3_sysmembits_16bit = 0;
|
|
56 ptr_90 = 0;
|
|
57 pWard = pWard;
|
|
58 }
|
|
59
|
|
60 void GetClickPos(unsigned int *pX, unsigned int *pY);
|
|
61 void RemoveHoldingItem();
|
|
62 void SetCursorBitmapFromItemID(unsigned int uItemID);
|
|
63 void SetCurrentCursorBitmap();
|
|
64 void SetCursorBitmap(const char *pName);
|
|
65 LONG _469AE4();
|
|
66 void ClearCursor();
|
|
67 void AllocCursorSystemMem();
|
|
68 void *DoAllocCursorMem();
|
|
69 POINT *GetCursorPos(POINT *p);
|
|
70 void Initialize(HWND hWnd);
|
|
71 void Deactivate();
|
|
72 void DrawCursor();
|
|
73 void _469E1C();
|
|
74 void _469E24();
|
|
75 unsigned __int16 *_469E3B();
|
|
76 void _469EA4();
|
|
77 void Activate(int bActive);
|
|
78 void SetMouseClick(int x, int y);
|
|
79
|
|
80
|
|
81 unsigned int uPointingObjectID;
|
|
82 unsigned int bActive;
|
|
83 int field_8;
|
|
84 int field_C;
|
|
85 unsigned int bInitialized;
|
|
86 int field_14;
|
|
87 int field_18;
|
|
88 int field_1C;
|
|
89 int field_20;
|
|
90 unsigned int uCursorTextureID;
|
|
91 unsigned int uCursorTextureID_2;
|
|
92 HWND hWnd;
|
|
93 unsigned __int16 *pCursorBitmap_sysmem;
|
|
94 int field_34;
|
|
95 unsigned __int8 *pCursorBitmap2_sysmem;
|
|
96 unsigned __int16 *pCursorBitmap3_sysmembits_16bit;
|
|
97 int field_40;
|
|
98 int field_44;
|
|
99 int field_48;
|
|
100 int field_4C;
|
|
101 int field_50;
|
|
102 int field_54;
|
|
103 int uCursorBitmapPitch;
|
|
104 int field_5C[13];
|
|
105 void *ptr_90;
|
|
106 int field_94;
|
|
107 int field_98;
|
|
108 int field_9C;
|
|
109 int field_A0;
|
|
110 int field_A4;
|
|
111 int field_A8;
|
|
112 int field_AC;
|
|
113 int field_B0;
|
|
114 int field_B4;
|
|
115 int field_B8;
|
|
116 int field_BC;
|
|
117 int field_C0;
|
|
118 Vec2_int_ pCursorBitmapPos;
|
|
119 int uCursorBitmapWidth;
|
|
120 int uCursorBitmapHeight;
|
|
121 int field_D4;
|
|
122 int field_D8;
|
|
123 int field_DC;
|
|
124 int field_E0;
|
|
125 Vec4_int_ pCursorBitmapRect;
|
|
126 char field_F4;
|
|
127 char pCurrentCursorName[11];
|
|
128 int field_100;
|
|
129 int field_104;
|
|
130 unsigned int uMouseClickX;
|
|
131 unsigned int uMouseClickY;
|
|
132 ThreadWard *pWard;
|
|
133 };
|
|
134 #pragma pack(pop)
|
|
135
|
|
136
|
|
137 #pragma pack(push, 1)
|
|
138 struct AsyncMouse
|
|
139 {
|
|
140 AsyncMouse(struct IDirectDrawSurface *);
|
|
141 ~AsyncMouse();
|
|
142
|
|
143 char Initialize(LPVOID lpParameter);
|
|
144 char LoadCursor(const char *pContainer);
|
|
145 char LoadCursorImage();
|
|
146 char _46B072();
|
|
147 char CreateDisrectInputMouse();
|
|
148 int _46B0ED();
|
|
149 void Resume();
|
|
150 void Suspend();
|
|
151 char _46B1DD();
|
|
152 bool DrawCursor(struct Texture *a1, struct IDirectDrawSurface4 *a2, int a3);
|
|
153 bool _46B289(int a2, char a3);
|
|
154 void SetHotspot(float hotspotx, float hotspoty);
|
|
155 int UpdateData(int a2);
|
|
156 char Thread();
|
|
157 void _46B492(int a2);
|
|
158 void _46B5D5(int a2);
|
|
159 void _46B736_consume_click_lists(char a2);
|
|
160 void _46B76F();
|
|
161 void _46B879();
|
|
162 int _46B944();
|
|
163 char _46B958(int a2, int a3);
|
|
164 char _46BA8D(int a2, int a3);
|
|
165 void _46BAEC();
|
|
166 void _46BB0A();
|
|
167 void *Clip();
|
|
168 void dtor_sub_46BC73();
|
|
169 int _46BCAB();
|
|
170 int unk_46BCD2(int a2, int a3, int a4);
|
|
171 void *unk_46BD09(void *a1, void *a2);
|
|
172 int unk_46BD2D(int a2, void *a3);
|
|
173 int unk_46BD66(int a1, int a2);
|
|
174
|
|
175 static void __stdcall AsyncMouseThread(int a1);
|
|
176
|
|
177 void _409E3D(char a2);
|
|
178 void Release();
|
|
179 };
|
|
180 #pragma pack(pop)
|
|
181
|
|
182
|
|
183
|
|
184
|
|
185 extern Mouse *pMouse;
|
|
186 extern AsyncMouse *pAsyncMouse; |