Rotate terrain tile on ctlr-shift click

Closes #290
This commit is contained in:
Kurt
2020-06-01 20:47:04 -07:00
parent a0bb25be94
commit de3ee7ba41
2 changed files with 34 additions and 0 deletions

View File

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

View File

@@ -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;