From b481b27f8bed615cb8daf0eb7d38c75282b546d4 Mon Sep 17 00:00:00 2001 From: Pasha Date: Mon, 13 Apr 2026 13:00:49 +0100 Subject: [PATCH] Added building flipping --- Assets/Scripts/Game/Buildings/BuildingManager.cs | 12 +++++++----- Assets/Scripts/Game/Buildings/FanBuilding.cs | 3 ++- Assets/Scripts/UI/GameCursor.cs | 14 +++++++++++++- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/Assets/Scripts/Game/Buildings/BuildingManager.cs b/Assets/Scripts/Game/Buildings/BuildingManager.cs index 53e02b1..c13ff65 100644 --- a/Assets/Scripts/Game/Buildings/BuildingManager.cs +++ b/Assets/Scripts/Game/Buildings/BuildingManager.cs @@ -20,7 +20,7 @@ namespace Fruitomation.Game private bool[,] InhabitedCells { get; } = new bool[96, 49]; private List Buildings { get; } = new(); - public bool AddBuildingAt(Vector2Int position, GameObject prefab, bool updateCellMap = false) + public bool AddBuildingAt(Vector2Int position, GameObject prefab, bool isFlipped) { // GameObject go = Instantiate(prefab, transform); @@ -32,17 +32,19 @@ namespace Fruitomation.Game Vector2Int p0 = position * 40; Vector2Int p1 = p0 + new Vector2Int(20, 100); - + Vector2Int g0 = position + new Vector2Int(48, 24); - + Vector2 off0 = info.Building.SizeOnGrid - Vector2.one; Vector2 off1 = off0 * 20; info.Rect.sizeDelta = info.Building.SizeOnGrid * 40; info.Rect.anchoredPosition = p1 + off1; + info.Rect.transform.localScale = new Vector3(isFlipped ? -1f : 1f, 1f, 1f); + Debug.Log(g0); - + // for (int x = g0.x; x < g0.x + info.Building.SizeOnGrid.x; x++) for (int y = g0.y; y < g0.y + info.Building.SizeOnGrid.y; y++) @@ -53,7 +55,7 @@ namespace Fruitomation.Game return false; } } - + // for (int x = g0.x; x < g0.x + info.Building.SizeOnGrid.x; x++) for (int y = g0.y; y < g0.y + info.Building.SizeOnGrid.y; y++) diff --git a/Assets/Scripts/Game/Buildings/FanBuilding.cs b/Assets/Scripts/Game/Buildings/FanBuilding.cs index 6227dce..be9c48d 100644 --- a/Assets/Scripts/Game/Buildings/FanBuilding.cs +++ b/Assets/Scripts/Game/Buildings/FanBuilding.cs @@ -16,7 +16,8 @@ namespace Fruitomation.Game { if (other.transform.parent.TryGetComponent(out Rigidbody2D body)) { - body?.AddForce(-transform.right * Mathf.PI, ForceMode2D.Impulse); + Vector3 force = new(-transform.localScale.x, 0f, 0f); + body?.AddForce(force * Mathf.PI, ForceMode2D.Impulse); } }); } diff --git a/Assets/Scripts/UI/GameCursor.cs b/Assets/Scripts/UI/GameCursor.cs index f9707d4..7b37a81 100644 --- a/Assets/Scripts/UI/GameCursor.cs +++ b/Assets/Scripts/UI/GameCursor.cs @@ -25,6 +25,7 @@ namespace Fruitomation.UI [SerializeField, InspectorReadOnly] private float CurrentMouseClickStrength; [SerializeField, InspectorReadOnly] private Vector2Int GridPosition; [SerializeField, InspectorReadOnly] private GameObject SelectedBuildingToBuild; + [SerializeField, InspectorReadOnly] private bool FlipCurrentBuilding; private readonly ContactFilter2D ContactFilter = new(); private readonly List Colliders = new(); @@ -38,6 +39,8 @@ namespace Fruitomation.UI { SelectedBuildingsBuildingBase = prefab.GetComponent(); SelectedBuildingToBuild = prefab; + + FlipCurrentBuilding = false; } private void UpdatePosition() @@ -145,6 +148,15 @@ namespace Fruitomation.UI { BuildingPreview.enabled = true; + // + if (Input.GetKeyDown(KeyCode.R)) + { + FlipCurrentBuilding = !FlipCurrentBuilding; + } + + // + + BuildingPreview.transform.localScale = new Vector3(FlipCurrentBuilding ? -1f : 1f, 1f, 1f); BuildingPreview.rectTransform.sizeDelta = SelectedBuildingsBuildingBase.SizeOnGrid * 40; BuildingPreview.sprite = SelectedBuildingsBuildingBase.Sprite; @@ -166,7 +178,7 @@ namespace Fruitomation.UI // if (Input.GetMouseButtonDown(0) && MouseOnGrid) { - BuildingManager.AddBuildingAt(p1, SelectedBuildingToBuild); + BuildingManager.AddBuildingAt(p1, SelectedBuildingToBuild, FlipCurrentBuilding); } } }