using LitJson; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using System; using System.IO; using System.Net; using System.Xml; using System.Text; using System.Linq; 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 enum CommentType { Garden = 0, } 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 int PraiseAmt; public static int NotificationIndex = -1; public static bool NotificationReady; public static string NotificationStr; public static Sprite NotificationSprite; public static float Timer; public static bool Complete; public static bool FirstConnect = true; public static string ID = "Default"; public static string SerialNumber = "Default"; public static string ReportContent; public static JsonData JsonData; public static DateTime Time; public static string MailXml; public static List MailRewardList = new List(); public static string BaseURL = "https://garden.dashgame.com/index.php/home"; public static string NewBaseURL = "https://garden.dashgame.com/index.php/newhome"; #endregion public void Awake() { //URLRequestData urlData = new URLRequestData(); //urlData.Add("u", "1704189794672324513"); //URLRequest.CreateStrURLRequest("https://garden.dashgame.com/index.php/home/user/other", urlData, Debug.Log, URLRequest.Method.POST); //URLRequestData urlData = new URLRequestData(); //urlData.Add("i", ""); //URLRequest.CreateStrURLRequest("https://garden.dashgame.com/index.php/home/user/rand", urlData, Debug.Log, URLRequest.Method.POST); //URLRequestData urlData = new URLRequestData(); //urlData.Add("u", "hsoiv1"); //URLRequest.CreateStrURLRequest("https://garden.dashgame.com/index.php/home/user/load", urlData, Debug.Log, URLRequest.Method.POST); //Login((data => print(data.ToJson()))); //Download("ytcy9g",(data)=> { print(data.ToJson()); }); //Other("1704189794672324513", (data) => { print(data.ToJson()); }); //for (int i = 0; i < 10; i++) //{ // string str = ""; // for (int j = 0; j < 80; j++) // { // str += Random.Range(0, 100); // } // AddComment("1704189794672324513", "1706142186026389627", 1, CommentType.Garden); //} //GetComment("123", "0", CommentType.Garden); //Praise("123", "1704189794672324513"); //Target("", "1704189794672324513",null); //URLRequestData urlData = new URLRequestData(); //URLRequest.CreateStrURLRequest("https://garden.dashgame.com/index.php/home/user/look", urlData, Debug.Log, URLRequest.Method.GET); } 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); IOSAlipayRequest(); } } } } public override bool RegistImmed() { if (base.RegistImmed()) { return true; } enabled = true; return false; } public static void NotificationRequest() { //Debug.Log("A"); IndexRequest ( data => { //Debug.Log("B"); URLRequestData urlData = new URLRequestData(); URLRequest.CreateStrURLRequest ( data["l"][3]["val"].ToString(), urlData, notificationXml => { //Debug.Log("C"); NotificationCallback(notificationXml); } ); } ); } public static void NotificationCallback(string xml) { //Debug.Log("D"); XmlNode rootNode; XmlDocument document = new XmlDocument(); try { document.LoadXml(xml); rootNode = document.SelectSingleNode("announce"); NotificationIndex = int.Parse(rootNode.SelectSingleNode("version").InnerText); XmlNodeList nodeList = rootNode.SelectNodes("item"); List urlList = new List(); for (int i = 0; i < nodeList.Count; i++) { DecodeNotificationItem(nodeList[i], urlList); } Auxiliary.Instance.StartCoroutine(PullNotifyTexs(urlList, PullNotifyTexsCallback)); } catch (Exception) { } finally { } } public static void DecodeNotificationItem(XmlNode node, List urlList) { XmlNodeList nodeList = node.SelectNodes("title"); for (int i = 0; i < nodeList.Count; i++) { ManaNotify.AddLine(false, nodeList[i].Attributes[0].Value, nodeList[i].InnerText, TextAnchor.MiddleLeft); } ManaNotify.AddLine(false, "null", node.SelectSingleNode("date").InnerText, TextAnchor.MiddleLeft); nodeList = node.SelectSingleNode("content").ChildNodes; for (int i = 0; i < nodeList.Count; i++) { if (nodeList[i].Name == "text") { ManaNotify.AddLine(false, nodeList[i].Attributes[0].Value, nodeList[i].InnerText, TextAnchor.MiddleLeft); } else if (nodeList[i].Name == "image") { urlList.UniqueAdd(nodeList[i].InnerText); ManaNotify.AddLine(true, "null", $"<({Path.GetFileNameWithoutExtension(nodeList[i].InnerText)})>", TextAnchor.MiddleCenter); } } ManaNotify.AddLine(false, "null", "", TextAnchor.MiddleLeft); } public static void PullNotifyTexsCallback(List wwwList) { List textureList = new List(); List spriteInfoList = new List(); for (int i = 0; i < wwwList.Count; i++) { textureList.Add(wwwList[i].texture); SpriteInfo spriteInfo = new SpriteInfo(); spriteInfo.Name = Path.GetFileNameWithoutExtension(wwwList[i].url); spriteInfoList.Add(spriteInfo); } Texture2D atlas = new Texture2D(2048, 2048); Rect[] rects = atlas.PackTextures(textureList.ToArray(), 1); Sprite sprite = Sprite.Create(atlas, new Rect(0, 0, atlas.width, atlas.height), new Vector2(0.5f, 0.5f)); for (int i = 0; i < spriteInfoList.Count; i++) { spriteInfoList[i].Width = textureList[i].width; spriteInfoList[i].Height = textureList[i].height; spriteInfoList[i].UvList = new List() { new Vector2(rects[i].xMin, rects[i].yMax), new Vector2(rects[i].xMax, rects[i].yMax), new Vector2(rects[i].xMax, rects[i].yMin), new Vector2(rects[i].xMin, rects[i].yMin), }; SpriteAsset.SpriteInfoDic.Add(spriteInfoList[i].Name, spriteInfoList[i]); } NotificationSprite = sprite; NotificationReady = true; if (Initializer.Complete) { ManaReso.Get("C_Notify").TweenForCG(); } //Debug.Log("Done"); } public static IEnumerator PullNotifyTexs(List urlList, Action> callback) { List wwwList = new List(); for (int i = 0; i < urlList.Count; i++) { wwwList.Add(new WWW(urlList[i])); } for (int i = 0; i < wwwList.Count; i++) { yield return wwwList[i]; } callback(wwwList); } public static void Praise(string sendID, string receiveID) { if (receiveID == null) { return; } URLRequestData urlData = new URLRequestData(); urlData.Add("u", sendID); urlData.Add("t", receiveID); URLRequest.CreateStrURLRequest(BaseURL + "/praise/click", urlData, (data)=> {}, URLRequest.Method.POST); } public static void Target(string userID, string targetID, Action callback) { URLRequestData urlData = new URLRequestData(); urlData.Add("u", userID); urlData.Add("t", targetID); URLRequest.CreateURLRequest(BaseURL + "/praise/target", urlData, data => callback(data), URLRequest.Method.POST); } public static void AddComment(string sendID, string receiveID, string content, CommentType type) { URLRequestData urlData = new URLRequestData(); urlData.Add("c", sendID); urlData.Add("u", receiveID); urlData.Add("i", content); urlData.Add("t", type.GetHashCode()); URLRequest.CreateStrURLRequest ( BaseURL + "/comment/comment", urlData, data => { if (data == "{\"error\":0}") { Bubble.Show(Language.GetStr("UI", "Q_CommentDone")); ManaSocial.UpdatePage(false); } else { Bubble.Show(Language.GetStr("UI", "Q_CommentFail")); } }, URLRequest.Method.POST ); } public static void GetComment(string id, string page, CommentType type, Action callback) { if (string.IsNullOrEmpty(id)) { return; } URLRequestData urlData = new URLRequestData(); urlData.Add("u", id); urlData.Add("p", page); urlData.Add("t", type.GetHashCode()); URLRequest.CreateURLRequest(BaseURL + "/comment/index", urlData, data => callback(data), URLRequest.Method.POST); } public static void IndexRequest(Action callback) { URLRequestData urlData = new URLRequestData(); URLRequest.CreateURLRequest ( BaseURL + "/index/index", urlData, data => { if (data.Inst_Object.ContainsKey("error")) { if (ManaData.PlayerDoc_ != null) { if (Application.platform == RuntimePlatform.Android) { PackLock = true; } else if (Application.platform == RuntimePlatform.IPhonePlayer) { PackLock = ManaData.GetPlayerBool("PackLock"); } } } else { callback(data); } } ); } public static void MailRequest() { //MailXml = "" + // "" + // "4" + // "2017-08-18 12:12:12" + // "2017-09-1 11:30:12" + // "" + // "1000" + // "10" + // "" + // "" + // "90arbl" + // "" + // "" + // "" + // "3" + // "2017-08-21 12:12:12" + // "2017-09-01 18:12:12" + // "" + // "10000" + // "100" + // "" + // "" + // "90arbl" + // "" + // "" + // ""; IndexRequest ( data => { URLRequestData urlData = new URLRequestData(); URLRequest.CreateStrURLRequest ( data["l"][1]["val"].ToJson().Trim('"'), urlData, mailXml => { MailXml = mailXml; } ); } ); } public static void GetMailReward() { for (int i = 0; i < MailRewardList.Count; i++) { GetMailReward(MailRewardList[i]); } } public static void GetMailReward(MailReward mailReward) { //Debug.Log(mailReward.Id); 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(); //Debug.Log("Decode"); try { xmlDoc.LoadXml(mailXml); } catch (Exception) { return; } XmlNodeList rewardNodeList = xmlDoc.SelectSingleNode("mail").SelectNodes("OneTimeReward"); //Debug.Log(ManaData.GetPlayerString("OneTimeReward")); List receivedIdList = Auxiliary.StringListParse(' ', ManaData.GetPlayerString("OneTimeReward"), new List()); //Debug.Log(""); //foreach (var id in receivedIdList) //{ // Debug.Log(id); //} //Debug.Log(""); for (int i = 0; i < rewardNodeList.Count; i++) { string id = rewardNodeList[i].SelectSingleNode("id").InnerText; //Debug.Log(id); if (receivedIdList.Contains(id)) { continue; } DateTime startTime = DateTime.Parse(rewardNodeList[i].SelectSingleNode("start").InnerText); DateTime endTime = DateTime.Parse(rewardNodeList[i].SelectSingleNode("end").InnerText); if (Time < startTime || Time > endTime) { //Debug.Log("Skip"); continue; } XmlNodeList targetIdNodeList = rewardNodeList[i].SelectSingleNode("targets").SelectNodes("id"); for (int j = 0; j < targetIdNodeList.Count; j++) { if (targetIdNodeList[j].InnerText == ID) { 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 PackTypeRequest() { IndexRequest ( data => { PackLock = Auxiliary.BoolParse(data["l"][0]["val"].ToJson().Trim('"'), true); if (Application.platform == RuntimePlatform.Android) { PackLock = true; } if (ManaData.PlayerDoc_ != null) { ManaData.SavePlayerBool("PackLock", PackLock); } } ); } public static void IOSAlipayRequest() { IndexRequest ( data => { ManaIAP.UseAlipayOnIOS = Auxiliary.BoolParse(data["l"][2]["val"].ToJson().Trim('"'), false); } ); } 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(BaseURL + "/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(NewBaseURL + "/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()); PraiseAmt = int.Parse(jsonData["p"].ToJson().Trim('"')); if (ManaData.DamageLock) { ID = jsonData["o"].ToString(); SerialNumber = jsonData["i"].ToString(); } else if (ManaData.PlayerDoc_ != null) { if (ManaData.GetPlayerString("ID") == "Default") { ID = jsonData["o"].ToString(); SerialNumber = jsonData["i"].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", SerialNumber); ManaData.SavePlayerConfig(); urlData.Add("l", ManaData.PlayerDoc.OuterXml); URLRequest.CreateURLRequest(NewBaseURL + "/user/save", urlData, SaveCallback, URLRequest.Method.POST); //URLRequest.CreateStrURLRequest(NewBaseURL + "/user/save", urlData, Debug.Log, URLRequest.Method.POST); } private static void SaveCallback(JsonData jsonData) { ManaDebug.Log("发送存档成功"); } public static void Other(string id, URLRequest.URLRequestJsonCallBackDelegate callback) { URLRequestData urlData = new URLRequestData(); urlData.Add("u", id); URLRequest.CreateURLRequest(BaseURL + "/user/other", urlData, callback, URLRequest.Method.POST); } public static void DownloadByID(string id, URLRequest.URLRequestJsonCallBackDelegate callback) { URLRequestData urlData = new URLRequestData(); urlData.Add("u", id); URLRequest.CreateURLRequest(BaseURL + "/user/load", urlData, callback, URLRequest.Method.POST); } public static void DownloadBySerialNumber(string serialNumber, URLRequest.URLRequestJsonCallBackDelegate callback) { URLRequestData urlData = new URLRequestData(); urlData.Add("u", serialNumber); URLRequest.CreateURLRequest(NewBaseURL + "/user/load", urlData, callback, URLRequest.Method.POST); } public static void RandomLoad(URLRequest.URLRequestJsonCallBackDelegate callback) { URLRequestData urlData = new URLRequestData(); urlData.Add("i", ""); URLRequest.CreateURLRequest(BaseURL + "/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(); } }