public void PositionTracks() { foreach (var tTrackType in mTrackPlaceData) { if (CurrentPFTracks.ContainsKey(tTrackType)) { CTrack tTrack = GameObject.Instantiate <CTrack>(CurrentPFTracks[tTrackType], mTrackInstancePosition, Quaternion.identity); tTrack.transform.SetParent(mParent); mTrackInstancePosition += Vector3.forward * CurrentPFTracks[tTrackType].TrackLength; tTrack.DisableTiles(); tTrack.gameObject.name = string.Format("[{0}] {1}", mInstTrackIndex, tTrack.gameObject.name); foreach (var tile in tTrack.InstTileList) { mInstTileList.Add(mInstTrackIndex, tile); tile.Init(this, mInstTrackIndex, tTrackType); mInstTrackIndex++; } } } mOnChangeStage.SafeInvoke(mStageIndex + 1, mCurrentPFTrackIndex); }
public void CreateTrackData() { List <TrackType> tTypes = new List <TrackType>(); tTypes.Add(TrackType.E); mTrackPlaceData.Clear(); bool tIsStartRoad = false; bool tIsEndRoad = false; for (int i = 0; i < mTileCount - 1;) { TrackType addTrack = tTypes[UnityEngine.Random.Range(0, tTypes.Count)]; mTrackPlaceData.Add(addTrack); if (CurrentPFTracks.ContainsKey(addTrack)) { i += CurrentPFTracks[addTrack].TileCount; } else { i++; } if (tIsStartRoad == false && i >= 5) { tIsStartRoad = true; List <TrackType> tTrackDiffcultyList = null; #if DIFFCULTY tTrackDiffcultyList = mTrackData.DiffcultyList[Mathf.Clamp(mStageIndex, 0, mTrackData.DiffcultyList.Count - 1)].TypeList; #elif LOW tTrackDiffcultyList = new List <TrackType>(); for (int start = (int)TrackType.A; start <= (int)TrackType.F; start++) { tTrackDiffcultyList.Add((TrackType)start); } #elif MEDIUM tTrackDiffcultyList = new List <TrackType>(); for (int start = (int)TrackType.A; start <= (int)TrackType.P; start++) { tTrackDiffcultyList.Add((TrackType)start); } #endif tTypes.AddRange(tTrackDiffcultyList); } else if (tIsEndRoad == false && i >= mTileCount - 5) { tIsEndRoad = true; tTypes.Clear(); tTypes.Add(TrackType.EMPTY); } } mTrackPlaceData.Add(TrackType.END); for (int i = 0; i < 3; i++) { mTrackPlaceData.Add(TrackType.EMPTY); } }