Pedro Sangue3 Gomes 0b530ca632 Spellcasting system começado
Arcane/Magic explosion prototype criado
knowledge level changed to scriptable começado
prefabs de systems criados e atualizados
2019-12-05 00:44:41 +00:00

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;
}
}