using UnityEngine;
using HutongGames.PlayMaker;
using System.Threading.Tasks;
using TcgEngine;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.ScriptControl)]
[Tooltip("Set custom coins value in UserData and save.")]
public class SetCustomCoinsValue : FsmStateAction
{
[RequiredField]
[Tooltip("The value of coins to set.")]
public FsmInt coinsAmount;
private bool userDataLoaded = false;
public override async void OnEnter()
{
// Load UserData asynchronously if not already loaded
if (!userDataLoaded)
{
await LoadUserDataAsync();
}
if (Authenticator.Get().UserData != null)
{
// Get the UserData from the Authenticator
UserData userData = Authenticator.Get().UserData;
// Set the custom coins amount in UserData
userData.coins = coinsAmount.Value;
// Save the updated UserData asynchronously
bool saveResult = await Authenticator.Get().SaveUserData();
// You can handle the result here if needed
if (saveResult)
{
Debug.Log("UserData saved successfully.");
}
else
{
Debug.LogWarning("UserData failed to save.");
}
}
else
{
Debug.LogWarning("UserData not available. Make sure you are logged in.");
}
// Exit the action
Finish();
}
private async Task LoadUserDataAsync()
{
// Load UserData asynchronously
await Authenticator.Get().LoadUserData();
// Mark UserData as loaded
userDataLoaded = true;
}
}
}