Skip to content

Commit

Permalink
Adding Duplicate (Ctrl+D) option for chunk/block/tile lists.
Browse files Browse the repository at this point in the history
  • Loading branch information
MainMemory committed Apr 24, 2016
1 parent b3eac7f commit c358146
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 22 deletions.
46 changes: 28 additions & 18 deletions SonLVL/MainForm.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

65 changes: 61 additions & 4 deletions SonLVL/MainForm.cs
Expand Up @@ -4168,6 +4168,7 @@ private void ChunkSelector_MouseDown(object sender, MouseEventArgs e)
drawToolStripMenuItem.Enabled = LevelData.Chunks.Count < 256;
insertAfterToolStripMenuItem.Enabled = drawToolStripMenuItem.Enabled;
insertBeforeToolStripMenuItem.Enabled = drawToolStripMenuItem.Enabled;
duplicateTilesToolStripMenuItem.Enabled = drawToolStripMenuItem.Enabled;
deleteTilesToolStripMenuItem.Enabled = LevelData.Chunks.Count > 1;
cutTilesToolStripMenuItem.Enabled = deleteTilesToolStripMenuItem.Enabled;
deepCopyToolStripMenuItem.Visible = true;
Expand All @@ -4187,6 +4188,7 @@ private void BlockSelector_MouseDown(object sender, MouseEventArgs e)
drawToolStripMenuItem.Enabled = LevelData.Blocks.Count < blockmax;
insertAfterToolStripMenuItem.Enabled = drawToolStripMenuItem.Enabled;
insertBeforeToolStripMenuItem.Enabled = drawToolStripMenuItem.Enabled;
duplicateTilesToolStripMenuItem.Enabled = drawToolStripMenuItem.Enabled;
deleteTilesToolStripMenuItem.Enabled = LevelData.Blocks.Count > 1;
cutTilesToolStripMenuItem.Enabled = deleteTilesToolStripMenuItem.Enabled;
deepCopyToolStripMenuItem.Visible = true;
Expand All @@ -4205,6 +4207,7 @@ private void TileSelector_MouseDown(object sender, MouseEventArgs e)
drawToolStripMenuItem.Enabled = LevelData.Tiles.Count < 0x800;
insertAfterToolStripMenuItem.Enabled = drawToolStripMenuItem.Enabled;
insertBeforeToolStripMenuItem.Enabled = drawToolStripMenuItem.Enabled;
duplicateTilesToolStripMenuItem.Enabled = drawToolStripMenuItem.Enabled;
deleteTilesToolStripMenuItem.Enabled = LevelData.Tiles.Count > 1;
cutTilesToolStripMenuItem.Enabled = deleteTilesToolStripMenuItem.Enabled;
deepCopyToolStripMenuItem.Visible = false;
Expand Down Expand Up @@ -4644,6 +4647,28 @@ private void pasteAfterToolStripMenuItem_Click(object sender, EventArgs e)
}
}

private void duplicateTilesToolStripMenuItem_Click(object sender, EventArgs e)
{
switch (CurrentTab)
{
case Tab.Chunks:
LevelData.Chunks.InsertAfter(SelectedChunk, LevelData.Chunks[SelectedChunk].Clone());
SelectedChunk++;
InsertChunk();
break;
case Tab.Blocks:
LevelData.Blocks.InsertAfter(SelectedBlock, LevelData.Blocks[SelectedBlock].Clone());
SelectedBlock++;
InsertBlock();
break;
case Tab.Tiles:
LevelData.Tiles.InsertAfter(SelectedTile, (byte[])LevelData.Tiles[SelectedTile].Clone());
SelectedTile++;
InsertTile();
break;
}
}

private void insertBeforeToolStripMenuItem_Click(object sender, EventArgs e)
{
switch (CurrentTab)
Expand Down Expand Up @@ -5380,6 +5405,24 @@ private void TileList_KeyDown(object sender, KeyEventArgs e)
if (e.Control)
copyTilesToolStripMenuItem_Click(sender, EventArgs.Empty);
break;
case Keys.D:
if (e.Control)
switch (CurrentTab)
{
case Tab.Chunks:
if (LevelData.Chunks.Count < 0x100)
duplicateTilesToolStripMenuItem_Click(sender, EventArgs.Empty);
break;
case Tab.Blocks:
if (LevelData.Blocks.Count < LevelData.GetBlockMax())
duplicateTilesToolStripMenuItem_Click(sender, EventArgs.Empty);
break;
case Tab.Tiles:
if (LevelData.Tiles.Count < 0x800)
duplicateTilesToolStripMenuItem_Click(sender, EventArgs.Empty);
break;
}
break;
case Keys.Delete:
switch (CurrentTab)
{
Expand Down Expand Up @@ -5419,22 +5462,36 @@ private void TileList_KeyDown(object sender, KeyEventArgs e)
switch (CurrentTab)
{
case Tab.Chunks:
if (Clipboard.GetDataObject().GetDataPresent(typeof(Chunk).AssemblyQualifiedName) & LevelData.Chunks.Count < 0x100)
if ((Clipboard.ContainsData(typeof(ChunkCopyData).AssemblyQualifiedName) || Clipboard.ContainsData(typeof(Chunk).AssemblyQualifiedName)) && LevelData.Chunks.Count < 0x100)
pasteAfterToolStripMenuItem_Click(sender, EventArgs.Empty);
break;
case Tab.Blocks:
if (Clipboard.GetDataObject().GetDataPresent(typeof(Block).AssemblyQualifiedName) & LevelData.Blocks.Count < LevelData.GetBlockMax())
if ((Clipboard.ContainsData(typeof(BlockCopyData).AssemblyQualifiedName) || Clipboard.ContainsData(typeof(Block).AssemblyQualifiedName)) && LevelData.Blocks.Count < LevelData.GetBlockMax())
pasteAfterToolStripMenuItem_Click(sender, EventArgs.Empty);
break;
case Tab.Tiles:
if (Clipboard.GetDataObject().GetDataPresent("SonLVLTile") & LevelData.Tiles.Count < 0x800)
if (Clipboard.ContainsData("SonLVLTile") & LevelData.Tiles.Count < 0x800)
pasteAfterToolStripMenuItem_Click(sender, EventArgs.Empty);
break;
}
break;
case Keys.X:
if (e.Control)
cutTilesToolStripMenuItem_Click(sender, EventArgs.Empty);
switch (CurrentTab)
{
case Tab.Chunks:
if (LevelData.Chunks.Count > 1)
cutTilesToolStripMenuItem_Click(sender, EventArgs.Empty);
break;
case Tab.Blocks:
if (LevelData.Blocks.Count > 1)
cutTilesToolStripMenuItem_Click(sender, EventArgs.Empty);
break;
case Tab.Tiles:
if (LevelData.Tiles.Count > 1)
cutTilesToolStripMenuItem_Click(sender, EventArgs.Empty);
break;
}
break;
}
}
Expand Down

0 comments on commit c358146

Please sign in to comment.