Ejemplo n.º 1
0
 private void PopulateModBrowser()
 {
     loading = true;
     SpecialModPackFilter      = null;
     SpecialModPackFilterTitle = null;
     reloadButton.SetText("Getting data...");
     SetHeading("Mod Browser");
     if (!uIPanel.HasChild(uILoader))
     {
         uIPanel.Append(uILoader);
     }
     modList.Clear();
     modListAll.Clear();
     modList.Deactivate();
     try
     {
         ServicePointManager.Expect100Continue = false;
         string url    = "http://javid.ddns.net/tModLoader/listmods.php";
         var    values = new NameValueCollection
         {
             { "modloaderversion", ModLoader.versionedName },
             { "platform", ModLoader.compressedPlatformRepresentation },
         };
         using (WebClient client = new WebClient())
         {
             ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return(true); });
             client.UploadValuesCompleted += new UploadValuesCompletedEventHandler(UploadComplete);
             client.UploadValuesAsync(new Uri(url), "POST", values);
         }
     }
     catch (WebException e)
     {
         if (e.Status == WebExceptionStatus.Timeout)
         {
             SetHeading("Mod Browser OFFLINE (Busy)");
             return;
         }
         if (e.Status == WebExceptionStatus.ProtocolError)
         {
             var resp = (HttpWebResponse)e.Response;
             if (resp.StatusCode == HttpStatusCode.NotFound)
             {
                 SetHeading("Mod Browser OFFLINE (404)");
                 return;
             }
             SetHeading("Mod Browser OFFLINE..");
             return;
         }
     }
     catch (Exception e)
     {
         ErrorLogger.LogModBrowserException(e);
         return;
     }
 }
Ejemplo n.º 2
0
 private void PopulateModBrowser()
 {
     loading = true;
     SpecialModPackFilter      = null;
     SpecialModPackFilterTitle = null;
     reloadButton.SetText(Language.GetTextValue("tModLoader.MBGettingData"));
     SetHeading(Language.GetTextValue("tModLoader.MenuModBrowser"));
     uIPanel.Append(uILoader);
     modList.Clear();
     items.Clear();
     modList.Deactivate();
     try
     {
         ServicePointManager.Expect100Continue = false;
         string url    = "http://javid.ddns.net/tModLoader/listmods.php";
         var    values = new NameValueCollection
         {
             { "modloaderversion", ModLoader.versionedName },
             { "platform", ModLoader.compressedPlatformRepresentation },
         };
         using (WebClient client = new WebClient())
         {
             ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return(true); });
             client.UploadValuesCompleted += new UploadValuesCompletedEventHandler(UploadComplete);
             client.UploadValuesAsync(new Uri(url), "POST", values);
         }
     }
     catch (WebException e)
     {
         ShowOfflineTroubleshootingMessage();
         if (e.Status == WebExceptionStatus.Timeout)
         {
             SetHeading(Language.GetTextValue("tModLoader.MenuModBrowser") + " " + Language.GetTextValue("tModLoader.MBOfflineWithReason", Language.GetTextValue("tModLoader.MBBusy")));
             return;
         }
         if (e.Status == WebExceptionStatus.ProtocolError)
         {
             var resp = (HttpWebResponse)e.Response;
             if (resp.StatusCode == HttpStatusCode.NotFound)
             {
                 SetHeading(Language.GetTextValue("tModLoader.MenuModBrowser") + " " + Language.GetTextValue("tModLoader.MBOfflineWithReason", resp.StatusCode));
                 return;
             }
             SetHeading(Language.GetTextValue("tModLoader.MenuModBrowser") + " " + Language.GetTextValue("tModLoader.MBOfflineWithReason", resp.StatusCode));
             return;
         }
     }
     catch (Exception e)
     {
         UIModBrowser.LogModBrowserException(e);
         return;
     }
 }
