public ExtensionMenuEvent(ExtensionsMenuScreen screen, Rectangle rect, SpriteBatch sprite, Vector2 buttonPos) { ExtensionMenuScreen = screen; Rectangle = rect; SpriteBatch = sprite; ButtonPosition = buttonPos; }
private static void LoadButtons(ref V2 pos, ExtensionsMenuScreen ms) { foreach (var pair in Extension.Handler.ModExtensions) { pair.Value.Item3.Position = (Vec2)pos; pair.Value.Item3.OnUp += (sender) => { Extension.Handler.ActiveInfo = Extension.Handler.ModExtensions[pair.Key].Item1; ms.ExtensionInfoToShow = new PlaceholderExtensionInfo(Extension.Handler.ActiveInfo); Extension.Handler.ActiveExtension = ms.ExtensionInfoToShow; ms.ReportOverride = null; ms.SaveScreen.ProjectName = Extension.Handler.ActiveInfo.Name; SaveFileManager.Init(); ms.SaveScreen.ResetForNewAccount(); }; pos.Y += 55; } buttonsLoaded = true; }
public static void CreateNewAccountForExtensionAndStart(string username, string pass, ScreenManager sman, GameScreen currentScreen = null, ExtensionsMenuScreen extensionsScreen = null) { if (SaveFileManager.AddUser(username, pass)) { OS os = new OS(); string filePathForLogin = SaveFileManager.GetFilePathForLogin(username, pass); if (currentScreen != null) { currentScreen.ExitScreen(); } MainMenu.resetOS(); Settings.IsInExtensionMode = true; if (!Settings.soundDisabled) { sman.playAlertSound(); } os.SaveGameUserName = filePathForLogin; os.SaveUserAccountName = username; sman.AddScreen((GameScreen)os, new PlayerIndex?(sman.controllingPlayer)); } else if (extensionsScreen != null) { extensionsScreen.ShowError("Error Creating UserAccount for username :"******"Error auto-loading Extension " + Game1.AutoLoadExtensionPath; } }
public DrawExtensionMenuListEvent(ExtensionsMenuScreen screen, Vector2 drawpos, Rectangle rect, SpriteBatch sprite) : base(screen, rect, sprite, drawpos) { }
public DrawExtensionMenuEvent(ExtensionsMenuScreen screen, Rectangle rect, SpriteBatch sprite, ScreenManager manager, Vector2 buttonPos) : base(screen, rect, sprite, buttonPos) { ScreenManager = manager; }
private static bool ShowArbitraryWarning(ExtensionsMenuScreen __instance, ExtensionInfo info) { screen = __instance; if (approvedInfo == info) { approvedInfo = null; return(true); } approvedInfo = null; string[] dlls = null; try { dlls = Directory.GetFiles(Path.Combine(info.GetFullFolderPath(), "Plugins"), "*.dll", SearchOption.AllDirectories); } catch (DirectoryNotFoundException) { return(true); } List <string> warnings = new List <string>(); foreach (var dll in dlls) { try { using (var asm = AssemblyDefinition.ReadAssembly(dll)) { foreach (var plugin in asm.MainModule.Types) { if (!plugin.HasCustomAttributes) { continue; } var pluginInfo = plugin.CustomAttributes.FirstOrDefault(x => x.AttributeType.Name == "BepInPlugin"); if (pluginInfo != null) { warnings.Add( $"Plugin with the name \"{pluginInfo.ConstructorArguments[1].Value}\" from {Path.GetFileName(dll)}"); } } } } catch { warnings.Add($"Could not process DLL {dll}, it's possibly dangerous!"); } } if (warnings.Count == 0) { return(true); } needsApproval = info; messages = Utils.SuperSmartTwimForWidth( string.Join("\n", warnings), GuiData.spriteBatch.GraphicsDevice.Viewport.Width - 660, GuiData.tinyfont ); return(false); }
private static void DrawModExtensionInfo(SpriteBatch sb, ref Vector2 pos, Rectangle rect, ExtensionsMenuScreen ms) { if (Extension.Handler.ActiveInfo == null) { return; } sb.DrawString(GuiData.titlefont, Extension.Handler.ActiveInfo.Name.ToUpper(), pos, Utils.AddativeWhite * 0.66f); pos.Y += 80; var height = sb.GraphicsDevice.Viewport.Height; var num = 256; if (height < 900) { num = 120; } var dest2 = new Rectangle((int)pos.X, (int)pos.Y, num, num); var texture = ms.DefaultModImage; if (Extension.Handler.ModExtensions[Extension.Handler.ActiveInfo.Id].Item2 != null) { texture = Extension.Handler.ModExtensions[Extension.Handler.ActiveInfo.Id].Item2; } FlickeringTextEffect.DrawFlickeringSprite(sb, dest2, texture, 2f, 0.5f, null, Color.White); var position = pos + new Vector2(num + 40f, 20f); var num2 = rect.Width - (pos.X - rect.X); var description = Extension.Handler.ActiveInfo.Description; var text = Utils.SuperSmartTwimForWidth(description, (int)num2, GuiData.smallfont); sb.DrawString(GuiData.smallfont, text, position, Utils.AddativeWhite * 0.7f); pos = new Vector2(pos.X, pos.Y + num + 10); if (ms.IsInPublishScreen) { sb.DrawString(GuiData.font, "Mod Extensions don't support publishment on the workshop", new Vector2(300), Utils.AddativeWhite); if (tickWaits < -1) { tickWaits = 10000; } else if (tickWaits > -1) { --tickWaits; } else { ms.IsInPublishScreen = false; tickWaits = -2; } } else { if (ms.ReportOverride != null) { var text2 = Utils.SuperSmartTwimForWidth(ms.ReportOverride, 800, GuiData.smallfont); sb.DrawString(GuiData.smallfont, text2, pos + new Vector2(460f, 0f), (ms.ReportOverride.Length > 250) ? Utils.AddativeRed : Utils.AddativeWhite); } int num3 = 40; int num4 = 5; int num5 = Extension.Handler.ActiveInfo.AllowSaves ? 4 : 2; int num6 = height - (int)pos.Y - 55; num3 = Math.Min(num3, (num6 - num5 * num4) / num5); if (Gui.Button.doButton(7900010, (int)pos.X, (int)pos.Y, 450, num3, "New " + Extension.Handler.ActiveInfo.Name + " Account", MainMenu.buttonColor)) { state = EMSState.GetUsername; ms.SaveScreen.ResetForNewAccount(); } pos.Y += num3 + num4; if (Extension.Handler.ActiveInfo.AllowSaves) { bool flag = !string.IsNullOrWhiteSpace(SaveFileManager.LastLoggedInUser.FileUsername); if (Gui.Button.doButton(7900019, (int)pos.X, (int)pos.Y, 450, num3, flag ? ("Continue Account : " + SaveFileManager.LastLoggedInUser.Username) : " - No Accounts - ", flag ? MainMenu.buttonColor : Color.Black)) { OS.WillLoadSave = true; if (ms.LoadAccountForExtension_FileAndUsername != null) { ms.LoadAccountForExtension_FileAndUsername.Invoke(SaveFileManager.LastLoggedInUser.FileUsername, SaveFileManager.LastLoggedInUser.Username); } } pos.Y += num3 + num4; if (Gui.Button.doButton(7900020, (int)pos.X, (int)pos.Y, 450, num3, "Login...", flag ? MainMenu.buttonColor : Color.Black)) { state = EMSState.ShowAccounts; ms.SaveScreen.ResetForLogin(); } pos.Y += num3 + num4; } if (Gui.Button.doButton(7900030, (int)pos.X, (int)pos.Y, 450, num3, "Run Verification Tests", MainMenu.buttonColor)) { Logger.Info("Extension verification tests can not be performed on mod extensions"); } pos.Y += num3 + num4; if (Settings.AllowExtensionPublish && PlatformAPISettings.Running) { ms.IsInPublishScreen |= Gui.Button.doButton(7900031, (int)pos.X, (int)pos.Y, 450, num3, "Steam Workshop Publishing", MainMenu.buttonColor); pos.Y += num3 + num4; } if (Gui.Button.doButton(7900040, (int)pos.X, (int)pos.Y, 450, 25, "Back to Extension List", MainMenu.exitButtonColor)) { ms.ExtensionInfoToShow = null; Extension.Handler.ActiveInfo = null; } pos.Y += 30; } }
private static void DrawUserScreenModExtensionInfo(MainMenu m, SpriteBatch sb, Rectangle rect, ExtensionsMenuScreen ms) { ms.CreateNewAccountForExtension_UserAndPass = (n, p) => { OS.WillLoadSave = false; MainMenu.CreateNewAccountForExtensionAndStart(n, p, m.ScreenManager, m, ms); }; ms.LoadAccountForExtension_FileAndUsername = (userFile, username) => { m.ExitScreen(); MainMenu.resetOS(); OS.WillLoadSave = SaveFileManager.StorageMethods[0].FileExists(userFile); var o = new OS { SaveGameUserName = userFile, SaveUserAccountName = username }; m.ScreenManager.AddScreen(o); }; ms.SaveScreen.Draw(sb, new Rectangle(rect.X, rect.Y + rect.Height / 4, rect.Width, (int)(rect.Height * 0.8f))); }