using UnityEngine; using System.Collections; using System.Collections.Generic; using NetData; /// /// 描述:言灵世界数据 /// 作者: /// public class YLBattleUnit { public bool mIsHero = true; public GameHeroVo mHeroVo = null; public sm_hero mMonsterVo = null; /// /// 当前使用的技能 /// private string _curUseSkill = ""; /// /// 队长技ID /// /// public string SkillLeader() { if (mIsHero) { return this.mHeroVo.mo.skill_leader; } else { return this.mMonsterVo.skill_leader; } } /// /// 必杀ID /// /// public string GetSkillBisha() { if (mIsHero) { return this.mHeroVo.mo.skill_bisha; } else { return this.mMonsterVo.skill_bisha; } } /// /// 被动ID /// /// public string GetSKillBeidong() { if (mIsHero) { return this.mHeroVo.mo.skill_beidong; } else { return this.mMonsterVo.skill_beidong; } } /// /// 普攻ID /// /// 技能索引 /// 子技能索引(连招) /// public string GetSKillNormal(int skillIndex = 1, int subSkillIndex = 1) { int tempSkillIndex = skillIndex - 1; int tempSubSkillIndex = subSkillIndex - 1; if (mIsHero) { if (tempSkillIndex >= 0 && tempSkillIndex < this.mHeroVo.mo.GetNormalSkills().Count) { string tempSkill = this.mHeroVo.mo.GetNormalSkills()[tempSkillIndex]; if (tempSubSkillIndex >= 1) { sm_skill skill = sm_skill.GetMoByID(int.Parse(tempSkill)); List subSkills = skill.GetNextSkills(); if (tempSubSkillIndex - 1 < subSkills.Count) { return subSkills[tempSubSkillIndex - 1]; } } else { return tempSkill; } } } else { if (tempSkillIndex >= 0 && tempSkillIndex < mMonsterVo.GetNormalSkills().Count) { string tempSkill = mMonsterVo.GetNormalSkills()[tempSkillIndex]; if (tempSubSkillIndex >= 1) { sm_skill skill = sm_skill.GetMoByID(int.Parse(tempSkill)); List subSkills = skill.GetNextSkills(); if (tempSubSkillIndex - 1 < subSkills.Count) { return subSkills[tempSubSkillIndex - 1]; } } else { return tempSkill; } } } return ""; } /// /// 极限闪避ID /// /// public string GetSKillJixianshabi() { if (mIsHero) { return this.mHeroVo.mo.skill_jixianshanbi; } else { return this.mMonsterVo.skill_jixianshanbi; } } /// /// 获取当前使用的技能 /// /// public string GetCurUseSkill() { if (_curUseSkill == "") { _curUseSkill = GetSKillNormal(); } return _curUseSkill; } /// /// 设置当前使用的技能 /// /// public void SetCurUseSkill(string skillID) { _curUseSkill = skillID; } /// /// 唯一ID /// public int UID { get { return _UID; } } private int _UID = 0; private static int StaticUID = 100000; /// /// 模板ID /// public int TID { get { return _TID; } } private int _TID = 0; /// /// 怪物模版ID 去除等级后 /// public int MTID { get { return _MTID; } } private int _MTID; /// /// 等级 /// public int LV { get { return _LV; } } private int _LV = 0; /// /// 血量 /// public int HP { get { return _HP; } } private int _HP = 0; public int HP_Final { get { return _HP_Final; } set { _HP_Final = value; } } private int _HP_Final = 0; /// /// 最大血量 /// public int MaxHP { get { return _MaxHP; } } private int _MaxHP = 0; public int MaxHP_Final { get { return _MaxHP_Final; } set { _MaxHP_Final = value; } } private int _MaxHP_Final = 0; /// /// 魔法值 /// public int MP { get { return _MP; } } private int _MP = 0; public int MP_Final { get { return _MP_Final; } set { _MP_Final = value; } } private int _MP_Final = 0; /// /// 最大魔法值 /// public int MaxMP { get { return _MaxMP; } } private int _MaxMP = 0; public int MaxMP_Final { get { return _MaxMP_Final; } set { _MaxMP_Final = value; } } private int _MaxMP_Final = 0; /// /// 物攻 /// public int ATK { get { return _ATK; } } private int _ATK = 0; public int ATK_Final { get { return _ATK_Final; } set { _ATK_Final = value; } } private int _ATK_Final = 0; /// /// 护甲(物防) /// public int DEF { get { return _DEF; } } private int _DEF = 0; public int DEF_Final { get { return _DEF_Final; } set { _DEF_Final = value; } } private int _DEF_Final = 0; /// /// 魔攻 /// public int ADM { get { return _ADM; } } private int _ADM = 0; public int ADM_Final { get { return _ADM_Final; } set { _ADM_Final = value; } } private int _ADM_Final = 0; /// /// 魔防 /// public int MDF { get { return _MDF; } } private int _MDF = 0; public int MDF_Final { get { return _MDF_Final; } set { _MDF_Final = value; } } private int _MDF_Final = 0; /// /// 言力 /// public int YAN { get { return _YAN; } } private int _YAN = 0; public int YAN_Final { get { return _YAN_Final; } set { _YAN_Final = value; } } private int _YAN_Final = 0; /// /// 暴击率 /// public float CRT { get { return _CRT; } } private float _CRT = 0; public float CRT_Final { get { return _CRT_Final; } set { _CRT_Final = value; } } private float _CRT_Final = 0; /// /// 暴击伤害 /// public float CRD { get { return _CRD; } } private float _CRD = 0; public float CRD_Final { get { return _CRD_Final; } set { _CRD_Final = value; } } private float _CRD_Final = 0; /// /// 抗暴力 /// public float KBL { get { return _KBL; } } private float _KBL = 0; public float KBL_Final { get { return _KBL_Final; } set { _KBL_Final = value; } } private float _KBL_Final = 0; /// /// 攻击速度 /// public float ASP { get { return _ASP; } } private float _ASP = 0; public float ASP_Final { get { return _ASP_Final; } set { _ASP_Final = value; } } private float _ASP_Final = 0; /// /// 移动速度 /// public float MSP { get { return _MSP; } } private float _MSP = 0; public float MSP_Final { get { return _MSP_Final; } set { _MSP_Final = value; } } private float _MSP_Final = 0; /// /// CD 控制因子 /// public float CLT { get { return _CLT; } } private float _CLT = 0; public float CLT_Final { get { return _CLT_Final; } set { _CLT_Final = value; } } private float _CLT_Final = 0; /// /// 攻击范围 /// public float ARG { get { return _ARG; } } private float _ARG = 0; public float ARG_Final { get { return _ARG_Final; } set { _ARG_Final = value; } } private float _ARG_Final = 0; /// /// 观察范围 /// public float ORG { get { return _ORG; } } private float _ORG = 0; public float ORG_Final { get { return _ORG_Final; } set { _ORG_Final = value; } } private float _ORG_Final = 0; /// /// 晕眩 /// private int _BUFF_STU = 0; public int BUFF_STU { get { return _BUFF_STU; } set { _BUFF_STU = value; } } /// /// 静止 /// private int _BUFF_STA = 0; public int BUFF_STA { get { return _BUFF_STA; } set { _BUFF_STA = value; } } /// /// 护盾 /// private int _BUFF_SHI = 0; public int BUFF_SHI { get { return _BUFF_SHI; } set { _BUFF_SHI = value; } } /// /// 沉默 /// private int _BUFF_SIL = 0; public int BUFF_SIL { get { return _BUFF_SIL; } set { _BUFF_SIL = value; } } /// /// 灼烧burn /// private int _BUFF_BUR = 0; public int BUFF_BUR { get { return _BUFF_BUR; } set { _BUFF_BUR = value; } } /// /// 寒冰Ice /// CE private int _BUFF_ICE = 0; public int BUFF_ICE { get { return _BUFF_ICE; } set { _BUFF_ICE = value; } } /// /// 黑暗dim /// private int _BUFF_DIM = 0; public int BUFF_DIM { get { return _BUFF_DIM; } set { _BUFF_DIM = value; } } /// /// 霸体 SuperArmor 不被一切攻击打断 (不受眩晕 沉默 冰封 等效果限制) /// private float _SAR = 0; public float SAR { get { return _SAR; } } private float _SAR_Final = 0; public float SAR_Final { get { return _SAR_Final; } set { _SAR_Final = value; } } /// /// 构造 /// /// 数据 /// VO public YLBattleUnit(sm_hero monster, GameHeroVo hero = null) { // 普通单位 if (hero == null) { mIsHero = false; mMonsterVo = monster; _UID = StaticUID++; _TID = monster.heroId; _MTID = _TID / 100; _LV = 1; _HP = monster.hp; _MaxHP = monster.hp; _MP = 0; _MaxMP = monster.nengliangzhi; _ATK = monster.wuligongji; _DEF = monster.fangyuhujia; _ADM = monster.fashuqiangdu; _MDF = monster.mofakangxing; _CRT = monster.baoji; _ASP = monster.atkSpeed; _MSP = monster.moveSpeed; _ARG = monster.atkRange; _ORG = monster.alarmRange; _YAN = monster.yanli; _KBL = monster.kangbaoji; } // 英雄单位 else { mIsHero = true; mHeroVo = hero; _UID = int.Parse(hero.uid); _TID = int.Parse(hero.typeId); _MTID = _TID; _LV = hero.level; if (MapTcpProxy.Instance.Peer.Player.heroDict.ContainsKey(_UID)) { _HP = MapTcpProxy.Instance.Peer.Player.heroDict[_UID].hp; _MP = MapTcpProxy.Instance.Peer.Player.heroDict[_UID].mp; } else { _HP = (int)hero.getHpForBattle(); _MP = 0; } _MaxHP = (int)hero.getHpForBattle(); _MaxMP = (int)hero.getNengLiangZhiJiForBattle(); _ATK = (int)hero.getWuLiGongJiForBattle(); _DEF = (int)hero.getFangYuHuJiaForBattle(); _ADM = (int)hero.getFaShuQiangDuForBattle(); _MDF = (int)hero.getMoFaKangXingForBattle(); _CRT = (int)hero.getCriticalForBattle(); _YAN = (int)hero.getYanliForBattle(); _KBL = (int)hero.getKangbaojiForBattle(); _ASP = hero.mo.atkSpeed; _MSP = hero.mo.moveSpeed; _ARG = hero.mo.atkRange; _ORG = hero.mo.alarmRange; } _HP_Final = _HP; _MaxHP_Final = _MaxHP; _MP_Final = _MP; _MaxMP_Final = _MaxMP; _MSP_Final = _MSP; _ATK_Final = _ATK; _DEF_Final = _DEF; _ADM_Final = _ADM; _MDF_Final = _MDF; _CRT_Final = _CRT; _ASP_Final = _ASP; _MSP_Final = _MSP; _ARG_Final = _ARG; _ORG_Final = _ORG; _YAN_Final = _YAN; _KBL_Final = _KBL; } /// /// 刷新数据 去除 当前 HP 当前 MP /// /// 怪物数据 public void RefreshDataUnit(sm_hero monster, GameHeroVo hero = null) { // 普通单位 if (hero == null) { mIsHero = false; mMonsterVo = monster; //_UID = StaticUID++; _TID = monster.heroId; _MTID = _TID / 100; _LV = 1; // _HP = monster.hp; //_MaxHP = monster.hp; //_MP = 0; //_MaxMP = monster.nengliangzhi; _ATK = monster.wuligongji; _DEF = monster.fangyuhujia; _ADM = monster.fashuqiangdu; _MDF = monster.mofakangxing; _CRT = monster.baoji; _ASP = monster.atkSpeed; _MSP = monster.moveSpeed; _ARG = monster.atkRange; _ORG = monster.alarmRange; _YAN = monster.yanli; _KBL = monster.kangbaoji; } else { mIsHero = true; mHeroVo = hero; _UID = int.Parse(hero.uid); _TID = int.Parse(hero.typeId); _MTID = _TID; _LV = hero.level; //_HP = (int)hero.getHpForBattle(); //_MaxHP = (int)hero.getHpForBattle(); //_MP = 0; //_MaxMP = (int)hero.getNengLiangZhiJiForBattle(); _ATK = (int)hero.getWuLiGongJiForBattle(); _DEF = (int)hero.getFangYuHuJiaForBattle(); _ADM = (int)hero.getFaShuQiangDuForBattle(); _MDF = (int)hero.getMoFaKangXingForBattle(); _CRT = (int)hero.getCriticalForBattle(); _ASP = hero.mo.atkSpeed; _MSP = hero.mo.moveSpeed; _ARG = hero.mo.atkRange; _ORG = hero.mo.alarmRange; _YAN = hero.getYanliForBattle(); _KBL = hero.getKangbaojiForBattle(); } //_HP_Final = _HP; //_MaxHP_Final = _MaxHP; //_MP_Final = _MP; //_MaxMP_Final = _MaxMP; _MSP_Final = _MSP; _ATK_Final = _ATK; _DEF_Final = _DEF; _ADM_Final = _ADM; _MDF_Final = _MDF; _CRT_Final = _CRT; _ASP_Final = _ASP; _MSP_Final = _MSP; _ARG_Final = _ARG; _ORG_Final = _ORG; _YAN_Final = _YAN; _KBL_Final = _KBL; } /// /// 更新血量 /// /// public void UpdateHP(int val, bool updateUI = false) { if (val != 0) { _HP_Final += val; if (_HP_Final > _MaxHP_Final) { _HP_Final = _MaxHP_Final; } if (_HP_Final < 0) { _HP_Final = 0; } if (mIsHero) { MapTcpProxy.Instance.Peer.ReportDataChange((Info_Map_Player_Hero)this); } } if (updateUI) { BattleCanvas.Instance.ShowPlayerHP(_HP_Final, _MaxHP_Final); } } /// /// 重置血量 /// /// public void ResetHpMp() { _HP_Final = _MaxHP_Final; _MP_Final = _MaxMP_Final; if (mIsHero && BattleCanvas.Instance != null) { MapTcpProxy.Instance.Peer.ReportDataChange((Info_Map_Player_Hero)this); BattleCanvas.Instance.ShowPlayerHP(_HP_Final, _MaxHP_Final); BattleCanvas.Instance.ShowPlayerPower(_MP_Final, _MaxMP_Final); } } /// /// 世界BOSS更新血量 /// /// public void SetBossHP(int val, bool updateUI = false) { _HP_Final = val; if (_HP_Final > _MaxHP_Final) { _HP_Final = _MaxHP_Final; } if (_HP_Final < 0) { _HP_Final = 0; } if (updateUI) { BattleCanvas.Instance.ShowPlayerHP(_HP_Final, _MaxHP_Final); } } /// /// 更新蓝 /// /// public void UpdateMP(int val, bool updateUI = false) { if (val != 0) { _MP_Final += val; if (_MP_Final > _MaxMP_Final) { _MP_Final = _MaxMP_Final; } if (_MP_Final < 0) { _MP_Final = 0; } if (mIsHero) { MapTcpProxy.Instance.Peer.ReportDataChange((Info_Map_Player_Hero)this); } } if (updateUI) { BattleCanvas.Instance.ShowPlayerPower(_MP_Final, _MaxMP_Final); } } /// /// 更新蓝 /// /// public void SetMP(int val, bool updateUI = false) { MP_Final = val; if (MP_Final > MaxMP_Final) { MP_Final = MaxMP_Final; } if (mIsHero) { MapTcpProxy.Instance.Peer.ReportDataChange((Info_Map_Player_Hero)this); } if (updateUI) { BattleCanvas.Instance.ShowPlayerPower(_MP_Final, _MaxMP_Final); } } }