private PartyState GetPartyState(PartyBase party)
 {
     if (!PartyStates.TryGetValue(party.Id, out PartyState partyState))
     {
         partyState            = new PartyState(this, party.Side == BattleSideEnum.Attacker);
         PartyStates[party.Id] = partyState;
         for (int index = 0; index < party.MemberRoster.Count; ++index)
         {
             TroopRosterElement elementCopyAtIndex = party.MemberRoster.GetElementCopyAtIndex(index);
             CharacterObject    troop = elementCopyAtIndex.Character;
             if (troop != null)
             {
                 partyState.RegisterTroops(troop, (elementCopyAtIndex.Number - elementCopyAtIndex.WoundedNumber));
             }
         }
     }
     return(partyState);
 }