Ejemplo n.º 3
0
        public static void PopulateModBrowser(CustomMMHooker.orig_populatebrowser orig, object instance)
        {
            Object modBrowserInstance = ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.Interface")
                                        .GetField("modBrowser", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);

            ErrorLogger.Log(modBrowserInstance);
            ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser").GetField("loading").SetValue(modBrowserInstance, true);

            ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser").GetField("_specialModPackFilterTitle", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(modBrowserInstance, "");

            //StaticManager<Type>.GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser").GetField("_specialModPackFilterTitle", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(modBrowserInstance, null );
            UITextPanel <String> reloadButton = (UITextPanel <String>) ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser")
                                                .GetField("reloadButton", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(modBrowserInstance);

            reloadButton.SetText(Language.GetTextValue("tModLoader.MBGettingData"));

            MethodInfo SetHeading = ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser")
                                    .GetMethod("SetHeading", BindingFlags.Instance | BindingFlags.NonPublic);

            SetHeading.Invoke(modBrowserInstance, new object[] { Language.GetTextValue("tModLoader.MenuModBrowser") });
            UIPanel uiPanel = (UIPanel)ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser")
                              .GetField("uIPanel", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(modBrowserInstance);

            uiPanel.Append((UIElement)ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser")
                           .GetField("uILoader", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(modBrowserInstance));
            /*uIPanel.Append(uILoader);*/

            UIList modList = (UIList)ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser")
                             .GetField("modList").GetValue(modBrowserInstance);

            IList items = (IList)ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser")
                          .GetField("items", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly).GetValue(modBrowserInstance);

            items.Clear();
            modList.Deactivate();
            try
            {
                ServicePointManager.Expect100Continue = false;
                string url    = "http://javid.ddns.net/tModLoader/listmods.php";
                var    values = new NameValueCollection
                {
                    { "modloaderversion", TUA.tModLoaderVersion2 },
                    { "platform", ModLoader.compressedPlatformRepresentation },
                };
                using (WebClient client = new WebClient())
                {
                    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return(true); });
                    Type      eventType           = typeof(WebClient);
                    EventInfo UploadCompleteValue = eventType.GetEvent("UploadValuesCompleted");
                    Type      eventHandler        = UploadCompleteValue.EventHandlerType;

                    MethodInfo methodToMakeDelegate = ReflManager <Type> .GetItem("TMain").Assembly
                                                      .GetType("Terraria.ModLoader.UI.UIModBrowser").GetMethod("UploadComplete",
                                                                                                               BindingFlags.Public | BindingFlags.Instance);

                    ErrorLogger.Log("EventHandler : " + UploadCompleteValue);
                    ErrorLogger.Log("Method to add : " + methodToMakeDelegate);
                    Delegate d = Delegate.CreateDelegate(eventHandler, modBrowserInstance, methodToMakeDelegate);

                    MethodInfo addHandler     = UploadCompleteValue.GetAddMethod();
                    Object[]   addHandlerArgs = { d };
                    addHandler.Invoke(client, addHandlerArgs);
                    //client.UploadValuesCompleted += new UploadValuesCompletedEventHandler(d);
                    client.UploadValuesAsync(new Uri(url), "POST", values);
                }
            }
            catch (WebException e)
            {
                if (e.Status == WebExceptionStatus.Timeout)
                {
                    SetHeading.Invoke(modBrowserInstance, new object[] { Language.GetTextValue("tModLoader.MenuModBrowser") + " " + Language.GetTextValue("tModLoader.MBOfflineWithReason", Language.GetTextValue("tModLoader.MBBusy")) });
                    return;
                }
                if (e.Status == WebExceptionStatus.ProtocolError)
                {
                    var resp = (HttpWebResponse)e.Response;
                    if (resp.StatusCode == HttpStatusCode.NotFound)
                    {
                        SetHeading.Invoke(modBrowserInstance, new object[] { Language.GetTextValue("tModLoader.MenuModBrowser") + " " + Language.GetTextValue("tModLoader.MBOfflineWithReason", resp.StatusCode) });
                        return;
                    }
                    SetHeading.Invoke(modBrowserInstance, new object[] { Language.GetTextValue("tModLoader.MenuModBrowser") + " " + Language.GetTextValue("tModLoader.MBOfflineWithReason", resp.StatusCode) });
                    return;
                }
            }
            catch (Exception e)
            {
                Object[] obj = new object[] { e };

                typeof(ErrorLogger)
                .GetMethod("LogModBrowserException", BindingFlags.NonPublic | BindingFlags.Static)
                .Invoke(null, obj);
                return;
            }
        }