Exemplo n.º 1
0
 /// <summary>
 /// 初始化,注册所有技能
 /// </summary>
 /// <returns></returns>
 public static bool Init()
 {
     SkillGameManager.m_dicAllSkillBase.Clear();
     SkillGameManager.Register(new SkillNone());
     SkillGameManager.Register(new SkillNormalAttack());
     return(true);
 }
Exemplo n.º 2
0
    public virtual void UpdateState()
    {
        Debug.Log("UpdateState");
        float y   = Input.mousePosition.y;
        float num = y / Screen.height;

        if (num > 0.27f && !this.m_bOutMainUI)
        {
            SkillBase skill = SkillGameManager.GetSkillBase(this.m_unSkillId);
            if (skill != null)
            {
                EnumErrorCodeCheckUse errorCode = skill.CheckUse(Singleton <BeastRole> .singleton.Id);
                if (errorCode != EnumErrorCodeCheckUse.eCheckErr_Success)
                {
                    this.ShowErrCheckUse(errorCode);
                }
                else
                {
                    this.m_bOutMainUI = true;
                    //当鼠标离开UI做的处理
                }
            }
        }
        if (num < 0.25f && this.m_bOutMainUI)
        {
            this.m_bOutMainUI = false;
            //当鼠标进入UI做的处理
        }
    }
Exemplo n.º 3
0
    public void Init(bool bForceReInit)
    {
        ResourceManager.singleton.SetAllLoadFinishedEventHandler(new Action <bool>(this.OnBeforeStartGameResourceLoadFinished));//当资源全部加载完成之后回调,进入登陆状态
        if (bForceReInit)
        {
            this.PreInit();
        }
        else
        {
            if (this.m_bHasInited)
            {
                return;
            }
        }
        this.m_bHasInited = true;
        Singleton <ScreenManager> .singleton.Init();//设置fps=60帧

        Singleton <PublishConfig> .singleton.Init();

        Singleton <WordFilter> .singleton.Init();

        GameConfig.singleton.Init();
        SkillGameManager.Init();
        GameConfig.singleton.DoGlobalConfig();  //设置游戏的运行速度
        Singleton <ConfigCS> .singleton.Init(); //电脑配置信息

        Singleton <UITipConfigMgr> .singleton.Init();

        Singleton <NetworkManager> .singleton.Init();

        Singleton <AudioManager> .singleton.Init();
    }
Exemplo n.º 4
0
    public override void Trigger()
    {
        int attackEftId   = 0;
        int beAttackEftId = 0;

        SkillGameManager.GetSkillAttackEffectId(this.SkillId, this.AttackerId, ref attackEftId, ref beAttackEftId);
        Beast beast = Singleton <BeastManager> .singleton.GetBeastById(this.AttackerId);

        if (beast != null)
        {
            DataSkillShow data = beast.GetSkillShow(this.SkillId);
            if (!this.MainBeAttacker && data != null)
            {
                if (data.SubHitEffectId != 0)
                {
                    beAttackEftId = data.SubHitEffectId;
                }
            }
            if (bShowMissEffect)
            {
                //显示MIss漂浮字样
            }
            else if (beAttackEftId > 0)
            {
                //取得被攻击者的位置,然后播放特效
                Vector3 vTargetPos = this.BeAttackPos.Count > 0 ? Hexagon.GetHex3DPos(this.BeAttackPos[0], Space.World) : Vector3.zero;
                EffectManager.Instance.PlayEffect(beAttackEftId,
                                                  this.BeAttackerId, Vector3.zero, null, 0L, vTargetPos, null, Vector3.zero);
            }
        }
    }
 public override bool OnSelectSkill(EnumSkillType eType, int unSkillId)
 {
     Debug.Log("Use Skill Select Skill");
     if (unSkillId == 0)
     {
         ActionState.Singleton.ChangeState(enumSubActionState.eSubActionState_Enable);
         return(true);
     }
     else if (this.m_curState.OnSelectSkill(eType, unSkillId))
     {
         return(true);
     }
     else
     {
         if (this.ChangeSkill(eType, unSkillId))
         {
             SkillBase skill = null;
             skill = SkillGameManager.GetSkillBase(unSkillId);
             EnumErrorCodeCheckUse errorCode = skill.CheckUse(Singleton <BeastRole> .singleton.Id);
             if (errorCode == EnumErrorCodeCheckUse.eCheckErr_Success)
             {
                 this.m_curState.OnLockOperation();
             }
             else
             {
                 this.m_curState.ShowErrCheckUse(errorCode);
                 ActionState.Singleton.ChangeState(enumSubActionState.eSubActionState_Enable);
             }
         }
     }
     return(true);
 }
