Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ TryRewriteHistoryToAvoidTiles()

TrackPlacementState Terraria.GameContent.Generation.TrackGenerator.TryRewriteHistoryToAvoidTiles ( )
inlineprivate

Definition at line 257 of file TrackGenerator.cs.

258 {
259 int num = _length - 1;
260 int num2 = Math.Min(_length, _rewriteHistory.Length);
261 for (int i = 0; i < num2; i++)
262 {
263 _rewriteHistory[i] = _history[num - i];
264 }
265 while (num >= _length - num2)
266 {
267 if (_history[num].Slope == TrackSlope.Down)
268 {
269 TrackPlacementState historySegmentPlacementState = GetHistorySegmentPlacementState(num, _length - num);
270 if (historySegmentPlacementState == TrackPlacementState.Available)
271 {
272 return historySegmentPlacementState;
273 }
274 RewriteSlopeDirection(num, TrackSlope.Straight);
275 }
276 num--;
277 }
278 if (GetHistorySegmentPlacementState(num + 1, _length - (num + 1)) == TrackPlacementState.Available)
279 {
280 return TrackPlacementState.Available;
281 }
282 for (num = _length - 1; num >= _length - num2 + 1; num--)
283 {
284 if (_history[num].Slope == TrackSlope.Straight)
285 {
286 TrackPlacementState historySegmentPlacementState2 = GetHistorySegmentPlacementState(_length - num2, num2);
287 if (historySegmentPlacementState2 == TrackPlacementState.Available)
288 {
289 return historySegmentPlacementState2;
290 }
291 RewriteSlopeDirection(num, TrackSlope.Up);
292 }
293 }
294 for (int j = 0; j < num2; j++)
295 {
296 _history[_length - 1 - j] = _rewriteHistory[j];
297 }
298 RewriteSlopeDirection(_length - 1, TrackSlope.Straight);
299 return GetHistorySegmentPlacementState(num + 1, _length - (num + 1));
300 }
static byte Min(byte val1, byte val2)
Definition Math.cs:912
void RewriteSlopeDirection(int index, TrackSlope slope)
TrackPlacementState GetHistorySegmentPlacementState(int startIndex, int length)

References Terraria.GameContent.Generation.TrackGenerator._history, Terraria.GameContent.Generation.TrackGenerator._length, Terraria.GameContent.Generation.TrackGenerator._rewriteHistory, Terraria.GameContent.Generation.TrackGenerator.GetHistorySegmentPlacementState(), System.Math.Min(), and Terraria.GameContent.Generation.TrackGenerator.RewriteSlopeDirection().

Referenced by Terraria.GameContent.Generation.TrackGenerator.FindPath().