Esempio n. 1
0
    public override bool Exec(Actor _actor)
    {
        if (target == null)
        {
            return(true);
        }

        if (target.isDummy)
        {
            return(false);
        }
        if (GameCenter.curGameStage == null || !GameCenter.sceneMng.EnterSucceed)
        {
            return(false);
        }

        Vector3 targetPos = target.transform.position;
        Vector3 diff      = _actor.transform.position - targetPos;

        if (diff.sqrMagnitude <= minDistance * minDistance)
        {
            GameCenter.curMainPlayer.CurTarget = target;
            target.InteractionSound();
            switch (target.typeID)
            {
            case ObjectType.Unknown:
                break;

            case ObjectType.Player:
                break;

            case ObjectType.PreviewPlayer:
                break;

            case ObjectType.Mount:
                break;

            case ObjectType.MOB:
                break;

            case ObjectType.NPC:
                if (GameCenter.uIMng.HaveBigWnd())
                {
                    return(true);
                }
                List <NPC> npcs = GameCenter.curGameStage.GetNPCs();
                for (int i = 0; i < npcs.Count; i++)
                {
                    npcs[i].CancelBubble();
                }
                NPC npc = target as NPC;

                if (npc != null)
                {
                    npc.BeClick();
                }
                NPCTypeRef npcType = ConfigMng.Instance.GetNPCTypeRef(npc.id);
                if (npcType.function1 != 0)
                {
                    NewFunctionRef newFunction = ConfigMng.Instance.GetNewFunctionRef(npcType.function1);
                    if (GameCenter.mainPlayerMng.FunctionIsOpen((FunctionType)newFunction.Function_type))
                    {
                        if (newFunction.NPC_UI_type == 1)
                        {
                            GameCenter.uIMng.SwitchToUI((GUIType)Enum.Parse(typeof(GUIType), newFunction.NPC_UI_name));
                        }
                        else if (newFunction.NPC_UI_type == 2)
                        {
                            GameCenter.uIMng.SwitchToSubUI((SubGUIType)Enum.Parse(typeof(SubGUIType), newFunction.NPC_UI_name));
                        }
                    }
                    else
                    {
                        GameCenter.uIMng.SwitchToUI(GUIType.NPCDIALOGUE);
                    }
                }
                else if (npcType.function2 != 0)
                {
                    NewFunctionRef newFunction = ConfigMng.Instance.GetNewFunctionRef(npcType.function2);
                    if (GameCenter.mainPlayerMng.FunctionIsOpen((FunctionType)newFunction.Function_type))
                    {
                        if (newFunction.NPC_UI_type == 1)
                        {
                            GameCenter.uIMng.SwitchToUI((GUIType)Enum.Parse(typeof(GUIType), newFunction.NPC_UI_name));
                        }
                        else if (newFunction.NPC_UI_type == 2)
                        {
                            GameCenter.uIMng.SwitchToSubUI((SubGUIType)Enum.Parse(typeof(SubGUIType), newFunction.NPC_UI_name));
                        }
                    }
                    else
                    {
                        GameCenter.uIMng.SwitchToUI(GUIType.NPCDIALOGUE);
                    }
                }
                else
                {
                    GameCenter.uIMng.SwitchToUI(GUIType.NPCDIALOGUE);                            //走到NPC身边,打开NPC对话UI
                }
                break;

            case ObjectType.SceneItem:
                SceneItem sceneitem = target as SceneItem;
                if (sceneitem != null && sceneitem.IsTouchType == TouchType.TOUCH)
                {
                    if (GameCenter.mainPlayerMng.MainPlayerInfo.CurMountInfo != null && GameCenter.mainPlayerMng.MainPlayerInfo.CurMountInfo.IsRiding)    //下坐骑
                    {
                        GameCenter.newMountMng.C2S_ReqRideMount(ChangeMount.DOWNRIDE, GameCenter.mainPlayerMng.MainPlayerInfo.CurMountInfo.ConfigID, MountReqRideType.AUTO);
                    }
                }
                if (GameCenter.mainPlayerMng.MainPlayerInfo.CurSceneUiType == SceneUiType.RAIDERARK)
                {
                    if (GameCenter.activityMng.rewardId != 0)    //已携带宝珠错误提示
                    {
                        GameCenter.messageMng.AddClientMsg(456);
                        return(true);
                    }
                    if (Time.time > 15 && Time.time - GameCenter.activityMng.coldGetTime < 15)
                    {
                        MessageST msg = new MessageST();
                        msg.messID = 459;
                        msg.words  = new string[1] {
                            (15 - (int)(Time.time - GameCenter.activityMng.coldGetTime)).ToString()
                        };
                        GameCenter.messageMng.AddClientMsg(msg);
                        return(true);
                    }
                }
                if (sceneitem != null)
                {
                    sceneitem.BeClicked();
                }
                GameCenter.mainPlayerMng.C2S_TouchSceneItem(target.id);
                break;

            case ObjectType.Entourage:
                break;

            case ObjectType.DropItem:
                break;

            case ObjectType.FlyPoint:
                break;

            case ObjectType.CGObject:
                break;

            case ObjectType.Trap:
                break;

            case ObjectType.Model:
                //Model model = target as Model;
//                    if (model.Camp == GameCenter.mainPlayerMng.MainPlayerInfo.Camp)//走到雕像 如果阵营相同 请求能否膜拜并开窗
//                    GameCenter.campMng.C2S_CanWorship();
                GameCenter.uIMng.SwitchToUI(GUIType.NPCMORSHIP);
                break;

            default:
                break;
            }
            return(true);
        }
        return(false);
    }