Exemplo n.º 6
0
 public void PreInit()
 {
     this.m_log.Debug("ClientMain.PreInit()");
     StringConfigMgr.singleton.Init();
     ResourceManager.singleton.Init(UnityGameEntry.Instance.GetComponent("GameResourceManager") as IResourceManager);
     SkillGameManager.Init();
 }
Exemplo n.º 7
0
    public float GetHitTime()
    {
        Vector3 vDestPos = (this.ListBeAttackPos.Count > 0) ? Hexagon.GetHex3DPos(this.ListBeAttackPos[0], Space.World) : Vector3.zero;
        long    targetId = (this.ListBeAttackerId.Count > 0) ? this.ListBeAttackerId[0] : 0u;

        return(SkillGameManager.GetSkillHitTime(this.SkillID, this.AttackerId, targetId, vDestPos));
    }
Exemplo n.º 8
0
    protected virtual void ShowCastRange()
    {
        SkillBase skill = SkillGameManager.GetSkillBase(this.m_unSkillId);

        if (skill != null)
        {
            List <CVector3> castRange = skill.GetCastRange(Singleton <BeastRole> .singleton.Id);
            CSceneMgr.singleton.ShowCaseRange(castRange);
        }
    }
Exemplo n.º 9
0
 /// <summary>
 /// 神兽血量改变
 /// </summary>
 public void OnBeastHpChange()
 {
     foreach (var skill in this.m_listSkillData)
     {
         SkillBase skillStrategy = SkillGameManager.GetSkillBase(skill.Id);
         if (skillStrategy != null)
         {
             skillStrategy.OnBeastHpChange(this.m_unMasterBeastId);
         }
     }
 }
Exemplo n.º 10
0
    public override void Trigger()
    {
        XLog.Log.Debug("UseSkillEvent:Trigger:" + this.UseSkillParam.m_dwSkillId);
        base.Trigger();
        SkillBase skill = SkillGameManager.GetSkillBase(this.m_param.m_dwSkillId);

        if (skill != null)
        {
            skill.OnUseSkillAction(this.m_param);
        }
    }
Exemplo n.º 11
0
    public Beast(BeastData beastData)
    {
        if (null == beastData)
        {
            this.m_bIsErrorBeast = true;
            this.m_skillManager  = new SkillGameManager(0);
        }
        else
        {
            this.m_bIsErrorBeast = false;
            DataBeastlist dataBeast = null;
            GameData <DataBeastlist> .dataMap.TryGetValue(beastData.BeastTypeId, out dataBeast);

            if (dataBeast != null)
            {
                this.MaxMoveDis = dataBeast.Move;
                this.Hp         = dataBeast.Hp;
                if (dataBeast.Skill_1 > 0)
                {
                    this.m_listBeastOriginActivedSkillID.Add(dataBeast.Skill_1);
                }
                if (dataBeast.Skill_2 > 0)
                {
                    this.m_listBeastOriginActivedSkillID.Add(dataBeast.Skill_2);
                }
                if (dataBeast.Skill_3 > 0)
                {
                    this.m_listBeastOriginActivedSkillID.Add(dataBeast.Skill_3);
                }
                if (dataBeast.Skill_4 > 0)
                {
                    this.m_listBeastOriginActivedSkillID.Add(dataBeast.Skill_4);
                }
            }
            else
            {
                this.m_log.Error(string.Format("null == beastConfig: beastData.BeastTypeId=:{0}", beastData.BeastTypeId));
            }
            this.m_unBeastId     = beastData.Id;
            this.m_unPlayerId    = beastData.PlayerId;
            this.m_dwBeastTypeId = beastData.BeastTypeId;
            this.m_eCampType     = beastData.CampType;
            this.m_unHp          = beastData.Hp;
            this.m_suitId        = beastData.SuitId;
            this.m_skillManager  = new SkillGameManager(this.m_unBeastId);
            this.m_skillManager.AddSkill(1, false);
            foreach (var skillData in beastData.Skills)
            {
                this.m_skillManager.AddSkill(skillData, false, ESkillActivateType.SKILL_ACTIVATE_TYPE_INVALID);
            }
        }
    }
