Arcane/Magic explosion prototype criado knowledge level changed to scriptable começado prefabs de systems criados e atualizados
61 lines
1.8 KiB
C#
61 lines
1.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class Knowledge : MonoBehaviour
|
|
{
|
|
[SerializeField] private FloatVariable scriptableKnowledgeLevel;
|
|
[SerializeField] private float baseKnowledgeThreshold = 500f;
|
|
[SerializeField] private float KnowledgeThresholdGrowth = 100f;
|
|
[SerializeField] private float exponent = 1.5f;
|
|
|
|
[Space]
|
|
|
|
public GameEventFloat OnKnowledgeLevelUp;
|
|
public GameEventFloat OnKnowledgeChanged;
|
|
|
|
private float currentKnowledgeValue;
|
|
private int currentKnowledgeLevel;
|
|
|
|
float finalKnowledgeThreshold;
|
|
|
|
private void Start()
|
|
{
|
|
currentKnowledgeLevel = 1;
|
|
currentKnowledgeValue = 0f;
|
|
scriptableKnowledgeLevel.Value = currentKnowledgeLevel;
|
|
|
|
finalKnowledgeThreshold = baseKnowledgeThreshold + currentKnowledgeLevel * KnowledgeThresholdGrowth * exponent;
|
|
}
|
|
|
|
public void ChangeKnowledgeValue(float amount)
|
|
{
|
|
currentKnowledgeValue += amount;
|
|
if(amount != 0)
|
|
{
|
|
OnKnowledgeChanged.Raise(amount);
|
|
}
|
|
if(currentKnowledgeValue >= finalKnowledgeThreshold)
|
|
{
|
|
currentKnowledgeValue -= finalKnowledgeThreshold;
|
|
currentKnowledgeLevel++;
|
|
OnKnowledgeLevelUp.Raise(currentKnowledgeLevel);
|
|
}
|
|
if(currentKnowledgeValue >= finalKnowledgeThreshold)
|
|
{
|
|
ChangeKnowledgeValue(0);
|
|
}
|
|
Debug.Log(amount + " knowledge gained.");
|
|
Debug.Log(currentKnowledgeValue + " / " + finalKnowledgeThreshold);
|
|
}
|
|
|
|
public void UpdateThreshold(float level)
|
|
{
|
|
finalKnowledgeThreshold = baseKnowledgeThreshold + level * KnowledgeThresholdGrowth * exponent;
|
|
}
|
|
public void UpdateScriptableLevel(float level)
|
|
{
|
|
scriptableKnowledgeLevel.Value = level;
|
|
}
|
|
}
|