160 lines
8.7 KiB
C#
160 lines
8.7 KiB
C#
using System.Collections.Generic;
|
|
using Framework;
|
|
using UnityEngine;
|
|
namespace Gameplay.Character.Utils
|
|
{
|
|
public static class CharacterDataHelper
|
|
{
|
|
public static int GetCharacterSkillId(CharacterDataInfo characterInfo)
|
|
{
|
|
var skillLevelInfo = TableManager.Instance.Tables.CharacterSkillLevel.Get(characterInfo.Cfg.RoleID, (int)characterInfo.UltraSkillLevel);
|
|
var skillGroupId = skillLevelInfo.SkillGroupId;
|
|
var breakLevel = characterInfo.AwakeLevel;
|
|
var skillReferInfo = TableManager.Instance.Tables.SkillReferConfig.Get(skillGroupId);
|
|
var breakLevelIndex = (int)breakLevel;
|
|
var skillId = skillReferInfo.SkillIds[^1];
|
|
if (breakLevelIndex < 0 || breakLevelIndex >= skillReferInfo.SkillIds.Count)
|
|
{
|
|
DebugUtil.LogError("技能组ID:{0} 突破等级:{1} 无法找到对应的技能ID" , skillGroupId, breakLevel);
|
|
}
|
|
else
|
|
{
|
|
skillId = skillReferInfo.SkillIds[breakLevelIndex];
|
|
}
|
|
return skillId;
|
|
}
|
|
|
|
public static CharacterConfigData CombineConfigData(int npcId,
|
|
int npcLevel)
|
|
{
|
|
var monsterConfig = TableManager.Instance.Tables.Monster.Get(npcId);
|
|
var monsterTConfig = TableManager.Instance.Tables.MonsterClass.Get(monsterConfig.MonsterClassID);
|
|
var monsterLevelConfig = TableManager.Instance.Tables.MonsterLevelUp.Get(npcLevel);
|
|
|
|
var configData = new CharacterConfigData();
|
|
configData.level = npcLevel;
|
|
configData.attack = Mathf.CeilToInt(monsterTConfig.Attack * monsterConfig.AttackFix * monsterLevelConfig.AttackLevelUpTemplate);
|
|
var shootCd = 1f / monsterTConfig.ShootSpeed;
|
|
configData.shootCD = shootCd;
|
|
configData.firstShootTime = monsterTConfig.FirstShootTime;
|
|
configData.maxBulletCount = monsterTConfig.ManagazinContain;
|
|
configData.reloadTime = monsterTConfig.ChangeBulletTime;
|
|
configData.defense = Mathf.CeilToInt(monsterTConfig.Defence * monsterConfig.DefenceFix * monsterLevelConfig.DefenceLevelUpTemplate);
|
|
configData.defenseScale = monsterTConfig.DefenceStatusPara;
|
|
configData.maxHp = Mathf.CeilToInt(monsterTConfig.Hp * monsterConfig.HPFix * monsterLevelConfig.HpLevelUpTemplate);
|
|
configData.maxShield = Mathf.CeilToInt(monsterTConfig.Shield * monsterConfig.ShieldFix * monsterLevelConfig.ShieldLevelUpTemplate);
|
|
configData.moveSpeed = monsterTConfig.Speed;
|
|
configData.retreatSpeed = monsterTConfig.RetreatSpeed;
|
|
configData.shootDistance = monsterTConfig.ShootRange;
|
|
configData.moraleAttack = monsterTConfig.YaZhi;
|
|
configData.initMorale = monsterTConfig.MaxMorale;
|
|
configData.maxMorale = monsterTConfig.MaxMorale;
|
|
configData.suppressMorale = monsterTConfig.SuppressMorale;
|
|
configData.retreatMorale = monsterTConfig.RetreatMorale;
|
|
configData.moraleRecover = (int)monsterTConfig.CorrageRecover;
|
|
configData.damagePepoleScale = monsterTConfig.DamageToHuman;
|
|
configData.damageCarsScale = monsterTConfig.DamageToCarrier;
|
|
configData.criticalRate = monsterTConfig.CriticalRatio;
|
|
configData.criticalScale = monsterTConfig.CriticalDamage;
|
|
configData.moveShootType = monsterTConfig.MoveShootType;
|
|
configData.breakShootType = (int)monsterTConfig.ShootMode;
|
|
configData.perShootCount = monsterTConfig.PerShootCount;
|
|
configData.skillId = monsterTConfig.SkillId;
|
|
configData.turnSpeed = monsterTConfig.TurnSpeed;
|
|
configData.job = monsterTConfig.Job;
|
|
configData.faction = monsterTConfig.Fraction;
|
|
configData.rarity = 0;
|
|
configData.modelPath = monsterTConfig.PrefabPath;
|
|
configData.weaponId = monsterTConfig.WeaponId;
|
|
configData.crossLevel = monsterTConfig.MoveCrossLevel;
|
|
configData.standLevel = monsterTConfig.StandCrossLevel;
|
|
configData.findEnemyRange = monsterConfig.FindEnemyRange;
|
|
configData.eyeBrowsType = monsterTConfig.EmojiEyeBowsType;
|
|
configData.eyeBrowColor = monsterTConfig.EmojiEyeBowsColor;
|
|
configData.eyesColor = monsterTConfig.EmojiEyesColor;
|
|
configData.inFightEmojiId = monsterTConfig.DefaultEmojiImgId;
|
|
|
|
return configData;
|
|
}
|
|
|
|
public static CharacterConfigData CombineConfigData(CharacterDataInfo characterInfo)
|
|
{
|
|
var cId = characterInfo.Cfg.RoleID;
|
|
var characterData = TableManager.Instance.Tables.CharacterAttri.Get(cId);
|
|
var fakeLevel = (int)characterInfo.Level;
|
|
|
|
var levelIndex = fakeLevel - 1;
|
|
var attackDataList = characterData.Attack;
|
|
var defenceDataList = characterData.Defence;
|
|
var hpDataList = characterData.Hp;
|
|
var shieldDataList = characterData.Shield;
|
|
|
|
var levelAttack = attackDataList[levelIndex];
|
|
var levelDefence = defenceDataList[levelIndex];
|
|
var levelHp = hpDataList[levelIndex];
|
|
var levelShield = shieldDataList[levelIndex];
|
|
|
|
var skillId = GetCharacterSkillId(characterInfo);
|
|
|
|
var configData = new CharacterConfigData();
|
|
configData.level = fakeLevel;
|
|
configData.attack = levelAttack;
|
|
var shootCd = 1f / characterData.ShootSpeed;
|
|
configData.shootCD = shootCd;
|
|
configData.firstShootTime = characterData.FirstShootTime;
|
|
configData.maxBulletCount = characterData.ManagazinContain;
|
|
configData.reloadTime = characterData.ChangeBulletTime;
|
|
configData.defense = levelDefence;
|
|
configData.defenseScale = characterData.DefenceStatusPara;
|
|
configData.maxHp = levelHp;
|
|
configData.maxShield = levelShield;
|
|
configData.moveSpeed = characterData.Speed;
|
|
configData.retreatSpeed = characterData.RetreatSpeed;
|
|
configData.shootDistance = characterData.ShootRange;
|
|
configData.moraleAttack = (int)characterData.YaZhi;
|
|
configData.initMorale = characterData.MaxMorale;
|
|
configData.maxMorale = characterData.MaxMorale;
|
|
configData.suppressMorale = characterData.SuppressMorale;
|
|
configData.retreatMorale = characterData.RetreatMorale;
|
|
configData.moraleRecover = (int)characterData.CorrageRecover;
|
|
configData.damagePepoleScale = characterData.DamageToHuman;
|
|
configData.damageCarsScale = characterData.DamageToCarrier;
|
|
configData.criticalRate = characterData.CriticalRatio;
|
|
configData.criticalScale = characterData.CriticalDamage;
|
|
configData.moveShootType = characterData.MoveShootType;
|
|
configData.breakShootType = (int)characterData.ShootMode;
|
|
configData.perShootCount = characterData.PerShootCount;
|
|
configData.skillId = skillId;
|
|
configData.turnSpeed = characterData.TurnSpeed;
|
|
configData.job = characterData.Job;
|
|
configData.faction = characterData.Fraction;
|
|
configData.rarity = characterData.StartStar;
|
|
configData.modelPath = TableManager.Instance.Tables.SkinCfg.Get(Constants.DEFULT_SKINID,characterData.RoleID).PrefabPath;
|
|
configData.weaponId = characterData.WeaponId;
|
|
configData.crossLevel = characterData.MoveCrossLevel;
|
|
configData.standLevel = characterData.StandCrossLevel;
|
|
configData.boundTags = new List<int>();
|
|
configData.boundTags.Add((int)characterData.Fraction);
|
|
|
|
configData.shiledRecoverDelay = characterData.ShieldRecoverDelay;
|
|
configData.shieldRecoverFix = characterData.ShiledRecoverValueFixed;
|
|
configData.shiledRecoverPercent = characterData.ShiledRecoverValuePercent;
|
|
configData.overflowShield = characterData.OverFlowShiledMax;
|
|
|
|
configData.hpRecoverDelay = characterData.HPRecoverDelay;
|
|
configData.hpRecoverFix = characterData.HPRecoverValueFixed;
|
|
configData.hpRecoverPercent = characterData.HPRecoverValuePercent;
|
|
|
|
configData.attackShiledScale = characterData.AttackShiledScale;
|
|
configData.attackHpScale = characterData.AttackHpScale;
|
|
|
|
configData.eyeBrowsType = characterData.EmojiEyeBowsType;
|
|
configData.eyesColor = characterData.EmojiEyesColor;
|
|
configData.eyeBrowColor = characterData.EmojiEyeBowsColor;
|
|
configData.inFightEmojiId = characterData.DefaultEmojiImgId;
|
|
|
|
return configData;
|
|
}
|
|
}
|
|
}
|