94 lines
2.7 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|