public void StartInteract(bool isShowPauseAutoFightingTips = false)
        {
            // 帮派篝火要判断背包是否已满
            if (mClass == "guild_league_fire")
            {
                if (ItemManager.Instance.BagIsFull(1) == true)
                {
                    UINotice.Instance.ShowMessage(DBConstText.GetText("BAG_IS_FULL"));
                    return;
                }
            }

            // 跨服boss大宝箱
            if (mClass == "span_boss_big_box" || mClass == "span_boss_little_box")
            {
                if (CheckCanGetServerBossBox(true) == false)
                {
                    return;
                }
            }


            Actor localPlayer = Game.GetInstance().GetLocalPlayer();

            if (localPlayer == null)
            {
                return;
            }
            if (mCollectMode == ECollectMode.Click)
            {
                CollectionObjectManager.Instance.HideCollectionBar(mId);
            }
            ClientEventMgr.Instance.FireEvent((int)ClientEvent.SHOW_INTERACT_BUTTON, new CEventEventParamArgs(false, "", mInteractButtonPic, mId));

            if (mCollectTime > 0)
            {
                localPlayer.Stop();
                localPlayer.MoveCtrl.TryWalkAlongStop();
                TargetPathManager.Instance.TaskNavigationActive(false);
                InstanceManager.Instance.PauseAutoFighting(isShowPauseAutoFightingTips);
                localPlayer.BeginInteraction("action_1");
                //localPlayer.AttackCtrl.Attack(1414);

                InterruptCollect(false);
                CommonSliderHelper.Start((int)mCollectTime, "", mInteractButtonPic, SendInterruptCollect, SendFinishCollect, false);
                mIsCollecting = true;

                SendStartInteract();
            }
            else
            {
                SendFinishCollect();
            }
        }
        public void InterruptCollect(bool executeCallback)
        {
            if (mIsCollecting == true)
            {
                CommonSliderHelper.Interrupt(executeCallback);
                mIsCollecting = false;

                Actor localPlayer = Game.GetInstance().GetLocalPlayer();
                if (localPlayer != null)
                {
                    localPlayer.Stop();
                    localPlayer.MoveCtrl.TryWalkAlongStop();
                }
            }
        }
Esempio n. 3
0
    void OnTouchExit()
    {
        // 护送NPC不处理
        if (IsEscortNPC == true)
        {
            return;
        }

        mIsClickedTouch = false;

        mIsTouching = false;

        // 把对话关掉
        DialogManager.GetInstance().SkipDialog();

        UIManager.GetInstance().CloseSysWindow("UINpcDialogWindow");
        SetSelectEffect(false);
        TurnToOriginalDir();

        ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_NPCLEAVED, new CEventBaseArgs(UID));
        ClientEventMgr.Instance.FireEvent((int)ClientEvent.INTERACT_TASK_NPC_UNTOUCHED, new CEventBaseArgs(this));

        CommonSliderHelper.Interrupt();
    }
Esempio n. 4
0
    /// <summary>
    /// 开始互动(读条)
    /// </summary>
    public void StartInteract(System.Action finishCallback)
    {
        Actor localPlayer = Game.GetInstance().GetLocalPlayer();

        if (localPlayer == null)
        {
            return;
        }

        localPlayer.Stop();
        localPlayer.MoveCtrl.TryWalkAlongStop();

        string localPlayerInteractionAni = "action_1";

        if (string.IsNullOrEmpty(Define.FunctionParams[4]) == false)
        {
            localPlayerInteractionAni = Define.FunctionParams[4];
        }
        bool ret = localPlayer.BeginInteraction(localPlayerInteractionAni);

        if (ret == false)
        {
            return;
        }

        // 如果该NPC配置有交互动画,则先播放,完毕后再处理回调
        string npcInteractionAni = string.Empty;

        if (string.IsNullOrEmpty(Define.FunctionParams[5]) == false)
        {
            npcInteractionAni = Define.FunctionParams[5];
        }
        if (string.IsNullOrEmpty(npcInteractionAni) == false)
        {
            Play(npcInteractionAni);
        }

        CommonSliderHelper.Interrupt();
        int second = 0;

        int.TryParse(Define.FunctionParams[0], out second);
        bool canBeInterruptedWhenBeAttacked     = true;
        int  canBeInterruptedWhenBeAttackedUint = 0;

        int.TryParse(Define.FunctionParams[3], out canBeInterruptedWhenBeAttackedUint);
        if (canBeInterruptedWhenBeAttackedUint > 0)
        {
            canBeInterruptedWhenBeAttacked = true;
        }
        else
        {
            canBeInterruptedWhenBeAttacked = false;
        }
        CommonSliderHelper.Start(second, Define.ConstBtnText, Define.ConstBtnPic,
                                 () =>
        {
            Play(EAnimation.idle);
        },
                                 () =>
        {
            if (mIsDestroy == true)
            {
                return;
            }

            SafeCoroutine.CoroutineManager.StartCoroutine(InteractEndCoroutine(npcInteractionAni, finishCallback));
        }, canBeInterruptedWhenBeAttacked);

        localPlayer.CanBeInterruptedWhenInInteractionAndBeAttacked = canBeInterruptedWhenBeAttacked;

        ClientEventMgr.Instance.FireEvent((int)ClientEvent.INTERACT_TASK_NPC_UNTOUCHED, new CEventBaseArgs(this));
        TargetPathManager.Instance.TaskNavigationActive(false);
    }