Начал делать систему прокачки туррелей

This commit is contained in:
2026-05-21 22:30:20 +03:00
parent 00b441b573
commit 145cda9435
4 changed files with 23 additions and 7 deletions
@@ -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;
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 55eb675261abc594980c07f1195ca644
+10 -6
View File
@@ -15,17 +15,17 @@ public class Turret : MonoBehaviour
[SerializeField] private float _upgradeCostMultiplier = 0.2f; [SerializeField] private float _upgradeCostMultiplier = 0.2f;
[SerializeField] private float _upgradeCostMultiplierIncrement = 0.1f; [SerializeField] private float _upgradeCostMultiplierIncrement = 0.1f;
[Header("Upgrade")] [Header("Upgrade")]
[SerializeField] private float _upgradeDamageMultiplier = 1.5f; [SerializeField] TurretUpgrade[] _upgrades;
[SerializeField] private float _upgradeDistanceMultiplier = 1.5f;
[SerializeField] private float _upgradeReloadTimeMultiplier = 0.75f;
private float _reloadTimer; private float _reloadTimer;
private int _lvl;
public int Price => _price; public int Price => _price;
public float Damage => _damage; public float Damage => _damage;
public float Distance => _distance; public float Distance => _distance;
public int SellPrice => Mathf.RoundToInt(_price * _sellingMultiplier); public int SellPrice => Mathf.RoundToInt(_price * _sellingMultiplier);
public int UpgradeCost => Mathf.RoundToInt(_price * _upgradeCostMultiplier); public int UpgradeCost => Mathf.RoundToInt(_price * _upgradeCostMultiplier);
public bool IsMaxLevel => _lvl >= _upgrades.Length - 1;
private void Start() private void Start()
{ {
@@ -35,10 +35,14 @@ public class Turret : MonoBehaviour
public void Upgrade() public void Upgrade()
{ {
if (IsMaxLevel)
return;
var upgrade = _upgrades[_lvl++];
// TODO: исправить умножение на 0 // TODO: исправить умножение на 0
_damage *= _upgradeDamageMultiplier; _damage *= upgrade.UpgradeDamageMultiplier;
_distance *= _upgradeDistanceMultiplier; _distance *= upgrade.UpgradeDistanceMultiplier;
_reloadTime *= _upgradeReloadTimeMultiplier; _reloadTime *= upgrade.UpgradeReloadTimeMultiplier;
_upgradeCostMultiplier += _upgradeCostMultiplierIncrement; _upgradeCostMultiplier += _upgradeCostMultiplierIncrement;
} }
+1 -1
View File
@@ -46,6 +46,6 @@ public class TurretUpgradeViewer : MonoBehaviour
{ {
_upgradeCost = turret.UpgradeCost; _upgradeCost = turret.UpgradeCost;
_upgradeCostText.text = _upgradeCost.ToString(); _upgradeCostText.text = _upgradeCost.ToString();
_upgradeButton.interactable = _wallet.Money >= _upgradeCost; _upgradeButton.interactable = _wallet.Money >= _upgradeCost && !turret.IsMaxLevel;
} }
} }