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

Method Sprite_Handle_Civilian_Spear2

Source/Fodder.cpp:13362–13506  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13360}
13361
13362void cFodder::Sprite_Handle_Civilian_Spear2(sSprite* pSprite) {
13363 int16 Data0, Data4, Data8, DataC, Data1C;
13364
13365 ++pSprite->field_64;
13366
13367 if (!pSprite->field_12)
13368 goto loc_1D0F6;
13369
13370 pSprite->field_12 -= 1;
13371 pSprite->field_3A += 1;
13372
13373 if (pSprite->field_44)
13374 goto loc_1CFF7;
13375
13376 Sprite_XY_Store(pSprite);
13377 Data1C = pSprite->field_10;
13378
13379 if (pSprite->field_59)
13380 goto loc_1CF3E;
13381
13382 Data0 = pSprite->field_2E;
13383 Data4 = pSprite->field_30;
13384
13385 Sprite_Direction_Between_Points(pSprite, Data0, Data4);
13386 Data0 = pSprite->field_50;
13387
13388 if (Data0) {
13389 pSprite->field_10 += Data0;
13390 pSprite->field_10 &= 0x1FE;
13391 pSprite->field_59 = -1;
13392 }
13393
13394 if (pSprite->field_34 < 0)
13395 pSprite->field_34 = pSprite->field_10;
13396
13397loc_1CF3E:;
13398 Sprite_Movement_Calculate(pSprite);
13399 if (mSprite_Bullet_Destroy)
13400 goto loc_1D17A;
13401
13402 pSprite->field_36 = pSprite->field_4A;
13403 if (pSprite->field_59)
13404 goto loc_1D00F;
13405
13406 Data0 = pSprite->field_0;
13407 Data4 = pSprite->field_4;
13408 Data8 = pSprite->field_2E;
13409 DataC = pSprite->field_30;
13410
13411 Map_Get_Distance_BetweenPoints_Within_Window(Data0, Data4, Data8, DataC);
13412 Data4 = pSprite->field_36;
13413 Data4 >>= 3;
13414 if (Data0 > Data4)
13415 goto loc_1D00F;
13416
13417 pSprite->field_2C = eSprite_Draw_Second;
13418 pSprite->field_0 = pSprite->field_2E;
13419 pSprite->field_4 = pSprite->field_30;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected