Exemplo n.º 1
0
        private static bool MaybeEnableLevel(string levelIdHash, Action <string, bool> log)
        {
            string disabledFilename = FindDisabledLevel(levelIdHash);

            if (disabledFilename == null)
            {
                return(false);
            }
            if (!DisableDifferentVersion(levelIdHash, log))
            {
                return(true); // abort
            }
            string orgFilename = MapHiddenMarkerRE.Replace(disabledFilename, "");

            try
            {
                File.Move(disabledFilename, orgFilename);
            }
            catch (Exception ex)
            {
                MenuManager.AddMpStatus("ENABLING " + Path.GetFileName(orgFilename) + " FAILED, " + ex.Message);
                return(false); // try download
            }
            AddMPLevel(orgFilename);
            if (FindLevelIndex(GetMPLevels(), levelIdHash) < 0)
            {
                log("ENABLING " + Path.GetFileName(orgFilename) + " FAILED, LEVEL NOT IN FILE", true); // not possible? would be bug in FindDisabledLevel
            }
            else
            {
                log("ENABLING " + Path.GetFileName(orgFilename) + " SUCCEEDED", false);
            }
            return(true);
        }
Exemplo n.º 2
0
        private static IEnumerable <string> LookupAndDownloadLevel(string levelIdHash)
        {
            var li = levelIdHash.IndexOf(".MP");

            MenuManager.AddMpStatus("SEARCHING " + levelIdHash.Substring(0, li), 1f, 9);
            string lastData = null;

            foreach (var x in NetworkMatch.Get("mpget", new Dictionary <string, string> {
                { "level", levelIdHash }
            }, "https://www.overloadmaps.com/api/"))
            {
                lastData = x;
                yield return(null);
            }
            JObject ret = null;

            try
            {
                ret = JObject.Parse(lastData);
            }
            catch (Exception ex)
            {
                Debug.Log(ex);
            }
            if (ret == null || !ret.TryGetValue("url", out JToken urlVal))
            {
                string msg = ret == null ? "OVERLOADMAPS.COM LOOKUP FAILED" : "LEVEL NOT FOUND ON OVERLOADMAPS.COM";
                Debug.Log(msg);
                MenuManager.AddMpStatus(msg, 2f, 9);
                yield return(msg);

                yield break;
            }

            string url = urlVal.GetString();
            var    i   = url.LastIndexOf('/');

            MenuManager.AddMpStatus("DOWNLOADING " + url.Substring(i + 1), 1f, 9);
            string lastMsg = null;

            foreach (var msg in MaybeDownloadLevel(url, levelIdHash))
            {
                if (msg != lastMsg)
                {
                    MenuManager.AddMpStatus(msg, 1f, 9);
                    lastMsg = msg;
                }
                yield return(msg);
            }
            Debug.Log("DoGetLevel last download status: " + lastMsg);
        }
 public static void UpdateLobbyStatus()
 {
     if (ProjDataExists)
     {
         MenuManager.AddMpStatus("USING CUSTOM PROJDATA FOR THIS MATCH", 1f, 21);
     }
     else
     {
         // Clear status 21 so it doesn't incorrectly persist between lobbies
         var idx = Array.IndexOf(MenuManager.m_mp_status_id, 21);
         if (idx >= 0)
         {
             MenuManager.m_mp_status_details[idx] = String.Empty;
             MenuManager.m_mp_status_flash[idx]   = 0f;
             MenuManager.m_mp_status_id[idx]      = -1;
         }
     }
 }
Exemplo n.º 4
0
 public static void UpdateLobbyStatus()
 {
     if (!MPModifiers.PlayerModifiersValid(Player.Mp_modifier1, Player.Mp_modifier2))
     {
         if (Array.IndexOf(MenuManager.m_mp_status_id, 20) == -1)
         {
             MenuManager.AddMpStatus("MODIFIER(S) DISALLOWED, CHECK CUSTOMIZE MENU", 1f, 20);
         }
     }
     else
     {
         var idx = Array.IndexOf(MenuManager.m_mp_status_id, 20);
         if (idx >= 0)
         {
             MenuManager.m_mp_status_details[idx] = String.Empty;
             MenuManager.m_mp_status_flash[idx]   = 0f;
             MenuManager.m_mp_status_id[idx]      = -1;
         }
     }
 }
Exemplo n.º 5
0
        private static IEnumerator DoGetLevel(string levelIdHash)
        {
            Debug.Log("DoGetLevel " + levelIdHash);

            string errMsg = null, lastMsg = null;

            if (MaybeEnableLevel(levelIdHash, (msg, isError) => { Debug.Log(msg); MenuManager.AddMpStatus(msg); if (isError)
                                                                  {
                                                                      errMsg = msg;
                                                                  }
                                 }))
            {
                if (errMsg != null)
                {
                    DownloadFailed(errMsg);
                    DownloadBusy = false;
                    yield break;
                }
            }
            else
            {
                foreach (var msg in LookupAndDownloadLevel(levelIdHash))
                {
                    lastMsg = msg;
                    yield return(null);
                }
            }
            if (Overload.NetworkManager.IsServer())
            {
                int idx = GameManager.MultiplayerMission.FindAddOnLevelNumByIdStringHash(levelIdHash);
                if (idx < 0)
                {
                    DownloadFailed(lastMsg); // if we don't have the level the last message was the error message
                }
                else
                {
                    typeof(NetworkMatch).GetField("m_match_force_playlist_level_idx", BindingFlags.NonPublic | BindingFlags.Static).SetValue(null, idx);
                }
            }
            DownloadBusy = false;
        }
Exemplo n.º 6
0
 private static void OnAddMpStatus(NetworkMessage msg)
 {
     MenuManager.AddMpStatus(msg.ReadMessage <StringMessage>().value);
 }