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

Method Sprite_Handle_Exploidable

Source/Fodder.cpp:17604–17695  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17602}
17603
17604void cFodder::Sprite_Handle_Exploidable(sSprite* pSprite) {
17605 int64 Dat0;
17606 int32 Dat4;
17607 int16 Data0, Data4;
17608
17609 if (pSprite->field_5B)
17610 goto loc_2132A;
17611
17612 if (pSprite->field_20)
17613 goto loc_2132A;
17614
17615 if (pSprite->field_38 == eSprite_Anim_Die1)
17616 goto loc_213F7;
17617
17618 if (pSprite->field_38 > eSprite_Anim_Die1)
17619 goto loc_2132A;
17620
17621 pSprite->field_5B = 0;
17622 return;
17623
17624loc_2132A:;
17625
17626 Sprite_Movement_Calculate(pSprite);
17627
17628 Dat0 = (int64)pSprite->field_1A;
17629 Dat4 = (pSprite->field_1E & 0xFFFF) | (pSprite->field_20 << 16);
17630
17631 Dat0 -= 0x28000;
17632 Dat4 += (int32)Dat0;
17633
17634 if (Dat4 < 0) {
17635 Dat4 = 0;
17636 Dat0 = -Dat0;
17637 Dat0 >>= 2;
17638 }
17639
17640 pSprite->field_1A = (int32)Dat0;
17641 pSprite->field_1E_Big = Dat4;
17642
17643 if (!(Dat4 >> 16)) {
17644 if (!(Dat0 >> 16))
17645 goto loc_21464;
17646 }
17647
17648 Data0 = -3;
17649 Data4 = 0x0C;
17650
17651 Map_Terrain_Get_Type_And_Walkable(pSprite, Data0, Data4);
17652
17653 if (pSprite->field_20)
17654 return;
17655
17656 if (Data4 == eTerrainFeature_WaterEdge)
17657 goto loc_21464;
17658
17659 if (Data4 == eTerrainFeature_Water)
17660 goto loc_21464;
17661

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected