示例#1
0
        public static List <DigivolveDNA> GetAllOptions(string childName)
        {
            var result = new List <DigivolveDNA>();
            //находим дигимона в списке
            var digimon      = DBStatic.Digimons.FirstOrDefault(x => x.NameEng == childName);
            var digimonTable = DigimonTemps.FirstOrDefault(x => x.NameEng == childName);

            if (digimonTable == null)
            {
                return(result);
            }
            var digimonTableCode = digimonTable.ResultCode;
            var dic          = new Dictionary <string, List <string> >();
            var digimonTemps = new List <DigimonTemp>();
            var rank         = Rank.Champion;

            switch (digimon.Rank)
            {
            case Rank.Rookie:
                dic          = ChampTableDictionary;
                digimonTemps = DigimonTemps.Where(x => x.Rank == Rank.Champion).ToList();
                rank         = Rank.Champion;
                break;

            case Rank.Champion:
                dic          = UltimaTableDictionary;
                digimonTemps = DigimonTemps.Where(x => x.Rank == Rank.Ultimate).ToList();
                rank         = Rank.Ultimate;
                break;

            case Rank.Ultimate:
                dic          = MegaTableDictionary;
                digimonTemps = DigimonTemps.Where(x => x.Rank == Rank.Mega).ToList();
                rank         = Rank.Mega;
                break;

            case Rank.Mega:
                return(result);

            default:
                throw new ArgumentOutOfRangeException();
            }

            var temp = dic.FirstOrDefault(x => x.Value.Contains(digimonTableCode));

            if (temp.Key == null)
            {
                // MessageBox.Show($"Не найдено соотвествие в таблице для {childName} код {digimonTableCode}");
                return(result);
            }


            var firstDigimonCode  = temp.Key;
            var index             = temp.Value.IndexOf(digimonTableCode);
            var secondDigimonCode = dic.ToList()[index].Key;


            var digimonTempsFirst  = digimonTemps.Where(x => x.SourceCode == firstDigimonCode).ToList();
            var digimonTempsSecond = digimonTemps.Where(x => x.SourceCode == secondDigimonCode).ToList();

            var digimonWithBrotherFirst  = digimonTempsFirst.SelectMany(x => DigimonWithOlderBrother(x.NameEng)).Distinct().ToList();
            var digimonWithBrotherSecond = digimonTempsSecond.SelectMany(x => DigimonWithOlderBrother(x.NameEng)).Distinct().ToList();

            foreach (var digimon1 in digimonWithBrotherFirst)
            {
                foreach (var digimon2 in digimonWithBrotherSecond)
                {
                    var exist = result.Any(x => (x.DigimonParent1Id == digimon1 && x.DigimonParent2Id == digimon2) ||
                                           (x.DigimonParent1Id == digimon2 && x.DigimonParent2Id == digimon1));
                    if (!exist && (DBStatic.GetRank(digimon1) == rank || DBStatic.GetRank(digimon2) == rank))
                    {
                        result.Add(new DigivolveDNA(digimon1, digimon2, childName));
                    }
                }
            }

            result.AddRange(GetMutation().Where(x => x.DigimonChildId == childName));



            return(result);
        }
示例#2
0
 public static void LoadStatic()
 {
     AllDigimons = DBStatic.GetAllDigimons().GetVMs();
     DigimonLoadCompleted?.Invoke(AllDigimons);
     DNALoadCompleted?.Invoke(AllDigimons, AllOptions);
 }