Exemplo n.º 12
0
    /// <summary>
    /// 取得技能延迟
    /// </summary>
    /// <param name="skillID"></param>
    /// <param name="attakerId"></param>
    /// <param name="beAttacker"></param>
    /// <param name="targetPos"></param>
    /// <returns></returns>
    public static float GetSkillDuration(int skillID, long attakerId, List <long> beAttacker, Vector3 targetPos)
    {
        SkillBase skill = SkillGameManager.GetSkillBase(skillID);

        if (skill != null)
        {
            return(skill.GetDuration(attakerId, beAttacker, targetPos));
        }
        else
        {
            return(0);
        }
    }
Exemplo n.º 13
0
    /// <summary>
    /// 获取技能特效的播放时间
    /// </summary>
    /// <param name="skillId"></param>
    /// <param name="attackerId"></param>
    /// <param name="targetId"></param>
    /// <param name="vTargetPos"></param>
    /// <param name="type"></param>
    /// <returns></returns>
    public static float GetSkillHitTime(int skillId, long attackerId, long targetId, Vector3 vTargetPos, EffectInstanceType type)
    {
        SkillBase skill = SkillGameManager.GetSkillBase(skillId);

        if (skill != null)
        {
            return(skill.GetHitTime(attackerId, targetId, vTargetPos, type));
        }
        else
        {
            return(-1);
        }
    }
Exemplo n.º 14
0
        /// <summary>
        /// 取得普通攻击范围内的所有敌人
        /// </summary>
        /// <param name="unMasterBeastId"></param>
        /// <returns></returns>
        public override List <CVector3> GetValidTargetHexs(long unMasterBeastId)
        {
            List <CVector3> listTargetHex = new List <CVector3>();
            Beast           beast         = Singleton <BeastManager> .singleton.GetBeastById(unMasterBeastId);

            if (beast == null || beast.IsError)
            {
                return(listTargetHex);
            }
            else
            {
                int       maxAttackDis = beast.MaxAttackDis;
                SkillBase skill        = SkillGameManager.GetSkillBase(this.m_unskillId);
                if (skill != null)
                {
                    List <long> list = new List <long>();
                    Singleton <ClientMain> .singleton.scene.GetNearEnemys(unMasterBeastId, maxAttackDis, ref list);

                    foreach (var id in list)
                    {
                        Beast beastById = Singleton <BeastManager> .singleton.GetBeastById(id);

                        if (beastById != null)
                        {
                            listTargetHex.Add(beastById.Pos);
                        }
                    }
                }

                /*
                 * ECampType nCamp = ECampType.CAMP_EMPIRE;
                 * if (Singleton<BeastRole>.singleton.CampType == ECampType.CAMP_EMPIRE)
                 * {
                 *  nCamp = ECampType.CAMP_LEAGUE;
                 * }
                 * CVector3 basePos = Singleton<ClientMain>.singleton.
                 */
                List <CVector3> targetList = new List <CVector3>();
                Singleton <ClientMain> .singleton.scene.GetNearNodesIgnoreObstruct(1, 1, beast.Pos, ref targetList, true, true);

                targetList.ForEach(delegate(CVector3 hex)
                {
                    if (listTargetHex.Contains(hex))
                    {
                        listTargetHex.Remove(hex);
                    }
                });
                return(listTargetHex);
            }
        }
Exemplo n.º 15
0
 /// <summary>
 /// 技能释放特效
 /// </summary>
 /// <param name="unSkillId"></param>
 /// <param name="castSkillParam"></param>
 public void OnCastSkillEffect(int unSkillId, CastSkillParam castSkillParam)
 {
     try
     {
         SkillBase skillStrategy = SkillGameManager.GetSkillBase(unSkillId);
         if (null != skillStrategy)
         {
             skillStrategy.OnCastSkillEffect(castSkillParam);
         }
     }
     catch (Exception ex)
     {
         this.m_log.Fatal(ex.ToString());
     }
 }
