//========================================================

        private void Main_Loaded(object sender, RoutedEventArgs e)
        {
            blinkTimer.Tick    += Console_Timer_Tick;
            blinkTimer.Interval = new TimeSpan(0, 0, 0, 0, 250);

            Lib.Updaters.ModManager_Updater update = new Lib.Updaters.ModManager_Updater();
            DeleteOldUpdaterFiles();
            var game = GameInfo.GetGame(SessionData.currentGame);

            BgThread.AddToQueue(() =>
            {
                update.HandleUpdates();
                string gameD = game.GameDir + "\\MelonLoader\\MelonLoader.dll";
                MelonMod_Handler.HandleUpdates(game.GameDir, gameD);
            });

            // check for mod helper and download if not exists
            var files        = Directory.GetFiles(game.GameDir + "\\Mods");
            var hasModHelper = files.Any(file => file.ToLower().Replace(" ", "").Replace(".", "").Contains("modhelperdll"));

            if (!hasModHelper)
            {
                var result = MessageBox.Show("It seems you don't have Bloons Mod Helper installed. Most mods require this to work." +
                                             " Do you want to download it now?", "Download Bloons Mod Helper?", MessageBoxButton.YesNo);
                if (result == MessageBoxResult.Yes)
                {
                    MessageBox.Show("Great! The download will open when you close this popup. To get it, download BloonsTD6_Mod_Helper.zip and extract it to your BTD6 mod's folder");
                    Process.Start("https://github.com/gurrenm3/BTD-Mod-Helper/releases");
                }
            }
        }
Beispiel #2
0
        public static void Launch()
        {
            var launcher = new Launcher();

            TempSettings.Instance.SaveSettings();
            BgThread.AddToQueue(() => launcher.LaunchBTD6());
        }
        public MainWindow()
        {
            InitializeComponent();
            Log.Instance.MessageLogged += Instance_MessageLogged;

            Log.Output("Welcome to NKHook5 Launcher!");

            if (NKHook.DoesNkhExist())
            {
                DownloadNKH_Button.Content = "  Re-download NKHook  ";
            }


            UpdateHandler update = new UpdateHandler
            {
                GitApiReleasesURL = "https://api.github.com/repos/TDToolbox/NKHook-Launcher/releases",
                ProjectName       = "NKHook5 Launcher",
                ProjectExePath    = Environment.CurrentDirectory + "\\NKHook Launcher.exe",
                UpdaterExeName    = "Updater for NKHook Launcher.exe",
                UpdatedZipName    = "NKHook Launcher.zip"
            };

            Thread thread = new Thread(update.HandleUpdates);

            BgThread.AddToQueue(thread);
        }
Beispiel #4
0
        /// <summary>
        /// Download the latest NKHook from the github releases section
        /// </summary>
        public static void DownloadNKH()
        {
            Log.Output("Downloading latest NKHook5...");

            string git_Text = WebHandler.ReadText_FromURL(gitURL);

            if (!Guard.IsStringValid(git_Text))
            {
                Log.Output("Failed to read release info for NKHook5");
                return;
            }

            BgThread.AddToQueue(new Thread(() =>
            {
                var gitApi = GitApi.FromJson(git_Text);
                foreach (var a in gitApi)
                {
                    foreach (var b in a.Assets)
                    {
                        string link = b.BrowserDownloadUrl.ToString();
                        if (!Guard.IsStringValid(link))
                        {
                            continue;
                        }

                        WebHandler.DownloadFile(link, nkhDir);
                    }
                }
                Log.Output("NKHook5 successfully downloaded!");
            }));
        }
Beispiel #5
0
        private void Analyze_Button_Click(object sender, RoutedEventArgs e)
        {
            caseSensitive = CaseSensitive_CB.IsChecked.Value;
            ignoreDup     = IgnoreDup_CB.IsChecked.Value;

            BgThread.AddToQueue(() => Analyze());
        }
 private void RunNKH_Button_Click(object sender, RoutedEventArgs e)
 {
     if (!BgThread.IsThreadRunning())
     {
         Log.Output("Launching NKHook5");
         NKHook.LaunchNKH();
     }
     else
     {
         MessageBox.Show("Can't run the game, currently doing something. " +
                         "Please wait about 30 seconds and try again");
     }
 }
 private void DownloadNKH_Button_Click(object sender, RoutedEventArgs e)
 {
     if (!BgThread.IsThreadRunning())
     {
         Log.Output("Downloading NKHook5");
         var thread = new Thread(() => NKHook.DownloadNKH());
         BgThread.AddToQueue(thread);
     }
     else
     {
         MessageBox.Show("Can't run the game, currently doing something. " +
                         "Please wait about 30 seconds and try again");
     }
 }
