コード例 #1
0
        protected override void ReadEntry(JObject entry)
        {
            entry.AssertNotMissing("category", "id", "title", "itemId", "amount", "exp", "rank", "materials", "successRates", "rainBonus");

            var data = new ProductionData();

            data.Category   = (ProductionCategory)entry.ReadInt("category");
            data.Id         = entry.ReadInt("id");
            data.ItemId     = entry.ReadInt("itemId");
            data.Amount     = entry.ReadInt("amount");
            data.Exp        = entry.ReadInt("exp");
            data.Tool       = entry.ReadString("tool", null);
            data.Durability = entry.ReadInt("durability");
            data.Mana       = entry.ReadInt("mana");

            // Rank
            var difficultyRank = entry.ReadString("rank");

            if (difficultyRank == "Novice")
            {
                data.Rank = SkillRank.Novice;
            }
            else
            {
                data.Rank = (SkillRank)(16 - int.Parse(difficultyRank, NumberStyles.HexNumber));
            }

            // Materials
            foreach (var material in entry["materials"])
            {
                var materialData = new ProductionMaterialData();

                materialData.Tag    = (string)material[0];
                materialData.Amount = (int)material[1];

                data.Materials.Add(materialData);
            }

            // Success Rates
            var ratesObj = (JObject)entry["successRates"];

            ratesObj.AssertNotMissing("Novice", "F", "E", "D", "C", "B", "A", "9", "8", "7", "6", "5", "4", "3", "2", "1");
            for (SkillRank rank = SkillRank.Novice; rank <= SkillRank.R1; ++rank)
            {
                data.SuccessRates[rank] = ratesObj.ReadInt(rank.ToString().TrimStart('R'));
            }

            data.RainBonus = entry.ReadInt("rainBonus");

            data.ItemData = AuraData.ItemDb.Find(data.ItemId);
            if (data.ItemData == null)
            {
                throw new DatabaseErrorException("Item not found: " + data.ItemId);
            }

            this.Entries.Add(data);
        }
コード例 #2
0
        protected override void ReadEntry(JObject entry)
        {
            entry.AssertNotMissing("category", "id", "manualItemId", "itemId", "exp", "rank", "maxProgress", "rainBonus", "materials", "finish");

            var data = new ManualData();

            data.Category     = (ManualCategory)entry.ReadInt("category");
            data.Id           = entry.ReadInt("id");
            data.ManualItemId = entry.ReadInt("manualItemId");
            data.ItemId       = entry.ReadInt("itemId");
            data.Exp          = entry.ReadInt("exp");
            data.MaxProgress  = entry.ReadFloat("maxProgress");
            data.RainBonus    = entry.ReadFloat("rainBonus");

            // Rank
            var difficultyRank = entry.ReadString("rank");

            if (difficultyRank == "Novice")
            {
                data.Rank = SkillRank.Novice;
            }
            else
            {
                data.Rank = (SkillRank)(16 - int.Parse(difficultyRank, NumberStyles.HexNumber));
            }

            // Materials
            foreach (var material in entry["materials"])
            {
                var materialData = new ProductionMaterialData();

                materialData.Tag    = (string)material[0];
                materialData.Amount = (int)material[1];

                data.Materials.Add(materialData);
            }

            // Finishes
            foreach (JObject finish in entry["finish"])
            {
                var finishData = new FinishData();

                foreach (var material in finish["materials"])
                {
                    var materialData = new ProductionMaterialData();

                    materialData.Tag    = (string)material[0];
                    materialData.Amount = (int)material[1];

                    finishData.Materials.Add(materialData);
                }

                if (finish.ContainsKey("color1"))
                {
                    finishData.Color1 = finish.ReadUInt("color1");
                }
                if (finish.ContainsKey("color2"))
                {
                    finishData.Color2 = finish.ReadUInt("color2");
                }
                if (finish.ContainsKey("color3"))
                {
                    finishData.Color3 = finish.ReadUInt("color3");
                }

                data.Finish.Add(finishData);
            }

            data.ItemData = AuraData.ItemDb.Find(data.ItemId);
            if (data.ItemData == null)
            {
                throw new DatabaseErrorException("Item not found: " + data.ItemId);
            }

            this.Entries.Add(data);
        }