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