Esempio n. 1
0
        internal static bool Draw(ref OptionsMenu __instance, GameTime gameTime)
        {
            if (!isInPathfinderMenu)
            {
                return(true);
            }

            PostProcessor.begin();
            GuiData.startDraw();
            PatternDrawer.draw(new Rectangle(0, 0, __instance.ScreenManager.GraphicsDevice.Viewport.Width, __instance.ScreenManager.GraphicsDevice.Viewport.Height), 0.5f, Color.Black, new Color(2, 2, 2), GuiData.spriteBatch);

            if (ReturnButton.Do())
            {
                currentTabName     = null;
                isInPathfinderMenu = false;
                GuiData.endDraw();
                PostProcessor.end();
                var saveEvent = new CustomOptionsSaveEvent();
                EventManager <CustomOptionsSaveEvent> .InvokeAll(saveEvent);

                return(false);
            }

            var tabs = OptionsManager.Tabs;

            int tabX = 10;

            foreach (var tab in tabs.Values)
            {
                if (currentTabName == null)
                {
                    currentTabName = tab.Name;
                }
                var active = currentTabName == tab.Name;
                // Display tab button
                if (Button.doButton(tab.ButtonID, tabX, 70, 128, 20, tab.Name, active ? Color.Green : Color.Gray))
                {
                    currentTabName = tab.Name;
                    break;
                }
                tabX += 128 + 10;

                if (currentTabName != tab.Name)
                {
                    continue;
                }

                // Display options
                int optX = 80, optY = 110;
                foreach (var option in tab.Options)
                {
                    option.Draw(optX, optY);
                    optY += 10 + option.SizeY;
                }
            }

            GuiData.endDraw();
            PostProcessor.end();
            return(false);
        }
Esempio n. 2
0
        public UserControl1()
        {
            InitializeComponent();
            var path    = @"..\..\..\Samples\RHCP_GiveItAway1.drumz.pat.json";
            var pattern = Drumz.Common.Beats.IO.PatternIO.Load(path);

            bpm = pattern.Info.SuggestedBpm;
            var settings = new GridDrawer.Settings {
                BeatWidth = 64, FontSize = 20, LineHeight = 24
            };

            patternDrawer = new PatternDrawer(pattern, settings, 2);
            playAnalysis  = new PlayAnalysisSession(new PlayAnalysisSession.Settings(), pattern);
            foreach (var sound in pattern.Sounds.Sounds)
            {
                char key = sound.Instrument.Name[0];
                while (instrumentKeys.ContainsKey(key))
                {
                    ++key;
                }
                instrumentKeys.Add(key, sound);
            }
            playAnalysis.NewPlayedBeat       += patternDrawer.AddPlayedBeat;
            playAnalysis.PlayedBeatStatusSet += patternDrawer.SetPlayedBeatStatus;
            playAnalysis.Tick += PlayAnalysis_Tick;
            Drumz.Common.Diagnostics.Logger.Instance.Log += Instance_Log;
        }
