1
This commit is contained in:
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e350f02da82dedd459ba3280f586d116
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,16 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 附加 - 数据
|
||||
/// </summary>
|
||||
public class DataAddition {
|
||||
/// <summary> 护甲等级 </summary>
|
||||
public int armorClass = 0;
|
||||
|
||||
/// <summary> 添加属性 </summary>
|
||||
public void Add(DataAddition value) {
|
||||
armorClass += value.armorClass;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 451b46f5359088a46bc1efc7fcf7ff7b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f600b7e509b166244a37c240ffee12ba
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,77 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 属性 - 数据
|
||||
/// </summary>
|
||||
public class DataAttribute {
|
||||
/// <summary> 力量(strength) </summary>
|
||||
public virtual int Str { get; set; }
|
||||
/// <summary> 敏捷(dexterity) </summary>
|
||||
public virtual int Dex { get; set; }
|
||||
/// <summary> 体质(constitution) </summary>
|
||||
public virtual int Con { get; set; }
|
||||
/// <summary> 智力(intelligence) </summary>
|
||||
public virtual int Int { get; set; }
|
||||
/// <summary> 感知(wisdom) </summary>
|
||||
public virtual int Wis { get; set; }
|
||||
/// <summary> 魅力(charisma) </summary>
|
||||
public virtual int Cha { get; set; }
|
||||
|
||||
/// <summary> 力量调整值(strength) </summary>
|
||||
public int StrModifier => Modifier(Str);
|
||||
/// <summary> 敏捷调整值(dexterity) </summary>
|
||||
public int DexModifier => Modifier(Dex);
|
||||
/// <summary> 体质调整值(constitution) </summary>
|
||||
public int ConModifier => Modifier(Con);
|
||||
/// <summary> 智力调整值(intelligence) </summary>
|
||||
public int IntModifier => Modifier(Int);
|
||||
/// <summary> 感知调整值(wisdom) </summary>
|
||||
public int WisModifier => Modifier(Wis);
|
||||
/// <summary> 魅力调整值(charisma) </summary>
|
||||
public int ChaModifier => Modifier(Cha);
|
||||
|
||||
/// <summary> 创建初始属性 </summary>
|
||||
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);
|
||||
}
|
||||
/// <summary> 添加属性 </summary>
|
||||
public void Add(DataAttribute value) {
|
||||
Str += value.Str;
|
||||
Dex += value.Dex;
|
||||
Con += value.Con;
|
||||
Int += value.Int;
|
||||
Wis += value.Wis;
|
||||
Cha += value.Cha;
|
||||
}
|
||||
/// <summary> 减少属性 </summary>
|
||||
public void Sub(DataAttribute value) {
|
||||
Str -= value.Str;
|
||||
Dex -= value.Dex;
|
||||
Con -= value.Con;
|
||||
Int -= value.Int;
|
||||
Wis -= value.Wis;
|
||||
Cha -= value.Cha;
|
||||
}
|
||||
/// <summary> 覆盖属性 </summary>
|
||||
public void Cover(DataAttribute value) {
|
||||
Str = value.Str;
|
||||
Dex = value.Dex;
|
||||
Con = value.Con;
|
||||
Int = value.Int;
|
||||
Wis = value.Wis;
|
||||
Cha = value.Cha;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fb070bc540efae048ae79c8319c0c0e2
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,99 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 角色 - 数据
|
||||
/// </summary>
|
||||
public class DataCharacter : DataAttribute {
|
||||
/// <summary> 角色名字 </summary>
|
||||
public string name;
|
||||
/// <summary> 经验点 </summary>
|
||||
public int expPoint;
|
||||
/// <summary> 种族 </summary>
|
||||
public DataRace race;
|
||||
/// <summary> 属性 </summary>
|
||||
public DataAttribute basis;
|
||||
/// <summary> 职业 </summary>
|
||||
public DataProfession profession;
|
||||
/// <summary> 装备栏 </summary>
|
||||
public DataEquipmentSlot equipmentSlot;
|
||||
|
||||
/// <summary> 战斗等级 </summary>
|
||||
public int Level => GetLevel();
|
||||
/// <summary> 生命点 </summary>
|
||||
public int HitPoint => GetHitPoint();
|
||||
/// <summary> 护甲等级 </summary>
|
||||
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; }
|
||||
|
||||
/// <summary> 设置职业 </summary>
|
||||
public void Settings(DataRace race) {
|
||||
this.race = race;
|
||||
}
|
||||
/// <summary> 设置职业 </summary>
|
||||
public void Settings(DataProfession profession) {
|
||||
this.profession = profession;
|
||||
profession.character = this;
|
||||
}
|
||||
/// <summary> 战斗等级 </summary>
|
||||
public int GetLevel() {
|
||||
// TODO:需要补充多职业的等级总和
|
||||
return profession.level;
|
||||
}
|
||||
/// <summary> 生命点 </summary>
|
||||
public int GetHitPoint() {
|
||||
// TODO:需要补充多职业的生命值加成
|
||||
return profession.HitPoint();
|
||||
}
|
||||
/// <summary> 计算护甲等级(AC) </summary>
|
||||
public int GetArmorClass() {
|
||||
// TODO:需要补充专长,技能,熟练之类的加值
|
||||
return equipmentSlot.GetArmorClass(DexModifier);
|
||||
}
|
||||
|
||||
/// <summary> 创建默认角色 </summary>
|
||||
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;
|
||||
}
|
||||
/// <summary> 创建默认角色 </summary>
|
||||
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})");
|
||||
}
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 职业 - 数据
|
||||
/// </summary>
|
||||
public class DataProfession {
|
||||
/// <summary> 职业名称 </summary>
|
||||
public readonly string name;
|
||||
/// <summary> 生命骰子 </summary>
|
||||
public readonly int hitDice = 0;
|
||||
/// <summary> 角色 </summary>
|
||||
public DataCharacter character;
|
||||
/// <summary> 职业等级 </summary>
|
||||
public int level = 0;
|
||||
/// <summary> 累计生命点 </summary>
|
||||
public List<int> hitPoints = new List<int>();
|
||||
|
||||
public DataProfession(string name, int hitDice) {
|
||||
this.name = name;
|
||||
this.hitDice = hitDice;
|
||||
}
|
||||
/// <summary> 初始:满生命骰子 + 体质调整值 </summary>
|
||||
public void Initial(DataCharacter character) {
|
||||
this.character = character;
|
||||
level = 1;
|
||||
// 初始生命 =
|
||||
hitPoints = new List<int>();
|
||||
hitPoints.Add(hitDice + character.ConModifier);
|
||||
}
|
||||
/// <summary> 升级:骰生命骰子 + 体质调整值 </summary>
|
||||
public void Upgrade() {
|
||||
level++;
|
||||
int hitPoint = Dice.Roll(hitDice) + character.ConModifier;
|
||||
hitPoints.Add(hitPoint);
|
||||
}
|
||||
/// <summary> 生命点:每级生命点总和 </summary>
|
||||
public int HitPoint() {
|
||||
return hitPoints.Sum();
|
||||
}
|
||||
|
||||
/// <summary> 无职业 1d4 </summary>
|
||||
public static DataProfession None() {
|
||||
return new DataProfession("无", 4);
|
||||
}
|
||||
/// <summary> 随机职业 </summary>
|
||||
public static DataProfession Random() {
|
||||
int index = Dice.Roll(5);
|
||||
if (index == 1) { return Warrior(); }
|
||||
if (index == 2) { return Wizard(); }
|
||||
if (index == 3) { return Cleric(); }
|
||||
if (index == 4) { return Ranger(); }
|
||||
if (index == 5) { return Chanter(); }
|
||||
return None();
|
||||
}
|
||||
/// <summary> 战士 1d10 </summary>
|
||||
public static DataProfession Warrior() {
|
||||
return new DataProfession("战士", 10);
|
||||
}
|
||||
/// <summary> 法师 1d6 </summary>
|
||||
public static DataProfession Wizard() {
|
||||
return new DataProfession("法师", 6);
|
||||
}
|
||||
/// <summary> 牧师 1d8 </summary>
|
||||
public static DataProfession Cleric() {
|
||||
return new DataProfession("牧师", 8);
|
||||
}
|
||||
/// <summary> 游侠 1d8 </summary>
|
||||
public static DataProfession Ranger() {
|
||||
return new DataProfession("游侠", 8);
|
||||
}
|
||||
/// <summary> 歌者 1d6 </summary>
|
||||
public static DataProfession Chanter() {
|
||||
return new DataProfession("歌者", 6);
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9fd9942ce333fa94aa2297f3569a4939
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,67 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 种族 - 数据
|
||||
/// </summary>
|
||||
public class DataRace : DataAttribute {
|
||||
/// <summary> 种族名称 </summary>
|
||||
public readonly string name;
|
||||
|
||||
public DataRace(string name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
// 混血人类,木精灵,丘陵矮人(Hill Dwarf),龙裔,半精灵
|
||||
/// <summary> 无种族 </summary>
|
||||
public static DataRace None() {
|
||||
return new DataRace("未知");
|
||||
}
|
||||
/// <summary> 随机职业 </summary>
|
||||
public static DataRace Random() {
|
||||
int index = Dice.Roll(5);
|
||||
if (index == 1) { return Human(); }
|
||||
if (index == 2) { return Elven(); }
|
||||
if (index == 3) { return Dwarf(); }
|
||||
if (index == 4) { return Orc(); }
|
||||
if (index == 5) { return Halfling(); }
|
||||
return None();
|
||||
}
|
||||
/// <summary> 人类(Human) </summary>
|
||||
public static DataRace Human() {
|
||||
DataRace race = new DataRace("人类");
|
||||
// 种族属性加成 全属性+1
|
||||
race.Str = 1; race.Dex = 1; race.Con = 1;
|
||||
race.Int = 1; race.Wis = 1; race.Cha = 1;
|
||||
return race;
|
||||
}
|
||||
/// <summary> 精灵(Elven) </summary>
|
||||
public static DataRace Elven() {
|
||||
DataRace race = new DataRace("精灵");
|
||||
// 种族属性加成 敏捷+2 智力+2 感知+1
|
||||
race.Dex = 2; race.Int = 2; race.Int = 1;
|
||||
return race;
|
||||
}
|
||||
/// <summary> 矮人(Dwarf) </summary>
|
||||
public static DataRace Dwarf() {
|
||||
DataRace race = new DataRace("矮人");
|
||||
// 种族属性加成 力量+2 体质+2 感知+1
|
||||
race.Str = 2; race.Con = 2; race.Wis = 1;
|
||||
return race;
|
||||
}
|
||||
/// <summary> 半兽人(Orc) </summary>
|
||||
public static DataRace Orc() {
|
||||
DataRace race = new DataRace("半兽人");
|
||||
// 种族属性加成 力量+3 体质+2
|
||||
race.Str = 3; race.Con = 2;
|
||||
return race;
|
||||
}
|
||||
/// <summary> 半身人(Halfling) </summary>
|
||||
public static DataRace Halfling() {
|
||||
DataRace race = new DataRace("半身人");
|
||||
// 种族属性加成 敏捷+2 魅力+2 体质+1
|
||||
race.Dex = 2; race.Cha = 2; race.Con = 1;
|
||||
return race;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e444293bdefc67346a3d80901305e4c7
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,93 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 属性 - 数据
|
||||
/// </summary>
|
||||
public class DataAttribute {
|
||||
/// <summary> 力量(strength) </summary>
|
||||
public virtual int Str { get; set; }
|
||||
/// <summary> 敏捷(dexterity) </summary>
|
||||
public virtual int Dex { get; set; }
|
||||
/// <summary> 体质(constitution) </summary>
|
||||
public virtual int Con { get; set; }
|
||||
/// <summary> 智力(intelligence) </summary>
|
||||
public virtual int Int { get; set; }
|
||||
/// <summary> 感知(wisdom) </summary>
|
||||
public virtual int Wis { get; set; }
|
||||
/// <summary> 魅力(charisma) </summary>
|
||||
public virtual int Cha { get; set; }
|
||||
|
||||
/// <summary> 力量调整值(strength) </summary>
|
||||
public int StrModifier => AttributeTool.Modifier(Str);
|
||||
/// <summary> 敏捷调整值(dexterity) </summary>
|
||||
public int DexModifier => AttributeTool.Modifier(Dex);
|
||||
/// <summary> 体质调整值(constitution) </summary>
|
||||
public int ConModifier => AttributeTool.Modifier(Con);
|
||||
/// <summary> 智力调整值(intelligence) </summary>
|
||||
public int IntModifier => AttributeTool.Modifier(Int);
|
||||
/// <summary> 感知调整值(wisdom) </summary>
|
||||
public int WisModifier => AttributeTool.Modifier(Wis);
|
||||
/// <summary> 魅力调整值(charisma) </summary>
|
||||
public int ChaModifier => AttributeTool.Modifier(Cha);
|
||||
}
|
||||
/// <summary>
|
||||
/// 角色 - 数据
|
||||
/// </summary>
|
||||
public class DataCharacter : DataAttribute {
|
||||
/// <summary> 名字 </summary>
|
||||
public string name;
|
||||
/// <summary> 经验 </summary>
|
||||
public int expPoint;
|
||||
/// <summary> 种族 </summary>
|
||||
public DataRace race;
|
||||
/// <summary> 属性 </summary>
|
||||
public DataAttribute basis;
|
||||
/// <summary> 职业 </summary>
|
||||
public DataProfession profession;
|
||||
/// <summary> 装备 </summary>
|
||||
public DataEquipment equipment;
|
||||
|
||||
/// <summary> 战斗等级 </summary>
|
||||
public int Level => CharacterTool.GetLevel(this);
|
||||
/// <summary> 生命点 </summary>
|
||||
public int HitPoint => CharacterTool.GetHitPoint(this);
|
||||
/// <summary> 护甲等级 </summary>
|
||||
public int ArmorClass => CharacterTool.GetArmorClass(this);
|
||||
|
||||
/// <summary> 力量(strength) 基础值 + 种族加值 </summary>
|
||||
public override int Str { get => basis.Str + race.Str; }
|
||||
/// <summary> 敏捷(dexterity) 基础值 + 种族加值 </summary>
|
||||
public override int Dex { get => basis.Dex + race.Dex; }
|
||||
/// <summary> 体质(constitution) 基础值 + 种族加值 </summary>
|
||||
public override int Con { get => basis.Con + race.Con; }
|
||||
/// <summary> 智力(intelligence) 基础值 + 种族加值 </summary>
|
||||
public override int Int { get => basis.Int + race.Int; }
|
||||
/// <summary> 感知(wisdom) 基础值 + 种族加值 </summary>
|
||||
public override int Wis { get => basis.Wis + race.Wis; }
|
||||
/// <summary> 魅力(charisma) 基础值 + 种族加值 </summary>
|
||||
public override int Cha { get => basis.Cha + race.Cha; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 种族 - 数据
|
||||
/// </summary>
|
||||
public class DataRace : DataAttribute {
|
||||
/// <summary> 种族名称 </summary>
|
||||
public string name;
|
||||
}
|
||||
/// <summary>
|
||||
/// 职业 - 数据
|
||||
/// </summary>
|
||||
public class DataProfession {
|
||||
/// <summary> 职业名称 </summary>
|
||||
public string name;
|
||||
/// <summary> 生命骰子 </summary>
|
||||
public int hitDice = 0;
|
||||
/// <summary> 角色 </summary>
|
||||
public DataCharacter character;
|
||||
/// <summary> 职业等级 </summary>
|
||||
public int level = 0;
|
||||
/// <summary> 累计生命点 </summary>
|
||||
public List<int> hitPoints = new List<int>();
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 装备栏 - 库存
|
||||
/// </summary>
|
||||
public class DataEquipment {
|
||||
/// <summary> 武器1 </summary>
|
||||
public DataWeapon weapon1;
|
||||
/// <summary> 武器2 </summary>
|
||||
public DataWeapon weapon2;
|
||||
/// <summary> 护甲 </summary>
|
||||
public DataArmor armor;
|
||||
/// <summary> 头盔 </summary>
|
||||
public DataWear helmets;
|
||||
/// <summary> 手套 </summary>
|
||||
public DataWear gloves;
|
||||
/// <summary> 鞋子 </summary>
|
||||
public DataWear shoes;
|
||||
|
||||
/// <summary> 附加效果 </summary>
|
||||
public DataAddition addition = new DataAddition();
|
||||
}
|
||||
/// <summary>
|
||||
/// 附加 - 数据
|
||||
/// </summary>
|
||||
public class DataAddition {
|
||||
/// <summary> 护甲等级 </summary>
|
||||
public int armorClass = 0;
|
||||
/// <summary> 伤害骰子 </summary>
|
||||
public List<DataDamageDice> damageDices = new List<DataDamageDice>();
|
||||
}
|
||||
/// <summary>
|
||||
/// 伤害类型
|
||||
/// </summary>
|
||||
public enum DamageType { 穿刺, 挥砍, 钝击 }
|
||||
/// <summary>
|
||||
/// 伤害 - 数据
|
||||
/// </summary>
|
||||
public class DataDamageDice {
|
||||
/// <summary> 伤害骰子 </summary>
|
||||
public readonly int dice;
|
||||
/// <summary> 伤害类型 </summary>
|
||||
public readonly DamageType damageType;
|
||||
|
||||
public DataDamageDice(int dice, DamageType damageType) {
|
||||
this.dice = dice;
|
||||
this.damageType = damageType;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c500c73626d889c4c8cac76a53f95b2d
|
||||
guid: 62fae57d4dbef374ba92424caa7b6885
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
+14
-7
@@ -2,19 +2,26 @@ using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 库存类型枚举,区分背包、仓库等不同库存。
|
||||
/// </summary>
|
||||
public enum InventoryType { EquipmentSlot, Backpack, Storage }
|
||||
/// <summary>
|
||||
/// 物品库存 - 数据
|
||||
/// </summary>
|
||||
public abstract class DataInventory {
|
||||
/// <summary> 库存类型 </summary>
|
||||
public InventoryType inventoryType;
|
||||
|
||||
/// <summary> 添加物品 </summary>
|
||||
public abstract bool Add(DataItem item);
|
||||
/// <summary> 移除物品 </summary>
|
||||
public abstract bool Remove(DataItem item);
|
||||
}
|
||||
/// <summary>
|
||||
/// 库存类型枚举,区分背包、仓库等不同库存。
|
||||
/// 仓库 - 库存
|
||||
/// </summary>
|
||||
public enum InventoryType { EquipmentSlot, Backpack, Storage }
|
||||
public class DataStorage : DataInventory {
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 背包 - 库存
|
||||
/// </summary>
|
||||
public class DataBackpack : DataInventory {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEditor.EditorTools;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 物品类型
|
||||
/// </summary>
|
||||
public enum ItemType { 材料, 装备 }
|
||||
/// <summary>
|
||||
/// 物品 - 数据
|
||||
/// </summary>
|
||||
public class DataItem {
|
||||
/// <summary> 物品名称 </summary>
|
||||
public string name;
|
||||
/// <summary> 物品类型 </summary>
|
||||
public ItemType itemType;
|
||||
}
|
||||
/// <summary>
|
||||
/// 材料 - 数据
|
||||
/// </summary>
|
||||
public class DataMaterial : DataItem {
|
||||
/// <summary> 物品数量 </summary>
|
||||
public int quantity;
|
||||
/// <summary> 堆叠上限 </summary>
|
||||
public int maxStack;
|
||||
}
|
||||
/// <summary>
|
||||
/// 穿戴类型
|
||||
/// </summary>
|
||||
public enum WearType { 武器, 护甲, 头盔, 手套, 鞋子, }
|
||||
/// <summary>
|
||||
/// 穿戴 - 数据
|
||||
/// </summary>
|
||||
public class DataWear : DataItem {
|
||||
/// <summary> 装备类型 </summary>
|
||||
public WearType wearType;
|
||||
/// <summary> 附加列表 </summary>
|
||||
public List<DataAddition> additions = new List<DataAddition>();
|
||||
/// <summary> 附加效果 </summary>
|
||||
public virtual DataAddition Addition => EquipmentTool.Merge(additions);
|
||||
}
|
||||
/// <summary>
|
||||
/// 武器类型。
|
||||
/// </summary>
|
||||
public enum WeaponType { 轻型武器, 中型武器, 重型武器, 盾牌, }
|
||||
/// <summary>
|
||||
/// 武器 - 数据
|
||||
/// </summary>
|
||||
public class DataWeapon : DataWear {
|
||||
/// <summary> 武器类型 </summary>
|
||||
public WeaponType weaponType;
|
||||
}
|
||||
/// <summary>
|
||||
/// 护甲类型。
|
||||
/// </summary>
|
||||
public enum ArmorType { 布甲, 轻甲, 中甲, 重甲, }
|
||||
/// <summary>
|
||||
/// 护甲 - 数据
|
||||
/// </summary>
|
||||
public class DataArmor : DataWear {
|
||||
/// <summary> 护甲类型 </summary>
|
||||
public ArmorType armorType;
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 31e213ee804e43848b56cd336a8025d4
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,18 +0,0 @@
|
||||
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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6f54ab1b3cd1a8f4d9ec1fb975e05ef6
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,87 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 装备栏 - 数据
|
||||
/// </summary>
|
||||
public class DataEquipmentSlot : DataInventory {
|
||||
/// <summary> 武器1 </summary>
|
||||
public DataWeapon weapon1;
|
||||
/// <summary> 武器2 </summary>
|
||||
public DataWeapon weapon2;
|
||||
/// <summary> 护甲 </summary>
|
||||
public DataArmor armor;
|
||||
/// <summary> 头盔 </summary>
|
||||
public DataEquipment helmets;
|
||||
/// <summary> 手套 </summary>
|
||||
public DataEquipment gloves;
|
||||
/// <summary> 鞋子 </summary>
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary> 获取护甲等级 </summary>
|
||||
public int GetArmorClass(int modifier) {
|
||||
int addValue = GetAddValue();
|
||||
// 无甲 基础AC = 10,调整值全额生效
|
||||
if (armor == null) { return 10 + modifier + addValue; }
|
||||
// 布甲 调整值全额生效
|
||||
if (armor.armorType == ArmorType.ClothArmor) { }
|
||||
// 轻甲 调整值全额生效
|
||||
if (armor.armorType == ArmorType.LightArmor) { }
|
||||
// 中甲 调整值上限=2
|
||||
if (armor.armorType == ArmorType.MediumArmor) { modifier = Mathf.Min(modifier, 2); }
|
||||
// 重甲 调整值无效
|
||||
if (armor.armorType == ArmorType.HeavyArmor) { modifier = 0; }
|
||||
// 基础AC + 调整值 + 附加值
|
||||
return GetArmorClass(armor) + modifier + addValue;
|
||||
}
|
||||
/// <summary> 获取护甲等级 </summary>
|
||||
public int GetArmorClass(DataEquipment equipment) {
|
||||
return equipment.Addition().armorClass;
|
||||
}
|
||||
/// <summary> 获取护甲加值 </summary>
|
||||
public int GetAddValue() {
|
||||
int addValue = 0;
|
||||
// 武器1 加值
|
||||
if (weapon1 != null) { addValue += GetArmorClass(weapon1); }
|
||||
// 武器2 加值
|
||||
if (weapon2 != null) { addValue += GetArmorClass(weapon2); }
|
||||
// 头盔 加值
|
||||
if (helmets != null) { addValue += GetArmorClass(helmets); }
|
||||
// 手套 加值
|
||||
if (gloves != null) { addValue += GetArmorClass(gloves); }
|
||||
// 鞋子 加值
|
||||
if (shoes != null) { addValue += GetArmorClass(shoes); }
|
||||
return addValue;
|
||||
}
|
||||
|
||||
#region 穿戴
|
||||
private bool Wear(DataWeapon weapon) {
|
||||
weapon1 = weapon;
|
||||
return true;
|
||||
}
|
||||
private bool Wear(DataArmor armor) {
|
||||
this.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;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 83edeb48630d62a44a8d7c7551e9f0fb
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,18 +0,0 @@
|
||||
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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 943f05d3866fd8e4cb463a4f0597d0c5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: da6831802283b3643bf03d784ccc5813
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,24 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 护甲类型。
|
||||
/// </summary>
|
||||
public enum ArmorType {
|
||||
/// <summary> 布甲 </summary>
|
||||
ClothArmor,
|
||||
/// <summary> 轻甲 </summary>
|
||||
LightArmor,
|
||||
/// <summary> 中甲 </summary>
|
||||
MediumArmor,
|
||||
/// <summary> 重甲 </summary>
|
||||
HeavyArmor,
|
||||
}
|
||||
/// <summary>
|
||||
/// 护甲 - 数据
|
||||
/// </summary>
|
||||
public class DataArmor : DataEquipment {
|
||||
/// <summary> 护甲类型 </summary>
|
||||
public ArmorType armorType;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 062eefbb65fcc2e44aa8f4fe25fe7ab8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,35 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 装备类型。
|
||||
/// </summary>
|
||||
public enum EquipmentType {
|
||||
/// <summary> 武器 </summary>
|
||||
Weapon,
|
||||
/// <summary> 护甲 </summary>
|
||||
Armor,
|
||||
/// <summary> 头盔 </summary>
|
||||
Helmets,
|
||||
/// <summary> 手套 </summary>
|
||||
Gloves,
|
||||
/// <summary> 鞋子 </summary>
|
||||
Shoes,
|
||||
}
|
||||
/// <summary>
|
||||
/// 装备 - 数据
|
||||
/// </summary>
|
||||
public class DataEquipment : DataItem {
|
||||
/// <summary> 装备类型 </summary>
|
||||
public EquipmentType equipmentType;
|
||||
/// <summary> 附加效果 </summary>
|
||||
public List<DataAddition> additions;
|
||||
|
||||
/// <summary> 附加效果 </summary>
|
||||
public DataAddition Addition() {
|
||||
DataAddition addition = new DataAddition();
|
||||
additions.ForEach(obj => addition.Add(obj));
|
||||
return addition;
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 物品类型。
|
||||
/// </summary>
|
||||
public enum ItemType {
|
||||
/// <summary> 材料 </summary>
|
||||
Material,
|
||||
/// <summary> 装备 </summary>
|
||||
Equipment
|
||||
}
|
||||
/// <summary>
|
||||
/// 物品 - 数据
|
||||
/// </summary>
|
||||
public class DataItem {
|
||||
/// <summary> 物品名称 </summary>
|
||||
public string name;
|
||||
/// <summary> 物品类型 </summary>
|
||||
public ItemType itemType;
|
||||
}
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 材料 - 数据
|
||||
/// </summary>
|
||||
public class DataMaterial : DataItem {
|
||||
/// <summary> 物品数量 </summary>
|
||||
public int quantity;
|
||||
/// <summary> 堆叠上限 </summary>
|
||||
public int maxStack;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d8fb2ebbb537271478ec399677a1b08a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,24 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 武器类型。
|
||||
/// </summary>
|
||||
public enum WeaponType {
|
||||
/// <summary> 轻型武器 </summary>
|
||||
LightWeapon,
|
||||
/// <summary> 中型武器 </summary>
|
||||
MediumWeapon,
|
||||
/// <summary> 重型武器 </summary>
|
||||
HeavyWeapon,
|
||||
/// <summary> 盾牌 </summary>
|
||||
Shield,
|
||||
}
|
||||
/// <summary>
|
||||
/// 武器 - 数据
|
||||
/// </summary>
|
||||
public class DataWeapon : DataEquipment {
|
||||
/// <summary> 武器类型 </summary>
|
||||
public WeaponType weaponType;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0be9cb0c2accc804eb824de0e8ca3fa5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user