diff --git a/NHSE.WinForms/Subforms/FieldItemEditor.cs b/NHSE.WinForms/Subforms/FieldItemEditor.cs index 0e7e86b..e61c6ea 100644 --- a/NHSE.WinForms/Subforms/FieldItemEditor.cs +++ b/NHSE.WinForms/Subforms/FieldItemEditor.cs @@ -119,17 +119,17 @@ private Button CreateGridItem(int index, int x, int y) button.Click += (sender, args) => { - GetTile(button, out var tile, out var obj); + var tile = GetTile(Layer, index); switch (ModifierKeys) { default: ViewTile(tile); return; - case Keys.Shift: SetTile(tile, obj); return; - case Keys.Alt: DeleteTile(tile, obj); return; + case Keys.Shift: SetTile(tile, button); return; + case Keys.Alt: DeleteTile(tile, button); return; } }; button.MouseEnter += (sender, args) => { - GetTile(button, out var tile, out var obj); + var tile = GetTile(Layer, index); var str = GameInfo.Strings; var name = str.GetItemName(tile.DisplayItemId); TT_Hover.SetToolTip(button, name); @@ -196,10 +196,14 @@ private void GetTile(object sender, out FieldItem tile, out Button obj) if (index < 0) throw new ArgumentException(nameof(Button)); - var layer = Layer; - var x = X + (index % GridWidth); - var y = Y + (index / GridWidth); - tile = layer.GetTile(x, y); + tile = GetTile(Layer, index); + } + + private FieldItem GetTile(FieldItemLayer layer, int index) + { + var x = X + (index % layer.GridWidth); + var y = Y + (index / layer.GridWidth); + return layer.GetTile(x, y); } private static void RefreshTile(Control button, FieldItem tile) diff --git a/NHSE.WinForms/Subforms/TerrainEditor.cs b/NHSE.WinForms/Subforms/TerrainEditor.cs index d7ecc12..fa9ef7b 100644 --- a/NHSE.WinForms/Subforms/TerrainEditor.cs +++ b/NHSE.WinForms/Subforms/TerrainEditor.cs @@ -113,12 +113,12 @@ private Button CreateGridItem(int index, int x, int y) button.Click += (sender, args) => { - GetTile(button, out var tile, out var obj); + var tile = GetTile(index); switch (ModifierKeys) { default: ViewTile(tile); return; - case Keys.Shift: SetTile(tile, obj); return; - case Keys.Alt: DeleteTile(tile, obj); return; + case Keys.Shift: SetTile(tile, button); return; + case Keys.Alt: DeleteTile(tile, button); return; } }; return button; @@ -180,9 +180,14 @@ private void GetTile(object sender, out TerrainTile tile, out Button obj) if (index < 0) throw new ArgumentException(nameof(Button)); + tile = GetTile(index); + } + + private TerrainTile GetTile(int index) + { var x = X + (index % GridWidth); var y = Y + (index / GridWidth); - tile = Terrain.GetTile(x, y); + return Terrain.GetTile(x, y); } private static void RefreshTile(Control button, TerrainTile tile)