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
{
}
}
}
}