Inheritance: System.Windows.Forms.Form
Beispiel #1
0
 void ChunkRightClicked(object sender, MouseEventArgs e)
 {
     MapChunkControl mcc = (MapChunkControl)sender;
     SelectedVoxel = new Vector3i(
         CurrentPosition.X + (e.X / _ZoomLevel) + (mcc.AssignedChunk.X * _Map.ChunkScale.X),
         CurrentPosition.Y + (e.Y / _ZoomLevel) + (mcc.AssignedChunk.Y * _Map.ChunkScale.Y),
         CurrentPosition.Z);
     if (e.Button == MouseButtons.Left)
     {
         Vector3i bp = new Vector3i(e.X/ZoomLevel,e.Y/ZoomLevel,CurrentPosition.Z);
         Chunk c = _Map.GetChunk(mcc.AssignedChunk.X,mcc.AssignedChunk.Y);
         if (c == null) return;
         c.Blocks[bp.X,bp.Y,bp.Z] =CurrentMaterial;
         c.Save();
     }
     if (e.Button == MouseButtons.Right)
     {
         Vector3i bp = new Vector3i(e.X/ZoomLevel,e.Y/ZoomLevel,CurrentPosition.Z);
         Chunk c = _Map.GetChunk(mcc.AssignedChunk);
         Block b = Blocks.Get(0);
         if (c != null)
         {
             byte bid = c.GetBlock(bp);
             b = Blocks.Get(bid);
         }
         ContextMenu cmnu = new System.Windows.Forms.ContextMenu();
         cmnu.MenuItems.AddRange(new MenuItem[]{
             new MenuItem("What's this?",new EventHandler(delegate(object s,EventArgs ea){
                 MessageBox.Show("That is a(n) " + b.ToString() + " block.");
             })),
             new MenuItem("Remove this.",new EventHandler(delegate(object s,EventArgs ea){
                 c.SetBlock(bp,0x00);
                 mcc.Render();
                 mcc.Refresh();
             })),
             new MenuItem("-"),
             new MenuItem("Replace..."),//,new EventHandler(delegate(object s,EventArgs ea){})),
             new MenuItem("Paint..."),//,new EventHandler(delegate(object s,EventArgs ea){})),
             new MenuItem("Generate...",new EventHandler(delegate(object s,EventArgs ea){
                 int fa;
                 Map.Generate(Map, mcc.AssignedChunk.X,mcc.AssignedChunk.Y);
                 Map.LoadChunk(mcc.AssignedChunk.X, mcc.AssignedChunk.Y);
                 mcc.Render();
                 mcc.Refresh();
             })),
             new MenuItem("-"),
             new MenuItem("Delete Chunk...",new EventHandler(delegate(object s,EventArgs ea){
                 Map.LoadChunk(mcc.AssignedChunk.X, mcc.AssignedChunk.Y);
                 c.Delete();
                 mcc.Render();
                 mcc.Refresh();
             })),
             new MenuItem("Refresh",new EventHandler(delegate(object s,EventArgs ea){
                 mcc.Render();
                 mcc.Refresh();
             })),
             new MenuItem("Chunk Properties...",new EventHandler(delegate(object s,EventArgs ea){
                 dlgChunk chunkdlg = new dlgChunk(_Map, mcc.AssignedChunk);
                 chunkdlg.ShowDialog();
             })),
         });
         cmnu.Show(mcc, new Point(0, 0));
     }
 }
Beispiel #2
0
        void ChunkRightClicked(object sender, MouseEventArgs e)
        {
            MapChunkControl mcc = (MapChunkControl)sender;

            SelectedVoxel = new Vector3i(
                CurrentPosition.X + (e.X / _ZoomLevel) + (mcc.AssignedChunk.X * _Map.ChunkScale.X),
                CurrentPosition.Y + (e.Y / _ZoomLevel) + (mcc.AssignedChunk.Y * _Map.ChunkScale.Y),
                CurrentPosition.Z);
            if (e.Button == MouseButtons.Left)
            {
                Vector3i bp = new Vector3i(e.X / ZoomLevel, e.Y / ZoomLevel, CurrentPosition.Z);
                Chunk    c  = _Map.GetChunk(mcc.AssignedChunk.X, mcc.AssignedChunk.Y);
                if (c == null)
                {
                    return;
                }
                c.Blocks[bp.X, bp.Y, bp.Z] = CurrentMaterial;
                c.Save();
            }
            if (e.Button == MouseButtons.Right)
            {
                Vector3i bp = new Vector3i(e.X / ZoomLevel, e.Y / ZoomLevel, CurrentPosition.Z);
                Chunk    c  = _Map.GetChunk(mcc.AssignedChunk);
                Block    b  = Blocks.Get(0);
                if (c != null)
                {
                    byte bid = c.GetBlock(bp);
                    b = Blocks.Get(bid);
                }
                ContextMenu cmnu = new System.Windows.Forms.ContextMenu();
                cmnu.MenuItems.AddRange(new MenuItem[] {
                    new MenuItem("What's this?", new EventHandler(delegate(object s, EventArgs ea){
                        MessageBox.Show("That is a(n) " + b.ToString() + " block.");
                    })),
                    new MenuItem("Remove this.", new EventHandler(delegate(object s, EventArgs ea){
                        c.SetBlock(bp, 0x00);
                        mcc.Render();
                        mcc.Refresh();
                    })),
                    new MenuItem("-"),
                    new MenuItem("Replace..."), //,new EventHandler(delegate(object s,EventArgs ea){})),
                    new MenuItem("Paint..."),   //,new EventHandler(delegate(object s,EventArgs ea){})),
                    new MenuItem("Generate...", new EventHandler(delegate(object s, EventArgs ea){
                        double min, max;
                        Map.Generate(mcc.AssignedChunk.X, mcc.AssignedChunk.Y, out min, out max);
                        Map.LoadChunk(mcc.AssignedChunk.X, mcc.AssignedChunk.Y);
                        mcc.Render();
                        mcc.Refresh();
                    })),
                    new MenuItem("-"),
                    new MenuItem("Delete Chunk...", new EventHandler(delegate(object s, EventArgs ea){
                        Map.LoadChunk(mcc.AssignedChunk.X, mcc.AssignedChunk.Y);
                        c.Delete();
                        mcc.Render();
                        mcc.Refresh();
                    })),
                    new MenuItem("Refresh", new EventHandler(delegate(object s, EventArgs ea){
                        mcc.Render();
                        mcc.Refresh();
                    })),
                    new MenuItem("Chunk Properties...", new EventHandler(delegate(object s, EventArgs ea){
                        dlgChunk chunkdlg = new dlgChunk(_Map, mcc.AssignedChunk);
                        chunkdlg.ShowDialog();
                    })),
                });
                cmnu.Show(mcc, new Point(0, 0));
            }
        }