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

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 _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;
}
+1 -1
View File
@@ -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;
}
}