public void SetTrainTrackHasChanged(TrainTrack track, bool changed)
 {
     if (ProjectTreeView.Nodes.Count > 0)
     {
         var pnode  = ProjectTreeView.Nodes[0];
         var trnode = GetChildTreeNode(pnode, "Trains");
         if (trnode == null)
         {
             return;
         }
         string changestr = changed ? "*" : "";
         for (int i = 0; i < trnode.Nodes.Count; i++)
         {
             var tnode = trnode.Nodes[i];
             if (tnode.Tag == track)
             {
                 string name = track.Name;
                 if (track.RpfFileEntry != null)
                 {
                     name = track.RpfFileEntry.Name;
                 }
                 tnode.Text = changestr + name;
                 break;
             }
         }
     }
 }
        private void LoadTrainTrackTreeNodes(TrainTrack track, TreeNode node)
        {
            if (track == null)
            {
                return;
            }

            if (!string.IsNullOrEmpty(node.Name))
            {
                return;                                   //named nodes are eg Nodes
            }
            node.Nodes.Clear();



            if ((track.Nodes != null) && (track.Nodes.Count > 0))
            {
                var nodesnode = node.Nodes.Add("Nodes (" + track.Nodes.Count.ToString() + ")");
                nodesnode.Name = "Nodes";
                nodesnode.Tag  = track;
                var nodes = track.Nodes;
                for (int i = 0; i < nodes.Count; i++)
                {
                    var ynode = nodes[i];
                    var tnode = nodesnode.Nodes.Add(ynode.ToString());
                    tnode.Tag = ynode;
                }
            }
        }
Exemple #3
0
 public void SetTrainTrack(TrainTrack track)
 {
     Track = track;
     Tag   = track;
     UpdateFormTitle();
     UpdateTrainTrackUI();
     waschanged = track?.HasChanged ?? false;
 }
Exemple #4
0
 public bool ContainsTrainTrack(TrainTrack track)
 {
     foreach (var f in TrainsFiles)
     {
         if (f == track)
         {
             return(true);
         }
     }
     return(false);
 }
Exemple #5
0
        /// <summary>
        /// Initilizes trains , tracks, stations, speeds, distances etc
        /// </summary>
        private static void InitializeData()
        {
            try
            {
                // Randomly generating different but constant speeds, shipment capacity & track distances.
                Random randomNumberGenerator = new Random();
                for (int i = 0; i < _noOfStations; i++)
                {
                    _distances[i] = randomNumberGenerator.Next(3, 11) * 10;
                }

                for (int i = 0; i < _noOfTrains; i++)
                {
                    _speeds[i] = randomNumberGenerator.Next(3, 25) * 10;
                }

                // Global cache
                var cache = LookupCache.GetInstance();

                // Initilize train tracks & trains
                Dictionary <string, TrainTrack> _dicTracks = new Dictionary <string, TrainTrack>();

                for (int i = 1; i <= _noOfStations; i++)
                {
                    Station station = new Station(i, "Station" + i.ToString());
                    cache.AddStation(station);
                    if (i == _noOfStations)
                    {
                        String     key   = "Station" + i.ToString() + "ToStation" + (i + 1).ToString();
                        TrainTrack track = new TrainTrack(i, 1, _distances[i - 1]);
                        _dicTracks.Add(key, track);
                    }
                    else
                    {
                        String     key   = "Station" + i.ToString() + "To" + "Station1";
                        TrainTrack track = new TrainTrack(i, 1 + i, _distances[i - 1]);
                        _dicTracks.Add(key, track);
                    }
                }

                // adding train tracks to cache
                cache.AddTracks(_dicTracks);

                for (int i = 1; i <= _noOfTrains; i++)
                {
                    Train train = new Train(i, "Train" + i.ToString(), _shipmentCapacity[i - 1], _speeds[i - 1]);
                    cache.AddTrain(train);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemple #6
0
        public TrainTrack AddTrainsFile(string filename)
        {
            TrainTrack track = new TrainTrack();

            track.RpfFileEntry      = new RpfResourceFileEntry();
            track.RpfFileEntry.Name = new FileInfo(filename).Name;
            track.FilePath          = GetFullFilePath(filename);
            track.Name = track.RpfFileEntry.Name;
            if (!AddTrainsFile(track))
            {
                return(null);
            }
            return(track);
        }
Exemple #7
0
        public void RemoveTrainsFile(TrainTrack track)
        {
            if (track == null)
            {
                return;
            }
            var relpath = GetRelativePath(track.FilePath);

            if (string.IsNullOrEmpty(relpath))
            {
                relpath = track.Name;
            }
            TrainsFiles.Remove(track);
            TrainsFilenames.Remove(relpath);
            HasChanged = true;
        }
Exemple #8
0
        public bool AddTrainsFile(TrainTrack track)
        {
            string relpath = GetRelativePath(track.FilePath);

            if (string.IsNullOrEmpty(relpath))
            {
                relpath = track.Name;
            }
            if (TrainsFilenames.Contains(relpath))
            {
                return(false);
            }
            TrainsFilenames.Add(relpath);
            TrainsFiles.Add(track);
            return(true);
        }
        public void Start()
        {
            Random randomStationNumberGenerator = new Random();

            // Start trains at random stations
            foreach (var train in LookupCache.GetInstance().GetTrains())
            {
                int                  stationId            = randomStationNumberGenerator.Next(1, LookupCache.GetInstance().StationCount() + 1);
                TrainTrack           trainTrack           = LookupCache.GetInstance().GetNextTrack(stationId);
                TrainCurrentLocation trainCurrentLocation = new TrainCurrentLocation();
                trainCurrentLocation.Train        = train;
                trainCurrentLocation.Track        = trainTrack;
                trainCurrentLocation.DistanceLeft = trainCurrentLocation.Track.TrackLength;
                trainCurrentLocation.Train.CurrentRunningStatus = TrainRunningStatus.Waiting;
                _lstTrainsToStart.Add(trainCurrentLocation);
            }
        }
        public TreeNode FindTrainTrackTreeNode(TrainTrack track)
        {
            if (ProjectTreeView.Nodes.Count <= 0)
            {
                return(null);
            }
            var projnode   = ProjectTreeView.Nodes[0];
            var trainsnode = GetChildTreeNode(projnode, "Trains");

            if (trainsnode == null)
            {
                return(null);
            }
            for (int i = 0; i < trainsnode.Nodes.Count; i++)
            {
                var trainnode = trainsnode.Nodes[i];
                if (trainnode.Tag == track)
                {
                    return(trainnode);
                }
            }
            return(null);
        }