Exemplo n.º 16
0
 /// <summary>
 /// 激活所有技能
 /// </summary>
 public void ActiveSkills()
 {
     for (int i = 0; i < this.m_listSkillData.Count; i++)
     {
         SkillGameData skillData = this.m_listSkillData[i];
         if (!skillData.IsActive)
         {
         }
         SkillBase skillBase = SkillGameManager.GetSkillBase(skillData.Id);
         if (skillBase != null)
         {
             skillBase.Active(this.m_unMasterBeastId);
         }
     }
 }
Exemplo n.º 17
0
 /// <summary>
 /// 神兽释放技能表现
 /// </summary>
 /// <param name="skillId"></param>
 /// <param name="param"></param>
 public void OnCastSkillAction(int skillId, CastSkillParam param)
 {
     try
     {
         SkillBase skill = SkillGameManager.GetSkillBase(skillId);
         if (skill != null)
         {
             skill.OnCastAction(param);
         }
     }
     catch (Exception e)
     {
         this.m_log.Fatal(e.ToString());
     }
 }
Exemplo n.º 18
0
    /// <summary>
    /// 激活某个技能
    /// </summary>
    /// <param name="unSkillId"></param>
    public void ActiveSkill(int unSkillId)
    {
        SkillGameData skill = this.GetSkillById(unSkillId);

        if (skill != null && !skill.IsError)
        {
            if (!skill.IsActive)
            {
                //this.MasterBeast
            }
            SkillBase skillStrategy = SkillGameManager.GetSkillBase(skill.Id);
            if (skillStrategy != null)
            {
                skillStrategy.Active(this.m_unMasterBeastId);
            }
        }
    }
Exemplo n.º 19
0
    /// <summary>
    /// 取得该神兽能使用的技能列表
    /// </summary>
    /// <returns></returns>
    public List <int> GetCanUseSkills()
    {
        List <int> list = new List <int>();

        foreach (var data in this.m_listSkillData)
        {
            SkillBase skillStrategy = SkillGameManager.GetSkillBase(data.Id);
            if (skillStrategy != null)
            {
                if (skillStrategy.CheckUse(this.m_unMasterBeastId) == EnumErrorCodeCheckUse.eCheckErr_Success)
                {
                    list.Add(data.Id);
                }
            }
        }
        return(list);
    }
Exemplo n.º 20
0
    public override void OnEnter()
    {
        base.OnEnter();
        SkillBase skill = SkillGameManager.GetSkillBase(this.m_unSkillId);

        if (skill != null)
        {
            this.m_listValidTargetPos     = skill.GetValidTargetHexs(Singleton <BeastRole> .singleton.Id);
            this.m_listValidTargetBeastId = skill.GetValidTargetPlayers(Singleton <BeastRole> .singleton.Id);
        }
        Beast beast = Singleton <BeastManager> .singleton.GetBeastById(Singleton <BeastRole> .singleton.Id);

        //还没有攻击过
        if (beast.UsedAttackToBaseBuildingCount < 1)
        {
            Singleton <HexagonManager> .singleton.ShowHexagon(EnumShowHexagonType.eShowHexagonType_Highlight, this.m_listValidTargetPos);
        }
        //高亮角色模型(边缘外发光)
    }
Exemplo n.º 21
0
 private void Register(UseSkillBase skillState)
 {
     if (skillState != null)
     {
         SkillBase skill = SkillGameManager.GetSkillBase(skillState.SkillId);
         if (null == skill)
         {
             this.m_log.Error("null == skillBase,找不到该技能");
         }
         else
         {
             if (!this.m_dicSkillState.ContainsKey(skillState.SkillType))
             {
                 this.m_dicSkillState.Add(skillState.SkillType, new Dictionary <int, UseSkillBase>());
             }
             this.m_dicSkillState[skillState.SkillType][skillState.SkillId] = skillState;
         }
     }
 }
