using LitJson; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using System; using System.Net; using System.Xml; using System.Text; using System.Net.Mail; using System.Collections; using System.Collections.Generic; using Random = UnityEngine.Random; 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 { public class MailReward { public string Id; public string Key; public string Value; public MailReward(string id, string key, string value) { Id = id; Key = key; Value = value; } } #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 PackLock { get { return PackLock_; } set { PackLock_ = value; foreach (var kv in ManaCenter.SkillDic) { if (kv.Value is Pack) { ((Pack) kv.Value).SetActive(!PackLock_); } } } } public static bool Connect_; public static bool PackLock_; public static int Counter; public static float Timer; public static bool Complete; public static bool FirstConnect = true; public static string ID = "Default"; public static string ReportContent; public static JsonData JsonData; public static DateTime Time; public static string MailXml; public static List MailRewardList = new List(); #endregion public void Update() { if (!ManaCenter.Complete && !Complete) { Timer += UnityEngine.Time.deltaTime; if (Timer >= 2f) { Timer = 0; Counter++; if (Counter > 4) { Complete = true; ManaCenter.LoginCallbackInitial(new JsonData()); } else { Login(ManaCenter.LoginCallbackInitial); } } } } public override bool RegistImmed() { if (base.RegistImmed()) { return true; } enabled = true; return false; } public static void MailRequest() { URLRequestData urlData = new URLRequestData(); URLRequest.CreateStrURLRequest ( "https://garden.dashgame.com/xml/mail.xml", urlData, data => { MailXml = data; } ); } public static void GetMainReward() { for (int i = 0; i < MailRewardList.Count; i++) { GetMainReward(MailRewardList[i]); } } public static void GetMainReward(MailReward mailReward) { ManaData.SavePlayerString("OneTimeReward", $"{ManaData.GetPlayerString("OneTimeReward")} {mailReward.Id}".Trim(' ')); if (mailReward.Key == "pack") { SkillRoot skillRoot; if (ManaCenter.SkillDic.TryGetValue($"Pack{mailReward.Value}", out skillRoot)) { Pack pack = (Pack) skillRoot; pack.PurchaseResult(); Transform mailItem = ManaReso.Get("MailItem", Folder.UI, false, ManaReso.Get("Bd_Grid"), new Vector3(), ObjType.MailItem); float newSpriteSize = 0.35f; mailItem.GetChild(1).SetActive(false); mailItem.GetChild(0).GetComponent().sprite = pack.Icon; mailItem.GetChild(0).GetComponent().Resize(true, newSpriteSize, newSpriteSize); mailItem.GetChild(0).transform.localPosition = new Vector2(0, 0); mailItem.GetChild(2).GetComponent().text = pack.Name; ManaInfo.Show($"{Language.GetStr("Common", "Get")} <(礼包)>{pack.Name}", 10); } else { Debug.LogWarning($"Unknown id {mailReward.Value}"); } } else if (mailReward.Key == "close") { List idList = Auxiliary.IntListParse(' ', mailReward.Value, new List()); CloseUnit closeUnit; for (int i = 0; i < idList.Count; i++) { if (ManaPlayer.CloseUnitDic.TryGetValue(idList[i], out closeUnit)) { if (closeUnit.Bought == false) { closeUnit.Unlock(); ManaPlayer.BoughtCloseList.UniqueAdd(idList[i]); } Transform mailItem = ManaReso.Get("MailItem", Folder.UI, false, ManaReso.Get("Bd_Grid"), new Vector3(), ObjType.MailItem); float newSize = 0.6f; float newSpriteSize = closeUnit.PixelSize*newSize/closeUnit.Sprites[0].rect.width; mailItem.GetChild(1).GetComponent().sprite = closeUnit.Sprites[0]; mailItem.GetChild(1).GetComponent().Resize(true, newSpriteSize, newSpriteSize); mailItem.GetChild(1).transform.localPosition = new Vector2(0, closeUnit.IconOffset*newSize); if (closeUnit.Sprites.Length > 1) { mailItem.GetChild(0).SetActive(true); mailItem.GetChild(0).GetComponent().sprite = closeUnit.Sprites[1]; mailItem.GetChild(0).GetComponent().Resize(true, newSpriteSize, newSpriteSize); mailItem.GetChild(0).transform.localPosition = closeUnit.IconOffset1*newSpriteSize + new Vector2(0, closeUnit.IconOffset*newSize); } else { mailItem.GetChild(0).SetActive(false); } mailItem.GetChild(2).GetComponent().text = closeUnit.Name; ManaInfo.Show($"{Language.GetStr("Common", "Get")} <(服装)>{closeUnit.Name}", 10); } else { Debug.LogWarning($"Unknown id {idList[i]}"); } } } else if (mailReward.Key == "flower") { List idList = Auxiliary.IntListParse(' ', mailReward.Value, new List()); FlowerInfo flowerInfo; for (int i = 0; i < idList.Count; i++) { if (ManaGarden.FlowerInfoDic.TryGetValue(idList[i], out flowerInfo)) { if (flowerInfo.Unlock == false) { flowerInfo.Unlock = true; } Transform mailItem = ManaReso.Get("MailItem", Folder.UI, false, ManaReso.Get("Bd_Grid"), new Vector3(), ObjType.MailItem); float newSpriteSize = 0.18f; mailItem.GetChild(1).SetActive(false); mailItem.GetChild(0).GetComponent().sprite = flowerInfo.Icon; mailItem.GetChild(0).GetComponent().Resize(true, newSpriteSize, newSpriteSize); mailItem.GetChild(0).transform.localPosition = new Vector2(0, 0); mailItem.GetChild(2).GetComponent().text = flowerInfo.Name; ManaInfo.Show($"{Language.GetStr("Common", "Get")} <(花朵)>{flowerInfo.Name}", 10); } else { Debug.LogWarning($"Unknown id {idList[i]}"); } } } else if (mailReward.Key == "coin") { ManaCenter.AddCoin(double.Parse(mailReward.Value), StaticsManager.ItemID.获得金币, StaticsManager.ConsumeModule.Mail); Transform mailItem = ManaReso.Get("MailItem", Folder.UI, false, ManaReso.Get("Bd_Grid"), new Vector3(), ObjType.MailItem); float newSpriteSize = 0.75f; mailItem.GetChild(1).SetActive(false); mailItem.GetChild(0).GetComponent().sprite = ManaReso.LoadSprite("金币", Folder.UI); mailItem.GetChild(0).GetComponent().Resize(true, newSpriteSize, newSpriteSize); mailItem.GetChild(0).transform.localPosition = new Vector2(0, 0); mailItem.GetChild(2).GetComponent().text = Auxiliary.ShrinkNumberStr(double.Parse(mailReward.Value)); ManaInfo.Show($"{Language.GetStr("Common", "Get")} <(金币)>{Auxiliary.ShrinkNumberStr(double.Parse(mailReward.Value))}", 10); } else if (mailReward.Key == "diamond") { ManaCenter.AddDiamond(double.Parse(mailReward.Value), StaticsManager.ItemID.获得钻石, StaticsManager.ConsumeModule.Mail); Transform mailItem = ManaReso.Get("MailItem", Folder.UI, false, ManaReso.Get("Bd_Grid"), new Vector3(), ObjType.MailItem); float newSpriteSize = 0.75f; mailItem.GetChild(1).SetActive(false); mailItem.GetChild(0).GetComponent().sprite = ManaReso.LoadSprite("钻石", Folder.UI); mailItem.GetChild(0).GetComponent().Resize(true, newSpriteSize, newSpriteSize); mailItem.GetChild(0).transform.localPosition = new Vector2(0, 0); mailItem.GetChild(2).GetComponent().text = Auxiliary.ShrinkNumberStr(double.Parse(mailReward.Value)); ManaInfo.Show($"{Language.GetStr("Common", "Get")} <(钻石)>{Auxiliary.ShrinkNumberStr(double.Parse(mailReward.Value))}", 10); } else { Debug.Log(mailReward.Key); } } public static void DecodeMailXml(string mailXml) { MailRewardList = new List(); XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.LoadXml(mailXml); } catch (Exception) { return; } XmlNodeList rewardNodeList = xmlDoc.SelectSingleNode("mail").SelectNodes("OneTimeReward"); List receivedIdList = Auxiliary.StringListParse(' ', ManaData.GetPlayerString("OneTimeReward"), new List()); for (int i = 0; i < rewardNodeList.Count; i++) { string id = rewardNodeList[i].SelectSingleNode("id").InnerText; if (receivedIdList.Contains(id)) { continue; } XmlNodeList targetIdNodeList = rewardNodeList[i].SelectSingleNode("targets").SelectNodes("id"); for (int j = 0; j < targetIdNodeList.Count; j++) { if (targetIdNodeList[j].InnerText.ToLower() == ID.ToLower()) { XmlNodeList xmlNodeList = rewardNodeList[i].SelectSingleNode("reward").ChildNodes; for (int k = 0; k < xmlNodeList.Count; k++) { MailRewardList.Add(new MailReward(id, xmlNodeList[k].Name, xmlNodeList[k].InnerText)); } break; } } } } public static void SetPackLock() { URLRequestData urlData = new URLRequestData(); URLRequest.CreateURLRequest ( "https://garden.dashgame.com/index.php/home/index/index", urlData, data => { if (data.Inst_Object.ContainsKey("error")) { if (ManaData.PlayerDoc_ != null) { PackLock = ManaData.GetPlayerBool("PackLock"); } } else { PackLock = Auxiliary.BoolParse(data["l"]["val"].ToJson().Trim('"'), true); if (ManaData.PlayerDoc_ != null) { ManaData.SavePlayerBool("PackLock", PackLock); } } } ); } public static void GetProductID(string id, URLRequest.URLRequestCallBackDelegate callback) { URLRequestData urlData = new URLRequestData(); urlData.Add("t", 1); urlData.Add("i", id); urlData.Add("u", JsonData.Inst_Object["i"].ToJson().Trim('"')); URLRequest.CreateStrURLRequest("https://garden.dashgame.com/index.php/home/pay/pay", urlData, callback, URLRequest.Method.POST); } 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) { Complete = true; if (jsonData.Inst_Object.ContainsKey("c")) { Connect = true; JsonData = jsonData; Time = DateUtil.GetTime(jsonData["time"].ToJson()); if (ManaData.DamageLock) { ID = jsonData["o"].ToString(); } else if (ManaData.PlayerDoc_ != null) { if (ManaData.GetPlayerString("ID") == "Default") { ID = jsonData["o"].ToString(); if (Initializer.Complete) { ManaReso.SetText("L_UserLab", ID); } } } if (FirstConnect) { FirstConnect = false; StaticsManager.GetInstance().ActOrReg(ID, DataEyeGA.AccountType.Official); } ManaDebug.Log("连接成功"); } else { Connect = false; ManaDebug.Log("连接失败"); } } public static void Save() { ManaCenter.SaveTimer = 0; URLRequestData urlData = new URLRequestData(); urlData.Add("u", ID); ManaData.SavePlayerConfig(); urlData.Add("l", ManaData.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 Download(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 RandomLoad(URLRequest.URLRequestJsonCallBackDelegate callback) { URLRequestData urlData = new URLRequestData(); urlData.Add("i", ""); URLRequest.CreateURLRequest("https://garden.dashgame.com/index.php/home/user/rand", 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(ReportContent == 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"); ReportContent = str; mailMessage.Body = ReportContent + '\n' + GetSystemInfo(); 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")); } } public static string GetSystemInfo() { StringBuilder sb = new StringBuilder(); sb.AppendLine("deviceType :" + SystemInfo.deviceType.ToString()); sb.AppendLine("deviceName :" + SystemInfo.deviceName.ToString()); sb.AppendLine("deviceModel :" + SystemInfo.deviceModel.ToString()); sb.AppendLine("deviceUniqueIdentifier :" + SystemInfo.deviceUniqueIdentifier.ToString()); sb.AppendLine("graphicsDeviceID :" + SystemInfo.graphicsDeviceID.ToString()); sb.AppendLine("graphicsDeviceType :" + SystemInfo.graphicsDeviceType.ToString()); sb.AppendLine("graphicsDeviceName :" + SystemInfo.graphicsDeviceName.ToString()); sb.AppendLine("graphicsShaderLevel :" + SystemInfo.graphicsShaderLevel.ToString()); sb.AppendLine("graphicsMemorySize :" + SystemInfo.graphicsMemorySize.ToString()); sb.AppendLine("graphicsDeviceVersion :" + SystemInfo.graphicsDeviceVersion.ToString()); sb.AppendLine("graphicsMultiThreaded :" + SystemInfo.graphicsMultiThreaded.ToString()); sb.AppendLine("graphicsDeviceVendor :" + SystemInfo.graphicsDeviceVendor.ToString()); sb.AppendLine("graphicsDeviceVendorID :" + SystemInfo.graphicsDeviceVendorID.ToString()); sb.AppendLine("npotSupport :" + SystemInfo.npotSupport.ToString()); sb.AppendLine("maxTextureSize :" + SystemInfo.maxTextureSize.ToString()); sb.AppendLine("operatingSystem :" + SystemInfo.operatingSystem.ToString()); sb.AppendLine("operatingSystemFamily :" + SystemInfo.operatingSystemFamily.ToString()); sb.AppendLine("processorType :" + SystemInfo.processorType.ToString()); sb.AppendLine("processorCount :" + SystemInfo.processorCount.ToString()); sb.AppendLine("processorFrequency :" + SystemInfo.processorFrequency.ToString()); sb.AppendLine("copyTextureSupport :" + SystemInfo.copyTextureSupport.ToString()); sb.AppendLine("graphicsMultiThreaded :" + SystemInfo.graphicsMultiThreaded.ToString()); sb.AppendLine("supportedRenderTargetCount :" + SystemInfo.supportedRenderTargetCount.ToString()); sb.AppendLine("supports3DTextures :" + SystemInfo.supports3DTextures.ToString()); sb.AppendLine("supports2DArrayTextures :" + SystemInfo.supports2DArrayTextures.ToString()); sb.AppendLine("supportsAccelerometer :" + SystemInfo.supportsAccelerometer.ToString()); sb.AppendLine("supportsAudio :" + SystemInfo.supportsAudio.ToString()); sb.AppendLine("supportsComputeShaders :" + SystemInfo.supportsComputeShaders.ToString()); sb.AppendLine("supportsCubemapArrayTextures :" + SystemInfo.supportsCubemapArrayTextures.ToString()); sb.AppendLine("supportsGyroscope :" + SystemInfo.supportsGyroscope.ToString()); sb.AppendLine("supportsImageEffects :" + SystemInfo.supportsImageEffects.ToString()); sb.AppendLine("supportsInstancing :" + SystemInfo.supportsInstancing.ToString()); sb.AppendLine("supportsLocationService :" + SystemInfo.supportsLocationService.ToString()); sb.AppendLine("supportsMotionVectors :" + SystemInfo.supportsMotionVectors.ToString()); sb.AppendLine("supportsRawShadowDepthSampling :" + SystemInfo.supportsRawShadowDepthSampling.ToString()); sb.AppendLine("supportsRenderToCubemap :" + SystemInfo.supportsRenderToCubemap.ToString()); sb.AppendLine("supportsShadows :" + SystemInfo.supportsShadows.ToString()); sb.AppendLine("supportsSparseTextures :" + SystemInfo.supportsSparseTextures.ToString()); sb.AppendLine("supportsVibration :" + SystemInfo.supportsVibration.ToString()); sb.AppendLine("systemMemorySize :" + SystemInfo.systemMemorySize.ToString()); sb.AppendLine("usesReversedZBuffer :" + SystemInfo.usesReversedZBuffer.ToString()); return sb.ToString(); } }