Esempio n. 1
0
    protected override void StartExecute(bool isFastNav)
    {
        EntitySelf entSelf = EntityWorld.Instance.EntSelf;

        if (entSelf != null && entSelf.Actor)
        {
            if (this.mCurGoods != null)
            {
                Vector3 vector  = new Vector3((float)this.mCurGoods.position.get_Item(0), (float)this.mCurGoods.position.get_Item(1), (float)this.mCurGoods.position.get_Item(2)) * 0.01f;
                Vector3 vector2 = new Vector3((float)this.mCurGoods.flyPosition.get_Item(0), (float)this.mCurGoods.flyPosition.get_Item(1), (float)this.mCurGoods.flyPosition.get_Item(2)) * 0.01f;
                if (this.mCurGoods.scene == MySceneManager.Instance.CurSceneID)
                {
                    Vector3 vector3 = Vector3.get_zero();
                    if (this.mCurGoods.face.get_Count() >= 3)
                    {
                        vector3 = new Vector3((float)this.mCurGoods.face.get_Item(0), (float)this.mCurGoods.face.get_Item(1), (float)this.mCurGoods.face.get_Item(2)) * 0.01f;
                    }
                    Quaternion quaternion  = Quaternion.Euler(vector3.x, vector3.y, vector3.z);
                    Vector3    vector4     = quaternion * Vector3.get_forward() * 2f;
                    float      distanceNoY = XUtility.GetDistanceNoY(entSelf.Actor.FixTransform.get_position(), vector);
                    if (isFastNav)
                    {
                        this.FastCollectGoods(distanceNoY, vector, vector2);
                    }
                    else
                    {
                        this.NormalCollectGoods(distanceNoY, vector);
                    }
                }
                else if (isFastNav)
                {
                    base.IsAutoNav = true;
                    MainTaskManager.Instance.DelaySendFlyShoe(true, this.mCurGoods.scene, vector2);
                }
                else
                {
                    base.IsAutoNav = false;
                    TownCountdownUI townCountdownUI = UIManagerControl.Instance.OpenUI("TownCountdownUI", null, false, UIType.NonPush) as TownCountdownUI;
                    townCountdownUI.StartTransmit(base.Task.taskId, this.mCurGoods.scene);
                }
            }
            else
            {
                Debug.LogFormat("<color=red>Error:</color>采集任务[{0}]数据已被销毁!!!", new object[]
                {
                    base.Task.taskId
                });
            }
        }
    }
Esempio n. 2
0
    protected override void OnStopExecuteTask()
    {
        base.OnStopExecuteTask();
        if (this.IsActive && !this.mIsStart && this.mIsEnd)
        {
            NPC nPC = DataReader <NPC> .Get(this.mEndNpc);

            if (nPC != null)
            {
                Vector3 npcPosition = MainTaskManager.Instance.GetNpcPosition(nPC, 1f);
                if (EntityWorld.Instance.ActSelf == null || EntityWorld.Instance.ActSelf.FixTransform == null)
                {
                    return;
                }
                float distanceNoY = XUtility.GetDistanceNoY(EntityWorld.Instance.ActSelf.FixTransform.get_position(), npcPosition);
                if (distanceNoY <= 1f && nPC.scene == MySceneManager.Instance.CurSceneID)
                {
                    Debug.Log("更新NPC状态,自动移动到点:" + npcPosition);
                    Vector3 zero;
                    if (nPC.position.get_Count() == 3)
                    {
                        zero = new Vector3((float)nPC.position.get_Item(0), (float)nPC.position.get_Item(1), (float)nPC.position.get_Item(2));
                    }
                    else
                    {
                        zero = Vector3.get_zero();
                    }
                    TaskNPCManager.Instance.UpdateNPC(this.mBeginNpc, new NPCInformation
                    {
                        id       = this.mBeginNpc,
                        position = zero,
                        status   = NPCStatus.NAV_TO_POINT
                    });
                }
            }
        }
    }