//[RuntimeInitializeOnLoadMethod] //public static void LoadFromRecord() { // CharacterInfo info = new CharacterInfo(); // info= info.Load<CharacterInfo>(); // Debug.Log(info.Items.Weapons.Count); //} public CharacterInfo(CharacterLogic Logic) { ID = Logic.GetID(); Level = Logic.GetLevel(); Exp = Logic.GetExp(); Career = Logic.GetCareer(); Attribute = Logic.GetAttribute(); CurrentHP = Logic.GetCurrentHP(); MaxHP = Logic.GetMaxHP(); Items = new ItemGroup(); Skills = new SkillGroup(); }
public void AttackUnit(CharacterLogic attacker, CharacterLogic defender, UnityAction onComplete) { //以Sequence的形式呈现战斗过程, gameMode.BeforePlaySequence(); gameMode.ResetSequence("Attack"); List <BattleAttackInfo> atkInfo = AssembleAttackSequenceEvent(gameMode.AddSequenceEvent <Sequence.AttackAnimation>, attacker, defender); var getExp = gameMode.AddSequenceEvent <Sequence.GetExp>(); int damageCount = 0; foreach (var v in atkInfo) { damageCount += v.damageToDefender; } bool enemyDead = damageCount >= defender.GetCurrentHP(); bool critical = false; getExp.Info = BattleLogic.GetAttackExp(attacker, defender.GetCareer(), defender.GetLevel(), enemyDead, damageCount, critical); gameMode.PlaySequence(onComplete); //计算处方向 然后在Unitshower里面转向并攻击,抖动 }
public static LevelUPInfo GetAttackExp(CharacterLogic logic, int defenderCareerRank, int defenderLevel, bool isEnemyDead, int damage, bool isCritical) { int attackerLevel = logic.GetLevel(); int attackerExp = logic.GetExp(); int careerRankDiff = 0; LevelUPInfo r = new LevelUPInfo(); int levelDiff = attackerLevel - defenderLevel; int exp = careerRankDiff * 20 + levelDiff + 10; exp = Mathf.Max(exp, 2); if (isEnemyDead) { exp *= 3; } else { if (isCritical) { exp *= 2; } } exp = Mathf.Min(100, exp); r.startExp = attackerExp; int finalExp = r.startExp + exp; r.endExp = finalExp % 100; r.startLevel = attackerLevel; r.endLevel = attackerLevel + finalExp / 100; if (r.endLevel > r.startExp) { CharacterAttribute add = GetGrow(logic.GetAttributeGrow()); r.abilityData = new List <LevelUPInfo.AbilityData>(); LevelUPInfo.AbilityData d = new LevelUPInfo.AbilityData(logic.GetAttribute().Array, add.Array); r.abilityData.Add(d); } return(r); }