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

Method Sprite_Handle_Player_Close_To_SquadMember

Source/Fodder.cpp:17412–17479  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17410}
17411
17412void cFodder::Sprite_Handle_Player_Close_To_SquadMember(sSprite* pSprite) {
17413
17414 // Not Human?
17415 if (pSprite->field_22 != eSprite_PersonType_Human) {
17416 pSprite->field_4D = 0;
17417 return;
17418 }
17419
17420 word_3B2F3 = 0;
17421
17422 // Find this sprite in the squad
17423 sSprite** PreviousMember = mSquads[pSprite->field_32];
17424
17425 // Loop until we find this squad member
17426 for (;;) {
17427 if (*PreviousMember == INVALID_SPRITE_PTR)
17428 return;
17429
17430 sSprite* eax = *PreviousMember;
17431 ++PreviousMember;
17432
17433 // Found this troop?
17434 if (pSprite == eax)
17435 break;
17436 }
17437
17438 // Get the previous squad member
17439 --PreviousMember;
17440
17441 // If PreviousMember is Squad Leader, return
17442 if (mSquads[pSprite->field_32] == PreviousMember)
17443 return;
17444
17445 // Get the previous members, previous member
17446 PreviousMember--;
17447
17448 //seg005:1A13
17449 sSprite* Data24 = *PreviousMember;
17450
17451 // Near the other member?
17452 if (pSprite->field_0 + 8 < Data24->field_0)
17453 return;
17454
17455 if (Data24->field_0 + 8 < pSprite->field_0)
17456 return;
17457
17458 if (Data24->field_4 + 2 < pSprite->field_4 - 2)
17459 return;
17460
17461 if (pSprite->field_4 + 2 < Data24->field_4 - 2)
17462 return;
17463
17464 // In Vehicle?
17465 if (Data24->field_6E)
17466 return;
17467
17468 // Different Walk Target?
17469 int16 Data1C = pSprite->field_40;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected