282 lines
9.2 KiB
C#
282 lines
9.2 KiB
C#
using System.Collections;
|
||
using GCGame;
|
||
using GCGame.Table;
|
||
using Module.Log;
|
||
using UnityEngine;
|
||
using UnityEngine.Networking;
|
||
|
||
public class LimitChatInfoCtr : MonoBehaviour
|
||
{
|
||
private const string _staticKey = "\"code\"";
|
||
|
||
private const string _containertypeStr = "application/x-www-form-urlencoded";
|
||
// private const string _complaintUrl = "http://139.159.226.174/api/avoid/appeal"; //申诉(内网: gz.zyadmin.com 外网:139.159.226.174)
|
||
//private const string _reportUrl = "http://139.159.226.174/api/avoid/report"; //举报
|
||
|
||
private static string _complaintUrl = null;
|
||
|
||
private static string _reportUrl = null;
|
||
|
||
|
||
public static LimitChatInfoCtr Instance;
|
||
|
||
private int _canComplainLevel;
|
||
|
||
public GameObject _forbiddenIcon;
|
||
private bool _isCountTime;
|
||
private string _randomStrAttr;
|
||
|
||
private int _remainTime;
|
||
private string _signAttr;
|
||
private string _timeAttr;
|
||
|
||
private float countTime;
|
||
|
||
public static string ComplainUrl
|
||
{
|
||
get
|
||
{
|
||
//if (_complaintUrl == null)
|
||
// _complaintUrl = TableManager.GetSystemParamByID(30, 0).StringValue;
|
||
//return _complaintUrl;
|
||
return ControllUrlManager.AvoidAppealUrl;
|
||
}
|
||
}
|
||
|
||
public static string ReportUrl
|
||
{
|
||
get
|
||
{
|
||
//if (_reportUrl == null)
|
||
// _reportUrl = TableManager.GetSystemParamByID(31, 0).StringValue;
|
||
//return _reportUrl;
|
||
return ControllUrlManager.AvoidReportUrl;
|
||
}
|
||
}
|
||
|
||
public void ShowForbiddenIcon(bool isShow)
|
||
{
|
||
if (isShow)
|
||
{
|
||
if (!_forbiddenIcon.activeInHierarchy)
|
||
_forbiddenIcon.SetActive(true);
|
||
}
|
||
else
|
||
{
|
||
if (_forbiddenIcon.activeInHierarchy)
|
||
_forbiddenIcon.SetActive(false);
|
||
}
|
||
}
|
||
|
||
public void OnForbiddenIconClick()
|
||
{
|
||
ReqComplaint();
|
||
}
|
||
|
||
private void Awake()
|
||
{
|
||
Instance = this;
|
||
}
|
||
|
||
private void OnDestroy()
|
||
{
|
||
Instance = null;
|
||
}
|
||
|
||
private void OnEnable()
|
||
{
|
||
if (gameObject.activeInHierarchy)
|
||
{
|
||
StopAllCoroutines();
|
||
StartCoroutine(CalculateRemainTime());
|
||
}
|
||
}
|
||
|
||
private IEnumerator CalculateRemainTime()
|
||
{
|
||
while (true)
|
||
{
|
||
yield return new WaitForSeconds(1f);
|
||
|
||
_remainTime = Utils.GetRemainTime(GameManager.gameManager.PlayerDataPool.ForbiddenTalkOverTime);
|
||
|
||
if (_remainTime > 0)
|
||
{
|
||
countTime += Time.deltaTime;
|
||
if (countTime >= 1.0f)
|
||
{
|
||
_remainTime--;
|
||
countTime -= 1.0f;
|
||
}
|
||
|
||
if (_remainTime > 0)
|
||
ShowForbiddenIcon(true);
|
||
else
|
||
ShowForbiddenIcon(false);
|
||
}
|
||
else
|
||
{
|
||
_remainTime = 0;
|
||
_isCountTime = false;
|
||
ShowForbiddenIcon(false);
|
||
}
|
||
}
|
||
}
|
||
|
||
//请求申诉
|
||
public void ReqComplaint()
|
||
{
|
||
var chatLimit = TableManager.GetChatLimitByID(0);
|
||
if (chatLimit != null)
|
||
_canComplainLevel = chatLimit.ComplainNeedLevel;
|
||
if (GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level >= _canComplainLevel)
|
||
MessageBoxLogic.OpenOKCancelBoxWithBtnName(
|
||
StrDictionary.GetClientDictionaryString("#{79201}", GetForbiddenRemainTime()),
|
||
null, StrDictionary.GetClientDictionaryString("#{79202}"),
|
||
StrDictionary.GetClientDictionaryString("#{1074}"), delegate
|
||
{
|
||
//StartCoroutine(CreateComplaintHttpPost());
|
||
var cc_id = string.IsNullOrEmpty(GameManager.gameManager.PlayerDataPool.ChannelId)
|
||
? "-1"
|
||
: GameManager.gameManager.PlayerDataPool.ChannelId;
|
||
var _formatStr = "&serverId={0}&guid={1}&charname={2}&level={3}&vip_level={4}&cch_id={5}";
|
||
var paramData = Utils.GetHttpSingStr() + string.Format(_formatStr,
|
||
GameManager.gameManager.PlayerDataPool.WorldId,
|
||
GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Guid,
|
||
GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.RoleName,
|
||
GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level,
|
||
GameManager.gameManager.PlayerDataPool.VipCost,
|
||
cc_id);
|
||
|
||
StartCoroutine(CreateComplainHttpPost(ComplainUrl, paramData));
|
||
}, delegate { UIManager.CloseUI(UIInfo.MessageBox); });
|
||
else
|
||
MessageBoxLogic.OpenOKBox(StrDictionary.GetClientDictionaryString("#{79200}", _canComplainLevel), null,
|
||
delegate { UIManager.CloseUI(UIInfo.MessageBox); });
|
||
//StartCoroutine(CreateComplaintHttpPost());
|
||
}
|
||
|
||
private string GetForbiddenRemainTime()
|
||
{
|
||
var remainTime = Utils.GetRemainTime(GameManager.gameManager.PlayerDataPool.ForbiddenTalkOverTime);
|
||
|
||
if (remainTime >= 3600)
|
||
{
|
||
var remainHour = remainTime / 3600;
|
||
var remainMin = (remainTime - remainHour * 3600) / 60;
|
||
var remainSec = remainTime % 60;
|
||
return StrDictionary.GetClientDictionaryString("#{67129}", remainHour, remainMin, remainSec);
|
||
}
|
||
else
|
||
{
|
||
var remainMin = remainTime / 60;
|
||
var remainSec = remainTime % 60;
|
||
return StrDictionary.GetClientDictionaryString("#{67130}", remainMin, remainSec);
|
||
}
|
||
}
|
||
|
||
public void CloseReportPanel()
|
||
{
|
||
if (ChatReportPanelCtr.Instance && ChatReportPanelCtr.Instance.gameObject.activeInHierarchy)
|
||
UIManager.CloseUI(UIInfo.ChatReportPanel);
|
||
}
|
||
|
||
//发送请求到PHP
|
||
public IEnumerator CreateReportHttpPost(string url, string dataMsg)
|
||
{
|
||
var request = UnityWebRequest.Post(url, dataMsg);
|
||
|
||
yield return request.SendWebRequest();
|
||
//
|
||
if (request.isNetworkError)
|
||
{
|
||
LogModule.ErrorLog("PostMsg error:" + request.isNetworkError);
|
||
}
|
||
else
|
||
{
|
||
if (ParseJsonByKey(request.downloadHandler.text, _staticKey).Equals("1"))
|
||
{
|
||
MessageBoxLogic.OpenOKBox(StrDictionary.GetClientDictionaryString("#{68011}"));
|
||
CloseReportPanel();
|
||
}
|
||
}
|
||
}
|
||
|
||
public IEnumerator CreateComplainHttpPost(string url, string dataMsg)
|
||
{
|
||
var request = UnityWebRequest.Post(url, dataMsg);
|
||
|
||
yield return request.SendWebRequest();
|
||
//
|
||
if (request.isNetworkError)
|
||
{
|
||
LogModule.ErrorLog("PostMsg error:" + request.isNetworkError);
|
||
}
|
||
else
|
||
{
|
||
if (ParseJsonByKey(request.downloadHandler.text, _staticKey).Equals("1"))
|
||
{
|
||
MessageBoxLogic.OpenOKBox(StrDictionary.GetClientDictionaryString("#{68010}"), "",
|
||
() => { MessageHelpLogic.ShowHelpMessage(43); });
|
||
CloseReportPanel();
|
||
}
|
||
else if (ParseJsonByKey(request.downloadHandler.text, _staticKey).Equals("-4")) //一天只能申诉一次
|
||
{
|
||
GUIData.AddNotifyData("#{79204}");
|
||
}
|
||
}
|
||
}
|
||
|
||
//举报
|
||
public void ReqReport(int type, string content, ulong guid, ulong bGuid, int worldId, string bContent,
|
||
string bName) //需要举报的描述 举报类型
|
||
{
|
||
var cc_id = string.IsNullOrEmpty(GameManager.gameManager.PlayerDataPool.ChannelId)
|
||
? "-1"
|
||
: GameManager.gameManager.PlayerDataPool.ChannelId;
|
||
content = string.IsNullOrEmpty(content) ? "-1" : content;
|
||
bContent = string.IsNullOrEmpty(bContent) ? "-1" : bContent;
|
||
|
||
var _formatStr =
|
||
"&type={0}&content={1}&guid={2}&bguid={3}&serverId={4}&bContent={5}&cch_id={6}&charname={7}&report_name={8}&level={9}&vip_level={10}";
|
||
var paramData = Utils.GetHttpSingStr() + string.Format(_formatStr, type, content, guid, bGuid, worldId,
|
||
bContent,
|
||
cc_id,
|
||
GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.RoleName,
|
||
bName,
|
||
GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level,
|
||
GameManager.gameManager.PlayerDataPool.VipCost);
|
||
StartCoroutine(CreateReportHttpPost(ReportUrl, paramData));
|
||
}
|
||
|
||
private string ParseJsonByKey(string jsonText, string key)
|
||
{
|
||
if (jsonText == "" || jsonText == null) return null;
|
||
string val = null;
|
||
var _res = new ResultMsg("", "");
|
||
_res = JsonUtility.FromJson<ResultMsg>(jsonText);
|
||
|
||
try
|
||
{
|
||
val = _res.code;
|
||
}
|
||
catch
|
||
{
|
||
LogModule.ErrorLog(_res.msg);
|
||
}
|
||
|
||
return val;
|
||
}
|
||
|
||
private struct ResultMsg
|
||
{
|
||
public readonly string code;
|
||
public readonly string msg;
|
||
|
||
public ResultMsg(string _code, string _msg)
|
||
{
|
||
code = _code;
|
||
msg = _msg;
|
||
}
|
||
}
|
||
} |