Exemplo n.º 1
0
        void Load()
        {
            game.GraphicsDeviceManager.DeviceReset += new EventHandler(GraphicsDevice_DeviceReset);

            characters = new Sprite(PointScale(3, Engine.Content.Load<Texture2D>(@"characters")));
            environment = new Sprite(PointScale(3, Engine.Content.Load<Texture2D>(@"environment")));
            MetaFont za = new MetaFont("Zaratustra Assemblee", game.Content.RootDirectory);

            Layer l = Engine.CurrentMap.NewLayer();
            Layer hud = Engine.CurrentMap.NewLayer(100);

            Engine.Camera.Dimensions = new Vector2(1280, 720);
            Engine.Camera.Center = new Vector2(640, -360);
            Engine.Camera.Mode = CameraCropMode.MaintainWidth;

            //Tile debug = new Tile(new Sprite(@"debug"));

            //l.Add(debug);

            DungeonTile[] tiles =
            {
                new DungeonTile(environment, OryxTile(3, 0), TileType.Rock),
                new DungeonTile(environment, OryxTile(3, 11), TileType.Rock),
                new DungeonTile(environment, OryxTile(7, 11), TileType.Rock),

                // gray unfinished
                new DungeonTile(environment, OryxTile(0, 0), TileType.Wall),
                new DungeonTile(environment, OryxTile(1, 0, 2, 1), TileType.Wall, new AnimationScript(new Point[]{new Point(0, 0), new Point(1,0)}, TimeSpan.FromSeconds(1))),
                new DungeonTile(environment, OryxTile(3, 0), TileType.Wall),
                // gray w/brown box
                new DungeonTile(environment, OryxTile(0, 11), TileType.Wall),
                new DungeonTile(environment, OryxTile(1, 11, 2, 1), TileType.Wall, new AnimationScript(new Point[]{new Point(0,0), new Point(1,0)}, TimeSpan.FromSeconds(1))),
                new DungeonTile(environment, OryxTile(3, 11), TileType.Wall),
                // gray w/gray box
                new DungeonTile(environment, OryxTile(4, 11), TileType.Wall),
                // these tiles look like someone took a bite out of the bottom
                //new DungeonTile(environment, OryxTile(5, 11, 2, 1), TileType.Wall, new AnimationScript(new int[]{0, 1}, 1)),
                new DungeonTile(environment, OryxTile(7, 11), TileType.Wall),

                new DungeonTile(environment, OryxTile(5, 0), TileType.Floor),
                new DungeonTile(environment, OryxTile(6, 0), TileType.Floor),

                new DungeonTile(environment, OryxTile(7, 0), TileType.StairsUp),

                new DungeonTile(environment, OryxTile(8, 0), TileType.StairsDown),

                new DungeonTile(environment, OryxTile(9, 0), TileType.Pit),

                new DungeonTile(environment, OryxTile(10, 0), TileType.TrapDoorClosed),

                new DungeonTile(environment, OryxTile(11, 0), TileType.TrapDoorOpen),

                new DungeonTile(environment, OryxTile(12, 0), TileType.Threshold),
                new DungeonTile(environment, OryxTile(0, 5), TileType.Threshold),
                new DungeonTile(environment, OryxTile(1, 5), TileType.Threshold),
                new DungeonTile(environment, OryxTile(1, 6), TileType.Threshold)
            };

            TextWidget tw = new TextWidget("Tetrogue v0.1");
            tw.Position = new Vector2(616, 0);
            tw.HorizontalAlignment = Alignment.Near;
            tw.VerticalAlignment = Alignment.Near;
            tw.FontFace = za;
            tw.FontSize = 32;
            tw.Foreground = Color.Black;
            hud.Add(tw);

            ChunkTemplateGenerator ctg = new ChunkTemplateGenerator(tiles);
            GameBoard gb = new GameBoard(6, 8, 4);
            long seed = DateTime.Now.Ticks;

            for (int i = 0; i < 6; i++)
            {
                for (int j = 0; j < 8; j++)
                {
                    gb[i, j] = ctg.GenerateChunk(seed);
                    seed <<= 2;
                    seed ^= DateTime.Now.Ticks;
                }
            }

            l.Add(gb);
            gb.Position = new Vector2(20, 20);
        }