Esempio n. 1
0
    /// <summary>
    /// 离开处理
    /// </summary>
    public override void HandleForLeave()
    {
        if (!characterMoveCpt.IsAutoMoveStop())
        {
            return;
        }
        switch (guestTeamIntent)
        {
        case CustomerIntentForGuestTeamEnum.GoToTeam:
            //一起离开处理
            guestTeamIntent = CustomerIntentForGuestTeamEnum.WaitTeam;
            List <NpcAICustomerForGuestTeamCpt> listTeamMember = GetGuestTeam();
            bool allReady = true;
            foreach (NpcAICustomerForGuestTeamCpt teamMember in listTeamMember)
            {
                if (teamMember.guestTeamIntent != CustomerIntentForGuestTeamEnum.WaitTeam)
                {
                    allReady = false;
                }
            }
            if (allReady)
            {
                SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>();
                Vector3         leavePostion    = sceneInnManager.GetRandomSceneExportPosition();
                foreach (NpcAICustomerForGuestTeamCpt teamMember in listTeamMember)
                {
                    teamMember.guestTeamIntent = CustomerIntentForGuestTeamEnum.Together;
                    teamMember.characterMoveCpt.SetDestination(leavePostion);
                }
            }
            break;

        case CustomerIntentForGuestTeamEnum.Together:
            //gameObject.SetActive(false);
            SetIntent(CustomerIntentEnum.None);
            gameObject.SetActive(false);
            gameObject.transform.position = new Vector3(0, -10000, 0);
            orderForCustomer = null;
            timeWaitSeat     = 20;
            guestTeamIntent  = CustomerIntentForGuestTeamEnum.Together;
            customerType     = CustomerTypeEnum.Team;
            NpcHandler.Instance.builderForCustomer.listGuestTeamHide.Enqueue(gameObject);
            break;
        }
    }
Esempio n. 2
0
 /// <summary>
 /// 意图-离开
 /// </summary>
 public override void IntentForLeave()
 {
     //如果还没有生成订单 (路上被招待)
     if (orderForCustomer == null)
     {
         characterMoveCpt.SetDestination(movePosition);
         //通知其他团队成员
         List <NpcAICustomerForGuestTeamCpt> listTeamMember = GetGuestTeam();
         foreach (NpcAICustomerForGuestTeamCpt teamMember in listTeamMember)
         {
             if (teamMember != this && teamMember.customerIntent != CustomerIntentEnum.Leave)
             {
                 teamMember.SetIntent(CustomerIntentEnum.Leave);
             }
         }
         return;
     }
     //随机获取一个退出点
     togetherPosition  = InnHandler.Instance.GetRandomEntrancePosition();
     guestTeamIntent   = CustomerIntentForGuestTeamEnum.GoToTeam;
     togetherPosition += new Vector3(Random.Range(-1f, 1f), Random.Range(-1f, 1f));
     characterMoveCpt.SetDestination(togetherPosition);
 }