MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / Sprite_Handle_Building_Explosion

Method Sprite_Handle_Building_Explosion

Source/Fodder.cpp:12383–12468  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12381}
12382
12383void cFodder::Sprite_Handle_Building_Explosion(sSprite* pSprite) {
12384 int16 Data0, Data4, Data6, Data8, DataC, Data10, Data14;
12385 const int16* Data2C = mSprite_Explosion_Area_PerFrame;
12386 sSprite* Data24 = 0;
12387
12388 if (pSprite->field_8 == 0x7C) {
12389 Sprite_Destroy_Wrapper_2(pSprite);
12390 return;
12391 }
12392
12393 pSprite->field_62 = ~pSprite->field_62;
12394 if (pSprite->field_62 < 0)
12395 goto loc_1BC07;
12396
12397
12398 Data8 = pSprite->field_0;
12399 Data8 += 8;
12400 if (pSprite->field_26 == 0x5F5F)
12401 Data8 += pSprite->field_28;
12402
12403 DataC = pSprite->field_0 + 0x24;
12404
12405 Data10 = pSprite->field_4 - 0x20;
12406 Data14 = pSprite->field_4 - 6;
12407
12408 Data0 = pSprite->field_A;
12409
12410 if (pSprite->field_8 == 0xC0)
12411 Data0 += 2;
12412
12413 Data0 -= 1;
12414
12415 for (; Data0 >= 0; --Data0) {
12416 Data8 -= *Data2C;
12417 DataC -= *Data2C++;
12418 Data10 += *Data2C;
12419 Data14 += *Data2C++;
12420 }
12421
12422 Squad_Member_Sprite_Hit_In_Region(pSprite, Data8, DataC, Data10, Data14);
12423 goto loc_1BC48;
12424
12425loc_1BC07:;
12426 Data8 = pSprite->field_0;
12427 DataC = pSprite->field_0 + 0x1E;
12428 Data10 = pSprite->field_4 - 30;
12429 Data14 = pSprite->field_4;
12430
12431 Sprite_Find_In_Region(pSprite, Data24, Data8, DataC, Data10, Data14);
12432loc_1BC48:;
12433
12434 Data2C = mSprite_Explosion_Area_PerFrame;
12435 Data4 = pSprite->field_A;
12436 if (pSprite->field_8 == 0xC0)
12437 Data4 += 2;
12438
12439 Data4 <<= 1;
12440 Data2C += Data4;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected