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;
 }
Example #3
0
 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;
 }
Example #6
0
        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);
        }
Example #7
0
        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;
            }
        }
Example #8
0
 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)));
 }