@@ -37,10 +37,12 @@ void AmberHaze0x1c::VTable0x24(WhiteFalcon0x140* p_renderer, const LegoChar* p_f
3737 if (m_renderer != NULL ) {
3838 Clear ();
3939 }
40+
4041 m_renderer = p_renderer;
4142 p_renderer->AddMaterialList (this );
4243 m_unk0x14 = NULL ;
4344 GolFileParser* parser;
45+
4446 if (p_binary) {
4547 parser = new GolBinParser;
4648 if (parser == NULL ) {
@@ -54,17 +56,22 @@ void AmberHaze0x1c::VTable0x24(WhiteFalcon0x140* p_renderer, const LegoChar* p_f
5456 GOL_FATALERROR (c_golErrorOutOfMemory);
5557 }
5658 }
59+
5760 parser->OpenFileForRead (p_fileName);
5861 parser->AssertNextTokenIs (GolFileParser::e_unknown0x27);
5962 m_numItems = parser->FUN_100327e0 ();
63+
6064 if (m_numItems == 0 ) {
6165 parser->HandleUnexpectedToken (GolFileParser::e_int);
6266 }
67+
6368 GolNameTable::Allocate (m_numItems);
6469 VTable0x14 ();
6570 LegoU32 i;
6671 LegoU32 j;
6772 LegoChar textureName[8 ];
73+ LegoU8 fullIntensity = 0xff ;
74+
6875 for (i = 0 ; i < m_numItems; i++) {
6976 parser->AssertNextTokenIs (GolFileParser::e_unknown0x27);
7077 DuskWindName0x8 name;
@@ -76,28 +83,10 @@ void AmberHaze0x1c::VTable0x24(WhiteFalcon0x140* p_renderer, const LegoChar* p_f
7683 DuskwindBananaRelic0x24* material = VTable0x28(i);
7784 AddName (name.m_unk0x0 , material);
7885 parser->ReadLeftCurly ();
79- DuskWindBananaRelicParams params;
80- params.m_unk0x0c .m_unk0x0 = 0xff ;
81- params.m_unk0x0c .m_unk0x1 = 0xff ;
82- params.m_unk0x0c .m_unk0x2 = 0xff ;
83- params.m_unk0x0c .m_unk0x3 = 0xff ;
84- params.m_unk0x08 .m_unk0x0 = 0xff ;
85- params.m_unk0x08 .m_unk0x1 = 0xff ;
86- params.m_unk0x08 .m_unk0x2 = 0xff ;
87- params.m_unk0x08 .m_unk0x3 = 0xff ;
88- params.m_unk0x00 = DuskwindBananaRelic0x24::c_flag0x08Bit2 | DuskwindBananaRelic0x24::c_flag0x08Bit4 |
89- DuskwindBananaRelic0x24::c_flag0x08Bit7 | DuskwindBananaRelic0x24::c_flag0x08Bit9 |
90- DuskwindBananaRelic0x24::c_flag0x08Bit10 | DuskwindBananaRelic0x24::c_flag0x08Bit13 |
91- DuskwindBananaRelic0x24::c_flag0x08Bit15 | DuskwindBananaRelic0x24::c_flag0x08Bit20 |
92- DuskwindBananaRelic0x24::c_flag0x08Bit22;
93- params.m_unk0x04 = NULL ;
94- params.m_unk0x10 = 2 ;
95- params.m_unk0x11 = 0 ;
96- params.m_unk0x12 = 1 ;
97- params.m_unk0x13 = 0 ;
86+ DuskWindBananaRelicParams params (fullIntensity);
9887
99- GolFileParser::ParserTokenType token;
100- while (( token = parser-> GetNextToken ()) != GolFileParser::e_rightCurly) {
88+ GolFileParser::ParserTokenType token = parser-> GetNextToken () ;
89+ while (token != GolFileParser::e_rightCurly) {
10190 switch (token) {
10291 case GolFileParser::e_unknown0x28:
10392 params.m_unk0x08 .m_unk0x0 = parser->ReadInteger ();
@@ -121,7 +110,7 @@ void AmberHaze0x1c::VTable0x24(WhiteFalcon0x140* p_renderer, const LegoChar* p_f
121110 break ;
122111 case GolFileParser::e_unknown0x2c:
123112 ::strncpy (textureName, parser->ReadStringWithMaxLength (8 ), 8);
124- params.m_unk0x04 = m_renderer ->FindTextureByName (textureName);
113+ params.m_unk0x04 = p_renderer ->FindTextureByName (textureName);
125114 if (params.m_unk0x04 == NULL ) {
126115 char message[128 ];
127116 ::strcpy (message, " Mat def file references unknown texture: " );
@@ -234,13 +223,6 @@ void AmberHaze0x1c::VTable0x24(WhiteFalcon0x140* p_renderer, const LegoChar* p_f
234223 params.m_unk0x00 &= ~DuskwindBananaRelic0x24::c_flag0x08Bit10;
235224 params.m_unk0x00 |= DuskwindBananaRelic0x24::c_flag0x08Bit11;
236225 break ;
237- case GolFileParser::e_unknown0x46:
238- case GolFileParser::e_unknown0x4e:
239- params.m_unk0x13 = parser->ReadInteger ();
240- params.m_unk0x00 &=
241- ~(DuskwindBananaRelic0x24::c_flag0x08Bit8 | DuskwindBananaRelic0x24::c_flag0x08Bit13);
242- params.m_unk0x00 |= DuskwindBananaRelic0x24::c_flag0x08Bit9 | DuskwindBananaRelic0x24::c_flag0x08Bit12;
243- break ;
244226 case GolFileParser::e_unknown0x47:
245227 params.m_unk0x00 |= DuskwindBananaRelic0x24::c_flag0x08Bit14;
246228 break ;
@@ -263,14 +245,21 @@ void AmberHaze0x1c::VTable0x24(WhiteFalcon0x140* p_renderer, const LegoChar* p_f
263245 params.m_unk0x00 &= ~DuskwindBananaRelic0x24::c_flag0x08Bit22;
264246 params.m_unk0x00 |= DuskwindBananaRelic0x24::c_flag0x08Bit21;
265247 break ;
266- case GolFileParser::e_unknown0x4d :
267- case GolFileParser::e_unknown0x50 :
248+ case GolFileParser::e_unknown0x46 :
249+ case GolFileParser::e_unknown0x4e :
268250 params.m_unk0x13 = parser->ReadInteger ();
269251 params.m_unk0x00 &=
270252 ~(DuskwindBananaRelic0x24::c_flag0x08Bit8 | DuskwindBananaRelic0x24::c_flag0x08Bit13);
271253 params.m_unk0x00 |= DuskwindBananaRelic0x24::c_flag0x08Bit9 | DuskwindBananaRelic0x24::c_flag0x08Bit12;
272254 break ;
273255 case GolFileParser::e_unknown0x4f:
256+ params.m_unk0x13 = parser->ReadInteger ();
257+ params.m_unk0x00 = (params.m_unk0x00 & ~(DuskwindBananaRelic0x24::c_flag0x08Bit8 |
258+ DuskwindBananaRelic0x24::c_flag0x08Bit13)) |
259+ (DuskwindBananaRelic0x24::c_flag0x08Bit9 | DuskwindBananaRelic0x24::c_flag0x08Bit12);
260+ break ;
261+ case GolFileParser::e_unknown0x4d:
262+ case GolFileParser::e_unknown0x50:
274263 params.m_unk0x13 = parser->ReadInteger ();
275264 params.m_unk0x00 &=
276265 ~(DuskwindBananaRelic0x24::c_flag0x08Bit8 | DuskwindBananaRelic0x24::c_flag0x08Bit13);
@@ -280,10 +269,12 @@ void AmberHaze0x1c::VTable0x24(WhiteFalcon0x140* p_renderer, const LegoChar* p_f
280269 parser->HandleUnexpectedToken (GolFileParser::e_syntaxerror);
281270 break ;
282271 }
272+ token = parser->GetNextToken ();
283273 }
284274 material->m_unk0x18 = name;
285275 material->FUN_100257e0 (m_renderer, params);
286276 }
277+
287278 parser->ReadRightCurly ();
288279 parser->Dispose ();
289280 FUN_10026970 ();
@@ -325,6 +316,7 @@ void AmberHaze0x1c::VTable0x20(WhiteFalcon0x140* p_renderer, undefined4* p_arg2,
325316 if (m_renderer != NULL ) {
326317 Clear ();
327318 }
319+
328320 m_renderer = p_renderer;
329321 p_renderer->AddMaterialList (this );
330322 m_unk0x14 = p_arg2;
@@ -355,6 +347,7 @@ void AmberHaze0x1c::VTable0x1c(WhiteFalcon0x140* p_renderer, LegoU32 p_capacity)
355347 if (m_renderer != NULL ) {
356348 Clear ();
357349 }
350+
358351 m_renderer = p_renderer;
359352 p_renderer->AddMaterialList (this );
360353 m_numItems = p_capacity;
0 commit comments