public override void Start() { base.Start(); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); //初始化场景 SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>(); InnBuildBean innBuildData = gameData.GetInnBuildData(); sceneInnManager.InitScene(innBuildData.innWidth, innBuildData.innHeight); //innBuildData.ChangeInnSize(2, innBuildManager, 9, 9); //构建地板 InnBuildHandler.Instance.builderForFloor.StartBuild(); //构建墙壁 InnBuildHandler.Instance.builderForWall.StartBuild(); //构建建筑 InnBuildHandler.Instance.builderForFurniture.StartBuild(); //初始化客栈处理 InnHandler.Instance.InitInn(); InnHandler.Instance.InitRecord(); //其他场景切过来需要重置一下客栈数据 InnHandler.Instance.CloseInn(); //设置天气 GameWeatherHandler.Instance.SetWeather(GameCommonInfo.CurrentDayData.weatherToday); //打开UI UIHandler.Instance.manager.OpenUI <UIGameMain>(UIEnum.GameMain); //增加回调 GameTimeHandler.Instance.RegisterNotifyForTime(NotifyForTime); TimeBean timeData = gameData.gameTime; if (timeData.hour >= 24 || timeData.hour < 6 || GameTimeHandler.Instance.GetDayStatus() == GameTimeHandler.DayEnum.End) { //如果是需要切换第二天 EndDay(); } else { //如果是其他场景切换过来 GameTimeHandler.Instance.SetTime(timeData.hour, timeData.minute); GameTimeHandler.Instance.SetTimeStatus(false); //建造NPC RefreshScene(); //设置位置 Vector3 startPosition = sceneInnManager.GetTownEntranceLeft(); ControlForMoveCpt baseControl = GameControlHandler.Instance.StartControl <ControlForMoveCpt>(GameControlHandler.ControlEnum.Normal); baseControl.SetFollowPosition(startPosition); } //改变四季 GameSeasonsHandler.Instance.ChangeSeasons(); StartCoroutine(BuildNavMesh()); }
/// <summary> /// 意图-离开 /// </summary> public virtual void IntentForLeave() { //随机获取一个退出点 SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>(); movePosition = sceneInnManager.GetRandomSceneExportPosition(); characterMoveCpt.SetDestination(movePosition); }
/// <summary> /// 意图-离开 /// </summary> protected void SetIntentForLeave() { if (leavePosition == Vector3.zero) { SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>(); leavePosition = sceneInnManager.GetRandomSceneExportPosition(); } movePosition = leavePosition + new Vector3(Random.Range(-0.5f, 0.5f), Random.Range(-0.5f, 0.5f)); SetCharacterMove(movePosition); }
public void NotifyForTime(GameTimeHandler.NotifyTypeEnum notifyType, float timeHour) { if (notifyType == GameTimeHandler.NotifyTypeEnum.NewDay) { //初始化场景 GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); InnBuildBean innBuildData = gameData.GetInnBuildData(); SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>(); sceneInnManager.InitScene(innBuildData.innWidth, innBuildData.innHeight); //StartCoroutine(CoroutineForBuildNavMesh()); } }
/// <summary> /// 设置全体意图 /// </summary> public void SetTeamIntent(RascalIntentEnum rascalIntent) { List <NpcAIRascalCpt> listNpc = NpcHandler.Instance.builderForEvent.GetRascalTeamByTeamCode(teamCode); if (rascalIntent == RascalIntentEnum.Leave) { SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>(); leavePosition = sceneInnManager.GetRandomSceneExportPosition(); } foreach (NpcAIRascalCpt itemNpc in listNpc) { itemNpc.leavePosition = leavePosition; itemNpc.SetIntent(rascalIntent); } }
/// <summary> /// 意图-离开 /// </summary> protected void SetIntentForLeave() { InnHandler.Instance.rascalrQueue.Remove(this); npcFight = null; characterLifeCpt.gameObject.SetActive(false); objFightShow.SetActive(false); objRascalSpaceShow.SetActive(false); //随机获取一个退出点 如果已经有团队的点则不需要获取 if (leavePosition == Vector3.zero) { SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>(); leavePosition = sceneInnManager.GetRandomSceneExportPosition(); } movePosition = leavePosition + new Vector3(Random.Range(-0.5f, 0.5f), Random.Range(-0.5f, 0.5f)); characterMoveCpt.SetDestination(movePosition); }
/// <summary> /// 意图-散步 /// </summary> public void IntentForWalk() { SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>(); if (transform.position.x > 0) { //如果角色在右边生成 出口则设置为左边 movePosition = sceneInnManager.GetRandomSceneExportPosition(1); } else { //如果角色在左边生成 出口则设置为右边 movePosition = sceneInnManager.GetRandomSceneExportPosition(0); } characterMoveCpt.SetDestination(movePosition); }
/// <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; } }