Esempio n. 3
0
 public override void Draw(float t)
 {
     base.Draw(t);
     this.spriteBatch.Draw(Utils.white, this.infoBar, this.userScreen.indentBackgroundColor);
     this.infoBarUsedRam.Width = (int)((float)this.infoBar.Width * (1f - 800 - (OS.TOP_BAR_HEIGHT + 2) / (float)800 - (OS.TOP_BAR_HEIGHT + 2)));
     this.spriteBatch.Draw(Utils.white, this.infoBarUsedRam, RamModule.USED_RAM_COLOR);
     this.spriteBatch.DrawString(GuiData.detailfont, "hello", new Vector2((float)this.infoBar.X, (float)this.infoBar.Y), Color.White);
     if (this.OutOfMemoryFlashTime > 0f)
     {
         float scale        = System.Math.Min(1f, this.OutOfMemoryFlashTime);
         float amount       = System.Math.Max(0f, this.OutOfMemoryFlashTime - (RamModule.FLASH_TIME - 1f));
         Color patternColor = Color.Lerp(this.userScreen.lockedColor, Utils.AddativeRed, amount) * scale;
         PatternDrawer.draw(this.bounds, 0f, Color.Transparent, patternColor, this.spriteBatch, PatternDrawer.errorTile);
         int       num       = 40;
         Rectangle rectangle = new Rectangle(this.bounds.X, this.bounds.Y + this.bounds.Height - num - 1, this.bounds.Width, num);
         this.spriteBatch.Draw(Utils.white, Utils.InsetRectangle(rectangle, 4), Color.Black * 0.75f);
         rectangle.X--;
         string text = " ^ " + LocaleTerms.Loc("INSUFFICIENT MEMORY") + " ^ ";
         Hacknet.Gui.TextItem.doFontLabelToSize(rectangle, text, GuiData.font, Color.Black * scale, false, false);
         rectangle.X += 2;
         Hacknet.Gui.TextItem.doFontLabelToSize(rectangle, text, GuiData.font, Color.Black * scale, false, false);
         rectangle.X--;
         Hacknet.Gui.TextItem.doFontLabelToSize(rectangle, text, GuiData.font, Color.White * scale, false, false);
     }
 }
        public static void RenderAltitudeIndicator(Rectangle dest, SpriteBatch sb, int currentAltitude, bool IsInCriticalDescenet, bool IconFlashIsVisible, int maxAltitude = 50000, int upperReccomended = 40000, int lowerReccomended = 30000, int warningArea = 14000, int criticalFailureArea = 3000)
        {
            if (AircraftAltitudeIndicator.WarningIcon == null)
            {
                AircraftAltitudeIndicator.Init(OS.currentInstance.content);
            }
            bool flag = currentAltitude <= 0;

            if (flag)
            {
                currentAltitude = maxAltitude;
            }
            int       width1 = Math.Min(dest.Width, 100);
            Rectangle destinationRectangle1 = new Rectangle(dest.X + dest.Width - width1, dest.Y, width1, dest.Height);
            int       width2    = 200;
            Rectangle dest1     = new Rectangle(dest.X + dest.Width - width2, destinationRectangle1.Y, width2, 21);
            Color     color     = IsInCriticalDescenet ? Utils.AddativeRed : OS.currentInstance.highlightColor;
            Rectangle rectangle = destinationRectangle1;

            rectangle.Width = width1 / 2;
            rectangle.X     = dest.X + dest.Width - rectangle.Width;
            sb.Draw(Utils.gradientLeftRight, rectangle, color * 0.2f);
            int heightForAltitude = AircraftAltitudeIndicator.GetHeightForAltitude(currentAltitude, maxAltitude, rectangle);

            destinationRectangle1.Y      += heightForAltitude;
            destinationRectangle1.Height -= heightForAltitude;
            sb.Draw(Utils.gradientLeftRight, destinationRectangle1, color);
            AircraftAltitudeIndicator.DrawIndicatorForAltitude(dest1, maxAltitude, LocaleTerms.Loc("Maximum Altitude"), maxAltitude, rectangle, sb, color, true, true);
            AircraftAltitudeIndicator.DrawIndicatorForAltitude(dest1, upperReccomended, LocaleTerms.Loc("Maximum Cruising Altitude"), maxAltitude, rectangle, sb, color, false, false);
            AircraftAltitudeIndicator.DrawIndicatorForAltitude(dest1, lowerReccomended, LocaleTerms.Loc("Minimum Cruising Altitude"), maxAltitude, rectangle, sb, color, false, false);
            AircraftAltitudeIndicator.DrawIndicatorForAltitude(dest1, warningArea, LocaleTerms.Loc("Unsafe Altitude Margin"), maxAltitude, rectangle, sb, color, false, false);
            dest1.Height *= 2;
            AircraftAltitudeIndicator.DrawIndicatorForAltitude(dest1, criticalFailureArea, LocaleTerms.Loc("Critical Failure Region") + "\n- " + LocaleTerms.Loc("POINT OF NO RETURN") + " -", maxAltitude, rectangle, sb, Utils.makeColorAddative(color), true, false);
            dest1 = new Rectangle(dest1.X - 20, dest1.Y, dest1.Width + 20, dest1.Height + 10);
            AircraftAltitudeIndicator.DrawIndicatorForAltitude(dest1, currentAltitude, flag ? LocaleTerms.Loc("CRITICAL ERROR") + "\n" + LocaleTerms.Loc("SIGNAL LOST") : LocaleTerms.Loc("Current Altitude") + "\n" + string.Format("{0}ft", (object)currentAltitude), maxAltitude, rectangle, sb, color, true, false);
            int       num  = dest1.Height - 4;
            Rectangle rect = new Rectangle(dest1.X - num - 4, dest1.Y + AircraftAltitudeIndicator.GetHeightForAltitude(currentAltitude, maxAltitude, rectangle), num, num);
            Rectangle destinationRectangle2 = new Rectangle(dest1.X - num - 4, rect.Y, num + 4, dest1.Height);

            if (currentAltitude < lowerReccomended)
            {
                PatternDrawer.draw(new Rectangle(destinationRectangle2.X, destinationRectangle2.Y, destinationRectangle2.Width + dest1.Width, destinationRectangle2.Height), 0.2f, Color.Transparent, Color.Red * 0.2f, sb);
            }
            sb.Draw(Utils.white, destinationRectangle2, Color.Black * 0.4f);
            destinationRectangle2.Height = 1;
            sb.Draw(Utils.white, destinationRectangle2, color);
            rect.Y += 2;
            rect.X += 2;
            Rectangle destinationRectangle3 = Utils.InsetRectangle(rect, 4);

            if (IsInCriticalDescenet)
            {
                sb.Draw(AircraftAltitudeIndicator.WarningIcon, destinationRectangle3, Color.Red * (IconFlashIsVisible ? 1f : 0.3f));
            }
            else
            {
                sb.Draw(AircraftAltitudeIndicator.PlaneIcon, destinationRectangle3, color);
            }
        }
