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

Method Sprite_Handle_Cannon

Source/Fodder.cpp:13657–13771  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13655}
13656
13657void cFodder::Sprite_Handle_Cannon(sSprite* pSprite) {
13658 int16 Data0, Data4, Data8, DataC, Data1C;
13659 ++pSprite->field_64;
13660
13661 if (!pSprite->field_12)
13662 goto loc_1D65C;
13663
13664 pSprite->field_12 -= 1;
13665 pSprite->field_3A++;
13666
13667 if (pSprite->field_44)
13668 goto loc_1D5B3;
13669
13670 Sprite_XY_Store(pSprite);
13671 Data1C = pSprite->field_10;
13672
13673 Sprite_Movement_Calculate(pSprite);
13674
13675 if (mSprite_Bullet_Destroy)
13676 goto loc_1D6CA;
13677
13678 Data0 = pSprite->field_0;
13679 Data4 = pSprite->field_4;
13680 Data8 = pSprite->field_2E;
13681 DataC = pSprite->field_30;
13682
13683 Map_Get_Distance_BetweenPoints_Within_Window(Data0, Data4, Data8, DataC);
13684
13685 Data4 = pSprite->field_36;
13686 Data4 >>= 3;
13687
13688 if (Data0 > Data4)
13689 goto loc_1D5CB;
13690
13691 pSprite->field_2C = eSprite_Draw_Second;
13692 pSprite->field_0 = pSprite->field_2E;
13693 pSprite->field_4 = pSprite->field_30;
13694 pSprite->field_44 = -1;
13695 goto loc_1D5CB;
13696loc_1D5B3:;
13697 pSprite->field_2C = eSprite_Draw_First;
13698 Sprite_Movement_Calculate(pSprite);
13699
13700 if (mSprite_Bullet_Destroy)
13701 goto loc_1D6CA;
13702
13703loc_1D5CB:;
13704 if (pSprite->field_64 > 3) {
13705 Data0 = -9;
13706 Data4 = 0;
13707 if (Map_Terrain_Get_Type_And_Walkable(pSprite, Data0, Data4))
13708 goto loc_1D65C;
13709 }
13710
13711 if (!Sprite_Projectile_Collision_Check(pSprite))
13712 return;
13713
13714 if (mSprites_Found_Count == 1)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected