コード例 #1
0
        /// <summary>
        /// 技能按键相应
        /// </summary>
        /// <param name="obj"></param>
        private void OnHotkey(IComponentEvent obj)
        {
            //战斗状态||过载模式 才响应
            if (m_ISpacecraftSkillProperty.GetCurrentState().GetMainState() == EnumMainState.Fight ||
                m_ISpacecraftSkillProperty.GetCurrentState().IsHasSubState(EnumSubState.Overload))
            {
                SkillCastEvent skillCastEvent = obj as SkillCastEvent;

                if (m_ISpacecraftSkillProperty.GetCurrentState().IsHasSubState(EnumSubState.Peerless) && !skillCastEvent.IsWeaponSkill) //转化炉模式只允许释放武器技能
                {
                    return;
                }

                int skillId = 0;
                if (skillCastEvent.IsWeaponSkill)
                {
                    skillId = skillCastEvent.SkillIndex; //非武器 表示第几个技能,武器则表示技能ID
                }
                else
                {
                    PlayerShipSkillVO skillVO = null;
                    skillVO = m_PlayerSkillProxy.GetShipSkillByIndex(skillCastEvent.SkillIndex); //由第几个技能,获取技能VO
                    if (skillVO == null)
                    {
                        return;
                    }

                    skillId = skillVO.GetID();
                }

                Leyoutech.Utility.DebugUtility.Log("技能按键响应", string.Format("技能 Id = {0} , 按下 = {1}", skillId, skillCastEvent.KeyPressed));

                //按下
                if (skillCastEvent.KeyPressed)
                {
                    //是否可释放
                    if (!CanReleaseSkill(skillId))
                    {
                        Leyoutech.Utility.DebugUtility.Log("技能按键响应", string.Format("技能 Id = {0} ,  不可释放", skillId));
                        return;
                    }

                    float fire_CountDown = m_CfgEternityProxy.GetGamingConfig(1).Value.Sound.Value.CountDown.Value.Fire;
                    m_ISpacecraftSkillProperty.SetFireCountdown(fire_CountDown);

                    ////执行预演播放,并请求服务器验证,如果失败则打断释放
                    ////执行释放
                    ReleaseSkill(skillId);

                    if (m_ISpacecraftSkillProperty.IsMain()) //主角
                    {
                        C2S_ButtonDown();
                    }

                    // Trigger 重复类技能记录
                    m_TriggerStartTime = Time.time;
                    m_TriggerSkillId   = skillId;
                    IsTrigger          = m_CfgEternityProxy.GetSkillData(skillId).BaseData.Value.IsTrigger;
                    m_TriggerLogicTime = m_CfgEternityProxy.GetSkillData(skillId).BaseData.Value.Triggertime;
                    m_ISpacecraftSkillProperty.SetSkillBttonIsDown(true);
                }
                else //抬起
                {
                    if (m_ISpacecraftSkillProperty.IsMain()) //主角
                    {
                        if (m_StateMachine.IsRunning && skillId == SkillID)
                        {
                            C2S_ButtonUp();
                        }
                    }

                    m_TriggerSkillId = -1;
                    IsTrigger        = false;
                    m_ISpacecraftSkillProperty.SetSkillBttonIsDown(false);
                }
            }
        }