Exemplo n.º 22
0
    /// <summary>
    /// 创建被攻击者位置改变表现
    /// </summary>
    /// <param name="beAttackId"></param>
    /// <param name="fStartTime"></param>
    /// <param name="data"></param>
    /// <param name="fAnimEndTime"></param>
    /// <returns></returns>
    private float BuildBeAttackPosChangeShow(long beAttackId, float fStartTime, DataSkillShow data, ref float fAnimEndTime)
    {
        float   allTime     = fStartTime;
        float   delayTime   = data == null ? 0f : data.BeAttackJumpStartDelayTime;
        Vector3 vec3DestPos = (this.BeAttackPosList.Count > 0) ? Hexagon.GetHex3DPos(this.BeAttackPosList[0], Space.World) : Vector3.zero;
        float   hitTime     = SkillGameManager.GetSkillHitTime(this.SkillId, this.AttackerId, beAttackId, vec3DestPos, EffectInstanceType.Trace);

        if (this.BeAttackerPosChanges.ContainsKey(beAttackId))
        {
            foreach (var current in this.BeAttackerPosChanges[beAttackId])
            {
                ChangePosTrigger trigger = new ChangePosTrigger();
                trigger.SkillId              = this.SkillId;
                trigger.TargetPlayerID       = this.AttackerId;
                trigger.controlData.type     = current.type;
                trigger.controlData.PlayerId = current.PlayerId;
                trigger.controlData.DestPos.AddRange(current.DestPos);
                trigger.IsForward = SkillGameManager.IsBeAttackForward(this.SkillId);
                if (null != data)
                {
                    trigger.JumpEndAnim  = data.BeAttackJumpEndAnim;
                    trigger.JumpDuraAnim = data.BeAttackJumpDuraAnim;
                    if (current.type == ChangePosType.e_Jump)
                    {
                        trigger.Jumptime = ((data.BeAttackJumpSpeed <= 0f) ? data.BeAttackJumpTime : (this.GetDistanceByPos(current.DestPos[0]) / data.BeAttackJumpSpeed));
                        trigger.Height   = data.BeAttackJumpHeight;
                        trigger.EffectId = data.BeAttackJumpEffect;
                    }
                    else if (current.type == ChangePosType.e_Walk)
                    {
                        trigger.EffectId = data.BeAttackJumpEffect;
                    }
                }
                trigger.StartTime = allTime + delayTime + hitTime;
                trigger.Duration  = trigger.GetDuration();
                base.AddEvent(trigger);
                allTime      = trigger.StartTime + trigger.Duration;
                fAnimEndTime = allTime;
            }
        }
        return(allTime);
    }
Exemplo n.º 23
0
    /// <summary>
    /// 创建攻击者位置改变表现
    /// </summary>
    /// <param name="fStartTime"></param>
    /// <param name="fAnimEndTime"></param>
    /// <param name="dataSkillShow"></param>
    /// <returns></returns>
    private float BuildAttackPosChangeShow(float fStartTime, ref float fAnimEndTime, DataSkillShow dataSkillShow)
    {
        float time      = fStartTime;
        float delayTime = dataSkillShow == null ? 0f : dataSkillShow.AttackJumpStartDelayTime;

        foreach (var current in this.AttackerPosChanges)
        {
            ChangePosTrigger trigger = new ChangePosTrigger();
            trigger.controlData = current;
            trigger.StartTime   = time + delayTime;
            if (dataSkillShow != null)
            {
                trigger.JumpEndAnim  = dataSkillShow.AttackJumpEndAnim;
                trigger.JumpDuraAnim = dataSkillShow.AttackJumpDuraAnim;
                if (current.type == ChangePosType.e_Jump)
                {
                    trigger.Jumptime = ((dataSkillShow.AttackJumpSpeed <= 0f) ? dataSkillShow.AttackJumpTime : (this.GetDistanceByPos(current.DestPos[0]) / dataSkillShow.AttackJumpSpeed));
                    trigger.EffectId = dataSkillShow.AttackJumpEffect;
                    trigger.Height   = dataSkillShow.AttackJumpHeight;
                }
                else if (current.type == ChangePosType.e_Walk)
                {
                    trigger.EffectId = dataSkillShow.AttackJumpEffect;
                }
            }
            trigger.Duration  = trigger.GetDuration();
            trigger.SkillId   = this.SkillId;
            trigger.IsForward = SkillGameManager.IsAttackForward(this.SkillId);
            if (!current.IgnoreDuration)
            {
                time         = trigger.StartTime + trigger.Duration + 0.1f;
                fAnimEndTime = time;
            }
            if (this.BeAttackerList.Count > 0 && this.AttackerId != this.BeAttackerList[0])
            {
                trigger.TargetPlayerID = this.BeAttackerList[0];
            }
            base.AddEvent(trigger);
        }
        return(time);
    }
