public string GetEquipmentBonusText(EquipmentBonus equipmentBonus) { string result = CharacterStats.GetText( equipmentBonus.stats, formatKeyHpStats, formatKeyMpStats, formatKeyArmorStats, formatKeyAccuracyStats, formatKeyEvasionStats, formatKeyCriRateStats, formatKeyCriDmgRateStats, formatKeyBlockRateStats, formatKeyBlockDmgRateStats, formatKeyMoveSpeedStats, formatKeyAtkSpeedStats, formatKeyWeightLimitStats, formatKeyStaminaStats, formatKeyFoodStats, formatKeyWaterStats); foreach (AttributeAmount entry in equipmentBonus.attributes) { if (entry.attribute == null || entry.amount == 0) { continue; } if (!string.IsNullOrEmpty(result)) { result += "\n"; } result += string.Format( LanguageManager.GetText(formatKeyAttributeAmount), entry.attribute.Title, entry.amount.ToString("N0")); } foreach (ResistanceAmount entry in equipmentBonus.resistances) { if (entry.damageElement == null || entry.amount == 0) { continue; } if (!string.IsNullOrEmpty(result)) { result += "\n"; } result += string.Format( LanguageManager.GetText(formatKeyResistanceAmount), entry.damageElement.Title, (entry.amount * 100).ToString("N0")); } foreach (DamageAmount entry in equipmentBonus.damages) { if (entry.damageElement == null || (entry.amount.min == 0 && entry.amount.max == 0)) { continue; } if (!string.IsNullOrEmpty(result)) { result += "\n"; } result += string.Format( LanguageManager.GetText(formatKeyDamageAmount), entry.damageElement.Title, entry.amount.min.ToString("N0"), entry.amount.max.ToString("N0")); } foreach (SkillLevel entry in equipmentBonus.skills) { if (entry.skill == null || entry.level == 0) { continue; } if (!string.IsNullOrEmpty(result)) { result += "\n"; } result += string.Format( LanguageManager.GetText(formatKeySkillLevel), entry.skill.Title, entry.level.ToString("N0")); } return(result); }
public static string GetText( CharacterStats data, string hpStatsFormat, string mpStatsFormat, string armorStatsFormat, string accuracyStatsFormat, string evasionStatsFormat, string criRateStatsFormat, string criDmgRateStatsFormat, string blockRateStatsFormat, string blockDmgRateStatsFormat, string moveSpeedStatsFormat, string atkSpeedStatsFormat, string weightLimitStatsFormat, string staminaStatsFormat, string foodStatsFormat, string waterStatsFormat, TextWrapper uiTextHp = null, TextWrapper uiTextMp = null, TextWrapper uiTextArmor = null, TextWrapper uiTextAccuracy = null, TextWrapper uiTextEvasion = null, TextWrapper uiTextCriRate = null, TextWrapper uiTextCriDmgRate = null, TextWrapper uiTextBlockRate = null, TextWrapper uiTextBlockDmgRate = null, TextWrapper uiTextMoveSpeed = null, TextWrapper uiTextAtkSpeed = null, TextWrapper uiTextWeightLimit = null, TextWrapper uiTextStamina = null, TextWrapper uiTextFood = null, TextWrapper uiTextWater = null) { string statsString = string.Empty; string statsStringPart = string.Empty; // Hp statsStringPart = string.Format( LanguageManager.GetText(hpStatsFormat), data.hp.ToString("N0")); if (data.hp != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextHp != null) { uiTextHp.text = statsStringPart; } // Mp statsStringPart = string.Format( LanguageManager.GetText(mpStatsFormat), data.mp.ToString("N0")); if (data.mp != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextMp != null) { uiTextMp.text = statsStringPart; } // Armor statsStringPart = string.Format( LanguageManager.GetText(armorStatsFormat), data.armor.ToString("N0")); if (data.armor != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextArmor != null) { uiTextArmor.text = statsStringPart; } // Accuracy statsStringPart = string.Format( LanguageManager.GetText(accuracyStatsFormat), data.accuracy.ToString("N0")); if (data.accuracy != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextAccuracy != null) { uiTextAccuracy.text = statsStringPart; } // Evasion statsStringPart = string.Format( LanguageManager.GetText(evasionStatsFormat), data.evasion.ToString("N0")); if (data.evasion != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextEvasion != null) { uiTextEvasion.text = statsStringPart; } // Cri Rate statsStringPart = string.Format( LanguageManager.GetText(criRateStatsFormat), (data.criRate * 100).ToString("N2")); if (data.criRate != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextCriRate != null) { uiTextCriRate.text = statsStringPart; } // Cri Dmg Rate statsStringPart = string.Format( LanguageManager.GetText(criDmgRateStatsFormat), (data.criDmgRate * 100).ToString("N2")); if (data.criDmgRate != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextCriDmgRate != null) { uiTextCriDmgRate.text = statsStringPart; } // Block Rate statsStringPart = string.Format( LanguageManager.GetText(blockRateStatsFormat), (data.blockRate * 100).ToString("N2")); if (data.blockRate != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextBlockRate != null) { uiTextBlockRate.text = statsStringPart; } // Block Dmg Rate statsStringPart = string.Format( LanguageManager.GetText(blockDmgRateStatsFormat), (data.blockDmgRate * 100).ToString("N2")); if (data.blockDmgRate != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextBlockDmgRate != null) { uiTextBlockDmgRate.text = statsStringPart; } // Weight statsStringPart = string.Format( LanguageManager.GetText(weightLimitStatsFormat), data.weightLimit.ToString("N2")); if (data.weightLimit != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextWeightLimit != null) { uiTextWeightLimit.text = statsStringPart; } // Move Speed statsStringPart = string.Format( LanguageManager.GetText(moveSpeedStatsFormat), data.moveSpeed.ToString("N2")); if (data.moveSpeed != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextMoveSpeed != null) { uiTextMoveSpeed.text = statsStringPart; } // Attack Speed statsStringPart = string.Format( LanguageManager.GetText(atkSpeedStatsFormat), data.atkSpeed.ToString("N2")); if (data.atkSpeed != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextAtkSpeed != null) { uiTextAtkSpeed.text = statsStringPart; } // Stamina statsStringPart = string.Format( LanguageManager.GetText(staminaStatsFormat), data.stamina.ToString("N0")); if (data.stamina != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextStamina != null) { uiTextStamina.text = statsStringPart; } // Food statsStringPart = string.Format( LanguageManager.GetText(foodStatsFormat), data.food.ToString("N0")); if (data.food != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextFood != null) { uiTextFood.text = statsStringPart; } // Water statsStringPart = string.Format( LanguageManager.GetText(waterStatsFormat), data.water.ToString("N0")); if (data.water != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextWater != null) { uiTextWater.text = statsStringPart; } return(statsString); }
public void DevExtDemo_Add(CharacterStats result, CharacterStats b) { result.testStats = testStats + b.testStats; }
public void DevExtDemo_Multiply(CharacterStats result, float multiplier) { result.testStats = testStats * multiplier; }
protected override void UpdateData() { cacheStats = showStatsWithBuffs ? Data.GetStats() : Data.GetStats(true, false); cacheAttributes = showAttributeWithBuffs ? Data.GetAttributes() : Data.GetAttributes(true, false); cacheResistances = showResistanceWithBuffs ? Data.GetResistances() : Data.GetResistances(true, false); cacheIncreaseDamages = showDamageWithBuffs ? Data.GetIncreaseDamages() : Data.GetIncreaseDamages(true, false); cacheWeightLimit = cacheStats.weightLimit; if (!showStatsWithBuffs) { // Always increase weight limit by buff bonus because it should always show real weight limit in UIs cacheWeightLimit += Data.GetBuffStats().weightLimit; } if (bonusAttributes == null) { bonusAttributes = new Dictionary <Attribute, short>(); } if (bonusResistances == null) { bonusResistances = new Dictionary <DamageElement, float>(); } if (bonusIncreaseDamages == null) { bonusIncreaseDamages = new Dictionary <DamageElement, MinMaxFloat>(); } if (bonusSkills == null) { bonusSkills = new Dictionary <Skill, short>(); } if (cacheEquipmentSets == null) { cacheEquipmentSets = new Dictionary <EquipmentSet, int>(); } Data.GetEquipmentSetBonus(out bonusStats, bonusAttributes, bonusResistances, bonusIncreaseDamages, bonusSkills, cacheEquipmentSets); // Increase stats by equipment set bonus cacheStats += bonusStats; cacheAttributes = GameDataHelpers.CombineAttributes(cacheAttributes, bonusAttributes); cacheResistances = GameDataHelpers.CombineResistances(cacheResistances, bonusResistances); cacheIncreaseDamages = GameDataHelpers.CombineDamages(cacheIncreaseDamages, bonusIncreaseDamages); cacheWeightLimit += bonusStats.weightLimit; if (uiTextWeightLimit != null) { uiTextWeightLimit.text = string.Format( LanguageManager.GetText(formatKeyWeightLimitStats), GameInstance.Singleton.GameplayRule.GetTotalWeight(Data).ToString("N2"), cacheWeightLimit.ToString("N2")); } CharacterItem rightHandItem = Data.EquipWeapons.rightHand; CharacterItem leftHandItem = Data.EquipWeapons.leftHand; Item rightHandWeapon = rightHandItem.GetWeaponItem(); Item leftHandWeapon = leftHandItem.GetWeaponItem(); Dictionary <DamageElement, MinMaxFloat> rightHandDamages = rightHandWeapon != null?GameDataHelpers.CombineDamages(cacheIncreaseDamages, rightHandWeapon.GetDamageAmount(rightHandItem.level, rightHandItem.GetEquipmentBonusRate(), Data)) : null; Dictionary <DamageElement, MinMaxFloat> leftHandDamages = leftHandWeapon != null?GameDataHelpers.CombineDamages(cacheIncreaseDamages, leftHandWeapon.GetDamageAmount(leftHandItem.level, leftHandItem.GetEquipmentBonusRate(), Data)) : null; if (uiTextWeaponDamages != null) { string textDamages = ""; if (rightHandWeapon != null) { MinMaxFloat sumDamages = GameDataHelpers.GetSumDamages(rightHandDamages); if (!string.IsNullOrEmpty(textDamages)) { textDamages += "\n"; } textDamages += string.Format( LanguageManager.GetText(formatKeyWeaponDamage), sumDamages.min.ToString("N0"), sumDamages.max.ToString("N0")); } if (leftHandWeapon != null) { MinMaxFloat sumDamages = GameDataHelpers.GetSumDamages(leftHandDamages); if (!string.IsNullOrEmpty(textDamages)) { textDamages += "\n"; } textDamages += string.Format( LanguageManager.GetText(formatKeyWeaponDamage), sumDamages.min.ToString("N0"), sumDamages.max.ToString("N0")); } if (rightHandWeapon == null && leftHandWeapon == null) { Item defaultWeaponItem = GameInstance.Singleton.DefaultWeaponItem; WeaponItemEquipType defaultWeaponItemType = defaultWeaponItem.EquipType; KeyValuePair <DamageElement, MinMaxFloat> damageAmount = defaultWeaponItem.GetDamageAmount(1, 1f, Data); textDamages = string.Format( LanguageManager.GetText(formatKeyWeaponDamage), damageAmount.Value.min.ToString("N0"), damageAmount.Value.max.ToString("N0")); } uiTextWeaponDamages.text = textDamages; } if (uiRightHandDamages != null) { if (rightHandWeapon == null) { uiRightHandDamages.Hide(); } else { uiRightHandDamages.Show(); uiRightHandDamages.Data = rightHandDamages; } } if (uiLeftHandDamages != null) { if (leftHandWeapon == null) { uiLeftHandDamages.Hide(); } else { uiLeftHandDamages.Show(); uiLeftHandDamages.Data = leftHandDamages; } } if (uiCharacterStats != null) { uiCharacterStats.Data = cacheStats; } if (uiCharacterResistances != null) { uiCharacterResistances.Data = cacheResistances; } if (CacheUICharacterAttributes.Count > 0 && Data != null) { CharacterAttribute tempCharacterAttribute; Attribute tempAttribute; short tempAmount; IList <CharacterAttribute> characterAttributes = Data.Attributes; for (int indexOfData = 0; indexOfData < characterAttributes.Count; ++indexOfData) { tempCharacterAttribute = characterAttributes[indexOfData]; tempAttribute = tempCharacterAttribute.GetAttribute(); UICharacterAttribute cacheUICharacterAttribute; tempAmount = 0; if (CacheUICharacterAttributes.TryGetValue(tempAttribute, out cacheUICharacterAttribute)) { if (cacheAttributes.ContainsKey(tempAttribute)) { tempAmount = cacheAttributes[tempAttribute]; } cacheUICharacterAttribute.Setup(new CharacterAttributeTuple(tempCharacterAttribute, tempAmount), Data, indexOfData); cacheUICharacterAttribute.Show(); } } } if (uiCharacterBuffs != null) { uiCharacterBuffs.UpdateData(Data); } }