OvertakingLegend/Assets/Script/MapManger/MapManager.cs

217 lines
5.7 KiB
C#
Raw Normal View History

2025-03-24 03:08:22 +00:00
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
{
}
}
}
}