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