Exemplo n.º 24
0
    public override bool OnHoverPos(CVector3 pos)
    {
        if (m_listValidTargetPos.Exists((CVector3 p) => p.Equals(pos)))
        {
            SkillBase skill = SkillGameManager.GetSkillBase(this.m_unSkillId);
            if (skill != null)
            {
                List <CVector3> affectAreaByTargetBeast = skill.GetAffectAreaByTargetPos(Singleton <BeastRole> .singleton.Id, pos);
                Singleton <HexagonManager> .singleton.ShowHexagon(EnumShowHexagonType.eShowHexagonType_Affect, affectAreaByTargetBeast);

                List <long> affectBeastsByTargetBeast = skill.GetAffectBeastsByTargetPos(Singleton <BeastRole> .singleton.Id, pos);
                //高亮角色模型
            }
        }
        else
        {
            Singleton <HexagonManager> .singleton.ClearHexagon(EnumShowHexagonType.eShowHexagonType_Affect);

            //不显示角色模型高亮
        }
        return(true);
    }
Exemplo n.º 25
0
    public override bool OnHoverBeast(long beastId)
    {
        if (this.m_listValidTargetBeastId.Contains(beastId))
        {
            SkillBase skill = SkillGameManager.GetSkillBase(this.m_unSkillId);
            if (skill != null)
            {
                List <CVector3> affectAreaByTargetBeast = skill.GetAffectAreaByTargetBeast(Singleton <BeastRole> .singleton.Id, beastId);
                Singleton <HexagonManager> .singleton.ShowHexagon(EnumShowHexagonType.eShowHexagonType_Affect, affectAreaByTargetBeast);

                List <long> affectBeastsByTargetBeast = skill.GetAffectBeastsByTargetBeast(Singleton <BeastRole> .singleton.Id, beastId);
                //高亮角色模型
            }
        }
        else
        {
            Singleton <HexagonManager> .singleton.ClearHexagon(EnumShowHexagonType.eShowHexagonType_Affect);

            //不显示角色模型高亮
        }
        return(true);
    }
Exemplo n.º 26
0
 /// <summary>
 /// 释放技能
 /// </summary>
 /// <param name="skillId"></param>
 /// <param name="param"></param>
 public void OnCastSkill(int skillId, CastSkillParam param)
 {
     try
     {
         SkillGameData skillData = this.GetSkillById(skillId);
         if (skillData != null && !skillData.IsError)
         {
             foreach (var current in this.m_listSkillData)
             {
                 SkillBase skillBegin = SkillGameManager.GetSkillBase(current.Id);
                 if (skillBegin != null)
                 {
                     skillBegin.OnCastSkillBegin(this.m_unMasterBeastId, skillId);
                 }
             }
             SkillBase skill = SkillGameManager.GetSkillBase(skillData.Id);
             if (skill != null)
             {
                 param.unTargetSkillID = skillId;
                 skill.Cast(param);
             }
             foreach (var current in this.m_listSkillData)
             {
                 SkillBase skillEnd = SkillGameManager.GetSkillBase(current.Id);
                 if (skillEnd != null)
                 {
                     skillEnd.OnCastSkillBegin(this.m_unMasterBeastId, skillId);
                 }
             }
         }
     }
     catch (Exception e)
     {
         this.m_log.Fatal(e);
     }
 }
Exemplo n.º 27
0
    public float GetHitTime()
    {
        Vector3 vDestPos = this.BeAttackPos.Count > 0 ? Hexagon.GetHex3DPos(this.BeAttackPos[0], Space.World) : Vector3.zero;

        return(SkillGameManager.GetSkillHitTime(this.SkillId, this.AttackerId, this.BeAttackerId, vDestPos));
    }
Exemplo n.º 28
0
    /// <summary>
    /// 该技能是否被攻击者向前
    /// </summary>
    /// <param name="skillId"></param>
    /// <returns></returns>
    public static bool IsBeAttackForward(int skillId)
    {
        SkillBase skill = SkillGameManager.GetSkillBase(skillId);

        return(skill != null && skill.IsBeAttackForward);
    }
