diff --git a/NHSE.Sprites/Field/MapRenderer.cs b/NHSE.Sprites/Field/MapRenderer.cs
index 7bf8ace..e55d08d 100644
--- a/NHSE.Sprites/Field/MapRenderer.cs
+++ b/NHSE.Sprites/Field/MapRenderer.cs
@@ -115,14 +115,14 @@ public Bitmap UpdateViewportItems(int transparency)
///
/// Updates the viewport terrain bitmap.
///
- /// Font to use for building labels.
+ /// Font to use for building labels.
/// Transparency for building shapes drawn on terrain.
/// Transparency for terrain layer.
/// Index of building to highlight, or -1 for none.
///
- public Bitmap UpdateViewportTerrain(Font f, byte transparencyBuilding, byte transparencyTerrain, int selectedBuildingIndex = -1)
+ public Bitmap UpdateViewportTerrain(Font textFont, byte transparencyBuilding, byte transparencyTerrain, int selectedBuildingIndex = -1)
{
- TerrainSprite.LoadViewport(ViewportTerrainImage, Map, f, ViewportTerrain1, ViewportTerrainX, selectedBuildingIndex, transparencyBuilding, transparencyTerrain);
+ TerrainSprite.LoadViewport(ViewportTerrainImage, Map, textFont, ViewportTerrain1, ViewportTerrainX, selectedBuildingIndex, transparencyBuilding, transparencyTerrain);
return ViewportTerrainImage;
}
diff --git a/NHSE.Sprites/Field/TerrainSprite.cs b/NHSE.Sprites/Field/TerrainSprite.cs
index dd88237..e6fe70f 100644
--- a/NHSE.Sprites/Field/TerrainSprite.cs
+++ b/NHSE.Sprites/Field/TerrainSprite.cs
@@ -12,7 +12,7 @@ public static class TerrainSprite
{
private static readonly Brush Selected = Brushes.Red;
private static readonly Brush Others = Brushes.Yellow;
- private static readonly Brush Text = Brushes.White;
+ private static readonly Brush Text = Brushes.Black;
private static readonly Brush Tile = Brushes.Black;
private static readonly Brush Plaza = Brushes.RosyBrown;
private static readonly Color PlazaColor = Color.RosyBrown;
@@ -90,7 +90,7 @@ public static Bitmap GetMapWithBuildings(Bitmap map, MapEditor m, Span scal
///
/// The bitmap onto which the viewport will be drawn.
/// The map editor instance providing map data, building information, and viewport configuration.
- /// The font used to render building and terrain tile names within the viewport.
+ /// The font used to render building and terrain tile names within the viewport.
/// A span representing the primary scaling factors for rendering terrain pixels.
/// A span used for horizontal scaling and pixel data manipulation during rendering.
///
@@ -105,7 +105,7 @@ public static Bitmap GetMapWithBuildings(Bitmap map, MapEditor m, Span scal
/// The transparency level to apply when rendering terrain tile names.
/// A value of 0xFF is fully opaque; lower values increase transparency.
///
- public static void LoadViewport(Bitmap img, MapEditor m, Font f,
+ public static void LoadViewport(Bitmap img, MapEditor m, Font textFont,
Span scale1, Span scaleX,
int selectedBuildingIndex, byte transparencyBuilding, byte transTerrain)
{
@@ -132,28 +132,35 @@ public static Bitmap GetMapWithBuildings(Bitmap map, MapEditor m, Span scal
// Switch back to graphics mode
img.SetBitmapData(scaleX);
+
+ // Draw Text of Terrain Tile Names
+ if (transTerrain != 0)
+ gfx.DrawViewTerrainTileNames(m.Terrain, cfg, textFont, relX, relY, m.ViewScale * 2, transTerrain);
+
// Draw Text of Building Names
+ if (transparencyBuilding != 0)
+ gfx.DrawViewBuildingNames(m, textFont, transparencyBuilding);
+
+ // Done.
+ }
+
+ private static void DrawViewBuildingNames(this Graphics gfx, MapEditor m, Font textFont, byte transparency)
+ {
+ var brush = Text;
+ if (transparency != byte.MaxValue)
+ brush = new SolidBrush(Color.FromArgb(transparency, Color.Black));
+
foreach (var b in m.Buildings.Buildings)
{
var (x, y) = m.GetViewCoordinatesBuilding(b.X, b.Y);
- const int cellsAbove = 2; // Show label above the building, 2 cells up.
+ const int cellsAbove = -2; // Show label inside the building square, 2 cells inside.
y -= (m.ViewScale * cellsAbove);
- // Don't bother drawing if not in view.
- if (!m.Mutator.View.IsWithinView(m.ViewScale, x, y))
- continue;
-
var type = b.BuildingType;
var name = type.ToString();
var labelPosition = new PointF(x, y - (m.ViewScale * 2));
- gfx.DrawString(name, f, Text, labelPosition, BuildingTextFormat);
+ gfx.DrawString(name, textFont, brush, labelPosition, BuildingTextFormat);
}
-
- // Draw Text of Terrain Tile Names
- if (transTerrain != 0)
- gfx.DrawViewTerrainTileNames(m.Terrain, cfg, f, relX, relY, m.ViewScale * 2, transTerrain);
-
- // Done.
}
private static void DrawViewBuildings(this Graphics gfx, MapEditor m, int selectedBuildingIndex, byte transBuild)
@@ -170,7 +177,7 @@ private static void DrawViewBuildings(this Graphics gfx, MapEditor m, int select
var orig = ((SolidBrush)pen).Color;
pen = new SolidBrush(Color.FromArgb(transBuild, orig));
}
- gfx.DrawViewBuilding(m, b, pen, m.ViewScale, Text);
+ gfx.DrawViewBuilding(m, b, pen, m.ViewScale);
}
}
@@ -250,8 +257,7 @@ private static void DrawMapBuildings(this Graphics gfx, IReadOnlyList
}
}
- private static void DrawViewBuilding(this Graphics gfx, MapEditor m, Building b, Brush bBrush,
- int imgScale, Brush textBrush, Font? textFont = null)
+ private static void DrawViewBuilding(this Graphics gfx, MapEditor m, Building b, Brush bBrush, int imgScale)
{
var (x, y) = m.GetViewCoordinatesBuilding(b.X, b.Y);
var type = b.BuildingType;
@@ -261,14 +267,6 @@ private static void DrawMapBuildings(this Graphics gfx, IReadOnlyList
// Draw the building.
gfx.FillRectangle(bBrush, x, y, width * imgScale * 2, height * imgScale * 2);
-
- if (textFont == null)
- return;
-
- // Draw the text label above it.
- const int cellsAbove = 2;
- var name = type.ToString();
- gfx.DrawString(name, textFont, textBrush, new PointF(x, y - (imgScale * cellsAbove)), BuildingTextFormat);
}
private static void SetViewTerrainPixels(LayerTerrain t, LayerPositionConfig cfg, int relX, int relY, Span data, Span scaleX, int imgScale)
diff --git a/NHSE.WinForms/Editor.cs b/NHSE.WinForms/Editor.cs
index bac7ae1..a2f9603 100644
--- a/NHSE.WinForms/Editor.cs
+++ b/NHSE.WinForms/Editor.cs
@@ -38,7 +38,12 @@ public Editor(HorizonSave file)
// this.TranslateInterface(GameInfo.CurrentLanguage);
Text = SAV.GetSaveTitle("NHSE");
+ }
+
+ protected override void OnLoad(EventArgs e)
+ {
CenterToParent();
+ base.OnLoad(e);
}
private void Menu_Settings_Click(object sender, EventArgs e)
@@ -135,12 +140,13 @@ private void Menu_RAMEdit_Click(object sender, EventArgs e)
var exist = WinFormsUtil.FirstFormOfType();
if (exist != null)
{
- exist.Show();
+ exist.Show(this);
+ exist.BringToFront();
return;
}
var sysbot = new SysBotRAMEdit(InjectionType.Generic);
- sysbot.Show();
+ sysbot.Show(this);
}
private void Menu_ItemImages_Click(object sender, EventArgs e)
@@ -148,12 +154,13 @@ private void Menu_ItemImages_Click(object sender, EventArgs e)
var exist = WinFormsUtil.FirstFormOfType();
if (exist != null)
{
- exist.Show();
+ exist.Show(this);
+ exist.BringToFront();
return;
}
var imgfetcher = new ImageFetcher();
- imgfetcher.Show();
+ imgfetcher.Show(this);
}
private void Menu_Theme_System_Click(object sender, EventArgs e)
diff --git a/NHSE.WinForms/Main.cs b/NHSE.WinForms/Main.cs
index c38d7cc..8aeb3a4 100644
--- a/NHSE.WinForms/Main.cs
+++ b/NHSE.WinForms/Main.cs
@@ -120,12 +120,12 @@ private void Main_KeyDown(object sender, KeyEventArgs e)
}
}
- private static bool TryOpenSaveFile(string path)
+ private bool TryOpenSaveFile(string path)
{
if (!SaveFileLoader.TryGetSaveFile(path, out var sav))
return false;
var editor = new Editor(sav);
- editor.Show();
+ editor.Show(this);
return true;
}
}
\ No newline at end of file
diff --git a/NHSE.WinForms/Subforms/Map/FieldItemEditor.Designer.cs b/NHSE.WinForms/Subforms/Map/FieldItemEditor.Designer.cs
index 7fe0b96..7f68588 100644
--- a/NHSE.WinForms/Subforms/Map/FieldItemEditor.Designer.cs
+++ b/NHSE.WinForms/Subforms/Map/FieldItemEditor.Designer.cs
@@ -114,9 +114,9 @@ private void InitializeComponent()
FLP_Transparency = new System.Windows.Forms.FlowLayoutPanel();
L_TerrainTileLabelTransparency = new System.Windows.Forms.Label();
TR_Terrain = new System.Windows.Forms.TrackBar();
- TR_BuildingTransparency = new System.Windows.Forms.TrackBar();
- L_BuildingTransparency = new System.Windows.Forms.Label();
L_FieldItemTransparency = new System.Windows.Forms.Label();
+ L_BuildingTransparency = new System.Windows.Forms.Label();
+ TR_BuildingTransparency = new System.Windows.Forms.TrackBar();
B_TerrainBrush = new System.Windows.Forms.Button();
PG_TerrainTile = new System.Windows.Forms.PropertyGrid();
B_DumpLoadTerrain = new System.Windows.Forms.Button();
@@ -1073,6 +1073,28 @@ private void InitializeComponent()
TR_Terrain.TickFrequency = 32;
TR_Terrain.Scroll += TR_Terrain_Scroll;
//
+ // L_FieldItemTransparency
+ //
+ L_FieldItemTransparency.AutoSize = true;
+ FLP_Transparency.SetFlowBreak(L_FieldItemTransparency, true);
+ L_FieldItemTransparency.Location = new System.Drawing.Point(4, 49);
+ L_FieldItemTransparency.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ L_FieldItemTransparency.Name = "L_FieldItemTransparency";
+ L_FieldItemTransparency.Size = new System.Drawing.Size(145, 17);
+ L_FieldItemTransparency.TabIndex = 42;
+ L_FieldItemTransparency.Text = "Field Item Transparency";
+ //
+ // L_BuildingTransparency
+ //
+ L_BuildingTransparency.AutoSize = true;
+ FLP_Transparency.SetFlowBreak(L_BuildingTransparency, true);
+ L_BuildingTransparency.Location = new System.Drawing.Point(4, 98);
+ L_BuildingTransparency.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ L_BuildingTransparency.Name = "L_BuildingTransparency";
+ L_BuildingTransparency.Size = new System.Drawing.Size(135, 17);
+ L_BuildingTransparency.TabIndex = 44;
+ L_BuildingTransparency.Text = "Building Transparency";
+ //
// TR_BuildingTransparency
//
TR_BuildingTransparency.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
@@ -1088,28 +1110,6 @@ private void InitializeComponent()
TR_BuildingTransparency.Value = 255;
TR_BuildingTransparency.Scroll += TR_BuildingTransparency_Scroll;
//
- // L_BuildingTransparency
- //
- L_BuildingTransparency.AutoSize = true;
- FLP_Transparency.SetFlowBreak(L_BuildingTransparency, true);
- L_BuildingTransparency.Location = new System.Drawing.Point(4, 98);
- L_BuildingTransparency.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
- L_BuildingTransparency.Name = "L_BuildingTransparency";
- L_BuildingTransparency.Size = new System.Drawing.Size(135, 17);
- L_BuildingTransparency.TabIndex = 44;
- L_BuildingTransparency.Text = "Building Transparency";
- //
- // L_FieldItemTransparency
- //
- L_FieldItemTransparency.AutoSize = true;
- FLP_Transparency.SetFlowBreak(L_FieldItemTransparency, true);
- L_FieldItemTransparency.Location = new System.Drawing.Point(4, 49);
- L_FieldItemTransparency.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
- L_FieldItemTransparency.Name = "L_FieldItemTransparency";
- L_FieldItemTransparency.Size = new System.Drawing.Size(145, 17);
- L_FieldItemTransparency.TabIndex = 42;
- L_FieldItemTransparency.Text = "Field Item Transparency";
- //
// B_TerrainBrush
//
B_TerrainBrush.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left;
diff --git a/NHSE.WinForms/Subforms/Map/FieldItemEditor.cs b/NHSE.WinForms/Subforms/Map/FieldItemEditor.cs
index bcf6f53..284c8f7 100644
--- a/NHSE.WinForms/Subforms/Map/FieldItemEditor.cs
+++ b/NHSE.WinForms/Subforms/Map/FieldItemEditor.cs
@@ -1,4 +1,8 @@
-using System;
+using NHSE.Core;
+using NHSE.Sprites;
+using NHSE.WinForms.Subforms.Map;
+using System;
+using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Drawing;
@@ -6,9 +10,6 @@
using System.IO;
using System.Linq;
using System.Windows.Forms;
-using NHSE.Core;
-using NHSE.Sprites;
-using NHSE.WinForms.Subforms.Map;
namespace NHSE.WinForms;
@@ -237,16 +238,23 @@ private void OmniTileTerrain(MouseEventArgs e)
List selectedTiles = [];
int radius = tbeForm.Slider_thickness.Value;
int threshold = (radius * radius) / 2;
+ var cfg = Editor.Mutator.Manager.ConfigTerrain;
for (int i = -radius; i < radius; i++)
{
for (int j = -radius; j < radius; j++)
{
if ((i * i) + (j * j) < threshold)
- selectedTiles.Add(Editor.Terrain.GetTile(relX + i, relY + j));
+ {
+ var x = relX + i;
+ var y = relY + j;
+ if (cfg.IsCoordinateValidRelative(x, y))
+ selectedTiles.Add(Editor.Terrain.GetTile(x, y));
+ }
}
}
- SetTiles(selectedTiles);
+ if (selectedTiles.Count != 0)
+ SetTiles(selectedTiles);
}
private void OmniTile(Item tile, int relX, int relY)
@@ -349,7 +357,7 @@ private bool GetTile(MouseEventArgs e, LayerTerrain layerField, [NotNullWhen(tru
private bool GetTile(LayerTerrain layerField, int absX, int absY, [NotNullWhen(true)] out TileCheck? item)
{
- var cfg = Editor.Mutator.Manager.ConfigItems;
+ var cfg = Editor.Mutator.Manager.ConfigTerrain;
var (relX, relY) = cfg.GetCoordinatesRelative(absX, absY);
if (!cfg.IsCoordinateValidRelative(relX, relY))
{
@@ -375,17 +383,21 @@ private void UpdateHoveredCoordinates(MouseEventArgs e)
private void ViewportMouseMove(object sender, MouseEventArgs e)
{
- var l = CurrentLayer;
- if (e.Button == MouseButtons.Left && CHK_MoveOnDrag.Checked)
+ if (e.Button == MouseButtons.Left)
{
- MoveDrag(e);
- return;
- }
- if (e.Button == MouseButtons.Left && tbeForm?.IsBrushSelected == true)
- {
- OmniTileTerrain(e);
+ if (tbeForm?.IsBrushSelected == true)
+ {
+ OmniTileTerrain(e);
+ return;
+ }
+ if (CHK_MoveOnDrag.Checked)
+ {
+ MoveDrag(e);
+ return;
+ }
}
+ var l = CurrentLayer;
// Update hover tooltip if it is a different tile
// Can't compare coordinates if redirection of extension tiles hijacks to return the root tile.
// Just check the (root) tile returns for each.
@@ -1260,14 +1272,13 @@ private void Menu_Bulk_Click(object sender, EventArgs e)
private void B_TerrainBrush_Click(object sender, EventArgs e)
{
- tbeForm = new TerrainBrushEditor(PG_TerrainTile, this);
- tbeForm.Show();
+ if (tbeForm is null || tbeForm.IsDisposed)
+ tbeForm = new TerrainBrushEditor(PG_TerrainTile, this);
+ tbeForm.Show(this);
+ tbeForm.BringToFront();
}
- private void FieldItemEditor_FormClosed(object sender, FormClosedEventArgs e)
- {
- tbeForm?.Close();
- }
+ private void FieldItemEditor_FormClosed(object sender, FormClosedEventArgs e) => tbeForm?.Close();
}
public interface IItemLayerEditor
diff --git a/NHSE.WinForms/Subforms/Map/TerrainBrushEditor.cs b/NHSE.WinForms/Subforms/Map/TerrainBrushEditor.cs
index 1c51b07..4cd4ad9 100644
--- a/NHSE.WinForms/Subforms/Map/TerrainBrushEditor.cs
+++ b/NHSE.WinForms/Subforms/Map/TerrainBrushEditor.cs
@@ -1,6 +1,7 @@
using NHSE.Core;
using System;
using System.Windows.Forms;
+using static NHSE.Core.TerrainUnitModel;
namespace NHSE.WinForms.Subforms.Map;
@@ -20,265 +21,84 @@ public TerrainBrushEditor(PropertyGrid pG_TerrainTile, FieldItemEditor fieWindow
PG_TerrainTile = pG_TerrainTile;
FIEWindow = fieWindow;
InitializeComponent();
+ this.TranslateInterface(GameInfo.CurrentLanguage);
+ }
+
+ protected override void OnLoad(EventArgs e)
+ {
+ CenterToParent();
+ base.OnLoad(e);
}
#region Tiles buttons
#region Dirt tiles
- private void NW_Rounded_Tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff3B,
- LandMakingAngle = 0,
- Elevation = (ushort)slider_elevation.Value,
- };
+ private void NW_Rounded_Tile_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff3B);
+ private void N_tile_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff5B, 3);
+ private void NE_rounded_tile_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff3B, 3);
+ private void W_tile_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff5B);
+ private void Middle_tile_Click(object sender, EventArgs e) => SelectTerrainTile();
+ private void E_tile_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff5B, 2);
+ private void SW_rounded_tile_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff3B, 1);
+ private void S_tile_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff5B, 1);
+ private void SE_rounded_tile_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff3B, 2);
+ private void NW_angular_tile_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff3C);
+ private void NE_angular_tile_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff3C, 3);
+ private void SW_angular_tile_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff3C, 1);
+ private void SE_angular_tile_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff3C, 2);
- private void N_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff5B,
- LandMakingAngle = 3,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void NE_rounded_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff3B,
- LandMakingAngle = 3,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void W_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff5B,
- LandMakingAngle = 0,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void Middle_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void E_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff5B,
- LandMakingAngle = 2,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void SW_rounded_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff3B,
- LandMakingAngle = 1,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void S_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff5B,
- LandMakingAngle = 1,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void SE_rounded_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff3B,
- LandMakingAngle = 2,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void NW_angular_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff3C,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void NE_angular_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff3C,
- LandMakingAngle = 3,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void SW_angular_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff3C,
- LandMakingAngle = 1,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void SE_angular_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff3C,
- LandMakingAngle = 2,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void TR_dirt_inside_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff7A,
- LandMakingAngle = 2,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void DL_dirt_inside_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff7A,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void DR_dirt_inside_Click(object sender, EventArgs e)
- {
- PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff7A,
- LandMakingAngle = 1,
- Elevation = (ushort)slider_elevation.Value,
- };
- }
+ private void TR_dirt_inside_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff7A, 2);
+ private void DL_dirt_inside_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff7A);
+ private void DR_dirt_inside_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff7A, 1);
#endregion Dirt tiles
#region Water tiles
- private void NW_diagonal_water_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River3B,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void N_water_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River5B,
- LandMakingAngle = 3,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void NE_diagonal_water_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River3B,
- LandMakingAngle = 3,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void W_water_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River5B,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void Center_water_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River8A,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void e_water_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River5B,
- LandMakingAngle = 2,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void sw_diagonal_water_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River3B,
- LandMakingAngle = 1,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void s_water_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River5B,
- LandMakingAngle = 1,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void SE_diagonal_water_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River3B,
- LandMakingAngle = 2,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void NW_angular_water_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River3C,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void NE_angular_water_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River3C,
- LandMakingAngle = 3,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void SW_angular_water_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River3C,
- LandMakingAngle = 1,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void SE_angular_water_tile_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River3C,
- LandMakingAngle = 2,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void TL_dirt_inside_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.Cliff7A,
- LandMakingAngle = 3,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void TL_water_inside_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River7A,
- LandMakingAngle = 3,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void TR_water_inside_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River7A,
- LandMakingAngle = 2,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void DL_water_inside_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River7A,
- Elevation = (ushort)slider_elevation.Value,
- };
-
- private void DR_water_inside_Click(object sender, EventArgs e) => PG_TerrainTile.SelectedObject = new TerrainTile
- {
- UnitModel = TerrainUnitModel.River7A,
- LandMakingAngle = 1,
- Elevation = (ushort)slider_elevation.Value,
- };
+ private void NW_diagonal_water_tile_Click(object sender, EventArgs e) => SelectTerrainTile(River3B);
+ private void N_water_tile_Click(object sender, EventArgs e) => SelectTerrainTile(River5B, 3);
+ private void NE_diagonal_water_tile_Click(object sender, EventArgs e) => SelectTerrainTile(River3B, 3);
+ private void W_water_tile_Click(object sender, EventArgs e) => SelectTerrainTile(River5B);
+ private void Center_water_tile_Click(object sender, EventArgs e) => SelectTerrainTile(River8A);
+ private void e_water_tile_Click(object sender, EventArgs e) => SelectTerrainTile(River5B, 2);
+ private void sw_diagonal_water_tile_Click(object sender, EventArgs e) => SelectTerrainTile(River3B, 1);
+ private void s_water_tile_Click(object sender, EventArgs e) => SelectTerrainTile(River5B, 1);
+ private void SE_diagonal_water_tile_Click(object sender, EventArgs e) => SelectTerrainTile(River3B, 2);
+ private void NW_angular_water_tile_Click(object sender, EventArgs e) => SelectTerrainTile(River3C);
+ private void NE_angular_water_tile_Click(object sender, EventArgs e) => SelectTerrainTile(River3C, 3);
+ private void SW_angular_water_tile_Click(object sender, EventArgs e) => SelectTerrainTile(River3C, 1);
+ private void SE_angular_water_tile_Click(object sender, EventArgs e) => SelectTerrainTile(River3C, 2);
+ private void TL_dirt_inside_Click(object sender, EventArgs e) => SelectTerrainTile(Cliff7A, 3);
+ private void TL_water_inside_Click(object sender, EventArgs e) => SelectTerrainTile(River7A, 3);
+ private void TR_water_inside_Click(object sender, EventArgs e) => SelectTerrainTile(River7A, 2);
+ private void DL_water_inside_Click(object sender, EventArgs e) => SelectTerrainTile(River7A);
+ private void DR_water_inside_Click(object sender, EventArgs e) => SelectTerrainTile(River7A, 1);
#endregion Water tiles
#endregion Tiles buttons
- private void SliderThicknessValueChanged(object sender, EventArgs e)
- {
- lbl_size_count.Text = slider_thickness.Value.ToString();
- }
+ private void SliderThicknessValueChanged(object sender, EventArgs e) => lbl_size_count.Text = slider_thickness.Value.ToString();
private void SliderElevationValueChanged(object sender, EventArgs e)
{
lbl_elevation_count.Text = slider_elevation.Value.ToString();
- TerrainTile currentTile = (TerrainTile)PG_TerrainTile.SelectedObject!;
+ var currentTile = (TerrainTile)PG_TerrainTile.SelectedObject!;
currentTile.Elevation = (ushort)slider_elevation.Value;
PG_TerrainTile.SelectedObject = currentTile;
}
+ private TerrainTile CreateTerrainTile(TerrainUnitModel unitModel = Base, ushort landMakingAngle = 0) => new()
+ {
+ Elevation = (ushort)slider_elevation.Value,
+ UnitModel = unitModel,
+ LandMakingAngle = landMakingAngle
+ };
+
+ private void SelectTerrainTile(TerrainUnitModel unitModel = Base, ushort landMakingAngle = 0)
+ => PG_TerrainTile.SelectedObject = CreateTerrainTile(unitModel, landMakingAngle);
+
private void B_Brush_Click(object sender, EventArgs e) => IsBrushSelected = true;
private void TerrainBrushEditor_FormClosed(object sender, FormClosedEventArgs e) => IsBrushSelected = false;
private void B_Normal_Click(object sender, EventArgs e) => IsBrushSelected = false;
diff --git a/NHSE.WinForms/Subforms/PlayerItemEditor.cs b/NHSE.WinForms/Subforms/PlayerItemEditor.cs
index 5984e66..8be05b3 100644
--- a/NHSE.WinForms/Subforms/PlayerItemEditor.cs
+++ b/NHSE.WinForms/Subforms/PlayerItemEditor.cs
@@ -93,7 +93,7 @@ private void B_Inject_Click(object sender, EventArgs e)
var exist = WinFormsUtil.FirstFormOfType();
if (exist != null)
{
- exist.Show();
+ exist.Show(this);
exist.BringToFront();
exist.CenterToForm(this);
return;
@@ -120,7 +120,7 @@ static void AfterWrite(InjectionResult r)
ItemGrid.ItemChanged = () => ai.Write();
var sysbot = new SysBotUI(ai, sb, aiUSB, ub);
- sysbot.Show();
+ sysbot.Show(this);
}
private void ItemEditor_DragEnter(object? sender, DragEventArgs e)
diff --git a/NHSE.WinForms/Subforms/Program/ImageFetcher.cs b/NHSE.WinForms/Subforms/Program/ImageFetcher.cs
index fb790cc..c9d4948 100644
--- a/NHSE.WinForms/Subforms/Program/ImageFetcher.cs
+++ b/NHSE.WinForms/Subforms/Program/ImageFetcher.cs
@@ -31,6 +31,12 @@ public ImageFetcher()
CheckFileStatusLabel();
}
+ protected override void OnLoad(EventArgs e)
+ {
+ CenterToParent();
+ base.OnLoad(e);
+ }
+
private static string[] LoadHosts()
{
var hosts = Properties.Resources.hosts_images;
diff --git a/NHSE.WinForms/Subforms/SysBot/SysBotRAMEdit.cs b/NHSE.WinForms/Subforms/SysBot/SysBotRAMEdit.cs
index a871356..de683b7 100644
--- a/NHSE.WinForms/Subforms/SysBot/SysBotRAMEdit.cs
+++ b/NHSE.WinForms/Subforms/SysBot/SysBotRAMEdit.cs
@@ -21,6 +21,12 @@ public SysBotRAMEdit(InjectionType type)
Bot.PopPrompt();
}
+ protected override void OnLoad(EventArgs e)
+ {
+ CenterToParent();
+ base.OnLoad(e);
+ }
+
private void B_Connect_Click(object sender, EventArgs e)
{
if (!Bot.Connect(TB_IP.Text, TB_Port.Text))
diff --git a/NHSE.WinForms/Subforms/SysBot/SysBotUI.cs b/NHSE.WinForms/Subforms/SysBot/SysBotUI.cs
index 5842e88..01f9d7b 100644
--- a/NHSE.WinForms/Subforms/SysBot/SysBotUI.cs
+++ b/NHSE.WinForms/Subforms/SysBot/SysBotUI.cs
@@ -36,6 +36,12 @@ public SysBotUI(AutoInjector injector, SysBotController c, AutoInjector injector
TIM_Interval.Tick += (s, e) => injector.Read();
}
+ protected override void OnLoad(EventArgs e)
+ {
+ CenterToParent();
+ base.OnLoad(e);
+ }
+
private void B_Connect_Click(object sender, EventArgs e)
{
if (!Bot.Connect(TB_IP.Text, TB_Port.Text))