Пример #1
0
        public static async Task <List <UB3Object> > GetUB3CombosForId(int id)
        {
            var ub3List   = new List <UB3Object>();
            var ub3Collec = DatabaseConnection.GetDb().GetCollection <UB3Object>("UB3Collection");
            var ava       = await AvastarObject.GetAva(id);

            var gender = ava.Gender;

            ava.traits.Remove("background_color");
            ava.traits.Remove("backdrop");
            var kp = ava.traits.ToList();

            for (int i = 0; i < kp.Count - 2; i++)
            {
                for (int j = i + 1; j < kp.Count - 1; j++)
                {
                    for (int k = j + 1; k < kp.Count; k++)
                    {
                        var combo = (await ub3Collec.FindAsync(c => c.Trait1Name == kp[i].Key && c.Trait2Name == kp[j].Key && c.Trait3Name == kp[k].Key && c.Trait1Type == kp[i].Value && c.Trait2Type == kp[j].Value && c.Trait3Type == kp[k].Value)).FirstOrDefault();
                        ub3List.Add(combo);
                    }
                }
            }
            return(ub3List);
        }
Пример #2
0
        public static async Task MigrateAva(int id)
        {
            var oldAva = await AvastarObject.GetAva(id);

            var ava = new AvastarObject();

            ava.id           = oldAva.id;
            ava.Gender       = oldAva.Gender;
            ava.Score        = oldAva.Score;
            ava.traits       = oldAva.traits;
            ava.Owner        = "";// await Blockchain.ChainWatcher.GetOwnerOf(id);
            ava.TraitsRarity = new Dictionary <string, string>();
            var traitJson = JObject.Parse(DiscordKeyGetter.GetFileData("app/create-traits-nosvg.json"));

            foreach (var pair in ava.traits)
            {
                var traitType     = pair.Key;
                var traitName     = pair.Value;
                var traitRarity   = "";
                var traitTypeName = AvastarCommands.Capitalise(traitType.Replace('_', ' '));
                foreach (var trait in traitJson[traitTypeName])
                {
                    if (trait.Type == JTokenType.Null)
                    {
                        continue;
                    }
                    if ((string)trait["name"] == traitName)
                    {
                        traitRarity = (string)trait["rarity"];
                        break;
                    }
                }
                ava.TraitsRarity.Add(traitType, traitRarity);
            }
            ava.RarityDistribution = new Dictionary <string, int>();
            ava.RarityDistribution.Add("Common", 0);
            ava.RarityDistribution.Add("Uncommon", 0);
            ava.RarityDistribution.Add("Rare", 0);
            ava.RarityDistribution.Add("Epic", 0);
            ava.RarityDistribution.Add("Legendary", 0);
            foreach (var pair in ava.TraitsRarity)
            {
                switch (pair.Value)
                {
                case "Common":
                    ava.RarityDistribution["Common"]++;
                    break;

                case "Uncommon":
                    ava.RarityDistribution["Uncommon"]++;
                    break;

                case "Rare":
                    ava.RarityDistribution["Rare"]++;
                    break;

                case "Epic":
                    ava.RarityDistribution["Epic"]++;
                    break;

                case "Legendary":
                    ava.RarityDistribution["Legendary"]++;
                    break;
                }
            }
            var collec = DatabaseConnection.GetDb().GetCollection <AvastarObject>("AvastarCollection");
            await collec.ReplaceOneAsync(a => a.id == id, ava);
        }