mirror of
https://github.com/ryzij/Cube-Tower-Defense.git
synced 2026-07-14 01:56:57 +00:00
Начал делать систему прокачки туррелей
This commit is contained in:
@@ -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
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user