Example #1
0
        public Boolean ServerModCheck(int major, int minor, int fix)
        {
            if (this.ServerModVersion == null)
            {
                return(false);
            }

            String[] parts    = ServerModVersion.Split('.');
            int      verMajor = 0;
            int      verMinor = 0;
            int      verFix   = 0;

            if (parts.Length == 3)
            {
                Int32.TryParse(parts[0], out verMajor);
                Int32.TryParse(parts[1], out verMinor);
                Int32.TryParse(parts[2], out verFix);
            }
            else if (parts.Length == 2)
            {
                Int32.TryParse(parts[0], out verMajor);
                Int32.TryParse(parts[1], out verMinor);
            }
            else
            {
                return(false);
            }

            if (major == 0 && minor == 0 && verFix == 0)
            {
                return(false);
            }

            return((verMajor > major) || (verMajor >= major && verMinor > minor) || (verMajor >= major && verMinor >= minor && verFix >= fix));
        }
Example #2
0
 public static void checkForUpdates(bool sendMessageIfNone)
 {
     G.Sys.GameManager_.StartCoroutine(getUpdates(releases =>
     {
         try
         {
             var updates = new List <Dictionary <string, object> >();
             foreach (var release in releases)
             {
                 if (!(bool)release["draft"])
                 {
                     string releaseTag   = (string)release["tag_name"];
                     var releaseTagMatch = Regex.Match(releaseTag, updateCheckRemoteRegex);
                     if (releaseTagMatch.Success)
                     {
                         var version = new ServerModVersion(releaseTagMatch.Groups[1].Value);
                         if (version <= Entry.PluginVersion)
                         {
                             break;
                         }
                         updates.Add(release);
                     }
                 }
             }
             ///
             if (updates.Count == 0)
             {
                 if (sendMessageIfNone)
                 {
                     MessageUtilities.sendMessage("No updates to ServerMod available.");
                 }
             }
             else
             {
                 string printTxt = "";
                 printTxt       += ("[A0D0A0]There are updates for ServerMod available.[-]\n");
                 printTxt       += ("[00D000]You are on " + Entry.PluginVersion + "[-]\n");
                 printTxt       += ("[A0D0A0]Newer versions:[-]\n");
                 int preCount    = 0;
                 int count       = 0;
                 foreach (var release in updates)
                 {
                     string releaseTag   = (string)release["tag_name"];
                     var releaseTagMatch = Regex.Match(releaseTag, updateCheckRemoteRegex);
                     var version         = new ServerModVersion(releaseTagMatch.Groups[1].Value);
                     if (count == 3)
                     {
                         printTxt += ($"  [A0D0A0]and {updates.Count - count} more...[-]\n");
                         break;
                     }
                     bool prerelease = (bool)release["prerelease"];
                     if (prerelease && !showPrereleaseStatic)
                     {
                         preCount++;
                         continue;
                     }
                     string prereleaseText = (prerelease ? " [707070](pre-release)[-]" : "");
                     if (count == 0)
                     {
                         if (preCount > 0)
                         {
                             printTxt += ($"  [508050]({preCount} pre-releases)[-]\n");
                         }
                         printTxt      += ("  [00F000]" + version + "[-]" + prereleaseText + "\n");
                         string body    = (string)release["body"];
                         var outerMatch = Regex.Match(body, changesRegexOuter);
                         if (outerMatch.Success)
                         {
                             var innerMatches     = Regex.Matches(outerMatch.Groups[1].Value, changesRegexInner);
                             var releaseNoteCount = 0;
                             foreach (Match innerMatch in innerMatches)
                             {
                                 if (releaseNoteCount == 4)
                                 {
                                     if (innerMatches.Count > 4)
                                     {
                                         printTxt += ($"  and {innerMatches.Count - 4} more.\n");
                                     }
                                     break;
                                 }
                                 printTxt += ("  • " + innerMatch.Groups[1].Value + "\n");
                                 releaseNoteCount++;
                             }
                         }
                     }
                     else
                     {
                         printTxt += ("  [A0D0A0]" + version + "[-]" + prereleaseText + "\n");
                     }
                     count++;
                 }
                 if (preCount > 0 && count == 0)
                 {
                     MessageUtilities.sendMessage($"[508050]ServerMod: {preCount} pre-release updates available[-]");
                 }
                 else
                 {
                     MessageUtilities.sendMessage(printTxt.Substring(0, printTxt.Length - 1));
                 }
             }
         }
         catch (Exception e)
         {
             Console.WriteLine(e);
         }
     }));
 }
Example #3
0
 public ReleaseNotice(string version, string notes)
 {
     this.version = new ServerModVersion(version);
     this.notes   = notes;
 }