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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 public void DevExtDemo_Add(CharacterStats result, CharacterStats b)
 {
     result.testStats = testStats + b.testStats;
 }
Пример #4
0
 public void DevExtDemo_Multiply(CharacterStats result, float multiplier)
 {
     result.testStats = testStats * multiplier;
 }
Пример #5
0
        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);
            }
        }