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)); } }
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)); } }