0
|
1 #pragma once
|
|
2 #include "OSAPI.h" // messagebox
|
|
3
|
|
4 #include "VectorTypes.h"
|
|
5
|
|
6
|
|
7 /* 257 */
|
|
8 #pragma pack(push, 1)
|
|
9 struct StationaryLight
|
|
10 {
|
|
11 Vec3_short_ vPosition;
|
|
12 __int16 uRadius;
|
|
13 unsigned __int8 uLightColorR;
|
|
14 unsigned __int8 uLightColorG;
|
|
15 unsigned __int8 uLightColorB;
|
|
16 char uLightType;
|
|
17 };
|
|
18 #pragma pack(pop)
|
|
19
|
|
20
|
|
21
|
|
22
|
|
23 #pragma pack(push, 1)
|
|
24 struct MobileLight
|
|
25 {
|
|
26 Vec3_short_ vPosition;
|
|
27 __int16 uRadius;
|
|
28 unsigned __int8 uLightColorR;
|
|
29 unsigned __int8 uLightColorG;
|
|
30 unsigned __int8 uLightColorB;
|
|
31 char uLightType;
|
|
32 __int16 field_C;
|
|
33 __int16 uSectorID;
|
|
34 __int16 field_10;
|
|
35 };
|
|
36 #pragma pack(pop)
|
|
37
|
|
38
|
|
39
|
|
40 /*
|
|
41 #pragma pack(push, 1)
|
|
42 struct LightStack<T>
|
|
43 {
|
|
44 int field_0;
|
|
45 char T[400];
|
|
46 unsigned int uNumLightsActive;
|
|
47 };
|
|
48 #pragma pack(pop)*/
|
|
49
|
|
50
|
|
51
|
|
52 /* 260 */
|
|
53 #pragma pack(push, 1)
|
|
54 struct LightsStack_StationaryLight_
|
|
55 {
|
|
56 //----- (004AD385) --------------------------------------------------------
|
|
57 LightsStack_StationaryLight_()
|
|
58 {
|
|
59 uNumLightsActive = 0;
|
|
60 }
|
|
61
|
|
62 //----- (004AD395) --------------------------------------------------------
|
|
63 virtual ~LightsStack_StationaryLight_()
|
|
64 {
|
|
65 uNumLightsActive = 0;
|
|
66 }
|
|
67
|
|
68 //----- (004AD39D) --------------------------------------------------------
|
|
69 inline unsigned int GetNumLights()
|
|
70 {
|
|
71 return uNumLightsActive;
|
|
72 }
|
|
73
|
|
74 //----- (004AD3C8) --------------------------------------------------------
|
|
75 inline bool AddLight(__int16 x, __int16 y, __int16 z, __int16 a5, unsigned char r, unsigned char g, unsigned char b, char uLightType)
|
|
76 {
|
|
77 unsigned int v9; // eax@1
|
|
78 std::string v11; // [sp-18h] [bp-18h]@3
|
|
79
|
|
80 v9 = this->uNumLightsActive;
|
|
81 if ( (signed int)v9 >= 400 )
|
|
82 {
|
|
83 MessageBoxW(nullptr, L"Too many stationary lights!", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\StationaryLightStack.cpp:45", 0);
|
|
84 return false;
|
|
85 }
|
|
86
|
|
87 auto pLight = &pLights[uNumLightsActive++];
|
|
88 pLight->vPosition.x = x;
|
|
89 pLight->vPosition.y = y;
|
|
90 pLight->vPosition.z = z;
|
|
91 pLight->uRadius = a5;
|
|
92 pLight->uLightColorR = (unsigned __int8)r;
|
|
93 pLight->uLightColorG = g;
|
|
94 pLight->uLightColorB = b;
|
|
95 pLight->uLightType = uLightType;
|
|
96 return true;
|
|
97 }
|
|
98
|
|
99
|
|
100
|
|
101 void (__thiscall ***vdestructor_ptr)(LightsStack_StationaryLight_ *, bool);
|
|
102 StationaryLight pLights[400];
|
|
103 unsigned int uNumLightsActive;
|
|
104 };
|
|
105 #pragma pack(pop)
|
|
106
|
|
107
|
|
108
|
|
109
|
|
110 /* 261 */
|
|
111 #pragma pack(push, 1)
|
|
112 struct LightsStack_MobileLight_
|
|
113 {
|
|
114 //----- (00467D45) --------------------------------------------------------
|
|
115 inline LightsStack_MobileLight_()
|
|
116 {
|
|
117 this->uNumLightsActive = 0;
|
|
118 //this->vdestructor_ptr = &pLightsStack_MobileLight__pvdtor;
|
|
119 }
|
|
120 //----- (00467D55) --------------------------------------------------------
|
|
121 virtual ~LightsStack_MobileLight_()
|
|
122 {
|
|
123 this->uNumLightsActive = 0;
|
|
124 }
|
|
125
|
|
126 bool AddLight(__int16 x, __int16 y, __int16 z, __int16 uSectorID, int uRadius, unsigned __int8 r, unsigned __int8 g, unsigned __int8 b, char a10);
|
|
127
|
|
128
|
|
129
|
|
130 void (__thiscall ***vdestructor_ptr)(LightsStack_MobileLight_ *, bool);
|
|
131 MobileLight pLights[400];
|
|
132 unsigned int uNumLightsActive;
|
|
133 };
|
|
134 #pragma pack(pop) |