Beispiel #1
0
        public void Init()
        {
            List <Hangar> hangars = new List <Hangar>();
            Dictionary <char, Turnout> turnouts = new Dictionary <char, Turnout>();
            Hangar hangar1 = new Hangar();
            Hangar hangar2 = new Hangar();

            hangar1Track2 = new Track();
            hangar2Track2 = new Track();
            hangar1Track3 = new Track();
            Turnout1To2 turnout1 = new Turnout1To2();
            Turnout2To1 turnout2 = new Turnout2To1();

            quay       = new WaterQuay();
            quay.track = hangar1Track2;
            river2     = new WaterLink();
            river4     = new WaterLink();


            hangar1.Next       = hangar1Track2;
            hangar1Track2.Next = hangar1Track3;

            hangar2.Next = hangar2Track2;

            hangars.Add(hangar1);
            hangars.Add(hangar2);

            turnouts.Add('a', turnout1);
            turnouts.Add('b', turnout2);

            board = new Board(0, null, hangars, turnouts, null);
            board.FirstRiver.Next = river2;
            river2.Next           = quay;
            quay.Next             = river4;
        }
 public void Init()
 {
     /*
      * ~Q~
      * Q
      * -Q- - H        */
     water1      = new WaterLink();
     water2      = new WaterQuay();
     water3      = new WaterLink();
     hangar      = new Hangar();
     link2       = new Track();
     link3       = new Track();
     link4       = new Track();
     quay        = new WaterQuay();
     ship1       = new Ship(water1);
     water1.Next = quay;
     //quay.NextWater = water3;
     hangar.Next = link2;
     link2.Next  = quay;
     quay.Next   = link4;
 }
Beispiel #3
0
        public void Initialize()
        {
            hangar      = new Hangar();
            secondTrack = new Track();
            quayTrack   = new Track();
            fourthTrack = new Track();
            water1      = new WaterLink();
            water2      = new WaterLink();
            water4      = new WaterLink();
            quay        = new WaterQuay();
            quay.track  = quayTrack;
            ship        = new Ship(water1);

            water1.Occupant = ship;
            water1.Next     = water2;
            water2.Next     = quay;
            quay.Next       = water4;

            hangar.Next      = secondTrack;
            secondTrack.Next = quayTrack;
            quayTrack.Next   = fourthTrack;
        }
Beispiel #4
0
        public void LayLinks()
        {
            if (_hasNexts == null)
            {
                throw new InvalidOperationException();
            }
            // Loop over array.
            for (int y = 0; y < _hasNexts.Length; y++)
            {
                for (int x = 0; x < _hasNexts[y].Length; x++)
                {
                    // Check is item is null
                    if (_hasNexts[y][x] == null)
                    {
                        continue;
                    }
                    // Yeey, we found a item, Lets check its identity.
                    switch (_hasNexts[y][x])
                    {
                    case Hangar hangar:
                        // Look right for a tracklink and link to it.
                        if (IsType <Track>(y, x + 1))
                        {
                            hangar.Next = _hasNexts[y] [x + 1];
                            Hangars.Add(hangar);
                        }
                        continue;

                    case Yard yard:
                        // Look Left for another yard.
                        if (IsType <Yard>(y, x - 1))
                        {
                            yard.Next = _hasNexts[y][x - 1];
                        }
                        continue;

                    case Turnout1To2 turnout1To2:
                        // Look up and down.
                        LinkTurnout(turnout1To2, y, x);
                        // Look left
                        if (IsType <Track>(y, x - 1))
                        {
                            turnout1To2.Next = turnout1To2.optionDown;
                        }
                        turnout1To2.ChangeDirection();
                        turnout1To2.ChangeDirection();
                        continue;

                    case Turnout2To1 turnout2To1:
                        // Look up and down.
                        LinkTurnout(turnout2To1, y, x);
                        // Look right
                        if (IsType <Track>(y, x + 1))
                        {
                            turnout2To1.Next = _hasNexts[y][x + 1];
                        }
                        turnout2To1.ChangeDirection();
                        turnout2To1.ChangeDirection();
                        continue;

                    case WaterQuay waterQuay:
                        //Look left
                        AddNext <WaterLink>(waterQuay, y, x - 1);
                        //Lood down
                        waterQuay.track = (Track)_hasNexts[y + 1][x];
                        this.quay       = waterQuay;
                        continue;

                    case WaterLink waterLink when waterLink.GetType() == typeof(WaterLink):
                        //Look left
                        AddNext <WaterLink>(waterLink, y, x - 1);

                        firstRiver = (WaterLink)waterLink;
                        continue;

                    case Track track when track.GetType() == typeof(Track):
                        LinkTracks(track, y, x);

                        continue;
                    }
                }
            }
        }