using Unity.VisualScripting; using UnityEngine; public class CurrencyManager : MonoBehaviour, IBootLoader, IBase, IDataLoader { public GameCurrencyData gameCurrencyData; public UserCurrencyData userCurrencyData; private InGameUIManager inGameUIManager; private UserDataBehaviour userDataBehaviour; private ScreenManager screenManager; private GlobalHUDScreen globalHUDScreen; public void Initialize() { InterfaceManager.Instance?.RegisterInterface(this); userDataBehaviour = InterfaceManager.Instance?.GetInterfaceInstance(); } public void InitializeData() { Debug.Log($"USERDATA: Initialize Data for currency system"); gameCurrencyData = userDataBehaviour.GetGameCurrencyData(); userCurrencyData = userDataBehaviour.GetUserCurrencyData(); screenManager = InterfaceManager.Instance?.GetInterfaceInstance(); globalHUDScreen = screenManager.GetScreen(ScreenType.GlobalHUDScreen); Debug.Log($"userCurrencyData.attainedCurrency: {userCurrencyData.attainedCurrency}"); globalHUDScreen.UpdateCurrencyText($"{userCurrencyData.attainedCurrency}"); Debug.Log($"userDataBehaviour.IsFirstUserSession(): {userDataBehaviour.IsFirstUserSession()}"); if (userDataBehaviour.IsFirstUserSession()) AddCurrency(gameCurrencyData.initialCurrencyToProvide); } public void AddCurrency(int addAmt) { userCurrencyData.attainedCurrency += addAmt; UpdateCurrencyData(); } public void WithdrawCurrency(int withdrawAmt) { userCurrencyData.attainedCurrency -= withdrawAmt; UpdateCurrencyData(); } public void UpdateCurrencyData() { Debug.Log($"Updated currency data userCurrencyData.attainedCurrency: {userCurrencyData.attainedCurrency}"); globalHUDScreen.UpdateCurrencyText($"{userCurrencyData.attainedCurrency}"); userDataBehaviour.SaveUserCurrencyData(userCurrencyData); } public bool HasEnoughCurrency(int availCurrency) { Debug.Log($"HasEnoughCurrency: {availCurrency} <= {userCurrencyData.attainedCurrency}"); return availCurrency <= userCurrencyData.attainedCurrency; } }