From de3ee7ba415bbf9bd665119fc78605ab7082745c Mon Sep 17 00:00:00 2001 From: Kurt Date: Mon, 1 Jun 2020 20:47:04 -0700 Subject: [PATCH] Rotate terrain tile on ctlr-shift click Closes #290 --- .../Structures/Map/Terrain/TerrainTile.cs | 20 +++++++++++++++++++ NHSE.WinForms/Subforms/Map/FieldItemEditor.cs | 14 +++++++++++++ 2 files changed, 34 insertions(+) diff --git a/NHSE.Core/Structures/Map/Terrain/TerrainTile.cs b/NHSE.Core/Structures/Map/Terrain/TerrainTile.cs index a75d143..0d509ba 100644 --- a/NHSE.Core/Structures/Map/Terrain/TerrainTile.cs +++ b/NHSE.Core/Structures/Map/Terrain/TerrainTile.cs @@ -74,5 +74,25 @@ public void CopyRoadFrom(TerrainTile tile) VariationRoad = tile.VariationRoad; LandMakingAngleRoad = tile.LandMakingAngleRoad; } + + public bool Rotate() => UnitModelRoad != 0 ? RotateRoad() : RotateTerrain(); + + private bool RotateTerrain() + { + if (UnitModel == TerrainUnitModel.Base) + return false; + var rot = LandMakingAngle; + rot = (ushort)((rot + 1) & 3); + LandMakingAngle = rot; + return true; + } + + private bool RotateRoad() + { + var rot = LandMakingAngleRoad; + rot = (ushort) ((rot + 1) & 3); + LandMakingAngleRoad = rot; + return true; + } } } diff --git a/NHSE.WinForms/Subforms/Map/FieldItemEditor.cs b/NHSE.WinForms/Subforms/Map/FieldItemEditor.cs index 09d150d..51cb105 100644 --- a/NHSE.WinForms/Subforms/Map/FieldItemEditor.cs +++ b/NHSE.WinForms/Subforms/Map/FieldItemEditor.cs @@ -204,6 +204,9 @@ private void OmniTileTerrain(TerrainTile tile) default: ViewTile(tile); return; + case Keys.Shift | Keys.Control: + RotateTile(tile); + return; case Keys.Shift: SetTile(tile); return; @@ -358,6 +361,17 @@ private void SetTile(Item tile, int x, int y) ReloadItems(); } + private void RotateTile(TerrainTile tile) + { + bool rotated = tile.Rotate(); + if (!rotated) + { + System.Media.SystemSounds.Asterisk.Play(); + return; + } + ReloadBuildingsTerrain(); + } + private void SetTile(TerrainTile tile) { var pgt = (TerrainTile)PG_TerrainTile.SelectedObject;