//===================================================================== INITIALIZE public Link(Station inStation, Station outStation, bool isTunnel, int trackCount, Point[] nodes) { InStation = inStation; OutStation = outStation; IsTunnel = isTunnel; for (int i = 1; i <= trackCount; i++) _tracks.Add(i, new Track(i, this)); Nodes = nodes; }
//#==================================================================== FUNCTIONS public static Color GetStationColor(Station station) { return station.IsTunnel ? LINK_GOOD_TUNNEL : LINK_GOOD; }
private void ConnectTracks(Station origin, Station destination, int oPlatformStart, int dPlatformStart, int twoWayCount) { for (int i = 0; i < twoWayCount; i++) { int start = i * 2 + 1 + dPlatformStart; int end = i * 2 + 1 + oPlatformStart; ConnectTracks(destination, origin, start + "/" + Math.Min(start, end) + "/" + end); start = i * 2 + 2 + oPlatformStart; end = i * 2 + 2 + dPlatformStart; ConnectTracks(origin, destination, start + "/" + Math.Min(start, end) + "/" + end); } }
private void ConnectTracks(Station origin, Station destination, string connections) { string[] splitConnections = connections.Split(' '); for (int i = 0; i < splitConnections.Length; i++) { Track track = origin.Links[destination.Name].GetTrack(GetTrack(splitConnections[i])); int[] originTracks = GetOrigins(splitConnections[i]); int[] destTracks = GetDestinations(splitConnections[i]); foreach (int destTrack in destTracks) track.AddDestination(destination.GetPlatform(destTrack)); foreach (int originTrack in originTracks) origin.GetPlatform(originTrack).AddDestination(track); } }
//#==================================================================== FUNCTIONS public static int GetStationRadius(Station station) { return 200 + station.PlatformCount * 25; }