public LocoDriver(string name, TrainSet myTrain, RailRoad railroad)
 {
     this.name = name;
     this.trainSet = myTrain;
     this.railRoad = railroad;
     driverState = DriverState.Off;
 }
        public void initPanels(RailRoad railroad)
        {
            lbTracks.Items.Clear();
            lbTracks.Items.Add("ID:               Occupied");
            lbTracks.Items.Add("");

            Dictionary<Track, TrainSet> tracks = railroad.getTrackStatus();
            foreach (Track t in tracks.Keys)
            {
                string status = "Track #" + t.id;
                if (tracks[t] != null)
                    status += "     " + tracks[t].name + "    ";
                else
                    status += "                      ";

                if (t is SwitchLeft || t is SwitchRight)
                {
                    if (t.turn)
                        status += "Switched";
                    else
                        status += "Through";

                }
                lbTracks.Items.Add(status);
            }
        }
        public void updatePanels(RailRoad railroad)
        {
            lbTrains.Items.Clear();
            lbTrains.Items.Add("ID:               Speed");
            lbTrains.Items.Add("");

            lbSignals.Items.Clear();
            lbSignals.Items.Add("ID:                Status");
            lbSignals.Items.Add("");

            lbSensors.Items.Clear();
            lbSensors.Items.Add("ID:                     Status");
            lbSensors.Items.Add("");

            Dictionary<Track, TrainSet> tracks = railroad.getTrackStatus();
            int count = 1;
            foreach(Track t in tracks.Keys)
            {
                count++;
                string status = "Track #" + t.id;
                if (tracks[t] != null)
                    status += "     " + tracks[t].name + "    ";
                else
                    status += "                      ";

                if(t is SwitchLeft || t is SwitchRight)
                {
                    if (t.turn)
                        status += "Switched";
                    else
                        status += "Through";

                }
                lbTracks.Items[count] = status;

                if (t.signal != null)
                {
                    lbSignals.Items.Add(t.signal);
                }

                if (t.sensor != null)
                {
                    status = "";
                    if (t.sensor.state == Sensor.State.On)
                        status = "          On";
                    else
                        status = "          Off";
                    lbSensors.Items.Add("Sensor #" + t.sensor.id + status);
                }
            }

            foreach (TrainSet train in railroad.trains)
            {
                lbTrains.Items.Add(train);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            RailRoadCtr rCtr = new RailRoadCtr();
            railroad = rCtr.loadRailRoad("Railroad2.xml", Content);

            TrainSet train1;
            train1 = new TrainSet("Train #1", new List<TrainCart>(), new Engine(30));

            TrainCart cart1 = new TrainCart(Content);
            cart1.currentTrack = railroad.tracks[0];
            cart1.previousTrack = railroad.tracks[25];
            cart1.position = 50;
            cart1.maxSpeed = 60;
            cart1.setCart();
            train1.cartList.Add(cart1);

            railroad.trains.Add(train1);

            train1.locoDriver =  new LocoDriver("Per", train1, railroad);

            TrainSet train2;
            train2 = new TrainSet("Train #2", new List<TrainCart>(), new Engine(20));

            TrainCart cart2 = new TrainCart(Content);
            cart2.currentTrack = railroad.tracks[27];
            cart2.previousTrack = railroad.tracks[26];
            cart2.position = 50;
            cart2.maxSpeed = 60;
            cart2.rotation = MathHelper.ToRadians(0);
            cart2.setCart();
            train2.cartList.Add(cart2);

            railroad.trains.Add(train2);

            train2.locoDriver = new LocoDriver("Ole", train2, railroad);
            //TrainCart cart2 = new TrainCart(Content);
            //cart2.currentTrack = railroad.tracks[1];
            //cart2.previousTrack = railroad.tracks[0];
            //cart2.position = 5;
            //cart2.maxSpeed = 60;
            //cart2.setCart();
            //train1.cartList.Add(cart2);

            //TrainCart cart3 = new TrainCart(Content);
            //cart3.currentTrack = railroad.tracks[0];
            //cart3.previousTrack = railroad.tracks[7];
            //cart3.position = 30;
            //cart3.maxSpeed = 60;
            //cart3.setCart();
            //train1.cartList.Add(cart3);

            whistle = Content.Load<SoundEffect>("train");
            initPanels(railroad);
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// LoadContent will be called once per game and is the place to load
 /// all of your content.
 /// </summary>
 protected override void LoadContent()
 {
     // Create a new SpriteBatch, which can be used to draw textures.
     spriteBatch = new SpriteBatch(GraphicsDevice);
     rr = new RailRoad();
     // TODO: use this.Content to load your game content here
 }
        public RailRoad loadXML(string path, ContentManager content)
        {
            XmlDocument doc = new XmlDocument();

            //doc.Load(@"C:\Users\LasseSoerensen\Documents\Visual Studio 2010\Projects\RailRoadXML\RailRoadXML\RailRoad.xml");
            doc.Load(path);

            XmlNodeList nodeList = doc.SelectNodes("RailRoad/Track");

            RailRoad rr = new RailRoad();

            foreach (XmlNode n in nodeList)
            {
                string type = n.Attributes.GetNamedItem("Type").Value.ToString();

                Track t = new StraightTrack();
                t = new StraightTrack();
                t.gfx = content.Load<Texture2D>("StraightNB");
                t.direction = Convert.ToBoolean(n.Attributes.GetNamedItem("Direction").Value.ToString());
                if (type.Equals("CornerTrack"))
                {
                    t = new CornerTrack();
                    t.direction = Convert.ToBoolean(n.Attributes.GetNamedItem("Direction").Value.ToString());
                    //if (t.direction)
                    //{
                    t.gfx = content.Load<Texture2D>("rightTurnNB");
                    //}
                    //else
                    //{
                    //    t.gfx = content.Load<Texture2D>("leftTurnNB");
                    //}
                }

                if (type.Equals("SwitchRight"))
                {
                    t = new SwitchRight();
                    t.direction = Convert.ToBoolean(n.Attributes.GetNamedItem("Direction").Value.ToString());
                    t.turn = Convert.ToBoolean(n.Attributes.GetNamedItem("Switch").Value.ToString());

                    t.gfx = content.Load<Texture2D>("switchRight");
                }

                if (type.Equals("SwitchLeft"))
                {
                    t = new SwitchLeft();
                    t.direction = Convert.ToBoolean(n.Attributes.GetNamedItem("Direction").Value.ToString());
                    t.turn = Convert.ToBoolean(n.Attributes.GetNamedItem("Switch").Value.ToString());

                    t.gfx = content.Load<Texture2D>("switchLeft");
                }

                t.rotation = MathHelper.ToRadians(Convert.ToInt32(n.Attributes.GetNamedItem("Rotation").Value));

                t.position = new Vector2(Convert.ToInt32(n.Attributes.GetNamedItem("X").Value), Convert.ToInt32(n.Attributes.GetNamedItem("Y").Value));
                t.id = Convert.ToInt32(n.Attributes.GetNamedItem("ID").Value);

                //foreach (XmlNode nn in n.ChildNodes)
                //{
                //if (nn.Name == "Signal")
                //{
                //    Signal s = new Signal(Convert.ToInt32(nn.Attributes.GetNamedItem("ID").Value), content);
                //    s.position = new Vector2(Convert.ToInt32(nn.Attributes.GetNamedItem("X").Value), Convert.ToInt32(nn.Attributes.GetNamedItem("Y").Value));
                //    switch (nn.Attributes.GetNamedItem("InitialState").Value)
                //    {
                //        case "Stop": s.state = Signal.State.Stop; break;
                //        case "Go": s.state = Signal.State.Go; break;
                //        case "Off": s.state = Signal.State.Off; break;
                //    }

                //    t.signal = s;
                //    System.Diagnostics.Debug.WriteLine("Signal added");
                //}
                //else
                //if (nn.Name == "Sensor")
                //{
                //    Sensor s = new Sensor();
                //    s.id = Convert.ToInt32(nn.Attributes.GetNamedItem("ID").Value);
                //    s.mySignal = rr.findSignal(Convert.ToInt32(nn.Attributes.GetNamedItem("SignalID").Value));

                //    switch (nn.Attributes.GetNamedItem("InitialState").Value)
                //    {
                //        case "On": s.state = Sensor.State.On; break;
                //        case "Off": s.state = Sensor.State.Off; break;
                //    }
                //    t.sensor = s;
                //}

                //}

                rr.tracks.Add(t);
            }
            foreach (XmlNode xml in nodeList)
            {
                int id = Convert.ToInt32(xml.Attributes.GetNamedItem("ID").Value);
                foreach (Track t in rr.tracks)
                {
                    if (t.id == id)
                    {
                        t.prevTrack = rr.findTrack(Convert.ToInt32(xml.Attributes.GetNamedItem("PreviousTrack").Value));
                        t.nextTrack = rr.findTrack(Convert.ToInt32(xml.Attributes.GetNamedItem("NextTrack").Value));

                        if (t is SwitchLeft || t is SwitchRight)
                        {
                            t.switchTrack = rr.findTrack(Convert.ToInt32(xml.Attributes.GetNamedItem("SwitchTrackID").Value));
                        }
                        foreach (XmlNode nn in xml.ChildNodes)
                        {
                            if (nn.Name == "Signal")
                            {
                                Signal s = new Signal(Convert.ToInt32(nn.Attributes.GetNamedItem("ID").Value), content);
                                s.position = new Vector2(Convert.ToInt32(nn.Attributes.GetNamedItem("X").Value), Convert.ToInt32(nn.Attributes.GetNamedItem("Y").Value));
                                switch (nn.Attributes.GetNamedItem("InitialState").Value)
                                {
                                    case "Stop": s.state = Signal.State.Stop; break;
                                    case "Go": s.state = Signal.State.Go; break;
                                    case "Off": s.state = Signal.State.Off; break;
                                }

                                t.signal = s;
                                System.Diagnostics.Debug.WriteLine("Signal added");
                            }
                        }
                    }
                }
            }

            foreach (XmlNode xml in nodeList)
            {
                foreach (Track t in rr.tracks)
                {
                    if (t.id == Convert.ToInt32(xml.Attributes.GetNamedItem("ID").Value))
                    {
                        foreach (XmlNode nn in xml.ChildNodes)
                        {
                            if (nn.Name == "Sensor")
                            {
                                Sensor s = new Sensor();
                                s.id = Convert.ToInt32(nn.Attributes.GetNamedItem("ID").Value);
                                s.mySignal = rr.findSignal(Convert.ToInt32(nn.Attributes.GetNamedItem("SignalID").Value));

                                switch (nn.Attributes.GetNamedItem("InitialState").Value)
                                {
                                    case "On": s.state = Sensor.State.On; break;
                                    case "Off": s.state = Sensor.State.Off; break;
                                }
                                t.sensor = s;
                            }
                        }
                    }
                }
            }

            return rr;
        }
 public Dispatcher(RailRoad railroad, List<TrainSet> trains)
 {
     this.railroad = railroad;
     this.trains = trains;
 }