using SepCore.Definition; namespace SepCore.CustomUtility { public static class WeaponUtility { public const int IdMultiplier = 1000; /// /// 根据武器种类与品质换算武器配置编号。 /// public static int GetWeaponId(WeaponType weaponType, Rarity rarity = Rarity.White) { return (int)weaponType * IdMultiplier + (int)rarity; } /// /// 根据武器编号反推武器种类。 /// public static WeaponType GetWeaponType(int weaponId) { return (WeaponType)(weaponId / IdMultiplier); } /// /// 根据武器编号反推武器品质。 /// public static Rarity GetRarity(int weaponId) { return (Rarity)(weaponId % IdMultiplier); } /// /// 获取指定种类与品质的武器配置。 /// public static WeaponConfig GetWeaponConfig(WeaponType weaponType, Rarity rarity = Rarity.White) { return GameEntry.Luban.Get(GetWeaponId(weaponType, rarity)); } /// /// 获取指定武器编号的武器配置。 /// public static WeaponConfig GetWeaponConfig(int weaponId) { return GameEntry.Luban.Get(weaponId); } /// /// 获取同种武器的下一阶品质配置(用于武器合成升阶)。 /// 若已达到最高品质(Red)则返回 false。 /// public static bool TryGetNextTierConfig(WeaponConfig current, out WeaponConfig nextTierConfig) { if (current.Rarity >= Rarity.Red) { nextTierConfig = null; return false; } int nextId = (int)current.WeaponType * IdMultiplier + ((int)current.Rarity + 1); nextTierConfig = GameEntry.Luban.Get(nextId); return nextTierConfig != null; } /// /// 计算同种武器的下一阶品质武器编号。 /// 若已达到最高品质(Red)则返回 false。 /// public static bool TryGetNextTierWeaponId(int currentWeaponId, out int nextWeaponId) { Rarity rarity = GetRarity(currentWeaponId); if (rarity >= Rarity.Red) { nextWeaponId = 0; return false; } nextWeaponId = currentWeaponId + 1; return true; } } }