using System.Collections.Generic;
using LitJson;
using UnityEngine;
using Wizard;

namespace Cute;

public class GameStartCheckTask : NetworkTask
{
	private class CheckParams : PostParams
	{
		public int app_type;

		public string campaign_data = "";

		public string campaign_sign = "";

		public int campaign_user;
	}

	private CuteNetworkDefine.ApiType apiType = CuteNetworkDefine.ApiType.GameStartCheck;

	public static bool IsSocialAccountDataTransNotSetAndTutorialClear = false;

	public static bool IsTutorialClear = false;

	public static List<CuteNetworkDefine.ACCOUNT_TYPE> IsSocialAccountDataTransSet;

	public static bool IsSetTransitionPassword;

	public static int _tosId;

	public static int _privacyPolicyId;

	public static bool HasAppliedForAccountDeletion { get; private set; } = false;

	public static string RefundUrl { get; private set; } = string.Empty;

	public override string Url => $"{CustomPreference.GetApplicationServerURL()}{CuteNetworkDefine.ApiUrlList[apiType]}";

	public GameStartCheckTask()
	{
		if (Toolbox.BootNetwork != null)
		{
			Toolbox.BootNetwork.IsDoneGameStartCheck = false;
		}
		IsSocialAccountDataTransSet = new List<CuteNetworkDefine.ACCOUNT_TYPE>();
	}

	public void SetParameter()
	{
		CheckParams checkParams = new CheckParams();
		if (URLScheme.AppType != 0)
		{
			checkParams.campaign_data = URLScheme.CampaignData;
			checkParams.app_type = URLScheme.AppType;
		}
		checkParams.campaign_sign = Toolbox.DeviceManager.getSignature();
		int num = Random.Range(0, 100000);
		if (Toolbox.DeviceManager.isRootUser())
		{
			checkParams.campaign_user = 2 * num + 1;
		}
		else
		{
			checkParams.campaign_user = 2 * num;
		}
		base.Params = checkParams;
	}

	protected override int Parse()
	{
		int num = base.Parse();
		if (num != 1)
		{
			return num;
		}
		IsSocialAccountDataTransNotSetAndTutorialClear = false;
		IsSocialAccountDataTransSet.Clear();
		IsSetTransitionPassword = false;
		RefundUrl = string.Empty;
		if (base.ResponseData["data"].Keys.Contains("transition_account_data"))
		{
			JsonData jsonData = base.ResponseData["data"]["transition_account_data"];
			for (int i = 0; i < jsonData.Count; i++)
			{
				if (jsonData[i]["social_account_type"].ToInt() == 1)
				{
					IsSocialAccountDataTransSet.Add(CuteNetworkDefine.ACCOUNT_TYPE.GOOGLE_PLAY);
				}
				else if (jsonData[i]["social_account_type"].ToInt() == 2)
				{
					IsSocialAccountDataTransSet.Add(CuteNetworkDefine.ACCOUNT_TYPE.GAME_CENTER);
				}
				else if (jsonData[i]["social_account_type"].ToInt() == 3)
				{
					IsSocialAccountDataTransSet.Add(CuteNetworkDefine.ACCOUNT_TYPE.FACEBOOK);
				}
				else if (jsonData[i]["social_account_type"].ToInt() == 6)
				{
					IsSocialAccountDataTransSet.Add(CuteNetworkDefine.ACCOUNT_TYPE.APPLE_ID);
				}
			}
			if (base.ResponseData["data"]["now_tutorial_step"].ToInt() == 100)
			{
				IsTutorialClear = true;
			}
			if (jsonData.Count == 0 && base.ResponseData["data"]["now_tutorial_step"].ToInt() == 100)
			{
				IsSocialAccountDataTransNotSetAndTutorialClear = true;
			}
		}
		if (base.ResponseData["data"].Keys.Contains("rewrite_viewer_id"))
		{
			Certification.ViewerId = base.ResponseData["data"]["rewrite_viewer_id"].ToInt();
		}
		if (base.ResponseData["data"].Keys.Contains("is_set_transition_password"))
		{
			IsSetTransitionPassword = base.ResponseData["data"]["is_set_transition_password"].ToBoolean();
		}
		HasAppliedForAccountDeletion = base.ResponseData["data"].Keys.Contains("account_delete_reservation_status");
		ParseAgreementData(base.ResponseData);
		if (base.ResponseData["data"].Keys.Contains("refund_url"))
		{
			RefundUrl = base.ResponseData["data"]["refund_url"].ToString();
		}
		return num;
	}

	private void ParseAgreementData(JsonData responseData)
	{
		PlayerStaticData._tosAgreementState = (PlayerStaticData.AgreementState)responseData["data"]["tos_state"].ToInt();
		PlayerStaticData._privacyPolicyAgreementState = (PlayerStaticData.AgreementState)responseData["data"]["policy_state"].ToInt();
		PlayerStaticData.KorAuthorityAgreementState = (PlayerStaticData.AgreementState)responseData["data"]["kor_authority_state"].ToInt();
		AcceptAgreementTask._tosId = responseData["data"]["tos_id"].ToInt();
		AcceptAgreementTask._privacyPolicyId = responseData["data"]["policy_id"].ToInt();
		AcceptAgreementTask.KorAuthorityId = responseData["data"]["kor_authority_id"].ToInt();
	}
}
