using LitJson;
using UnityEngine;
using UnityEngine.Events;
using System;
using System.Collections;
using System.Net;
using System.Net.Mail;
using System.Security.Cryptography.X509Certificates;
using UnityEngine.UI;
public class MyCredentials : ICredentialsByHost
{
public NetworkCredential NetworkCredential;
public NetworkCredential GetCredential(string host, int port, string authType)
{
return NetworkCredential.GetCredential(new Uri("http://" + host + ":" + port), authType);
}
public MyCredentials(string username, string password)
{
NetworkCredential = new NetworkCredential(username, password);
}
}
public class ManaServer : Regist
{
#region 变量
public static bool Connect
{
get
{
if (Connect_)
{
return true;
}
else
{
if (ManaTutorial.ConnectExemptAmt > 0)
{
ManaTutorial.ConnectExemptAmt--;
return true;
}
else
{
return false;
}
}
}
set { Connect_ = value; }
}
public static bool Connect_;
public static float Timer;
public static bool LoginComplete;
public static string ReportStr;
public static string ID = "Default";
public static JsonData JsonData;
public static DateTime Time;
#endregion
private void Update()
{
if (!LoginComplete)
{
Timer += UnityEngine.Time.fixedDeltaTime;
if (Timer >= 5)
{
ManaData.LoginCallbackInitial(new JsonData());
}
}
}
public static void Login(URLRequest.URLRequestJsonCallBackDelegate callback = null)
{
URLRequestData urlData = new URLRequestData();
urlData.Add("u", SystemInfo.deviceUniqueIdentifier);
URLRequest.CreateURLRequest("https://garden.dashgame.com/index.php/home/user/login", urlData, LoginCallback + callback, URLRequest.Method.POST);
}
private static void LoginCallback(JsonData jsonData)
{
LoginComplete = true;
if (jsonData.Inst_Object.ContainsKey("c") && jsonData["c"].ToJson() == "0")
{
Connect = true;
JsonData = jsonData;
Time = DateUtil.GetTime(jsonData["time"].ToJson());
if (Data._PlayerDoc != null)
{
if (Data.GetPlayerString("ID") == "Default")
{
ID = jsonData["o"].ToString();
if (Initializer.LoadComplete)
{
ManaReso.SetText("L_UserLab", ID);
}
}
}
ManaDebug.Log("连接成功");
}
else
{
Connect = false;
ManaDebug.Log("连接失败");
}
}
public static void Save()
{
URLRequestData urlData = new URLRequestData();
urlData.Add("u", ID);
Data.SavePlayerConfig();
urlData.Add("l", Data.PlayerDoc.OuterXml);
URLRequest.CreateURLRequest("https://garden.dashgame.com/index.php/home/user/save", urlData, SaveCallback, URLRequest.Method.POST);
}
private static void SaveCallback(JsonData jsonData)
{
ManaDebug.Log("发送存档成功");
}
public static void Load(string id, URLRequest.URLRequestJsonCallBackDelegate callback)
{
URLRequestData urlData = new URLRequestData();
urlData.Add("u", id);
URLRequest.CreateURLRequest("https://garden.dashgame.com/index.php/home/user/load", urlData, callback, URLRequest.Method.POST);
}
public static void Report()
{
ManaReso.Get("Lb_Info").TweenBacCG();
string str = ManaReso.Get("Lb_InputLab").text;
if (string.IsNullOrEmpty(str))
{
Bubble.Show(null, Language.GetStr("UI", "Lb_Send2"));
}
else if(ReportStr == str)
{
Bubble.Show(null, Language.GetStr("UI", "Lb_Send1"));
}
else
{
MailMessage mailMessage = new MailMessage();
mailMessage.To.Add(new MailAddress("bug@dashgame.com"));
mailMessage.From = new MailAddress("dashgamegarden@163.com");
ReportStr = str;
mailMessage.Body = ReportStr;
mailMessage.Subject = ID + " MyLovelyGargen Issue";
SmtpClient smtpClient = new SmtpClient("smtp.163.com");
smtpClient.Credentials = new MyCredentials("dashgamegarden@163.com", "cs670cs");
smtpClient.SendAsync(mailMessage, "Async");
Bubble.Show(null, Language.GetStr("UI", "Lb_Send0"));
}
}
}