Exemple #1
0
 private static void Postfix(SPScoreboardPartyVM __instance)
 {
     ConfigureSettings();
     if (__instance.BattleCombatant is CustomBattleCombatant customBattleCombatant)
     {
         if (customBattleCombatant == playerCombatant)
         {
             __instance.Members.Sort(new MultiComparer(PlayerOrderedPropertyInfos));
         }
         else
         {
             __instance.Members.Sort(new MultiComparer(EnemyOrderedPropertyInfos));
         }
     }
     else if (__instance.BattleCombatant is PartyBase partyBase)
     {
         if (partyBase.LeaderHero == null ||
             !Clan.PlayerClan.WarParties.Contains(partyBase.MobileParty))
         {
             __instance.Members.Sort(new MultiComparer(EnemyOrderedPropertyInfos));
         }
         else
         {
             __instance.Members.Sort(new MultiComparer(PlayerOrderedPropertyInfos));
         }
     }
 }
Exemple #2
0
        private static IEnumerable <SPScoreboardUnitVM> GetScoreboardUnits(SPScoreboardPartyVM party)
        {
            foreach (var formationClass in new[]
            {
                FormationClass.Infantry, FormationClass.Ranged, FormationClass.Cavalry, FormationClass.HorseArcher,
                FormationClass.Skirmisher, FormationClass.HeavyInfantry, FormationClass.LightCavalry,
                FormationClass.HeavyCavalry, FormationClass.General
            })
            {
                var entry = CreateScoreEntry(party, formationClass);

                if (entry != null)
                {
                    yield return(entry);
                }
            }
        }
Exemple #3
0
        private static SPScoreboardUnitVM CreateScoreEntry(SPScoreboardPartyVM party, FormationClass formationClass)
        {
            BasicCharacterObject character = new BasicCharacterObject
            {
                Name = new TextObject(formationClass.ToString())
            };

            int kills = party.Members.Where(vm => vm.Character.CurrentFormationClass == formationClass)
                        .Sum(vm => vm.Score.Kill);
            int deaths = party.Members.Where(vm => vm.Character.CurrentFormationClass == formationClass)
                         .Sum(vm => vm.Score.Dead);
            int wounded = party.Members.Where(vm => vm.Character.CurrentFormationClass == formationClass)
                          .Sum(vm => vm.Score.Wounded);
            int routed = party.Members.Where(vm => vm.Character.CurrentFormationClass == formationClass)
                         .Sum(vm => vm.Score.Routed);
            int readyToUpgrade = party.Members.Where(vm => vm.Character.CurrentFormationClass == formationClass)
                                 .Sum(vm => vm.Score.ReadyToUpgrade);
            int remaining = party.Members.Where(vm => vm.Character.CurrentFormationClass == formationClass)
                            .Sum(vm => vm.Score.Remaining);

            if (remaining + routed + wounded + deaths == 0)
            {
                return(null);
            }

            SPScoreboardUnitVM score = new SPScoreboardUnitVM(character)
            {
                Score = new SPScoreboardStatsVM(character.Name)
                {
                    Kill           = kills,
                    Dead           = deaths,
                    Wounded        = wounded,
                    Routed         = routed,
                    ReadyToUpgrade = readyToUpgrade,
                    Remaining      = remaining + routed + wounded + deaths,
                }
            };

            return(score);
        }
Exemple #4
0
        public static MBBindingList <SPScoreboardUnitVM> GetOrderedScoreList(SPScoreboardPartyVM party)
        {
            List <SPScoreboardUnitVM> list = party.Members.OrderByDescending(vm => vm.IsHero)
                                             .ThenByDescending(vm => vm.Score.Kill)
                                             .ToList();

            MBBindingList <SPScoreboardUnitVM> mbList = new MBBindingList <SPScoreboardUnitVM>();

            foreach (var item in GetScoreboardUnits(party))
            {
                mbList.Add(item);
            }

            mbList.Add(new SPScoreboardUnitVM(new BasicCharacterObject {
                Name = TextObject.Empty
            }));

            foreach (SPScoreboardUnitVM member in list)
            {
                mbList.Add(member);
            }

            return(mbList);
        }