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

Method Sprite_Handle_Grenade

Source/Fodder.cpp:10757–10904  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10755}
10756
10757void cFodder::Sprite_Handle_Grenade(sSprite* pSprite) {
10758 int16 Data0, Data4, Data8, DataC;
10759 sSprite* Data24;
10760 int16 a1;
10761 int32 Dataa4;
10762
10763 if (pSprite->field_38)
10764 goto loc_1992D;
10765
10766 if (!pSprite->field_12)
10767 goto loc_1992D;
10768
10769 if (!pSprite->field_56)
10770 goto loc_19701;
10771
10772 --pSprite->field_56;
10773 if (!pSprite->field_56) {
10774 // HACK: Disable grenade sound for cannon plus... it seems corrupted and causes a crash
10775 if (!mVersionCurrent->isCoverDisk())
10776 Sound_Play(pSprite, eSound_Effect_Grenade, 0x0F);
10777 }
10778
10779 Data24 = pSprite->field_46_sprite;
10780 pSprite->field_0 = Data24->field_0;
10781 pSprite->field_2 = Data24->field_2;
10782 pSprite->field_4 = Data24->field_4;
10783 pSprite->field_6 = Data24->field_6;
10784 pSprite->field_4 += 1;
10785 pSprite->field_0 += 3;
10786 pSprite->field_8 = 0x7C;
10787 pSprite->field_A = 0;
10788 return;
10789
10790loc_19701:;
10791 pSprite->field_8 = 0x7D;
10792 Data0 = pSprite->field_26;
10793 Data4 = pSprite->field_28;
10794 Data8 = pSprite->field_0;
10795 DataC = pSprite->field_4;
10796
10797 Map_Get_Distance_BetweenPoints_Within_Window(Data0, Data4, Data8, DataC);
10798 if (Data0 <= 1)
10799 pSprite->field_36 = 0;
10800
10801 if (Data0 <= 4)
10802 pSprite->field_36 >>= 1;
10803
10804 if (pSprite->field_36) {
10805 pSprite->field_36 -= 1;
10806 Sprite_XY_Store(pSprite);
10807
10808 mTmp_FrameNumber = pSprite->field_A;
10809 Data0 = pSprite->field_26;
10810 Data4 = pSprite->field_28;
10811
10812 Sprite_Direction_Between_Points(pSprite, Data0, Data4);
10813 Sprite_Movement_Calculate(pSprite);
10814 Sprite_Handle_Grenade_Terrain_Check(pSprite);

Callers

nothing calls this directly

Calls 1

isCoverDiskMethod · 0.80

Tested by

no test coverage detected