Esempio n. 5
0
        public void Draw(Rectangle dest, SpriteBatch sb)
        {
            if (!IsActive)
            {
                return;
            }
            var num1 = timeElapsed;

            if (timeElapsed > 5.5)
            {
                num1 -= 5.5f;
            }
            if (num1 <= 0.5 && num1 % 0.100000001490116 < 0.0500000007450581)
            {
                return;
            }
            var height1 = 120;
            var num2    = timeElapsed / 6.0;
            var num3    = 1f;
            var num4    = 0.2f;

            if (timeElapsed < (double)num4)
            {
                num3    = timeElapsed / num4;
                height1 = (int)(height1 * (timeElapsed / (double)num4));
            }
            else if (timeElapsed > 6.0 - num4)
            {
                var num5 = (float)(1.0 - (timeElapsed - (6.0 - num4)));
                num3    = num5;
                height1 = (int)(height1 * (double)num5);
            }
            var destinationRectangle = new Rectangle(dest.X, dest.Y + dest.Height / 2 - height1 / 2, dest.Width, height1);

            sb.Draw(Utils.white, destinationRectangle, Color.Black * 0.9f * num3);
            var text1   = "INCOMING CONNECTION";
            var text2   = "External unsyndicated UDP traffic on port 22\nLogging all activity to ~/log";
            var num6    = dest.Width / 3;
            var height2 = (int)(24.0 * num3);
            var dest1   = new Rectangle(destinationRectangle.X, destinationRectangle.Y, destinationRectangle.Width,
                                        height2);

            PatternDrawer.draw(dest1, 1f, Color.Transparent, DrawColor, sb, PatternDrawer.warningStripe);
            dest1.Y += height1 - height2;
            PatternDrawer.draw(dest1, 1f, Color.Transparent, DrawColor, sb, PatternDrawer.warningStripe);
            var width1     = 700;
            var rectangle1 = new Rectangle(destinationRectangle.X + destinationRectangle.Width / 2 - width1 / 2,
                                           destinationRectangle.Y, width1, destinationRectangle.Height);
            var width2     = (int)(CautionSign.Width / (double)CautionSign.Height * height1);
            var rectangle2 = new Rectangle(rectangle1.X, rectangle1.Y, width2, height1);

            rectangle2 = Utils.InsetRectangle(rectangle2, -30);
            sb.Draw(CautionSignBG, rectangle2, Color.Black * num3);
            var num7 = 4;

            rectangle2 = new Rectangle(rectangle2.X + num7, rectangle2.Y + num7, rectangle2.Width - num7 * 2,
                                       rectangle2.Height - num7 * 2);
            sb.Draw(CautionSign, rectangle2,
                    Color.Lerp(Color.Red, DrawColor, (float)(0.949999988079071 + 0.0500000007450581 * Utils.rand())));
            var dest2 = new Rectangle(rectangle1.X + rectangle2.Width + 2 * num7 - 18, rectangle1.Y + 4,
                                      rectangle1.Width - (rectangle2.Width + num7 * 2) + 20, (int)(rectangle1.Height * 0.8));

            TextItem.doFontLabelToSize(dest2, text1, GuiData.titlefont, DrawColor);
            dest2.Y     += dest2.Height - 27;
            dest2.Height = (int)(rectangle1.Height * 0.2);
            TextItem.doFontLabelToSize(dest2, text2, GuiData.detailfont, DrawColor * num3);
        }
