Upgrade System
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 47fcba8703a71c54ba2a75bf1ecc6db0
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using Random = UnityEngine.Random;
|
||||
|
||||
[RequireComponent(typeof(UpgradesData))]
|
||||
public class UpgradeScreen : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private List<Button> buttons = new();
|
||||
|
||||
private Upgrade[] _upgrades;
|
||||
private PlayerManager _manager;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_manager = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerManager>();
|
||||
_upgrades = GetComponent<UpgradesData>().upgrades.upgrades;
|
||||
|
||||
GenerateChoice();
|
||||
}
|
||||
|
||||
public void GenerateChoice()
|
||||
{
|
||||
Upgrade[] choosen = new Upgrade[buttons.Count];
|
||||
|
||||
while (choosen.Length != choosen.Distinct().Count())
|
||||
{
|
||||
for(int i = 0; i < choosen.Length; i++)
|
||||
{
|
||||
Upgrade choosenUpgrade = _upgrades[Random.Range(0, _upgrades.Length)];
|
||||
|
||||
bool beamCondition = (choosenUpgrade.paramName == "laserOnX" && _manager.laserOnX >= 1) || (choosenUpgrade.paramName == "laserOnY" && _manager.laserOnY >= 1);
|
||||
bool beamFrequencyCondition = (choosenUpgrade.paramName == "BeamFrequency" && _manager.BeamFrequency <= 0);
|
||||
bool arrowFrequency = (choosenUpgrade.paramName == "ArrowFrequency" && _manager.ArrowFrequency <= 0.5f);
|
||||
|
||||
while (beamCondition || beamFrequencyCondition || arrowFrequency)
|
||||
{
|
||||
choosenUpgrade = _upgrades[Random.Range(0, _upgrades.Length)];
|
||||
|
||||
beamCondition = (choosenUpgrade.paramName == "laserOnX" && _manager.laserOnX >= 1) || (choosenUpgrade.paramName == "laserOnY" && _manager.laserOnY >= 1);
|
||||
beamFrequencyCondition = (choosenUpgrade.paramName == "BeamFrequency" && _manager.BeamFrequency <= 0);
|
||||
arrowFrequency = (choosenUpgrade.paramName == "ArrowFrequency" && _manager.ArrowFrequency <= 0.5f);
|
||||
};
|
||||
|
||||
choosen[i] = choosenUpgrade;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var button in buttons.Select((value, i) => new {i, value}))
|
||||
{
|
||||
button.value.GetComponentInChildren<TMP_Text>().SetText(choosen[button.i].name);
|
||||
button.value.GetComponent<Button>().onClick.AddListener(() => { UpgradePlayer(button.value, _upgrades, _manager); });
|
||||
}
|
||||
}
|
||||
|
||||
public void UpgradePlayer(Button button, Upgrade[] upgrades, PlayerManager manager)
|
||||
{
|
||||
for (int i = 0; i < upgrades.Length; i++)
|
||||
{
|
||||
if (upgrades[i].name == button.GetComponentInChildren<TMP_Text>().text)
|
||||
{
|
||||
FieldInfo field = manager.GetType().GetField(upgrades[i].paramName);
|
||||
float fieldValue = (float)field.GetValue(manager);
|
||||
|
||||
field.SetValue(manager, fieldValue + upgrades[i].value);
|
||||
|
||||
Time.timeScale = 1f;
|
||||
button.transform.parent.parent.parent.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9e0d6eae981931e49af7552730883326
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c16dc07d15aa39d4ba76ea86b13d279e
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user