using AmazingAssets.CurvedWorld; using Config.config; using DG.Tweening; using Sirenix.OdinInspector; using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 地图管理器 /// public partial class MapManager : MonoBehaviour { /// /// 最大车道数 /// private int maxTrack; /// /// 最小车道数 /// private int minTrack; /// /// 道路数 /// private int trackNumber; /// /// 是否交换 /// private bool isExchange; /// /// 玩家 /// private Player player; /// /// 关卡配置 /// private LevelConfig levelConfig; /// /// 弯道控制 /// public CurvedWorldController curvedWorld; /// /// 路段一 /// public SectionRoad sectionRoadOne; /// /// 路段二 /// public SectionRoad sectionRoadTwo; /// /// 当前路段 /// [HideInInspector]public SectionRoad currentSectionRoad; /// /// 补充路段 /// [HideInInspector]public SectionRoad supplementSectionRoad; private void Update() { SetCurvedWorld(); } /// /// 设置关卡 /// public void SetLevel(LevelConfig levelConfig) { this.levelConfig = levelConfig; } /// /// 初始化 /// public void Init() { InitCurvedWorld(); sectionRoadOne.Init(); sectionRoadOne.transform.localPosition = Vector3.zero; sectionRoadTwo.Init(); sectionRoadOne.SetBuildingTheme(levelConfig); sectionRoadTwo.SetBuildingTheme(levelConfig); sectionRoadTwo.transform.localPosition = sectionRoadOne.transform.localPosition+ Vector3.forward*311; sectionRoadOne.InitLaneNumber(levelConfig.InitialTrack); sectionRoadTwo.BothAreConsistent(sectionRoadOne); trackNumber = levelConfig.InitialTrack; minTrack = levelConfig.MinTrack; maxTrack = levelConfig.MaxTrack; currentSectionRoad = sectionRoadOne; } /// /// 初始化生成车 /// public void InitGenerateNPCCar() { if (GuidanceManger.Instance.isEnableNormalMode) { sectionRoadTwo.GenerateNPCCar(new List() { 0, 1, 2 }, levelConfig); sectionRoadOne.GenerateRoadblock(sectionRoadTwo); } } /// /// 初始化新手引导生成车 /// public void InitguidanceGenerateNPCCar() { supplementSectionRoad.GenerateNPCCar(new List() { 0, 1, 2 }, levelConfig); } /// /// 复活初始化 /// public void ResurgenceInit() { sectionRoadOne.PutRoadblockObjs(); sectionRoadTwo.PutRoadblockObjs(); supplementSectionRoad.GenerateNPCCar(new List() { 0, 1, 2 }, levelConfig); } /// /// 设置玩家 /// public void SetPlayer(Player player) { this.player = player; curvedWorld.bendPivotPoint = player.transform; } /// /// 游戏结束 /// public void GameOver() { sectionRoadOne.PutCar(); sectionRoadTwo.PutCar(); sectionRoadTwo.PutRoadblockObjs(); supplementSectionRoad.BothAreConsistent(currentSectionRoad); } /// /// 交换 /// public void Exchange() { if (isExchange) return; isExchange = true; if (currentSectionRoad == sectionRoadOne) { currentSectionRoad = sectionRoadTwo; supplementSectionRoad=sectionRoadOne; } else { currentSectionRoad = sectionRoadOne; supplementSectionRoad= sectionRoadTwo; } player.SetSectionRoad(currentSectionRoad); DelayedProcessingManager.Instance.DelayDoSecond(this, 0.2f, () => { ExchangeRenderer(); isExchange = false; }); } /// /// 交换渲染 /// public void ExchangeRenderer() { supplementSectionRoad.PutRoadblockObjs(); supplementSectionRoad.transform.position = currentSectionRoad.transform.position+currentSectionRoad.transform.forward * 311; if (ProbabilityManager.Instance.GetPercent(60) && Scenes.Instance.e_GameState == E_GameState.Gameing&& UserDataManager.Instance.userData.guidance.isOverInitialEntry) { trackNumber = Random.Range(minTrack, (maxTrack + 1)); supplementSectionRoad.BothAreConsistent(currentSectionRoad); supplementSectionRoad.InitLaneNumber(trackNumber); } else { supplementSectionRoad.BothAreConsistent(currentSectionRoad); } if (Scenes.Instance.e_GameState == E_GameState.Gameing) { if (GuidanceManger.Instance.isEnableNormalMode) { if (ProbabilityManager.Instance.GetPercent(30)) { supplementSectionRoad.GenerateTrain(levelConfig); } else { supplementSectionRoad.GenerateNPCCar(new List() { 0, 1, 2 }, levelConfig); } currentSectionRoad.GenerateRoadblock(supplementSectionRoad); } else { } } } }