0
|
1 #include <string>
|
|
2 #include "Lights.h"
|
|
3
|
|
4 #include "mm7_data.h"
|
|
5
|
|
6 //----- (00467D88) --------------------------------------------------------
|
|
7 bool LightsStack_MobileLight_::AddLight(__int16 x, __int16 y, __int16 z, __int16 uSectorID, int uRadius, unsigned __int8 r, unsigned __int8 g, unsigned __int8 b, int *a10)
|
|
8 {
|
|
9 unsigned int v10; // eax@1
|
|
10 int v11; // esi@2
|
|
11 MobileLight *result; // eax@2
|
|
12 std::string v13; // [sp-18h] [bp-1Ch]@3
|
|
13 const char *v14; // [sp-8h] [bp-Ch]@3
|
|
14 int v15; // [sp-4h] [bp-8h]@3
|
|
15
|
|
16 v10 = this->uNumLightsActive;
|
|
17 if ( (signed int)v10 >= 400 )
|
|
18 {
|
|
19 MessageBoxW(nullptr, L"Too many mobile lights!", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\MobileLightStack.cpp:51", 0);
|
|
20 result = 0;
|
|
21 }
|
|
22 else
|
|
23 {
|
|
24 v11 = uRadius;
|
|
25 result = &this->pLights[v10];
|
|
26 result->vPosition.x = x;
|
|
27 result->vPosition.y = y;
|
|
28 result->vPosition.z = z;
|
|
29 result->uRadius = v11;
|
|
30 result->field_C = (((v11 < 0) - 1) & 0x3E) - 31;
|
|
31 result->uSectorID = uSectorID;
|
|
32 result->field_10 = v11 * v11 >> 5;
|
|
33 result->uLightColorR = r;
|
|
34 result->uLightColorG = g;
|
|
35 result->uLightColorB = b;
|
|
36 result->field_B = (char)a10;
|
|
37 ++this->uNumLightsActive;
|
|
38 LOBYTE(result) = 1;
|
|
39 }
|
|
40 return (bool)result;
|
|
41 }
|