123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662 |
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- using NetData;
- /// <summary>
- /// 描述:言灵世界数据
- /// 作者:
- /// </summary>
- public class YLBattleUnit
- {
- public bool mIsHero = true;
- public GameHeroVo mHeroVo = null;
- public sm_hero mMonsterVo = null;
- /// <summary>
- /// 当前使用的技能
- /// </summary>
- private string _curUseSkill = "";
- /// <summary>
- /// 队长技ID
- /// </summary>
- /// <returns></returns>
- public string SkillLeader()
- {
- if (mIsHero)
- {
- return this.mHeroVo.mo.skill_leader;
- }
- else
- {
- return this.mMonsterVo.skill_leader;
- }
- }
- /// <summary>
- /// 必杀ID
- /// </summary>
- /// <returns></returns>
- public string GetSkillBisha()
- {
- if (mIsHero)
- {
- return this.mHeroVo.mo.skill_bisha;
- }
- else
- {
- return this.mMonsterVo.skill_bisha;
- }
- }
- /// <summary>
- /// 被动ID
- /// </summary>
- /// <returns></returns>
- public string GetSKillBeidong()
- {
- if (mIsHero)
- {
- return this.mHeroVo.mo.skill_beidong;
- }
- else
- {
- return this.mMonsterVo.skill_beidong;
- }
- }
- /// <summary>
- /// 普攻ID
- /// </summary>
- /// <param name="skillIndex">技能索引</param>
- /// <param name="subSkillIndex">子技能索引(连招)</param>
- /// <returns></returns>
- 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<string> 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<string> subSkills = skill.GetNextSkills();
- if (tempSubSkillIndex - 1 < subSkills.Count)
- {
- return subSkills[tempSubSkillIndex - 1];
- }
- }
- else
- {
- return tempSkill;
- }
- }
- }
- return "";
- }
- /// <summary>
- /// 极限闪避ID
- /// </summary>
- /// <returns></returns>
- public string GetSKillJixianshabi()
- {
- if (mIsHero)
- {
- return this.mHeroVo.mo.skill_jixianshanbi;
- }
- else
- {
- return this.mMonsterVo.skill_jixianshanbi;
- }
- }
- /// <summary>
- /// 获取当前使用的技能
- /// </summary>
- /// <returns></returns>
- public string GetCurUseSkill()
- {
- if (_curUseSkill == "")
- {
- _curUseSkill = GetSKillNormal();
- }
- return _curUseSkill;
- }
- /// <summary>
- /// 设置当前使用的技能
- /// </summary>
- /// <param name="skillID"></param>
- public void SetCurUseSkill(string skillID)
- {
- _curUseSkill = skillID;
- }
- /// <summary>
- /// 唯一ID
- /// </summary>
- public int UID { get { return _UID; } }
- private int _UID = 0;
- private static int StaticUID = 100000;
- /// <summary>
- /// 模板ID
- /// </summary>
- public int TID { get { return _TID; } }
- private int _TID = 0;
- /// <summary>
- /// 怪物模版ID 去除等级后
- /// </summary>
- public int MTID { get { return _MTID; } }
- private int _MTID;
- /// <summary>
- /// 等级
- /// </summary>
- public int LV { get { return _LV; } }
- private int _LV = 0;
- /// <summary>
- /// 血量
- /// </summary>
- 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;
- /// <summary>
- /// 最大血量
- /// </summary>
- 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;
- /// <summary>
- /// 魔法值
- /// </summary>
- 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;
- /// <summary>
- /// 最大魔法值
- /// </summary>
- 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;
- /// <summary>
- /// 物攻
- /// </summary>
- 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;
- /// <summary>
- /// 护甲(物防)
- /// </summary>
- 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;
- /// <summary>
- /// 魔攻
- /// </summary>
- 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;
- /// <summary>
- /// 魔防
- /// </summary>
- 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;
- /// <summary>
- /// 言力
- /// </summary>
- 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;
- /// <summary>
- /// 暴击率
- /// </summary>
- 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;
- /// <summary>
- /// 暴击伤害
- /// </summary>
- 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;
- /// <summary>
- /// 抗暴力
- /// </summary>
- 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;
- /// <summary>
- /// 攻击速度
- /// </summary>
- 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;
- /// <summary>
- /// 移动速度
- /// </summary>
- 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;
- /// <summary>
- /// CD 控制因子
- /// </summary>
- 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;
- /// <summary>
- /// 攻击范围
- /// </summary>
- 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;
- /// <summary>
- /// 观察范围
- /// </summary>
- 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;
- /// <summary>
- /// 晕眩
- /// </summary>
- private int _BUFF_STU = 0;
- public int BUFF_STU { get { return _BUFF_STU; } set { _BUFF_STU = value; } }
- /// <summary>
- /// 静止
- /// </summary>
- private int _BUFF_STA = 0;
- public int BUFF_STA { get { return _BUFF_STA; } set { _BUFF_STA = value; } }
- /// <summary>
- /// 护盾
- /// </summary>
- private int _BUFF_SHI = 0;
- public int BUFF_SHI { get { return _BUFF_SHI; } set { _BUFF_SHI = value; } }
- /// <summary>
- /// 沉默
- /// </summary>
- private int _BUFF_SIL = 0;
- public int BUFF_SIL { get { return _BUFF_SIL; } set { _BUFF_SIL = value; } }
- /// <summary>
- /// 灼烧burn
- /// </summary>
- private int _BUFF_BUR = 0;
- public int BUFF_BUR { get { return _BUFF_BUR; } set { _BUFF_BUR = value; } }
- /// <summary>
- /// 寒冰Ice
- /// </summary>CE
- private int _BUFF_ICE = 0;
- public int BUFF_ICE { get { return _BUFF_ICE; } set { _BUFF_ICE = value; } }
- /// <summary>
- /// 黑暗dim
- /// </summary>
- private int _BUFF_DIM = 0;
- public int BUFF_DIM { get { return _BUFF_DIM; } set { _BUFF_DIM = value; } }
- /// <summary>
- /// 霸体 SuperArmor 不被一切攻击打断 (不受眩晕 沉默 冰封 等效果限制)
- /// </summary>
- 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; } }
- /// <summary>
- /// 构造
- /// </summary>
- /// <param name="monster">数据</param>
- /// <param name="hero">VO</param>
- 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;
- }
- /// <summary>
- /// 刷新数据 去除 当前 HP 当前 MP
- /// </summary>
- /// <param name="monster">怪物数据</param>
- 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;
- }
- /// <summary>
- /// 更新血量
- /// </summary>
- /// <param name="val"></param>
- 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);
- }
- }
- /// <summary>
- /// 重置血量
- /// </summary>
- /// <param name="val"></param>
- 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);
- }
- }
- /// <summary>
- /// 世界BOSS更新血量
- /// </summary>
- /// <param name="val"></param>
- 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);
- }
- }
- /// <summary>
- /// 更新蓝
- /// </summary>
- /// <param name="val"></param>
- 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);
- }
- }
- /// <summary>
- /// 更新蓝
- /// </summary>
- /// <param name="val"></param>
- 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);
- }
- }
- }
|