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

Method Sprite_Handle_BuildingDoor_Explode

Source/Fodder.cpp:18243–18297  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18241}
18242
18243int16 cFodder::Sprite_Handle_BuildingDoor_Explode(sSprite* pSprite) {
18244 int16 Data0, Data4;
18245
18246 if (pSprite->field_38 == eSprite_Anim_Die3 || pSprite->field_38 == eSprite_Anim_Die1)
18247 goto loc_221D0;
18248
18249 if (pSprite->field_38 == eSprite_Anim_Die2)
18250 goto loc_22235;
18251
18252 return 0;
18253loc_221D0:; // Building Explodes
18254 pSprite->field_38 = eSprite_Anim_Die2;
18255 pSprite->field_8 = 0x99;
18256
18257 Data0 = tool_RandomGet();
18258 Data4 = Data0;
18259
18260 Data0 &= 0x1E;
18261 if (Data4 < 0)
18262 Data0 = -Data0;
18263
18264 Data0 += 0x1C0;
18265 pSprite->field_10 = Data0;
18266 Data4 &= 3;
18267 Data4 += 5;
18268 pSprite->field_44 = (int8)Data4;
18269 pSprite->field_36 = 0x78;
18270
18271loc_22235:; // Door moving
18272 pSprite->field_44 -= 1;
18273 if (!pSprite->field_44)
18274 goto loc_2227F;
18275
18276 Sprite_Movement_Calculate(pSprite);
18277 if (mSprite_Bullet_Destroy)
18278 goto loc_2227F;
18279
18280 Data0 = -3;
18281 Data4 = 2;
18282 if (Map_Terrain_Get_Type_And_Walkable(pSprite, Data0, Data4))
18283 goto loc_2227F;
18284
18285 if (pSprite->field_36 <= 0)
18286 goto loc_2227F;
18287
18288 return -1;
18289
18290loc_2227F:; // Door Finished
18291 pSprite->field_0 -= 8;
18292 pSprite->field_4 -= 8;
18293
18294 Sprite_Turn_Into_Building_Explosion(pSprite);
18295
18296 return -1;
18297}
18298
18299int16 cFodder::sub_222A3(sSprite* pSprite) {
18300 int16 Data0, Data4;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected