Esempio n. 1
0
    public float pickMovePointDisThread  = 0.5f; //鼠标移动距离阈值,按下抬起的时间内累计位移不超过限制右键自动寻路有效
    //private    SceneEffectParamBase m_autoMoveEffectParam = new SceneEffectParamBase((int)ESceneEffectID.SE_Common_AutoMoveTargetPoint, null);

    private void updateFunction()
    {
        uint currentTick = GameLogicAPI.getTickCount();

        //检测鼠标的动作,更新鼠标状态
        //if (state == MouseState.HeroControl)
        //{

        if (bPickingMovePoint)
        {
            Vector2 mouseAxis = new Vector2(fMouseAxisX, fMouseAxisY);
            pickingMoveDis += mouseAxis.magnitude;

            if (skillCtrl && !skillCtrl.enable)
            {
                bPickingMovePoint = false; //屏蔽技能操作时,右键寻路功能也关闭
            }

            if ((skillCtrl && skillCtrl.isSelecting()) || pickingMoveDis > pickMovePointDisThread || currentTick > pickingMovePointEndTick)
            {
                bPickingMovePoint = false;
            }
        }

        if ((InputManager.GetMouseButtonUp(1)) && (bPickingMovePoint)) //右键寻路
        {
            bPickingMovePoint = false;
            CreatureStateMachine stateMachine = transform.GetComponent <CreatureStateMachine>();
            if (stateMachine != null)
            {
                Vector3 pickPos     = Vector3.zero;
                Vector3 selectPoint = getMousePosition();

                if (!UISystem.Instance.IsMouseOverUI())
                {
                    //执行了实体右键弹出菜单就不执行寻路
                    if (EntityRightMenu())
                    {
                        return;
                    }

                    // TODO : 去除右键按场景地点自动寻路功能
                    //RaycastHit hitInfo;
                    //Ray castRay = Initialize.mainCam.ScreenPointToRay(selectPoint);

                    //int LayerMaskOnGournd = (1 << LayerMask.NameToLayer(Config.LayerDefault) | 1 << LayerMask.NameToLayer(Config.LayerBuilding));

                    //bool isHit = Physics.Raycast(castRay, out hitInfo, 100, LayerMaskOnGournd);

                    //if (isHit)
                    //{
                    //    if (m_autoMoveEffectParam.ReturnComponent == null)
                    //        SceneEffectManager.Instance.CreateSceneEffect(ref m_autoMoveEffectParam);
                    //    {
                    //        m_autoMoveEffectParam.ReturnComponent.transform.position = hitInfo.point;
                    //        m_autoMoveEffectParam.ReturnComponent.ReplayEffect();
                    //    }

                    //    stateMachine.AutoMoveTo(hitInfo.point, false);
                    //}
                }
            }
        }
        else if (InputManager.GetMouseButtonDown(1) && GetAttachType() == (int)MouseAttachFuncType.None)
        {
            bPickingMovePoint       = true;
            pickingMoveDis          = 0.0f;
            pickingMovePointEndTick = currentTick + pickMovePointTickThread;
        }

        {
            CheckAttachFunc();

            //应策划要求,暂时关闭Alt+鼠标标记地图功能
            //if (InputManager.GetMouseButtonDown(0) && InputManager.GetKey(KeyCode.LeftAlt))
            //{
            //    if (!UISystem.Instance.IsMouseOverUI())
            //        OnTeamCommand(true);
            //}
            //if (InputManager.GetMouseButtonUp(0) || InputManager.GetKeyUp(KeyCode.LeftAlt))
            //{
            //    OnTeamCommand(false);
            //}

            if (m_currentAttachType != MouseAttachFuncType.None && InputManager.GetMouseButtonUp(0)) //左键插旗,抬键才算,不然会跟普通攻击冲突
            {
                //GFxMinimap minimap = SFGFxMovieManager.Instance.GetWindow("GFxMinimap") as GFxMinimap;
                //if (minimap != null)
                {
                    //如果点到UI上,则不插旗
                    if (!UISystem.Instance.IsMouseOverUI())
                    {
                        Vector3 hitPoint = new Vector3();
                        if (MouseRaycastToGround(ref hitPoint))
                        {
                            DoMouseAttachFunc(hitPoint.x, hitPoint.y, hitPoint.z);
                        }
                    }
                }
            }
        }

        switch (m_currentAttachType)
        {
        case MouseAttachFuncType.CtrlAttackSign:
            MouseCursorManager.Instance.MouseCursorType = EMouseCursorType.MCT_MouseAttack;
            break;

        case MouseAttachFuncType.AltAttackSign:
            MouseCursorManager.Instance.MouseCursorType = EMouseCursorType.MCT_MouseAttack;
            break;

        case MouseAttachFuncType.RetreatSign:
            MouseCursorManager.Instance.MouseCursorType = EMouseCursorType.MCT_MouseSign;
            break;

        default:
            if (MouseCursorManager.Instance.MouseCursorType == EMouseCursorType.MCT_MouseAttack ||
                MouseCursorManager.Instance.MouseCursorType == EMouseCursorType.MCT_MouseSign)
            {
                MouseCursorManager.Instance.MouseCursorType = EMouseCursorType.MCT_Normal;
            }
            break;
        }

        // AICommand模块
        if (InputManager.GetMouseButtonDown(0) && InputManager.GetKey(KeyCode.X))
        {
            if (!UISystem.Instance.IsMouseOverUI())
            {
                OnAICommand();
            }
        }

        if (!RotateWithMouse)
        {
            if (LockCursor && !InputManager.GetMouseButton(1))
            {
                LockCursor = false;
            }
            else if (!LockCursor && InputManager.GetMouseButton(1) && !UISystem.Instance.IsMouseOverUI())
            {
                LockCursor = true;
            }
        }
    }