Pedro Sangue3 Gomes 3fe65ec877 first commit
2019-12-02 22:36:04 +00:00

55 lines
1.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Knowledge : MonoBehaviour
{
[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;
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;
}
}