From d4574f4bd7f3d9b0cbab52fbcd56943cfeadf48b Mon Sep 17 00:00:00 2001 From: MuHua-123 <136542559+MuHua-123@users.noreply.github.com> Date: Fri, 18 Jul 2025 18:00:52 +0800 Subject: [PATCH] 1 --- Assets/ModuleCore/Module/Character.meta | 8 ++ .../Module/Character/DataAttribute.cs | 64 ++++++++++++++ .../Module/Character/DataAttribute.cs.meta | 11 +++ .../Module/Character/DataCharacter.cs | 87 +++++++++++++++++++ .../{ => Character}/DataCharacter.cs.meta | 0 .../Module/Character/DataProfession.cs | 73 ++++++++++++++++ .../Module/Character/DataProfession.cs.meta | 11 +++ .../ModuleCore/Module/Character/DataRace.cs | 24 +++++ .../Module/Character/DataRace.cs.meta | 11 +++ Assets/ModuleCore/Module/DataCharacter.cs | 38 -------- Assets/ModuleCore/Module/Inventory.meta | 8 ++ .../Module/Inventory/DataBackpack.cs | 18 ++++ .../Module/Inventory/DataBackpack.cs.meta | 11 +++ .../Module/Inventory/DataEquipmentSlot.cs | 49 +++++++++++ .../Inventory/DataEquipmentSlot.cs.meta | 11 +++ .../Module/Inventory/DataInventory.cs | 20 +++++ .../Module/Inventory/DataInventory.cs.meta | 11 +++ .../Module/Inventory/DataStorage.cs | 18 ++++ .../Module/Inventory/DataStorage.cs.meta | 11 +++ Assets/ModuleCore/Module/Item.meta | 8 ++ .../ModuleCore/Module/Item/DataEquipment.cs | 25 ++++++ .../Module/Item/DataEquipment.cs.meta | 11 +++ Assets/ModuleCore/Module/Item/DataItem.cs | 48 ++++++++++ .../ModuleCore/Module/Item/DataItem.cs.meta | 11 +++ Assets/ModuleCore/Module/Item/DataMaterial.cs | 13 +++ .../Module/Item/DataMaterial.cs.meta | 11 +++ .../ModuleSingle/ManagerSimulator.cs | 20 +++++ .../ModuleSingle/ManagerSimulator.cs.meta | 11 +++ Assets/ModuleCore/ModuleTools/Dice.cs | 8 +- .../SampleScene/SampleScene.unity | 47 +++++++++- 30 files changed, 656 insertions(+), 41 deletions(-) create mode 100644 Assets/ModuleCore/Module/Character.meta create mode 100644 Assets/ModuleCore/Module/Character/DataAttribute.cs create mode 100644 Assets/ModuleCore/Module/Character/DataAttribute.cs.meta create mode 100644 Assets/ModuleCore/Module/Character/DataCharacter.cs rename Assets/ModuleCore/Module/{ => Character}/DataCharacter.cs.meta (100%) create mode 100644 Assets/ModuleCore/Module/Character/DataProfession.cs create mode 100644 Assets/ModuleCore/Module/Character/DataProfession.cs.meta create mode 100644 Assets/ModuleCore/Module/Character/DataRace.cs create mode 100644 Assets/ModuleCore/Module/Character/DataRace.cs.meta delete mode 100644 Assets/ModuleCore/Module/DataCharacter.cs create mode 100644 Assets/ModuleCore/Module/Inventory.meta create mode 100644 Assets/ModuleCore/Module/Inventory/DataBackpack.cs create mode 100644 Assets/ModuleCore/Module/Inventory/DataBackpack.cs.meta create mode 100644 Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs create mode 100644 Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs.meta create mode 100644 Assets/ModuleCore/Module/Inventory/DataInventory.cs create mode 100644 Assets/ModuleCore/Module/Inventory/DataInventory.cs.meta create mode 100644 Assets/ModuleCore/Module/Inventory/DataStorage.cs create mode 100644 Assets/ModuleCore/Module/Inventory/DataStorage.cs.meta create mode 100644 Assets/ModuleCore/Module/Item.meta create mode 100644 Assets/ModuleCore/Module/Item/DataEquipment.cs create mode 100644 Assets/ModuleCore/Module/Item/DataEquipment.cs.meta create mode 100644 Assets/ModuleCore/Module/Item/DataItem.cs create mode 100644 Assets/ModuleCore/Module/Item/DataItem.cs.meta create mode 100644 Assets/ModuleCore/Module/Item/DataMaterial.cs create mode 100644 Assets/ModuleCore/Module/Item/DataMaterial.cs.meta create mode 100644 Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs create mode 100644 Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs.meta diff --git a/Assets/ModuleCore/Module/Character.meta b/Assets/ModuleCore/Module/Character.meta new file mode 100644 index 0000000..b372ebb --- /dev/null +++ b/Assets/ModuleCore/Module/Character.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f600b7e509b166244a37c240ffee12ba +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/Module/Character/DataAttribute.cs b/Assets/ModuleCore/Module/Character/DataAttribute.cs new file mode 100644 index 0000000..3901ff2 --- /dev/null +++ b/Assets/ModuleCore/Module/Character/DataAttribute.cs @@ -0,0 +1,64 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 属性 - 数据 +/// +public class DataAttribute { + /// 力量(strength) + public int Str; + /// 敏捷(dexterity) + public int Dex; + /// 体质(constitution) + public int Con; + /// 智力(intelligence) + public int Int; + /// 感知(wisdom) + public int Wis; + /// 魅力(charisma) + public int Cha; + + /// 创建初始属性 + public static DataAttribute Initial() { + DataAttribute attribute = new DataAttribute(); + attribute.Str = Dice.RollAttribute(); + attribute.Dex = Dice.RollAttribute(); + attribute.Con = Dice.RollAttribute(); + attribute.Int = Dice.RollAttribute(); + attribute.Wis = Dice.RollAttribute(); + attribute.Cha = Dice.RollAttribute(); + return attribute; + } + // 计算属性调整值(属性值-10)/2 向下取整 + public int Modifier(int value) { + return (int)System.Math.Floor((value - 10) / 2.0); + } + /// 添加属性 + public void Add(DataAttribute value) { + Str += value.Str; + Dex += value.Dex; + Con += value.Con; + Int += value.Int; + Wis += value.Wis; + Cha += value.Cha; + } + /// 减少属性 + public void Sub(DataAttribute value) { + Str -= value.Str; + Dex -= value.Dex; + Con -= value.Con; + Int -= value.Int; + Wis -= value.Wis; + Cha -= value.Cha; + } + /// 覆盖属性 + public void Cover(DataAttribute value) { + Str = value.Str; + Dex = value.Dex; + Con = value.Con; + Int = value.Int; + Wis = value.Wis; + Cha = value.Cha; + } +} diff --git a/Assets/ModuleCore/Module/Character/DataAttribute.cs.meta b/Assets/ModuleCore/Module/Character/DataAttribute.cs.meta new file mode 100644 index 0000000..b2adddf --- /dev/null +++ b/Assets/ModuleCore/Module/Character/DataAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fb070bc540efae048ae79c8319c0c0e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/Module/Character/DataCharacter.cs b/Assets/ModuleCore/Module/Character/DataCharacter.cs new file mode 100644 index 0000000..e368026 --- /dev/null +++ b/Assets/ModuleCore/Module/Character/DataCharacter.cs @@ -0,0 +1,87 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 角色 - 数据 +/// +public class DataCharacter : DataAttribute { + /// 角色名字 + public string name; + /// 战斗等级 + public int level = 0; + /// 护甲等级 + public int armorClass = 0; + /// 经验点 + public Vector2Int expPoint; + /// 生命点 + public Vector2Int hitPoint; + + /// 基础属性 + public DataAttribute basic = Initial(); + /// 种族 + public DataRace race = DataRace.None(); + /// 职业 + public DataProfession profession = DataProfession.None(); + /// 装备栏 + public DataEquipmentSlot equipmentSlot = new DataEquipmentSlot(); + + /// 力量调整值(strength) + public int StrModifier => Modifier(Str); + /// 敏捷调整值(dexterity) + public int DexModifier => Modifier(Dex); + /// 体质调整值(constitution) + public int ConModifier => Modifier(Con); + /// 智力调整值(intelligence) + public int IntModifier => Modifier(Int); + /// 感知调整值(wisdom) + public int WisModifier => Modifier(Wis); + /// 魅力调整值(charisma) + public int ChaModifier => Modifier(Cha); + + /// 更新角色状态 + public void Update() { + // 更新属性 + Cover(basic); + // 添加种族属性 + Add(race); + // 添加职业属性 + Add(profession); + // 战斗等级 + level = profession.level; + // 护甲等级 + armorClass = 10 + DexModifier; + // 升级经验 = 100 * 3^level + expPoint.y = 100 * (int)Mathf.Pow(3, level); + // 最大生命值 + hitPoint.y = race.HitPoint() + profession.HitPoint(); + } + // 计算护甲等级(AC) + + // 无甲基础AC = 10 + + // 护甲 + // 重甲 敏捷加值无效‌ + // 中甲 敏捷加值上限‌+2 + // 轻甲 敏捷加值全额生效 + + // 盾牌 直接增加 + + // 法术 直接增加 + + // 打印角色卡 + public void PrintCharacterSheet() { + Debug.Log($"=== {name} LV{level} ==="); + Debug.Log($"种族: {race.name}"); + Debug.Log($"职业: {profession.name}"); + Debug.Log($"力量: {Str} ({StrModifier.ToString("+#;-#;+0")})"); + Debug.Log($"敏捷: {Dex} ({DexModifier.ToString("+#;-#;+0")})"); + Debug.Log($"体质: {Con} ({ConModifier.ToString("+#;-#;+0")})"); + Debug.Log($"智力: {Int} ({IntModifier.ToString("+#;-#;+0")})"); + Debug.Log($"感知: {Wis} ({WisModifier.ToString("+#;-#;+0")})"); + Debug.Log($"魅力: {Cha} ({ChaModifier.ToString("+#;-#;+0")})"); + Debug.Log($"经验值: {expPoint}"); + Debug.Log($"生命值: {hitPoint}"); + Debug.Log($"护甲等级: {armorClass})"); + } +} diff --git a/Assets/ModuleCore/Module/DataCharacter.cs.meta b/Assets/ModuleCore/Module/Character/DataCharacter.cs.meta similarity index 100% rename from Assets/ModuleCore/Module/DataCharacter.cs.meta rename to Assets/ModuleCore/Module/Character/DataCharacter.cs.meta diff --git a/Assets/ModuleCore/Module/Character/DataProfession.cs b/Assets/ModuleCore/Module/Character/DataProfession.cs new file mode 100644 index 0000000..4c3751e --- /dev/null +++ b/Assets/ModuleCore/Module/Character/DataProfession.cs @@ -0,0 +1,73 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +/// +/// 职业 - 数据 +/// +public class DataProfession : DataAttribute { + /// 职业名称 + public string name; + /// 职业等级 + public int level = 0; + /// 生命骰子 + public int hitDice = 0; + /// 累计生命点 + public List hitPoints = new List(); + + /// 升级:骰生命骰子+体质调整值 + public void Upgrade(int modifier) { + level++; + int hitPoint = Dice.Roll(hitDice) + modifier; + hitPoints.Add(hitPoint); + } + /// 生命点:每级生命点总和 + public int HitPoint() { + return hitPoints.Sum(); + } + + /// 无职业 + public static DataProfession None() { + return new DataProfession() { name = "无" }; + } + /// 战士职业 + public static DataProfession Warrior(int modifier) { + DataProfession profession = new DataProfession(); + // 战士,初始1级,1d10生命骰子,初始生命=满生命骰子+体质调整值 + profession.name = "战士"; + profession.level = 1; + profession.hitDice = 10; + profession.hitPoints.Add(profession.hitDice + modifier); + // 职业属性加成 + profession.Str = 2; + profession.Con = 1; + return profession; + } + /// 法师职业 + public static DataProfession Wizard(int modifier) { + DataProfession profession = new DataProfession(); + // 法师,初始1级,1d6生命骰子,初始生命=满生命骰子+体质调整值 + profession.name = "法师"; + profession.level = 1; + profession.hitDice = 6; + profession.hitPoints.Add(profession.hitDice + modifier); + // 职业属性加成 + profession.Int = 2; + profession.Dex = 1; + return profession; + } + /// 牧师职业 + public static DataProfession Cleric(int modifier) { + DataProfession profession = new DataProfession(); + // 牧师,初始1级,1d8生命骰子,初始生命=满生命骰子+体质调整值 + profession.name = "牧师"; + profession.level = 1; + profession.hitDice = 8; + profession.hitPoints.Add(profession.hitDice + modifier); + // 职业属性加成 + profession.Wis = 2; + profession.Con = 1; + return profession; + } +} diff --git a/Assets/ModuleCore/Module/Character/DataProfession.cs.meta b/Assets/ModuleCore/Module/Character/DataProfession.cs.meta new file mode 100644 index 0000000..f5ad694 --- /dev/null +++ b/Assets/ModuleCore/Module/Character/DataProfession.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9fd9942ce333fa94aa2297f3569a4939 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/Module/Character/DataRace.cs b/Assets/ModuleCore/Module/Character/DataRace.cs new file mode 100644 index 0000000..f6a27a2 --- /dev/null +++ b/Assets/ModuleCore/Module/Character/DataRace.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 种族 - 数据 +/// +public class DataRace : DataAttribute { + /// 种族名称 + public string name; + /// 基础生命点 + public int hitPoint = 10; + + /// 生命点:每级生命点总和 + public int HitPoint() { + return hitPoint; + } + + /// 无种族 + public static DataRace None() { + // 初始生命值10点 + return new DataRace() { name = "无" }; + } +} diff --git a/Assets/ModuleCore/Module/Character/DataRace.cs.meta b/Assets/ModuleCore/Module/Character/DataRace.cs.meta new file mode 100644 index 0000000..226d76e --- /dev/null +++ b/Assets/ModuleCore/Module/Character/DataRace.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e444293bdefc67346a3d80901305e4c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/Module/DataCharacter.cs b/Assets/ModuleCore/Module/DataCharacter.cs deleted file mode 100644 index 6afcde5..0000000 --- a/Assets/ModuleCore/Module/DataCharacter.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -/// -/// 角色 - 数据 -/// -public class DataCharacter { - /// 角色名字 - public string name; - /// 基础属性 - public DataAttribute basic; - /// 角色职业 - public DataProfession profession; -} -/// -/// 属性 - 数据 -/// -public class DataAttribute { - /// 力量(strength) - public int Str; - /// 敏捷(dexterity) - public int Dex; - /// 体质(constitution) - public int Con; - /// 智力(intelligence) - public int Int; - /// 感知(wisdom) - public int Wis; - /// 魅力(charisma) - public int Cha; -} -/// -/// 职业 - 数据 -/// -public class DataProfession : DataAttribute { - -} \ No newline at end of file diff --git a/Assets/ModuleCore/Module/Inventory.meta b/Assets/ModuleCore/Module/Inventory.meta new file mode 100644 index 0000000..3f161fe --- /dev/null +++ b/Assets/ModuleCore/Module/Inventory.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 31e213ee804e43848b56cd336a8025d4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/Module/Inventory/DataBackpack.cs b/Assets/ModuleCore/Module/Inventory/DataBackpack.cs new file mode 100644 index 0000000..3d337e9 --- /dev/null +++ b/Assets/ModuleCore/Module/Inventory/DataBackpack.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class DataBackpack : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/ModuleCore/Module/Inventory/DataBackpack.cs.meta b/Assets/ModuleCore/Module/Inventory/DataBackpack.cs.meta new file mode 100644 index 0000000..a836268 --- /dev/null +++ b/Assets/ModuleCore/Module/Inventory/DataBackpack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6f54ab1b3cd1a8f4d9ec1fb975e05ef6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs b/Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs new file mode 100644 index 0000000..bc26919 --- /dev/null +++ b/Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs @@ -0,0 +1,49 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 装备栏 - 数据 +/// +public class DataEquipmentSlot : DataInventory { + /// 武器1 + public DataWeapon Weapon1; + /// 武器2 + public DataWeapon Weapon2; + /// 护甲 + public DataArmor Armor; + /// 头盔 + public DataEquipment Helmets; + /// 手套 + public DataEquipment Gloves; + /// 鞋子 + public DataEquipment Shoes; + + public override bool Add(DataItem item) { + // 如果是武器,则尝试装备 + if (item is DataWeapon weapon) { return Wear(weapon); } + // 如果是护甲,则尝试装备 + if (item is DataArmor armor) { return Wear(armor); } + // 如果是其他,则尝试装备 + if (item is DataEquipment equipment) { return Wear(equipment); } + return false; + } + public override bool Remove(DataItem item) { + throw new System.NotImplementedException(); + } + + private bool Wear(DataWeapon weapon) { + Weapon1 = weapon; + return true; + } + private bool Wear(DataArmor armor) { + Armor = armor; + return true; + } + private bool Wear(DataEquipment equipment) { + if (equipment.equipmentType == EquipmentType.Helmets) { Helmets = equipment; return true; } + if (equipment.equipmentType == EquipmentType.Gloves) { Gloves = equipment; return true; } + if (equipment.equipmentType == EquipmentType.Shoes) { Shoes = equipment; return true; } + return false; + } +} diff --git a/Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs.meta b/Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs.meta new file mode 100644 index 0000000..1ef4b34 --- /dev/null +++ b/Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 83edeb48630d62a44a8d7c7551e9f0fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/Module/Inventory/DataInventory.cs b/Assets/ModuleCore/Module/Inventory/DataInventory.cs new file mode 100644 index 0000000..e18aa7d --- /dev/null +++ b/Assets/ModuleCore/Module/Inventory/DataInventory.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 物品库存 - 数据 +/// +public abstract class DataInventory { + /// 库存类型 + public InventoryType inventoryType; + + /// 添加物品 + public abstract bool Add(DataItem item); + /// 移除物品 + public abstract bool Remove(DataItem item); +} +/// +/// 库存类型枚举,区分背包、仓库等不同库存。 +/// +public enum InventoryType { EquipmentSlot, Backpack, Storage } \ No newline at end of file diff --git a/Assets/ModuleCore/Module/Inventory/DataInventory.cs.meta b/Assets/ModuleCore/Module/Inventory/DataInventory.cs.meta new file mode 100644 index 0000000..32a36f2 --- /dev/null +++ b/Assets/ModuleCore/Module/Inventory/DataInventory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 278351779c3c1514bbcce18723dd500c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/Module/Inventory/DataStorage.cs b/Assets/ModuleCore/Module/Inventory/DataStorage.cs new file mode 100644 index 0000000..7008903 --- /dev/null +++ b/Assets/ModuleCore/Module/Inventory/DataStorage.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class DataStorage : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/ModuleCore/Module/Inventory/DataStorage.cs.meta b/Assets/ModuleCore/Module/Inventory/DataStorage.cs.meta new file mode 100644 index 0000000..dba3136 --- /dev/null +++ b/Assets/ModuleCore/Module/Inventory/DataStorage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 943f05d3866fd8e4cb463a4f0597d0c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/Module/Item.meta b/Assets/ModuleCore/Module/Item.meta new file mode 100644 index 0000000..6535c7e --- /dev/null +++ b/Assets/ModuleCore/Module/Item.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da6831802283b3643bf03d784ccc5813 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/Module/Item/DataEquipment.cs b/Assets/ModuleCore/Module/Item/DataEquipment.cs new file mode 100644 index 0000000..d480a1c --- /dev/null +++ b/Assets/ModuleCore/Module/Item/DataEquipment.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 装备 - 数据 +/// +public class DataEquipment : DataItem { + /// 装备类型 + public EquipmentType equipmentType; +} +/// +/// 武器 - 数据 +/// +public class DataWeapon : DataEquipment { + /// 武器类型 + public WeaponType weaponType; +} +/// +/// 护甲 - 数据 +/// +public class DataArmor : DataEquipment { + /// 护甲类型 + public ArmorType armorType; +} \ No newline at end of file diff --git a/Assets/ModuleCore/Module/Item/DataEquipment.cs.meta b/Assets/ModuleCore/Module/Item/DataEquipment.cs.meta new file mode 100644 index 0000000..a19fe8c --- /dev/null +++ b/Assets/ModuleCore/Module/Item/DataEquipment.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c500c73626d889c4c8cac76a53f95b2d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/Module/Item/DataItem.cs b/Assets/ModuleCore/Module/Item/DataItem.cs new file mode 100644 index 0000000..2f3049a --- /dev/null +++ b/Assets/ModuleCore/Module/Item/DataItem.cs @@ -0,0 +1,48 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 物品 - 数据 +/// +public class DataItem { + /// 物品名称 + public string name; + /// 物品类型 + public ItemType itemType; +} +/// +/// 物品类型。 +/// +public enum ItemType { + Material, // 材料 + Equipment // 装备 +} +/// +/// 装备类型。 +/// +public enum EquipmentType { + Weapon, // 武器 + Armor, // 护甲 + Helmets, //头盔 + Gloves, // 手套 + Shoes, // 鞋子 +} +/// +/// 武器类型。 +/// +public enum WeaponType { + LightWeapon, // 轻型武器 + MediumWeapon, // 中型武器 + HeavyWeapon, //重型武器 + Shield, // 盾牌 +} +/// +/// 护甲类型。 +/// +public enum ArmorType { + ClothArmor, // 布甲 + LightArmor, // 轻甲 + MediumArmor, // 中甲 + HeavyArmor, // 重甲 +} \ No newline at end of file diff --git a/Assets/ModuleCore/Module/Item/DataItem.cs.meta b/Assets/ModuleCore/Module/Item/DataItem.cs.meta new file mode 100644 index 0000000..47b143e --- /dev/null +++ b/Assets/ModuleCore/Module/Item/DataItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 557ad290ccf27454baad3a04e41aec95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/Module/Item/DataMaterial.cs b/Assets/ModuleCore/Module/Item/DataMaterial.cs new file mode 100644 index 0000000..0562828 --- /dev/null +++ b/Assets/ModuleCore/Module/Item/DataMaterial.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 材料 - 数据 +/// +public class DataMaterial : DataItem { + /// 物品数量 + public int quantity; + /// 堆叠上限 + public int maxStack; +} diff --git a/Assets/ModuleCore/Module/Item/DataMaterial.cs.meta b/Assets/ModuleCore/Module/Item/DataMaterial.cs.meta new file mode 100644 index 0000000..698351d --- /dev/null +++ b/Assets/ModuleCore/Module/Item/DataMaterial.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d8fb2ebbb537271478ec399677a1b08a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs b/Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs new file mode 100644 index 0000000..15486f0 --- /dev/null +++ b/Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using MuHua; + +/// +/// 模拟器 - 管理 +/// +public class ManagerSimulator : ModuleSingle { + + public DataCharacter character; + + protected override void Awake() => NoReplace(false); + + private void Start() { + character = new DataCharacter(); + character.Update(); + character.PrintCharacterSheet(); + } +} diff --git a/Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs.meta b/Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs.meta new file mode 100644 index 0000000..8a506dc --- /dev/null +++ b/Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ce4cafcd40fff3428928289fa060de4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/ModuleTools/Dice.cs b/Assets/ModuleCore/ModuleTools/Dice.cs index b427900..8334791 100644 --- a/Assets/ModuleCore/ModuleTools/Dice.cs +++ b/Assets/ModuleCore/ModuleTools/Dice.cs @@ -8,9 +8,13 @@ using Random = UnityEngine.Random; /// 骰子 /// public static class Dice { - // 生成4d6弃最低的随机属性值 + /// 掷一次骰子 + public static int Roll(int value) { + return Random.Range(1, value + 1); + } + /// Attribute规则:投4次d6,去掉最低值 public static int RollAttribute() { - int[] rolls = { Random.Range(1, 7), Random.Range(1, 7), Random.Range(1, 7), Random.Range(1, 7) }; + int[] rolls = { Roll(6), Roll(6), Roll(6), Roll(6) }; Array.Sort(rolls); return rolls[1] + rolls[2] + rolls[3]; // 弃最低值 } diff --git a/Assets/SceneManager/SampleScene/SampleScene.unity b/Assets/SceneManager/SampleScene/SampleScene.unity index f3fd290..90e9ece 100644 --- a/Assets/SceneManager/SampleScene/SampleScene.unity +++ b/Assets/SceneManager/SampleScene/SampleScene.unity @@ -122,6 +122,50 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &169597751 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 169597752} + - component: {fileID: 169597753} + m_Layer: 0 + m_Name: ManagerSimulator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &169597752 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 169597751} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1439912283} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &169597753 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 169597751} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3ce4cafcd40fff3428928289fa060de4, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &670296962 GameObject: m_ObjectHideFlags: 0 @@ -140,7 +184,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &670296963 MonoBehaviour: m_ObjectHideFlags: 0 @@ -417,6 +461,7 @@ Transform: - {fileID: 963194228} - {fileID: 705507995} - {fileID: 1586181182} + - {fileID: 169597752} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1439912284