123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424 |
- using UnityEngine;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using Newtonsoft.Json.Linq;
- namespace YLBattle
- {
- /// <summary>
- /// 角色适配器
- /// </summary>
- public class HeroAdapter : IFighterAdapter
- {
- /// <summary>
- ///
- /// </summary>
- private sm_hero mTle = null;
- /// <summary>
- /// 英雄实例数据
- /// </summary>
- private GameHeroVo mInst = null;
- /// <summary>
- /// 是否可以修改玩家数据
- /// </summary>
- private bool canModify = false;
- /// <summary>
- ///
- /// </summary>
- private int mSeat = 0;
- /// <summary>
- ///
- /// </summary>
- private bool isLeader = false;
- /// <summary>
- /// 友方
- /// </summary>
- private bool isNotLocalHero = false;
- /// <summary>
- /// 所属玩家ID
- /// </summary>
- private string mPlayerUID = string.Empty;
- /// <summary>
- /// 构造(pve)
- /// </summary>
- /// <param name="_strIid">(同服)实例ID</param>
- /// <param name="mSeatId">等级</param>
- public HeroAdapter(string _strIid, string mSeatId, bool bolLeader)
- {
- this.isNotLocalHero = false;
- this.mInst = UserProxy.Instance.player.collectHero.GetHeroGameInfoByHeroUId(_strIid);
- this.mTle = sm_hero.GetMoByID(this.mInst.typeId);
- this.canModify = true;
- this.mSeat = System.Convert.ToInt32(mSeatId);
- this.isLeader = bolLeader;
- }
- /// <summary>
- /// 预加载
- /// </summary>
- /// <param name="frindUID"></param>
- public HeroAdapter(string frindUID)
- {
- //JObject result = FriendProxy.Instance.FindRecordFriendSharedHeroInfo(frindUID);
- //if (result["sharedHero"] == null)
- //{
- // return;
- //}
- //GameHeroVo vo = GameCollectHero.ConverJobjToData(result["sharedHero"] as JObject);
- //this.mInst = vo;
- //this.mTle = sm_hero.GetMoByID(this.mInst.typeId);
- //this.canModify = true;
- //this.mSeat = -1;
- //this.isLeader = false;
- //this.isNotLocalHero = true;
- //this.mPlayerUID = frindUID;
- }
- /// <summary>
- /// PVP
- /// </summary>
- /// <param name="vo"></param>
- public HeroAdapter(GameHeroVo vo, int seat, bool isLeader)
- {
- this.mInst = vo;
- this.mTle = sm_hero.GetMoByID(this.mInst.typeId);
- this.canModify = true;
- this.mSeat = seat;
- this.isLeader = isLeader;
- this.isNotLocalHero = true;
- }
- /// <summary>
- /// Header
- /// </summary>
- /// <returns></returns>
- public bool IsLeader()
- {
- return this.isLeader;
- }
- /// <summary>
- /// 关联对象实例
- /// </summary>
- /// <returns>对象实例</returns>
- public object Inst()
- {
- return this.mInst;
- }
- /// <summary>
- /// 角色类型 0=小怪 1=英雄 (战斗中英雄使用公共技能槽)
- /// </summary>
- /// <returns></returns>
- public int RoleType()
- {
- return this.mTle.roletype;
- }
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- public string FName()
- {
- return this.mTle.name;
- }
- /// <summary>
- /// 玩家ID (友情帮助时才有此数据)
- /// </summary>
- /// <returns></returns>
- public string PlayerUID()
- {
- return this.mPlayerUID;
- }
- /// <summary>
- /// 英雄在游戏中的实例id
- /// </summary>
- /// <returns>英雄游戏实例id</returns>
- public string IID()
- {
- ///如果是友方,则附加前缀“F”防止ID重复
- return (this.isNotLocalHero == true ? "F" : "") + this.mInst.uid;
- }
- /// <summary>
- /// 模板ID
- /// </summary>
- /// <returns></returns>
- public string TID()
- {
- return this.mTle.heroId.ToString();
- }
- /// <summary>
- /// 技能列表
- /// </summary>
- /// <returns></returns>
- //public int CriticalPowerRate()
- //{
- // return SkillProxy.Instance.GetSkillCondiValue(this.mTle.manuSkill2); ;
- //}
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- public int Seat
- {
- set { this.mSeat = value; }
- get
- {
- return this.mSeat;
- }
- }
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- public string DragonboneName()
- {
- return this.mTle.dragonBoneMod;
- }
- /// <summary>
- /// 等级
- /// </summary>
- /// <returns></returns>
- public int Level()
- {
- return this.mInst.level;
- }
- /// <summary>
- /// 等阶
- /// </summary>
- /// <returns></returns>
- public int StrengthLevel()
- {
- return this.mInst.strengthLevel;
- }
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- public string NormalSound()
- {
- return this.mTle.normalSound;
- }
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- public string SkillSound()
- {
- return this.mTle.skillSound;
- }
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- public string BeattackSound()
- {
- return this.mTle.beattackSound;
- }
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- //public int Attack()
- //{
- // return this.mTle.wuligongji;
- //}
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- public int Agile()
- {
- return (int)((1 / this.mTle.gongjisudu) * 1000.0f);
- }
- #region 战斗技能
- /// <summary>
- /// 手动攻击技能
- /// </summary>
- /// <returns>技能模板id</returns>
- public string NormalSkill()
- {
- return this.mTle.normalSkill;
- }
- /// <summary>
- /// 主动技能1
- /// </summary>
- /// <returns>技能模板id</returns>
- public string ManuSkill1()
- {
- return this.mTle.manuSkill1;
- }
- /// <summary>
- /// 主动技能2
- /// </summary>
- /// <returns>技能模板id</returns>
- public string ManuSkill2()
- {
- return this.mTle.manuSkill2;
- }
- /// <summary>
- /// 队长技能
- /// </summary>
- /// <returns>技能模板id</returns>
- public string PassiveSkill()
- {
- return this.mTle.passiveSkill;
- }
- /// <summary>
- /// 队长技能
- /// </summary>
- /// <returns>技能模板id</returns>
- public string LeaderSkill()
- {
- return this.mTle.leaderSkill == null ? string.Empty : this.mTle.leaderSkill;
- }
- /// <summary>
- /// 获取英雄技能列表
- /// </summary>
- /// <returns>技能列表</returns>
- public string[] Skills()
- {
- return new string[] { this.mTle.normalSkill,
- this.mTle.manuSkill1,
- this.mTle.manuSkill2,
- this.mTle.passiveSkill
- };
- }
- /// <summary>
- /// 获取英雄技能列表
- /// </summary>
- /// <returns>技能列表</returns>
- [Obsolete("过时,2020.4.21")]
- public int SkillLevel(string tid)
- {
- string parm = string.Empty;
- if (tid == this.mTle.normalSkill)
- {
- parm = "normalSkill";
- }
- if (tid == this.mTle.manuSkill1)
- {
- parm = "manuSkill1";
- }
- if (tid == this.mTle.manuSkill2)
- {
- parm = "manuSkill2";
- }
- if (tid == this.mTle.passiveSkill)
- {
- parm = "passiveSkill";
- }
- return this.mInst.GetSkillLevel(parm);
- }
- /// <summary>
- /// 获取技能冷冻回合数
- /// </summary>
- /// <returns></returns>
- //public int GetSkillBeLockedRound(string skillId)
- //{
- // return SkillProxy.Instance.GetSkillCondiValue(skillId);
- //}
- #endregion
- /// <summary>
- ///
- /// </summary>
- /// <param name="ep"></param>
- /// <returns></returns>
- public double GetProperty(EBattleProperty ep)
- {
- ///属性值=初始值+成长*(等级-1)
- double pvalue = 0;
- switch (ep)
- {
- case EBattleProperty.HP:
- pvalue = this.mInst.getHpForBattle();
- break;
- case EBattleProperty.HPMAX:
- pvalue = this.mInst.getHpForBattle();
- break;
- case EBattleProperty.ATTACK:
- pvalue = this.mInst.getWuLiGongJiForBattle();
- break;
- case EBattleProperty.ATTACKSPEED:
- pvalue = this.mInst.getGongJiSuDuForBattle();
- break;
- case EBattleProperty.CRITICALPROB:
- //pvalue = this.mInst.getCriticalForBattle(); // 2020.6.3 根据策划指导修正暴击率
- pvalue = this.mInst.getCriticalRatioInBattle();
- break;
- case EBattleProperty.DEFENSE:
- pvalue = this.mInst.getFangYuHuJiaForBattle();
- break;
- case EBattleProperty.MAGICFORCE:
- pvalue = this.mInst.getMoFaKangXingForBattle();
- break;
- case EBattleProperty.MAGICSTRENGTH:
- pvalue = this.mInst.getFaShuQiangDuForBattle();
- break;
- case EBattleProperty.LEVEL:
- pvalue = this.mInst.level;
- break;
- case EBattleProperty.NMAXPOWER:
- pvalue = this.mTle.npower;
- break;
- case EBattleProperty.NPOWER:
- pvalue = this.mInst.getNengLiangZhi();
- break;
- case EBattleProperty.HEIGHT:
- pvalue = this.mTle.height;
- break;
- default:
- pvalue = 0;
- break;
- }
- return pvalue;
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="ep"></param>
- /// <param name="val"></param>
- public void ModifyProperty(EBattleProperty ep, float val)
- {
- }
- }
- }
|