From bf9099c8b53b029d3f8b430daf74e0f88e7c8f0d Mon Sep 17 00:00:00 2001 From: kittyegg Date: Tue, 12 May 2026 08:11:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D1=83=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B4=D0=B0=D0=B6=D0=B8=20=D1=82=D1=83=D1=80?= =?UTF-8?q?=D1=80=D0=B5=D0=BB=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scenes/Island.unity | 58 +++++++++++++++++++++++++++++++++++ Assets/Scripts/TurretsShop.cs | 46 ++++++++++++++++++++++++--- 2 files changed, 100 insertions(+), 4 deletions(-) diff --git a/Assets/Scenes/Island.unity b/Assets/Scenes/Island.unity index c243216..e1ac69b 100644 --- a/Assets/Scenes/Island.unity +++ b/Assets/Scenes/Island.unity @@ -1781,6 +1781,58 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 1789632538} m_Modifications: + - target: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1311268619} + - target: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1311268619} + - target: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: SelectDestroyTurret + objectReference: {fileID: 0} + - target: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: DeselectTurret + objectReference: {fileID: 0} + - target: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: TurretsShop, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: TurretsShop, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 3635012363401127766, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} - target: {fileID: 4616868106249531007, guid: f87d5d34136775b41907fc1187ef4bc2, type: 3} propertyPath: m_Pivot.x value: 0.5 @@ -8268,6 +8320,12 @@ MonoBehaviour: _onTurretDeselected: m_PersistentCalls: m_Calls: [] + _onDestroyTurretSelected: + m_PersistentCalls: + m_Calls: [] + _onDestroyTurretDeselected: + m_PersistentCalls: + m_Calls: [] --- !u!1 &1327644546 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/TurretsShop.cs b/Assets/Scripts/TurretsShop.cs index 459dc6f..27795e2 100644 --- a/Assets/Scripts/TurretsShop.cs +++ b/Assets/Scripts/TurretsShop.cs @@ -13,6 +13,8 @@ public class TurretsShop : MonoBehaviour [SerializeField] private TurretShopItem[] _turretShopItems; [SerializeField] private UnityEvent _onTurretSelected; [SerializeField] private UnityEvent _onTurretDeselected; + [SerializeField] private UnityEvent _onDestroyTurretSelected; + [SerializeField] private UnityEvent _onDestroyTurretDeselected; public event UnityAction OnTurretSelected { @@ -26,17 +28,33 @@ public class TurretsShop : MonoBehaviour remove => _onTurretDeselected.RemoveListener(value); } + public event UnityAction OnDestroyTurretSelected + { + add => _onDestroyTurretSelected.AddListener(value); + remove => _onDestroyTurretSelected.RemoveListener(value); + } + + public event UnityAction OnDestroyTurretDeselected + { + add => _onDestroyTurretDeselected.AddListener(value); + remove => _onDestroyTurretDeselected.RemoveListener(value); + } + public IReadOnlyCollection TurretShopItems => _turretShopItems; private TurretShopItem _selectedTurret; private bool _isTurretSelected = false; - + private bool _isDestroySelected = false; + public void SelectTurret(TurretShopItem item) { _isTurretSelected = _wallet.Money >= item.Price; if (!_isTurretSelected) return; + if (_isDestroySelected) + DeselectDestroyTurret(); + _selectedTurret = item; _onTurretSelected?.Invoke(item); } @@ -47,6 +65,21 @@ public class TurretsShop : MonoBehaviour _onTurretDeselected?.Invoke(); } + public void SelectDestroyTurret() + { + if (_isTurretSelected) + DeselectTurret(); + + _isDestroySelected = true; + _onDestroyTurretSelected?.Invoke(); + } + + public void DeselectDestroyTurret() + { + _isDestroySelected = false; + _onDestroyTurretDeselected?.Invoke(); + } + private void OnEnable() { _deselectAction.Enable(); @@ -68,7 +101,13 @@ public class TurretsShop : MonoBehaviour _turretsHolder = transform; } - private void DeselectActionPerformed(InputAction.CallbackContext _) => DeselectTurret(); + private void DeselectActionPerformed(InputAction.CallbackContext _) + { + if (_isTurretSelected) + DeselectTurret(); + else if (_isDestroySelected) + DeselectDestroyTurret(); + } private void OnBlockClicked(BlockScript block) { @@ -92,8 +131,7 @@ public class TurretsShop : MonoBehaviour private void DestroyTurret(Turret turret) { - // TODO: проверять нажата ли кнопку продажи туррелей - if (turret == null) + if (turret == null || !_isDestroySelected) return; _wallet.AddMoney(Mathf.RoundToInt(turret.Price * _sellingCoefficient));