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); }
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); } }