Пример #1
0
        public TileSelection(GameWindow win)
        {
            InitializeComponent();
            this.win = win;

            // Grab tiles
            string[] files = Directory.GetFiles("res/res/tiles", "*.png");
            files.ToList().ForEach(x => {
                RadioButton cb = new RadioButton();
                cb.Appearance = Appearance.Button;
                cb.Image = Bitmap.FromFile(x);
                cb.Size = new Size(32, 32);
                flow_tiles.Controls.Add(cb);

                string tilename = Path.GetFileNameWithoutExtension(x);
                cb.Tag = win.LoadTile(tilename, x);

                cb.CheckedChanged += new EventHandler((ob, ev) => {
                    selectedtile = (int)cb.Tag;
                });
            });

            MapList ml = new MapList();
            ml.Show();

            (flow_tiles.Controls[0] as RadioButton).Checked = true;

            // Make the selection box
            Bitmap box = new Bitmap(32, 32);
            using (Graphics gfx = Graphics.FromImage(box))
            {
                gfx.FillRectangle(new SolidBrush(Color.FromArgb(0, Color.Black)), new Rectangle(0, 0, 32, 32));
                gfx.DrawRectangle(new Pen(Color.Cyan), new Rectangle(0, 0, 31, 31));
            }

            selectionbox = new AnObject(win.LoadTile("selection", box));

            m = new Map(win, 30, 30);

            m.CheckPassable = false;
            m.SetCeiling(selectionbox, 0, 0);
            m.FillFloor(new FloorTile(0));

             s = new Scene(m);
            win.Scene = s;

            // Set up the keys
            s.KeyDown += new EventHandler<KeyEventArgs>((o, e) =>
            {
                m.SetCeiling(null, m.CameraX, m.CameraY);
                switch (e.KeyCode)
                {
                    case Keys.Up:
                        m.CameraY--;
                        break;
                    case Keys.Down:
                        m.CameraY++;
                        break;
                    case Keys.Left:
                        m.CameraX--;
                        break;
                    case Keys.Right:
                        m.CameraX++;
                        break;
                    case Keys.Space:
                        m.SetFloor(new FloorTile(selectedtile), m.CameraX, m.CameraY);
                        break;
                    //case Keys.Escape:
                    //    mnu.Visible = !mnu.Visible;
                    //    break;
                }

                m.SetCeiling(selectionbox, m.CameraX, m.CameraY);
            });
        }
Пример #2
0
 private void btn_newmap_Click(object sender, EventArgs e)
 {
     MapConfig mc = new MapConfig();
     mc.ShowDialog();
     m = new Map(win, mc.MapWidth, mc.MapHeight);
     m.FillFloor(new FloorTile(0));
     m.SetCeiling(selectionbox, 0, 0);
     s.ChangeMap(m);
 }