private void c_btnTBCWowDirectoryBrowse_Click(object sender, EventArgs e) { VF.FolderSelectDialog folderSelectDialog = new VF.FolderSelectDialog(); folderSelectDialog.Title = "Please find the WoW The Burning Crusade Directory for me"; folderSelectDialog.InitialDirectory = Settings.GetWowDirectory(WowVersionEnum.TBC); if (folderSelectDialog.ShowDialog() == true) { c_txtTBCWowDirectory.Text = folderSelectDialog.FileName; if (c_txtTBCWowDirectory.Text.EndsWith("\\") == false && c_txtTBCWowDirectory.Text.EndsWith("/") == false) { c_txtTBCWowDirectory.Text += "\\"; } if (WowUtility.IsValidWowDirectory(c_txtTBCWowDirectory.Text) == false) { c_txtTBCWowDirectory.ForeColor = Color.Red; Utility.MessageBoxShow(c_txtTBCWowDirectory.Text + " is not a valid WoW The Burning Crusade Directory. \r\nPlease choose the correct directory where WoW TBC is installed."); } else { if (WowUtility.IsWowDirectoryTBC(c_txtTBCWowDirectory.Text) == true) { c_txtTBCWowDirectory.ForeColor = Color.Black; } else { c_txtTBCWowDirectory.ForeColor = Color.Red; Utility.MessageBoxShow(c_txtTBCWowDirectory.Text + " is not a valid WoW The Burning Crusade Directory. \r\nPlease choose the correct directory where WoW TBC is installed."); } } } }
internal static void ReinstallAddon(string _AddonName, WowVersionEnum _WowVersion) { //Delete WTF files var savedVariableFiles = WowUtility.GetPerCharacterSavedVariableFilePaths(_AddonName, _WowVersion); savedVariableFiles.AddRange(WowUtility.GetSavedVariableFilePaths(_AddonName, _WowVersion)); foreach (string savedVariableFile in savedVariableFiles) { Utility.DeleteFile(savedVariableFile); } //Delete WTF files }
internal static string BackupAddons(List <string> _AddonNames, WowVersionEnum _WowVersion, AddonBackupMode _BackupMode = AddonBackupMode.BackupWTF_And_AddonFiles) { int fileID = System.Threading.Interlocked.Increment(ref g_UniqueFileIDCounter); string backupFileName = StaticValues.LauncherBackupsDirectory + DateTime.Now.ToString("yyyy_MM_dd") + "/BackupAddons_" + DateTime.Now.ToString("HH_mm_ss") + "." + fileID + ".zip"; Utility.AssertFilePath(backupFileName); ZipFile zipFile; if (System.IO.File.Exists(backupFileName) == true) { backupFileName = Utility.ConvertToUniqueFilename(backupFileName, '.'); } if (System.IO.File.Exists(backupFileName) == true) { throw new Exception("Backup file already exists"); } zipFile = ZipFile.Create(backupFileName); zipFile.BeginUpdate(); foreach (var addonName in _AddonNames) { if (_BackupMode.HasFlag(AddonBackupMode.BackupWTF)) { string wtfAccStartPath = Settings.GetWowDirectory(_WowVersion); var savedVariableFiles = WowUtility.GetPerCharacterSavedVariableFilePaths(addonName, _WowVersion); savedVariableFiles.AddRange(WowUtility.GetSavedVariableFilePaths(addonName, _WowVersion)); foreach (string savedVariableFile in savedVariableFiles) { zipFile.Add(savedVariableFile, savedVariableFile.Substring(wtfAccStartPath.Length)); } } if (_BackupMode.HasFlag(AddonBackupMode.BackupAddonFiles)) { if (System.IO.Directory.Exists(Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + addonName)) { zipFile.AddDirectoryFilesRecursive(Settings.GetWowDirectory(_WowVersion), Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + addonName); } } } zipFile.CommitUpdate(); zipFile.Close(); return(backupFileName); }
internal static bool UninstallAddon(string _AddonName, WowVersionEnum _WowVersion) { if (System.IO.Directory.Exists(Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + _AddonName)) { Utility.DeleteDirectory(Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + _AddonName); //Delete WTF files var savedVariableFiles = WowUtility.GetPerCharacterSavedVariableFilePaths(_AddonName, _WowVersion); savedVariableFiles.AddRange(WowUtility.GetSavedVariableFilePaths(_AddonName, _WowVersion)); foreach (string savedVariableFile in savedVariableFiles) { Utility.DeleteFile(savedVariableFile); } //Delete WTF files } return(System.IO.Directory.Exists(Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + _AddonName) == false); }
private void c_btnBrowse_Click(object sender, EventArgs e) { VF.FolderSelectDialog folderSelectDialog = new VF.FolderSelectDialog(); folderSelectDialog.Title = "Please find the WoW Classic(or TBC) Directory for me"; folderSelectDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer); if (folderSelectDialog.ShowDialog() == true) { c_txtWowDirectory.Text = folderSelectDialog.FileName; if (WowUtility.IsValidWowDirectory(c_txtWowDirectory.Text) == false) { c_txtWowDirectory.ForeColor = Color.Red; Utility.MessageBoxShow(c_txtWowDirectory.Text + " is not a valid Wow Directory. \r\nPlease choose the correct directory where Wow is installed."); } else { c_txtWowDirectory.ForeColor = Color.Black; } } }
internal static List <string> InstallAddonPackage(string _AddonZipFilePackage, WowVersionEnum _WowVersion, Action <float> _InstallProgress = null, bool _ClearWTFSettings = false) { List <string> addonsInPackage = GetAddonsInAddonPackage(_AddonZipFilePackage); _InstallProgress(0.2f); string backupFile = BackupAddons(addonsInPackage, _WowVersion); _InstallProgress(0.4f); for (int i = 0; i < addonsInPackage.Count; ++i) { string addon = addonsInPackage[i]; if (_ClearWTFSettings == true) { var savedVariableFiles = WowUtility.GetPerCharacterSavedVariableFilePaths(addon, _WowVersion); savedVariableFiles.AddRange(WowUtility.GetSavedVariableFilePaths(addon, _WowVersion)); foreach (string savedVariableFile in savedVariableFiles) { Utility.DeleteFile(savedVariableFile); } } if (System.IO.Directory.Exists(Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + addon)) { Utility.DeleteDirectory(Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + addon); } _InstallProgress(0.4f + ((float)(i + 1) / (float)addonsInPackage.Count) * 0.4f); } _InstallProgress(0.8f); try { FastZip fastZip = new FastZip(); fastZip.ExtractZip(_AddonZipFilePackage, Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\", null); _InstallProgress(1.0f); return(addonsInPackage); } catch (Exception ex) { Logger.LogException(ex); Utility.MessageBoxShow("There was an error extracting the AddonPackage, Backup of anything deleted/replaced exists in the \"" + backupFile + "\" unfortunately automatic restoration is not implemented yet"); } return(null); }
private void c_btnOK_Click(object sender, EventArgs e) { if (WowUtility.IsValidWowDirectory(c_txtWowDirectory.Text) == true) { if (WowUtility.IsWowDirectoryClassic(c_txtWowDirectory.Text) == true) { Settings.Instance._WowDirectory = c_txtWowDirectory.Text; if (Settings.Instance._WowDirectory.EndsWith("\\") == false && Settings.Instance._WowDirectory.EndsWith("/") == false) { Settings.Instance._WowDirectory += "\\"; } Settings.Save(); Close(); } else if (WowUtility.IsWowDirectoryTBC(c_txtWowDirectory.Text) == true) { Utility.MessageBoxShow("Please note that this Launcher was originally made for WoW Classic and that some features may not work 100% for WoW TBC. \r\nPlease report any bugs and errors found on the forum at forum.realmplayers.com"); Settings.Instance._WowDirectory = c_txtWowDirectory.Text; if (Settings.Instance._WowDirectory.EndsWith("\\") == false && Settings.Instance._WowDirectory.EndsWith("/") == false) { Settings.Instance._WowDirectory += "\\"; } Settings.Instance._WowTBCDirectory = Settings.Instance._WowDirectory; Settings.Save(); Close(); } else { Utility.MessageBoxShow(c_txtWowDirectory.Text + " is not a valid Wow Directory. \r\nPlease choose the correct directory where Wow is installed."); } } else { c_txtWowDirectory.ForeColor = Color.Red; Utility.MessageBoxShow(c_txtWowDirectory.Text + " is not a valid Wow Directory. \r\nPlease choose the correct directory where Wow is installed."); } }
private void c_btnClose_Click(object sender, EventArgs e) { if (WowUtility.IsValidWowDirectory(c_txtWowDirectory.Text) == false) { var dialogResult = Utility.MessageBoxShow("The specified WoW Classic Directory is not valid. Only valid WoW Classic Directory can be used. Use the old specified \"" + Settings.GetWowDirectory(WowVersionEnum.Vanilla) + "\"?", "Not valid Wow Directory", MessageBoxButtons.YesNo); if (dialogResult == System.Windows.Forms.DialogResult.No) { c_txtWowDirectory.ForeColor = Color.Red; } else//if (dialogResult == System.Windows.Forms.DialogResult.Yes) { c_txtWowDirectory.Text = Settings.GetWowDirectory(WowVersionEnum.Vanilla); } return; } else { if (c_txtWowDirectory.Text.EndsWith("\\") == false && c_txtWowDirectory.Text.EndsWith("/") == false) { c_txtWowDirectory.Text = c_txtWowDirectory.Text + "\\"; } Settings.Instance._WowDirectory = c_txtWowDirectory.Text; } if (c_cbxEnableTBC.Checked == true) { if (WowUtility.IsValidWowDirectory(c_txtTBCWowDirectory.Text) == false) { if (Settings.HaveTBC == true) { var dialogResult = Utility.MessageBoxShow("The specified WoW The Burning Crusade Directory is not valid. Only valid WoW TBC Directory can be used. Use the old specified \"" + Settings.GetWowDirectory(WowVersionEnum.TBC) + "\"?", "Not valid Wow Directory", MessageBoxButtons.YesNo); if (dialogResult == System.Windows.Forms.DialogResult.No) { c_txtTBCWowDirectory.ForeColor = Color.Red; } else//if (dialogResult == System.Windows.Forms.DialogResult.Yes) { c_txtTBCWowDirectory.Text = Settings.GetWowDirectory(WowVersionEnum.TBC); } return; } else { var dialogResult = Utility.MessageBoxShow("The specified WoW The Burning Crusade Directory is not valid. Only valid WoW TBC Directory can be used. Disable the use of WoW TBC Directory?", "Not valid Wow Directory", MessageBoxButtons.YesNo); if (dialogResult == System.Windows.Forms.DialogResult.No) { c_txtTBCWowDirectory.ForeColor = Color.Red; } else//if (dialogResult == System.Windows.Forms.DialogResult.Yes) { c_txtTBCWowDirectory.ForeColor = Color.Black; c_cbxEnableTBC.Checked = false; c_txtTBCWowDirectory.Text = ""; } return; } } else { if (c_txtTBCWowDirectory.Text.EndsWith("\\") == false && c_txtTBCWowDirectory.Text.EndsWith("/") == false) { c_txtTBCWowDirectory.Text = c_txtTBCWowDirectory.Text + "\\"; } Settings.Instance._WowTBCDirectory = c_txtTBCWowDirectory.Text; } } else { Settings.Instance._WowTBCDirectory = ""; } Settings.Instance.RunWoWNotAdmin = c_cbxRunNotAdmin.Checked; Settings.Instance.AutoHideOldNews = c_cbxAutoHide.Checked; Settings.Instance.AutoUpdateVFAddons = c_cbAutoUpdateVF.Checked; //Settings.Instance.UseWoWNoDelay = c_cbxWoWNoDelay.Checked; Settings.Instance.AutoRefreshNews = c_cbAutoRefresh.Checked; Settings.Instance.NewsSources_Feenix = c_cbxFeenixNews.Checked; Settings.Instance.NewsSources_Nostalrius = c_cbxNostalriusNews.Checked; Settings.Instance.NewsSources_Kronos = c_cbxKronosNews.Checked; if (RealmPlayersUploader.IsValidUserID(Settings.UserID) == true) { Settings.Instance.ContributeRealmPlayers = c_cbContributeRealmPlayers.Checked; Settings.Instance.ContributeRaidStats = c_cbContributeRaidStats.Checked; Settings.Instance.Wait5SecondsAfterUpload = c_cbxWait5Seconds.Checked; } Close(); }
private void c_lbAddons_SelectedIndexChanged(object sender, EventArgs e) { string addonName = (string)c_lbAddons.SelectedItem; if (m_AddonInfos.ContainsKey(addonName)) { var addonInfo = m_AddonInfos[addonName]; c_gbAddonInfo.Text = "Information for Addon \"" + addonName + "\""; c_txtAddonTitle.Text = WowUtility.ConvertNoColor(addonInfo.m_AddonTitle); c_txtAddonVersion.Text = addonInfo.m_VersionString; c_txtAuthor.Text = addonInfo.m_Author; c_txtNotes.Text = addonInfo.m_Notes; c_clbAddonStatus.ItemCheck -= c_clbAddonStatus_ItemCheck; c_clbAddonStatus.Items.Clear(); var addonStatuses = m_AddonsWTF.GetAddonStatus(addonName); foreach (var addonStatusEValue in addonStatuses) { var addonStatus = addonStatusEValue; int lastIndex = m_AddonStatusChanges.FindLastIndex((_Value) => { return(_Value.Item1 == addonName && _Value.Item2.IsSameChar(addonStatus)); }); if (lastIndex != -1) { addonStatus = m_AddonStatusChanges[lastIndex].Item2; } if (addonStatus.Enabled == AddonStatus.Enum.Enabled) { c_clbAddonStatus.Items.Add(new clbAddonStatusItem(addonStatusEValue), true); } else if (addonStatus.Enabled == AddonStatus.Enum.Disabled) { c_clbAddonStatus.Items.Add(new clbAddonStatusItem(addonStatusEValue), false); } else if (addonStatus.Enabled == AddonStatus.Enum.Default) { c_clbAddonStatus.Items.Add(new clbAddonStatusItem(addonStatusEValue), CheckState.Indeterminate); } } c_clbAddonStatus.ItemCheck += c_clbAddonStatus_ItemCheck; c_lblEnabledFor.Text = "\"" + addonName + "\" is enabled for:"; var neededForAddons = m_AddonInfos.Where((_Value) => { if (_Value.Value != null) { return(_Value.Value.m_Dependencies.Contains(addonName)); } else { return(false); } }); c_lbNeededFor.Items.Clear(); foreach (var neededForAddon in neededForAddons) { c_lbNeededFor.Items.Add(neededForAddon.Key); } c_lblNeededFor.Text = "\"" + addonName + "\" is needed for addons:"; /*c_lbDependencies.Items.Clear(); * c_lbDependencies.Items.AddRange(addonInfo.m_Dependencies.ToArray()); * * c_lbSavedVariables.Items.Clear(); * c_lbSavedVariables.Items.AddRange(addonInfo.m_SavedVariables.ToArray()); * * c_lbSavedVariablesPerCharacter.Items.Clear(); * c_lbSavedVariablesPerCharacter.Items.AddRange(addonInfo.m_SavedVariablesPerCharacter.ToArray());*/ } else { c_gbAddonInfo.Text = "null"; c_txtAddonTitle.Text = "null"; c_txtAddonVersion.Text = "null"; c_txtAuthor.Text = "null"; c_txtNotes.Text = "null"; c_clbAddonStatus.ItemCheck -= c_clbAddonStatus_ItemCheck; c_clbAddonStatus.Items.Clear(); c_lblEnabledFor.Text = "null"; c_lbNeededFor.Items.Clear(); c_lblNeededFor.Text = "null"; } }
internal static List <string> SendAddonData(string _UserID, string _AddonName, WowVersionEnum _WowVersion, string _ClearLuaVariableName, int _LuaVariableDataLengthThreshold, out bool _SentAll) { var savedVariableFiles = WowUtility.GetSavedVariableFilePaths(_AddonName, _WowVersion);//For Accounts only _LuaVariableDataLengthThreshold = _LuaVariableDataLengthThreshold + 12 /*newlines = {} osv osv*/ + _ClearLuaVariableName.Length; VF.NetworkClient netClient = sm_Client; if (netClient != null && netClient.IsConnected() == false) { netClient.Disconnect(); netClient = null; } List <string> sentAddonFiles = new List <string>(); _SentAll = true;//Default läge try { foreach (var luaFilePath in savedVariableFiles) { string luaFileData = System.IO.File.ReadAllText(luaFilePath); string resultFileData = ""; string variableData = ""; if (WowUtility.ExtractLuaVariableFromFile(luaFileData, _ClearLuaVariableName, out resultFileData, out variableData) == true) { if (variableData.Length < _LuaVariableDataLengthThreshold) { continue; } if (netClient == null) { Logger.ConsoleWriteLine("Trying to connect to server...", ConsoleColor.Gray); netClient = new VF.NetworkClient(g_Host, g_Port); //realmplayers.com Logger.ConsoleWriteLine("Connected to server!", ConsoleColor.Green); } WLN_UploadPacket_AddonData addonData = new WLN_UploadPacket_AddonData(); addonData.AddonName = _AddonName; addonData.UserID = _UserID; addonData.FileStatus = WowUtility.GetFileStatus(luaFilePath); addonData.Data = luaFileData; var newMessage = netClient.CreateMessage(); newMessage.WriteByte((byte)WLN_PacketType.Upload_AddonData); newMessage.WriteClass(addonData); netClient.WaitForConnect(TimeSpan.FromSeconds(60)); netClient.SendMessage(newMessage); Logger.ConsoleWriteLine("Sent SavedVariables file \"" + luaFilePath + "\". Waiting for Response...", ConsoleColor.Gray); WLN_UploadPacket_SuccessResponse response; if (netClient.RecvPacket_VF(WLN_PacketType.Upload_SuccessResponse, out response, TimeSpan.FromSeconds(60)) == true) { Logger.ConsoleWriteLine("Received Response. Data was sent successfully!. Deleting old data", ConsoleColor.Gray); sentAddonFiles.Add(luaFilePath); if (response.MessageToUser != "") { Utility.MessageBoxShow(response.MessageToUser, "Message from Server"); } //TODO: Do something with "response.MessageToUser" System.IO.File.WriteAllText(luaFilePath, resultFileData); //Save the lua file with the variable cleared Logger.ConsoleWriteLine("Operation Successfull! Preparing for next file.", ConsoleColor.Green); } else { Logger.ConsoleWriteLine("Operation Failed! Preparing for next file.", ConsoleColor.Red); _SentAll = false; } } else { } } } catch (Exception ex) { Logger.LogException(ex); _SentAll = false; } finally { if (_SentAll == false) { if (netClient != null) { netClient.Disconnect(); netClient = null; } } sm_Client = netClient; } return(sentAddonFiles); }