public override LevelFilterResult FromChatString(string chatString, string option) { GameModeID gameMode = GameModeID.None; if (modes.TryGetValue(chatString.ToLower().Trim(), out gameMode)) { return(new LevelFilterResult(new LevelFilterMode(gameMode))); } else { return(new LevelFilterResult($"{chatString.ToLower().Trim()} is not a valid game mode.")); } }
public LevelSet GetLevelSet(GameModeID gamemode = GameModeID.Nexus, bool sprint = false) { LevelSet set = new LevelSet() { gameModeID_ = gamemode }; foreach (var level in Levels) { if (sprint && level.hide_in_sprint) { continue; } string file = level.file.NormPath(true); set.AddLevel(file, file, LevelType.Official); } return(set); }
void SetCategoryInfo() { if (category == "Adventure") { firstLevel = "Broken Symmetry"; lastLevel = "Credits"; requiresMenuing = new string[0]; categoryMode = GameModeID.Adventure; } else if (category == "Sprint SS") { firstLevel = "Broken Symmetry"; lastLevel = "The Manor"; requiresMenuing = new string[0]; categoryMode = GameModeID.Sprint; } else if (category == "Challenge SS") { firstLevel = "Dodge"; lastLevel = "Elevation"; requiresMenuing = new string[0]; categoryMode = GameModeID.Challenge; } else if (category == "All Arcade Levels") { firstLevel = "Broken Symmetry"; lastLevel = "Elevation"; requiresMenuing = new string[] { "The Manor" }; categoryMode = GameModeID.Sprint; } else if (category == "All Levels") { firstLevel = "Broken Symmetry"; lastLevel = "Elevation"; requiresMenuing = new string[] { "Credits", "The Manor" }; categoryMode = GameModeID.Adventure; } }
public LevelFilterMode(GameModeID gameMode) { this.gameMode = gameMode; }
public static void Postfix(ref bool __result, GameModeID ID) { __result |= Modes.Contains(ID); }
public static string formatLevelInfoText(LevelNameAndPathPair level, GameModeID mode, int index, string levelInfoText) { var resText = levelInfoText; var success = GeneralUtilities.logExceptions(() => { bool isPointsMode = G.Sys.GameManager_.Mode_ is PointsBasedMode; var levelSetsManager = G.Sys.LevelSets_; var levelInfo = levelSetsManager.GetLevelInfo(level.levelPath_); WorkshopLevelInfo workshopLevelInfo = null; if (SteamworksManager.IsSteamBuild_) { G.Sys.SteamworksManager_.UGC_.TryGetWorkshopLevelData(levelInfo.relativePath_, out workshopLevelInfo); } resText = resText .Replace("%NAME%", levelInfo.levelName_) .Replace("%DIFFICULTY%", levelInfo.difficulty_.ToString()) .Replace("%AUTHOR%", getAuthorName(levelInfo)) .Replace("%MODE%", mode.ToString()) .Replace("%INDEX%", index.ToString()); if (levelInfo.SupportsMedals(mode)) { resText = resText .Replace("%MBRONZE%", levelInfo.GetMedalRequirementString(MedalStatus.Bronze, isPointsMode)) .Replace("%MSILVER%", levelInfo.GetMedalRequirementString(MedalStatus.Silver, isPointsMode)) .Replace("%MGOLD%", levelInfo.GetMedalRequirementString(MedalStatus.Gold, isPointsMode)) .Replace("%MDIAMOND%", levelInfo.GetMedalRequirementString(MedalStatus.Diamond, isPointsMode)); } else { resText = resText .Replace("%MBRONZE%", "None") .Replace("%MSILVER%", "None") .Replace("%MGOLD%", "None") .Replace("%MDIAMOND%", "None"); } if (workshopLevelInfo != null) { resText = resText .Replace("%STARS%", SteamworksUGC.GetWorkshopRatingText(workshopLevelInfo)) .Replace("%STARSINT%", ((int)(workshopLevelInfo.voteScore_ / 0.2f + 0.5f)).ToString()) .Replace("%STARSDEC%", (workshopLevelInfo.voteScore_ / 0.2f).ToString("F2")) .Replace("%STARSPCT%", ((int)(workshopLevelInfo.voteScore_ * 100f)).ToString()) .Replace("%CREATED%", GeneralUtilities.ConvertFromUnixTimestamp(workshopLevelInfo.timeCreated_).ToString("d", CultureInfo.CurrentCulture)) .Replace("%UPDATED%", GeneralUtilities.ConvertFromUnixTimestamp(workshopLevelInfo.timeUpdated_).ToString("d", CultureInfo.CurrentCulture)); } else { resText = resText .Replace("%STARS%", "None") .Replace("%STARSINT%", "X") .Replace("%STARSDEC%", "X") .Replace("%STARSPCT%", "X") .Replace("%CREATED%", "") .Replace("%UPDATED%", ""); } var replacements = Cmds.Cmd.all.getCommand <Cmds.LevelCmd>().levelFormatReplacements; foreach (var pair in replacements) { try { resText = Regex.Replace(resText, pair.Key, pair.Value); } catch (ArgumentException) { Console.WriteLine($"Invalid regex replace ({pair.Key}) => ({pair.Value}). You can test your regex at regex101.com."); MessageUtilities.sendMessage(GeneralUtilities.localClient(), $"Invalid regex replace ({pair.Key}) => ({pair.Value}).\nYou can test your regex at regex101.com."); } } }); if (!success) { logExceptions(() => { MessageUtilities.sendMessage(GeneralUtilities.localClient(), "Please check your console and report the level format debug info to a ServerMod developer."); Console.WriteLine("Level format debug info:"); Console.WriteLine($" produced string: {resText}"); Console.WriteLine($" level: {level}; {level?.levelName_}; {level?.levelPath_}"); Console.WriteLine($" mode: {mode};"); Console.WriteLine($" index: {index};"); Console.WriteLine($" levelInfoText: {levelInfoText};"); Console.WriteLine($" G.Sys.GameManager_.Mode_: {G.Sys?.GameManager_?.Mode_};"); Console.WriteLine($" G.Sys.LevelSets_: {G.Sys?.LevelSets_};"); var levelSetsManager = G.Sys?.LevelSets_; var levelInfo = levelSetsManager?.GetLevelInfo(level.levelPath_); Console.WriteLine($" levelInfo: {levelInfo};"); WorkshopLevelInfo workshopLevelInfo = null; if (SteamworksManager.IsSteamBuild_) { G.Sys.SteamworksManager_.UGC_.TryGetWorkshopLevelData(levelInfo.relativePath_, out workshopLevelInfo); } Console.WriteLine($" workshopLevelInfo: {workshopLevelInfo};"); }); } return(resText); }