Ejemplo n.º 1
0
        public DarkMountain(
            PaletteIndexCollectionBuilder builder1,
            PaletteIndexCollectionBuilder builder2)
        {
            if (builder1 is null)
            {
                throw new ArgumentNullException(nameof(builder1));
            }

            if (builder2 is null)
            {
                throw new ArgumentNullException(nameof(builder2));
            }

            builder1.AddBox(15, 0, 4, 3);
            builder1.AddRow(15, 6, 1);
            builder1.AddRow(17, 4, 3);
            builder1.AddColumn(45, 0, 2);
            builder1.AddRow(85, 0, 4);
            builder1.AddRow(85, 6, 1);
            builder1.AddRow(89, 0, 4);
            builder2.AddBox(0, 0, 4, 2);
            builder2.AddRow(1, 6, 1);
            builder2.AddRow(2, 0, 1);
            builder2.AddRow(4, 0, 4);
            WallsAndAbyss = FlushCombined();

            builder1.AddRow(15, 4, 2);
            builder1.AddRow(18, 5, 2);
            builder1.AddRow(19, 5, 1);
            builder1.AddColumn(45, 5, 3);
            builder1.AddRow(84, 5, 1);
            builder1.AddRow(89, 5, 1);
            builder2.AddRow(4, 5, 1);
            Ground = FlushCombined();

            builder1.AddRow(16, 4, 1);
            builder1.AddRow(16, 6, 1);
            builder1.AddRow(47, 4, 1);
            builder1.AddRow(47, 6, 1);
            builder1.AddRow(85, 5, 1);
            builder1.AddRow(87, 0, 5);
            builder1.AddRow(89, 4, 1);
            builder1.AddRow(89, 6, 1);
            PinkClouds = builder1.Flush();

            builder1.AddRow(-10, 4, 1);
            builder1.AddRow(-10, 6, 1);
            builder1.AddRow(86, 4, 1);
            builder1.AddRow(86, 6, 1);
            BlackClouds = builder1.Flush();

            builder1.AddRow(86, 3, 1);
            Lava = builder1.Flush();

            builder1.AddRow(-10, 5, 1);
            builder1.AddRow(16, 5, 1);
            builder1.AddRow(86, 0, 3);
            builder1.AddRow(86, 5, 1);
            LavaGround = builder1.Flush();

            builder1.AddRow(18, 0, 5);
            RocksAndGems = builder1.Flush();

            builder1.AddRow(19, 0, 5);
            builder1.AddRow(19, 6, 1);
            PostsAndSteaks = builder1.Flush();

            builder2.AddRow(0, 4, 3);
            builder2.AddRow(1, 5, 1);
            builder2.AddRow(2, 1, 6);
            builder2.AddRow(3, 4, 3);
            builder2.AddRow(4, 4, 1);
            builder2.AddRow(4, 6, 1);
            Lightning = builder2.Flush();

            builder1.AddBox(45, 1, 4, 2);
            builder1.AddColumn(45, 6, 2);
            builder1.AddRow(47, 1, 3);
            TurtleRockHead = builder1.Flush();

            builder1.AddRow(84, 0, 5);
            builder1.AddRow(84, 6, 1);
            TurtleRockLegs = builder1.Flush();

            builder1.AddRow(88, 1, 1);
            builder1.AddRow(88, 6, 1);
            GanonsTowerHighlight = builder1.Flush();

            builder1.AddRow(88, 0, 1);
            builder1.AddRow(88, 2, 4);
            GanonsTowerPrimary = builder1.Flush();

            AllIndexCollections = new ReadOnlyCollection <IndexCollection>(
                new IndexCollection[]
            {
                Ground,
                PinkClouds,
                BlackClouds,
                Lava,
                LavaGround,
                WallsAndAbyss,
                RocksAndGems,
                PostsAndSteaks,
                TurtleRockHead,
                TurtleRockLegs,
                Lightning,
                GanonsTowerPrimary,
                GanonsTowerHighlight,
            });

            MiscIndexCollections = new ReadOnlyCollection <IndexCollection>(
                new IndexCollection[]
            {
                Ground,
                PinkClouds,
                Lava,
                LavaGround,
                Lightning,
                RocksAndGems,
                PostsAndSteaks,
                TurtleRockHead,
                TurtleRockLegs,
                GanonsTowerHighlight,
            });

            IndexCollection FlushCombined()
            {
                var collection = builder1.ConvertBaseCollection().Concat(
                    builder2.ConvertBaseCollection());

                builder1.Clear();
                builder2.Clear();
                return(new ListIndexCollection(collection));
            }
        }