|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- using GCMM.Properties;
- using Newtonsoft.Json.Linq;
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Drawing;
- using System.IO;
- using System.IO.Compression;
- using System.Linq;
- using System.Net;
- using System.Reflection;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- using System.Windows.Forms;
-
- namespace GCMM
- {
- public partial class MainForm : Form
- {
- public MainForm()
- {
- InitializeComponent();
- }
-
- private Dictionary<string, ModInfo> mods = new Dictionary<string, ModInfo>();
-
- private void Form1_Load(object sender, EventArgs e)
- {
- modlist.Items.Clear();
- UpdateButton(installbtn, false);
- modinfobox.Text = "";
- if (string.IsNullOrWhiteSpace(Settings.Default.GamePath))
- {
- Settings.Default.GamePath = GetGameFolder();
- if (string.IsNullOrWhiteSpace(Settings.Default.GamePath))
- Settings.Default.GamePath = SelectGameFolder();
- else
- MessageBox.Show("Found game at " + Settings.Default.GamePath);
- Settings.Default.Save();
- }
- if(string.IsNullOrWhiteSpace(Settings.Default.GamePath))
- {
- status.Text = "Status: Game not found";
- return;
- }
- CheckIfPatched();
- GetInstalledMods();
- GetAvailableMods();
- }
-
- private void playbtn_Click(object sender, EventArgs e)
- {
- if (playbtn.ForeColor == Color.Green) return; //Disabled
- if (!BeginWork()) return;
- PatchGame();
- EndWork();
- }
-
- private void settingsbtn_Click(object sender, EventArgs e)
- {
- if (settingsbtn.ForeColor == Color.Green) return; //Disabled
- var sf = new SettingsForm();
- sf.ShowDialog(this);
- }
-
- private void modlist_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (working) return;
- switch (modlist.SelectedItems.Count)
- {
- case 0:
- modinfobox.Text = "";
- UpdateButton(installbtn, false);
- UpdateButton(uninstallbtn, false);
- break;
- case 1:
- default:
- installbtn.Text = "Install mod";
- UpdateButton(installbtn, false);
- UpdateButton(uninstallbtn, false);
- foreach (ListViewItem item in modlist.SelectedItems)
- {
- var mod = mods[item.Name];
- if (modlist.SelectedItems.Count == 1)
- modinfobox.Text = mod.Description?.Replace("\n", Environment.NewLine);
- else
- modinfobox.Text = modlist.SelectedItems.Count + " mods selected";
- if (mod.DownloadURL != null && !(mod.LatestVersion <= mod.Version))
- {
- UpdateButton(installbtn, true);
- if (mod.Version != null)
- installbtn.Text = "Update mod";
- else
- installbtn.Text = "Install mod";
- }
- if (mod.Version != null)
- UpdateButton(uninstallbtn, true);
- }
- break;
- }
- }
-
- private async void installbtn_Click(object sender, EventArgs e)
- {
- if (installbtn.ForeColor == Color.Green) return; //Disabled
- if (!BeginWork()) return;
- foreach (ListViewItem item in modlist.SelectedItems)
- {
- if (item.Group.Name == "installed") continue;
- await InstallMod(mods[item.Name]);
- }
- EndWork();
- }
- }
- }
|