This commit is contained in:
MuHua-123
2025-07-23 18:01:18 +08:00
parent 8ebd3864c6
commit 5ca97fb0b1
54 changed files with 749 additions and 704 deletions
@@ -0,0 +1,42 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 装备 - 字典
/// </summary>
public static class ArmorDictionary {
/// <summary> 武器 </summary>
public static DataArmor Armor(string name, ArmorType armorType) {
DataArmor armor = new DataArmor();
armor.name = name;
armor.itemType = ItemType.;
armor.wearType = WearType.;
armor.armorType = armorType;
return armor;
}
/// <summary> 法师袍 ac10 </summary>
public static DataArmor Armor101() {
DataArmor armor = Armor("法师袍", ArmorType.);
armor.additions.Add(new DataAddition { armorClass = 10 });
return armor;
}
/// <summary> 皮甲 ac11 </summary>
public static DataArmor Armor201() {
DataArmor armor = Armor("皮甲", ArmorType.);
armor.additions.Add(new DataAddition { armorClass = 11 });
return armor;
}
/// <summary> 链甲 ac15 </summary>
public static DataArmor Armor301() {
DataArmor armor = Armor("链甲", ArmorType.);
armor.additions.Add(new DataAddition { armorClass = 15 });
return armor;
}
/// <summary> 板甲 ac18 </summary>
public static DataArmor Armor401() {
DataArmor armor = Armor("板甲", ArmorType.);
armor.additions.Add(new DataAddition { armorClass = 18 });
return armor;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f13627182bd77434991f32751b8c15f7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,106 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 装备栏 - 工具
/// </summary>
public static class EquipmentTool {
#region
/// <summary> 添加属性 </summary>
public static void Add(this DataAddition a, DataAddition b) {
a.armorClass += b.armorClass;
a.damageDices.AddRange(b.damageDices);
}
/// <summary> 合并属性 </summary>
public static DataAddition Merge(List<DataAddition> additions) {
DataAddition addition = new DataAddition();
additions.ForEach(obj => addition.Add(obj));
return addition;
}
/// <summary> 更新附加值 </summary>
public static void UpdateAddition(this DataEquipment equipment) {
DataAddition addition = new DataAddition();
if (equipment.weapon1 != null) { addition.Add(equipment.weapon1.Addition); }
if (equipment.weapon2 != null) { addition.Add(equipment.weapon2.Addition); }
if (equipment.armor != null) { addition.Add(equipment.armor.Addition); }
if (equipment.helmets != null) { addition.Add(equipment.helmets.Addition); }
if (equipment.gloves != null) { addition.Add(equipment.gloves.Addition); }
if (equipment.shoes != null) { addition.Add(equipment.shoes.Addition); }
equipment.addition = addition;
}
/// <summary> 获取护甲等级 </summary>
public static int ArmorClass(this DataEquipment equipment, int modifier) {
int addValue = equipment.addition.armorClass;
// 无甲 基础AC = 10 + 调整值 + 附加值
if (equipment.armor == null) { return 10 + modifier + addValue; }
// 布甲/轻甲 调整值全额生效
if (equipment.armor.armorType == ArmorType.) { }
// 调整值全额生效
if (equipment.armor.armorType == ArmorType.) { }
// 中甲 调整值上限=2
if (equipment.armor.armorType == ArmorType.) { modifier = Mathf.Min(modifier, 2); }
// 重甲 调整值无效‌
if (equipment.armor.armorType == ArmorType.) { modifier = 0; }
// 调整值 + 附加值
return modifier + addValue;
}
#endregion
#region 穿
/// <summary> 穿戴装备 </summary>
public static bool Wear(this DataEquipment equipment, DataWear wear, out DataWear old) {
old = wear; bool isWear = false;
if (wear.wearType == WearType.) { isWear = WearWeapon(equipment, wear, out old); }
if (wear.wearType == WearType.) { isWear = WearArmor(equipment, wear, out old); }
if (wear.wearType == WearType.) { isWear = WearHelmets(equipment, wear, out old); }
if (wear.wearType == WearType.) { isWear = WearGloves(equipment, wear, out old); }
if (wear.wearType == WearType.) { isWear = WearShoes(equipment, wear, out old); }
equipment.UpdateAddition();
return isWear;
}
/// <summary> 穿戴武器 </summary>
public static bool WearWeapon(this DataEquipment equipment, DataWear wear, out DataWear old) {
old = null;
// 校验是否为武器类型
if (!(wear is DataWeapon newWeapon)) { return false; }
// 情况1:主手为空,直接装备主手
if (equipment.weapon1 == null) { equipment.weapon1 = newWeapon; return true; }
// 情况2:副手为空,直接装备副手
if (equipment.weapon2 == null) { equipment.weapon2 = newWeapon; return true; }
// 情况3:主手副手都不为空,默认替换主手
old = equipment.weapon1;
equipment.weapon1 = newWeapon;
equipment.UpdateAddition();
return true;
}
/// <summary> 穿戴护甲 </summary>
public static bool WearArmor(this DataEquipment equipment, DataWear wear, out DataWear old) {
old = null;
// 校验是否为护甲类型
if (!(wear is DataArmor newArmor)) { return false; }
old = equipment.armor;
equipment.armor = newArmor;
return true;
}
/// <summary> 穿戴头盔 </summary>
public static bool WearHelmets(this DataEquipment equipment, DataWear wear, out DataWear old) {
old = equipment.helmets;
equipment.helmets = wear;
return true;
}
/// <summary> 穿戴手套 </summary>
public static bool WearGloves(this DataEquipment equipment, DataWear wear, out DataWear old) {
old = equipment.gloves;
equipment.gloves = wear;
return true;
}
/// <summary> 穿戴鞋子 </summary>
public static bool WearShoes(this DataEquipment equipment, DataWear wear, out DataWear old) {
old = equipment.shoes;
equipment.shoes = wear;
return true;
}
#endregion
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1fd627b70f23dd44493bf8fb1e577370
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,49 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 武器 - 字典
/// </summary>
public static class WeaponDictionary {
/// <summary> 武器 </summary>
public static DataWeapon Weapon(string name, WeaponType weaponType) {
DataWeapon weapon = new DataWeapon();
weapon.name = name;
weapon.itemType = ItemType.;
weapon.wearType = WearType.;
weapon.weaponType = weaponType;
return weapon;
}
/// <summary> 伤害骰子 </summary>
public static DataAddition DamageDice(int value, DamageType type) {
DataDamageDice dice = new DataDamageDice(value, type);
DataAddition addition = new DataAddition();
addition.damageDices.Add(dice);
return addition;
}
/// <summary> 匕首 1d4 </summary>
public static DataWeapon Weapon101() {
DataWeapon weapon = Weapon("匕首", WeaponType.);
weapon.additions.Add(DamageDice(4, DamageType.穿));
return weapon;
}
/// <summary> 木棒 1d6 </summary>
public static DataWeapon Weapon201() {
DataWeapon weapon = Weapon("木棒", WeaponType.);
weapon.additions.Add(DamageDice(6, DamageType.));
return weapon;
}
/// <summary> 巨棒 1d8 </summary>
public static DataWeapon Weapon301() {
DataWeapon weapon = Weapon("巨棒", WeaponType.);
weapon.additions.Add(DamageDice(8, DamageType.));
return weapon;
}
/// <summary> 木盾 ac1 </summary>
public static DataWeapon Weapon401() {
DataWeapon weapon = Weapon("木盾", WeaponType.);
weapon.additions.Add(new DataAddition { armorClass = 1 });
return weapon;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 32522aef438403f4d9ed01fe6650243b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: