Esempio n. 1
0
        public void ReCalcSendCost()
        {
            switch (this.CostSets)
            {
            case ArCostSets.Fate:
            {
                var nFCv = new ObservableCollection <BindableValue <int> >();
                for (var i = 0; i < 5; i++)
                {
                    nFCv.Add(new BindableValue <int>(0));
                }
                nFCv[(int)ArResource.Fate].Value = -this.FateCost;

                this.SendingCost.ClearAllEvents();
                this.SendingCost = new ArCost()
                {
                    CostGroup = "Fate使用",
                    CostName  = FateType.Text(),
                    Items     = nFCv
                };
                break;
            }

            case ArCostSets.Damage:
            {
                var nDCv = new ObservableCollection <BindableValue <int> >();
                for (var i = 0; i < 5; i++)
                {
                    nDCv.Add(new BindableValue <int>(0));
                }
                nDCv[(int)TargetValue].Value = this.DamageCorrected;

                var nCostName = this.DamageBase.ToString("0;-0")
                                + this.DefPoint.ToString("-0;+0;#")
                                + this.DamageCorrect1.ToString("+0;-0;#")
                                + this.DamageCorrect2.ToString("+0;-0;#");
                //+ "="
                //+ ((this.DamageType == ArDamageType.Heal) ? this.DamageCorrected.ToString("0;-0;0") : this.DamageCorrected.ToString("-0;0;0"));

                this.SendingCost.ClearAllEvents();
                this.SendingCost = new ArCost()
                {
                    CostGroup = (DamageType == ArDamageType.Heal ? TargetValue.ResourceName() : "") + DamageType.Text(),
                    CostName  = nCostName,
                    Items     = nDCv
                };
                break;
            }

            case ArCostSets.SkillCost:
            {
                this.SendingCost = new ArCost(this.SelectedItem);
                break;
            }
            }
            this.SendingText = this.SendingCost.ToString();
            this.CostChanged?.Invoke(this, null);
        }
Esempio n. 2
0
        private static async Task ParseFateData()
        {
            fateDataXml = GetXmlDocument();
            database    = new FateDatabase();

            if (fateDataInvalidFlag || fateDataXml.DocumentElement == null)
            {
                return;
            }

            try
            {
                foreach (XmlNode currentNode in fateDataXml.DocumentElement.ChildNodes)
                {
                    // Ensure nodes are instantiated.
                    fateId                = 0;
                    fateName              = string.Empty;
                    fateLevel             = 0;
                    fateType              = FateType.Null;
                    fateSupportLevel      = FateSupportLevel.Unsupported;
                    fateLandingRadius     = 1f;
                    fateCollectItemId     = 0;
                    fateNpcId             = 0;
                    fatePreferredTargetId = new List <uint>();
                    fateChainId           = 0;

                    if (currentNode["ID"] != null)
                    {
                        fateId = uint.Parse(currentNode["ID"].InnerText);
                    }

                    if (currentNode["Name"] != null)
                    {
                        fateName = currentNode["Name"].InnerText;
                    }

                    if (currentNode["Level"] != null)
                    {
                        fateLevel = uint.Parse(currentNode["Level"].InnerText);
                    }

                    if (currentNode["Type"] != null)
                    {
                        fateType = (FateType)int.Parse(currentNode["Type"].InnerText);
                    }

                    if (currentNode["OracleSupport"] != null)
                    {
                        fateSupportLevel = (FateSupportLevel)int.Parse(currentNode["OracleSupport"].InnerText);
                    }

                    if (currentNode["LandingRadius"] != null)
                    {
                        fateLandingRadius = float.Parse(currentNode["LandingRadius"].InnerText);
                    }

                    if (currentNode["CollectItemId"] != null)
                    {
                        fateCollectItemId = uint.Parse(currentNode["CollectItemId"].InnerText);
                    }

                    if (currentNode["NpcId"] != null)
                    {
                        fateNpcId = uint.Parse(currentNode["NpcId"].InnerText);
                    }

                    if (currentNode["PreferredTargetId"] != null)
                    {
                        var targets = currentNode.SelectNodes("PreferredTargetId");
                        if (targets != null)
                        {
                            for (var i = 0; i < targets.Count; i++)
                            {
                                var xmlNode = targets.Item(i);
                                if (xmlNode != null)
                                {
                                    fatePreferredTargetId.Add(uint.Parse(xmlNode.InnerText));
                                }
                            }
                        }
                    }

                    if (currentNode["ChainID"] != null)
                    {
                        fateChainId = uint.Parse(currentNode["ChainID"].InnerText);
                    }

                    database.AddFateToDatabase(CreateFate());
                }
            }
            catch (FormatException exception)
            {
                Logger.SendErrorLog("Formatting error during fate data parse.");
                Logger.SendDebugLog("FormatException thrown:\n\n" + exception + "\n");
            }
            catch (OverflowException exception)
            {
                Logger.SendErrorLog("Numerical conversion resulted in overflow.");
                Logger.SendDebugLog("OverflowException thrown.\n\n" + exception);
            }
        }