2025-05-18 01:04:31 +08:00

1333 lines
29 KiB
C#

// ***********************************************************************
// Assembly : Game
// Author : Kimch
// Created : 2021-07-16
// Description :
// Last Modified By :
// Last Modified On :
// ***********************************************************************
// <copyright file= "KGMWindow" company="Kunpo"></copyright>
// <summary></summary>
// ***********************************************************************
//#define GM_TEST_SERVER
using F;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
namespace G
{
/// <summary>
/// GM界面
/// </summary>
public class KGMWindow : KUIWidget
{
#if UNITY_EDITOR
static System.Tuple<ArchiveProxy.ArchiveInfo, IDictionary<string, object>> _CopyInfo;
class ArchiveWidget : KUIWidget
{
[KUIFlag]
Text _txtName;
[KUIFlag]
Text _txtContent;
[KUIFlag]
Button _btnLoad;
[KUIFlag]
Button _btnCopy;
public override void Refresh()
{
if (this.data is System.Tuple<ArchiveProxy.ArchiveInfo, IDictionary<string, object>> info)
{
var archive = info.Item2;
_txtName.text = archive.GetString("name");
_txtContent.text = archive.GetString("data");
}
}
private void OnLoadBtnClick()
{
if (this.data is System.Tuple<ArchiveProxy.ArchiveInfo, IDictionary<string, object>> info)
{
var archiveInfo = info.Item1;
var archive = info.Item2;
ArchiveProxy.Instance.LoadServerText(archiveInfo, archive.GetString("data"));
}
}
void OnCopyBtnClick()
{
if (this.data is System.Tuple<ArchiveProxy.ArchiveInfo, IDictionary<string, object>> info)
{
_CopyInfo = info;
}
}
private void Awake()
{
SetViewData();
_btnLoad.onClick.AddListener(this.OnLoadBtnClick);
_btnCopy.onClick.AddListener(this.OnCopyBtnClick);
}
}
class RankingWidget : KUIWidget
{
[KUIFlag]
Text _txtName;
[KUIFlag]
Text _txtScore;
[KUIFlag]
Button _btnQuery;
private string _uid;
public override void Refresh()
{
if (this.data is IDictionary<string, object> info)
{
_uid = info.GetString("uid");
_txtScore.text = info.GetString("score");
var rankingInfo = new RankingProxy.RankingInfo
{
userKey = info.GetString("user_key")
};
_txtName.text = rankingInfo.name;
}
else
_uid = null;
}
void OnQueryBtnClick()
{
if (!string.IsNullOrEmpty(_uid))
{
_Instance.SetAccount(_uid, true);
}
}
private void Awake()
{
SetViewData();
_btnQuery.onClick.AddListener(this.OnQueryBtnClick);
}
}
#region Field
#pragma warning disable CS0649 // 从未对字段赋值,字段将一直保持其默认值 null
[KUIFlag]
GameObject _goLogin;
[KUIFlag]
Button _btnGMLogin;
[KUIFlag]
InputField _inGMToken;
[KUIFlag]
Toggle _tgServer;
[KUIFlag]
GameObject _goManger;
[KUIFlag]
KUIToggleGroup _goPages;
#region Account
[KUIFlag]
GameObject _goAccount;
[KUIFlag]
InputField _inPlayer;
[KUIFlag]
Button _btnQuery;
[KUIFlag]
KUIList __listArchives;
[KUIFlag]
Text _txtStatus;
[KUIFlag]
Text _txtToken;
[KUIFlag]
Button _btnUpload;
[KUIFlag]
Button _btnUploadCopy;
[KUIFlag]
Button _btnClear;
[KUIFlag]
Button _btnBlock;
[KUIFlag]
Button _btnUnblock;
[KUIFlag]
Toggle _tgUID;
[KUIFlag]
Text _txtUserInfo;
[KUIFlag]
Button _btnGod;
[KUIFlag]
Button _btnUngod;
#endregion
#region Mail
[KUIFlag]
GameObject _goMail;
[KUIFlag]
InputField _inMailTitle;
[KUIFlag]
InputField _inMailContent;
[KUIFlag]
InputField _inMailRewards;
[KUIFlag]
InputField _inMailId;
[KUIFlag]
Button _btnMailSend;
#endregion
#region Ranking
[KUIFlag]
GameObject _goRanking;
[KUIFlag]
KUIList __listRanking;
[KUIFlag]
Button _btnPullRanking;
[KUIFlag]
Button _btnDelRanking;
[KUIFlag]
Dropdown _ddRankingId;
#endregion
#pragma warning restore CS0649 // 从未对字段赋值,字段将一直保持其默认值 null
private string _userInfo;
private bool _loginSuccess => !string.IsNullOrEmpty(gmToken);
private object _rankingData;
#endregion
#region Method
public override void Refresh()
{
_goLogin.SetActive(!_loginSuccess);
_goManger.SetActive(_loginSuccess);
}
void ShowLogin()
{
_inGMToken.text = gmToken;
_goLogin.SetActive(true);
_goManger.SetActive(false);
}
void SetAccount(string account, bool isUID)
{
_goPages.toggles[0].isOn = true;
_inPlayer.text = account;
_tgUID.isOn = isUID;
}
int GetRankId()
{
int rank_id = 0;
switch (_ddRankingId.value)
{
case 0:
rank_id = 1;
break;
case 1:
rank_id = 2;
break;
case 2:
rank_id = 3;
break;
case 3:
rank_id = 101;
break;
case 4:
rank_id = 102;
break;
case 5:
rank_id = 103;
break;
case 6:
rank_id = 105;
break;
case 7:
rank_id = 5;
break;
case 8:
rank_id = 201;
break;
case 9:
rank_id = 202;
break;
case 10:
rank_id = 203;
break;
case 11:
rank_id = 205;
break;
}
return rank_id;
}
void OnLoginBtnClick()
{
var token = _inGMToken.text;
if (!string.IsNullOrEmpty(token))
{
this.gmToken = token;
Refresh();
}
else
{
if (_tgServer.isOn)
Application.OpenURL("https://dev-cdn-shaoxia.lanfeitech.com/gm/dev/index.html");
else
Application.OpenURL("https://dev-cdn-shaoxia.lanfeitech.com/gm/prod/index.html");
Debug.Log($"输入GMToken {(_tgServer.isOn ? "" : "")}");
}
}
void OnQueryBtnClick()
{
var account = _inPlayer.text;
if (!string.IsNullOrEmpty(account))
{
QueryArchive(OnQueryArchive);
QueryBanInfo(OnQueryBanInfo);
_txtStatus.text = "查询存档";
}
}
void OnQueryArchive(int error, string message, object data)
{
if (error == 0)
{
if (data is IList<object> archives)
{
if (archives.Count > 0)
{
var archive0 = archives[0] as IDictionary<string, object>;
var archiveInfo = new ArchiveProxy.ArchiveInfo();
archiveInfo.FromString(archive0.GetString("data"));
}
ArchiveProxy.ArchiveInfo archiveInfo1 = null;
ArchiveProxy.ArchiveInfo archiveInfo2 = null;
IDictionary<string, object> archive1 = null;
IDictionary<string, object> archive2 = null;
for (int i = 0; i < archives.Count; i++)
{
var archiveI = archives[i] as IDictionary<string, object>;
switch (archiveI.GetString("name"))
{
case "archive_info":
archiveInfo1 = new ArchiveProxy.ArchiveInfo();
archiveInfo1.FromString(archiveI.GetString("data"));
string infoText =
$"名字:{archiveInfo1.playerName}\n" +
$"时间:{F.Utils.Time.ToDataTime(archiveInfo1.timestamp).ToLocalTime().ToString()}\n" +
$"等级:{archiveInfo1.playerGrade}\n" +
$"进度:{archiveInfo1.completedLevel}";
_txtToken.text = infoText;
break;
case "archive2_info":
archiveInfo2 = new ArchiveProxy.ArchiveInfo();
archiveInfo2.FromString(archiveI.GetString("data"));
break;
case "archive":
archive1 = archiveI;
break;
case "archive2":
archive2 = archiveI;
break;
case "user_info":
_userInfo = archiveI.GetString("data");
_txtUserInfo.text = _userInfo;
break;
default:
break;
}
}
__listArchives.Clear();
if (archiveInfo1 != null && archive1 != null)
{
__listArchives.GetItem().SetData(new System.Tuple<ArchiveProxy.ArchiveInfo, IDictionary<string, object>>(archiveInfo1, archive1));
}
if (archiveInfo2 != null && archive2 != null)
{
__listArchives.GetItem().SetData(new System.Tuple<ArchiveProxy.ArchiveInfo, IDictionary<string, object>>(archiveInfo2, archive2));
}
}
_txtStatus.text = "查询结束";
}
else
{
gmToken = "";
Refresh();
}
}
void OnQueryBanInfo(int error, string message)
{
_userInfo = message;
_txtUserInfo.text = _userInfo;
}
void OnUploadBtnClick()
{
var account = _inPlayer.text;
if (!string.IsNullOrEmpty(account))
{
UploadArchive((error, message) =>
{
if (error == 0)
{
_txtStatus.text = "上传存档成功";
}
else
{
_txtStatus.text = message;
}
});
_txtStatus.text = "上传存档";
}
}
void OnUploadCopyBtnClick()
{
var account = _inPlayer.text;
if (!string.IsNullOrEmpty(account))
{
UploadCopyArchive((error, message) =>
{
if (error == 0)
{
_txtStatus.text = "上传存档成功";
}
else
{
_txtStatus.text = message;
}
});
_txtStatus.text = "上传存档";
}
}
void OnBlockBtnClick()
{
var account = _inPlayer.text;
if (!string.IsNullOrEmpty(account))
{
BlockArchive((error, message) =>
{
if (error == 0)
{
_txtStatus.text = "封禁帐号成功";
}
else
{
_txtStatus.text = message;
}
});
_txtStatus.text = "封禁帐号";
}
}
void OnUnblockBtnClick()
{
var account = _inPlayer.text;
if (!string.IsNullOrEmpty(account))
{
UnblockArchive((error, message) =>
{
if (error == 0)
{
_txtStatus.text = "解禁帐号成功";
}
else
{
_txtStatus.text = message;
}
});
_txtStatus.text = "解禁帐号";
}
}
void OnClearBtnClick()
{
var account = _inPlayer.text;
if (!string.IsNullOrEmpty(account))
{
ClearArchive((int error, string message) =>
{
if (error == 0)
{
_txtStatus.text = "清除帐号成功";
}
else
{
_txtStatus.text = message;
}
});
_txtStatus.text = "清除帐号";
}
}
void OnGodRankBtnClick()
{
var account = _inPlayer.text;
if (!string.IsNullOrEmpty(account))
{
UploadGodState(false, (error, message) =>
{
if (error == 0)
{
_txtStatus.text = "加入封神榜成功";
}
else
{
_txtStatus.text = message;
}
});
_txtStatus.text = "加入封神榜";
}
}
void OnUngodBtnClick()
{
var account = _inPlayer.text;
if (!string.IsNullOrEmpty(account))
{
UploadGodState(true, (error, message) =>
{
if (error == 0)
{
_txtStatus.text = "解除封神榜成功";
}
else
{
_txtStatus.text = message;
}
});
_txtStatus.text = "解除封神榜";
}
}
void OnMailSendBtnClick()
{
var account = _inPlayer.text;
if (!string.IsNullOrEmpty(account))
{
if (string.IsNullOrEmpty(_inMailId.text))
{
SendMail(_inMailTitle.text, _inMailContent.text, _inMailRewards.text, OnSendMail);
}
else
{
int.TryParse(_inMailId.text, out int mailId);
var mailItem = ItemProxy.Instance.GetStaticItem<ItemMail>(mailId);
if (mailItem != null)
{
SendMail(mailItem.title, mailItem.content, mailItem.rewardText, OnSendMail);
}
}
_txtStatus.text = "发送邮件";
}
}
void OnSendMail(int error, string message)
{
if (error != 0)
{
Debug.Log(message);
}
}
void OnPullRankingBtnClick()
{
var rank_id = GetRankId();
if (rank_id > 0)
{
PullRanking(rank_id, OnPullRanking);
_txtStatus.text = $"拉取排行 {rank_id}";
}
}
void OnPullRanking(int error, string message, object data)
{
if (error == 0)
{
_rankingData = data;
IList<object> rankDataList = data as IList<object>;
__listRanking.Clear();
foreach (var rankData in rankDataList)
{
__listRanking.GetItem().SetData(rankData);
}
}
else
{
_txtStatus.text = message;
}
}
private void OnDelRankingBtnClick()
{
var account = _inPlayer.text;
if (!string.IsNullOrEmpty(account))
{
var rank_id = GetRankId();
if (rank_id > 0)
{
DeleteRanking(rank_id, OnDelRanking);
_txtStatus.text = $"删除排行 {rank_id}";
}
}
}
private void OnDelRanking(int error, string message)
{
}
void OnPageSelected(int index)
{
if (index == 0)
{
_goAccount.SetActive(true);
_goMail.SetActive(false);
_goRanking.SetActive(false);
}
else if (index == 1)
{
_goAccount.SetActive(false);
_goMail.SetActive(true);
_goRanking.SetActive(false);
}
else if (index == 2)
{
_goAccount.SetActive(false);
_goMail.SetActive(false);
_goRanking.SetActive(true);
}
}
public void OnCloseBtnClick()
{
this.gameObject.SetActive(!this.gameObject.activeSelf);
}
#endregion
#region Net
/// <summary>
/// 查询存档
/// </summary>
/// <param name="sdkID"></param>
/// <param name="callback"></param>
void QueryArchive(Callback3 callback)
{
var jsonData = GetCommonData();
jsonData.Add("tb_names", new string[] { "user_info", "archive_info", "archive", "archive2" });
var body = F.Utils.ToJsonText(jsonData);
void process(int error, object data)
{
if (error == 0)
{
var table = F.Utils.ToJsonTable((byte[])data);
int errorCode = table.GetInt("code");
if (errorCode == 0)
{
var dataT = table.GetDictionary("data");
var archives = dataT.GetList("archives");
callback?.Invoke(0, "", archives);
}
else
{
string errorMsg = table.GetString("msg");
callback?.Invoke(errorCode, errorMsg, null);
OnServerError(errorCode, errorMsg);
}
}
else
{
callback?.Invoke(error, data?.ToString(), null);
OnNetworkError(error, data?.ToString());
}
};
StartCoroutine(Request("/gm/gm/get_archive", body, process));
}
/// <summary>
/// 更新存档
/// </summary>
/// <param name="showToast"></param>
/// <param name="callback"></param>
void UploadArchive(Callback2 callback = null)
{
var jsonData = GetCommonData();
string mainData = ArchiveProxy.Instance.GetUploadText();
string infoData = ArchiveProxy.Instance.GetUploadInfo();
//
jsonData.Add("archives", new List<object>
{
new Dictionary<string, object>
{
{ "name", "archive" },
{ "data",mainData}
},
new Dictionary<string, object>
{
{ "name", "archive_info" },
{ "data",infoData}
}
});
var body = F.Utils.ToJsonText(jsonData);
void process(int error, object data)
{
if (error == 0)
{
var table = F.Utils.ToJsonTable((byte[])data);
int errorCode = table.GetInt("code");
if (errorCode == 0)
{
Debug.Log("上传存档");
callback?.Invoke(0, null);
}
else
{
string errorMsg = table.GetString("msg");
callback?.Invoke(errorCode, errorMsg);
OnServerError(errorCode, errorMsg);
}
}
else
{
callback?.Invoke(error, data?.ToString());
OnNetworkError(error, data?.ToString());
}
}
StartCoroutine(Request("/gm/gm/update_archive", body, process));
}
void UploadCopyArchive(Callback2 callback = null)
{
if (_CopyInfo == null)
return;
var jsonData = GetCommonData();
string mainData = _CopyInfo.Item2.GetString("data");// ArchiveProxy.Instance.GetUploadText();
string infoData = _CopyInfo.Item1.ToString();
//
jsonData.Add("archives", new List<object>
{
new Dictionary<string, object>
{
{ "name", "archive" },
{ "data",mainData}
},
new Dictionary<string, object>
{
{ "name", "archive_info" },
{ "data",infoData}
}
});
var body = F.Utils.ToJsonText(jsonData);
void process(int error, object data)
{
if (error == 0)
{
var table = F.Utils.ToJsonTable((byte[])data);
int errorCode = table.GetInt("code");
if (errorCode == 0)
{
Debug.Log("上传存档");
callback?.Invoke(0, null);
}
else
{
string errorMsg = table.GetString("msg");
callback?.Invoke(errorCode, errorMsg);
OnServerError(errorCode, errorMsg);
}
}
else
{
callback?.Invoke(error, data?.ToString());
OnNetworkError(error, data?.ToString());
}
}
StartCoroutine(Request("/gm/gm/update_archive", body, process));
}
/// <summary>
///
/// </summary>
/// <param name="clear"></param>
/// <param name="callback"></param>
void UploadGodState(bool clear, Callback2 callback = null)
{
var jsonData = GetCommonData();
string infoData = clear ? "" : "{\"god_rank\":true}";
//
jsonData.Add("archives", new List<object>
{
new Dictionary<string, object>
{
{ "name", "user_info" },
{ "data",infoData}
},
});
var body = F.Utils.ToJsonText(jsonData);
void process(int error, object data)
{
if (error == 0)
{
var table = F.Utils.ToJsonTable((byte[])data);
int errorCode = table.GetInt("code");
if (errorCode == 0)
{
Debug.Log("上传存档");
callback?.Invoke(0, null);
}
else
{
string errorMsg = table.GetString("msg");
callback?.Invoke(errorCode, errorMsg);
OnServerError(errorCode, errorMsg);
}
}
else
{
callback?.Invoke(error, data?.ToString());
OnNetworkError(error, data?.ToString());
}
}
StartCoroutine(Request("/gm/gm/update_archive", body, process));
}
/// <summary>
///
/// </summary>
/// <param name="callback"></param>
void ClearArchive(Callback2 callback = null)
{
var jsonData = GetCommonData();
var archiveInfo = new ArchiveProxy.ArchiveInfo();
string infoData = archiveInfo.ToString();
//
jsonData.Add("archives", new List<object>
{
new Dictionary<string, object>
{
{ "name", "user_info" },
{ "data",""}
},
new Dictionary<string, object>
{
{ "name", "archive" },
{ "data",""}
},
new Dictionary<string, object>
{
{ "name", "archive_info" },
{ "data",infoData}
}
});
var body = F.Utils.ToJsonText(jsonData);
void process(int error, object data)
{
if (error == 0)
{
var table = F.Utils.ToJsonTable((byte[])data);
int errorCode = table.GetInt("code");
if (errorCode == 0)
{
//Debug.Log("清除存档");
callback?.Invoke(0, null);
}
else
{
string errorMsg = table.GetString("msg");
callback?.Invoke(errorCode, errorMsg);
OnServerError(errorCode, errorMsg);
}
}
else
{
callback?.Invoke(error, data?.ToString());
OnNetworkError(error, data?.ToString());
}
}
StartCoroutine(Request("/gm/gm/update_archive", body, process));
}
/// <summary>
///
/// </summary>
/// <param name="callback"></param>
void QueryBanInfo(Callback2 callback = null)
{
var jsonData = GetCommonData();
//
var body = F.Utils.ToJsonText(jsonData);
void process(int error, object data)
{
if (error == 0)
{
var table = F.Utils.ToJsonTable((byte[])data);
int errorCode = table.GetInt("code");
if (errorCode == 0)
{
var ban_status = table.GetInt("ban_status") == 0 ? "正常" : "封号";
var ban_result = table.GetString("record");
var ban_open_time = table.GetInt("open_time");
var ban_count = table.GetInt("ban_count");
var result = $"status:{ban_status} time:{F.Utils.Time.ToDataTime(ban_open_time).ToShortDateString()} result:{ban_result}";
callback?.Invoke(0, result);
}
else
{
string errorMsg = table.GetString("msg");
callback?.Invoke(errorCode, errorMsg);
OnServerError(errorCode, errorMsg);
}
}
else
{
callback?.Invoke(error, data?.ToString());
OnNetworkError(error, data?.ToString());
}
}
StartCoroutine(Request("/gm/gm/query_ban", body, process));
}
/// <summary>
///
/// </summary>
/// <param name="callback"></param>
void BlockArchive(Callback2 callback = null)
{
var jsonData = GetCommonData();
jsonData.Add("record", "当前账号存在异常,若有疑问请联系官方 qq群:923503162");
jsonData.Add("open_time", 1672506061);
_userInfo = "{\"ban\":1672506061,\"ban_text\":\"当前账号存在异常,若有疑问请联系官方 qq群:923503162\"}";
//
var body = F.Utils.ToJsonText(jsonData);
void process(int error, object data)
{
if (error == 0)
{
var table = F.Utils.ToJsonTable((byte[])data);
int errorCode = table.GetInt("code");
if (errorCode == 0)
{
Debug.Log("封禁帐号");
callback?.Invoke(0, null);
}
else
{
string errorMsg = table.GetString("msg");
callback?.Invoke(errorCode, errorMsg);
OnServerError(errorCode, errorMsg);
}
}
else
{
callback?.Invoke(error, data?.ToString());
OnNetworkError(error, data?.ToString());
}
}
StartCoroutine(Request("/gm/gm/ban", body, process));
}
/// <summary>
///
/// </summary>
/// <param name="ban"></param>
/// <param name="callback"></param>
void UnblockArchive(Callback2 callback = null)
{
var jsonData = GetCommonData();
_userInfo = "";
//
var body = F.Utils.ToJsonText(jsonData);
void process(int error, object data)
{
if (error == 0)
{
var table = F.Utils.ToJsonTable((byte[])data);
int errorCode = table.GetInt("code");
if (errorCode == 0)
{
Debug.Log("解禁帐号");
callback?.Invoke(0, null);
}
else
{
string errorMsg = table.GetString("msg");
callback?.Invoke(errorCode, errorMsg);
OnServerError(errorCode, errorMsg);
}
}
else
{
callback?.Invoke(error, data?.ToString());
OnNetworkError(error, data?.ToString());
}
}
StartCoroutine(Request("/gm/gm/relieve_ban", body, process));
}
/// <summary>
/// 查询存档
/// </summary>
/// <param name="account"></param>
/// <param name="callback"></param>
void SendMail(string title, string content, string rewards, Callback2 callback)
{
var jsonData = GetCommonData();
jsonData.Add("title", title);
jsonData.Add("content", content);
jsonData.Add("rewards", rewards);
var body = F.Utils.ToJsonText(jsonData);
void process(int error, object data)
{
if (error == 0)
{
var table = F.Utils.ToJsonTable((byte[])data);
int errorCode = table.GetInt("code");
if (errorCode == 0)
{
callback?.Invoke(0, "");
}
else
{
string errorMsg = table.GetString("msg");
callback?.Invoke(errorCode, errorMsg);
OnServerError(errorCode, errorMsg);
}
}
else
{
callback?.Invoke(error, data?.ToString());
OnNetworkError(error, data?.ToString());
}
};
StartCoroutine(Request("/gm/gm/send_mail", body, process));
}
/// <summary>
/// uid string user_key string score
/// </summary>
/// <param name="rank_id"></param>
/// <param name="callback"></param>
void PullRanking(int rank_id, Callback3 callback)
{
var jsonData = GetCommonData();
jsonData.Add("rank_id", rank_id);
var body = F.Utils.ToJsonText(jsonData);
void process(int error, object data)
{
if (error == 0)
{
var table = F.Utils.ToJsonTable((byte[])data);
int errorCode = table.GetInt("code");
if (errorCode == 0)
{
var dataT = table.GetDictionary("data");
var rankList = dataT.GetList("list");
callback?.Invoke(0, "", rankList);
}
else
{
string errorMsg = table.GetString("msg");
callback?.Invoke(errorCode, errorMsg, null);
OnServerError(errorCode, errorMsg);
}
}
else
{
callback?.Invoke(error, data?.ToString(), null);
OnNetworkError(error, data?.ToString());
}
};
StartCoroutine(Request("/gm/gm/load_rank", body, process));
}
void UpdateRanking(int rank_id, Callback2 callback)
{
var jsonData = GetCommonData();
jsonData.Add("rank_id", rank_id);
var body = F.Utils.ToJsonText(jsonData);
void process(int error, object data)
{
if (error == 0)
{
var table = F.Utils.ToJsonTable((byte[])data);
int errorCode = table.GetInt("code");
if (errorCode == 0)
{
callback?.Invoke(0, "");
}
else
{
string errorMsg = table.GetString("msg");
callback?.Invoke(errorCode, errorMsg);
OnServerError(errorCode, errorMsg);
}
}
else
{
callback?.Invoke(error, data?.ToString());
OnNetworkError(error, data?.ToString());
}
};
StartCoroutine(Request("/gm/gm/del_rank", body, process));
}
/// <summary>
///
/// </summary>
/// <param name="rank_id"></param>
/// <param name="callback"></param>
void DeleteRanking(int rank_id, Callback2 callback)
{
var jsonData = GetCommonData();
jsonData.Add("rank_id", rank_id);
var body = F.Utils.ToJsonText(jsonData);
void process(int error, object data)
{
if (error == 0)
{
var table = F.Utils.ToJsonTable((byte[])data);
int errorCode = table.GetInt("code");
if (errorCode == 0)
{
callback?.Invoke(0, "");
}
else
{
string errorMsg = table.GetString("msg");
callback?.Invoke(errorCode, errorMsg);
OnServerError(errorCode, errorMsg);
}
}
else
{
callback?.Invoke(error, data?.ToString());
OnNetworkError(error, data?.ToString());
}
};
StartCoroutine(Request("/gm/gm/del_rank", body, process));
}
private void OnNetworkError(int error, string errorMsg)
{
}
private void OnServerError(int error, string errorMsg)
{
Debug.Log("server error " + error + " " + errorMsg);
if (error == 15002)
{
gmToken = "";
ShowLogin();
}
}
private string gmToken
{
get { return UnityEditor.EditorPrefs.GetString("gm_token"); }
set
{
UnityEditor.EditorPrefs.SetString("gm_token", value);
}
}
private readonly Dictionary<string, object> _jsonData = new Dictionary<string, object>();
/// <summary>
///
/// </summary>
/// <returns></returns>
private Dictionary<string, object> GetCommonData()
{
_jsonData.Clear();
var account = _inPlayer.text;
if (!string.IsNullOrEmpty(account))
{
if (_tgUID.isOn)
_jsonData.Add("uid", account);
else
_jsonData.Add("userid", account);
}
return _jsonData;
}
public static string GetSign(string body, string timestamp, bool testServer)
{
string raw_str;
if (testServer)
raw_str = F.Utils.Text.Format("appid=KHQiAUtB&body={0}&signkey=3c3c3aa984ccbbc791655fbf9f8e0fb1&time={1}&", body, timestamp);
else
raw_str = F.Utils.Text.Format("appid=KHQiAUtB&body={0}&signkey=8adb871756f5bdea6b3d57547fdec8d9&time={1}&", body, timestamp);
return F.Utils.Security.GetMd5Hex(raw_str);
}
IEnumerator Request(string api, string body, System.Action<int, object> callback)
{
string url = "";
if (_tgServer.isOn)
url = "https://dev-shaoxia.lanfeitech.com" + api;
else
url = "https://prod-shaoxia.lanfeitech.com" + api;
var webRequest = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST)
{
uploadHandler = new UploadHandlerRaw(System.Text.Encoding.UTF8.GetBytes(body))
{
contentType = "application/json"
},
downloadHandler = new DownloadHandlerBuffer()
};
var timeStr = Launch.Timestamp.ToString();
webRequest.SetRequestHeader("sign", GetSign(body, timeStr, _tgServer.isOn));
webRequest.SetRequestHeader("time", timeStr);
if (!string.IsNullOrEmpty(gmToken))
{
webRequest.SetRequestHeader("authorization", gmToken);
}
#if UNITY_EDITOR
Debug.Log(body);
#endif
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
Debug.Log(webRequest.error);
callback(1, webRequest.error);
}
else
{
#if UNITY_EDITOR
Debug.Log(webRequest.downloadHandler.text);
#endif
callback(0, webRequest.downloadHandler.data);
}
}
#endregion
#region Unity
static KGMWindow _Instance;
// Use this for initialization
private void Awake()
{
_Instance = this;
SetViewData();
_goPages.onToggleSelected.AddListener(this.OnPageSelected);
_btnGMLogin.onClick.AddListener(this.OnLoginBtnClick);
_btnQuery.onClick.AddListener(this.OnQueryBtnClick);
_btnUpload.onClick.AddListener(this.OnUploadBtnClick);
_btnUploadCopy.onClick.AddListener(this.OnUploadCopyBtnClick);
_btnBlock.onClick.AddListener(this.OnBlockBtnClick);
_btnUnblock.onClick.AddListener(this.OnUnblockBtnClick);
_btnClear.onClick.AddListener(this.OnClearBtnClick);
_btnDelRanking.onClick.AddListener(this.OnDelRankingBtnClick);
_btnPullRanking.onClick.AddListener(this.OnPullRankingBtnClick);
_btnMailSend.onClick.AddListener(this.OnMailSendBtnClick);
_btnGod.onClick.AddListener(this.OnGodRankBtnClick);
_btnUngod.onClick.AddListener(this.OnUngodBtnClick);
__listArchives.AddTemplate<ArchiveWidget>(true);
__listRanking.AddTemplate<RankingWidget>(true);
_inGMToken.text = this.gmToken;
}
private void OnEnable()
{
Refresh();
}
// Update is called once per frame
private void Update()
{
}
#endregion
#endif
}
}