using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 角色 - 数据 /// public class DataCharacter : DataAttribute { /// 角色名字 public string name; /// 经验点 public int expPoint; /// 种族 public DataRace race; /// 属性 public DataAttribute basis; /// 职业 public DataProfession profession; /// 装备栏 public DataEquipmentSlot equipmentSlot; /// 战斗等级 public int Level => GetLevel(); /// 生命点 public int HitPoint => GetHitPoint(); /// 护甲等级 public int ArmorClass => GetArmorClass(); public override int Str { get => basis.Str + race.Str; } public override int Dex { get => basis.Dex + race.Dex; } public override int Con { get => basis.Con + race.Con; } public override int Int { get => basis.Int + race.Int; } public override int Wis { get => basis.Wis + race.Wis; } public override int Cha { get => basis.Cha + race.Cha; } /// 设置职业 public void Settings(DataRace race) { this.race = race; } /// 设置职业 public void Settings(DataProfession profession) { this.profession = profession; profession.character = this; } /// 战斗等级 public int GetLevel() { // TODO:需要补充多职业的等级总和 return profession.level; } /// 生命点 public int GetHitPoint() { // TODO:需要补充多职业的生命值加成 return profession.HitPoint(); } /// 计算护甲等级(AC) public int GetArmorClass() { // TODO:需要补充专长,技能,熟练之类的加值 return equipmentSlot.GetArmorClass(DexModifier); } /// 创建默认角色 public static DataCharacter Create(string name) { DataCharacter character = new DataCharacter(); character.name = name; character.race = DataRace.None(); character.basis = Initial(); character.profession = DataProfession.None(); character.profession.Initial(character); character.equipmentSlot = new DataEquipmentSlot(); return character; } /// 创建默认角色 public static DataCharacter Create(string name, DataRace race, DataProfession profession) { DataCharacter character = new DataCharacter(); character.name = name; character.race = race; character.basis = Initial(); character.profession = profession; character.profession.Initial(character); character.equipmentSlot = new DataEquipmentSlot(); return character; } // 打印角色卡 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})"); } }