| 19275 | } |
| 19276 | |
| 19277 | void cFodder::Squad_Member_Click_Check() { |
| 19278 | word_3A3BF = -1; |
| 19279 | |
| 19280 | if (mSquad_Selected < 0) |
| 19281 | return; |
| 19282 | |
| 19283 | int16 ClickedX = mMouseX; |
| 19284 | int16 ClickedY = mMouseY; |
| 19285 | |
| 19286 | ClickedX += mCameraX >> 16; |
| 19287 | ClickedY += mCameraY >> 16; |
| 19288 | ClickedX -= 0x0F; |
| 19289 | ClickedY -= 3; |
| 19290 | |
| 19291 | for (auto& SquadMember : mGame_Data.mSoldiers_Allocated) { |
| 19292 | |
| 19293 | if (SquadMember.mSprite == INVALID_SPRITE_PTR || SquadMember.mSprite == 0) |
| 19294 | continue; |
| 19295 | |
| 19296 | sSprite* SquadMemberSprite = SquadMember.mSprite; |
| 19297 | |
| 19298 | if (SquadMemberSprite->field_32 == mSquad_Selected) |
| 19299 | ++word_3A3BF; |
| 19300 | |
| 19301 | int16 SquadMemberX = SquadMemberSprite->field_0 + 4; |
| 19302 | int16 SquadMemberY = SquadMemberSprite->field_4 - SquadMemberSprite->field_20; |
| 19303 | |
| 19304 | // Clicked before/after troop? |
| 19305 | if (ClickedX < SquadMemberX) |
| 19306 | continue; |
| 19307 | if (ClickedX > SquadMemberX + 6) |
| 19308 | continue; |
| 19309 | |
| 19310 | // Clicked above/below troop? |
| 19311 | if (ClickedY < SquadMemberY - 13) |
| 19312 | continue; |
| 19313 | if (ClickedY > SquadMemberY) |
| 19314 | continue; |
| 19315 | |
| 19316 | // |
| 19317 | if (mSquad_Selected == SquadMemberSprite->field_32) { |
| 19318 | mSquad_Member_Clicked_TroopInSameSquad = -1; |
| 19319 | mSquad_Member_Clicked_TroopPtr = SquadMemberSprite->field_46_mission_troop; |
| 19320 | return; |
| 19321 | } |
| 19322 | |
| 19323 | // Two squads joined will have more than 8 members? |
| 19324 | if (mSquads_TroopCount[SquadMemberSprite->field_32] + mSquads_TroopCount[mSquad_Selected] > 8) |
| 19325 | return; |
| 19326 | |
| 19327 | mSquad_Join_TargetSprite[mSquad_Selected] = SquadMemberSprite; |
| 19328 | mSquad_Join_TargetSquad[mSquad_Selected] = (int8)SquadMemberSprite->field_32; |
| 19329 | |
| 19330 | Squad_Walk_Target_Update(SquadMemberSprite->field_32); |
| 19331 | |
| 19332 | break; |
| 19333 | } |
| 19334 | } |
nothing calls this directly
no outgoing calls
no test coverage detected