Esempio n. 6
0
        private void doIRCModule()
        {
            var       sb   = spriteBatch;
            Rectangle dest = Utils.InsetRectangle(bounds, 2);
            Rectangle destinationRectangle = new Rectangle(dest.X, dest.Y - 1, 18, dest.Height + 2);

            sb.Draw(Utils.white, destinationRectangle, userScreen.moduleColorSolid);
            destinationRectangle.X     += destinationRectangle.Width / 2;
            destinationRectangle.Width /= 2;
            sb.Draw(Utils.white, destinationRectangle, Color.Black * 0.2f);
            dest.X     += 20;
            dest.Width -= 25;
            Rectangle rectangle = new Rectangle(dest.X + 4, dest.Y, dest.Width, 35);

            Hacknet.Gui.TextItem.doFontLabelToSize(rectangle, "Interweb Remote Com", GuiData.font, Color.White, true, true);
            int num  = dest.Width / 4;
            int num2 = 22;

            if (Hacknet.Gui.Button.doButton(37849102, rectangle.X + rectangle.Width - 6 - num, rectangle.Y + rectangle.Height - rectangle.Height / 2 - num2 / 2, num, num2, LocaleTerms.Loc("Exit IRC"), userScreen.moduleColorSolid))
            {
                this.userScreen.Execute("daemon exit");
                this.state = DisplayState.SSH_SESSION;
            }
            rectangle.Y     += rectangle.Height;
            rectangle.X     -= 6;
            dest.Y          += rectangle.Height;
            dest.Height     -= rectangle.Height;
            rectangle.Height = 2;
            sb.Draw(Utils.white, rectangle, userScreen.moduleColorSolid);
            dest.Y      += rectangle.Height + 2;
            dest.Height -= rectangle.Height + 2;
            dest.Height -= 6;
            PatternDrawer.draw(dest, 0.22f, Color.Black * 0.5f, /*flag ?*/ (userScreen.moduleColorSolid * 0.12f) /*: (Utils.AddativeRed * 0.2f)*/, sb, /*flag ? */ PatternDrawer.thinStripe /*: PatternDrawer.warningStripe*/);
            dest.X      += 2;
            dest.Width  -= 4;
            dest.Height -= 4;
            //if (flag)
            //{
            var messages = ((IrcState)userScreen.activeSession.GetState()).GetMessages();

            int _num  = (int)(GuiData.ActiveFontConfig.tinyFontCharHeight + 4f);
            int _num2 = 4;
            int _num3 = (int)((float)dest.Height / (float)_num);
            int _num4 = _num3;
            int _num5 = messages.Count - 1;
            int _num6 = 0;
            int y     = dest.Y;

            while (_num4 > 0 && _num5 >= 0 && dest.Height - _num6 > _num)
            {
                //bool needsNewMessagesLineDraw = this.messagesAddedSinceLastView > 0 && this.messagesAddedSinceLastView < logsFromFile.Count && logsFromFile.Count - num5 == this.messagesAddedSinceLastView;
                _num4  -= this.DrawIRCMessage(messages[_num5], dest, _num, _num4, y /*, needsNewMessagesLineDraw,*/, out dest);
                dest.Y -= _num2;
                _num6  += _num2;
                _num5--;
            }
            if (_num5 <= -1 && _num4 > 1)
            {
                int        _num7      = _num + 8;
                Rectangle  _rectangle = new Rectangle(dest.X, dest.Y + dest.Height - _num7, dest.Width, _num7);
                SpriteFont tinyfont   = GuiData.tinyfont;
                //string text = "--- " + LocaleTerms.Loc("Log Cleared by Administrator") + " ---";
                //Vector2 vector = tinyfont.MeasureString(text);
                //sb.DrawString(tinyfont, text, Utils.ClipVec2ForTextRendering(new Vector2((float)rectangle.X + (float)rectangle.Width / 2f - vector.X / 2f, (float)rectangle.Y + (float)rectangle.Height / 2f - vector.Y / 2f)), Color.Gray);
            }
            //}

            /*else
             * {
             *  int num3 = dest.Height / 4;
             *  Rectangle rectangle2 = new Rectangle(dest.X - 4, dest.Y + dest.Height / 2 - num3 / 2, dest.Width + 6, num3);
             *  sb.Draw(Utils.white, rectangle2, this.userScreen.lockedColor);
             *  rectangle2.Height -= 35;
             *  Hacknet.Gui.TextItem.doCenteredFontLabel(rectangle2, LocaleTerms.Loc("Login To Server"), GuiData.font, Color.White, false);
             *  if (Hacknet.Gui.Button.doButton(84109551, rectangle2.X + rectangle2.Width / 2 - rectangle2.Width / 4, rectangle2.Y + rectangle2.Height - 32, rectangle2.Width / 2, 28, "Login", null))
             *  {
             *      this.userScreen.Execute("login");
             *  }
             * //}*/
        }
