Esempio n. 1
0
        private void MakeNonePartyBatchResultModel()
        {
            var index    = 0;
            var increase = 1;
            var position = Position.Max;

            for (; ;)
            {
                if (_includeBattleNickname.Count == _sortNonePartyCharacterInfoModels.Count)
                {
                    break;
                }
                if (position == Position.Defence && index == 0)
                {
                    break;
                }
                if (index == 0)
                {
                    position = Position.Elite;
                }
                else if (index <= Consts.MaxPositionIndex && position == Position.Elite)
                {
                    position = Position.Attack;
                }
                else if (index > Consts.MaxPositionIndex && position == Position.Attack)
                {
                    position = Position.Defence;
                    index--;
                    increase = -1;
                }
                var batchModel = new BatchResultModel
                {
                    Tanker  = FindFreeTopCombatPower(position, JobGroupType.Tanker),
                    Healer  = FindFreeTopCombatPower(position, JobGroupType.Healer),
                    Dealer1 = FindFreeTopCombatPower(position, JobGroupType.Dealer)
                };

                if (batchModel.Dealer1 != null)
                {
                    batchModel.Dealer2 = FindFreeTopCombatPower(position, JobGroupType.Dealer, batchModel.Dealer1);
                }
                if (batchModel.Dealer2 == null)
                {
                    batchModel.Dealer2 = FindFreeTopCombatPower(position, JobGroupType.Dealer);
                }
                batchModel.Position = position;
                batchModel.Index    = index;

                SetSumCombatPower(batchModel);
                index += increase;
                _queueBatchResult.Add(batchModel);
            }
        }
Esempio n. 2
0
        private void SetSumCombatPower(BatchResultModel batchResultModel)
        {
            int sumCombatPower = 0;

            if (batchResultModel.Tanker != null)
            {
                sumCombatPower += batchResultModel.Tanker.CombatPower;
            }
            if (batchResultModel.Dealer1 != null)
            {
                sumCombatPower += batchResultModel.Dealer1.CombatPower;
            }
            if (batchResultModel.Dealer2 != null)
            {
                sumCombatPower += batchResultModel.Dealer2.CombatPower;
            }
            if (batchResultModel.Healer != null)
            {
                sumCombatPower += batchResultModel.Healer.CombatPower;
            }
            batchResultModel.CombatPower = sumCombatPower;
        }
Esempio n. 3
0
        private void MakePartyBatchResultModel()
        {
            var partyGroups = characterInfoModels.Where(r => r.PartyGroup > 0).GroupBy(r => r.PartyGroup);

            foreach (var party in partyGroups)
            {
                var item = new BatchResultModel
                {
                    Position = Position.Elite
                };
                var dealer        = 0;
                var participation = new List <CharacterInfoModel>();
                foreach (var character in party)
                {
                    if (character.IsEliteExclusion == true)
                    {
                        item.Position = Position.Attack;
                    }
                    if (character.IsOnlyDefence)
                    {
                        item.Position = Position.Defence;
                    }
                    if (character.JobGroupType == JobGroupType.Tanker && item.Tanker == null)
                    {
                        item.Tanker = character;
                        participation.Add(character);
                    }
                    else if (character.JobGroupType == JobGroupType.Dealer)
                    {
                        if (dealer == 0)
                        {
                            item.Dealer1 = character;
                            dealer++;
                            participation.Add(character);
                        }
                        else if (dealer == 1)
                        {
                            item.Dealer2 = character;
                            dealer++;
                            participation.Add(character);
                        }
                        else
                        {
                        }
                    }
                    else if (character.JobGroupType == JobGroupType.Healer && item.Healer == null)
                    {
                        item.Healer = character;
                        participation.Add(character);
                    }
                    _includeBattleNickname.Add(character.Nickname);
                }

                if (participation.Count() != party.Count())
                {
                    ReSettingBattleResultModel(participation, party.ToList(), item);
                }
                SetSumCombatPower(item);
                _queueBatchResult.Add(item);
            }

            var eliteGroups = SortingCombatPower(Position.Elite, _queueBatchResult);
            var index       = 1;

            for (int i = 1; i < eliteGroups.Count; ++i)
            {
                eliteGroups[i].Index    = index;
                eliteGroups[i].Position = Position.Attack;
            }

            var attackGroups = SortingCombatPower(Position.Attack, _queueBatchResult);

            foreach (var party in attackGroups)
            {
                party.Index = index;
                if (index > Consts.MaxPositionIndex)
                {
                    party.Position = Position.Defence;
                }
                index++;
            }
            index = Consts.MaxPositionIndex;
            var defanceGroups = SortingCombatPower(Position.Defence, _queueBatchResult);

            foreach (var party in defanceGroups)
            {
                party.Index = index;
                if (index <= 0)
                {
                    party.Position = Position.Max;
                    index          = 0;
                }
                index--;
            }
        }
Esempio n. 4
0
 private void ReSettingBattleResultModel(IEnumerable <CharacterInfoModel> participation, IEnumerable <CharacterInfoModel> party, BatchResultModel batchResultModel)
 {
     foreach (var character in party)
     {
         if (participation.Any(r => r == character))
         {
             continue;
         }
         if (batchResultModel.Tanker == null)
         {
             batchResultModel.Tanker = character;
         }
         else if (batchResultModel.Dealer1 == null)
         {
             batchResultModel.Dealer1 = character;
         }
         else if (batchResultModel.Dealer2 == null)
         {
             batchResultModel.Dealer2 = character;
         }
         else if (batchResultModel.Healer == null)
         {
             batchResultModel.Healer = character;
         }
     }
 }