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

◆ CreateTunnel()

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

Definition at line 204 of file TrackGenerator.cs.

205 {
206 TrackSlope trackSlope = TrackSlope.Straight;
207 int num = 10;
208 TrackPlacementState trackPlacementState = TrackPlacementState.Invalid;
209 int x = _history[_length - 1].X;
210 int y = _history[_length - 1].Y;
211 for (TrackSlope trackSlope2 = TrackSlope.Up; trackSlope2 <= TrackSlope.Down; trackSlope2++)
212 {
213 TrackPlacementState trackPlacementState2 = TrackPlacementState.Invalid;
214 for (int i = 1; i < num; i++)
215 {
216 trackPlacementState2 = CalculateStateForLocation(x + i * _xDirection, y + i * (int)trackSlope2);
217 switch (trackPlacementState2)
218 {
219 default:
220 trackSlope = trackSlope2;
221 num = i;
222 trackPlacementState = trackPlacementState2;
223 break;
224 case TrackPlacementState.Obstructed:
225 continue;
226 case TrackPlacementState.Invalid:
227 break;
228 }
229 break;
230 }
231 if (trackPlacementState != 0 && trackPlacementState2 == TrackPlacementState.Obstructed && (trackPlacementState != TrackPlacementState.Obstructed || trackSlope != 0))
232 {
233 trackSlope = trackSlope2;
234 num = 10;
235 trackPlacementState = trackPlacementState2;
236 }
237 }
238 if (_length == 0 || !CanSlopesTouch(_history[_length - 1].Slope, trackSlope))
239 {
240 RewriteSlopeDirection(_length - 1, TrackSlope.Straight);
241 }
242 _history[_length - 1].Mode = TrackMode.Tunnel;
243 for (int j = 1; j < num; j++)
244 {
245 AppendToHistory(trackSlope, TrackMode.Tunnel);
246 }
247 return trackPlacementState;
248 }
static TrackPlacementState CalculateStateForLocation(int x, int y)
void RewriteSlopeDirection(int index, TrackSlope slope)
void AppendToHistory(TrackSlope slope, TrackMode mode=TrackMode.Normal)
static bool CanSlopesTouch(TrackSlope leftSlope, TrackSlope rightSlope)

References Terraria.GameContent.Generation.TrackGenerator._history, Terraria.GameContent.Generation.TrackGenerator._length, Terraria.GameContent.Generation.TrackGenerator._xDirection, Terraria.GameContent.Generation.TrackGenerator.AppendToHistory(), Terraria.GameContent.Generation.TrackGenerator.CalculateStateForLocation(), Terraria.GameContent.Generation.TrackGenerator.CanSlopesTouch(), Terraria.GameContent.Generation.TrackGenerator.TrackHistory.Mode, Terraria.GameContent.Generation.TrackGenerator.RewriteSlopeDirection(), Terraria.GameContent.Generation.TrackGenerator.TrackHistory.X, and Terraria.GameContent.Generation.TrackGenerator.TrackHistory.Y.

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