217 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			217 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using AmazingAssets.CurvedWorld; | |||
|  | using Config.config; | |||
|  | using DG.Tweening; | |||
|  | using Sirenix.OdinInspector; | |||
|  | using System.Collections; | |||
|  | using System.Collections.Generic; | |||
|  | using UnityEngine; | |||
|  | 
 | |||
|  | /// <summary> | |||
|  | /// <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | |||
|  | /// </summary> | |||
|  | public partial class MapManager : MonoBehaviour | |||
|  | { | |||
|  |     /// <summary> | |||
|  |     /// <20><><EFBFBD><EFBFBD><F3B3B5B5><EFBFBD> | |||
|  |     /// </summary> | |||
|  |     private int maxTrack; | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | |||
|  |     /// </summary> | |||
|  |     private int minTrack; | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><>·<EFBFBD><C2B7> | |||
|  |     /// </summary> | |||
|  |     private int trackNumber; | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20>Ƿ<C7B7> | |||
|  |     /// </summary> | |||
|  |     private bool isExchange; | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><><EFBFBD><EFBFBD> | |||
|  |     /// </summary> | |||
|  |     private Player player; | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20>ؿ<EFBFBD><D8BF><EFBFBD><EFBFBD><EFBFBD> | |||
|  |     /// </summary> | |||
|  |     private LevelConfig levelConfig; | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | |||
|  |     /// </summary> | |||
|  |     public CurvedWorldController curvedWorld; | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// ·<><C2B7>һ | |||
|  |     /// </summary> | |||
|  |     public SectionRoad sectionRoadOne; | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// ·<>ζ<EFBFBD> | |||
|  |     /// </summary> | |||
|  |     public SectionRoad sectionRoadTwo; | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><>ǰ·<C7B0><C2B7> | |||
|  |     /// </summary> | |||
|  |     [HideInInspector]public SectionRoad currentSectionRoad; | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><><EFBFBD><EFBFBD>·<EFBFBD><C2B7> | |||
|  |     /// </summary> | |||
|  |     [HideInInspector]public SectionRoad supplementSectionRoad; | |||
|  | 
 | |||
|  |     private void Update() | |||
|  |     { | |||
|  |         SetCurvedWorld(); | |||
|  |     } | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><><EFBFBD>ùؿ<C3B9> | |||
|  |     /// </summary> | |||
|  |     public void SetLevel(LevelConfig levelConfig) | |||
|  |     { | |||
|  |         this.levelConfig = levelConfig; | |||
|  |     } | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><>ʼ<EFBFBD><CABC> | |||
|  |     /// </summary> | |||
|  |     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; | |||
|  |     } | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ɳ<EFBFBD> | |||
|  |     /// </summary> | |||
|  |     public void InitGenerateNPCCar() | |||
|  |     { | |||
|  |         if (GuidanceManger.Instance.isEnableNormalMode) | |||
|  |         { | |||
|  |             sectionRoadTwo.GenerateNPCCar(new List<int>() { 0, 1, 2 }, levelConfig); | |||
|  |             sectionRoadOne.GenerateRoadblock(sectionRoadTwo); | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɳ<EFBFBD> | |||
|  |     /// </summary> | |||
|  |     public void InitguidanceGenerateNPCCar() | |||
|  |     { | |||
|  |         supplementSectionRoad.GenerateNPCCar(new List<int>() { 0, 1, 2 }, levelConfig); | |||
|  |     } | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC> | |||
|  |     /// </summary> | |||
|  |     public void ResurgenceInit() | |||
|  |     { | |||
|  |         sectionRoadOne.PutRoadblockObjs(); | |||
|  |         sectionRoadTwo.PutRoadblockObjs(); | |||
|  |         supplementSectionRoad.GenerateNPCCar(new List<int>() { 0, 1, 2 }, levelConfig); | |||
|  |     } | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | |||
|  |     /// </summary> | |||
|  |     public void SetPlayer(Player player) | |||
|  |     { | |||
|  |         this.player = player; | |||
|  |         curvedWorld.bendPivotPoint = player.transform; | |||
|  |     } | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD> | |||
|  |     /// </summary> | |||
|  |     public void GameOver() | |||
|  |     { | |||
|  |         sectionRoadOne.PutCar(); | |||
|  |         sectionRoadTwo.PutCar(); | |||
|  |         sectionRoadTwo.PutRoadblockObjs(); | |||
|  |         supplementSectionRoad.BothAreConsistent(currentSectionRoad); | |||
|  |     } | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><><EFBFBD><EFBFBD> | |||
|  |     /// </summary> | |||
|  |     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; | |||
|  |         }); | |||
|  |     } | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ | |||
|  |     /// </summary> | |||
|  |     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<int>() { 0, 1, 2 }, levelConfig); | |||
|  |                 } | |||
|  |                 currentSectionRoad.GenerateRoadblock(supplementSectionRoad); | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  | 
 | |||
|  |             } | |||
|  |         } | |||
|  |     } | |||
|  | } |