Exemplo n.º 29
0
    public float GetDuration()
    {
        Vector3 pos = this.BeAttackerPos.Count > 0 ? Hexagon.GetHex3DPos(this.BeAttackerPos[0], Space.World) : Vector3.zero;

        return(SkillGameManager.GetSkillDuration(this.SkillId, this.AttackerId, this.BeAttackerId, pos));
    }
Exemplo n.º 30
0
    private float BuildBeAttackSkillAnimShow(long beAttacker, float fStartTime, bool bMainBeAttack, DataSkillShow data, ref float fBeAttackStartTime)
    {
        float allTime = fStartTime;

        if (data != null)
        {
            Debug.Log("f32f3");
            Vector3 pos     = this.BeAttackPosList.Count > 0 ? Hexagon.GetHex3DPos(this.BeAttackPosList[0], Space.World) : Vector3.zero;
            float   hitTime = 0;
            //如果是普通攻击的话
            if (this.SkillId == 1)
            {
                hitTime = SkillGameManager.GetSkillHitTime(this.SkillId, this.AttackerId, beAttacker, pos);
            }
            else
            {
                //如果是技能的话
                hitTime = SkillGameManager.GetSkillHitTime(this.SkillId, this.AttackerId, beAttacker, pos, EffectInstanceType.Trace);
                if (data.AttackJumpSpeed > 0)
                {
                    hitTime += this.GetDistanceByTargetBeastId(beAttacker) / data.AttackJumpSpeed;
                }
            }
            float beAttackAnimStartDelayTime = data.AttackAnimStartDelayTime;
            allTime           += beAttackAnimStartDelayTime + hitTime;
            fBeAttackStartTime = allTime;
            if (this.HpChangeInfo.ContainsKey(beAttacker))
            {
                Debug.Log("3f2332");
                bool ShowAnim = false;
                if (!this.MissInfo.Contains(beAttacker))
                {
                    for (int i = 0; i < this.HpChangeInfo[beAttacker].Count; i++)
                    {
                        KeyValuePair <int, int> keyValuePair = this.HpChangeInfo[beAttacker][i];
                        if (keyValuePair.Key < keyValuePair.Value)
                        {
                            ShowAnim = true;
                        }
                    }
                }
                //配置文件里面配置被攻击者是否被攻击次数多次,如果不是就是默认1次
                int      attackCount = data.BeAttackCount > 0 ? data.BeAttackCount : 1;
                string[] arrayTime   = string.IsNullOrEmpty(data.BeAttackSpaceTime) ? new string[0] : data.BeAttackSpaceTime.Split(';');
                for (int i = 0; i < attackCount; i++)
                {
                    Debug.Log("ff23f23rfwecw");
                    BeAttackSkillTrigger trigger = new BeAttackSkillTrigger();
                    trigger.AttackerId   = this.AttackerId;
                    trigger.BeAttackerId = beAttacker;
                    trigger.StartTime    = allTime;
                    if (arrayTime.Length > 0)
                    {
                        trigger.IsSpaceAnim = i < attackCount - 1;
                        float duration = 0;
                        if (i < arrayTime.Length)
                        {
                            float.TryParse(arrayTime[i], out duration);
                        }
                        trigger.Duration = duration;
                    }
                    else if (data.BeAttackDuraTime > 0)
                    {
                        trigger.IsDuraAnim = true;
                        trigger.Duration   = data.BeAttackDuraTime;
                    }
                    else
                    {
                        trigger.Duration = trigger.GetDuration();
                    }
                    trigger.MainBeAttcker = beAttacker;
                    trigger.ShowAnim      = ShowAnim;
                    if (this.HpChangeInfo[beAttacker].Count > 0)
                    {
                        trigger.HpChange = this.HpChangeInfo[beAttacker][0].Key - this.HpChangeInfo[beAttacker][0].Value;
                    }
                    base.AddEvent(trigger);
                    if (i == attackCount - 1)
                    {
                        float fStartTime1 = data.BeAttackDuraTime > 0 ? trigger.StartTime + trigger.Duration : allTime;
                        this.BuildHpChangeShow(fStartTime1, beAttacker);
                    }
                    allTime = trigger.StartTime + trigger.Duration;
                }
            }
        }
        return(allTime);
    }