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})");
}
}