Esempio n. 7
0
        public void Draw(Rectangle dest, SpriteBatch sb)
        {
            if (!this.IsActive)
            {
                return;
            }
            float timeElapsed = this.timeElapsed;

            if ((double)this.timeElapsed > 5.5)
            {
                timeElapsed -= 5.5f;
            }
            if ((double)timeElapsed <= 0.5 && (double)timeElapsed % 0.100000001490116 < 0.0500000007450581)
            {
                return;
            }
            int   height1 = 120;
            float num1    = this.timeElapsed / 6f;
            float num2    = 1f;
            float num3    = 0.2f;

            if ((double)this.timeElapsed < (double)num3)
            {
                num2    = this.timeElapsed / num3;
                height1 = (int)((double)height1 * ((double)this.timeElapsed / (double)num3));
            }
            else if ((double)this.timeElapsed > 6.0 - (double)num3)
            {
                float num4 = (float)(1.0 - ((double)this.timeElapsed - (6.0 - (double)num3)));
                num2    = num4;
                height1 = (int)((double)height1 * (double)num4);
            }
            Rectangle destinationRectangle = new Rectangle(dest.X, dest.Y + dest.Height / 2 - height1 / 2, dest.Width, height1);

            sb.Draw(Utils.white, destinationRectangle, Color.Black * 0.9f * num2);
            string    text1   = "INCOMING CONNECTION";
            string    text2   = "External unsyndicated UDP traffic on port 22\nLogging all activity to ~/log";
            int       num5    = dest.Width / 3;
            int       height2 = (int)(24.0 * (double)num2);
            Rectangle dest1   = new Rectangle(destinationRectangle.X, destinationRectangle.Y, destinationRectangle.Width, height2);

            PatternDrawer.draw(dest1, 1f, Color.Transparent, IncomingConnectionOverlay.DrawColor, sb, PatternDrawer.warningStripe);
            dest1.Y += height1 - height2;
            PatternDrawer.draw(dest1, 1f, Color.Transparent, IncomingConnectionOverlay.DrawColor, sb, PatternDrawer.warningStripe);
            int       width1     = 700;
            Rectangle rectangle1 = new Rectangle(destinationRectangle.X + destinationRectangle.Width / 2 - width1 / 2, destinationRectangle.Y, width1, destinationRectangle.Height);
            int       width2     = (int)((double)this.CautionSign.Width / (double)this.CautionSign.Height * (double)height1);
            Rectangle rectangle2 = new Rectangle(rectangle1.X, rectangle1.Y, width2, height1);

            rectangle2 = Utils.InsetRectangle(rectangle2, -30);
            sb.Draw(this.CautionSignBG, rectangle2, Color.Black * num2);
            int num6 = 4;

            rectangle2 = new Rectangle(rectangle2.X + num6, rectangle2.Y + num6, rectangle2.Width - num6 * 2, rectangle2.Height - num6 * 2);
            sb.Draw(this.CautionSign, rectangle2, Color.Lerp(Color.Red, IncomingConnectionOverlay.DrawColor, (float)(0.949999988079071 + 0.0500000007450581 * (double)Utils.rand())));
            Rectangle dest2 = new Rectangle(rectangle1.X + rectangle2.Width + 2 * num6 - 18, rectangle1.Y + 4, rectangle1.Width - (rectangle2.Width + num6 * 2) + 20, (int)((double)rectangle1.Height * 0.8));

            TextItem.doFontLabelToSize(dest2, text1, GuiData.titlefont, IncomingConnectionOverlay.DrawColor, false, false);
            dest2.Y     += dest2.Height - 27;
            dest2.Height = (int)((double)rectangle1.Height * 0.2);
            TextItem.doFontLabelToSize(dest2, text2, GuiData.detailfont, IncomingConnectionOverlay.DrawColor * num2, false, false);
        }
