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

Method Sprite_Create_Rocket

Source/Fodder.cpp:18417–18547  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18415}
18416
18417int16 cFodder::Sprite_Create_Rocket(sSprite* pSprite) {
18418 sSprite* Data2C = 0, *Data30 = 0, *Data34 = 0;
18419 int16 Data0, Data4, Data8, DataC;
18420
18421 if (mPhase_Completed_Timer) {
18422 loc_22592:;
18423
18424 if (pSprite == mSquad_Leader)
18425 mMouse_Button_LeftRight_Toggle = false;
18426
18427 return -1;
18428 }
18429
18430 if (mSprite_Missile_Projectile_Counters[pSprite->field_22] == 2)
18431 goto loc_22592;
18432
18433 if (!pSprite->field_2E)
18434 goto loc_22592;
18435
18436 //seg005:2E39
18437 if (pSprite->field_18 == eSprite_Enemy) {
18438 Data0 = pSprite->field_0;
18439 Data4 = pSprite->field_4;
18440 Data8 = pSprite->field_2E;
18441 DataC = pSprite->field_30;
18442
18443 // Don't let the AI fire further than 129
18444 Map_Get_Distance_BetweenPoints_Within_Window(Data0, Data4, Data8, DataC);
18445 if (Data0 >= 0x82)
18446 goto loc_22592;
18447 }
18448
18449 Data0 = 2;
18450 Sprite_Get_Free_Max42(Data0, Data2C, Data30);
18451
18452 // No Free sprites?
18453 if (Data0)
18454 return -1;
18455
18456 if (pSprite->field_18 == eSprite_Player) {
18457 Data0 = pSprite->field_32;
18458 Data4 = Data0;
18459
18460 if (!mSquad_Rockets[Data0])
18461 goto loc_22592;
18462
18463 --mSquad_Rockets[Data0];
18464 mGUI_RefreshSquadRockets[Data4] = -1;
18465 }
18466
18467 ++mSprite_Missile_Projectile_Counters[pSprite->field_22];
18468 pSprite->field_55 = 1;
18469 pSprite->field_5A = -1;
18470 pSprite->field_54 = 3;
18471 Data30 = Data2C;
18472 Data30++;
18473
18474 //seg005:2F86

Callers

nothing calls this directly

Calls 1

isCoverDiskMethod · 0.80

Tested by

no test coverage detected