Beispiel #8
0
        /// <summary>
        /// Main updater method for NKHook. Handles all update related functions for ease of use.
        /// </summary>
        public static void HandleUpdates()
        {
            BgThread.AddToQueue(() =>
            {
                UpdateHandler update = new UpdateHandler
                {
                    GitApiReleasesURL = gitURL,
                    ProjectExePath    = nkhEXE,
                    ProjectName       = "NKHook5",
                    InstallDirectory  = nkhDir
                };

                update.HandleUpdates(false, false);
            });
        }
        //========================================================

        private void Main_Loaded(object sender, RoutedEventArgs e)
        {
            blinkTimer.Tick    += Console_Timer_Tick;
            blinkTimer.Interval = new TimeSpan(0, 0, 0, 0, 250);

            Lib.Updaters.ModManager_Updater update = new Lib.Updaters.ModManager_Updater();
            DeleteOldUpdaterFiles();
            var game = GameInfo.GetGame(SessionData.currentGame);

            BgThread.AddToQueue(() =>
            {
                update.HandleUpdates();
                string gameD = game.GameDir + "\\MelonLoader\\MelonLoader.ModHandler.dll";
                MelonMod_Handler.HandleUpdates(game.GameDir, gameD);
            });
        }
Beispiel #10
0
        private void TextBox_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (scanRunning)
                {
                    return;
                }

                scanRunning   = true;
                caseSensitive = CaseSensitive_CB.IsChecked.Value;
                ignoreDup     = IgnoreDup_CB.IsChecked.Value;

                BgThread.AddToQueue(() =>
                {
                    Analyze();
                    scanRunning = false;
                });
            }
        }
Beispiel #11
0
        private void Main_Loaded(object sender, RoutedEventArgs e)
        {
            blinkTimer.Tick    += Console_Timer_Tick;
            blinkTimer.Interval = new TimeSpan(0, 0, 0, 0, 250);

            BTD6_CrashHandler handler = new BTD6_CrashHandler();

            handler.EnableCrashLog();

            UpdateHandler update = new UpdateHandler()
            {
                GitApiReleasesURL = "https://api.github.com/repos/TDToolbox/BTD6-Mod-Manager/releases",
                ProjectExePath    = Environment.CurrentDirectory + "\\BTD6 Mod Manager.exe",
                InstallDirectory  = Environment.CurrentDirectory,
                ProjectName       = "BTD6 Mod Manager",
                UpdatedZipName    = "BTD6_Mod_Manager.zip",
                UpdaterExeName    = "Updater.exe"
            };

            Thread updater = new Thread(() => update.HandleUpdates());

            updater.IsBackground = true;
            BgThread.AddToQueue(updater);
        }
        private void linkStop_LinkClicked( object sender, LinkLabelLinkClickedEventArgs e )
        {
            // if already running, do nothing
            if ( ! thread.running )
                return;

            thread.cancelRequested = true;
            thread.Join();

            // delete the thread. we will make a new one next time we run.
            thread = null;

            UpdateUi();
        }
        private void linkStart_LinkClicked( object sender, LinkLabelLinkClickedEventArgs e )
        {
            // if already running, do nothing
            if ( this.thread != null && this.thread.running )
                return;

            if ( this.thread == null )
                this.thread = new BgThread( 71, site, dirStart );

            // subscribe
            thread.EventImportant += HandleMessageImportant;
            thread.EventDebug += HandleMessageDebug;

            map = new Dictionary<string, DataGridViewRow>();
            gridDirs.Rows.Clear();

            HandleMessageDebug( "Starting in dir '" + this.dirStart.Path + "'" );
            thread.Start();

            UpdateUi();
        }