public MainForm() { startup = true; Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture; mainForm = this; InitializeComponent(); SettingsManager.LoadSettings(Constants.SettingsFile); LootDatabaseManager.LootChanged += NotificationManager.UpdateLootDisplay; LootDatabaseManager.LootChanged += UpdateLogDisplay; GlobalDataManager.ExperienceChanged += NotificationManager.UpdateExperienceDisplay; GlobalDataManager.DamageChanged += NotificationManager.UpdateDamageDisplay; GlobalDataManager.UsedItemsChanged += NotificationManager.UpdateUsedItemsDisplay; if (!File.Exists(Constants.DatabaseFile)) { ExitWithError("Fatal Error", String.Format("Could not find database file {0}.", Constants.DatabaseFile)); } if (!File.Exists(Constants.NodeDatabase)) { ExitWithError("Fatal Error", String.Format("Could not find database file {0}.", Constants.NodeDatabase)); } LootDatabaseManager.Initialize(); StyleManager.InitializeStyle(); NotificationForm.Initialize(); Parser.Initialize(); PopupManager.Initialize(this.notifyIcon1); prevent_settings_update = true; try { StorageManager.InitializeStorage(); } catch (Exception e) { ExitWithError("Fatal Error", String.Format("Corrupted database {0}.\nMessage: {1}", Constants.DatabaseFile, e.Message)); } ProcessManager.Initialize(); this.initializeSettings(); try { Pathfinder.LoadFromDatabase(Constants.NodeDatabase); } catch (Exception e) { ExitWithError("Fatal Error", String.Format("Corrupted database {0}.\nMessage: {1}", Constants.NodeDatabase, e.Message)); } prevent_settings_update = false; this.InitializeTabs(); switchTab(0); makeDraggable(this.Controls); if (SettingsManager.getSettingBool("StartAutohotkeyAutomatically")) { AutoHotkeyManager.StartAutohotkey(); } ReadMemoryManager.Initialize(); HuntManager.Initialize(); UIManager.Initialize(); MemoryReader.Initialize(); HUDManager.Initialize(); GlobalDataManager.Initialize(); this.Load += MainForm_Load; fileWriter = new StreamWriter(Constants.BigLootFile, true); tibialyzerLogo.MouseDown += new System.Windows.Forms.MouseEventHandler(this.draggable_MouseDown); startup = false; ScanningManager.StartScanning(); scan_tooltip.AutoPopDelay = 60000; scan_tooltip.InitialDelay = 500; scan_tooltip.ReshowDelay = 0; scan_tooltip.ShowAlways = true; scan_tooltip.UseFading = true; SetScanningImage("scanningbar-red.gif", "No Tibia Client Found...", true); }
public static void ShowNotification(NotificationForm f, string command, string screenshot_path = "") { if (f == null) return; if (screenshot_path == "") { TibialyzerCommand cmd = new TibialyzerCommand(command); command_stack.Push(cmd); f.command = cmd; } f.Visible = false; int richX = -1; int richY = -1; int anchor = 0; int duration = 5; int group = 0; for (int it = 0; it < Constants.NotificationTypeObjects.Count; it++) { if (f.FormName() == Constants.NotificationTypeObjects[it]) { string settingObject = Constants.NotificationTypes[it].Replace(" ", ""); richX = SettingsManager.getSettingInt(settingObject + "XOffset"); richY = SettingsManager.getSettingInt(settingObject + "YOffset"); anchor = SettingsManager.getSettingInt(settingObject + "Anchor"); duration = SettingsManager.getSettingInt(settingObject + "Duration"); group = Math.Min(Math.Max(SettingsManager.getSettingInt(settingObject + "Group"), 0), 9); break; } } f.notificationDuration = duration; f.LoadForm(); if (screenshot_path != "") { Bitmap bitmap = new Bitmap(f.Width, f.Height); f.DrawToBitmap(bitmap, new Rectangle(0, 0, f.Width, f.Height)); foreach (Control c in f.Controls) { c.DrawToBitmap(bitmap, new Rectangle(new Point(Math.Min(Math.Max(c.Location.X, 0), f.Width), Math.Min(Math.Max(c.Location.Y, 0), f.Height)), c.Size)); } bitmap.Save(screenshot_path); bitmap.Dispose(); f.Dispose(); return; } if (NotificationFormGroups[group] != null) { NotificationFormGroups[group].close(); } int position_x = 0, position_y = 0; Screen screen = ProcessManager.GetScreen(); int xOffset = richX == -1 ? 30 : richX; int yOffset = richY == -1 ? 30 : richY; switch (anchor) { case 3: position_x = screen.WorkingArea.Right - xOffset - f.Width; position_y = screen.WorkingArea.Bottom - yOffset - f.Height; break; case 2: position_x = screen.WorkingArea.Left + xOffset; position_y = screen.WorkingArea.Bottom - yOffset - f.Height; break; case 1: position_x = screen.WorkingArea.Right - xOffset - f.Width; position_y = screen.WorkingArea.Top + yOffset; break; default: position_x = screen.WorkingArea.Left + xOffset; position_y = screen.WorkingArea.Top + yOffset; break; } f.StartPosition = FormStartPosition.Manual; f.SetDesktopLocation(position_x, position_y); f.TopMost = true; f.Show(); NotificationFormGroups[group] = f; }
public static void ShowNotification(NotificationForm f, string command, string screenshot_path = "") { if (f == null) { return; } if (screenshot_path == "") { TibialyzerCommand cmd = new TibialyzerCommand(command); command_stack.Push(cmd); f.command = cmd; } f.Visible = false; int richX = -1; int richY = -1; int anchor = 0; int duration = 5; int group = 0; for (int it = 0; it < Constants.NotificationTypeObjects.Count; it++) { if (f.GetType() == Constants.NotificationTypeObjects[it]) { string settingObject = Constants.NotificationTypes[it].Replace(" ", ""); richX = SettingsManager.getSettingInt(settingObject + "XOffset"); richY = SettingsManager.getSettingInt(settingObject + "YOffset"); anchor = SettingsManager.getSettingInt(settingObject + "Anchor"); duration = SettingsManager.getSettingInt(settingObject + "Duration"); group = Math.Min(Math.Max(SettingsManager.getSettingInt(settingObject + "Group"), 0), 9); break; } } f.notificationDuration = duration; f.LoadForm(); if (screenshot_path != "") { Bitmap bitmap = new Bitmap(f.Width, f.Height); f.DrawToBitmap(bitmap, new Rectangle(0, 0, f.Width, f.Height)); foreach (Control c in f.Controls) { c.DrawToBitmap(bitmap, new Rectangle(new Point(Math.Min(Math.Max(c.Location.X, 0), f.Width), Math.Min(Math.Max(c.Location.Y, 0), f.Height)), c.Size)); } bitmap.Save(screenshot_path); bitmap.Dispose(); f.Dispose(); return; } if (NotificationFormGroups[group] != null) { NotificationFormGroups[group].close(); } int position_x = 0, position_y = 0; Screen screen; Process tibia_process = ProcessManager.GetTibiaProcess(); if (tibia_process == null) { screen = Screen.FromControl(MainForm.mainForm); } else { screen = Screen.FromHandle(tibia_process.MainWindowHandle); } int xOffset = richX == -1 ? 30 : richX; int yOffset = richY == -1 ? 30 : richY; switch (anchor) { case 3: position_x = screen.WorkingArea.Right - xOffset - f.Width; position_y = screen.WorkingArea.Bottom - yOffset - f.Height; break; case 2: position_x = screen.WorkingArea.Left + xOffset; position_y = screen.WorkingArea.Bottom - yOffset - f.Height; break; case 1: position_x = screen.WorkingArea.Right - xOffset - f.Width; position_y = screen.WorkingArea.Top + yOffset; break; default: position_x = screen.WorkingArea.Left + xOffset; position_y = screen.WorkingArea.Top + yOffset; break; } f.StartPosition = FormStartPosition.Manual; f.SetDesktopLocation(position_x, position_y); f.TopMost = true; f.Show(); NotificationFormGroups[group] = f; }
public MainForm() { startup = true; Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture; mainForm = this; InitializeComponent(); Constants.InitializeConstants(); SettingsManager.Initialize(); if (File.Exists(Constants.SettingsTemporaryBackup)) { // a temporary backup file exists, this might indicate a problem occurred while writing a settings file (e.g. unexpected shutdown) try { SettingsManager.LoadSettings(Constants.SettingsTemporaryBackup); if (SettingsManager.settings.Count == 0) { throw new Exception("Failed to read backup settings."); } if (File.Exists(Constants.SettingsFile)) { File.Delete(Constants.SettingsFile); } File.Copy(Constants.SettingsTemporaryBackup, Constants.SettingsFile); File.Delete(Constants.SettingsTemporaryBackup); } catch (Exception ex) { DisplayWarning(String.Format("Backup settings file found, but could not read: {0}", ex.Message)); } } SettingsManager.LoadSettings(Constants.SettingsFile); LootDatabaseManager.LootChanged += NotificationManager.UpdateLootDisplay; LootDatabaseManager.LootChanged += UpdateLogDisplay; GlobalDataManager.ExperienceChanged += NotificationManager.UpdateExperienceDisplay; GlobalDataManager.DamageChanged += NotificationManager.UpdateDamageDisplay; GlobalDataManager.UsedItemsChanged += NotificationManager.UpdateUsedItemsDisplay; if (!File.Exists(Constants.DatabaseFile)) { ExitWithError("Fatal Error", String.Format("Could not find database file {0}.", Constants.DatabaseFile)); } if (!File.Exists(Constants.NodeDatabase)) { ExitWithError("Fatal Error", String.Format("Could not find database file {0}.", Constants.NodeDatabase)); } LootDatabaseManager.Initialize(); StyleManager.InitializeStyle(); NotificationForm.Initialize(); Parser.Initialize(); PopupManager.Initialize(this.notifyIcon1); prevent_settings_update = true; try { StorageManager.InitializeStorage(); } catch (Exception e) { ExitWithError("Fatal Error", String.Format("Corrupted database {0}.\nMessage: {1}", Constants.DatabaseFile, e.Message)); } try { OutfiterManager.Initialize(); } catch (Exception e) { ExitWithError("Fatal Error", String.Format("Corrupted outfiter database {0}.\nMessage: {1}", Constants.OutfiterDatabaseFile, e.Message)); } ProcessManager.Initialize(); this.initializeSettings(); try { Pathfinder.LoadFromDatabase(Constants.NodeDatabase); } catch (Exception e) { ExitWithError("Fatal Error", String.Format("Corrupted database {0}.\nMessage: {1}", Constants.NodeDatabase, e.Message)); } TaskManager.Initialize(); prevent_settings_update = false; ChangeLanguage(SettingsManager.getSettingString("TibialyzerLanguage")); this.InitializeTabs(); switchTab(0); makeDraggable(this.Controls); if (SettingsManager.getSettingBool("StartAutohotkeyAutomatically")) { AutoHotkeyManager.StartAutohotkey(); } ReadMemoryManager.Initialize(); HuntManager.Initialize(); UIManager.Initialize(); MemoryReader.Initialize(); HUDManager.Initialize(); GlobalDataManager.Initialize(); if (SettingsManager.getSettingBool("AutomaticallyDownloadAddresses")) { MainTab.DownloadNewAddresses(); } this.Load += MainForm_Load; fileWriter = new StreamWriter(Constants.BigLootFile, true); tibialyzerLogo.MouseDown += new System.Windows.Forms.MouseEventHandler(this.draggable_MouseDown); startup = false; ScanningManager.StartScanning(); scan_tooltip.AutoPopDelay = 60000; scan_tooltip.InitialDelay = 500; scan_tooltip.ReshowDelay = 0; scan_tooltip.ShowAlways = true; scan_tooltip.UseFading = true; SetScanningImage("scanningbar-red.gif", "No Tibia Client Found...", true); }
private void ShowNotification(NotificationForm f, string command, string screenshot_path = "") { if (!richNotifications) return; if (screenshot_path == "") { TibialyzerCommand cmd = new TibialyzerCommand(command); command_stack.Push(cmd); f.command = cmd; } f.Visible = false; f.LoadForm(); if (screenshot_path != "") { Bitmap bitmap = new Bitmap(f.Width, f.Height); f.DrawToBitmap(bitmap, new Rectangle(0, 0, f.Width, f.Height)); foreach (Control c in f.Controls) { c.DrawToBitmap(bitmap, new Rectangle(new Point(Math.Min(Math.Max(c.Location.X, 0), f.Width), Math.Min(Math.Max(c.Location.Y, 0), f.Height)), c.Size)); } bitmap.Save(screenshot_path); bitmap.Dispose(); f.Dispose(); return; } if (tooltipForm != null) { tooltipForm.Close(); } int position_x = 0, position_y = 0; Screen screen; Process tibia_process = GetTibiaProcess(); if (tibia_process == null) { screen = Screen.FromControl(this); } else { screen = Screen.FromHandle(tibia_process.MainWindowHandle); } int xOffset = getSettingInt("RichNotificationXOffset") == -1 ? 30 : getSettingInt("RichNotificationXOffset"); int yOffset = getSettingInt("RichNotificationYOffset") == -1 ? 30 : getSettingInt("RichNotificationYOffset"); int anchor = getSettingInt("RichNotificationAnchor"); switch (anchor) { case 3: position_x = screen.WorkingArea.Right - xOffset - f.Width; position_y = screen.WorkingArea.Bottom - yOffset - f.Height; break; case 2: position_x = screen.WorkingArea.Left + xOffset; position_y = screen.WorkingArea.Bottom - yOffset - f.Height; break; case 1: position_x = screen.WorkingArea.Right - xOffset - f.Width; position_y = screen.WorkingArea.Top + yOffset; break; default: position_x = screen.WorkingArea.Left + xOffset; position_y = screen.WorkingArea.Top + yOffset; break; } f.StartPosition = FormStartPosition.Manual; f.SetDesktopLocation(position_x, position_y); f.TopMost = true; f.Show(); tooltipForm = f; }