From 145cda9435cb0603c332ad16dcc04b62e7c737d8 Mon Sep 17 00:00:00 2001 From: kittyegg Date: Thu, 21 May 2026 22:30:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=20=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D1=82=D1=8C=20=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC?= =?UTF-8?q?=D1=83=20=D0=BF=D1=80=D0=BE=D0=BA=D0=B0=D1=87=D0=BA=D0=B8=20?= =?UTF-8?q?=D1=82=D1=83=D1=80=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 --- .../Scripts/ScriptableObjects/TurretUpgrade.cs | 10 ++++++++++ .../ScriptableObjects/TurretUpgrade.cs.meta | 2 ++ Assets/Scripts/Turret.cs | 16 ++++++++++------ Assets/Scripts/UI/TurretUpgradeViewer.cs | 2 +- 4 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 Assets/Scripts/ScriptableObjects/TurretUpgrade.cs create mode 100644 Assets/Scripts/ScriptableObjects/TurretUpgrade.cs.meta diff --git a/Assets/Scripts/ScriptableObjects/TurretUpgrade.cs b/Assets/Scripts/ScriptableObjects/TurretUpgrade.cs new file mode 100644 index 0000000..fc39985 --- /dev/null +++ b/Assets/Scripts/ScriptableObjects/TurretUpgrade.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +[CreateAssetMenu(fileName = "TurretLvl_", menuName = "Scriptable Objects/Turret Upgrade")] +public class TurretUpgrade : ScriptableObject +{ + // TODO: инкапсулировать поля + public float UpgradeDamageMultiplier = 1.5f; + public float UpgradeDistanceMultiplier = 1.5f; + public float UpgradeReloadTimeMultiplier = 0.75f; +} diff --git a/Assets/Scripts/ScriptableObjects/TurretUpgrade.cs.meta b/Assets/Scripts/ScriptableObjects/TurretUpgrade.cs.meta new file mode 100644 index 0000000..0bf7406 --- /dev/null +++ b/Assets/Scripts/ScriptableObjects/TurretUpgrade.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 55eb675261abc594980c07f1195ca644 \ No newline at end of file diff --git a/Assets/Scripts/Turret.cs b/Assets/Scripts/Turret.cs index 64bf8bc..c6650bf 100644 --- a/Assets/Scripts/Turret.cs +++ b/Assets/Scripts/Turret.cs @@ -15,17 +15,17 @@ public class Turret : MonoBehaviour [SerializeField] private float _upgradeCostMultiplier = 0.2f; [SerializeField] private float _upgradeCostMultiplierIncrement = 0.1f; [Header("Upgrade")] - [SerializeField] private float _upgradeDamageMultiplier = 1.5f; - [SerializeField] private float _upgradeDistanceMultiplier = 1.5f; - [SerializeField] private float _upgradeReloadTimeMultiplier = 0.75f; + [SerializeField] TurretUpgrade[] _upgrades; private float _reloadTimer; + private int _lvl; public int Price => _price; public float Damage => _damage; public float Distance => _distance; public int SellPrice => Mathf.RoundToInt(_price * _sellingMultiplier); public int UpgradeCost => Mathf.RoundToInt(_price * _upgradeCostMultiplier); + public bool IsMaxLevel => _lvl >= _upgrades.Length - 1; private void Start() { @@ -35,10 +35,14 @@ public class Turret : MonoBehaviour public void Upgrade() { + if (IsMaxLevel) + return; + + var upgrade = _upgrades[_lvl++]; // TODO: исправить умножение на 0 - _damage *= _upgradeDamageMultiplier; - _distance *= _upgradeDistanceMultiplier; - _reloadTime *= _upgradeReloadTimeMultiplier; + _damage *= upgrade.UpgradeDamageMultiplier; + _distance *= upgrade.UpgradeDistanceMultiplier; + _reloadTime *= upgrade.UpgradeReloadTimeMultiplier; _upgradeCostMultiplier += _upgradeCostMultiplierIncrement; } diff --git a/Assets/Scripts/UI/TurretUpgradeViewer.cs b/Assets/Scripts/UI/TurretUpgradeViewer.cs index 633f040..d7d3da6 100644 --- a/Assets/Scripts/UI/TurretUpgradeViewer.cs +++ b/Assets/Scripts/UI/TurretUpgradeViewer.cs @@ -46,6 +46,6 @@ public class TurretUpgradeViewer : MonoBehaviour { _upgradeCost = turret.UpgradeCost; _upgradeCostText.text = _upgradeCost.ToString(); - _upgradeButton.interactable = _wallet.Money >= _upgradeCost; + _upgradeButton.interactable = _wallet.Money >= _upgradeCost && !turret.IsMaxLevel; } }