add ckg
plantilla base para movimiento básico
This commit is contained in:
232
Assets/Game Kit Controller/Scripts/Inventory/currencySystem.cs
Normal file
232
Assets/Game Kit Controller/Scripts/Inventory/currencySystem.cs
Normal file
@@ -0,0 +1,232 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class currencySystem : MonoBehaviour
|
||||
{
|
||||
[Header ("Main Settings")]
|
||||
[Space]
|
||||
|
||||
public int currentMoneyAmount;
|
||||
|
||||
public string statName = "Money";
|
||||
public string extraStringContent = "$";
|
||||
|
||||
public bool showTotalMoneyAmountOnChange;
|
||||
|
||||
public bool increaseMoneyTextSmoothly;
|
||||
public float increaseMoneyTextRate = 0.01f;
|
||||
public float delayToStartIncreasMoneyText = 0.5f;
|
||||
|
||||
[Space]
|
||||
|
||||
public float timeToShowTotalMoneyAmount;
|
||||
|
||||
public bool hideTotalAmountMoneyPAnelAfterDelay = true;
|
||||
|
||||
[Space]
|
||||
[Header ("Events Settings")]
|
||||
[Space]
|
||||
|
||||
public UnityEvent eventOnReceiveMoney;
|
||||
public eventParameters.eventToCallWithString eventOnReceiveMoneyWithString;
|
||||
|
||||
[Space]
|
||||
[Header ("Components")]
|
||||
[Space]
|
||||
|
||||
public GameObject totalMoneyAmountPanel;
|
||||
public Text totalMoneyAmountText;
|
||||
public playerStatsSystem playerStatsManager;
|
||||
|
||||
|
||||
int moneyToAdd;
|
||||
int previousMoneyAmount;
|
||||
|
||||
bool firstAmountAssigned;
|
||||
|
||||
bool previousMoneyToAddChecked = true;
|
||||
|
||||
Coroutine showTotalMoneyCoroutine;
|
||||
|
||||
bool lastAmountAddedIsPositive = true;
|
||||
|
||||
float customMoneyChangeSpeed;
|
||||
|
||||
|
||||
public void increaseTotalMoneyAmount (float extraValue, float customMoneyChangeSpeedValue)
|
||||
{
|
||||
customMoneyChangeSpeed = customMoneyChangeSpeedValue;
|
||||
|
||||
increaseTotalMoneyAmount (extraValue);
|
||||
}
|
||||
|
||||
public void increaseTotalMoneyAmount (float extraValue)
|
||||
{
|
||||
if (increaseMoneyTextSmoothly) {
|
||||
if (moneyToAdd == 0) {
|
||||
previousMoneyAmount = currentMoneyAmount;
|
||||
|
||||
previousMoneyToAddChecked = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (extraValue > 0) {
|
||||
lastAmountAddedIsPositive = true;
|
||||
} else {
|
||||
lastAmountAddedIsPositive = false;
|
||||
}
|
||||
|
||||
currentMoneyAmount += (int)extraValue;
|
||||
|
||||
eventOnReceiveMoney.Invoke ();
|
||||
|
||||
string newString = "";
|
||||
|
||||
if (extraValue > 0) {
|
||||
newString = "+";
|
||||
} else {
|
||||
newString = "-";
|
||||
}
|
||||
|
||||
newString += extraValue + extraStringContent;
|
||||
|
||||
eventOnReceiveMoneyWithString.Invoke (newString);
|
||||
|
||||
playerStatsManager.updateStatValue (statName, currentMoneyAmount);
|
||||
|
||||
if (showTotalMoneyAmountOnChange) {
|
||||
if (increaseMoneyTextSmoothly) {
|
||||
moneyToAdd += (int)extraValue;
|
||||
}
|
||||
|
||||
showTotalMoneyAmountPanel ();
|
||||
}
|
||||
}
|
||||
|
||||
public void initializeMoneyAmount (float newValue)
|
||||
{
|
||||
currentMoneyAmount = (int)newValue;
|
||||
|
||||
updateTotayMoneyAmountText (currentMoneyAmount.ToString ());
|
||||
}
|
||||
|
||||
public void updateMoneyAmountWithoutUpdatingStatManager (int statId, float amount)
|
||||
{
|
||||
currentMoneyAmount = (int)amount;
|
||||
|
||||
updateTotayMoneyAmountText (currentMoneyAmount.ToString ());
|
||||
}
|
||||
|
||||
public bool useMoney (float amountToUse)
|
||||
{
|
||||
if (currentMoneyAmount >= (int)amountToUse) {
|
||||
currentMoneyAmount -= (int)amountToUse;
|
||||
|
||||
playerStatsManager.updateStatValue (statName, currentMoneyAmount);
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public float getCurrentMoneyAmount ()
|
||||
{
|
||||
// print (currentMoneyAmount);
|
||||
|
||||
return (float)currentMoneyAmount;
|
||||
}
|
||||
|
||||
public bool canSpendMoneyAmount (float amountToSpend)
|
||||
{
|
||||
return currentMoneyAmount >= (int)amountToSpend;
|
||||
}
|
||||
|
||||
public void showTotalMoneyAmountPanel ()
|
||||
{
|
||||
stopShowTotalMoneyAmountPanelCoroutine ();
|
||||
|
||||
showTotalMoneyCoroutine = StartCoroutine (showTotalMoneyAmountPanelCoroutine ());
|
||||
}
|
||||
|
||||
public void stopShowTotalMoneyAmountPanelCoroutine ()
|
||||
{
|
||||
if (showTotalMoneyCoroutine != null) {
|
||||
StopCoroutine (showTotalMoneyCoroutine);
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerator showTotalMoneyAmountPanelCoroutine ()
|
||||
{
|
||||
if (totalMoneyAmountPanel.activeSelf == false) {
|
||||
totalMoneyAmountPanel.SetActive (true);
|
||||
}
|
||||
|
||||
if (!firstAmountAssigned) {
|
||||
updateTotayMoneyAmountText (previousMoneyAmount.ToString ());
|
||||
|
||||
firstAmountAssigned = true;
|
||||
}
|
||||
|
||||
if (increaseMoneyTextSmoothly) {
|
||||
|
||||
if (!previousMoneyToAddChecked) {
|
||||
yield return new WaitForSeconds (delayToStartIncreasMoneyText);
|
||||
|
||||
previousMoneyToAddChecked = true;
|
||||
}
|
||||
|
||||
int moneyIncreaseAmount = 1;
|
||||
|
||||
if (!lastAmountAddedIsPositive) {
|
||||
moneyToAdd = Mathf.Abs (moneyToAdd);
|
||||
}
|
||||
|
||||
if (moneyToAdd > 900) {
|
||||
int extraIncreaseAmount = moneyToAdd / 900;
|
||||
|
||||
if (customMoneyChangeSpeed != 0) {
|
||||
moneyIncreaseAmount += extraIncreaseAmount + (int)customMoneyChangeSpeed;
|
||||
} else {
|
||||
moneyIncreaseAmount += extraIncreaseAmount + 12;
|
||||
}
|
||||
}
|
||||
|
||||
while (moneyToAdd > 0) {
|
||||
if (lastAmountAddedIsPositive) {
|
||||
previousMoneyAmount += moneyIncreaseAmount;
|
||||
} else {
|
||||
previousMoneyAmount -= moneyIncreaseAmount;
|
||||
}
|
||||
|
||||
updateTotayMoneyAmountText (previousMoneyAmount.ToString ());
|
||||
|
||||
moneyToAdd -= moneyIncreaseAmount;
|
||||
|
||||
yield return new WaitForSeconds (increaseMoneyTextRate);
|
||||
}
|
||||
|
||||
updateTotayMoneyAmountText (currentMoneyAmount.ToString ());
|
||||
} else {
|
||||
updateTotayMoneyAmountText (currentMoneyAmount.ToString ());
|
||||
}
|
||||
|
||||
lastAmountAddedIsPositive = true;
|
||||
|
||||
customMoneyChangeSpeed = 0;
|
||||
|
||||
yield return new WaitForSeconds (timeToShowTotalMoneyAmount);
|
||||
|
||||
if (hideTotalAmountMoneyPAnelAfterDelay) {
|
||||
totalMoneyAmountPanel.SetActive (false);
|
||||
}
|
||||
}
|
||||
|
||||
void updateTotayMoneyAmountText (string newText)
|
||||
{
|
||||
totalMoneyAmountText.text = newText + " " + extraStringContent;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user