Esempio n. 8
0
        public override void Draw(GameTime gameTime)
        {
            base.Draw(gameTime);
            PostProcessor.begin();
            ScreenManager.FadeBackBufferToBlack(255);
            GuiData.startDraw();
            PatternDrawer.draw(new Rectangle(0, 0, ScreenManager.GraphicsDevice.Viewport.Width, ScreenManager.GraphicsDevice.Viewport.Height), 0.5f, Color.Black, new Color(2, 2, 2), GuiData.spriteBatch);
            if (Button.doButton("Back".GetHashCode(), 10, 10, 220, 30, "<- " + LocaleTerms.Loc("Back"), Color.Gray))
            {
                if (IsChange && !Saved)
                {
                    ScreenManager.AddScreen(MessageBox_NeedSave, ScreenManager.controllingPlayer);
                }
                SettingsLoader.writeStatusFile();
                ExitScreen();
            }
            if (Button.doButton("Save".GetHashCode(), 10, 45, 220, 30, "ModsCore.Mods.Save".Translate(), Color.Blue))
            {
                Save();
            }

            TextItem.doLabel(new Vector2(75, 100), $"Mods ({"ModsCore.Mods.Activate".Translate()})", null, 300);

            //打开了Setting界面不允许修改选定的Mod
            if (OpenSettingUI)
            {
                SelectableTextList.doFancyList(25, 50, 140, 300, ScreenManager.GraphicsDevice.Viewport.Height - 190, m_ActivatedMods.ToArray(), currentActMods, Color.White);
            }
            else
            {
                currentActMods = SelectableTextList.doFancyList(25, 50, 140, 300, ScreenManager.GraphicsDevice.Viewport.Height - 50, m_ActivatedMods.ToArray(), currentActMods, Color.White);
            }

            if (OpenSettingUI && Button.doButton("CloseSettingUI".GetHashCode(), 400, 210, 150, 30, "ModsCore.Mods.CloseSettingUI".Translate(), Color.BlueViolet))
            {
                OpenSettingUI = false;
            }
            if (currentActMods > 0 && Button.doButton("Up".GetHashCode(), 400, 250, 150, 30, "ModsCore.Mods.Up".Translate(), Color.BlueViolet))
            {
                MoveUp();
                IsChange = true;
                Saved    = false;
            }
            if (currentActMods >= 0 && currentActMods != m_ActivatedMods.Count - 1 && Button.doButton("Down".GetHashCode(), 400, 290, 150, 30, "ModsCore.Mods.Down".Translate(), Color.BlueViolet))
            {
                MoveDown();
                IsChange = true;
                Saved    = false;
            }
            if (!OpenSettingUI && currentActMods != -1 && Button.doButton("OpenSettingUI".GetHashCode(), 400, 210, 150, 30, "ModsCore.Mods.OpenSettingUI".Translate(), Color.BlueViolet))
            {
                OpenSettingUI = true;
            }

            if (currentActMods >= 0 && Button.doButton("DeactivateMod".GetHashCode(), 400, 330, 150, 30, "ModsCore.Mods.DeactivateMod".Translate(), Color.BlueViolet))
            {
                IsChange = true;
                Saved    = false;
                m_DeactivatedMods.Add(m_ActivatedMods[currentActMods]);
                m_DeactDicModModEntries.Add(m_ActivatedMods[currentActMods].GetHashCode(), m_ActDicModEntries[m_ActivatedMods[currentActMods].GetHashCode()]);
                m_ActDicModEntries.Remove(m_ActivatedMods[currentActMods].GetHashCode());
                m_ActivatedMods.RemoveAt(currentActMods);

                ModManager.ModsConfig ModsConfig = (ModManager.ModsConfig)ModsConfig_FieldInfo.GetValue(new ModManager());
                ModsConfig.EnabledMod.RemoveAt(currentActMods);
                ModsConfig_FieldInfo.SetValue(null, ModsConfig);
                currentDeactMods = m_DeactivatedMods.Count - 1;
                currentActMods   = -1;
            }

            if (!OpenSettingUI && currentDeactMods >= 0 && Button.doButton("ActivateMod".GetHashCode(), 400, 370, 150, 30, "ModsCore.Mods.ActivateMod".Translate(), Color.BlueViolet))
            {
                IsChange = true;
                Saved    = false;
                m_ActivatedMods.Add(m_DeactivatedMods[currentDeactMods]);
                m_ActDicModEntries.Add(m_DeactivatedMods[currentDeactMods].GetHashCode(), m_DeactDicModModEntries[m_DeactivatedMods[currentDeactMods].GetHashCode()]);


                ModManager.ModsConfig ModsConfig = (ModManager.ModsConfig)ModsConfig_FieldInfo.GetValue(new ModManager());
                ModsConfig.EnabledMod.Add(Path.GetFileName(m_DeactDicModModEntries[m_DeactivatedMods[currentDeactMods].GetHashCode()].Path));
                ModsConfig_FieldInfo.SetValue(null, ModsConfig);

                m_DeactDicModModEntries.Remove(m_DeactivatedMods[currentDeactMods].GetHashCode());
                m_DeactivatedMods.RemoveAt(currentDeactMods);
                currentActMods   = m_ActivatedMods.Count - 1;
                currentDeactMods = -1;
            }

            if (OpenSettingUI && m_ActDicModEntries[m_ActivatedMods[currentActMods].GetHashCode()].Started && m_ActDicModEntries[m_ActivatedMods[currentActMods].GetHashCode()].DrawSettingUIMethod != null)
            {
                RenderedRectangle.doRectangleOutline(570, 100, ScreenManager.GraphicsDevice.Viewport.Width - 50 - 570, ScreenManager.GraphicsDevice.Viewport.Height - 100 - 50, 2, Color.White);
                m_ActDicModEntries[m_ActivatedMods[currentActMods].GetHashCode()].DrawSettingUIMethod(m_ActDicModEntries[m_ActivatedMods[currentActMods].GetHashCode()], new object[] { ScreenManager, 575, 100, ScreenManager.GraphicsDevice.Viewport.Width - 50 - 570, ScreenManager.GraphicsDevice.Viewport.Height - 100 - 50 });
            }
            else
            {
                TextItem.doLabel(new Vector2(600, 100), $"Mods ({"ModsCore.Mods.Deactivate".Translate()})", null, 300);
                currentDeactMods = SelectableTextList.doFancyList(25, 575, 140, 300, ScreenManager.GraphicsDevice.Viewport.Height - 50, m_DeactivatedMods.ToArray(), currentDeactMods, null);
            }
            GuiData.endDraw();
            PostProcessor.end();
        }