Files
yaoyanwei 2f2a601227 init
2025-08-04 16:45:48 +08:00

94 lines
2.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
namespace TcgEngine.Client
{
//Grants rewards for adventure solo mode
public class RewardManager : MonoBehaviour
{
private bool reward_gained = false;
private static RewardManager instance;
void Awake()
{
instance = this;
}
private void Start()
{
GameClient.Get().onGameEnd += OnGameEnd;
}
void OnGameEnd(int winner)
{
int player_id = GameClient.Get().GetPlayerID();
if (GameClient.game_settings.game_type == GameType.Adventure && winner == player_id)
{
UserData udata = Authenticator.Get().UserData;
LevelData level = LevelData.Get(GameClient.game_settings.level);
if (level != null && !udata.HasReward(level.id) && !reward_gained)
{
if (Authenticator.Get().IsTest())
GainRewardTest(level);
if (Authenticator.Get().IsApi())
GainRewardAPI(level);
}
}
}
private async void GainRewardTest(LevelData level)
{
VariantData variant = VariantData.GetDefault();
UserData udata = Authenticator.Get().UserData;
udata.coins += level.reward_coins;
udata.xp += level.reward_xp;
udata.AddReward(level.id);
foreach (CardData card in level.reward_cards)
{
udata.AddCard(card.id, variant.id, 1);
}
foreach (PackData pack in level.reward_packs)
{
udata.AddPack(pack.id, 1);
}
reward_gained = true;
await Authenticator.Get().SaveUserData();
}
private async void GainRewardAPI(LevelData level)
{
bool success = await GainRewardAPI(level.id);
reward_gained = success;
}
public async Task<bool> GainRewardAPI(string reward_id)
{
RewardGainRequest req = new RewardGainRequest();
req.reward = reward_id;
string url = ApiClient.ServerURL + "/users/rewards/gain/" + ApiClient.Get().UserID;
string json = ApiTool.ToJson(req);
WebResponse res = await ApiClient.Get().SendPostRequest(url, json);
Debug.Log("Gain Reward: " + reward_id + " " + res.success);
return res.success;
}
public bool IsRewardGained()
{
return reward_gained;
}
public static RewardManager Get()
{
return instance;
}
}
}