Esempio n. 1
0
        private ImmovableObject GetObject(char type, int row)
        {
            ImmovableObject immovableObject = null;

            switch (type)
            {
            case '-':
                immovableObject = new StandardTrack();
                break;

            case 'S':
                immovableObject = new StartingPoint();
                _startingPoints.Add(immovableObject as StartingPoint);
                break;

            case 'E':
                immovableObject = new DoubleEntranceSwitch();
                _switches.Add(immovableObject as Switch);
                break;

            case 'X':
                immovableObject = new DoubleExitSwitch();
                _switches.Add(immovableObject as Switch);
                break;

            case 'Y':
                immovableObject = new Yard();
                break;

            case 'D':
                immovableObject = new Dock(this);
                _dock           = immovableObject as Dock;
                break;

            case '.':
                immovableObject = new EndPoint();
                break;

            case ' ':
                immovableObject = new Empty();
                break;
            }
            return(immovableObject ?? null);
        }
Esempio n. 2
0
        private void generateField()
        {
            this._gameField = new LinkedList <Field>();


            _filePath  = Directory.GetParent(Directory.GetParent(_filePath).FullName).FullName;
            _filePath += @"\Level\map1.txt";


            string[] lines = System.IO.File.ReadAllLines(_filePath);


            Field prev = null;
            Field next = null;

            int i = 0;

            foreach (string line in lines)
            {
                foreach (char Char in line)
                {
                    if (prev == null)
                    {
                        prev     = new WaterField();
                        prev.Pos = i;
                    }

                    switch (Char)
                    {
                    case '~':
                        next = new WaterField();
                        break;

                    case '-':
                        next = new Track("-");
                        break;

                    case '|':
                        next = new Track("|");
                        break;

                    case '.':
                        next = new EmptyField();
                        break;

                    case 'D':
                        next = new Dock();
                        break;

                    case 'Y':
                        next = new Yard();
                        break;

                    // ╮
                    case 'w':
                        next = new Track("╮");
                        break;

                    // ╭
                    case 'x':
                        next = new Track("╭");
                        break;

                    // ╯
                    case 'y':
                        next = new Track("╯");
                        break;

                    // ╰
                    case 'z':
                        next = new Track("╰");
                        break;

                    // In
                    case 'S':
                        next = new SwitchIn("╭");
                        break;

                    // Out
                    case 's':
                        next = new SwitchOut("╮");
                        break;

                    case 'A':
                        next = new Warehouse();
                        break;

                    // Ship
                    case '0':
                        next     = new WaterField();
                        next.Pos = i;
                        next.PutMoveAbleObjectOnThisField(new Ship(), this);
                        break;

                    default:
                        Console.WriteLine("CORRUPT MAP FILE :(");
                        Console.ReadKey();
                        break;
                    }

                    next.Pos       = i;
                    prev.NextField = next;
                    prev           = next;
                    this._gameField.AddLast(prev);

                    i++;
                }
            }

            generateTrackLinks();
        }