diff --git a/HALOCELauncher.sln b/HALOCELauncher.sln
new file mode 100644
index 0000000..fd923bd
--- /dev/null
+++ b/HALOCELauncher.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Express 2013 for Windows Desktop
+VisualStudioVersion = 12.0.30723.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HALOCELauncher", "HALOCELauncher\HALOCELauncher.vbproj", "{5483309A-1BD8-41A4-8394-31A5366207C1}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {5483309A-1BD8-41A4-8394-31A5366207C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5483309A-1BD8-41A4-8394-31A5366207C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5483309A-1BD8-41A4-8394-31A5366207C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5483309A-1BD8-41A4-8394-31A5366207C1}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/HALOCELauncher/App.config b/HALOCELauncher/App.config
new file mode 100644
index 0000000..7399590
--- /dev/null
+++ b/HALOCELauncher/App.config
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ 0
+
+
+
+
+
+ 0
+
+
+
+
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/AnimaTheme.vb b/HALOCELauncher/Controls/AnimaTheme.vb
new file mode 100644
index 0000000..6c094c8
--- /dev/null
+++ b/HALOCELauncher/Controls/AnimaTheme.vb
@@ -0,0 +1,1398 @@
+Imports System.Threading
+
+Friend Module Helpers
+
+ Private Size As SizeF
+
+ Public Function MiddlePoint(G As Graphics, TargetText As String, TargetFont As Font, Rect As Rectangle) As Point
+ Size = G.MeasureString(TargetText, TargetFont)
+ Return New Point(Rect.Width / 2 - Size.Width / 2, Rect.Height / 2 - Size.Height / 2)
+ End Function
+
+End Module
+
+Public Class AnimaExperimentalListView
+ Inherits Control
+
+ Public Property Columns As String()
+
+ Public Property Items As ListViewItem()
+
+ Public Property ColumnWidth As Integer = 120
+
+ Public Property SelectedIndex As Integer = -1
+
+ Public Property SelectedIndexes As New List(Of Integer)
+
+ Public Property Multiselect As Boolean
+
+ Public Property Highlight As Integer = -1
+
+ Public Property HandleItemsForeColor As Boolean
+
+ Public Property Grid As Boolean
+
+ Public Property ItemSize As Integer = 16
+
+ Public ReadOnly Property SelectedCount As Integer
+ Get
+ Return SelectedIndexes.Count
+ End Get
+ End Property
+
+ Public ReadOnly Property FocusedItem As ListViewItem
+ Get
+ If IsNothing(SelectedIndexes) Then
+ Return New ListViewItem
+ End If
+
+ Return Items(SelectedIndexes(0))
+ End Get
+ End Property
+
+ Public Sub Add(Item As ListViewItem)
+ Dim ItemsList As List(Of ListViewItem) = Items.ToList
+ ItemsList.Add(Item)
+ Items = ItemsList.ToArray
+ Invalidate()
+ End Sub
+
+ Public Sub Clear()
+ Dim ItemsList As List(Of ListViewItem) = Items.ToList
+ ItemsList.Clear()
+ Items = ItemsList.ToArray
+ Invalidate()
+ End Sub
+
+ Public Sub RemoveItem(ByVal Item As Integer)
+ Dim ItemsList As List(Of ListViewItem) = Items.ToList
+ ItemsList.Remove(ItemsList(Item))
+ Items = ItemsList.ToArray
+ Invalidate()
+ End Sub
+
+ Private BorderIndex As Integer = -1
+
+ Public Event SelectedIndexChanged(Sender As Object, Index As Integer)
+
+ Sub New()
+ DoubleBuffered = True
+ ForeColor = Color.FromArgb(200, 200, 200)
+ Font = New Font("Segoe UI", 9)
+ SetStyle(ControlStyles.OptimizedDoubleBuffer Or ControlStyles.AllPaintingInWmPaint, True)
+ End Sub
+
+ Private Function ReturnForeFromItem(I As Integer, Item As ListViewItem) As SolidBrush
+ If SelectedIndexes.Contains(I) Then
+ Return New SolidBrush(Color.FromArgb(10, 10, 10))
+ End If
+ If HandleItemsForeColor Then
+ Return New SolidBrush(Item.ForeColor)
+ Else
+ Return New SolidBrush(ForeColor)
+ End If
+ End Function
+
+ Private Function ReturnForeFromSubItem(I As Integer, Item As ListViewItem.ListViewSubItem) As SolidBrush
+ If SelectedIndexes.Contains(I) Then
+ Return New SolidBrush(Color.FromArgb(10, 10, 10))
+ End If
+ If HandleItemsForeColor Then
+ Return New SolidBrush(Item.ForeColor)
+ Else
+ Return New SolidBrush(ForeColor)
+ End If
+ End Function
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+ On Error Resume Next
+ e.Graphics.Clear(Color.FromArgb(50, 50, 53))
+
+ Using Background As New SolidBrush(Color.FromArgb(55, 55, 58))
+ e.Graphics.FillRectangle(Background, New Rectangle(1, 1, Width - 2, 26))
+ End Using
+
+ Using Border As New Pen(Color.FromArgb(42, 42, 45)), Shadow As New Pen(Color.FromArgb(65, 65, 68))
+ e.Graphics.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ e.Graphics.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, 26))
+ e.Graphics.DrawLine(Shadow, 1, 1, Width - 2, 1)
+ End Using
+
+ If Not IsNothing(Columns) Then
+
+ For I = 0 To Columns.Count - 1
+
+ If Not I = 0 Then
+
+ Using Separator As New SolidBrush(Color.FromArgb(42, 42, 45)), Shadow As New SolidBrush(Color.FromArgb(65, 65, 68))
+ e.Graphics.FillRectangle(Separator, New Rectangle(ColumnWidth * I, 1, 1, 26))
+ e.Graphics.FillRectangle(Shadow, New Rectangle(ColumnWidth * I - 1, 1, 1, 25))
+
+ If Grid AndAlso Not IsNothing(Items) Then
+ e.Graphics.FillRectangle(Separator, New Rectangle(ColumnWidth * I, 1, 1, 26 + (Items.Count * ItemSize)))
+ e.Graphics.FillRectangle(Shadow, New Rectangle(ColumnWidth * I - 1, 1, 1, 25 + (Items.Count * ItemSize)))
+ End If
+
+ End Using
+
+ End If
+
+ Using Fore As New SolidBrush(ForeColor)
+ e.Graphics.DrawString(Columns(I), Font, Fore, New Point((ColumnWidth * I) + 6, 4))
+ End Using
+
+ Next
+
+ End If
+
+ If Not IsNothing(Items) Then
+
+ If Not Highlight = -1 Then
+
+ Using Background As New SolidBrush(Color.FromArgb(66, 66, 69)), Line As New Pen(Color.FromArgb(45, 45, 48))
+ e.Graphics.FillRectangle(Background, New Rectangle(1, 26 + Highlight * ItemSize, Width - 2, ItemSize))
+ e.Graphics.DrawRectangle(Line, New Rectangle(1, 26 + Highlight * ItemSize, Width - 2, ItemSize))
+ End Using
+
+ End If
+
+ Using Selection As New SolidBrush(Color.FromArgb(41, 130, 232)), Line As New Pen(Color.FromArgb(40, 40, 40))
+
+ If Multiselect AndAlso Not SelectedIndexes.Count = 0 Then
+
+ For Each Selected As Integer In SelectedIndexes
+ e.Graphics.FillRectangle(Selection, New Rectangle(1, 26 + Selected * ItemSize, Width - 2, ItemSize))
+
+ If Selected = 0 AndAlso SelectedIndexes.Count = 1 Then
+ e.Graphics.DrawLine(Line, 1, 26 + ItemSize, Width - 2, 26 + ItemSize)
+
+ ElseIf SelectedIndexes.Count = 1 Then
+ e.Graphics.DrawLine(Line, 1, 26 + ItemSize + Selected * ItemSize, Width - 2, 26 + ItemSize + Selected * ItemSize)
+ End If
+
+ Next
+
+ ElseIf Not SelectedIndexes.Count = 0 Then
+ e.Graphics.FillRectangle(Selection, New Rectangle(1, 26 + SelectedIndex * ItemSize, Width - 2, ItemSize))
+ End If
+
+
+ End Using
+
+ If SelectedIndexes.Count > 0 Then
+ BorderIndex = SelectedIndexes.Max
+ End If
+
+ For I = 0 To Items.Count - 1
+
+ e.Graphics.DrawString(Items(I).Text, Font, ReturnForeFromItem(I, Items(I)), New Point(6, 26 + I * ItemSize + 2))
+
+ If Not IsNothing(Items(I).SubItems) Then
+
+ For X = 0 To Items(I).SubItems.Count - 1
+
+ If Not Items(I).SubItems(X).Text = Items(I).Text Then
+ e.Graphics.DrawString(Items(I).SubItems(X).Text, Font, ReturnForeFromSubItem(I, Items(I).SubItems(X)), New Rectangle((ColumnWidth * X) + 6, 26 + I * ItemSize + 2, ColumnWidth - 8, 16))
+ End If
+ Next
+
+ End If
+
+ Next
+
+ If SelectedIndexes.Contains(BorderIndex) Then
+
+ Using Line As New Pen(Color.FromArgb(40, 40, 40))
+ e.Graphics.DrawLine(Line, 1, 26 + ItemSize + BorderIndex * ItemSize, Width - 2, 26 + ItemSize + BorderIndex * ItemSize)
+ End Using
+
+ End If
+
+ End If
+
+ MyBase.OnPaint(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
+
+ Dim Selection As Integer = GetSelectedFromLocation(e.Location)
+
+ If Selection = -1 OrElse Not e.Button = MouseButtons.Left Then
+ Return
+ End If
+
+ If Multiselect AndAlso My.Computer.Keyboard.CtrlKeyDown Then
+
+ If Not SelectedIndexes.Contains(Selection) Then
+ SelectedIndexes.Add(Selection)
+ Else
+ SelectedIndexes.Remove(Selection)
+ End If
+
+ ElseIf Multiselect AndAlso Not My.Computer.Keyboard.CtrlKeyDown Then
+ SelectedIndexes = New List(Of Integer) From {
+ Selection
+ }
+
+ Else
+ SelectedIndexes = New List(Of Integer) From {
+ Selection
+ }
+ SelectedIndex = Selection
+ End If
+
+ If Selection = -1 Then
+ SelectedIndexes = New List(Of Integer)
+ End If
+
+ Invalidate()
+
+ RaiseEvent SelectedIndexChanged(Me, Selection)
+ MyBase.OnMouseUp(e)
+ End Sub
+
+ Private Function GetSelectedFromLocation(P As Point) As Integer
+
+ If Not IsNothing(Items) Then
+
+ For I = 0 To Items.Count - 1
+ If New Rectangle(1, 26 + I * ItemSize, Width - 2, ItemSize).Contains(P) Then
+ Return I
+ End If
+ Next
+
+ End If
+
+ Return -1
+
+ End Function
+
+End Class
+
+Public Class AnimaTextBox
+ Inherits Control
+
+ Private G As Graphics
+ Private WithEvents T As TextBox
+
+ Private AnimatingT As Thread
+ Private AnimatingT2 As Thread
+
+ Private RGB() As Integer = {45, 45, 48}
+ Private RGB1 As Integer = 45
+ Private Block As Boolean
+
+ Public Property Dark As Boolean
+
+ Public Property Numeric As Boolean
+
+ Public Shadows Property Text As String
+ Get
+ Return T.Text
+ End Get
+ Set(value As String)
+ MyBase.Text = Value
+ T.Text = Value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Property MaxLength As Integer
+ Get
+ Return T.MaxLength
+ End Get
+ Set(value As Integer)
+ T.MaxLength = Value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Property UseSystemPasswordChar As Boolean
+ Get
+ Return T.UseSystemPasswordChar
+ End Get
+ Set(value As Boolean)
+ T.UseSystemPasswordChar = Value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Property MultiLine As Boolean
+ Get
+ Return T.Multiline
+ End Get
+ Set(value As Boolean)
+ T.Multiline = Value
+ Size = New Size(T.Width + 2, T.Height + 2)
+ Invalidate()
+ End Set
+ End Property
+
+ Public Shadows Property [ReadOnly] As Boolean
+ Get
+ Return T.ReadOnly
+ End Get
+ Set(value As Boolean)
+ T.ReadOnly = Value
+ Invalidate()
+ End Set
+ End Property
+
+ Sub New()
+ DoubleBuffered = True
+
+ T = New TextBox With {
+ .BorderStyle = BorderStyle.None,
+ .ForeColor = Color.FromArgb(200, 200, 200),
+ .BackColor = Color.FromArgb(55, 55, 58),
+ .Location = New Point(6, 5),
+ .Multiline = False}
+
+ Controls.Add(T)
+ End Sub
+
+ Protected Overrides Sub CreateHandle()
+ If Dark Then
+ RGB = {42, 42, 45}
+ RGB1 = 45
+ T.BackColor = Color.FromArgb(45, 45, 48)
+ Else
+ RGB = {70, 70, 70}
+ RGB1 = 70
+ T.BackColor = Color.FromArgb(55, 55, 58)
+ End If
+ MyBase.CreateHandle()
+ End Sub
+
+ Protected Overrides Sub OnEnter(e As EventArgs)
+ T.Select()
+ MyBase.OnEnter(e)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ G = e.Graphics
+
+ If Enabled Then
+
+ If Dark Then
+ G.Clear(Color.FromArgb(45, 45, 48))
+
+ Using Border As New Pen(Color.FromArgb(RGB(0), RGB(1), RGB(2)))
+ G.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ Else
+ G.Clear(Color.FromArgb(55, 55, 58))
+
+ Using Shadow As New Pen(Color.FromArgb(42, 42, 45)), Border As New Pen(Color.FromArgb(RGB(0), RGB(1), RGB(2)))
+ G.DrawRectangle(Border, New Rectangle(1, 1, Width - 3, Height - 3))
+ G.DrawRectangle(Shadow, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ End If
+
+ Else
+
+ G.Clear(Color.FromArgb(50, 50, 53))
+ T.BackColor = Color.FromArgb(50, 50, 53)
+
+ Using Border As New Pen(Color.FromArgb(42, 42, 45)), Shadow As New Pen(Color.FromArgb(66, 66, 69))
+ e.Graphics.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ e.Graphics.DrawRectangle(Shadow, New Rectangle(1, 1, Width - 3, Height - 3))
+ End Using
+
+ End If
+
+ MyBase.OnPaint(e)
+
+ End Sub
+
+ Private Sub TEnter() Handles T.Enter
+
+ If Not Block Then
+ AnimatingT = New Thread(AddressOf DoAnimation) With {
+ .IsBackground = True}
+ AnimatingT.Start()
+ End If
+
+ End Sub
+
+ Private Sub TKeyPress(sender As Object, e As KeyPressEventArgs) Handles T.KeyPress
+
+ If Numeric Then
+
+ If Asc(e.KeyChar) <> 8 Then
+ If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
+ e.Handled = True
+ End If
+ End If
+
+ End If
+
+ End Sub
+
+ Private Sub TLeave() Handles T.Leave
+ AnimatingT2 = New Thread(AddressOf UndoAnimation) With {
+ .IsBackground = True}
+ AnimatingT2.Start()
+ End Sub
+
+ Protected Overrides Sub OnResize(e As EventArgs)
+ If MultiLine Then
+ T.Size = New Size(Width - 7, Height - 7) : Invalidate()
+ Else
+ T.Size = New Size(Width - 8, Height - 15) : Invalidate()
+ End If
+ MyBase.OnResize(e)
+ End Sub
+
+ Private Sub TTextChanged() Handles T.TextChanged
+ OnTextChanged(EventArgs.Empty)
+ End Sub
+
+ Private Sub DoAnimation()
+
+ While RGB(2) < 204 AndAlso Not Block
+
+ RGB(1) += 1
+ RGB(2) += 2
+
+ Invalidate()
+ Thread.Sleep(5)
+
+ End While
+
+ End Sub
+
+ Private Sub UndoAnimation()
+
+ Block = True
+
+ While RGB(2) > RGB1
+
+ RGB(1) -= 1
+ RGB(2) -= 2
+
+ Invalidate()
+ Thread.Sleep(5)
+
+ End While
+
+ Block = False
+
+ End Sub
+
+End Class
+
+Public Class AnimaProgressBar
+ Inherits ProgressBar
+
+ Private G As Graphics
+
+ Dim _backColor As Color = Color.FromArgb(35, 35, 38)
+ Public Overrides Property BackColor As Color
+ Get
+ Return _backColor
+ End Get
+ Set(ByVal value As Color)
+ _backColor = value
+ Invalidate()
+ End Set
+ End Property
+
+ Dim _BorderColor As Color = Color.FromArgb(35, 35, 38)
+ Public Property BorderColors As Color
+ Get
+ Return _BorderColor
+ End Get
+ Set(ByVal value As Color)
+ _BorderColor = value
+ Invalidate()
+ End Set
+ End Property
+
+ Sub New()
+ SetStyle(ControlStyles.UserPaint Or ControlStyles.OptimizedDoubleBuffer Or ControlStyles.AllPaintingInWmPaint, True)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ G = e.Graphics
+
+ MyBase.OnPaint(e)
+
+ G.Clear(Color.FromArgb(37, 37, 40))
+
+ Using Border As New Pen(_BorderColor)
+ G.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ Using Background As New SolidBrush(_backColor)
+ G.FillRectangle(Background, New Rectangle(0, 0, Value / Maximum * Width - 1, Height - 1))
+ End Using
+
+ End Sub
+
+End Class
+
+Public Class AnimaCheckBox
+ Inherits CheckBox
+
+ Private G As Graphics
+
+ Private AnimatingT As Thread
+ Private AnimatingT2 As Thread
+
+ Private RGB() As Integer = {36, 36, 39}
+
+ Private Block As Boolean
+
+ Public Property Radio As Boolean
+
+ Public Property Caution As Boolean
+
+ Private Const CheckedIcon As String = "iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAMAAABVLlSxAAAASFBMVEUlJSYuLi8oKCmlpaXx8fGioqJoaGjOzs8+Pj/k5OTu7u5LS0zIyMiBgYKFhYXo6OhUVFWVlZW7u7t+fn7h4eE5OTlfX1+YmJn8uq7eAAAAA3RSTlMAAAD6dsTeAAAACXBIWXMAAABIAAAASABGyWs+AAAAO0lEQVQI12NgwAKYWVhhTDYWdkYok4OTixvCYGDiYeEFM/n4BQRZhCDywiz8XCKiDDAOixjcPGFxDCsASakBdDYGvzAAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMTItMTRUMTI6MDM6MjktMDY6MDB4J65tAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTEyLTE0VDEyOjAzOjI5LTA2OjAwCXoW0QAAAABJRU5ErkJggg=="
+
+ Sub New()
+ DoubleBuffered = True
+ Font = New Font("Segoe UI", 9)
+ ForeColor = Color.FromArgb(200, 200, 200)
+ SetStyle(ControlStyles.UserPaint Or ControlStyles.OptimizedDoubleBuffer Or ControlStyles.AllPaintingInWmPaint, True)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ G = e.Graphics
+ G.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
+
+ G.Clear(BackColor)
+
+ Using Background As New SolidBrush(Color.FromArgb(38, 38, 41))
+ G.FillRectangle(Background, New Rectangle(0, 0, 16, 16))
+ End Using
+
+ Using Border As New Pen(Color.FromArgb(RGB(0), RGB(1), RGB(2)))
+ G.DrawRectangle(Border, New Rectangle(0, 0, 16, 16))
+ End Using
+
+ Using Fore As New SolidBrush(ForeColor)
+ G.DrawString(Text, Font, Fore, New Point(22, 0))
+ End Using
+
+ If Checked Then
+
+ Using Mark As Image = Image.FromStream(New IO.MemoryStream(Convert.FromBase64String(CheckedIcon)))
+ G.DrawImage(Mark, New Point(2, 3))
+ End Using
+
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnMouseEnter(e As EventArgs)
+
+ If Not Block Then
+ AnimatingT = New Thread(AddressOf DoAnimation) With {
+ .IsBackground = True}
+ AnimatingT.Start()
+ End If
+
+ MyBase.OnMouseEnter(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseLeave(e As EventArgs)
+ AnimatingT2 = New Thread(AddressOf UndoAnimation) With {
+ .IsBackground = True}
+ AnimatingT2.Start()
+
+ MyBase.OnMouseLeave(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
+ If Radio Then
+ For Each C As AnimaCheckBox In Parent.Controls.OfType(Of AnimaCheckBox)()
+ If C.Radio Then
+ C.Checked = False
+ End If
+ Next
+ End If
+
+ MyBase.OnMouseUp(e)
+ End Sub
+
+ Private Sub DoAnimation()
+
+ If Caution Then
+
+ While RGB(2) < 130 AndAlso Not Block
+
+ RGB(1) += 1
+ RGB(2) += 1
+
+ Invalidate()
+ Thread.Sleep(4)
+
+ End While
+
+ Else
+
+ While RGB(2) < 204 AndAlso Not Block
+
+ RGB(1) += 1
+ RGB(2) += 2
+
+ Invalidate()
+ Thread.Sleep(4)
+
+ End While
+
+ End If
+
+ End Sub
+
+ Private Sub UndoAnimation()
+
+ Block = True
+
+ If Caution Then
+
+ While RGB(2) > 42
+
+ RGB(1) -= 1
+ RGB(2) -= 1
+
+ Invalidate()
+ Thread.Sleep(4)
+
+ End While
+
+ Else
+
+ While RGB(2) > 42
+
+ RGB(1) -= 1
+ RGB(2) -= 2
+
+ Invalidate()
+ Thread.Sleep(4)
+
+ End While
+
+ End If
+
+ Block = False
+
+ End Sub
+
+End Class
+
+Public Class AnimaHeader
+ Inherits Control
+
+ Private G As Graphics
+
+ Sub New()
+ DoubleBuffered = True
+ Font = New Font("Segoe UI", 9)
+ Location = New Point(1, 1)
+ Size = New Size(Width - 2, 36)
+ ForeColor = Color.FromArgb(200, 200, 200)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ G = e.Graphics
+
+ Using Background As New SolidBrush(Color.FromArgb(55, 55, 58))
+ G.FillRectangle(Background, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ Using Line As New Pen(Color.FromArgb(43, 43, 46))
+ G.DrawLine(Line, 0, Height - 1, Width - 1, Height - 1)
+ End Using
+
+ Using Fore As New SolidBrush(ForeColor)
+ G.DrawString(Text, Font, Fore, New Point(6, 6))
+ End Using
+
+ MyBase.OnPaint(e)
+ End Sub
+
+End Class
+
+Public Class AnimaForm
+ Inherits ContainerControl
+
+ Private G As Graphics
+
+ Sub New()
+ BackColor = Color.FromArgb(45, 45, 48)
+ DoubleBuffered = True
+ Font = New Font("Segoe UI", 9)
+ Dock = DockStyle.Fill
+ ForeColor = Color.FromArgb(200, 200, 200)
+ End Sub
+
+ Protected Overrides Sub OnCreateControl()
+ ParentForm.FormBorderStyle = FormBorderStyle.None
+ MyBase.OnCreateControl()
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ G = e.Graphics
+
+ Using Background As New SolidBrush(Color.FromArgb(50, 50, 50))
+ G.FillRectangle(Background, New Rectangle(0, 0, Width - 1, 36))
+ End Using
+
+ Using Line As New Pen(Color.FromArgb(43, 43, 46))
+ G.DrawLine(Line, 0, 36, Width - 1, 36)
+ End Using
+
+ Using Fore As New SolidBrush(ForeColor)
+ G.DrawString(Text, Font, Fore, New Point(10, 10))
+ End Using
+
+ Using Border As New Pen(Color.FromArgb(35, 35, 38))
+ e.Graphics.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ MyBase.OnPaint(e)
+ End Sub
+
+ Private Drag As Boolean
+ Private MousePoint, Temporary As New Point
+
+ Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
+
+ If e.Button = MouseButtons.Left AndAlso e.Y < 36 Then
+ Drag = True
+ MousePoint.X = e.X
+ MousePoint.Y = e.Y
+ End If
+
+ MyBase.OnMouseDown(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
+ If e.Button = MouseButtons.Left Then
+ Drag = False
+ End If
+
+ MyBase.OnMouseUp(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseMove(e As MouseEventArgs)
+
+ If Drag Then
+ Temporary.X = Parent.Location.X + (e.X - MousePoint.X)
+ Temporary.Y = Parent.Location.Y + (e.Y - MousePoint.Y)
+ Parent.Location = Temporary
+ Temporary = Nothing
+ End If
+
+ MyBase.OnMouseMove(e)
+ End Sub
+End Class
+
+Public Class AnimaButton
+ Inherits Button
+
+ Private G As Graphics
+
+ Private HoverAnim, CHoverAnim, DownAnimationT As Thread
+
+ Private RGB() As Integer = {42, 42, 45}
+
+ Private Loc As New Point()
+ Private RSize As New Size()
+
+ Private Block As Boolean
+
+ Private Animate As Boolean
+
+ Public Property ImageLocation As Point = New Point(Width / 2 - 7, 6)
+
+ Public Property ImageSize As Size = New Size(14, 14)
+
+ Sub New()
+ DoubleBuffered = True
+ Font = New Font("Segoe UI", 9)
+ ForeColor = Color.FromArgb(200, 200, 200)
+ SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer, True)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ G = e.Graphics
+
+ G.Clear(BackColor)
+
+ Using Background As New SolidBrush(Color.FromArgb(55, 55, 58))
+ G.FillRectangle(Background, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ If Animate Then
+
+ Using Background As New SolidBrush(Color.FromArgb(66, 66, 69))
+ G.FillEllipse(Background, New Rectangle(Loc.X, -30, RSize.Width, 80))
+ End Using
+
+ End If
+
+ Using Border As New Pen(Color.FromArgb(RGB(0), RGB(1), RGB(2)))
+ G.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ If Not IsNothing(Image) Then
+ G.DrawImage(Image, New Rectangle(ImageLocation, ImageSize))
+ Else
+ Using Fore As New SolidBrush(ForeColor)
+ G.DrawString(Text, Font, Fore, MiddlePoint(G, Text, Font, New Rectangle(0, 0, Width - 1, Height - 1)))
+ End Using
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnMouseEnter(e As EventArgs)
+
+ If Not Block Then
+ HoverAnim = New Thread(AddressOf DoAnimation) With {
+ .IsBackground = True}
+ HoverAnim.Start()
+ End If
+
+ MyBase.OnMouseEnter(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseLeave(e As EventArgs)
+ CHoverAnim = New Thread(AddressOf UndoAnimation) With {
+ .IsBackground = True}
+ CHoverAnim.Start()
+
+ MyBase.OnMouseLeave(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
+
+ DownAnimationT = New Thread(Sub() DoBackAnimation(e.Location)) With {
+ .IsBackground = True}
+ DownAnimationT.Start()
+
+ MyBase.OnMouseDown(e)
+ End Sub
+
+ Private Sub DoBackAnimation(P As Point)
+
+ Loc = P
+ RSize = New Size()
+
+ Animate = True : Invalidate()
+
+ While RSize.Width < Width * 3
+ Loc.X -= 1
+ RSize.Width += 2
+ Thread.Sleep(4)
+ Invalidate()
+ End While
+
+ Animate = False : Invalidate()
+
+ End Sub
+
+ Private Sub DoAnimation()
+
+
+ While RGB(2) < 204 AndAlso Not Block
+
+ RGB(1) += 1
+ RGB(2) += 2
+
+ Invalidate()
+ Thread.Sleep(5)
+
+ End While
+
+ End Sub
+
+ Private Sub UndoAnimation()
+
+ Block = True
+
+ While RGB(2) > 45
+
+ RGB(1) -= 1
+ RGB(2) -= 2
+
+ Invalidate()
+ Thread.Sleep(5)
+
+ End While
+
+ Block = False
+
+ End Sub
+
+End Class
+
+Public Class Renderer
+ Inherits ToolStripRenderer
+
+ Public Event PaintMenuBackground(sender As Object, e As ToolStripRenderEventArgs)
+ Public Event PaintMenuBorder(sender As Object, e As ToolStripRenderEventArgs)
+ Public Event PaintMenuImageMargin(sender As Object, e As ToolStripRenderEventArgs)
+ Public Event PaintItemCheck(sender As Object, e As ToolStripItemImageRenderEventArgs)
+ Public Event PaintItemImage(sender As Object, e As ToolStripItemImageRenderEventArgs)
+ Public Event PaintItemText(sender As Object, e As ToolStripItemTextRenderEventArgs)
+ Public Event PaintItemBackground(sender As Object, e As ToolStripItemRenderEventArgs)
+ Public Event PaintItemArrow(sender As Object, e As ToolStripArrowRenderEventArgs)
+ Public Event PaintSeparator(sender As Object, e As ToolStripSeparatorRenderEventArgs)
+
+ Protected Overrides Sub OnRenderToolStripBackground(e As ToolStripRenderEventArgs)
+ RaiseEvent PaintMenuBackground(Me, e)
+ End Sub
+
+ Protected Overrides Sub OnRenderImageMargin(e As ToolStripRenderEventArgs)
+ RaiseEvent PaintMenuImageMargin(Me, e)
+ End Sub
+
+ Protected Overrides Sub OnRenderToolStripBorder(e As ToolStripRenderEventArgs)
+ RaiseEvent PaintMenuBorder(Me, e)
+ End Sub
+
+ Protected Overrides Sub OnRenderItemCheck(e As ToolStripItemImageRenderEventArgs)
+ RaiseEvent PaintItemCheck(Me, e)
+ End Sub
+
+ Protected Overrides Sub OnRenderItemImage(e As ToolStripItemImageRenderEventArgs)
+ RaiseEvent PaintItemImage(Me, e)
+ End Sub
+
+ Protected Overrides Sub OnRenderItemText(e As ToolStripItemTextRenderEventArgs)
+ RaiseEvent PaintItemText(Me, e)
+ End Sub
+
+ Protected Overrides Sub OnRenderMenuItemBackground(e As ToolStripItemRenderEventArgs)
+ RaiseEvent PaintItemBackground(Me, e)
+ End Sub
+
+ Protected Overrides Sub OnRenderArrow(e As ToolStripArrowRenderEventArgs)
+ RaiseEvent PaintItemArrow(Me, e)
+ End Sub
+
+ Protected Overrides Sub OnRenderSeparator(e As ToolStripSeparatorRenderEventArgs)
+ RaiseEvent PaintSeparator(Me, e)
+ End Sub
+
+End Class
+
+Public Class AnimaContextMenuStrip
+ Inherits ContextMenuStrip
+
+ Private G As Graphics
+ Private Rect As Rectangle
+
+ Sub New()
+ Font = New Font("Segoe UI", 9)
+ ForeColor = Color.FromArgb(200, 200, 200)
+ Dim Render As New Renderer()
+ AddHandler Render.PaintMenuBackground, AddressOf Renderer_PaintMenuBackground
+ AddHandler Render.PaintMenuBorder, AddressOf Renderer_PaintMenuBorder
+ AddHandler Render.PaintItemImage, AddressOf Renderer_PaintItemImage
+ AddHandler Render.PaintItemText, AddressOf Renderer_PaintItemText
+ AddHandler Render.PaintItemBackground, AddressOf Renderer_PaintItemBackground
+ AddHandler Render.PaintItemArrow, AddressOf Rendered_PaintItemArrow
+
+ Renderer = Render
+ End Sub
+
+ Private Sub Rendered_PaintItemArrow(sender As Object, e As ToolStripArrowRenderEventArgs)
+ G = e.Graphics
+
+ Using F As New Font("Marlett", 10), Fore As New SolidBrush(Color.FromArgb(130, 130, 130))
+ G.DrawString("4", F, Fore, New Point(e.ArrowRectangle.X, e.ArrowRectangle.Y + 2))
+ End Using
+
+ End Sub
+
+ Private Sub Renderer_PaintMenuBackground(sender As Object, e As ToolStripRenderEventArgs)
+ G = e.Graphics
+
+ G.Clear(Color.FromArgb(55, 55, 58))
+ End Sub
+
+ Private Sub Renderer_PaintMenuBorder(sender As Object, e As ToolStripRenderEventArgs)
+
+ G = e.Graphics
+
+ Using Border As New Pen(Color.FromArgb(35, 35, 38))
+ G.DrawRectangle(Border, New Rectangle(e.AffectedBounds.X, e.AffectedBounds.Y, e.AffectedBounds.Width - 1, e.AffectedBounds.Height - 1))
+ End Using
+
+ End Sub
+
+ Private Sub Renderer_PaintItemImage(sender As Object, e As ToolStripItemImageRenderEventArgs)
+
+ G = e.Graphics
+
+ G.DrawImage(e.Image, New Point(10, 1))
+
+ End Sub
+
+ Private Sub Renderer_PaintItemText(sender As Object, e As ToolStripItemTextRenderEventArgs)
+
+ G = e.Graphics
+
+ Using Fore As New SolidBrush(e.TextColor)
+ G.DrawString(e.Text, Font, Fore, New Point(e.TextRectangle.X, e.TextRectangle.Y - 1))
+ End Using
+
+ End Sub
+
+ Private Sub Renderer_PaintItemBackground(sender As Object, e As ToolStripItemRenderEventArgs)
+
+ G = e.Graphics
+
+ Rect = e.Item.ContentRectangle
+
+ If e.Item.Selected Then
+
+ Using Background As New SolidBrush(Color.FromArgb(85, 85, 85))
+ G.FillRectangle(Background, New Rectangle(Rect.X - 4, Rect.Y - 1, Rect.Width + 4, Rect.Height - 1))
+ End Using
+
+ End If
+
+ End Sub
+
+End Class
+
+Public Class AnimaStatusBar
+ Inherits Control
+
+ Private G As Graphics
+
+ Private Body As Color = Color.FromArgb(0, 122, 204)
+ Private Outline As Color = Color.FromArgb(0, 126, 204)
+
+ Public Property Type As Types
+
+ Public Enum Types As Byte
+ Basic = 0
+ Warning = 1
+ Wrong = 2
+ Success = 3
+ End Enum
+
+ Sub New()
+ DoubleBuffered = True
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ G = e.Graphics
+
+ Select Case Type
+
+ Case Types.Basic
+
+ Body = Color.FromArgb(0, 122, 204)
+ Outline = Color.FromArgb(0, 126, 204)
+
+ Case Types.Warning
+
+ Body = Color.FromArgb(210, 143, 75)
+ Outline = Color.FromArgb(214, 147, 75)
+
+ Case Types.Wrong
+
+ Body = Color.FromArgb(212, 110, 110)
+ Outline = Color.FromArgb(216, 114, 114)
+
+ Case Else
+
+ Body = Color.FromArgb(45, 193, 90)
+ Outline = Color.FromArgb(45, 197, 90)
+
+ End Select
+
+ Using Background As New SolidBrush(Body), Line As New Pen(Outline)
+ G.FillRectangle(Background, New Rectangle(0, 0, Width - 1, Height - 1))
+ G.DrawLine(Line, 0, 0, Width - 2, 0)
+ End Using
+
+ Using Fore As New SolidBrush(Color.FromArgb(255, 255, 255)), Font As New Font("Segoe UI semibold", 8)
+ G.DrawString(Text, Font, Fore, New Point(4, 2))
+ End Using
+
+ MyBase.OnPaint(e)
+ End Sub
+
+ Protected Overrides Sub OnTextChanged(e As EventArgs)
+ Invalidate()
+ MyBase.OnTextChanged(e)
+ End Sub
+
+End Class
+
+Public Class AnimaTabControl
+ Inherits TabControl
+
+ Private G As Graphics
+ Private Rect As Rectangle
+
+ Protected Overrides Sub OnControlAdded(e As ControlEventArgs)
+ e.Control.BackColor = Color.FromArgb(45, 45, 48)
+ e.Control.ForeColor = Color.FromArgb(200, 200, 200)
+ e.Control.Font = New Font("Segoe UI", 9)
+ MyBase.OnControlAdded(e)
+ End Sub
+
+ Sub New()
+ DoubleBuffered = True
+ Font = New Font("Segoe UI", 9)
+ ForeColor = Color.FromArgb(200, 200, 200)
+ ItemSize = New Size(18, 18)
+ SizeMode = TabSizeMode.Fixed
+ Alignment = TabAlignment.Top
+ SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque Or ControlStyles.OptimizedDoubleBuffer, True)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ G = e.Graphics
+
+ G.Clear(Parent.BackColor)
+
+ For I = 0 To TabPages.Count - 1
+
+ Rect = GetTabRect(I)
+
+ If SelectedIndex = I Then
+
+ Using Background As New SolidBrush(Color.FromArgb(41, 130, 232)), Border As New Pen(Color.FromArgb(38, 127, 229))
+ G.FillRectangle(Background, New Rectangle(Rect.X + 5, Rect.Y + 2, 12, 12))
+ G.DrawRectangle(Border, New Rectangle(Rect.X + 5, Rect.Y + 2, 12, 12))
+ End Using
+
+ Else
+
+ Using Background As New SolidBrush(Color.FromArgb(70, 70, 73)), Border As New Pen(Color.FromArgb(42, 42, 45))
+ G.FillRectangle(Background, New Rectangle(Rect.X + 5, Rect.Y + 2, 12, 12))
+ G.DrawRectangle(Border, New Rectangle(Rect.X + 5, Rect.Y + 2, 12, 12))
+ End Using
+
+ End If
+
+ Next
+
+ MyBase.OnPaint(e)
+ End Sub
+
+End Class
+
+Public Class AnimaGroupBox
+ Inherits Control
+
+ Sub New()
+ DoubleBuffered = True
+ ForeColor = Color.FromArgb(200, 200, 200)
+ BackColor = Color.FromArgb(50, 50, 53)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ e.Graphics.Clear(BackColor)
+
+ Using Border As New Pen(Color.FromArgb(42, 42, 45)), HBackground As New SolidBrush(Color.FromArgb(60, 60, 63)), Shadow As New Pen(Color.FromArgb(66, 66, 69))
+ e.Graphics.FillRectangle(HBackground, New Rectangle(1, 0, Width - 2, 26))
+ e.Graphics.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, 26))
+ e.Graphics.DrawLine(Shadow, 1, 25, Width - 2, 25)
+ e.Graphics.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ Using Fore As New SolidBrush(ForeColor)
+ e.Graphics.DrawString(Text, Font, Fore, New Point(4, 4))
+ End Using
+
+ MyBase.OnPaint(e)
+
+ End Sub
+
+End Class
+
+Public Class AnimaExperimentalControlBox
+ Inherits Control
+
+ Public Property TextHeight As Integer = 4
+
+ Public Property ComboHeight As Integer = 24
+
+ Public Property Items As String()
+
+ Public Property SelectedIndex As Integer = 0
+
+ Public Property ItemSize As Integer = 24
+
+ Public Property SelectedItem As String
+
+ Public Property AnimaGroupBoxContainer As AnimaGroupBox
+
+ Public Property CurrentLocation As Point
+
+ Public Event SelectedIndexChanged()
+
+ Private Open As Boolean
+ Private ItemsHeight As Integer = 0
+ Private Hover As Integer = -1
+
+ Sub New()
+ DoubleBuffered = True
+ Font = New Font("Segoe UI", 9)
+ ForeColor = Color.FromArgb(200, 200, 200)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ e.Graphics.Clear(Parent.BackColor)
+
+ If Enabled Then
+
+ If Not IsNothing(Items) Then
+ ItemsHeight = Items.Count * ItemSize
+ End If
+
+ If Not DesignMode Then
+ If Open Then
+ Height = ItemsHeight + ComboHeight + 5
+ Else
+ Height = ComboHeight + 1
+ End If
+ End If
+
+ Using Background As New SolidBrush(Color.FromArgb(55, 55, 58)), Border As New Pen(Color.FromArgb(42, 42, 45)), Shadow As New Pen(Color.FromArgb(66, 66, 69))
+ e.Graphics.FillRectangle(Background, New Rectangle(0, 0, Width - 1, ComboHeight - 1))
+ e.Graphics.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, ComboHeight - 1))
+ e.Graphics.DrawRectangle(Shadow, New Rectangle(1, 1, Width - 3, ComboHeight - 3))
+ End Using
+
+ If IsNothing(Items) Then
+ SelectedIndex = -1
+
+ ElseIf Not SelectedIndex = -1 Then
+
+ Using Fore As New SolidBrush(ForeColor)
+ e.Graphics.DrawString(Items(SelectedIndex), Font, Fore, New Point(4, 4))
+ End Using
+
+ End If
+
+ If Open Then
+
+ Using Background As New SolidBrush(Color.FromArgb(60, 60, 63)), Border As New Pen(Color.FromArgb(41, 130, 232))
+ e.Graphics.FillRectangle(Background, New Rectangle(1, ComboHeight, Width - 3, ItemsHeight))
+ e.Graphics.DrawRectangle(Border, New Rectangle(1, ComboHeight, Width - 3, ItemsHeight))
+ End Using
+
+ If Not Hover = -1 Then
+
+ Using Background As New SolidBrush(Color.FromArgb(41, 130, 232)), Border As New Pen(Color.FromArgb(40, 40, 40))
+ e.Graphics.FillRectangle(Background, New Rectangle(1, ComboHeight + Hover * ItemSize, Width - 2, ItemSize))
+ e.Graphics.DrawLine(Border, 1, ComboHeight + Hover * ItemSize + ItemSize, Width - 2, ComboHeight + Hover * ItemSize + ItemSize)
+ End Using
+
+ End If
+
+ For I = 0 To Items.Count - 1
+
+ If Hover = I Then
+
+ Using Fore As New SolidBrush(Color.FromArgb(15, 15, 15))
+ e.Graphics.DrawString(Items(I), Font, Fore, New Point(4, ComboHeight + TextHeight + I * ItemSize))
+ End Using
+
+ Else
+
+ Using Fore As New SolidBrush(ForeColor)
+ e.Graphics.DrawString(Items(I), Font, Fore, New Point(4, ComboHeight + TextHeight + I * ItemSize))
+ End Using
+
+ End If
+
+ Next
+
+ End If
+
+ Else
+ Using Background As New SolidBrush(Color.FromArgb(50, 50, 53)), Border As New Pen(Color.FromArgb(42, 42, 45)), Shadow As New Pen(Color.FromArgb(66, 66, 69))
+ e.Graphics.FillRectangle(Background, New Rectangle(0, 0, Width - 1, ComboHeight - 1))
+ e.Graphics.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, ComboHeight - 1))
+ e.Graphics.DrawRectangle(Shadow, New Rectangle(1, 1, Width - 3, ComboHeight - 3))
+ End Using
+
+ If Not IsNothing(Items) AndAlso Not SelectedIndex = -1 Then
+
+ Using Fore As New SolidBrush(Color.FromArgb(140, 140, 140))
+ e.Graphics.DrawString(Items(SelectedIndex), Font, Fore, New Point(4, 4))
+ End Using
+
+ End If
+
+ End If
+
+ MyBase.OnPaint(e)
+ End Sub
+
+ Protected Overrides Sub OnLostFocus(e As EventArgs)
+ Open = False : Invalidate()
+ MyBase.OnLostFocus(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
+
+ ' If Not Open Then Main.BTab1.SendToBack() : Else : BringToFront()
+
+ If Open AndAlso Not ItemsHeight = 0 Then
+
+ For I = 0 To Items.Count - 1
+
+ If New Rectangle(0, ComboHeight + I * ItemSize, Width - 1, ItemSize).Contains(e.Location) Then
+ SelectedIndex = I : Invalidate()
+ SelectedItem = Items(SelectedIndex)
+ Exit For
+ End If
+
+ Next
+
+ End If
+
+ If Not New Rectangle(0, 0, Width - 1, ComboHeight + 4).Contains(e.Location) Then
+ If Open AndAlso Not SelectedIndex = -1 Then RaiseEvent SelectedIndexChanged()
+ End If
+
+ Open = Not Open : Invalidate()
+ Me.Select()
+ MyBase.OnMouseDown(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseMove(e As MouseEventArgs)
+
+ If Open AndAlso Not ItemsHeight = 0 Then
+
+ For I = 0 To Items.Count - 1
+
+ If New Rectangle(0, ComboHeight + I * ItemSize, Width - 1, ItemSize).Contains(e.Location) Then
+ Hover = I : Invalidate()
+ Exit For
+ End If
+
+ Next
+
+ End If
+
+ MyBase.OnMouseMove(e)
+ End Sub
+
+End Class
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/BoosterTheme.vb b/HALOCELauncher/Controls/BoosterTheme.vb
new file mode 100644
index 0000000..191e87d
--- /dev/null
+++ b/HALOCELauncher/Controls/BoosterTheme.vb
@@ -0,0 +1,1145 @@
+' // Booster Theme GDI+
+' // 9 Controls
+' // Made by AeroRev9 / Naywyn
+' // 02/22.
+
+Option Strict On
+
+Imports System.Threading
+Imports System.Drawing.Text
+Imports System.Drawing.Drawing2D
+Imports System.ComponentModel
+
+Friend Module Helpers1
+
+ Public G As Graphics
+ Private TargetStringMeasure As SizeF
+
+ Enum MouseState1 As Byte
+ None = 0
+ Over = 1
+ Down = 2
+ End Enum
+
+ Enum RoundingStyle As Byte
+ All = 0
+ Top = 1
+ Bottom = 2
+ Left = 3
+ Right = 4
+ TopRight = 5
+ BottomRight = 6
+ End Enum
+
+ Public Function ColorFromHex(Hex As String) As Color
+ Return Color.FromArgb(CInt(Long.Parse(String.Format("FFFFFFFFFF{0}", Hex.Substring(1)), Globalization.NumberStyles.HexNumber)))
+ End Function
+
+ Public Function MiddlePoint1(TargetText As String, TargetFont As Font, Rect As Rectangle) As Point
+ TargetStringMeasure = G.MeasureString(TargetText, TargetFont)
+ Return New Point(CInt(Rect.Width / 2 - TargetStringMeasure.Width / 2), CInt(Rect.Height / 2 - TargetStringMeasure.Height / 2))
+ End Function
+
+ Public Function RoundRect1(Rect As Rectangle, Rounding As Integer, Optional Style As RoundingStyle = RoundingStyle.All) As GraphicsPath
+
+ Dim GP As New GraphicsPath()
+ Dim AW As Integer = Rounding * 2
+
+ GP.StartFigure()
+
+ If Rounding = 0 Then
+ GP.AddRectangle(Rect)
+ GP.CloseAllFigures()
+ Return GP
+ End If
+
+ Select Case Style
+ Case RoundingStyle.All
+ GP.AddArc(New Rectangle(Rect.X, Rect.Y, AW, AW), -180, 90)
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Y, AW, AW), -90, 90)
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 0, 90)
+ GP.AddArc(New Rectangle(Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 90, 90)
+ Case RoundingStyle.Top
+ GP.AddArc(New Rectangle(Rect.X, Rect.Y, AW, AW), -180, 90)
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Y, AW, AW), -90, 90)
+ GP.AddLine(New Point(Rect.X + Rect.Width, Rect.Y + Rect.Height), New Point(Rect.X, Rect.Y + Rect.Height))
+ Case RoundingStyle.Bottom
+ GP.AddLine(New Point(Rect.X, Rect.Y), New Point(Rect.X + Rect.Width, Rect.Y))
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 0, 90)
+ GP.AddArc(New Rectangle(Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 90, 90)
+ Case RoundingStyle.Left
+ GP.AddArc(New Rectangle(Rect.X, Rect.Y, AW, AW), -180, 90)
+ GP.AddLine(New Point(Rect.X + Rect.Width, Rect.Y), New Point(Rect.X + Rect.Width, Rect.Y + Rect.Height))
+ GP.AddArc(New Rectangle(Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 90, 90)
+ Case RoundingStyle.Right
+ GP.AddLine(New Point(Rect.X, Rect.Y + Rect.Height), New Point(Rect.X, Rect.Y))
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Y, AW, AW), -90, 90)
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 0, 90)
+ Case RoundingStyle.TopRight
+ GP.AddLine(New Point(Rect.X, Rect.Y + 1), New Point(Rect.X, Rect.Y))
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Y, AW, AW), -90, 90)
+ GP.AddLine(New Point(Rect.X + Rect.Width, Rect.Y + Rect.Height - 1), New Point(Rect.X + Rect.Width, Rect.Y + Rect.Height))
+ GP.AddLine(New Point(Rect.X + 1, Rect.Y + Rect.Height), New Point(Rect.X, Rect.Y + Rect.Height))
+ Case RoundingStyle.BottomRight
+ GP.AddLine(New Point(Rect.X, Rect.Y + 1), New Point(Rect.X, Rect.Y))
+ GP.AddLine(New Point(Rect.X + Rect.Width - 1, Rect.Y), New Point(Rect.X + Rect.Width, Rect.Y))
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 0, 90)
+ GP.AddLine(New Point(Rect.X + 1, Rect.Y + Rect.Height), New Point(Rect.X, Rect.Y + Rect.Height))
+ End Select
+
+ GP.CloseAllFigures()
+
+ Return GP
+
+ End Function
+
+End Module
+
+Public Class BoosterButton
+ Inherits Button
+
+ Private State As MouseState1
+ Private Gradient As LinearGradientBrush
+
+ Sub New()
+ DoubleBuffered = True
+ Font = New Font("Segoe UI", 9)
+ ForeColor = HelpersXylos.ColorFromHex("#B6B6B6")
+ SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque Or ControlStyles.OptimizedDoubleBuffer, True)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ ThemeModule.G = e.Graphics
+ ThemeModule.G.SmoothingMode = SmoothingMode.HighQuality
+ ThemeModule.G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
+
+ MyBase.OnPaint(e)
+
+ ThemeModule.G.Clear(Parent.BackColor)
+
+ If Enabled Then
+
+ Select Case State
+ Case MouseState1.None
+ Gradient = New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), HelpersXylos.ColorFromHex("#606060"), HelpersXylos.ColorFromHex("#4E4E4E"), LinearGradientMode.Vertical)
+
+ Case MouseState1.Over
+ Gradient = New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), HelpersXylos.ColorFromHex("#6A6A6A"), HelpersXylos.ColorFromHex("#585858"), LinearGradientMode.Vertical)
+
+ Case MouseState1.Down
+ Gradient = New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), HelpersXylos.ColorFromHex("#565656"), HelpersXylos.ColorFromHex("#444444"), LinearGradientMode.Vertical)
+
+ End Select
+
+ ThemeModule.G.FillPath(Gradient, HelpersXylos.RoundRect1(New Rectangle(0, 0, Width - 1, Height - 1), 3))
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#323232"))
+ ThemeModule.G.DrawPath(Border, HelpersXylos.RoundRect1(New Rectangle(0, 0, Width - 1, Height - 1), 3))
+ End Using
+
+ '// Top Line
+ Select Case State
+
+ Case MouseState1.None
+
+ Using TopLine As New Pen(HelpersXylos.ColorFromHex("#737373"))
+ ThemeModule.G.DrawLine(TopLine, 4, 1, Width - 4, 1)
+ End Using
+
+ Case MouseState1.Over
+
+ Using TopLine As New Pen(HelpersXylos.ColorFromHex("#7D7D7D"))
+ ThemeModule.G.DrawLine(TopLine, 4, 1, Width - 4, 1)
+ End Using
+
+ Case MouseState1.Down
+
+ Using TopLine As New Pen(HelpersXylos.ColorFromHex("#696969"))
+ ThemeModule.G.DrawLine(TopLine, 4, 1, Width - 4, 1)
+ End Using
+
+ End Select
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#F5F5F5")), TextFont As New Font("Segoe UI", 9)
+ ThemeModule.G.DrawString(Text, TextFont, TextBrush, MiddlePoint1(Text, TextFont, New Rectangle(0, 0, Width + 2, Height)))
+ End Using
+
+ Else
+
+ Gradient = New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), HelpersXylos.ColorFromHex("#4C4C4C"), HelpersXylos.ColorFromHex("#3A3A3A"), LinearGradientMode.Vertical)
+
+ ThemeModule.G.FillPath(Gradient, HelpersXylos.RoundRect1(New Rectangle(0, 0, Width - 1, Height - 1), 3))
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#323232"))
+ ThemeModule.G.DrawPath(Border, HelpersXylos.RoundRect1(New Rectangle(0, 0, Width - 1, Height - 1), 3))
+ End Using
+
+ Using TopLine As New Pen(HelpersXylos.ColorFromHex("#5F5F5F"))
+ ThemeModule.G.DrawLine(TopLine, 4, 1, Width - 4, 1)
+ End Using
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#818181")), TextFont As New Font("Segoe UI", 9)
+ ThemeModule.G.DrawString(Text, TextFont, TextBrush, MiddlePoint1(Text, TextFont, New Rectangle(0, 0, Width + 2, Height)))
+ End Using
+
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnMouseEnter(e As EventArgs)
+ State = MouseState1.Over : Invalidate()
+ MyBase.OnMouseEnter(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseLeave(e As EventArgs)
+ State = MouseState1.None : Invalidate()
+ MyBase.OnMouseLeave(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
+ State = MouseState1.Down : Invalidate()
+ MyBase.OnMouseDown(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
+ State = MouseState1.Over : Invalidate()
+ MyBase.OnMouseUp(e)
+ End Sub
+
+End Class
+
+Public Class BoosterHeader
+ Inherits Control
+
+ Private TextMeasure As SizeF
+
+ Sub New()
+ ' Me.SetStyle(ControlStyles.DoubleBuffer And ControlStyles.UserPaint And ControlStyles.AllPaintingInWmPaint, True)
+
+ Me.SetStyle(ControlStyles.SupportsTransparentBackColor, True)
+ Me.SetStyle(ControlStyles.Opaque, True)
+ Me.UpdateStyles()
+ Me.BackColor = Color.Transparent
+ DoubleBuffered = True
+ Font = New Font("Segoe UI", 10)
+ ForeColor = HelpersXylos.ColorFromHex("#FFFFFF")
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ ThemeModule.G = e.Graphics
+ ThemeModule.G.SmoothingMode = SmoothingMode.HighQuality
+ ThemeModule.G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
+
+ ThemeModule.G.Clear(Parent.BackColor)
+ Parent.BackColor = Color.Transparent
+ Using Line As New Pen(HelpersXylos.ColorFromHex("#423AAA"))
+ ThemeModule.G.DrawLine(Line, 0, 6, Width - 1, 6)
+ End Using
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#FFFFFF")), TextFont As New Font("Segoe UI", 10), ParentFill As New SolidBrush(Parent.BackColor)
+ TextMeasure = ThemeModule.G.MeasureString(Text, TextFont)
+ ThemeModule.G.FillRectangle(ParentFill, New Rectangle(14, -4, CInt(TextMeasure.Width + 8), CInt(TextMeasure.Height + 4)))
+ ThemeModule.G.DrawString(Text, TextFont, TextBrush, New Point(20, -4))
+ End Using
+
+ MyBase.OnPaint(e)
+ End Sub
+
+ Protected Overrides Sub OnResize(e As EventArgs)
+ Size = New Size(Width, 14)
+ MyBase.OnResize(e)
+ End Sub
+
+End Class
+
+Public Class BoosterToolTip
+ Inherits ToolTip
+
+ Public Sub New()
+ OwnerDraw = True
+ BackColor = HelpersXylos.ColorFromHex("#242424")
+ AddHandler Draw, AddressOf OnDraw
+ End Sub
+
+ Private Sub OnDraw(sender As Object, e As DrawToolTipEventArgs)
+
+ ThemeModule.G = e.Graphics
+ ThemeModule.G.SmoothingMode = SmoothingMode.HighQuality
+ ThemeModule.G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
+
+ ThemeModule.G.Clear(HelpersXylos.ColorFromHex("#242424"))
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#343434"))
+ ThemeModule.G.DrawRectangle(Border, New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width - 1, e.Bounds.Height - 1))
+ End Using
+
+ If ToolTipIcon = ToolTipIcon.None Then
+
+ Using TextFont As New Font("Segoe UI", 9), TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#B6B6B6"))
+ ThemeModule.G.DrawString(e.ToolTipText, TextFont, TextBrush, New PointF(e.Bounds.X + 4, e.Bounds.Y + 1))
+ End Using
+
+ Else
+
+ Select Case ToolTipIcon
+
+ Case ToolTipIcon.Info
+
+ Using TextFont As New Font("Segoe UI", 9, FontStyle.Bold), TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#7FD88B"))
+ ThemeModule.G.DrawString("Information", TextFont, TextBrush, New PointF(e.Bounds.X + 4, e.Bounds.Y + 2))
+ End Using
+
+ Case ToolTipIcon.Warning
+
+ Using TextFont As New Font("Segoe UI", 9, FontStyle.Bold), TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#D8C67F"))
+ ThemeModule.G.DrawString("Warning", TextFont, TextBrush, New PointF(e.Bounds.X + 4, e.Bounds.Y + 2))
+ End Using
+
+ Case ToolTipIcon.Error
+
+ Using TextFont As New Font("Segoe UI", 9, FontStyle.Bold), TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#D87F7F"))
+ ThemeModule.G.DrawString("Error", TextFont, TextBrush, New PointF(e.Bounds.X + 4, e.Bounds.Y + 2))
+ End Using
+
+ End Select
+
+ Using TextFont As New Font("Segoe UI", 9), TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#B6B6B6"))
+ ThemeModule.G.DrawString(e.ToolTipText, TextFont, TextBrush, New PointF(e.Bounds.X + 4, e.Bounds.Y + 15))
+ End Using
+
+ End If
+
+ End Sub
+
+End Class
+
+
+Public Class BoosterTextBox
+ Inherits Control
+
+ Private WithEvents T As TextBox
+ Private State As MouseState1
+
+ Public Shadows Property Text As String
+ Get
+ Return T.Text
+ End Get
+ Set(value As String)
+ MyBase.Text = value
+ T.Text = value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Shadows Property Enabled As Boolean
+ Get
+ Return T.Enabled
+ End Get
+ Set(value As Boolean)
+ T.Enabled = value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Property UseSystemPasswordChar As Boolean
+ Get
+ Return T.UseSystemPasswordChar
+ End Get
+ Set(value As Boolean)
+ T.UseSystemPasswordChar = value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Property MultiLine() As Boolean
+ Get
+ Return T.Multiline
+ End Get
+ Set(ByVal value As Boolean)
+ T.Multiline = value
+ Size = New Size(T.Width + 2, T.Height + 2)
+ Invalidate()
+ End Set
+ End Property
+
+ Public Shadows Property [ReadOnly]() As Boolean
+ Get
+ Return T.ReadOnly
+ End Get
+ Set(ByVal value As Boolean)
+ T.ReadOnly = value
+ Invalidate()
+ End Set
+ End Property
+
+ Sub New()
+ DoubleBuffered = True
+
+ T = New TextBox With {
+ .BorderStyle = BorderStyle.None,
+ .BackColor = HelpersXylos.ColorFromHex("#242424"),
+ .ForeColor = HelpersXylos.ColorFromHex("#B6B6B6"),
+ .Location = New Point(1, 1),
+ .Multiline = True}
+
+ Controls.Add(T)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ ThemeModule.G = e.Graphics
+ ThemeModule.G.SmoothingMode = SmoothingMode.HighQuality
+ ThemeModule.G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
+
+ If Enabled Then
+
+ T.BackColor = HelpersXylos.ColorFromHex("#242424")
+
+ Select Case State
+
+ Case MouseState1.Down
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#C8C8C8"))
+ ThemeModule.G.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ Case Else
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#5C5C5C"))
+ ThemeModule.G.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ End Select
+
+ Else
+
+ T.BackColor = HelpersXylos.ColorFromHex("#282828")
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#484848"))
+ ThemeModule.G.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ End If
+
+ MyBase.OnPaint(e)
+
+ End Sub
+
+ Protected Overrides Sub OnEnter(e As EventArgs)
+ State = MouseState1.Down : Invalidate()
+ MyBase.OnEnter(e)
+ End Sub
+
+ Protected Overrides Sub OnLeave(e As EventArgs)
+ State = MouseState1.None : Invalidate()
+ MyBase.OnLeave(e)
+ End Sub
+
+ Protected Overrides Sub OnResize(e As EventArgs)
+ If MultiLine Then
+ T.Size = New Size(Width - 2, Height - 2) : Invalidate()
+ Else
+ T.Size = New Size(Width - 2, T.Height)
+ Size = New Size(Width, T.Height + 2)
+ End If
+ MyBase.OnResize(e)
+ End Sub
+
+ Private Sub TTextChanged() Handles T.TextChanged
+ MyBase.OnTextChanged(EventArgs.Empty)
+ End Sub
+
+End Class
+
+Public Class BoosterComboBox
+ Inherits ComboBox
+
+ Private State As MouseState1
+ Private Rect As Rectangle
+
+ Private ItemString As String = String.Empty
+ Private FirstItem As String = String.Empty
+
+ Sub New()
+ ItemHeight = 20
+ DoubleBuffered = True
+ BackColor = Color.FromArgb(36, 36, 36)
+ DropDownStyle = ComboBoxStyle.DropDownList
+ DrawMode = DrawMode.OwnerDrawFixed
+ SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque Or ControlStyles.OptimizedDoubleBuffer, True)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ ThemeModule.G = e.Graphics
+ ThemeModule.G.SmoothingMode = SmoothingMode.HighQuality
+ ThemeModule.G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
+
+ MyBase.OnPaint(e)
+
+ ThemeModule.G.Clear(Parent.BackColor)
+
+ If Enabled Then
+
+ Using Fill As New SolidBrush(HelpersXylos.ColorFromHex("#242424"))
+ ThemeModule.G.FillRectangle(Fill, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ Select Case State
+
+ Case MouseState1.None
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#5C5C5C"))
+ ThemeModule.G.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ Case MouseState1.Over
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#C8C8C8"))
+ ThemeModule.G.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ End Select
+
+ Using ArrowFont As New Font("Marlett", 12), ArrowBrush As New SolidBrush(HelpersXylos.ColorFromHex("#909090"))
+ ThemeModule.G.DrawString("6", ArrowFont, ArrowBrush, New Point(Width - 20, 5))
+ End Using
+
+ If Not IsNothing(Items) Then
+
+ Try : FirstItem = GetItemText(Items(0)) : Catch : End Try
+
+ If Not SelectedIndex = -1 Then
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#B6B6B6")), TextFont As New Font("Segoe UI", 9)
+ ThemeModule.G.DrawString(ItemString, TextFont, TextBrush, New Point(4, 4))
+ End Using
+
+ Else
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#B6B6B6")), TextFont As New Font("Segoe UI", 9)
+ ThemeModule.G.DrawString(FirstItem, TextFont, TextBrush, New Point(4, 4))
+ End Using
+
+ End If
+
+
+ End If
+
+ Else
+
+ Using Fill As New SolidBrush(HelpersXylos.ColorFromHex("#282828")), Border As New Pen(HelpersXylos.ColorFromHex("#484848"))
+ ThemeModule.G.FillRectangle(Fill, New Rectangle(0, 0, Width - 1, Height - 1))
+ ThemeModule.G.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ Using ArrowFont As New Font("Marlett", 12), ArrowBrush As New SolidBrush(HelpersXylos.ColorFromHex("#707070"))
+ ThemeModule.G.DrawString("6", ArrowFont, ArrowBrush, New Point(Width - 20, 5))
+ End Using
+
+ If Not IsNothing(Items) Then
+
+ Try : FirstItem = GetItemText(Items(0)) : Catch : End Try
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#818181")), TextFont As New Font("Segoe UI", 9)
+ ThemeModule.G.DrawString(FirstItem, TextFont, TextBrush, New Point(4, 4))
+ End Using
+
+ End If
+
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnDrawItem(e As DrawItemEventArgs)
+
+ ThemeModule.G = e.Graphics
+ ThemeModule.G.SmoothingMode = SmoothingMode.HighQuality
+ ThemeModule.G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
+
+ Rect = e.Bounds
+
+ Using Back As New SolidBrush(HelpersXylos.ColorFromHex("#242424"))
+ ThemeModule.G.FillRectangle(Back, New Rectangle(e.Bounds.X - 4, e.Bounds.Y - 1, e.Bounds.Width + 4, e.Bounds.Height - 1))
+ End Using
+
+ If Not e.Index = -1 Then
+ ItemString = GetItemText(Items(e.Index))
+ End If
+
+ Using ItemsFont As New Font("Segoe UI", 9), Border As New Pen(HelpersXylos.ColorFromHex("#D0D5D9"))
+
+ If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
+
+ Using HoverItemBrush As New SolidBrush(HelpersXylos.ColorFromHex("#F5F5F5"))
+ ThemeModule.G.DrawString(ItemString, New Font("Segoe UI", 9), HoverItemBrush, New Point(Rect.X + 5, Rect.Y + 1))
+ End Using
+
+ Else
+
+ Using DefaultItemBrush As New SolidBrush(HelpersXylos.ColorFromHex("#C0C0C0"))
+ ThemeModule.G.DrawString(ItemString, New Font("Segoe UI", 9), DefaultItemBrush, New Point(Rect.X + 5, Rect.Y + 1))
+ End Using
+
+ End If
+
+ End Using
+
+ e.DrawFocusRectangle()
+
+ MyBase.OnDrawItem(e)
+
+ End Sub
+
+ Protected Overrides Sub OnSelectedItemChanged(ByVal e As EventArgs)
+ Invalidate()
+ MyBase.OnSelectedItemChanged(e)
+ End Sub
+
+ Protected Overrides Sub OnSelectedIndexChanged(e As EventArgs)
+ State = MouseState1.None : Invalidate()
+ MyBase.OnSelectedIndexChanged(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseEnter(e As EventArgs)
+ State = MouseState1.Over : Invalidate()
+ MyBase.OnMouseEnter(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseLeave(e As EventArgs)
+ State = MouseState1.None : Invalidate()
+ MyBase.OnMouseLeave(e)
+ End Sub
+
+End Class
+
+Public Class BoosterCheckBox
+ Inherits CheckBox
+
+ Private State As MouseState1
+ Private Block As Boolean
+
+ Private CheckThread, UncheckThread As Thread
+ Private OverFillRect As New Rectangle(1, 1, 14, 14)
+
+ Sub New()
+ DoubleBuffered = True
+ Font = New Font("Segoe UI", 9)
+ SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque Or ControlStyles.OptimizedDoubleBuffer, True)
+ End Sub
+
+ Private Sub CheckAnimation()
+
+ Block = True
+
+ Dim X As Integer = 1
+ Dim Rectw As Integer = 15
+
+ While Not OverFillRect.Width = 0
+ X += 1
+ Rectw -= 1
+ OverFillRect = New Rectangle(X, OverFillRect.Y, Rectw, OverFillRect.Height)
+ Invalidate()
+ Thread.Sleep(30)
+ End While
+
+ Block = False
+
+ End Sub
+
+ Private Sub UncheckAnimation()
+
+ Block = True
+
+ Dim X As Integer = 15
+ Dim Rectw As Integer = 0
+
+ While Not OverFillRect.Width = 14
+ X -= 1
+ Rectw += 1
+ OverFillRect = New Rectangle(X, OverFillRect.Y, Rectw, OverFillRect.Height)
+ Invalidate()
+ Thread.Sleep(30)
+ End While
+
+ Block = False
+
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+ ThemeModule.G = e.Graphics
+ ThemeModule.G.SmoothingMode = SmoothingMode.HighQuality
+ ThemeModule.G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
+
+ MyBase.OnPaint(e)
+
+ ThemeModule.G.Clear(Parent.BackColor)
+
+ If Enabled Then
+
+ Using Fill As New SolidBrush(HelpersXylos.ColorFromHex("#242424")), Border As New Pen(HelpersXylos.ColorFromHex("#5C5C5C"))
+ ThemeModule.G.FillRectangle(Fill, New Rectangle(0, 0, 16, 16))
+ ThemeModule.G.DrawRectangle(Border, New Rectangle(0, 0, 16, 16))
+ End Using
+
+ Select Case State
+
+ Case MouseState1.None
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#B6B6B6")), TextFont As New Font("Segoe UI", 9)
+ ThemeModule.G.DrawString(Text, TextFont, TextBrush, New Point(25, -1))
+ End Using
+
+ Case MouseState1.Over
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#F5F5F5")), TextFont As New Font("Segoe UI", 9)
+ ThemeModule.G.DrawString(Text, TextFont, TextBrush, New Point(25, -1))
+ End Using
+
+ End Select
+
+ Using CheckFont As New Font("Marlett", 12), CheckBrush As New SolidBrush(Color.FromArgb(144, 144, 144))
+ ThemeModule.G.DrawString("b", CheckFont, CheckBrush, New Point(-2, 1))
+ End Using
+
+ Using Fill As New SolidBrush(HelpersXylos.ColorFromHex("#242424"))
+ ThemeModule.G.SmoothingMode = SmoothingMode.None
+ ThemeModule.G.FillRectangle(Fill, OverFillRect)
+ End Using
+
+ Else
+
+ Using Fill As New SolidBrush(HelpersXylos.ColorFromHex("#282828")), Border As New Pen(HelpersXylos.ColorFromHex("#484848"))
+ ThemeModule.G.FillRectangle(Fill, New Rectangle(0, 0, 16, 16))
+ ThemeModule.G.DrawRectangle(Border, New Rectangle(0, 0, 16, 16))
+ End Using
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#818181")), TextFont As New Font("Segoe UI", 9)
+ ThemeModule.G.DrawString(Text, TextFont, TextBrush, New Point(25, -1))
+ End Using
+
+ Using CheckFont As New Font("Marlett", 12), CheckBrush As New SolidBrush(HelpersXylos.ColorFromHex("#707070"))
+ ThemeModule.G.DrawString("b", CheckFont, CheckBrush, New Point(-2, 1))
+ End Using
+
+ Using Fill As New SolidBrush(HelpersXylos.ColorFromHex("#282828"))
+ ThemeModule.G.SmoothingMode = SmoothingMode.None
+ ThemeModule.G.FillRectangle(Fill, OverFillRect)
+ End Using
+
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnMouseEnter(e As EventArgs)
+ State = MouseState1.Over : Invalidate()
+ MyBase.OnMouseEnter(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseLeave(e As EventArgs)
+ State = MouseState1.None : Invalidate()
+ MyBase.OnMouseLeave(e)
+ End Sub
+
+ Protected Overrides Sub OnCheckedChanged(e As EventArgs)
+
+ If Checked Then
+ CheckThread = New Thread(AddressOf CheckAnimation) With {
+ .IsBackground = True}
+ CheckThread.Start()
+ Else
+ UncheckThread = New Thread(AddressOf UncheckAnimation) With {
+ .IsBackground = True}
+ UncheckThread.Start()
+ End If
+
+ If Not Block Then
+ MyBase.OnCheckedChanged(e)
+ End If
+
+ End Sub
+
+End Class
+
+Public Class BoosterTabControl
+ Inherits TabControl
+
+ Private MainRect As Rectangle
+ Private OverRect As Rectangle
+
+ Private SubOverIndex As Integer = -1
+
+ Private ReadOnly Property Hovering As Boolean
+ Get
+ Return Not OverIndex = -1
+ End Get
+ End Property
+
+ Private Property OverIndex As Integer
+ Get
+ Return SubOverIndex
+ End Get
+ Set(value As Integer)
+ SubOverIndex = value
+ If Not SubOverIndex = -1 Then
+ OverRect = GetTabRect(OverIndex)
+ End If
+ Invalidate()
+ End Set
+ End Property
+
+ Sub New()
+ DoubleBuffered = True
+ Font = New Font("Segoe UI", 10)
+ ForeColor = HelpersXylos.ColorFromHex("#78797B")
+ ItemSize = New Size(40, 170)
+ SizeMode = TabSizeMode.Fixed
+ Alignment = TabAlignment.Left
+ SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque Or ControlStyles.OptimizedDoubleBuffer, True)
+ End Sub
+
+ Protected Overrides Sub CreateHandle()
+ For Each Tab As TabPage In TabPages
+ Tab.BackColor = HelpersXylos.ColorFromHex("#424242")
+ Tab.ForeColor = HelpersXylos.ColorFromHex("#B6B6B6")
+ Tab.Font = New Font("Segoe UI", 9)
+ Next
+ MyBase.CreateHandle()
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ ThemeModule.G = e.Graphics
+ ThemeModule.G.SmoothingMode = SmoothingMode.HighQuality
+ ThemeModule.G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
+
+ ThemeModule.G.Clear(HelpersXylos.ColorFromHex("#333333"))
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#292929"))
+ ThemeModule.G.SmoothingMode = SmoothingMode.None
+ ThemeModule.G.DrawLine(Border, ItemSize.Height + 3, 4, ItemSize.Height + 3, Height - 5)
+ End Using
+
+ For I As Integer = 0 To TabPages.Count - 1
+
+ MainRect = GetTabRect(I)
+
+ If SelectedIndex = I Then
+
+ Using Selection As New SolidBrush(HelpersXylos.ColorFromHex("#424242"))
+ ThemeModule.G.FillRectangle(Selection, New Rectangle(MainRect.X - 6, MainRect.Y + 2, MainRect.Width + 8, MainRect.Height - 1))
+ End Using
+
+ Using SelectionLeft As New SolidBrush(HelpersXylos.ColorFromHex("#F63333"))
+ ThemeModule.G.FillRectangle(SelectionLeft, New Rectangle(MainRect.X - 2, MainRect.Y + 2, 3, MainRect.Height - 1))
+ End Using
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#F5F5F5")), TextFont As New Font("Segoe UI", 10)
+ ThemeModule.G.DrawString(TabPages(I).Text, TextFont, TextBrush, New Point(MainRect.X + 25, MainRect.Y + 11))
+ End Using
+
+ Else
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#C0C0C0")), TextFont As New Font("Segoe UI", 10)
+ ThemeModule.G.DrawString(TabPages(I).Text, TextFont, TextBrush, New Point(MainRect.X + 25, MainRect.Y + 11))
+ End Using
+
+ End If
+
+ If Hovering Then
+
+ Using Selection As New SolidBrush(HelpersXylos.ColorFromHex("#383838"))
+ ThemeModule.G.FillRectangle(Selection, New Rectangle(OverRect.X - 6, OverRect.Y + 2, OverRect.Width + 8, OverRect.Height - 1))
+ End Using
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#C0C0C0")), TextFont As New Font("Segoe UI", 10)
+ ThemeModule.G.DrawString(TabPages(OverIndex).Text, TextFont, TextBrush, New Point(OverRect.X + 25, OverRect.Y + 11))
+ End Using
+
+ End If
+
+ Next
+
+ MyBase.OnPaint(e)
+
+ End Sub
+
+ Protected Overrides Sub OnMouseMove(e As MouseEventArgs)
+ For I As Integer = 0 To TabPages.Count - 1
+ If GetTabRect(I).Contains(e.Location) And Not SelectedIndex = I Then
+ OverIndex = I
+ Exit For
+ Else
+ OverIndex = -1
+ End If
+ Next
+ MyBase.OnMouseMove(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseLeave(e As EventArgs)
+ OverIndex = -1
+ MyBase.OnMouseLeave(e)
+ End Sub
+
+End Class
+
+Public Class BoosterRadioButton
+ Inherits RadioButton
+
+ Private State As MouseState1
+
+ Private CheckThread, UncheckThread As Thread
+ Private EllipseRect As New Rectangle(5, 5, 6, 6)
+
+ Sub New()
+ DoubleBuffered = True
+ Font = New Font("Segoe UI", 9)
+ SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque Or ControlStyles.OptimizedDoubleBuffer, True)
+ End Sub
+
+ Private Sub CheckAnimation()
+
+ Dim X As Integer = 1
+ Dim Y As Integer = 1
+ Dim EllipseW As Integer = 14
+ Dim EllipseH As Integer = 14
+
+ While Not EllipseH = 8
+
+ If X < 4 Then
+ X += 1
+ Y += 1
+ End If
+
+ EllipseW -= 1
+ EllipseH -= 1
+ EllipseRect = New Rectangle(X, Y, EllipseW, EllipseH)
+ Invalidate()
+ Thread.Sleep(30)
+ End While
+
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ ThemeModule.G = e.Graphics
+ ThemeModule.G.SmoothingMode = SmoothingMode.HighQuality
+ ThemeModule.G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
+
+ MyBase.OnPaint(e)
+
+ ThemeModule.G.Clear(Parent.BackColor)
+
+ If Enabled Then
+
+ Using Fill As New SolidBrush(HelpersXylos.ColorFromHex("#242424")), Border As New Pen(HelpersXylos.ColorFromHex("#5C5C5C"))
+ ThemeModule.G.FillEllipse(Fill, New Rectangle(0, 0, 16, 16))
+ ThemeModule.G.DrawEllipse(Border, New Rectangle(0, 0, 16, 16))
+ End Using
+
+ Select Case State
+
+ Case MouseState1.None
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#B6B6B6")), TextFont As New Font("Segoe UI", 9)
+ ThemeModule.G.DrawString(Text, TextFont, TextBrush, New Point(25, -1))
+ End Using
+
+ Case MouseState1.Over
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#F5F5F5")), TextFont As New Font("Segoe UI", 9)
+ ThemeModule.G.DrawString(Text, TextFont, TextBrush, New Point(25, -1))
+ End Using
+
+ End Select
+
+ If Checked Then
+
+ Using CheckBrush As New SolidBrush(HelpersXylos.ColorFromHex("#909090"))
+ ThemeModule.G.FillEllipse(CheckBrush, EllipseRect)
+ End Using
+
+ End If
+
+ Else
+
+ Using Fill As New SolidBrush(HelpersXylos.ColorFromHex("#282828")), Border As New Pen(HelpersXylos.ColorFromHex("#484848"))
+ ThemeModule.G.FillEllipse(Fill, New Rectangle(0, 0, 16, 16))
+ ThemeModule.G.DrawEllipse(Border, New Rectangle(0, 0, 16, 16))
+ End Using
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#818181")), TextFont As New Font("Segoe UI", 9)
+ ThemeModule.G.DrawString(Text, TextFont, TextBrush, New Point(25, -1))
+ End Using
+
+ If Checked Then
+
+ Using CheckBrush As New SolidBrush(HelpersXylos.ColorFromHex("#707070"))
+ ThemeModule.G.FillEllipse(CheckBrush, EllipseRect)
+ End Using
+
+ End If
+
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnMouseEnter(e As EventArgs)
+ State = MouseState1.Over : Invalidate()
+ MyBase.OnMouseEnter(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseLeave(e As EventArgs)
+ State = MouseState1.None : Invalidate()
+ MyBase.OnMouseLeave(e)
+ End Sub
+
+ Protected Overrides Sub OnCheckedChanged(e As EventArgs)
+
+ If Checked Then
+ CheckThread = New Thread(AddressOf CheckAnimation) With {
+ .IsBackground = True}
+ CheckThread.Start()
+ End If
+
+ MyBase.OnCheckedChanged(e)
+ End Sub
+
+End Class
+
+Public Class BoosterNumericUpDown
+ Inherits NumericUpDown
+
+ Private State As MouseState1
+ Public Property AfterValue As String
+
+ Private ValueChangedThread As Thread
+ Private TextPoint As New Point(2, 2)
+ Private TextFont As New Font("Segoe UI", 10)
+
+ Sub New()
+ DoubleBuffered = True
+ Font = New Font("Segoe UI", 10)
+ Controls(0).Hide()
+ Controls(1).Hide()
+ ForeColor = HelpersXylos.ColorFromHex("#B6B6B6")
+ SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque Or ControlStyles.OptimizedDoubleBuffer, True)
+ End Sub
+
+ Private Sub ValueChangedAnimation()
+
+ Dim TextSize As Integer = 5
+
+ While Not TextSize = 10
+ TextSize += 1
+ TextFont = New Font("Segoe UI", TextSize)
+ Invalidate()
+ Thread.Sleep(30)
+ End While
+
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ ThemeModule.G = e.Graphics
+ ThemeModule.G.SmoothingMode = SmoothingMode.HighQuality
+ ThemeModule.G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
+
+ ThemeModule.G.Clear(Parent.BackColor)
+
+ MyBase.OnPaint(e)
+
+ If Enabled Then
+
+ Using Fill As New SolidBrush(HelpersXylos.ColorFromHex("#242424"))
+ ThemeModule.G.FillRectangle(Fill, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ Select Case State
+
+ Case MouseState1.None
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#5C5C5C"))
+ ThemeModule.G.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ Case MouseState1.Over
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#C8C8C8"))
+ ThemeModule.G.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ End Select
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#B6B6B6"))
+ ThemeModule.G.DrawString(Value & AfterValue, TextFont, TextBrush, TextPoint)
+ End Using
+
+ Using ArrowFont As New Font("Marlett", 10), ArrowBrush As New SolidBrush(HelpersXylos.ColorFromHex("#909090"))
+ ThemeModule.G.DrawString("5", ArrowFont, ArrowBrush, New Point(Width - 18, 2))
+ ThemeModule.G.DrawString("6", ArrowFont, ArrowBrush, New Point(Width - 18, 10))
+ End Using
+
+ Else
+
+ Using Fill As New SolidBrush(HelpersXylos.ColorFromHex("#282828")), Border As New Pen(HelpersXylos.ColorFromHex("#484848"))
+ ThemeModule.G.FillRectangle(Fill, New Rectangle(0, 0, Width - 1, Height - 1))
+ ThemeModule.G.DrawRectangle(Border, New Rectangle(0, 0, Width - 1, Height - 1))
+ End Using
+
+ Using TextBrush As New SolidBrush(HelpersXylos.ColorFromHex("#818181"))
+ ThemeModule.G.DrawString(Value & AfterValue, TextFont, TextBrush, TextPoint)
+ End Using
+
+ Using ArrowFont As New Font("Marlett", 10), ArrowBrush As New SolidBrush(HelpersXylos.ColorFromHex("#707070"))
+ ThemeModule.G.DrawString("5", ArrowFont, ArrowBrush, New Point(Width - 18, 2))
+ ThemeModule.G.DrawString("6", ArrowFont, ArrowBrush, New Point(Width - 18, 10))
+ End Using
+
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
+
+ If e.X > Width - 16 AndAlso e.Y < 11 Then
+
+ If Not Value + Increment > Maximum Then
+ Value += Increment
+ Else
+ Value = Maximum
+ End If
+
+ ElseIf e.X > Width - 16 AndAlso e.Y > 13 Then
+ If Not Value - Increment < Minimum Then
+ Value -= Increment
+ Else
+ Value = Minimum
+ End If
+ End If
+
+ Invalidate()
+
+ MyBase.OnMouseUp(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseEnter(e As EventArgs)
+ State = MouseState1.Over : Invalidate()
+ MyBase.OnMouseEnter(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseLeave(e As EventArgs)
+ State = MouseState1.None : Invalidate()
+ MyBase.OnMouseLeave(e)
+ End Sub
+
+ Protected Overrides Sub OnValueChanged(e As EventArgs)
+ ValueChangedThread = New Thread(AddressOf ValueChangedAnimation) With {
+ .IsBackground = True}
+ ValueChangedThread.Start()
+ MyBase.OnValueChanged(e)
+ End Sub
+
+End Class
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/Forms/AboutForm.Designer.vb b/HALOCELauncher/Controls/Forms/AboutForm.Designer.vb
new file mode 100644
index 0000000..f6f7245
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/AboutForm.Designer.vb
@@ -0,0 +1,125 @@
+ _
+Partial Class AboutForm
+ Inherits System.Windows.Forms.Form
+
+ 'Form overrides dispose to clean up the component list.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ _
+ Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
+ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(AboutForm))
+ Me.GunaButton1 = New Guna.UI.WinForms.GunaButton()
+ Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
+ Me.GunaPanel1 = New Guna.UI.WinForms.GunaPanel()
+ Me.LabelTextLog = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaControlBox1 = New Guna.UI.WinForms.GunaControlBox()
+ Me.GunaPanel1.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'GunaButton1
+ '
+ Me.GunaButton1.AnimationHoverSpeed = 0.07!
+ Me.GunaButton1.AnimationSpeed = 0.03!
+ Me.GunaButton1.BaseColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton1.BorderColor = System.Drawing.Color.Black
+ Me.GunaButton1.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.GunaButton1.Enabled = False
+ Me.GunaButton1.FocusedColor = System.Drawing.Color.Empty
+ Me.GunaButton1.Font = New System.Drawing.Font("Impact", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.GunaButton1.ForeColor = System.Drawing.Color.White
+ Me.GunaButton1.Image = CType(resources.GetObject("GunaButton1.Image"), System.Drawing.Image)
+ Me.GunaButton1.ImageSize = New System.Drawing.Size(30, 30)
+ Me.GunaButton1.Location = New System.Drawing.Point(-2, 12)
+ Me.GunaButton1.Name = "GunaButton1"
+ Me.GunaButton1.OnHoverBaseColor = System.Drawing.Color.FromArgb(CType(CType(151, Byte), Integer), CType(CType(143, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton1.OnHoverBorderColor = System.Drawing.Color.Black
+ Me.GunaButton1.OnHoverForeColor = System.Drawing.Color.White
+ Me.GunaButton1.OnHoverImage = Nothing
+ Me.GunaButton1.OnPressedColor = System.Drawing.Color.Black
+ Me.GunaButton1.Size = New System.Drawing.Size(245, 36)
+ Me.GunaButton1.TabIndex = 0
+ Me.GunaButton1.Text = "HALO CE/PC Launcher"
+ '
+ 'Timer1
+ '
+ Me.Timer1.Interval = 1
+ '
+ 'GunaPanel1
+ '
+ Me.GunaPanel1.Controls.Add(Me.LabelTextLog)
+ Me.GunaPanel1.Location = New System.Drawing.Point(19, 77)
+ Me.GunaPanel1.Name = "GunaPanel1"
+ Me.GunaPanel1.Size = New System.Drawing.Size(432, 175)
+ Me.GunaPanel1.TabIndex = 1
+ '
+ 'LabelTextLog
+ '
+ Me.LabelTextLog.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.LabelTextLog.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.LabelTextLog.ForeColor = System.Drawing.Color.White
+ Me.LabelTextLog.Location = New System.Drawing.Point(0, 0)
+ Me.LabelTextLog.Name = "LabelTextLog"
+ Me.LabelTextLog.Size = New System.Drawing.Size(432, 175)
+ Me.LabelTextLog.TabIndex = 2
+ Me.LabelTextLog.Text = "Ego sum Deus ex spatio, tempore, Energy."
+ Me.LabelTextLog.TextAlign = System.Drawing.ContentAlignment.TopCenter
+ '
+ 'GunaControlBox1
+ '
+ Me.GunaControlBox1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.GunaControlBox1.AnimationHoverSpeed = 0.07!
+ Me.GunaControlBox1.AnimationSpeed = 0.03!
+ Me.GunaControlBox1.BackColor = System.Drawing.Color.Transparent
+ Me.GunaControlBox1.IconColor = System.Drawing.Color.White
+ Me.GunaControlBox1.IconSize = 15.0!
+ Me.GunaControlBox1.Location = New System.Drawing.Point(453, 0)
+ Me.GunaControlBox1.Name = "GunaControlBox1"
+ Me.GunaControlBox1.OnHoverBackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(128, Byte), Integer), CType(CType(128, Byte), Integer))
+ Me.GunaControlBox1.OnHoverIconColor = System.Drawing.Color.White
+ Me.GunaControlBox1.OnPressedColor = System.Drawing.Color.Black
+ Me.GunaControlBox1.Size = New System.Drawing.Size(31, 24)
+ Me.GunaControlBox1.TabIndex = 5
+ '
+ 'AboutForm
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(34, Byte), Integer), CType(CType(34, Byte), Integer), CType(CType(34, Byte), Integer))
+ Me.ClientSize = New System.Drawing.Size(483, 267)
+ Me.Controls.Add(Me.GunaControlBox1)
+ Me.Controls.Add(Me.GunaPanel1)
+ Me.Controls.Add(Me.GunaButton1)
+ Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
+ Me.MaximizeBox = False
+ Me.MinimizeBox = False
+ Me.Name = "AboutForm"
+ Me.ShowIcon = False
+ Me.ShowInTaskbar = False
+ Me.Text = "AboutForm"
+ Me.TopMost = True
+ Me.GunaPanel1.ResumeLayout(False)
+ Me.ResumeLayout(False)
+
+ End Sub
+ Friend WithEvents GunaButton1 As Guna.UI.WinForms.GunaButton
+ Friend WithEvents Timer1 As System.Windows.Forms.Timer
+ Friend WithEvents GunaPanel1 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents LabelTextLog As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaControlBox1 As Guna.UI.WinForms.GunaControlBox
+End Class
diff --git a/HALOCELauncher/Controls/Forms/AboutForm.resx b/HALOCELauncher/Controls/Forms/AboutForm.resx
new file mode 100644
index 0000000..46ff097
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/AboutForm.resx
@@ -0,0 +1,454 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAEvLSURBVHhe7d17zCXlfdjxBewsV6+5LZflftvlYiALmIsx
+ a0LIUgqBYsc4biNcpRJNoprEUWoaN3WRGkckFhW2gjaxYpyqUKu4VlAjaIMbo6igyFZNW1GLStjyP7jy
+ H1j8gVxLSJ2e72vm9XPmPM/czsycOWe+R3oF+77nMvOZOc/v99x37PChgAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIK
+ KKCAAgoooIACCiigQEzg7NkvDwQ/983+/9Ozn4Ozn72SrY3Arrev4QOz//ITXtMr1uYsPFAFFFBAgd4E
+ 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
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCA
+ AgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgoooIACCiiggAIKKKCAAgsC/x/dfqgaUSKkPwAA
+ AABJRU5ErkJggg==
+
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/Forms/AboutForm.vb b/HALOCELauncher/Controls/Forms/AboutForm.vb
new file mode 100644
index 0000000..5b0647a
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/AboutForm.vb
@@ -0,0 +1,81 @@
+Imports HALOCELauncher.Core.Helpers
+
+Public Class AboutForm
+
+ Private WelcomeMessage As String = "Ego sum Deus ex spatio, tempore, Energy."
+
+ Public Shared ReadOnly _textToDisplay As String =
+.Value
+
+ Private _Showing As String = ""
+ Private _avrchar As Integer = 0
+ Private _AwaitTIme As Integer = 0
+ Private _MaxAwaitTIme As Integer = 5
+ Private ContinueAwait As Boolean = True
+
+ Private Sub AboutForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ LabelTextLog.Text = WelcomeMessage
+ Guna.UI.Lib.GraphicsHelper.ShadowForm(Me)
+ Me.Location = CenterForm(Form1, Me, Me.Location)
+ EnabledDragger(LabelTextLog)
+ EnabledDragger(Me)
+ EnabledDragger(GunaButton1)
+ _avrchar = 0
+ _AwaitTIme = 0
+ _MaxAwaitTIme = 100
+ ContinueAwait = True
+ Timer1.Enabled = True
+ End Sub
+
+ Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
+ Try
+ If _AwaitTIme = _MaxAwaitTIme Then
+ ContinueAwait = False
+ If _Showing.Count < _textToDisplay.Count And _Showing.Count > 0 Then
+ _Showing = _textToDisplay.Substring(0, _Showing.Length + 1)
+ ElseIf _Showing.Count < _textToDisplay.Count And _Showing.Count = 0 Then
+ _Showing = _textToDisplay.Substring(0, 1)
+ ElseIf _Showing.Count < _avrchar Then
+ _Showing = " " + _Showing
+ Else
+ _Showing = ""
+ End If
+ LabelTextLog.Text = _Showing
+ If LabelTextLog.Text = _textToDisplay Then
+ Timer1.Enabled = False
+ End If
+ End If
+
+ If ContinueAwait = True Then
+ _AwaitTIme += 1
+ End If
+
+ Catch ex As Exception
+ MsgBox(ex.ToString)
+ End Try
+ End Sub
+
+ Private Function NumberfitCharsInTextBox(tb As TextBox) As Integer
+ Dim avgW As Integer = 0
+ Dim avgH As Integer = 0
+ Dim avg As Size
+ For i As Integer = 65 To 90
+ avg = TextRenderer.MeasureText(CChar(ChrW(i)).ToString(), LabelTextLog.Font)
+ avgH += avg.Height
+ avgW += avg.Width
+ Next
+ Return CInt((((45 * LabelTextLog.Width) / avgW) * ((45 * LabelTextLog.Height) / avgH)))
+ End Function
+
+
+End Class
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/Forms/Home.Designer.vb b/HALOCELauncher/Controls/Forms/Home.Designer.vb
new file mode 100644
index 0000000..b44e505
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/Home.Designer.vb
@@ -0,0 +1,304 @@
+ _
+Partial Class Home
+ Inherits System.Windows.Forms.Form
+
+ 'Form overrides dispose to clean up the component list.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ _
+ Private Sub InitializeComponent()
+ Me.GunaPanel1 = New Guna.UI.WinForms.GunaPanel()
+ Me.Anuncio4 = New Guna.UI.WinForms.GunaPanel()
+ Me.Anuncio3 = New Guna.UI.WinForms.GunaPanel()
+ Me.GunaPanel3 = New Guna.UI.WinForms.GunaPanel()
+ Me.Anuncio3Des = New Guna.UI.WinForms.GunaLabel()
+ Me.Anuncio3Title = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaPanel4 = New Guna.UI.WinForms.GunaPanel()
+ Me.Anuncio3Icon = New Guna.UI.WinForms.GunaPanel()
+ Me.Anuncio2 = New Guna.UI.WinForms.GunaPanel()
+ Me.GunaPanel2 = New Guna.UI.WinForms.GunaPanel()
+ Me.Anuncio2Des = New Guna.UI.WinForms.GunaLabel()
+ Me.Anuncio2Title = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaPanel5 = New Guna.UI.WinForms.GunaPanel()
+ Me.Anuncio2Icon = New Guna.UI.WinForms.GunaPanel()
+ Me.Anuncio1 = New Guna.UI.WinForms.GunaPanel()
+ Me.GunaPanel6 = New Guna.UI.WinForms.GunaPanel()
+ Me.Anuncio1Des = New Guna.UI.WinForms.GunaLabel()
+ Me.Anuncio1Title = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaPanel7 = New Guna.UI.WinForms.GunaPanel()
+ Me.Anuncio1Icon = New Guna.UI.WinForms.GunaPanel()
+ Me.GunaPanel1.SuspendLayout()
+ Me.Anuncio3.SuspendLayout()
+ Me.GunaPanel3.SuspendLayout()
+ Me.Anuncio2.SuspendLayout()
+ Me.GunaPanel2.SuspendLayout()
+ Me.Anuncio1.SuspendLayout()
+ Me.GunaPanel6.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'GunaPanel1
+ '
+ Me.GunaPanel1.BackColor = System.Drawing.Color.Transparent
+ Me.GunaPanel1.Controls.Add(Me.Anuncio4)
+ Me.GunaPanel1.Controls.Add(Me.Anuncio3)
+ Me.GunaPanel1.Controls.Add(Me.Anuncio2)
+ Me.GunaPanel1.Controls.Add(Me.Anuncio1)
+ Me.GunaPanel1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.GunaPanel1.Location = New System.Drawing.Point(0, 0)
+ Me.GunaPanel1.Name = "GunaPanel1"
+ Me.GunaPanel1.Size = New System.Drawing.Size(818, 438)
+ Me.GunaPanel1.TabIndex = 2
+ '
+ 'Anuncio4
+ '
+ Me.Anuncio4.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch
+ Me.Anuncio4.Location = New System.Drawing.Point(609, 26)
+ Me.Anuncio4.Name = "Anuncio4"
+ Me.Anuncio4.Size = New System.Drawing.Size(197, 400)
+ Me.Anuncio4.TabIndex = 3
+ '
+ 'Anuncio3
+ '
+ Me.Anuncio3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch
+ Me.Anuncio3.Controls.Add(Me.GunaPanel3)
+ Me.Anuncio3.Controls.Add(Me.Anuncio3Icon)
+ Me.Anuncio3.Location = New System.Drawing.Point(307, 278)
+ Me.Anuncio3.Name = "Anuncio3"
+ Me.Anuncio3.Size = New System.Drawing.Size(279, 148)
+ Me.Anuncio3.TabIndex = 2
+ '
+ 'GunaPanel3
+ '
+ Me.GunaPanel3.Controls.Add(Me.Anuncio3Des)
+ Me.GunaPanel3.Controls.Add(Me.Anuncio3Title)
+ Me.GunaPanel3.Controls.Add(Me.GunaPanel4)
+ Me.GunaPanel3.Dock = System.Windows.Forms.DockStyle.Bottom
+ Me.GunaPanel3.Location = New System.Drawing.Point(0, 113)
+ Me.GunaPanel3.Name = "GunaPanel3"
+ Me.GunaPanel3.Size = New System.Drawing.Size(279, 35)
+ Me.GunaPanel3.TabIndex = 1
+ '
+ 'Anuncio3Des
+ '
+ Me.Anuncio3Des.Cursor = System.Windows.Forms.Cursors.Hand
+ Me.Anuncio3Des.Font = New System.Drawing.Font("Consolas", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Anuncio3Des.ForeColor = System.Drawing.Color.White
+ Me.Anuncio3Des.Location = New System.Drawing.Point(15, 20)
+ Me.Anuncio3Des.Name = "Anuncio3Des"
+ Me.Anuncio3Des.Size = New System.Drawing.Size(231, 125)
+ Me.Anuncio3Des.TabIndex = 7
+ Me.Anuncio3Des.Text = "Des"
+ Me.Anuncio3Des.Visible = False
+ '
+ 'Anuncio3Title
+ '
+ Me.Anuncio3Title.AutoSize = True
+ Me.Anuncio3Title.Cursor = System.Windows.Forms.Cursors.Hand
+ Me.Anuncio3Title.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Anuncio3Title.ForeColor = System.Drawing.Color.White
+ Me.Anuncio3Title.Location = New System.Drawing.Point(14, 4)
+ Me.Anuncio3Title.Name = "Anuncio3Title"
+ Me.Anuncio3Title.Size = New System.Drawing.Size(28, 13)
+ Me.Anuncio3Title.TabIndex = 6
+ Me.Anuncio3Title.Text = "Title"
+ Me.Anuncio3Title.Visible = False
+ '
+ 'GunaPanel4
+ '
+ Me.GunaPanel4.Location = New System.Drawing.Point(3, 4)
+ Me.GunaPanel4.Name = "GunaPanel4"
+ Me.GunaPanel4.Size = New System.Drawing.Size(5, 28)
+ Me.GunaPanel4.TabIndex = 0
+ '
+ 'Anuncio3Icon
+ '
+ Me.Anuncio3Icon.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch
+ Me.Anuncio3Icon.Location = New System.Drawing.Point(3, 3)
+ Me.Anuncio3Icon.Name = "Anuncio3Icon"
+ Me.Anuncio3Icon.Size = New System.Drawing.Size(20, 20)
+ Me.Anuncio3Icon.TabIndex = 2
+ Me.Anuncio3Icon.Visible = False
+ '
+ 'Anuncio2
+ '
+ Me.Anuncio2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch
+ Me.Anuncio2.Controls.Add(Me.GunaPanel2)
+ Me.Anuncio2.Controls.Add(Me.Anuncio2Icon)
+ Me.Anuncio2.Location = New System.Drawing.Point(21, 278)
+ Me.Anuncio2.Name = "Anuncio2"
+ Me.Anuncio2.Size = New System.Drawing.Size(259, 148)
+ Me.Anuncio2.TabIndex = 1
+ '
+ 'GunaPanel2
+ '
+ Me.GunaPanel2.Controls.Add(Me.Anuncio2Des)
+ Me.GunaPanel2.Controls.Add(Me.Anuncio2Title)
+ Me.GunaPanel2.Controls.Add(Me.GunaPanel5)
+ Me.GunaPanel2.Dock = System.Windows.Forms.DockStyle.Bottom
+ Me.GunaPanel2.Location = New System.Drawing.Point(0, 113)
+ Me.GunaPanel2.Name = "GunaPanel2"
+ Me.GunaPanel2.Size = New System.Drawing.Size(259, 35)
+ Me.GunaPanel2.TabIndex = 0
+ '
+ 'Anuncio2Des
+ '
+ Me.Anuncio2Des.Cursor = System.Windows.Forms.Cursors.Hand
+ Me.Anuncio2Des.Font = New System.Drawing.Font("Consolas", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Anuncio2Des.ForeColor = System.Drawing.Color.White
+ Me.Anuncio2Des.Location = New System.Drawing.Point(15, 20)
+ Me.Anuncio2Des.Name = "Anuncio2Des"
+ Me.Anuncio2Des.Size = New System.Drawing.Size(231, 125)
+ Me.Anuncio2Des.TabIndex = 5
+ Me.Anuncio2Des.Text = "Des"
+ Me.Anuncio2Des.Visible = False
+ '
+ 'Anuncio2Title
+ '
+ Me.Anuncio2Title.AutoSize = True
+ Me.Anuncio2Title.Cursor = System.Windows.Forms.Cursors.Hand
+ Me.Anuncio2Title.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Anuncio2Title.ForeColor = System.Drawing.Color.White
+ Me.Anuncio2Title.Location = New System.Drawing.Point(14, 4)
+ Me.Anuncio2Title.Name = "Anuncio2Title"
+ Me.Anuncio2Title.Size = New System.Drawing.Size(28, 13)
+ Me.Anuncio2Title.TabIndex = 4
+ Me.Anuncio2Title.Text = "Title"
+ Me.Anuncio2Title.Visible = False
+ '
+ 'GunaPanel5
+ '
+ Me.GunaPanel5.Location = New System.Drawing.Point(3, 4)
+ Me.GunaPanel5.Name = "GunaPanel5"
+ Me.GunaPanel5.Size = New System.Drawing.Size(5, 28)
+ Me.GunaPanel5.TabIndex = 1
+ '
+ 'Anuncio2Icon
+ '
+ Me.Anuncio2Icon.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch
+ Me.Anuncio2Icon.Location = New System.Drawing.Point(3, 3)
+ Me.Anuncio2Icon.Name = "Anuncio2Icon"
+ Me.Anuncio2Icon.Size = New System.Drawing.Size(20, 20)
+ Me.Anuncio2Icon.TabIndex = 3
+ Me.Anuncio2Icon.Visible = False
+ '
+ 'Anuncio1
+ '
+ Me.Anuncio1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch
+ Me.Anuncio1.Controls.Add(Me.GunaPanel6)
+ Me.Anuncio1.Controls.Add(Me.Anuncio1Icon)
+ Me.Anuncio1.Location = New System.Drawing.Point(21, 26)
+ Me.Anuncio1.Name = "Anuncio1"
+ Me.Anuncio1.Size = New System.Drawing.Size(565, 231)
+ Me.Anuncio1.TabIndex = 0
+ '
+ 'GunaPanel6
+ '
+ Me.GunaPanel6.Controls.Add(Me.Anuncio1Des)
+ Me.GunaPanel6.Controls.Add(Me.Anuncio1Title)
+ Me.GunaPanel6.Controls.Add(Me.GunaPanel7)
+ Me.GunaPanel6.Dock = System.Windows.Forms.DockStyle.Bottom
+ Me.GunaPanel6.Location = New System.Drawing.Point(0, 196)
+ Me.GunaPanel6.Name = "GunaPanel6"
+ Me.GunaPanel6.Size = New System.Drawing.Size(565, 35)
+ Me.GunaPanel6.TabIndex = 4
+ '
+ 'Anuncio1Des
+ '
+ Me.Anuncio1Des.Cursor = System.Windows.Forms.Cursors.Hand
+ Me.Anuncio1Des.Font = New System.Drawing.Font("Consolas", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Anuncio1Des.ForeColor = System.Drawing.Color.White
+ Me.Anuncio1Des.Location = New System.Drawing.Point(15, 20)
+ Me.Anuncio1Des.Name = "Anuncio1Des"
+ Me.Anuncio1Des.Size = New System.Drawing.Size(536, 211)
+ Me.Anuncio1Des.TabIndex = 5
+ Me.Anuncio1Des.Text = "Des"
+ Me.Anuncio1Des.Visible = False
+ '
+ 'Anuncio1Title
+ '
+ Me.Anuncio1Title.AutoSize = True
+ Me.Anuncio1Title.Cursor = System.Windows.Forms.Cursors.Hand
+ Me.Anuncio1Title.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Anuncio1Title.ForeColor = System.Drawing.Color.White
+ Me.Anuncio1Title.Location = New System.Drawing.Point(14, 4)
+ Me.Anuncio1Title.Name = "Anuncio1Title"
+ Me.Anuncio1Title.Size = New System.Drawing.Size(28, 13)
+ Me.Anuncio1Title.TabIndex = 4
+ Me.Anuncio1Title.Text = "Title"
+ Me.Anuncio1Title.Visible = False
+ '
+ 'GunaPanel7
+ '
+ Me.GunaPanel7.Location = New System.Drawing.Point(3, 4)
+ Me.GunaPanel7.Name = "GunaPanel7"
+ Me.GunaPanel7.Size = New System.Drawing.Size(5, 28)
+ Me.GunaPanel7.TabIndex = 1
+ '
+ 'Anuncio1Icon
+ '
+ Me.Anuncio1Icon.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch
+ Me.Anuncio1Icon.Location = New System.Drawing.Point(3, 1)
+ Me.Anuncio1Icon.Name = "Anuncio1Icon"
+ Me.Anuncio1Icon.Size = New System.Drawing.Size(20, 20)
+ Me.Anuncio1Icon.TabIndex = 5
+ Me.Anuncio1Icon.Visible = False
+ '
+ 'Home
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer))
+ Me.ClientSize = New System.Drawing.Size(818, 438)
+ Me.Controls.Add(Me.GunaPanel1)
+ Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
+ Me.Name = "Home"
+ Me.Text = "Home"
+ Me.GunaPanel1.ResumeLayout(False)
+ Me.Anuncio3.ResumeLayout(False)
+ Me.GunaPanel3.ResumeLayout(False)
+ Me.GunaPanel3.PerformLayout()
+ Me.Anuncio2.ResumeLayout(False)
+ Me.GunaPanel2.ResumeLayout(False)
+ Me.GunaPanel2.PerformLayout()
+ Me.Anuncio1.ResumeLayout(False)
+ Me.GunaPanel6.ResumeLayout(False)
+ Me.GunaPanel6.PerformLayout()
+ Me.ResumeLayout(False)
+
+ End Sub
+ Friend WithEvents GunaPanel1 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents Anuncio1 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents Anuncio4 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents Anuncio3 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents Anuncio2 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaPanel2 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaPanel3 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaPanel4 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaPanel5 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents Anuncio3Icon As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents Anuncio2Icon As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents Anuncio2Title As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents Anuncio3Des As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents Anuncio3Title As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents Anuncio2Des As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaPanel6 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents Anuncio1Des As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents Anuncio1Title As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaPanel7 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents Anuncio1Icon As Guna.UI.WinForms.GunaPanel
+End Class
diff --git a/HALOCELauncher/Controls/Forms/Home.resx b/HALOCELauncher/Controls/Forms/Home.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/Home.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/Forms/Home.vb b/HALOCELauncher/Controls/Forms/Home.vb
new file mode 100644
index 0000000..5ca8c1b
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/Home.vb
@@ -0,0 +1,339 @@
+Imports HALOCELauncher.Core.Helpers
+Imports HALOCELauncher.Core.Utils
+Imports System.Net
+Imports System.Text
+Imports HALOCELauncher.Core.Utils.LogFuncs
+
+Public Class Home
+
+ Private Sub Home_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ Try : AddHandler Application.ThreadException, AddressOf Application_Exception_Handler _
+ : Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException, False) _
+ : Catch : End Try
+
+ SetStyle(ControlStyles.SupportsTransparentBackColor, True)
+ Me.BackColor = Color.Transparent
+ Me.Refresh()
+ StartC()
+ End Sub
+
+ Private Sub Application_Exception_Handler(ByVal sender As Object, ByVal e As System.Threading.ThreadExceptionEventArgs)
+ Dim ex As Exception = CType(e.Exception, Exception)
+ WriteLog(ex.Message, InfoType.Exception)
+ End Sub
+
+#Region " Parent Dragger "
+
+ Private Dragger As ControlDragger = ControlDragger.Empty
+
+ Private Sub InitializeDrag()
+ Me.Dragger = New ControlDragger(Me, Form1)
+ Me.Dragger = New ControlDragger(GunaPanel1, Form1)
+ For Each Cdrag As Control In GunaPanel1.Controls
+ Me.Dragger = New ControlDragger(Cdrag, Form1)
+ Next
+ Me.Dragger.Enabled = True
+ End Sub
+
+ Private Sub AlternateDrag()
+ Dragger.Enabled = Not Dragger.Enabled
+ End Sub
+
+ Private Sub FinishDrag()
+ Dragger.Dispose()
+ End Sub
+
+ Private Sub Drag() Handles MyBase.Shown
+ Me.InitializeDrag()
+ End Sub
+
+#End Region
+
+ Public Overrides Sub Refresh()
+ If Anuncio1_Image = False Then
+ Dim Aplyblur1 As New GetBlurBitmap(Me.Anuncio1)
+ End If
+ If Anuncio2_Image = False Then
+ Dim Aplyblur2 As New GetBlurBitmap(Me.Anuncio2)
+ End If
+ If Anuncio3_Image = False Then
+ Dim Aplyblur3 As New GetBlurBitmap(Me.Anuncio3)
+ End If
+ If Anuncio4_Image = False Then
+ Dim Aplyblur4 As New GetBlurBitmap(Me.Anuncio4)
+ End If
+ MyBase.Refresh()
+ End Sub
+
+ Private Sub StartC()
+ On Error Resume Next
+ Me.GunaPanel2.BackColor = Color.FromArgb(40, Color.Black)
+ Me.GunaPanel3.BackColor = Color.FromArgb(40, Color.Black)
+ Me.GunaPanel4.BackColor = Color.FromArgb(40, Color.White)
+ Me.GunaPanel5.BackColor = Color.FromArgb(40, Color.White)
+ DownloadAsync("https://raw.githubusercontent.com/DestroyerDarkNess/Halo-SyncHack/master/LauncherInfo.txt")
+ End Sub
+
+#Region "ADS"
+
+ Private Anuncio1_Image As Boolean = False
+ Private Anuncio2_Image As Boolean = False
+ Private Anuncio3_Image As Boolean = False
+ Private Anuncio4_Image As Boolean = False
+
+ Dim xmlData As XDocument =
+
+
+ NO Internet Connection!
+
+
+
+
+
+
+ NO Internet Connection!
+
+
+
+
+
+
+ NO Internet Connection!
+
+
+
+
+
+
+ NO Internet Connection!
+
+
+
+
+
+
+
+ Public Sub DownloadAsync(ByVal adress As String)
+ Dim Client As WebClient = New WebClient()
+ Client.DownloadStringAsync(New Uri(adress))
+ AddHandler Client.DownloadStringCompleted, AddressOf DownloadComplete
+ End Sub
+
+ Public Sub DownloadComplete(sender As Object, e As DownloadStringCompletedEventArgs)
+ Try
+ Dim ClientData As String = e.Result
+ If Not ClientData = "" Then
+ ReadXML(ClientData)
+ End If
+ Catch ex As Exception
+ ReadXML(xmlData.ToString)
+ Anuncio1Title.ForeColor = Color.Red
+ Anuncio2Title.ForeColor = Color.Red
+ Anuncio3Title.ForeColor = Color.Red
+ Dim ExeptionEX As String = ex.Message
+ Anuncio1Des.Text = ExeptionEX
+ Anuncio2Des.Text = ExeptionEX
+ Anuncio3Des.Text = ExeptionEX
+ Anuncio1Des.Visible = True
+ Anuncio2Des.Visible = True
+ Anuncio3Des.Visible = True
+ End Try
+ End Sub
+
+ Private Sub ReadXML(ByVal XmlString As String)
+ On Error Resume Next
+ Dim element As XDocument = XDocument.Parse(XmlString)
+ xmlData = element
+ Dim Str As New StringBuilder
+ For Each signature As XElement In xmlData.Root.Elements
+ Dim Anuncement As String = signature.Name.ToString
+ Dim Title As String = signature..Value
+ Dim IconDir As String = signature..Value
+ Dim ImageDir As String = signature..Value
+ Dim Description As String = signature..Value
+ Dim LinkUrl As String = signature..Value
+ If Anuncement = "Anuncio1" Then
+
+ If Not Title = "" Then
+ Anuncio1Title.Text = Title
+ Anuncio1Title.Visible = True
+ End If
+ If Not ImageDir = "" Then
+ Anuncio1.BackgroundImage = GetImageDecripted(ImageDir)
+ Anuncio1_Image = True
+ End If
+ If Not IconDir = "" Then
+ Anuncio1Icon.BackgroundImage = GetImageDecripted(IconDir)
+ Anuncio1Icon.Visible = True
+ End If
+ If Not Description = "" Then
+ Anuncio1Des.Text = Description
+ Anuncio1Des.Visible = True
+ End If
+ If Not LinkUrl = "" Then
+ Anuncio1Link = LinkUrl
+ Anuncio1.Cursor = Cursors.Hand
+ End If
+
+ ElseIf Anuncement = "Anuncio2" Then
+ If Not Title = "" Then
+ Anuncio2Title.Text = Title
+ Anuncio2Title.Visible = True
+ End If
+ If Not ImageDir = "" Then
+ Anuncio2.BackgroundImage = GetImageDecripted(ImageDir)
+ Anuncio2_Image = True
+ End If
+ If Not IconDir = "" Then
+ Anuncio2Icon.BackgroundImage = GetImageDecripted(IconDir)
+ Anuncio2Icon.Visible = True
+ End If
+ If Not Description = "" Then
+ Anuncio2Des.Text = Description
+ Anuncio2Des.Visible = True
+ End If
+ If Not LinkUrl = "" Then
+ Anuncio2Link = LinkUrl
+ Anuncio2.Cursor = Cursors.Hand
+ End If
+ ElseIf Anuncement = "Anuncio3" Then
+ If Not Title = "" Then
+ Anuncio3Title.Text = Title
+ Anuncio3Title.Visible = True
+ End If
+ If Not ImageDir = "" Then
+ Anuncio3.BackgroundImage = GetImageDecripted(ImageDir)
+ Anuncio3_Image = True
+ End If
+ If Not IconDir = "" Then
+ Anuncio3Icon.BackgroundImage = GetImageDecripted(IconDir)
+ Anuncio3Icon.Visible = True
+ End If
+ If Not Description = "" Then
+ Anuncio3Des.Text = Description
+ Anuncio3Des.Visible = True
+ End If
+ If Not LinkUrl = "" Then
+ Anuncio3Link = LinkUrl
+ Anuncio3.Cursor = Cursors.Hand
+ End If
+ ElseIf Anuncement = "Anuncio4" Then
+
+ End If
+
+ Next
+
+ End Sub
+
+ Private Sub OpenAnuncePanel(ByVal Pads As Control)
+ Dim Max As Integer = 148
+ Dim Min As Integer = 35
+ If Pads.Height = Min Then
+ For i As Integer = 0 To 2
+ If Pads.Height = Max Then
+ Exit For
+ End If
+ Pads.Height += 1
+ i -= 1
+ Next
+ Else
+ For i As Integer = 0 To 2
+ If Pads.Height = Min Then
+ Exit For
+ End If
+ Pads.Height -= 1
+ i -= 1
+ Next
+ End If
+ End Sub
+
+ Private Sub OpenAnunce1Panel()
+ Dim Max As Integer = 231
+ Dim Min As Integer = 35
+ If GunaPanel6.Height = Min Then
+ For i As Integer = 0 To 2
+ If GunaPanel6.Height = Max Then
+ Exit For
+ End If
+ GunaPanel6.Height += 1
+ i -= 1
+ Next
+ Else
+ For i As Integer = 0 To 2
+ If GunaPanel6.Height = Min Then
+ Exit For
+ End If
+ GunaPanel6.Height -= 1
+ i -= 1
+ Next
+ End If
+ End Sub
+
+ Private Function GetImageDecripted(ByVal stringBase64 As String) As Image
+ Dim byteArray = ConvertBase64ToByteArray(stringBase64)
+ Return convertbytetoimage(byteArray)
+ End Function
+
+#End Region
+
+#Region " Anuncio 1 "
+
+ Private Anuncio1Link As String = String.Empty
+
+ Private Sub Anuncio1_Click(sender As Object, e As EventArgs) Handles Anuncio1.Click
+ If Not Anuncio1Link = String.Empty Then
+ Process.Start(Anuncio1Link)
+ End If
+ End Sub
+
+ Private Sub Anuncio1Title_Click(sender As Object, e As EventArgs) Handles Anuncio1Title.Click
+ OpenAnunce1Panel()
+ End Sub
+
+ Private Sub Anuncio1Des_Click(sender As Object, e As EventArgs) Handles Anuncio1Des.Click
+ OpenAnunce1Panel()
+ End Sub
+
+#End Region
+
+#Region " Anuncio 2 "
+
+ Private Anuncio2Link As String = String.Empty
+
+ Private Sub Anuncio2_Click(sender As Object, e As EventArgs) Handles Anuncio2.Click
+ If Not Anuncio2Link = String.Empty Then
+ Process.Start(Anuncio2Link)
+ End If
+ End Sub
+
+ Private Sub Anuncio2Title_Click(sender As Object, e As EventArgs) Handles Anuncio2Title.Click
+ OpenAnuncePanel(GunaPanel2)
+ End Sub
+
+ Private Sub Anuncio2Des_Click(sender As Object, e As EventArgs) Handles Anuncio2Des.Click
+ OpenAnuncePanel(GunaPanel2)
+ End Sub
+
+#End Region
+
+#Region " Anuncio 3 "
+
+ Private Anuncio3Link As String = String.Empty
+
+ Private Sub Anuncio3_Click(sender As Object, e As EventArgs) Handles Anuncio3.Click
+ If Not Anuncio3Link = String.Empty Then
+ Process.Start(Anuncio3Link)
+ End If
+ End Sub
+
+ Private Sub Anuncio3Title_Click(sender As Object, e As EventArgs) Handles Anuncio3Title.Click
+ OpenAnuncePanel(GunaPanel3)
+ End Sub
+
+ Private Sub Anuncio3Des_Click(sender As Object, e As EventArgs) Handles Anuncio3Des.Click
+ OpenAnuncePanel(GunaPanel3)
+ End Sub
+
+#End Region
+
+End Class
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/Forms/Modsfrm.Designer.vb b/HALOCELauncher/Controls/Forms/Modsfrm.Designer.vb
new file mode 100644
index 0000000..ff42b5d
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/Modsfrm.Designer.vb
@@ -0,0 +1,55 @@
+ _
+Partial Class Modsfrm
+ Inherits System.Windows.Forms.Form
+
+ 'Form overrides dispose to clean up the component list.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ _
+ Private Sub InitializeComponent()
+ Me.GunaPanel1 = New Guna.UI.WinForms.GunaPanel()
+ Me.SuspendLayout()
+ '
+ 'GunaPanel1
+ '
+ Me.GunaPanel1.BackColor = System.Drawing.Color.Transparent
+ Me.GunaPanel1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.GunaPanel1.Location = New System.Drawing.Point(0, 0)
+ Me.GunaPanel1.Name = "GunaPanel1"
+ Me.GunaPanel1.Size = New System.Drawing.Size(818, 438)
+ Me.GunaPanel1.TabIndex = 3
+ '
+ 'Modsfrm
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer))
+ Me.ClientSize = New System.Drawing.Size(818, 438)
+ Me.Controls.Add(Me.GunaPanel1)
+ Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
+ Me.MaximizeBox = False
+ Me.MinimizeBox = False
+ Me.Name = "Modsfrm"
+ Me.ShowIcon = False
+ Me.ShowInTaskbar = False
+ Me.Text = "Modsfrm"
+ Me.ResumeLayout(False)
+
+ End Sub
+ Friend WithEvents GunaPanel1 As Guna.UI.WinForms.GunaPanel
+End Class
diff --git a/HALOCELauncher/Controls/Forms/Modsfrm.resx b/HALOCELauncher/Controls/Forms/Modsfrm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/Modsfrm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/Forms/Modsfrm.vb b/HALOCELauncher/Controls/Forms/Modsfrm.vb
new file mode 100644
index 0000000..4ec74e1
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/Modsfrm.vb
@@ -0,0 +1,6 @@
+Public Class Modsfrm
+
+ Private Sub Modsfrm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+
+ End Sub
+End Class
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/Forms/Servers.Designer.vb b/HALOCELauncher/Controls/Forms/Servers.Designer.vb
new file mode 100644
index 0000000..d7e074a
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/Servers.Designer.vb
@@ -0,0 +1,605 @@
+ _
+Partial Class Servers
+ Inherits System.Windows.Forms.Form
+
+ 'Form overrides dispose to clean up the component list.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ _
+ Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
+ Me.GunaPanel1 = New Guna.UI.WinForms.GunaPanel()
+ Me.GunaPanel2 = New Guna.UI.WinForms.GunaPanel()
+ Me.GunaLabel6 = New Guna.UI.WinForms.GunaLabel()
+ Me.NameTextbox = New Guna.UI.WinForms.GunaTextBox()
+ Me.GunaButton1 = New Guna.UI.WinForms.GunaButton()
+ Me.GunaPanel4 = New Guna.UI.WinForms.GunaPanel()
+ Me.HeaderInformationLbl = New Guna.UI.WinForms.GunaLabel()
+ Me.PanelContainer = New Guna.UI.WinForms.GunaPanel()
+ Me.HeaderInfo = New Guna.UI.WinForms.GunaPanel()
+ Me.GunaLabel7 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaLabel5 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaLabel4 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaLabel3 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaLabel2 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaLabel1 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaPanel3 = New Guna.UI.WinForms.GunaPanel()
+ Me.nav_mods = New Guna.UI.WinForms.GunaAdvenceButton()
+ Me.nav_servers = New Guna.UI.WinForms.GunaAdvenceButton()
+ Me.nav_home = New Guna.UI.WinForms.GunaAdvenceButton()
+ Me.MenuStripZ1 = New HALOCELauncher.CustomWindowsForm.MenuStripZ()
+ Me.FileToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.ImportFavoritesListToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.ExportFavoritesListToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.ViewToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.ServersToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.AddCustomServerToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.AddAllServersToFavoritesToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator()
+ Me.ConnectToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.RefreshServerListToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator()
+ Me.DeleteAllServersToFavoritesToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.ToolsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.HelpToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.HelpTopicsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator()
+ Me.OpencarnagenetToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.HALOFixesToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.UnknowncheatsmeToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator()
+ Me.AboutToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
+ Me.GunaPanel1.SuspendLayout()
+ Me.GunaPanel2.SuspendLayout()
+ Me.GunaPanel4.SuspendLayout()
+ Me.HeaderInfo.SuspendLayout()
+ Me.GunaPanel3.SuspendLayout()
+ Me.MenuStripZ1.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'GunaPanel1
+ '
+ Me.GunaPanel1.BackColor = System.Drawing.Color.Transparent
+ Me.GunaPanel1.Controls.Add(Me.GunaPanel2)
+ Me.GunaPanel1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.GunaPanel1.Location = New System.Drawing.Point(0, 0)
+ Me.GunaPanel1.Name = "GunaPanel1"
+ Me.GunaPanel1.Size = New System.Drawing.Size(818, 438)
+ Me.GunaPanel1.TabIndex = 3
+ '
+ 'GunaPanel2
+ '
+ Me.GunaPanel2.BackColor = System.Drawing.Color.Transparent
+ Me.GunaPanel2.Controls.Add(Me.GunaLabel6)
+ Me.GunaPanel2.Controls.Add(Me.NameTextbox)
+ Me.GunaPanel2.Controls.Add(Me.GunaButton1)
+ Me.GunaPanel2.Controls.Add(Me.GunaPanel4)
+ Me.GunaPanel2.Controls.Add(Me.PanelContainer)
+ Me.GunaPanel2.Controls.Add(Me.HeaderInfo)
+ Me.GunaPanel2.Controls.Add(Me.GunaPanel3)
+ Me.GunaPanel2.Controls.Add(Me.MenuStripZ1)
+ Me.GunaPanel2.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.GunaPanel2.Location = New System.Drawing.Point(0, 0)
+ Me.GunaPanel2.Name = "GunaPanel2"
+ Me.GunaPanel2.Size = New System.Drawing.Size(818, 438)
+ Me.GunaPanel2.TabIndex = 4
+ '
+ 'GunaLabel6
+ '
+ Me.GunaLabel6.AutoSize = True
+ Me.GunaLabel6.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel6.ForeColor = System.Drawing.Color.White
+ Me.GunaLabel6.Location = New System.Drawing.Point(366, 35)
+ Me.GunaLabel6.Name = "GunaLabel6"
+ Me.GunaLabel6.Size = New System.Drawing.Size(77, 15)
+ Me.GunaLabel6.TabIndex = 50
+ Me.GunaLabel6.Text = "Server Invite :"
+ '
+ 'NameTextbox
+ '
+ Me.NameTextbox.BaseColor = System.Drawing.Color.FromArgb(CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer))
+ Me.NameTextbox.BorderColor = System.Drawing.Color.FromArgb(CType(CType(66, Byte), Integer), CType(CType(58, Byte), Integer), CType(CType(170, Byte), Integer))
+ Me.NameTextbox.BorderSize = 1
+ Me.NameTextbox.Cursor = System.Windows.Forms.Cursors.IBeam
+ Me.NameTextbox.FocusedBaseColor = System.Drawing.Color.FromArgb(CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer))
+ Me.NameTextbox.FocusedBorderColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.NameTextbox.FocusedForeColor = System.Drawing.Color.White
+ Me.NameTextbox.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.NameTextbox.ForeColor = System.Drawing.Color.White
+ Me.NameTextbox.Location = New System.Drawing.Point(449, 30)
+ Me.NameTextbox.Name = "NameTextbox"
+ Me.NameTextbox.PasswordChar = Global.Microsoft.VisualBasic.ChrW(0)
+ Me.NameTextbox.Size = New System.Drawing.Size(269, 26)
+ Me.NameTextbox.TabIndex = 49
+ '
+ 'GunaButton1
+ '
+ Me.GunaButton1.AnimationHoverSpeed = 0.07!
+ Me.GunaButton1.AnimationSpeed = 0.03!
+ Me.GunaButton1.BaseColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton1.BorderColor = System.Drawing.Color.Black
+ Me.GunaButton1.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.GunaButton1.FocusedColor = System.Drawing.Color.Empty
+ Me.GunaButton1.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaButton1.ForeColor = System.Drawing.Color.White
+ Me.GunaButton1.Image = Nothing
+ Me.GunaButton1.ImageAlign = System.Windows.Forms.HorizontalAlignment.Center
+ Me.GunaButton1.ImageSize = New System.Drawing.Size(20, 20)
+ Me.GunaButton1.Location = New System.Drawing.Point(724, 30)
+ Me.GunaButton1.Name = "GunaButton1"
+ Me.GunaButton1.OnHoverBaseColor = System.Drawing.Color.FromArgb(CType(CType(151, Byte), Integer), CType(CType(143, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton1.OnHoverBorderColor = System.Drawing.Color.Black
+ Me.GunaButton1.OnHoverForeColor = System.Drawing.Color.White
+ Me.GunaButton1.OnHoverImage = Nothing
+ Me.GunaButton1.OnPressedColor = System.Drawing.Color.Black
+ Me.GunaButton1.Size = New System.Drawing.Size(81, 28)
+ Me.GunaButton1.TabIndex = 48
+ Me.GunaButton1.Text = "Launch"
+ Me.GunaButton1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
+ '
+ 'GunaPanel4
+ '
+ Me.GunaPanel4.Controls.Add(Me.HeaderInformationLbl)
+ Me.GunaPanel4.Location = New System.Drawing.Point(157, 0)
+ Me.GunaPanel4.Name = "GunaPanel4"
+ Me.GunaPanel4.Size = New System.Drawing.Size(648, 24)
+ Me.GunaPanel4.TabIndex = 8
+ '
+ 'HeaderInformationLbl
+ '
+ Me.HeaderInformationLbl.AutoSize = True
+ Me.HeaderInformationLbl.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.HeaderInformationLbl.ForeColor = System.Drawing.Color.White
+ Me.HeaderInformationLbl.Location = New System.Drawing.Point(3, 6)
+ Me.HeaderInformationLbl.Name = "HeaderInformationLbl"
+ Me.HeaderInformationLbl.Size = New System.Drawing.Size(0, 15)
+ Me.HeaderInformationLbl.TabIndex = 0
+ '
+ 'PanelContainer
+ '
+ Me.PanelContainer.Location = New System.Drawing.Point(12, 96)
+ Me.PanelContainer.Name = "PanelContainer"
+ Me.PanelContainer.Size = New System.Drawing.Size(793, 330)
+ Me.PanelContainer.TabIndex = 7
+ '
+ 'HeaderInfo
+ '
+ Me.HeaderInfo.Controls.Add(Me.GunaLabel7)
+ Me.HeaderInfo.Controls.Add(Me.GunaLabel5)
+ Me.HeaderInfo.Controls.Add(Me.GunaLabel4)
+ Me.HeaderInfo.Controls.Add(Me.GunaLabel3)
+ Me.HeaderInfo.Controls.Add(Me.GunaLabel2)
+ Me.HeaderInfo.Controls.Add(Me.GunaLabel1)
+ Me.HeaderInfo.Location = New System.Drawing.Point(12, 64)
+ Me.HeaderInfo.Name = "HeaderInfo"
+ Me.HeaderInfo.Size = New System.Drawing.Size(793, 26)
+ Me.HeaderInfo.TabIndex = 5
+ '
+ 'GunaLabel7
+ '
+ Me.GunaLabel7.AutoSize = True
+ Me.GunaLabel7.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel7.ForeColor = System.Drawing.Color.White
+ Me.GunaLabel7.Location = New System.Drawing.Point(652, 6)
+ Me.GunaLabel7.Name = "GunaLabel7"
+ Me.GunaLabel7.Size = New System.Drawing.Size(63, 15)
+ Me.GunaLabel7.TabIndex = 5
+ Me.GunaLabel7.Text = "Server Info"
+ '
+ 'GunaLabel5
+ '
+ Me.GunaLabel5.AutoSize = True
+ Me.GunaLabel5.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel5.ForeColor = System.Drawing.Color.White
+ Me.GunaLabel5.Location = New System.Drawing.Point(391, 6)
+ Me.GunaLabel5.Name = "GunaLabel5"
+ Me.GunaLabel5.Size = New System.Drawing.Size(33, 15)
+ Me.GunaLabel5.TabIndex = 4
+ Me.GunaLabel5.Text = "MAP"
+ '
+ 'GunaLabel4
+ '
+ Me.GunaLabel4.AutoSize = True
+ Me.GunaLabel4.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel4.ForeColor = System.Drawing.Color.White
+ Me.GunaLabel4.Location = New System.Drawing.Point(484, 6)
+ Me.GunaLabel4.Name = "GunaLabel4"
+ Me.GunaLabel4.Size = New System.Drawing.Size(38, 15)
+ Me.GunaLabel4.TabIndex = 3
+ Me.GunaLabel4.Text = "Mode"
+ '
+ 'GunaLabel3
+ '
+ Me.GunaLabel3.AutoSize = True
+ Me.GunaLabel3.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel3.ForeColor = System.Drawing.Color.White
+ Me.GunaLabel3.Location = New System.Drawing.Point(333, 6)
+ Me.GunaLabel3.Name = "GunaLabel3"
+ Me.GunaLabel3.Size = New System.Drawing.Size(31, 15)
+ Me.GunaLabel3.TabIndex = 2
+ Me.GunaLabel3.Text = "Ping"
+ '
+ 'GunaLabel2
+ '
+ Me.GunaLabel2.AutoSize = True
+ Me.GunaLabel2.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel2.ForeColor = System.Drawing.Color.White
+ Me.GunaLabel2.Location = New System.Drawing.Point(260, 6)
+ Me.GunaLabel2.Name = "GunaLabel2"
+ Me.GunaLabel2.Size = New System.Drawing.Size(44, 15)
+ Me.GunaLabel2.TabIndex = 1
+ Me.GunaLabel2.Text = "Players"
+ '
+ 'GunaLabel1
+ '
+ Me.GunaLabel1.AutoSize = True
+ Me.GunaLabel1.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel1.ForeColor = System.Drawing.Color.White
+ Me.GunaLabel1.Location = New System.Drawing.Point(3, 6)
+ Me.GunaLabel1.Name = "GunaLabel1"
+ Me.GunaLabel1.Size = New System.Drawing.Size(64, 15)
+ Me.GunaLabel1.TabIndex = 0
+ Me.GunaLabel1.Text = "HostName"
+ '
+ 'GunaPanel3
+ '
+ Me.GunaPanel3.BackColor = System.Drawing.Color.Transparent
+ Me.GunaPanel3.Controls.Add(Me.nav_mods)
+ Me.GunaPanel3.Controls.Add(Me.nav_servers)
+ Me.GunaPanel3.Controls.Add(Me.nav_home)
+ Me.GunaPanel3.Location = New System.Drawing.Point(12, 30)
+ Me.GunaPanel3.Name = "GunaPanel3"
+ Me.GunaPanel3.Size = New System.Drawing.Size(339, 28)
+ Me.GunaPanel3.TabIndex = 3
+ '
+ 'nav_mods
+ '
+ Me.nav_mods.Animated = True
+ Me.nav_mods.AnimationHoverSpeed = 0.07!
+ Me.nav_mods.AnimationSpeed = 0.03!
+ Me.nav_mods.BaseColor = System.Drawing.Color.Transparent
+ Me.nav_mods.BorderColor = System.Drawing.Color.Black
+ Me.nav_mods.ButtonType = Guna.UI.WinForms.AdvenceButtonType.RadioButton
+ Me.nav_mods.CheckedBaseColor = System.Drawing.Color.Transparent
+ Me.nav_mods.CheckedBorderColor = System.Drawing.Color.Black
+ Me.nav_mods.CheckedForeColor = System.Drawing.Color.White
+ Me.nav_mods.CheckedImage = Nothing
+ Me.nav_mods.CheckedLineColor = System.Drawing.Color.MediumSpringGreen
+ Me.nav_mods.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.nav_mods.Dock = System.Windows.Forms.DockStyle.Left
+ Me.nav_mods.FocusedColor = System.Drawing.Color.Empty
+ Me.nav_mods.Font = New System.Drawing.Font("Segoe UI Semibold", 9.0!)
+ Me.nav_mods.ForeColor = System.Drawing.Color.FromArgb(CType(CType(127, Byte), Integer), CType(CType(131, Byte), Integer), CType(CType(140, Byte), Integer))
+ Me.nav_mods.Image = Nothing
+ Me.nav_mods.ImageSize = New System.Drawing.Size(20, 20)
+ Me.nav_mods.LineBottom = 2
+ Me.nav_mods.LineColor = System.Drawing.Color.Transparent
+ Me.nav_mods.Location = New System.Drawing.Point(224, 0)
+ Me.nav_mods.Name = "nav_mods"
+ Me.nav_mods.OnHoverBaseColor = System.Drawing.Color.Transparent
+ Me.nav_mods.OnHoverBorderColor = System.Drawing.Color.Black
+ Me.nav_mods.OnHoverForeColor = System.Drawing.Color.White
+ Me.nav_mods.OnHoverImage = Nothing
+ Me.nav_mods.OnHoverLineColor = System.Drawing.Color.MediumSpringGreen
+ Me.nav_mods.OnPressedColor = System.Drawing.Color.Black
+ Me.nav_mods.OnPressedDepth = 0
+ Me.nav_mods.Size = New System.Drawing.Size(112, 28)
+ Me.nav_mods.TabIndex = 2
+ Me.nav_mods.Text = "Hosted"
+ Me.nav_mods.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
+ Me.nav_mods.Visible = False
+ '
+ 'nav_servers
+ '
+ Me.nav_servers.Animated = True
+ Me.nav_servers.AnimationHoverSpeed = 0.07!
+ Me.nav_servers.AnimationSpeed = 0.03!
+ Me.nav_servers.BaseColor = System.Drawing.Color.Transparent
+ Me.nav_servers.BorderColor = System.Drawing.Color.Black
+ Me.nav_servers.ButtonType = Guna.UI.WinForms.AdvenceButtonType.RadioButton
+ Me.nav_servers.CheckedBaseColor = System.Drawing.Color.Transparent
+ Me.nav_servers.CheckedBorderColor = System.Drawing.Color.Black
+ Me.nav_servers.CheckedForeColor = System.Drawing.Color.White
+ Me.nav_servers.CheckedImage = Nothing
+ Me.nav_servers.CheckedLineColor = System.Drawing.Color.MediumSpringGreen
+ Me.nav_servers.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.nav_servers.Dock = System.Windows.Forms.DockStyle.Left
+ Me.nav_servers.FocusedColor = System.Drawing.Color.Empty
+ Me.nav_servers.Font = New System.Drawing.Font("Segoe UI Semibold", 9.0!)
+ Me.nav_servers.ForeColor = System.Drawing.Color.FromArgb(CType(CType(127, Byte), Integer), CType(CType(131, Byte), Integer), CType(CType(140, Byte), Integer))
+ Me.nav_servers.Image = Nothing
+ Me.nav_servers.ImageSize = New System.Drawing.Size(20, 20)
+ Me.nav_servers.LineBottom = 2
+ Me.nav_servers.LineColor = System.Drawing.Color.Transparent
+ Me.nav_servers.Location = New System.Drawing.Point(112, 0)
+ Me.nav_servers.Name = "nav_servers"
+ Me.nav_servers.OnHoverBaseColor = System.Drawing.Color.Transparent
+ Me.nav_servers.OnHoverBorderColor = System.Drawing.Color.Black
+ Me.nav_servers.OnHoverForeColor = System.Drawing.Color.White
+ Me.nav_servers.OnHoverImage = Nothing
+ Me.nav_servers.OnHoverLineColor = System.Drawing.Color.MediumSpringGreen
+ Me.nav_servers.OnPressedColor = System.Drawing.Color.Black
+ Me.nav_servers.OnPressedDepth = 0
+ Me.nav_servers.Size = New System.Drawing.Size(112, 28)
+ Me.nav_servers.TabIndex = 1
+ Me.nav_servers.Text = "Internet"
+ Me.nav_servers.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
+ '
+ 'nav_home
+ '
+ Me.nav_home.Animated = True
+ Me.nav_home.AnimationHoverSpeed = 0.07!
+ Me.nav_home.AnimationSpeed = 0.03!
+ Me.nav_home.BaseColor = System.Drawing.Color.Transparent
+ Me.nav_home.BorderColor = System.Drawing.Color.Black
+ Me.nav_home.ButtonType = Guna.UI.WinForms.AdvenceButtonType.RadioButton
+ Me.nav_home.Checked = True
+ Me.nav_home.CheckedBaseColor = System.Drawing.Color.Transparent
+ Me.nav_home.CheckedBorderColor = System.Drawing.Color.Black
+ Me.nav_home.CheckedForeColor = System.Drawing.Color.White
+ Me.nav_home.CheckedImage = Nothing
+ Me.nav_home.CheckedLineColor = System.Drawing.Color.MediumSpringGreen
+ Me.nav_home.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.nav_home.Dock = System.Windows.Forms.DockStyle.Left
+ Me.nav_home.FocusedColor = System.Drawing.Color.Empty
+ Me.nav_home.Font = New System.Drawing.Font("Segoe UI Semibold", 9.0!)
+ Me.nav_home.ForeColor = System.Drawing.Color.FromArgb(CType(CType(127, Byte), Integer), CType(CType(131, Byte), Integer), CType(CType(140, Byte), Integer))
+ Me.nav_home.Image = Nothing
+ Me.nav_home.ImageSize = New System.Drawing.Size(20, 20)
+ Me.nav_home.LineBottom = 2
+ Me.nav_home.LineColor = System.Drawing.Color.Transparent
+ Me.nav_home.Location = New System.Drawing.Point(0, 0)
+ Me.nav_home.Name = "nav_home"
+ Me.nav_home.OnHoverBaseColor = System.Drawing.Color.Transparent
+ Me.nav_home.OnHoverBorderColor = System.Drawing.Color.Black
+ Me.nav_home.OnHoverForeColor = System.Drawing.Color.White
+ Me.nav_home.OnHoverImage = Nothing
+ Me.nav_home.OnHoverLineColor = System.Drawing.Color.MediumSpringGreen
+ Me.nav_home.OnPressedColor = System.Drawing.Color.Black
+ Me.nav_home.OnPressedDepth = 0
+ Me.nav_home.Size = New System.Drawing.Size(112, 28)
+ Me.nav_home.TabIndex = 0
+ Me.nav_home.Text = "Favorites"
+ Me.nav_home.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
+ '
+ 'MenuStripZ1
+ '
+ Me.MenuStripZ1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FileToolStripMenuItem, Me.ViewToolStripMenuItem, Me.ServersToolStripMenuItem, Me.ToolsToolStripMenuItem, Me.HelpToolStripMenuItem})
+ Me.MenuStripZ1.Location = New System.Drawing.Point(0, 0)
+ Me.MenuStripZ1.Name = "MenuStripZ1"
+ Me.MenuStripZ1.Size = New System.Drawing.Size(818, 24)
+ Me.MenuStripZ1.TabIndex = 4
+ Me.MenuStripZ1.Text = "MenuStripZ1"
+ '
+ 'FileToolStripMenuItem
+ '
+ Me.FileToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ImportFavoritesListToolStripMenuItem, Me.ExportFavoritesListToolStripMenuItem})
+ Me.FileToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.FileToolStripMenuItem.Name = "FileToolStripMenuItem"
+ Me.FileToolStripMenuItem.Size = New System.Drawing.Size(37, 20)
+ Me.FileToolStripMenuItem.Text = "File"
+ '
+ 'ImportFavoritesListToolStripMenuItem
+ '
+ Me.ImportFavoritesListToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.ImportFavoritesListToolStripMenuItem.Name = "ImportFavoritesListToolStripMenuItem"
+ Me.ImportFavoritesListToolStripMenuItem.Size = New System.Drawing.Size(181, 22)
+ Me.ImportFavoritesListToolStripMenuItem.Text = "Import Favorites List"
+ '
+ 'ExportFavoritesListToolStripMenuItem
+ '
+ Me.ExportFavoritesListToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.ExportFavoritesListToolStripMenuItem.Name = "ExportFavoritesListToolStripMenuItem"
+ Me.ExportFavoritesListToolStripMenuItem.Size = New System.Drawing.Size(181, 22)
+ Me.ExportFavoritesListToolStripMenuItem.Text = "Export Favorites List"
+ '
+ 'ViewToolStripMenuItem
+ '
+ Me.ViewToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.ViewToolStripMenuItem.Name = "ViewToolStripMenuItem"
+ Me.ViewToolStripMenuItem.Size = New System.Drawing.Size(44, 20)
+ Me.ViewToolStripMenuItem.Text = "View"
+ Me.ViewToolStripMenuItem.Visible = False
+ '
+ 'ServersToolStripMenuItem
+ '
+ Me.ServersToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.AddCustomServerToolStripMenuItem, Me.AddAllServersToFavoritesToolStripMenuItem, Me.ToolStripSeparator2, Me.ConnectToolStripMenuItem, Me.RefreshServerListToolStripMenuItem, Me.ToolStripSeparator1, Me.DeleteAllServersToFavoritesToolStripMenuItem})
+ Me.ServersToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.ServersToolStripMenuItem.Name = "ServersToolStripMenuItem"
+ Me.ServersToolStripMenuItem.Size = New System.Drawing.Size(56, 20)
+ Me.ServersToolStripMenuItem.Text = "Servers"
+ '
+ 'AddCustomServerToolStripMenuItem
+ '
+ Me.AddCustomServerToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.AddCustomServerToolStripMenuItem.Name = "AddCustomServerToolStripMenuItem"
+ Me.AddCustomServerToolStripMenuItem.Size = New System.Drawing.Size(226, 22)
+ Me.AddCustomServerToolStripMenuItem.Text = "Add Custom Server"
+ '
+ 'AddAllServersToFavoritesToolStripMenuItem
+ '
+ Me.AddAllServersToFavoritesToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.AddAllServersToFavoritesToolStripMenuItem.Name = "AddAllServersToFavoritesToolStripMenuItem"
+ Me.AddAllServersToFavoritesToolStripMenuItem.Size = New System.Drawing.Size(226, 22)
+ Me.AddAllServersToFavoritesToolStripMenuItem.Text = "Add All Servers To favorites"
+ '
+ 'ToolStripSeparator2
+ '
+ Me.ToolStripSeparator2.Name = "ToolStripSeparator2"
+ Me.ToolStripSeparator2.Size = New System.Drawing.Size(223, 6)
+ '
+ 'ConnectToolStripMenuItem
+ '
+ Me.ConnectToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.ConnectToolStripMenuItem.Name = "ConnectToolStripMenuItem"
+ Me.ConnectToolStripMenuItem.Size = New System.Drawing.Size(226, 22)
+ Me.ConnectToolStripMenuItem.Text = "Refresh Favorites List"
+ '
+ 'RefreshServerListToolStripMenuItem
+ '
+ Me.RefreshServerListToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.RefreshServerListToolStripMenuItem.Name = "RefreshServerListToolStripMenuItem"
+ Me.RefreshServerListToolStripMenuItem.Size = New System.Drawing.Size(226, 22)
+ Me.RefreshServerListToolStripMenuItem.Text = "Refresh Internet List"
+ '
+ 'ToolStripSeparator1
+ '
+ Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
+ Me.ToolStripSeparator1.Size = New System.Drawing.Size(223, 6)
+ '
+ 'DeleteAllServersToFavoritesToolStripMenuItem
+ '
+ Me.DeleteAllServersToFavoritesToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.DeleteAllServersToFavoritesToolStripMenuItem.Name = "DeleteAllServersToFavoritesToolStripMenuItem"
+ Me.DeleteAllServersToFavoritesToolStripMenuItem.Size = New System.Drawing.Size(226, 22)
+ Me.DeleteAllServersToFavoritesToolStripMenuItem.Text = "Delete All Servers to favorites"
+ '
+ 'ToolsToolStripMenuItem
+ '
+ Me.ToolsToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.ToolsToolStripMenuItem.Name = "ToolsToolStripMenuItem"
+ Me.ToolsToolStripMenuItem.Size = New System.Drawing.Size(48, 20)
+ Me.ToolsToolStripMenuItem.Text = "Tools"
+ Me.ToolsToolStripMenuItem.Visible = False
+ '
+ 'HelpToolStripMenuItem
+ '
+ Me.HelpToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.HelpTopicsToolStripMenuItem, Me.ToolStripSeparator3, Me.OpencarnagenetToolStripMenuItem, Me.HALOFixesToolStripMenuItem, Me.UnknowncheatsmeToolStripMenuItem, Me.ToolStripSeparator4, Me.AboutToolStripMenuItem})
+ Me.HelpToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.HelpToolStripMenuItem.Name = "HelpToolStripMenuItem"
+ Me.HelpToolStripMenuItem.Size = New System.Drawing.Size(44, 20)
+ Me.HelpToolStripMenuItem.Text = "Help"
+ '
+ 'HelpTopicsToolStripMenuItem
+ '
+ Me.HelpTopicsToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.HelpTopicsToolStripMenuItem.Name = "HelpTopicsToolStripMenuItem"
+ Me.HelpTopicsToolStripMenuItem.Size = New System.Drawing.Size(179, 22)
+ Me.HelpTopicsToolStripMenuItem.Text = "Help Topics"
+ '
+ 'ToolStripSeparator3
+ '
+ Me.ToolStripSeparator3.Name = "ToolStripSeparator3"
+ Me.ToolStripSeparator3.Size = New System.Drawing.Size(176, 6)
+ '
+ 'OpencarnagenetToolStripMenuItem
+ '
+ Me.OpencarnagenetToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.OpencarnagenetToolStripMenuItem.Name = "OpencarnagenetToolStripMenuItem"
+ Me.OpencarnagenetToolStripMenuItem.Size = New System.Drawing.Size(179, 22)
+ Me.OpencarnagenetToolStripMenuItem.Text = "Opencarnage.net"
+ '
+ 'HALOFixesToolStripMenuItem
+ '
+ Me.HALOFixesToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.HALOFixesToolStripMenuItem.Name = "HALOFixesToolStripMenuItem"
+ Me.HALOFixesToolStripMenuItem.Size = New System.Drawing.Size(179, 22)
+ Me.HALOFixesToolStripMenuItem.Text = "HALO Fixes"
+ '
+ 'UnknowncheatsmeToolStripMenuItem
+ '
+ Me.UnknowncheatsmeToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.UnknowncheatsmeToolStripMenuItem.Name = "UnknowncheatsmeToolStripMenuItem"
+ Me.UnknowncheatsmeToolStripMenuItem.Size = New System.Drawing.Size(179, 22)
+ Me.UnknowncheatsmeToolStripMenuItem.Text = "Unknowncheats.me"
+ '
+ 'ToolStripSeparator4
+ '
+ Me.ToolStripSeparator4.Name = "ToolStripSeparator4"
+ Me.ToolStripSeparator4.Size = New System.Drawing.Size(176, 6)
+ '
+ 'AboutToolStripMenuItem
+ '
+ Me.AboutToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.AboutToolStripMenuItem.Name = "AboutToolStripMenuItem"
+ Me.AboutToolStripMenuItem.Size = New System.Drawing.Size(179, 22)
+ Me.AboutToolStripMenuItem.Text = "About"
+ '
+ 'Timer1
+ '
+ Me.Timer1.Enabled = True
+ Me.Timer1.Interval = 1
+ '
+ 'Servers
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer))
+ Me.ClientSize = New System.Drawing.Size(818, 438)
+ Me.Controls.Add(Me.GunaPanel1)
+ Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
+ Me.MainMenuStrip = Me.MenuStripZ1
+ Me.Name = "Servers"
+ Me.Text = "Servers"
+ Me.GunaPanel1.ResumeLayout(False)
+ Me.GunaPanel2.ResumeLayout(False)
+ Me.GunaPanel2.PerformLayout()
+ Me.GunaPanel4.ResumeLayout(False)
+ Me.GunaPanel4.PerformLayout()
+ Me.HeaderInfo.ResumeLayout(False)
+ Me.HeaderInfo.PerformLayout()
+ Me.GunaPanel3.ResumeLayout(False)
+ Me.MenuStripZ1.ResumeLayout(False)
+ Me.MenuStripZ1.PerformLayout()
+ Me.ResumeLayout(False)
+
+ End Sub
+ Friend WithEvents GunaPanel1 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaPanel2 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaPanel3 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents nav_mods As Guna.UI.WinForms.GunaAdvenceButton
+ Friend WithEvents nav_servers As Guna.UI.WinForms.GunaAdvenceButton
+ Friend WithEvents nav_home As Guna.UI.WinForms.GunaAdvenceButton
+ Friend WithEvents MenuStripZ1 As HALOCELauncher.CustomWindowsForm.MenuStripZ
+ Friend WithEvents FileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents ImportFavoritesListToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents ExportFavoritesListToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents ViewToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents ServersToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents HelpToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents ConnectToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator
+ Friend WithEvents ToolStripSeparator2 As System.Windows.Forms.ToolStripSeparator
+ Friend WithEvents HelpTopicsToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents ToolStripSeparator3 As System.Windows.Forms.ToolStripSeparator
+ Friend WithEvents OpencarnagenetToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents HALOFixesToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents UnknowncheatsmeToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents ToolStripSeparator4 As System.Windows.Forms.ToolStripSeparator
+ Friend WithEvents AboutToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents ToolsToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents HeaderInfo As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaLabel4 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaLabel3 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaLabel2 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaLabel1 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents PanelContainer As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaLabel5 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents RefreshServerListToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents AddCustomServerToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents GunaLabel7 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaPanel4 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents HeaderInformationLbl As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents Timer1 As System.Windows.Forms.Timer
+ Friend WithEvents AddAllServersToFavoritesToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents DeleteAllServersToFavoritesToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents GunaButton1 As Guna.UI.WinForms.GunaButton
+ Friend WithEvents GunaLabel6 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents NameTextbox As Guna.UI.WinForms.GunaTextBox
+End Class
diff --git a/HALOCELauncher/Controls/Forms/Servers.resx b/HALOCELauncher/Controls/Forms/Servers.resx
new file mode 100644
index 0000000..dac18b0
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/Servers.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 139, 17
+
+
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/Forms/Servers.vb b/HALOCELauncher/Controls/Forms/Servers.vb
new file mode 100644
index 0000000..0b17b93
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/Servers.vb
@@ -0,0 +1,217 @@
+Imports HALOCELauncher.Core.Utils
+Imports HALOCELauncher.Core.SvManager.SvFormatManager
+Imports HALOCELauncher.Core.GameTracker
+Imports HALOCELauncher.Core.Helpers
+Imports HALOCELauncher.HaloQuery.HaloServerInfo
+Imports HALOCELauncher.HaloQuery
+
+Public Class Servers
+
+ Private FavoritesControl As FavoritiesC = New FavoritiesC
+ Private InternetControl As InternetC = New InternetC
+ Public Property LoadA As Boolean = False
+
+ Private Sub Servers_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ SetStyle(ControlStyles.SupportsTransparentBackColor, True)
+ Me.BackColor = Color.Transparent
+ Me.Refresh()
+ ' StartAll()
+ End Sub
+
+ Public Sub UpdateFavoriteTable()
+ FavoritesControl.UpdateAll()
+ End Sub
+
+ Public Function CallWriteAllServerTofavorites() As Boolean
+ InternetControl.WriteAllServerTofavorites()
+ FavoritesControl.UpdateAll()
+ End Function
+
+ Public Overrides Sub Refresh()
+ Dim Aplyblur1 As New GetBlurBitmap(Me.HeaderInfo)
+ Dim Aplyblur2 As New GetBlurBitmap(Me.GunaPanel4)
+ MyBase.Refresh()
+ End Sub
+
+#Region " Parent Dragger "
+
+ Private Dragger As ControlDragger = ControlDragger.Empty
+
+ Private Sub InitializeDrag()
+
+ Me.Dragger = New ControlDragger(Me, Form1)
+ Me.Dragger = New ControlDragger(GunaPanel4, Form1)
+ Me.Dragger = New ControlDragger(GunaPanel2, Form1)
+ Me.Dragger = New ControlDragger(HeaderInfo, Form1)
+
+ For Each Cdrag As Control In HeaderInfo.Controls
+ Me.Dragger = New ControlDragger(Cdrag, Form1)
+ Next
+
+ Me.Dragger.Enabled = True
+ End Sub
+
+ Private Sub AlternateDrag()
+ Dragger.Enabled = Not Dragger.Enabled
+ End Sub
+
+ Private Sub FinishDrag()
+ Dragger.Dispose()
+ End Sub
+
+ Private Sub Drag() Handles MyBase.Shown
+ Me.InitializeDrag()
+ End Sub
+
+#End Region
+
+ Public Sub StartAll()
+ LoadForms()
+ End Sub
+
+ Private Sub LoadForms()
+ AddShowForm(FavoritesControl)
+ AddShowForm(InternetControl)
+ End Sub
+
+
+ Public Sub AddShowForm(ByVal LocalForm As Control)
+ PanelContainer.Controls.Add(LocalForm)
+ LocalForm.Location = New Point(0, 0)
+ End Sub
+
+ Private Sub nav_home_CheckedChanged(sender As Object, e As EventArgs) Handles nav_home.CheckedChanged
+ If nav_home.Checked Then
+ FavoritesControl.BringToFront()
+ FavoritesTap()
+ End If
+ End Sub
+
+ Private Sub FavoritesTap()
+ RefreshServerListToolStripMenuItem.Visible = False
+ DeleteAllServersToFavoritesToolStripMenuItem.Visible = True
+ ImportFavoritesListToolStripMenuItem.Enabled = True
+ AddAllServersToFavoritesToolStripMenuItem.Visible = False
+ If ExistsXmlServer() = True Then
+ ExportFavoritesListToolStripMenuItem.Enabled = True
+ End If
+ End Sub
+
+ Dim LoadServers As Boolean = False
+ Private Sub nav_servers_CheckedChanged(sender As Object, e As EventArgs) Handles nav_servers.CheckedChanged
+ If nav_servers.Checked Then
+ InternetControl.BringToFront()
+ ServersTap()
+ If LoadServers = False Then
+ InternetControl.StartControls()
+ LoadServers = True
+ End If
+ End If
+ End Sub
+
+ Private Sub ServersTap()
+ DeleteAllServersToFavoritesToolStripMenuItem.Visible = False
+ AddAllServersToFavoritesToolStripMenuItem.Visible = True
+ RefreshServerListToolStripMenuItem.Visible = True
+ ImportFavoritesListToolStripMenuItem.Enabled = False
+ ExportFavoritesListToolStripMenuItem.Enabled = False
+ End Sub
+
+#Region " File TapStrip "
+
+ Private Sub ExportFavoritesListToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExportFavoritesListToolStripMenuItem.Click
+ Dim SaveXmlNew As String = save("HALO SERVERS", "Halo Launcher Database (*.xml)|*.xml")
+ If Not SaveXmlNew = "Error" Then
+ IO.File.Copy(xml_svlist, SaveXmlNew)
+ End If
+ End Sub
+
+ Private Sub ImportFavoritesListToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ImportFavoritesListToolStripMenuItem.Click
+ Dim OpenXmlNew As String = open("Halo Launcher Database (*.xml)|*.xml")
+ If Not OpenXmlNew = "Error" Then
+ Dim AddNewServers As Boolean = UpdateFromExternal(OpenXmlNew)
+ If AddNewServers = True Then
+ UpdateFavoriteTable()
+ End If
+ End If
+ End Sub
+
+#End Region
+
+#Region " Server TapStrip "
+
+ Private Sub AddCustomServerToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AddCustomServerToolStripMenuItem.Click
+ AddCustomServer.ShowDialog()
+ End Sub
+
+ Private Sub DeleteAllServersToFavoritesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DeleteAllServersToFavoritesToolStripMenuItem.Click
+ If IO.File.Exists(xml_svlist) = True Then
+ IO.File.Delete(xml_svlist)
+ End If
+ FavoritesControl.UpdateAll()
+ End Sub
+
+ Private Sub AddAllServersToFavoritesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AddAllServersToFavoritesToolStripMenuItem.Click
+ CallWriteAllServerTofavorites()
+ End Sub
+
+ Private Sub ConnectToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ConnectToolStripMenuItem.Click
+ FavoritesControl.UpdateAll()
+ End Sub
+
+ Private Sub RefreshServerListToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RefreshServerListToolStripMenuItem.Click
+ InternetControl.UpdateAll()
+ End Sub
+
+#End Region
+
+#Region " Help TapStrip "
+
+ Private Sub HelpTopicsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles HelpTopicsToolStripMenuItem.Click
+ Process.Start("https://opencarnage.net/index.php?/topic/8139-halo-launcher-for-pc-and-ce-hlpce-realses/")
+ End Sub
+
+ Private Sub OpencarnagenetToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OpencarnagenetToolStripMenuItem.Click
+ Process.Start("https://opencarnage.net/")
+ End Sub
+
+ Private Sub HALOFixesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles HALOFixesToolStripMenuItem.Click
+ Process.Start("https://halo-fixes.forumotion.com/forum")
+ End Sub
+
+ Private Sub UnknowncheatsmeToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UnknowncheatsmeToolStripMenuItem.Click
+ Process.Start("https://www.unknowncheats.me/")
+ End Sub
+
+ Private Sub AboutToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AboutToolStripMenuItem.Click
+ AboutForm.ShowDialog()
+ End Sub
+
+#End Region
+
+
+ Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
+ Dim FavoritesCount As Integer = FavoritesControl.ServerCounter
+ HeaderInformationLbl.Text = "Favorite Servers: " & FavoritesCount
+ If UpdateAe = True Then
+ FavoritesControl.UpdateAll()
+ UpdateAe = False
+ End If
+ End Sub
+
+ Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
+ If Not NameTextbox.Text = "" Then
+ Dim IPAdress As String = Core.Utils.Compression.DecompressData(NameTextbox.Text)
+ Dim TyperGame As Integer = My.Settings.GameDefect
+ If TyperGame = 0 Then
+ Dim NewLauncher As New Core.Launcher(My.Settings.GameDirCE)
+ NewLauncher.Launch(IPAdress)
+ ElseIf TyperGame = 1 Then
+ Dim NewLauncher As New Core.Launcher(My.Settings.GameDirPC)
+ NewLauncher.Launch(IPAdress)
+ End If
+ End If
+ End Sub
+
+
+End Class
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/Forms/Settingfrm.Designer.vb b/HALOCELauncher/Controls/Forms/Settingfrm.Designer.vb
new file mode 100644
index 0000000..c4e73a1
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/Settingfrm.Designer.vb
@@ -0,0 +1,655 @@
+ _
+Partial Class Settingfrm
+ Inherits System.Windows.Forms.Form
+
+ 'Form overrides dispose to clean up the component list.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ _
+ Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
+ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Settingfrm))
+ Me.GunaPanel1 = New Guna.UI.WinForms.GunaPanel()
+ Me.Panel1 = New System.Windows.Forms.Panel()
+ Me.GunaButton5 = New Guna.UI.WinForms.GunaButton()
+ Me.GunaLabel8 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaComboBox2 = New Guna.UI.WinForms.GunaComboBox()
+ Me.GunaPanel6 = New Guna.UI.WinForms.GunaPanel()
+ Me.GunaLabel7 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaButton3 = New Guna.UI.WinForms.GunaButton()
+ Me.GunaButton2 = New Guna.UI.WinForms.GunaButton()
+ Me.GunaPanel2 = New Guna.UI.WinForms.GunaPanel()
+ Me.GunaButton4 = New Guna.UI.WinForms.GunaButton()
+ Me.PCdirTextBox1 = New Guna.UI.WinForms.GunaTextBox()
+ Me.GunaLabel6 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaLabel5 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaComboBox1 = New Guna.UI.WinForms.GunaComboBox()
+ Me.GunaPanel5 = New Guna.UI.WinForms.GunaPanel()
+ Me.GunaLabel4 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaCheckBox8 = New Guna.UI.WinForms.GunaCheckBox()
+ Me.GunaCheckBox7 = New Guna.UI.WinForms.GunaCheckBox()
+ Me.GunaCheckBox6 = New Guna.UI.WinForms.GunaCheckBox()
+ Me.GunaCheckBox5 = New Guna.UI.WinForms.GunaCheckBox()
+ Me.GunaCheckBox4 = New Guna.UI.WinForms.GunaCheckBox()
+ Me.GunaCheckBox3 = New Guna.UI.WinForms.GunaCheckBox()
+ Me.GunaCheckBox2 = New Guna.UI.WinForms.GunaCheckBox()
+ Me.GunaCheckBox1 = New Guna.UI.WinForms.GunaCheckBox()
+ Me.GunaPanel4 = New Guna.UI.WinForms.GunaPanel()
+ Me.GunaLabel3 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaPanel3 = New Guna.UI.WinForms.GunaPanel()
+ Me.GunaLabel2 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaButton1 = New Guna.UI.WinForms.GunaButton()
+ Me.CEdirTextbox = New Guna.UI.WinForms.GunaTextBox()
+ Me.GunaLabel1 = New Guna.UI.WinForms.GunaLabel()
+ Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
+ Me.BoosterToolTip1 = New HALOCELauncher.BoosterToolTip()
+ Me.GunaButton6 = New Guna.UI.WinForms.GunaButton()
+ Me.GunaPanel1.SuspendLayout()
+ Me.Panel1.SuspendLayout()
+ Me.GunaPanel6.SuspendLayout()
+ Me.GunaPanel2.SuspendLayout()
+ Me.GunaPanel5.SuspendLayout()
+ Me.GunaPanel4.SuspendLayout()
+ Me.GunaPanel3.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'GunaPanel1
+ '
+ Me.GunaPanel1.Controls.Add(Me.Panel1)
+ Me.GunaPanel1.Controls.Add(Me.GunaPanel2)
+ Me.GunaPanel1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.GunaPanel1.Location = New System.Drawing.Point(0, 0)
+ Me.GunaPanel1.Name = "GunaPanel1"
+ Me.GunaPanel1.Size = New System.Drawing.Size(818, 438)
+ Me.GunaPanel1.TabIndex = 0
+ '
+ 'Panel1
+ '
+ Me.Panel1.Controls.Add(Me.GunaButton5)
+ Me.Panel1.Controls.Add(Me.GunaLabel8)
+ Me.Panel1.Controls.Add(Me.GunaComboBox2)
+ Me.Panel1.Controls.Add(Me.GunaPanel6)
+ Me.Panel1.Controls.Add(Me.GunaButton3)
+ Me.Panel1.Controls.Add(Me.GunaButton2)
+ Me.Panel1.Location = New System.Drawing.Point(449, 12)
+ Me.Panel1.Name = "Panel1"
+ Me.Panel1.Size = New System.Drawing.Size(357, 414)
+ Me.Panel1.TabIndex = 49
+ '
+ 'GunaButton5
+ '
+ Me.GunaButton5.AnimationHoverSpeed = 0.07!
+ Me.GunaButton5.AnimationSpeed = 0.03!
+ Me.GunaButton5.BaseColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton5.BorderColor = System.Drawing.Color.Black
+ Me.GunaButton5.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.GunaButton5.FocusedColor = System.Drawing.Color.Empty
+ Me.GunaButton5.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaButton5.ForeColor = System.Drawing.Color.White
+ Me.GunaButton5.Image = Nothing
+ Me.GunaButton5.ImageAlign = System.Windows.Forms.HorizontalAlignment.Center
+ Me.GunaButton5.ImageSize = New System.Drawing.Size(20, 20)
+ Me.GunaButton5.Location = New System.Drawing.Point(3, 84)
+ Me.GunaButton5.Name = "GunaButton5"
+ Me.GunaButton5.OnHoverBaseColor = System.Drawing.Color.FromArgb(CType(CType(151, Byte), Integer), CType(CType(143, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton5.OnHoverBorderColor = System.Drawing.Color.Black
+ Me.GunaButton5.OnHoverForeColor = System.Drawing.Color.White
+ Me.GunaButton5.OnHoverImage = Nothing
+ Me.GunaButton5.OnPressedColor = System.Drawing.Color.Black
+ Me.GunaButton5.Size = New System.Drawing.Size(351, 28)
+ Me.GunaButton5.TabIndex = 63
+ Me.GunaButton5.Text = "Reset Settings"
+ Me.GunaButton5.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
+ '
+ 'GunaLabel8
+ '
+ Me.GunaLabel8.AutoSize = True
+ Me.GunaLabel8.BackColor = System.Drawing.Color.Transparent
+ Me.GunaLabel8.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel8.Location = New System.Drawing.Point(38, 176)
+ Me.GunaLabel8.Name = "GunaLabel8"
+ Me.GunaLabel8.Size = New System.Drawing.Size(38, 15)
+ Me.GunaLabel8.TabIndex = 62
+ Me.GunaLabel8.Text = "Game"
+ '
+ 'GunaComboBox2
+ '
+ Me.GunaComboBox2.BackColor = System.Drawing.Color.Transparent
+ Me.GunaComboBox2.BaseColor = System.Drawing.Color.Transparent
+ Me.GunaComboBox2.BorderColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaComboBox2.BorderSize = 1
+ Me.GunaComboBox2.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed
+ Me.GunaComboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
+ Me.GunaComboBox2.FocusedColor = System.Drawing.Color.Empty
+ Me.GunaComboBox2.Font = New System.Drawing.Font("Segoe UI", 10.0!)
+ Me.GunaComboBox2.ForeColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaComboBox2.FormattingEnabled = True
+ Me.GunaComboBox2.Items.AddRange(New Object() {"HALO CE", "HALO PC"})
+ Me.GunaComboBox2.Location = New System.Drawing.Point(92, 171)
+ Me.GunaComboBox2.Name = "GunaComboBox2"
+ Me.GunaComboBox2.OnHoverItemBaseColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaComboBox2.OnHoverItemForeColor = System.Drawing.Color.White
+ Me.GunaComboBox2.Size = New System.Drawing.Size(141, 26)
+ Me.GunaComboBox2.StartIndex = 0
+ Me.GunaComboBox2.TabIndex = 61
+ '
+ 'GunaPanel6
+ '
+ Me.GunaPanel6.Controls.Add(Me.GunaLabel7)
+ Me.GunaPanel6.Location = New System.Drawing.Point(0, 135)
+ Me.GunaPanel6.Name = "GunaPanel6"
+ Me.GunaPanel6.Size = New System.Drawing.Size(357, 26)
+ Me.GunaPanel6.TabIndex = 59
+ '
+ 'GunaLabel7
+ '
+ Me.GunaLabel7.AutoSize = True
+ Me.GunaLabel7.BackColor = System.Drawing.Color.Transparent
+ Me.GunaLabel7.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel7.Location = New System.Drawing.Point(8, 5)
+ Me.GunaLabel7.Name = "GunaLabel7"
+ Me.GunaLabel7.Size = New System.Drawing.Size(78, 15)
+ Me.GunaLabel7.TabIndex = 3
+ Me.GunaLabel7.Text = "Default game"
+ '
+ 'GunaButton3
+ '
+ Me.GunaButton3.AnimationHoverSpeed = 0.07!
+ Me.GunaButton3.AnimationSpeed = 0.03!
+ Me.GunaButton3.BaseColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton3.BorderColor = System.Drawing.Color.Black
+ Me.GunaButton3.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.GunaButton3.FocusedColor = System.Drawing.Color.Empty
+ Me.GunaButton3.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaButton3.ForeColor = System.Drawing.Color.White
+ Me.GunaButton3.Image = Nothing
+ Me.GunaButton3.ImageAlign = System.Windows.Forms.HorizontalAlignment.Center
+ Me.GunaButton3.ImageSize = New System.Drawing.Size(20, 20)
+ Me.GunaButton3.Location = New System.Drawing.Point(3, 44)
+ Me.GunaButton3.Name = "GunaButton3"
+ Me.GunaButton3.OnHoverBaseColor = System.Drawing.Color.FromArgb(CType(CType(151, Byte), Integer), CType(CType(143, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton3.OnHoverBorderColor = System.Drawing.Color.Black
+ Me.GunaButton3.OnHoverForeColor = System.Drawing.Color.White
+ Me.GunaButton3.OnHoverImage = Nothing
+ Me.GunaButton3.OnPressedColor = System.Drawing.Color.Black
+ Me.GunaButton3.Size = New System.Drawing.Size(351, 28)
+ Me.GunaButton3.TabIndex = 49
+ Me.GunaButton3.Text = "Donate"
+ Me.GunaButton3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
+ '
+ 'GunaButton2
+ '
+ Me.GunaButton2.AnimationHoverSpeed = 0.07!
+ Me.GunaButton2.AnimationSpeed = 0.03!
+ Me.GunaButton2.BaseColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton2.BorderColor = System.Drawing.Color.Black
+ Me.GunaButton2.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.GunaButton2.FocusedColor = System.Drawing.Color.Empty
+ Me.GunaButton2.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaButton2.ForeColor = System.Drawing.Color.White
+ Me.GunaButton2.Image = Nothing
+ Me.GunaButton2.ImageAlign = System.Windows.Forms.HorizontalAlignment.Center
+ Me.GunaButton2.ImageSize = New System.Drawing.Size(20, 20)
+ Me.GunaButton2.Location = New System.Drawing.Point(3, 5)
+ Me.GunaButton2.Name = "GunaButton2"
+ Me.GunaButton2.OnHoverBaseColor = System.Drawing.Color.FromArgb(CType(CType(151, Byte), Integer), CType(CType(143, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton2.OnHoverBorderColor = System.Drawing.Color.Black
+ Me.GunaButton2.OnHoverForeColor = System.Drawing.Color.White
+ Me.GunaButton2.OnHoverImage = Nothing
+ Me.GunaButton2.OnPressedColor = System.Drawing.Color.Black
+ Me.GunaButton2.Size = New System.Drawing.Size(351, 28)
+ Me.GunaButton2.TabIndex = 48
+ Me.GunaButton2.Text = "About"
+ Me.GunaButton2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
+ '
+ 'GunaPanel2
+ '
+ Me.GunaPanel2.BackColor = System.Drawing.Color.Transparent
+ Me.GunaPanel2.Controls.Add(Me.GunaButton6)
+ Me.GunaPanel2.Controls.Add(Me.GunaButton4)
+ Me.GunaPanel2.Controls.Add(Me.PCdirTextBox1)
+ Me.GunaPanel2.Controls.Add(Me.GunaLabel6)
+ Me.GunaPanel2.Controls.Add(Me.GunaLabel5)
+ Me.GunaPanel2.Controls.Add(Me.GunaComboBox1)
+ Me.GunaPanel2.Controls.Add(Me.GunaPanel5)
+ Me.GunaPanel2.Controls.Add(Me.GunaCheckBox8)
+ Me.GunaPanel2.Controls.Add(Me.GunaCheckBox7)
+ Me.GunaPanel2.Controls.Add(Me.GunaCheckBox6)
+ Me.GunaPanel2.Controls.Add(Me.GunaCheckBox5)
+ Me.GunaPanel2.Controls.Add(Me.GunaCheckBox4)
+ Me.GunaPanel2.Controls.Add(Me.GunaCheckBox3)
+ Me.GunaPanel2.Controls.Add(Me.GunaCheckBox2)
+ Me.GunaPanel2.Controls.Add(Me.GunaCheckBox1)
+ Me.GunaPanel2.Controls.Add(Me.GunaPanel4)
+ Me.GunaPanel2.Controls.Add(Me.GunaPanel3)
+ Me.GunaPanel2.Controls.Add(Me.GunaButton1)
+ Me.GunaPanel2.Controls.Add(Me.CEdirTextbox)
+ Me.GunaPanel2.Controls.Add(Me.GunaLabel1)
+ Me.GunaPanel2.Location = New System.Drawing.Point(13, 12)
+ Me.GunaPanel2.Name = "GunaPanel2"
+ Me.GunaPanel2.Size = New System.Drawing.Size(430, 414)
+ Me.GunaPanel2.TabIndex = 48
+ '
+ 'GunaButton4
+ '
+ Me.GunaButton4.AnimationHoverSpeed = 0.07!
+ Me.GunaButton4.AnimationSpeed = 0.03!
+ Me.GunaButton4.BaseColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton4.BorderColor = System.Drawing.Color.Black
+ Me.GunaButton4.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.GunaButton4.FocusedColor = System.Drawing.Color.Empty
+ Me.GunaButton4.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaButton4.ForeColor = System.Drawing.Color.White
+ Me.GunaButton4.Image = Nothing
+ Me.GunaButton4.ImageAlign = System.Windows.Forms.HorizontalAlignment.Center
+ Me.GunaButton4.ImageSize = New System.Drawing.Size(20, 20)
+ Me.GunaButton4.Location = New System.Drawing.Point(353, 167)
+ Me.GunaButton4.Name = "GunaButton4"
+ Me.GunaButton4.OnHoverBaseColor = System.Drawing.Color.FromArgb(CType(CType(151, Byte), Integer), CType(CType(143, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton4.OnHoverBorderColor = System.Drawing.Color.Black
+ Me.GunaButton4.OnHoverForeColor = System.Drawing.Color.White
+ Me.GunaButton4.OnHoverImage = Nothing
+ Me.GunaButton4.OnPressedColor = System.Drawing.Color.Black
+ Me.GunaButton4.Size = New System.Drawing.Size(60, 24)
+ Me.GunaButton4.TabIndex = 63
+ Me.GunaButton4.Text = "Select"
+ Me.GunaButton4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
+ '
+ 'PCdirTextBox1
+ '
+ Me.PCdirTextBox1.BaseColor = System.Drawing.Color.FromArgb(CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer))
+ Me.PCdirTextBox1.BorderColor = System.Drawing.Color.FromArgb(CType(CType(66, Byte), Integer), CType(CType(58, Byte), Integer), CType(CType(170, Byte), Integer))
+ Me.PCdirTextBox1.BorderSize = 1
+ Me.PCdirTextBox1.Cursor = System.Windows.Forms.Cursors.IBeam
+ Me.PCdirTextBox1.FocusedBaseColor = System.Drawing.Color.FromArgb(CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer))
+ Me.PCdirTextBox1.FocusedBorderColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.PCdirTextBox1.FocusedForeColor = System.Drawing.Color.White
+ Me.PCdirTextBox1.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.PCdirTextBox1.ForeColor = System.Drawing.Color.White
+ Me.PCdirTextBox1.Location = New System.Drawing.Point(11, 135)
+ Me.PCdirTextBox1.Name = "PCdirTextBox1"
+ Me.PCdirTextBox1.PasswordChar = Global.Microsoft.VisualBasic.ChrW(0)
+ Me.PCdirTextBox1.ReadOnly = True
+ Me.PCdirTextBox1.Size = New System.Drawing.Size(402, 26)
+ Me.PCdirTextBox1.TabIndex = 62
+ '
+ 'GunaLabel6
+ '
+ Me.GunaLabel6.AutoSize = True
+ Me.GunaLabel6.BackColor = System.Drawing.Color.Transparent
+ Me.GunaLabel6.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel6.Location = New System.Drawing.Point(8, 117)
+ Me.GunaLabel6.Name = "GunaLabel6"
+ Me.GunaLabel6.Size = New System.Drawing.Size(101, 15)
+ Me.GunaLabel6.TabIndex = 61
+ Me.GunaLabel6.Text = "Halo PC Directory"
+ '
+ 'GunaLabel5
+ '
+ Me.GunaLabel5.AutoSize = True
+ Me.GunaLabel5.BackColor = System.Drawing.Color.Transparent
+ Me.GunaLabel5.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel5.Location = New System.Drawing.Point(27, 245)
+ Me.GunaLabel5.Name = "GunaLabel5"
+ Me.GunaLabel5.Size = New System.Drawing.Size(72, 15)
+ Me.GunaLabel5.TabIndex = 60
+ Me.GunaLabel5.Text = "Select Mode"
+ '
+ 'GunaComboBox1
+ '
+ Me.GunaComboBox1.BackColor = System.Drawing.Color.Transparent
+ Me.GunaComboBox1.BaseColor = System.Drawing.Color.Transparent
+ Me.GunaComboBox1.BorderColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaComboBox1.BorderSize = 1
+ Me.GunaComboBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed
+ Me.GunaComboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
+ Me.GunaComboBox1.FocusedColor = System.Drawing.Color.Empty
+ Me.GunaComboBox1.Font = New System.Drawing.Font("Segoe UI", 10.0!)
+ Me.GunaComboBox1.ForeColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaComboBox1.FormattingEnabled = True
+ Me.GunaComboBox1.Items.AddRange(New Object() {"FAKE Full Screen", "Windowed", "Full Screen"})
+ Me.GunaComboBox1.Location = New System.Drawing.Point(105, 240)
+ Me.GunaComboBox1.Name = "GunaComboBox1"
+ Me.GunaComboBox1.OnHoverItemBaseColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaComboBox1.OnHoverItemForeColor = System.Drawing.Color.White
+ Me.GunaComboBox1.Size = New System.Drawing.Size(141, 26)
+ Me.GunaComboBox1.TabIndex = 59
+ '
+ 'GunaPanel5
+ '
+ Me.GunaPanel5.Controls.Add(Me.GunaLabel4)
+ Me.GunaPanel5.Location = New System.Drawing.Point(0, 206)
+ Me.GunaPanel5.Name = "GunaPanel5"
+ Me.GunaPanel5.Size = New System.Drawing.Size(430, 26)
+ Me.GunaPanel5.TabIndex = 58
+ '
+ 'GunaLabel4
+ '
+ Me.GunaLabel4.AutoSize = True
+ Me.GunaLabel4.BackColor = System.Drawing.Color.Transparent
+ Me.GunaLabel4.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel4.Location = New System.Drawing.Point(8, 5)
+ Me.GunaLabel4.Name = "GunaLabel4"
+ Me.GunaLabel4.Size = New System.Drawing.Size(117, 15)
+ Me.GunaLabel4.TabIndex = 3
+ Me.GunaLabel4.Text = "Game window mode"
+ '
+ 'GunaCheckBox8
+ '
+ Me.GunaCheckBox8.BaseColor = System.Drawing.Color.White
+ Me.GunaCheckBox8.CheckedOffColor = System.Drawing.Color.Gray
+ Me.GunaCheckBox8.CheckedOnColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaCheckBox8.FillColor = System.Drawing.Color.White
+ Me.GunaCheckBox8.Location = New System.Drawing.Point(224, 350)
+ Me.GunaCheckBox8.Name = "GunaCheckBox8"
+ Me.GunaCheckBox8.Radius = 0
+ Me.GunaCheckBox8.Size = New System.Drawing.Size(84, 20)
+ Me.GunaCheckBox8.TabIndex = 57
+ Me.GunaCheckBox8.Text = "Safe Mode"
+ Me.BoosterToolTip1.SetToolTip(Me.GunaCheckBox8, "Disables as much as possible from the game in case you're experiencing crashes.")
+ '
+ 'GunaCheckBox7
+ '
+ Me.GunaCheckBox7.BaseColor = System.Drawing.Color.White
+ Me.GunaCheckBox7.CheckedOffColor = System.Drawing.Color.Gray
+ Me.GunaCheckBox7.CheckedOnColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaCheckBox7.FillColor = System.Drawing.Color.White
+ Me.GunaCheckBox7.Location = New System.Drawing.Point(224, 313)
+ Me.GunaCheckBox7.Name = "GunaCheckBox7"
+ Me.GunaCheckBox7.Radius = 0
+ Me.GunaCheckBox7.Size = New System.Drawing.Size(88, 20)
+ Me.GunaCheckBox7.TabIndex = 56
+ Me.GunaCheckBox7.Text = "No Joystick"
+ Me.BoosterToolTip1.SetToolTip(Me.GunaCheckBox7, "Disables joystick/gamepads.")
+ '
+ 'GunaCheckBox6
+ '
+ Me.GunaCheckBox6.BaseColor = System.Drawing.Color.White
+ Me.GunaCheckBox6.CheckedOffColor = System.Drawing.Color.Gray
+ Me.GunaCheckBox6.CheckedOnColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaCheckBox6.FillColor = System.Drawing.Color.White
+ Me.GunaCheckBox6.Location = New System.Drawing.Point(122, 313)
+ Me.GunaCheckBox6.Name = "GunaCheckBox6"
+ Me.GunaCheckBox6.Radius = 0
+ Me.GunaCheckBox6.Size = New System.Drawing.Size(87, 20)
+ Me.GunaCheckBox6.TabIndex = 55
+ Me.GunaCheckBox6.Text = "No Gamma"
+ Me.BoosterToolTip1.SetToolTip(Me.GunaCheckBox6, "Disables adjustment of gamma. " & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "The in-game gamma slider will not affect the brig" & _
+ "htness of the game if this switch is used.")
+ '
+ 'GunaCheckBox5
+ '
+ Me.GunaCheckBox5.BaseColor = System.Drawing.Color.White
+ Me.GunaCheckBox5.CheckedOffColor = System.Drawing.Color.Gray
+ Me.GunaCheckBox5.CheckedOnColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaCheckBox5.FillColor = System.Drawing.Color.White
+ Me.GunaCheckBox5.Location = New System.Drawing.Point(122, 385)
+ Me.GunaCheckBox5.Name = "GunaCheckBox5"
+ Me.GunaCheckBox5.Radius = 0
+ Me.GunaCheckBox5.Size = New System.Drawing.Size(76, 20)
+ Me.GunaCheckBox5.TabIndex = 54
+ Me.GunaCheckBox5.Text = "No Video"
+ Me.BoosterToolTip1.SetToolTip(Me.GunaCheckBox5, resources.GetString("GunaCheckBox5.ToolTip"))
+ '
+ 'GunaCheckBox4
+ '
+ Me.GunaCheckBox4.BaseColor = System.Drawing.Color.White
+ Me.GunaCheckBox4.CheckedOffColor = System.Drawing.Color.Gray
+ Me.GunaCheckBox4.CheckedOnColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaCheckBox4.FillColor = System.Drawing.Color.White
+ Me.GunaCheckBox4.Location = New System.Drawing.Point(122, 350)
+ Me.GunaCheckBox4.Name = "GunaCheckBox4"
+ Me.GunaCheckBox4.Radius = 0
+ Me.GunaCheckBox4.Size = New System.Drawing.Size(80, 20)
+ Me.GunaCheckBox4.TabIndex = 53
+ Me.GunaCheckBox4.Text = "No Sound"
+ Me.BoosterToolTip1.SetToolTip(Me.GunaCheckBox4, "Disables all sound.")
+ '
+ 'GunaCheckBox3
+ '
+ Me.GunaCheckBox3.BaseColor = System.Drawing.Color.White
+ Me.GunaCheckBox3.CheckedOffColor = System.Drawing.Color.Gray
+ Me.GunaCheckBox3.CheckedOnColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaCheckBox3.FillColor = System.Drawing.Color.White
+ Me.GunaCheckBox3.Location = New System.Drawing.Point(11, 385)
+ Me.GunaCheckBox3.Name = "GunaCheckBox3"
+ Me.GunaCheckBox3.Radius = 0
+ Me.GunaCheckBox3.Size = New System.Drawing.Size(81, 20)
+ Me.GunaCheckBox3.TabIndex = 52
+ Me.GunaCheckBox3.Text = "Dev Mode"
+ Me.BoosterToolTip1.SetToolTip(Me.GunaCheckBox3, "Enables developer mode commands (Custom Edition only). " & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "This also prevents Inter" & _
+ "net gameplay when mods are not used. " & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Most client mods like HAC2 and Chimera en" & _
+ "able this mode automatically.")
+ '
+ 'GunaCheckBox2
+ '
+ Me.GunaCheckBox2.BaseColor = System.Drawing.Color.White
+ Me.GunaCheckBox2.CheckedOffColor = System.Drawing.Color.Gray
+ Me.GunaCheckBox2.CheckedOnColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaCheckBox2.FillColor = System.Drawing.Color.White
+ Me.GunaCheckBox2.Location = New System.Drawing.Point(11, 350)
+ Me.GunaCheckBox2.Name = "GunaCheckBox2"
+ Me.GunaCheckBox2.Radius = 0
+ Me.GunaCheckBox2.Size = New System.Drawing.Size(87, 20)
+ Me.GunaCheckBox2.TabIndex = 51
+ Me.GunaCheckBox2.Text = "Screenshot"
+ '
+ 'GunaCheckBox1
+ '
+ Me.GunaCheckBox1.BaseColor = System.Drawing.Color.White
+ Me.GunaCheckBox1.CheckedOffColor = System.Drawing.Color.Gray
+ Me.GunaCheckBox1.CheckedOnColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaCheckBox1.FillColor = System.Drawing.Color.White
+ Me.GunaCheckBox1.Location = New System.Drawing.Point(11, 313)
+ Me.GunaCheckBox1.Name = "GunaCheckBox1"
+ Me.GunaCheckBox1.Radius = 0
+ Me.GunaCheckBox1.Size = New System.Drawing.Size(71, 20)
+ Me.GunaCheckBox1.TabIndex = 50
+ Me.GunaCheckBox1.Text = "Console"
+ Me.BoosterToolTip1.SetToolTip(Me.GunaCheckBox1, resources.GetString("GunaCheckBox1.ToolTip"))
+ '
+ 'GunaPanel4
+ '
+ Me.GunaPanel4.Controls.Add(Me.GunaLabel3)
+ Me.GunaPanel4.Location = New System.Drawing.Point(0, 281)
+ Me.GunaPanel4.Name = "GunaPanel4"
+ Me.GunaPanel4.Size = New System.Drawing.Size(430, 26)
+ Me.GunaPanel4.TabIndex = 49
+ '
+ 'GunaLabel3
+ '
+ Me.GunaLabel3.AutoSize = True
+ Me.GunaLabel3.BackColor = System.Drawing.Color.Transparent
+ Me.GunaLabel3.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel3.Location = New System.Drawing.Point(8, 5)
+ Me.GunaLabel3.Name = "GunaLabel3"
+ Me.GunaLabel3.Size = New System.Drawing.Size(91, 15)
+ Me.GunaLabel3.TabIndex = 3
+ Me.GunaLabel3.Text = "Launch Options"
+ '
+ 'GunaPanel3
+ '
+ Me.GunaPanel3.Controls.Add(Me.GunaLabel2)
+ Me.GunaPanel3.Dock = System.Windows.Forms.DockStyle.Top
+ Me.GunaPanel3.Location = New System.Drawing.Point(0, 0)
+ Me.GunaPanel3.Name = "GunaPanel3"
+ Me.GunaPanel3.Size = New System.Drawing.Size(430, 26)
+ Me.GunaPanel3.TabIndex = 48
+ '
+ 'GunaLabel2
+ '
+ Me.GunaLabel2.AutoSize = True
+ Me.GunaLabel2.BackColor = System.Drawing.Color.Transparent
+ Me.GunaLabel2.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel2.Location = New System.Drawing.Point(8, 5)
+ Me.GunaLabel2.Name = "GunaLabel2"
+ Me.GunaLabel2.Size = New System.Drawing.Size(62, 15)
+ Me.GunaLabel2.TabIndex = 3
+ Me.GunaLabel2.Text = "Game Info"
+ '
+ 'GunaButton1
+ '
+ Me.GunaButton1.AnimationHoverSpeed = 0.07!
+ Me.GunaButton1.AnimationSpeed = 0.03!
+ Me.GunaButton1.BaseColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton1.BorderColor = System.Drawing.Color.Black
+ Me.GunaButton1.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.GunaButton1.FocusedColor = System.Drawing.Color.Empty
+ Me.GunaButton1.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaButton1.ForeColor = System.Drawing.Color.White
+ Me.GunaButton1.Image = Nothing
+ Me.GunaButton1.ImageAlign = System.Windows.Forms.HorizontalAlignment.Center
+ Me.GunaButton1.ImageSize = New System.Drawing.Size(20, 20)
+ Me.GunaButton1.Location = New System.Drawing.Point(353, 94)
+ Me.GunaButton1.Name = "GunaButton1"
+ Me.GunaButton1.OnHoverBaseColor = System.Drawing.Color.FromArgb(CType(CType(151, Byte), Integer), CType(CType(143, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton1.OnHoverBorderColor = System.Drawing.Color.Black
+ Me.GunaButton1.OnHoverForeColor = System.Drawing.Color.White
+ Me.GunaButton1.OnHoverImage = Nothing
+ Me.GunaButton1.OnPressedColor = System.Drawing.Color.Black
+ Me.GunaButton1.Size = New System.Drawing.Size(60, 24)
+ Me.GunaButton1.TabIndex = 47
+ Me.GunaButton1.Text = "Select"
+ Me.GunaButton1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
+ '
+ 'CEdirTextbox
+ '
+ Me.CEdirTextbox.BaseColor = System.Drawing.Color.FromArgb(CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer))
+ Me.CEdirTextbox.BorderColor = System.Drawing.Color.FromArgb(CType(CType(66, Byte), Integer), CType(CType(58, Byte), Integer), CType(CType(170, Byte), Integer))
+ Me.CEdirTextbox.BorderSize = 1
+ Me.CEdirTextbox.Cursor = System.Windows.Forms.Cursors.IBeam
+ Me.CEdirTextbox.FocusedBaseColor = System.Drawing.Color.FromArgb(CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer))
+ Me.CEdirTextbox.FocusedBorderColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.CEdirTextbox.FocusedForeColor = System.Drawing.Color.White
+ Me.CEdirTextbox.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.CEdirTextbox.ForeColor = System.Drawing.Color.White
+ Me.CEdirTextbox.Location = New System.Drawing.Point(11, 62)
+ Me.CEdirTextbox.Name = "CEdirTextbox"
+ Me.CEdirTextbox.PasswordChar = Global.Microsoft.VisualBasic.ChrW(0)
+ Me.CEdirTextbox.ReadOnly = True
+ Me.CEdirTextbox.Size = New System.Drawing.Size(402, 26)
+ Me.CEdirTextbox.TabIndex = 46
+ '
+ 'GunaLabel1
+ '
+ Me.GunaLabel1.AutoSize = True
+ Me.GunaLabel1.BackColor = System.Drawing.Color.Transparent
+ Me.GunaLabel1.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaLabel1.Location = New System.Drawing.Point(8, 40)
+ Me.GunaLabel1.Name = "GunaLabel1"
+ Me.GunaLabel1.Size = New System.Drawing.Size(100, 15)
+ Me.GunaLabel1.TabIndex = 2
+ Me.GunaLabel1.Text = "Halo CE Directory"
+ '
+ 'BoosterToolTip1
+ '
+ Me.BoosterToolTip1.BackColor = System.Drawing.Color.FromArgb(CType(CType(36, Byte), Integer), CType(CType(36, Byte), Integer), CType(CType(36, Byte), Integer))
+ Me.BoosterToolTip1.OwnerDraw = True
+ '
+ 'GunaButton6
+ '
+ Me.GunaButton6.AnimationHoverSpeed = 0.07!
+ Me.GunaButton6.AnimationSpeed = 0.03!
+ Me.GunaButton6.BaseColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton6.BorderColor = System.Drawing.Color.Black
+ Me.GunaButton6.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.GunaButton6.FocusedColor = System.Drawing.Color.Empty
+ Me.GunaButton6.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaButton6.ForeColor = System.Drawing.Color.White
+ Me.GunaButton6.Image = Nothing
+ Me.GunaButton6.ImageAlign = System.Windows.Forms.HorizontalAlignment.Center
+ Me.GunaButton6.ImageSize = New System.Drawing.Size(20, 20)
+ Me.GunaButton6.Location = New System.Drawing.Point(263, 240)
+ Me.GunaButton6.Name = "GunaButton6"
+ Me.GunaButton6.OnHoverBaseColor = System.Drawing.Color.FromArgb(CType(CType(151, Byte), Integer), CType(CType(143, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton6.OnHoverBorderColor = System.Drawing.Color.Black
+ Me.GunaButton6.OnHoverForeColor = System.Drawing.Color.White
+ Me.GunaButton6.OnHoverImage = Nothing
+ Me.GunaButton6.OnPressedColor = System.Drawing.Color.Black
+ Me.GunaButton6.Size = New System.Drawing.Size(108, 26)
+ Me.GunaButton6.TabIndex = 64
+ Me.GunaButton6.Text = "Force FullScreen"
+ Me.GunaButton6.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
+ '
+ 'Settingfrm
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer))
+ Me.ClientSize = New System.Drawing.Size(818, 438)
+ Me.Controls.Add(Me.GunaPanel1)
+ Me.ForeColor = System.Drawing.Color.White
+ Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
+ Me.MaximizeBox = False
+ Me.MinimizeBox = False
+ Me.Name = "Settingfrm"
+ Me.ShowIcon = False
+ Me.ShowInTaskbar = False
+ Me.Text = "Settingfrm"
+ Me.GunaPanel1.ResumeLayout(False)
+ Me.Panel1.ResumeLayout(False)
+ Me.Panel1.PerformLayout()
+ Me.GunaPanel6.ResumeLayout(False)
+ Me.GunaPanel6.PerformLayout()
+ Me.GunaPanel2.ResumeLayout(False)
+ Me.GunaPanel2.PerformLayout()
+ Me.GunaPanel5.ResumeLayout(False)
+ Me.GunaPanel5.PerformLayout()
+ Me.GunaPanel4.ResumeLayout(False)
+ Me.GunaPanel4.PerformLayout()
+ Me.GunaPanel3.ResumeLayout(False)
+ Me.GunaPanel3.PerformLayout()
+ Me.ResumeLayout(False)
+
+ End Sub
+ Friend WithEvents GunaPanel1 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaLabel1 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents BoosterToolTip1 As HALOCELauncher.BoosterToolTip
+ Friend WithEvents CEdirTextbox As Guna.UI.WinForms.GunaTextBox
+ Friend WithEvents GunaButton1 As Guna.UI.WinForms.GunaButton
+ Friend WithEvents GunaPanel2 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaPanel3 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaLabel2 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents Panel1 As System.Windows.Forms.Panel
+ Friend WithEvents GunaPanel4 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaLabel3 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaButton3 As Guna.UI.WinForms.GunaButton
+ Friend WithEvents GunaButton2 As Guna.UI.WinForms.GunaButton
+ Friend WithEvents GunaLabel5 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaComboBox1 As Guna.UI.WinForms.GunaComboBox
+ Friend WithEvents GunaPanel5 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaLabel4 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaCheckBox8 As Guna.UI.WinForms.GunaCheckBox
+ Friend WithEvents GunaCheckBox7 As Guna.UI.WinForms.GunaCheckBox
+ Friend WithEvents GunaCheckBox6 As Guna.UI.WinForms.GunaCheckBox
+ Friend WithEvents GunaCheckBox5 As Guna.UI.WinForms.GunaCheckBox
+ Friend WithEvents GunaCheckBox4 As Guna.UI.WinForms.GunaCheckBox
+ Friend WithEvents GunaCheckBox3 As Guna.UI.WinForms.GunaCheckBox
+ Friend WithEvents GunaCheckBox2 As Guna.UI.WinForms.GunaCheckBox
+ Friend WithEvents GunaCheckBox1 As Guna.UI.WinForms.GunaCheckBox
+ Friend WithEvents Timer1 As System.Windows.Forms.Timer
+ Friend WithEvents GunaButton4 As Guna.UI.WinForms.GunaButton
+ Friend WithEvents PCdirTextBox1 As Guna.UI.WinForms.GunaTextBox
+ Friend WithEvents GunaLabel6 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaPanel6 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaLabel7 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaLabel8 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaComboBox2 As Guna.UI.WinForms.GunaComboBox
+ Friend WithEvents GunaButton5 As Guna.UI.WinForms.GunaButton
+ Friend WithEvents GunaButton6 As Guna.UI.WinForms.GunaButton
+End Class
diff --git a/HALOCELauncher/Controls/Forms/Settingfrm.resx b/HALOCELauncher/Controls/Forms/Settingfrm.resx
new file mode 100644
index 0000000..565bdd7
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/Settingfrm.resx
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ Disables the .bik videos which play at game startup (retail).
+This option can also prevent Custom Edition crashes when using the Mesa graphics driver.
+The mod Chimera sets this option automatically.
+
+
+ Enables the debugging console, which can be opened with the ~ (tilde) key.
+This console can be used to enter Halo script commands and is similar to Sapien's console,
+though many Sapien-related commands have no effect.
+
+Note that most client mods like HAC2 and Chimera enable this automatically.
+
+
+ 158, 17
+
+
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/Forms/Settingfrm.vb b/HALOCELauncher/Controls/Forms/Settingfrm.vb
new file mode 100644
index 0000000..350941f
--- /dev/null
+++ b/HALOCELauncher/Controls/Forms/Settingfrm.vb
@@ -0,0 +1,287 @@
+Imports HALOCELauncher.Core.Utils.LogFuncs
+Imports HALOCELauncher.Core.Helpers
+Imports HALOCELauncher.Core.Utils
+
+Public Class Settingfrm
+
+ Private Sub Settingfrm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ Try : AddHandler Application.ThreadException, AddressOf Application_Exception_Handler _
+ : Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException, False) _
+ : Catch : End Try
+ SetStyle(ControlStyles.SupportsTransparentBackColor, True)
+ Me.BackColor = Color.Transparent
+ Me.Refresh()
+ StartC()
+ End Sub
+
+ Public Overrides Sub Refresh()
+ Dim Aplyblur As New GetBlurBitmap(Me.Panel1)
+ Dim Aplyblur1 As New GetBlurBitmap(Me.GunaPanel2)
+ MyBase.Refresh()
+ End Sub
+
+ Private Sub Application_Exception_Handler(ByVal sender As Object, ByVal e As System.Threading.ThreadExceptionEventArgs)
+ Dim ex As Exception = CType(e.Exception, Exception)
+ WriteLog(ex.Message, InfoType.Exception)
+ End Sub
+
+#Region " Parent Dragger "
+
+ Private Dragger As ControlDragger = ControlDragger.Empty
+
+ Private Sub InitializeDrag()
+ Me.Dragger = New ControlDragger(Me, Form1)
+ Me.Dragger = New ControlDragger(GunaPanel1, Form1)
+ For Each Cdrag As Control In GunaPanel1.Controls
+ Me.Dragger = New ControlDragger(Cdrag, Form1)
+ Next
+ For Each Cdraga As Control In GunaPanel3.Controls
+ Me.Dragger = New ControlDragger(Cdraga, Form1)
+ Next
+ For Each Cdraga As Control In GunaPanel3.Controls
+ Me.Dragger = New ControlDragger(Cdraga, Form1)
+ Next
+ For Each Cdragb As Control In GunaPanel4.Controls
+ Me.Dragger = New ControlDragger(Cdragb, Form1)
+ Next
+ For Each Cdragc As Control In GunaPanel5.Controls
+ Me.Dragger = New ControlDragger(Cdragc, Form1)
+ Next
+ Me.Dragger.Enabled = True
+ End Sub
+
+ Private Sub AlternateDrag()
+ Dragger.Enabled = Not Dragger.Enabled
+ End Sub
+
+ Private Sub FinishDrag()
+ Dragger.Dispose()
+ End Sub
+
+ Private Sub Drag() Handles MyBase.Shown
+ Me.InitializeDrag()
+ End Sub
+
+#End Region
+
+ Private Sub StartC()
+ GunaPanel1.BackColor = Color.FromArgb(40, Color.Black)
+ GunaPanel3.BackColor = Color.FromArgb(40, Color.Black)
+ GunaPanel4.BackColor = Color.FromArgb(40, Color.Black)
+ GunaPanel5.BackColor = Color.FromArgb(40, Color.Black)
+ GunaComboBox1.StartIndex = My.Settings.LaunchMode
+ GunaComboBox2.StartIndex = My.Settings.GameDefect
+ If My.Settings.GameDirCE = "" Then
+ CEdirTextbox.Text = GenerateCEDir()
+ If Not CEdirTextbox.Text = "" Then
+ SaveCEGamePath(CEdirTextbox.Text)
+ End If
+ Else
+ CEdirTextbox.Text = My.Settings.GameDirCE
+ End If
+ If My.Settings.GameDirPC = "" Then
+ PCdirTextBox1.Text = GeneratePCDir()
+ If Not PCdirTextBox1.Text = "" Then
+ SavePCGamePath(PCdirTextBox1.Text)
+ End If
+ Else
+ PCdirTextBox1.Text = My.Settings.GameDirPC
+ End If
+ GunaCheckBox1.Checked = My.Settings.ConsoleC
+ GunaCheckBox2.Checked = My.Settings.ScreenshotC
+ GunaCheckBox3.Checked = My.Settings.devC
+ GunaCheckBox4.Checked = My.Settings.SoundC
+ GunaCheckBox5.Checked = My.Settings.VideoC
+ GunaCheckBox6.Checked = My.Settings.GammaC
+ GunaCheckBox7.Checked = My.Settings.JoystickC
+ GunaCheckBox8.Checked = My.Settings.SafeModeC
+ End Sub
+
+ Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
+ Dim OpenGameDir As String = open("Haloce.exe [Executable] (*.exe)|*.exe")
+ If Not OpenGameDir = "Error" Then
+ CEdirTextbox.Text = OpenGameDir
+ SaveCEGamePath(CEdirTextbox.Text)
+ End If
+ End Sub
+
+ Private Sub GunaButton4_Click(sender As Object, e As EventArgs) Handles GunaButton4.Click
+ Dim OpenGameDir As String = open("Halo.exe [Executable] (*.exe)|*.exe")
+ If Not OpenGameDir = "Error" Then
+ PCdirTextBox1.Text = OpenGameDir
+ SavePCGamePath(CEdirTextbox.Text)
+ End If
+ End Sub
+
+ Private Function GenerateCEDir() As String
+ Dim GameDir1 As String = My.Computer.FileSystem.SpecialDirectories.ProgramFiles & "\" & "Microsoft Games\Halo Custom Edition\haloce.exe"
+
+ If IO.File.Exists(GameDir1) = True Then
+ Return GameDir1
+ End If
+
+ Dim RegeditGamedir As String = "HKLM\software\Microsoft\Microsoft Games\Halo CE"
+ Dim RegeditKey As String = "EXE Path"
+
+ If RegEdit.ExistValue(RegeditGamedir, RegeditKey) = True Then
+ Dim Data1 As String = RegEdit.GetValue(RegeditGamedir, RegeditKey)
+ Return Data1
+ End If
+
+ Return Nothing
+ End Function
+
+ Private Function GeneratePCDir() As String
+ Dim GameDir2 As String = My.Computer.FileSystem.SpecialDirectories.ProgramFiles & "\" & "Microsoft Games\Halo\halo.exe"
+ If IO.File.Exists(GameDir2) = True Then
+ Return GameDir2
+ End If
+
+ Dim RegeditGamedir2 As String = "HKLM\software\Microsoft\Microsoft Games\Halo"
+ Dim RegeditKey As String = "EXE Path"
+
+ If RegEdit.ExistValue(RegeditGamedir2, RegeditKey) = True Then
+ Dim Data2 As String = RegEdit.GetValue(RegeditGamedir2, RegeditKey)
+ Return Data2
+ End If
+
+ Return Nothing
+ End Function
+
+ Private Sub SaveCEGamePath(ByVal DirA As String)
+ My.Settings.GameDirCE = DirA
+ My.Settings.Save()
+ End Sub
+
+ Private Sub SavePCGamePath(ByVal DirA As String)
+ My.Settings.GameDirPC = DirA
+ My.Settings.Save()
+ End Sub
+
+ Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
+ System.Diagnostics.Process.Start("https://www.paypal.me/SalvadorKrilewski")
+ End Sub
+
+ Private Sub GunaButton2_Click(sender As Object, e As EventArgs) Handles GunaButton2.Click
+ AboutForm.ShowDialog()
+ End Sub
+
+ Private Sub GunaCheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles GunaCheckBox1.CheckedChanged
+ If GunaCheckBox1.Checked = True Then
+ My.Settings.ConsoleC = True
+ Else
+ My.Settings.ConsoleC = False
+ End If
+ My.Settings.Save()
+ End Sub
+
+ Private Sub GunaCheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles GunaCheckBox2.CheckedChanged
+ If GunaCheckBox2.Checked = True Then
+ My.Settings.ScreenshotC = True
+ Else
+ My.Settings.ScreenshotC = False
+ End If
+ My.Settings.Save()
+ End Sub
+
+ Private Sub GunaCheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles GunaCheckBox3.CheckedChanged
+ 'dev
+ If GunaCheckBox3.Checked = True Then
+ My.Settings.devC = True
+ Else
+ My.Settings.devC = False
+ End If
+ My.Settings.Save()
+ End Sub
+
+ Private Sub GunaCheckBox6_CheckedChanged(sender As Object, e As EventArgs) Handles GunaCheckBox6.CheckedChanged
+ 'no gamma
+ If GunaCheckBox6.Checked = True Then
+ My.Settings.GammaC = True
+ Else
+ My.Settings.GammaC = False
+ End If
+ My.Settings.Save()
+ End Sub
+
+ Private Sub GunaCheckBox4_CheckedChanged(sender As Object, e As EventArgs) Handles GunaCheckBox4.CheckedChanged
+ ' no sound
+ If GunaCheckBox4.Checked = True Then
+ My.Settings.SoundC = True
+ Else
+ My.Settings.SoundC = False
+ End If
+ My.Settings.Save()
+ End Sub
+
+ Private Sub GunaCheckBox5_CheckedChanged(sender As Object, e As EventArgs) Handles GunaCheckBox5.CheckedChanged
+ 'no video
+ If GunaCheckBox5.Checked = True Then
+ My.Settings.VideoC = True
+ Else
+ My.Settings.VideoC = False
+ End If
+ My.Settings.Save()
+ End Sub
+
+ Private Sub GunaCheckBox7_CheckedChanged(sender As Object, e As EventArgs) Handles GunaCheckBox7.CheckedChanged
+ ' no joystic
+ If GunaCheckBox7.Checked = True Then
+ My.Settings.JoystickC = True
+ Else
+ My.Settings.JoystickC = False
+ End If
+ My.Settings.Save()
+ End Sub
+
+ Private Sub GunaCheckBox8_CheckedChanged(sender As Object, e As EventArgs) Handles GunaCheckBox8.CheckedChanged
+ 'safe mode
+ If GunaCheckBox8.Checked = True Then
+ My.Settings.SafeModeC = True
+ Else
+ My.Settings.SafeModeC = False
+ End If
+ My.Settings.Save()
+ End Sub
+
+ Private Sub GunaComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GunaComboBox1.SelectedIndexChanged
+ Dim Slect As Integer = GunaComboBox1.SelectedIndex
+ Select Case Slect
+ Case 0 : My.Settings.LaunchMode = Slect : GunaButton6.Visible = True
+ Case 1 : My.Settings.LaunchMode = Slect : GunaButton6.Visible = True
+ Case 2 : My.Settings.LaunchMode = Slect : GunaButton6.Visible = False
+ End Select
+ My.Settings.Save()
+ End Sub
+
+
+ Private Sub GunaComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GunaComboBox2.SelectedIndexChanged
+ Dim Slect As Integer = GunaComboBox2.SelectedIndex
+ Select Case Slect
+ Case 0 : My.Settings.GameDefect = Slect
+ Case 1 : My.Settings.GameDefect = Slect
+ End Select
+ My.Settings.Save()
+ End Sub
+
+ Private Sub GunaButton5_Click(sender As Object, e As EventArgs) Handles GunaButton5.Click
+ My.Settings.Reset()
+ End Sub
+
+ Private Sub GunaButton6_Click(sender As Object, e As EventArgs) Handles GunaButton6.Click
+ Dim LchangeWindow As New Core.Launcher
+ Dim procs As Process() = Process.GetProcesses()
+
+ Dim ProcessNameEX As String = IO.Path.GetFileNameWithoutExtension(LchangeWindow.GameProc)
+ Dim processcount As Integer = procs.Count
+ For Each proc As Process In procs
+
+ If proc.ProcessName = "haloce" Then
+ Dim FakeFullSc As Boolean = LchangeWindow.FullScreenEmulation("haloce")
+ ElseIf proc.ProcessName = "halo" Then
+ Dim FakeFullSc As Boolean = LchangeWindow.FullScreenEmulation("halo")
+ End If
+ Next
+ End Sub
+
+End Class
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/HelpersXylos.vb b/HALOCELauncher/Controls/HelpersXylos.vb
new file mode 100644
index 0000000..55a6c77
--- /dev/null
+++ b/HALOCELauncher/Controls/HelpersXylos.vb
@@ -0,0 +1,1131 @@
+Friend Module HelpersXylos
+
+ Enum RoundingStyle As Byte
+ All = 0
+ Top = 1
+ Bottom = 2
+ Left = 3
+ Right = 4
+ TopRight = 5
+ BottomRight = 6
+ End Enum
+
+ Public Sub CenterString(G As Graphics, T As String, F As Font, C As Color, R As Rectangle)
+ Dim TS As SizeF = G.MeasureString(T, F)
+
+ Using B As New SolidBrush(C)
+ G.DrawString(T, F, B, New Point(R.Width / 2 - (TS.Width / 2), R.Height / 2 - (TS.Height / 2)))
+ End Using
+ End Sub
+
+ Public Function ColorFromHex(Hex As String) As Color
+ Return Color.FromArgb(Long.Parse(String.Format("FFFFFFFFFF{0}", Hex.Substring(1)), Globalization.NumberStyles.HexNumber))
+ End Function
+
+ Public Function FullRectangle(S As Size, Subtract As Boolean) As Rectangle
+
+ If Subtract Then
+ Return New Rectangle(0, 0, S.Width - 1, S.Height - 1)
+ Else
+ Return New Rectangle(0, 0, S.Width, S.Height)
+ End If
+
+ End Function
+
+ Public Function RoundRect1(ByVal Rect As Rectangle, ByVal Rounding As Integer, Optional ByVal Style As RoundingStyle = RoundingStyle.All) As Drawing2D.GraphicsPath
+
+ Dim GP As New Drawing2D.GraphicsPath()
+ Dim AW As Integer = Rounding * 2
+
+ GP.StartFigure()
+
+ If Rounding = 0 Then
+ GP.AddRectangle(Rect)
+ GP.CloseAllFigures()
+ Return GP
+ End If
+
+ Select Case Style
+ Case RoundingStyle.All
+ GP.AddArc(New Rectangle(Rect.X, Rect.Y, AW, AW), -180, 90)
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Y, AW, AW), -90, 90)
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 0, 90)
+ GP.AddArc(New Rectangle(Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 90, 90)
+ Case RoundingStyle.Top
+ GP.AddArc(New Rectangle(Rect.X, Rect.Y, AW, AW), -180, 90)
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Y, AW, AW), -90, 90)
+ GP.AddLine(New Point(Rect.X + Rect.Width, Rect.Y + Rect.Height), New Point(Rect.X, Rect.Y + Rect.Height))
+ Case RoundingStyle.Bottom
+ GP.AddLine(New Point(Rect.X, Rect.Y), New Point(Rect.X + Rect.Width, Rect.Y))
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 0, 90)
+ GP.AddArc(New Rectangle(Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 90, 90)
+ Case RoundingStyle.Left
+ GP.AddArc(New Rectangle(Rect.X, Rect.Y, AW, AW), -180, 90)
+ GP.AddLine(New Point(Rect.X + Rect.Width, Rect.Y), New Point(Rect.X + Rect.Width, Rect.Y + Rect.Height))
+ GP.AddArc(New Rectangle(Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 90, 90)
+ Case RoundingStyle.Right
+ GP.AddLine(New Point(Rect.X, Rect.Y + Rect.Height), New Point(Rect.X, Rect.Y))
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Y, AW, AW), -90, 90)
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 0, 90)
+ Case RoundingStyle.TopRight
+ GP.AddLine(New Point(Rect.X, Rect.Y + 1), New Point(Rect.X, Rect.Y))
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Y, AW, AW), -90, 90)
+ GP.AddLine(New Point(Rect.X + Rect.Width, Rect.Y + Rect.Height - 1), New Point(Rect.X + Rect.Width, Rect.Y + Rect.Height))
+ GP.AddLine(New Point(Rect.X + 1, Rect.Y + Rect.Height), New Point(Rect.X, Rect.Y + Rect.Height))
+ Case RoundingStyle.BottomRight
+ GP.AddLine(New Point(Rect.X, Rect.Y + 1), New Point(Rect.X, Rect.Y))
+ GP.AddLine(New Point(Rect.X + Rect.Width - 1, Rect.Y), New Point(Rect.X + Rect.Width, Rect.Y))
+ GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 0, 90)
+ GP.AddLine(New Point(Rect.X + 1, Rect.Y + Rect.Height), New Point(Rect.X, Rect.Y + Rect.Height))
+ End Select
+
+ GP.CloseAllFigures()
+
+ Return GP
+
+ End Function
+
+End Module
+
+Public Class XylosTabControl
+ Inherits TabControl
+
+ Private G As Graphics
+ Private Rect As Rectangle
+ Private _OverIndex As Integer = -1
+
+ Public Property FirstHeaderBorder As Boolean
+
+ Private Property OverIndex As Integer
+ Get
+ Return _OverIndex
+ End Get
+ Set(value As Integer)
+ _OverIndex = value
+ Invalidate()
+ End Set
+ End Property
+
+ Sub New()
+ DoubleBuffered = True
+ Alignment = TabAlignment.Left
+ SizeMode = TabSizeMode.Fixed
+ ItemSize = New Size(40, 180)
+ End Sub
+
+ Protected Overrides Sub OnCreateControl()
+ MyBase.OnCreateControl()
+ SetStyle(ControlStyles.UserPaint, True)
+ End Sub
+
+ Protected Overrides Sub OnControlAdded(e As ControlEventArgs)
+ MyBase.OnControlAdded(e)
+ e.Control.BackColor = Color.White
+ e.Control.ForeColor = HelpersXylos.ColorFromHex("#7C858E")
+ e.Control.Font = New Font("Segoe UI", 9)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+ G = e.Graphics
+ G.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
+ G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit
+
+ MyBase.OnPaint(e)
+
+ G.Clear(HelpersXylos.ColorFromHex("#FFFFFF"))
+
+ For I As Integer = 0 To TabPages.Count - 1
+
+ Rect = GetTabRect(I)
+
+ If String.IsNullOrEmpty(TabPages(I).Tag) Then
+
+ If SelectedIndex = I Then
+
+ Using Background As New SolidBrush(HelpersXylos.ColorFromHex("#3375ED")), TextColor As New SolidBrush(HelpersXylos.ColorFromHex("#BECCD9")), TextFont As New Font("Segoe UI semibold", 9)
+ G.FillRectangle(Background, New Rectangle(Rect.X - 5, Rect.Y + 1, Rect.Width + 7, Rect.Height))
+ G.DrawString(TabPages(I).Text, TextFont, TextColor, New Point(Rect.X + 50 + (ItemSize.Height - 180), Rect.Y + 12))
+ End Using
+
+ Else
+
+ Using TextColor As New SolidBrush(HelpersXylos.ColorFromHex("#919BA6")), TextFont As New Font("Segoe UI semibold", 9)
+ G.DrawString(TabPages(I).Text, TextFont, TextColor, New Point(Rect.X + 50 + (ItemSize.Height - 180), Rect.Y + 12))
+ End Using
+
+ End If
+
+ If Not OverIndex = -1 And Not SelectedIndex = OverIndex Then
+
+ Using Background As New SolidBrush(HelpersXylos.ColorFromHex("#2F3338")), TextColor As New SolidBrush(HelpersXylos.ColorFromHex("#919BA6")), TextFont As New Font("Segoe UI semibold", 9)
+ G.FillRectangle(Background, New Rectangle(GetTabRect(OverIndex).X - 5, GetTabRect(OverIndex).Y + 1, GetTabRect(OverIndex).Width + 7, GetTabRect(OverIndex).Height))
+ G.DrawString(TabPages(OverIndex).Text, TextFont, TextColor, New Point(GetTabRect(OverIndex).X + 50 + (ItemSize.Height - 180), GetTabRect(OverIndex).Y + 12))
+ End Using
+
+ If Not IsNothing(ImageList) Then
+ If Not TabPages(OverIndex).ImageIndex < 0 Then
+ G.DrawImage(ImageList.Images(TabPages(OverIndex).ImageIndex), New Rectangle(GetTabRect(OverIndex).X + 25 + (ItemSize.Height - 180), GetTabRect(OverIndex).Y + ((GetTabRect(OverIndex).Height / 2) - 9), 16, 16))
+ End If
+ End If
+
+ End If
+
+
+ If Not IsNothing(ImageList) Then
+ If Not TabPages(I).ImageIndex < 0 Then
+ G.DrawImage(ImageList.Images(TabPages(I).ImageIndex), New Rectangle(Rect.X + 25 + (ItemSize.Height - 180), Rect.Y + ((Rect.Height / 2) - 9), 16, 16))
+ End If
+ End If
+
+ Else
+
+ Using TextColor As New SolidBrush(HelpersXylos.ColorFromHex("#6A7279")), TextFont As New Font("Segoe UI", 7, FontStyle.Bold), Border As New Pen(HelpersXylos.ColorFromHex("#2B2F33"))
+
+ If FirstHeaderBorder Then
+ G.DrawLine(Border, New Point(Rect.X - 5, Rect.Y + 1), New Point(Rect.Width + 7, Rect.Y + 1))
+ Else
+ If Not I = 0 Then
+ G.DrawLine(Border, New Point(Rect.X - 5, Rect.Y + 1), New Point(Rect.Width + 7, Rect.Y + 1))
+ End If
+ End If
+
+ G.DrawString(TabPages(I).Text.ToUpper, TextFont, TextColor, New Point(Rect.X + 25 + (ItemSize.Height - 180), Rect.Y + 16))
+
+ End Using
+
+ End If
+
+ Next
+
+ End Sub
+
+ Protected Overrides Sub OnSelecting(e As TabControlCancelEventArgs)
+ MyBase.OnSelecting(e)
+
+ If Not IsNothing(e.TabPage) Then
+ If Not String.IsNullOrEmpty(e.TabPage.Tag) Then
+ e.Cancel = True
+ Else
+ OverIndex = -1
+ End If
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnMouseMove(e As MouseEventArgs)
+ MyBase.OnMouseMove(e)
+
+ For I As Integer = 0 To TabPages.Count - 1
+ If GetTabRect(I).Contains(e.Location) And Not SelectedIndex = I And String.IsNullOrEmpty(TabPages(I).Tag) Then
+ OverIndex = I
+ Exit For
+ Else
+ OverIndex = -1
+ End If
+ Next
+
+ End Sub
+
+ Protected Overrides Sub OnMouseLeave(e As EventArgs)
+ MyBase.OnMouseLeave(e)
+ OverIndex = -1
+ End Sub
+
+End Class
+
+Public Class XylosCheckBox
+ Inherits Control
+
+ Public Event CheckedChanged(sender As Object, e As EventArgs)
+
+ Private _Checked As Boolean
+ Private _EnabledCalc As Boolean
+ Private G As Graphics
+
+ Private B64Enabled As String = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA00lEQVQ4T6WTwQ2CMBSG30/07Ci6gY7gxZoIiYADuAIrsIDpQQ/cHMERZBOuXHimDSWALYL01EO/L//724JmLszk6S+BCOIExFsmL50sEH4kAZxVciYuJgnacD16Plpgg8tFtYMILntQdSXiZ3aXqa1UF/yUsoDw4wKglQaZZPa4RW3JEKzO4RjEbyJaN1BL8gvWgsMp3ADeq0lRJ2FimLZNYWpmFbudUJdolXTLyG2wTmDODUiccEfgSDIIfwmMxAMStS+XHPZn7l/z6Ifk+nSzBR8zi2d9JmVXSgAAAABJRU5ErkJggg=="
+ Private B64Disabled As String = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA1UlEQVQ4T6WTzQ2CQBCF56EnLpaiXvUAJBRgB2oFtkALdEAJnoVEMIGzdEIFjNkFN4DLn+xpD/N9efMWQAsPFvL0lyBMUg8MiwzyZwuiJAuI6CyTMxezBC24EuSTBTp4xaaN6JWdqKQbge6udfB1pfbBjrMvEMZZAdCm3ilw7eO1KRmCxRyiOH0TsFUQs5KMwVLweKY7ALFKUZUTECD6qdquCxM7i9jNhLJEraQ5xZzrYJngO9crGYBbAm2SEfhHoCQGeeK+Ls1Ld+fuM0/+kPp+usWCD10idEOGa4QuAAAAAElFTkSuQmCC"
+
+ Public Property Checked As Boolean
+ Get
+ Return _Checked
+ End Get
+ Set(value As Boolean)
+ _Checked = value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Shadows Property Enabled As Boolean
+ Get
+ Return EnabledCalc
+ End Get
+ Set(value As Boolean)
+ _EnabledCalc = value
+
+ If Enabled Then
+ Cursor = Cursors.Hand
+ Else
+ Cursor = Cursors.Default
+ End If
+
+ Invalidate()
+ End Set
+ End Property
+
+
+ Public Property EnabledCalc As Boolean
+ Get
+ Return _EnabledCalc
+ End Get
+ Set(value As Boolean)
+ Enabled = value
+ Invalidate()
+ End Set
+ End Property
+
+ Sub New()
+ DoubleBuffered = True
+ Enabled = True
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+ G = e.Graphics
+ G.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
+ G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit
+
+ MyBase.OnPaint(e)
+
+ G.Clear(BackColor)
+
+ If Enabled Then
+
+ Using Background As New SolidBrush(HelpersXylos.ColorFromHex("#F3F4F7")), Border As New Pen(HelpersXylos.ColorFromHex("#D0D5D9")), TextColor As New SolidBrush(HelpersXylos.ColorFromHex("#7C858E")), TextFont As New Font("Segoe UI", 9)
+ G.FillPath(Background, HelpersXylos.RoundRect1(New Rectangle(0, 0, 16, 16), 3))
+ G.DrawPath(Border, HelpersXylos.RoundRect1(New Rectangle(0, 0, 16, 16), 3))
+ G.DrawString(Text, TextFont, TextColor, New Point(25, 0))
+ End Using
+
+ If Checked Then
+
+ Using I As Image = Image.FromStream(New IO.MemoryStream(Convert.FromBase64String(B64Enabled)))
+ G.DrawImage(I, New Rectangle(3, 3, 11, 11))
+ End Using
+
+ End If
+
+ Else
+
+ Using Background As New SolidBrush(HelpersXylos.ColorFromHex("#F5F5F8")), Border As New Pen(HelpersXylos.ColorFromHex("#E1E1E2")), TextColor As New SolidBrush(HelpersXylos.ColorFromHex("#D0D3D7")), TextFont As New Font("Segoe UI", 9)
+ G.FillPath(Background, HelpersXylos.RoundRect1(New Rectangle(0, 0, 16, 16), 3))
+ G.DrawPath(Border, HelpersXylos.RoundRect1(New Rectangle(0, 0, 16, 16), 3))
+ G.DrawString(Text, TextFont, TextColor, New Point(25, 0))
+ End Using
+
+ If Checked Then
+
+ Using I As Image = Image.FromStream(New IO.MemoryStream(Convert.FromBase64String(B64Disabled)))
+ G.DrawImage(I, New Rectangle(3, 3, 11, 11))
+ End Using
+
+ End If
+
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
+ MyBase.OnMouseUp(e)
+
+ If Enabled Then
+ Checked = Not Checked
+ RaiseEvent CheckedChanged(Me, e)
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnResize(e As EventArgs)
+ MyBase.OnResize(e)
+ Size = New Size(Width, 18)
+ End Sub
+
+End Class
+
+Public Class XylosRadioButton
+ Inherits Control
+
+ Public Event CheckedChanged(sender As Object, e As EventArgs)
+
+ Private _Checked As Boolean
+ Private _EnabledCalc As Boolean
+ Private G As Graphics
+
+ Public Property Checked As Boolean
+ Get
+ Return _Checked
+ End Get
+ Set(value As Boolean)
+ _Checked = value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Shadows Property Enabled As Boolean
+ Get
+ Return EnabledCalc
+ End Get
+ Set(value As Boolean)
+ _EnabledCalc = value
+
+ If Enabled Then
+ Cursor = Cursors.Hand
+ Else
+ Cursor = Cursors.Default
+ End If
+
+ Invalidate()
+ End Set
+ End Property
+
+ Public Property EnabledCalc As Boolean
+ Get
+ Return _EnabledCalc
+ End Get
+ Set(value As Boolean)
+ Enabled = value
+ Invalidate()
+ End Set
+ End Property
+
+ Sub New()
+ DoubleBuffered = True
+ Enabled = True
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+ G = e.Graphics
+ G.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
+ G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit
+
+ MyBase.OnPaint(e)
+
+ G.Clear(Color.White)
+
+ If Enabled Then
+
+ Using Background As New SolidBrush(HelpersXylos.ColorFromHex("#F3F4F7")), Border As New Pen(HelpersXylos.ColorFromHex("#D0D5D9")), TextColor As New SolidBrush(HelpersXylos.ColorFromHex("#7C858E")), TextFont As New Font("Segoe UI", 9)
+ G.FillEllipse(Background, New Rectangle(0, 0, 16, 16))
+ G.DrawEllipse(Border, New Rectangle(0, 0, 16, 16))
+ G.DrawString(Text, TextFont, TextColor, New Point(25, 0))
+ End Using
+
+ If Checked Then
+
+ Using Background As New SolidBrush(HelpersXylos.ColorFromHex("#575C62"))
+ G.FillEllipse(Background, New Rectangle(4, 4, 8, 8))
+ End Using
+
+ End If
+
+ Else
+
+ Using Background As New SolidBrush(HelpersXylos.ColorFromHex("#F5F5F8")), Border As New Pen(HelpersXylos.ColorFromHex("#E1E1E2")), TextColor As New SolidBrush(HelpersXylos.ColorFromHex("#D0D3D7")), TextFont As New Font("Segoe UI", 9)
+ G.FillEllipse(Background, New Rectangle(0, 0, 16, 16))
+ G.DrawEllipse(Border, New Rectangle(0, 0, 16, 16))
+ G.DrawString(Text, TextFont, TextColor, New Point(25, 0))
+ End Using
+
+ If Checked Then
+
+ Using Background As New SolidBrush(HelpersXylos.ColorFromHex("#BCC1C6"))
+ G.FillEllipse(Background, New Rectangle(4, 4, 8, 8))
+ End Using
+
+ End If
+
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
+ MyBase.OnMouseUp(e)
+
+ If Enabled Then
+
+ For Each C As Control In Parent.Controls
+ If TypeOf C Is XylosRadioButton Then
+ DirectCast(C, XylosRadioButton).Checked = False
+ End If
+ Next
+
+ Checked = Not Checked
+ RaiseEvent CheckedChanged(Me, e)
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnResize(e As EventArgs)
+ MyBase.OnResize(e)
+ Size = New Size(Width, 18)
+ End Sub
+
+End Class
+
+Public Class XylosNotice
+ Inherits TextBox
+
+ Private G As Graphics
+ Private B64 As String = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVQ4T5VT0VGDQBB9e2cBdGBSgTIDEr9MCw7pI0kFtgB9yFiC+KWMmREqMOnAAuDWOfAiudzhyA/svtvH7Xu7BOv5eH2atVKtwbwk0LWGGVyDqLzoRB7e3u/HJTQOdm+PGYjWNuk4ZkIW36RbkzsS7KqiBnB1Usw49DHh8oQEXMfJKhwgAM4/Mw7RIp0NeLG3ScCcR4vVhnTPnVCf9rUZeImTdKnz71VREnBnn5FKzMnX95jA2V6vLufkBQFESTq0WBXsEla7owmcoC6QJMKW2oCUePY5M0lAjK0iBAQ8TBGc2/d7+uvnM/AQNF4Rp4bpiGkRfTb2Gigx12+XzQb3D9JfBGaQzHWm7HS000RJ2i/av5fJjPDZMplErwl1GxDpMTbL1YC5lCwze52/AQFekh7wKBpGAAAAAElFTkSuQmCC"
+
+ Sub New()
+ DoubleBuffered = True
+ Enabled = False
+ [ReadOnly] = True
+ BorderStyle = BorderStyle.None
+ Multiline = True
+ Cursor = Cursors.Default
+ End Sub
+
+ Protected Overrides Sub OnCreateControl()
+ MyBase.OnCreateControl()
+ SetStyle(ControlStyles.UserPaint, True)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+ G = e.Graphics
+ G.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
+ G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit
+
+ MyBase.OnPaint(e)
+
+ G.Clear(Color.White)
+
+ Using Background As New SolidBrush(HelpersXylos.ColorFromHex("#FFFDE8")), MainBorder As New Pen(HelpersXylos.ColorFromHex("#F2F3F7")), TextColor As New SolidBrush(HelpersXylos.ColorFromHex("#B9B595")), TextFont As New Font("Segoe UI", 9)
+ G.FillPath(Background, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 3))
+ G.DrawPath(MainBorder, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 3))
+ G.DrawString(Text, TextFont, TextColor, New Point(30, 6))
+ End Using
+
+ Using I As Image = Image.FromStream(New IO.MemoryStream(Convert.FromBase64String(B64)))
+ G.DrawImage(I, New Rectangle(8, Height / 2 - 8, 16, 16))
+ End Using
+
+ End Sub
+
+ Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
+ MyBase.OnMouseUp(e)
+
+ End Sub
+
+End Class
+
+
+Public Class XylosTextBox
+ Inherits Control
+
+ Enum MouseState As Byte
+ None = 0
+ Over = 1
+ Down = 2
+ End Enum
+
+ Private WithEvents TB As New TextBox
+ Private G As Graphics
+ Private State As MouseState
+ Private IsDown As Boolean
+
+ Private _EnabledCalc As Boolean
+ Private _allowpassword As Boolean = False
+ Private _maxChars As Integer = 32767
+ Private _textAlignment As HorizontalAlignment
+ Private _multiLine As Boolean = False
+ Private _readOnly As Boolean = False
+
+ Public Shadows Property Enabled As Boolean
+ Get
+ Return EnabledCalc
+ End Get
+ Set(value As Boolean)
+ TB.Enabled = value
+ _EnabledCalc = value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Property EnabledCalc As Boolean
+ Get
+ Return _EnabledCalc
+ End Get
+ Set(value As Boolean)
+ Enabled = value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Shadows Property UseSystemPasswordChar() As Boolean
+ Get
+ Return _allowpassword
+ End Get
+ Set(ByVal value As Boolean)
+ TB.UseSystemPasswordChar = UseSystemPasswordChar
+ _allowpassword = value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Shadows Property MaxLength() As Integer
+ Get
+ Return _maxChars
+ End Get
+ Set(ByVal value As Integer)
+ _maxChars = value
+ TB.MaxLength = MaxLength
+ Invalidate()
+ End Set
+ End Property
+
+ Public Shadows Property TextAlign() As HorizontalAlignment
+ Get
+ Return _textAlignment
+ End Get
+ Set(ByVal value As HorizontalAlignment)
+ _textAlignment = value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Shadows Property MultiLine() As Boolean
+ Get
+ Return _multiLine
+ End Get
+ Set(ByVal value As Boolean)
+ _multiLine = value
+ TB.Multiline = value
+ OnResize(EventArgs.Empty)
+ Invalidate()
+ End Set
+ End Property
+
+ Public Shadows Property [ReadOnly]() As Boolean
+ Get
+ Return _readOnly
+ End Get
+ Set(ByVal value As Boolean)
+ _readOnly = value
+ If TB IsNot Nothing Then
+ TB.ReadOnly = value
+ End If
+ End Set
+ End Property
+
+ Protected Overrides Sub OnTextChanged(ByVal e As EventArgs)
+ MyBase.OnTextChanged(e)
+ Invalidate()
+ End Sub
+
+ Protected Overrides Sub OnBackColorChanged(ByVal e As EventArgs)
+ MyBase.OnBackColorChanged(e)
+ Invalidate()
+ End Sub
+
+ Protected Overrides Sub OnForeColorChanged(ByVal e As EventArgs)
+ MyBase.OnForeColorChanged(e)
+ TB.ForeColor = ForeColor
+ Invalidate()
+ End Sub
+
+ Protected Overrides Sub OnFontChanged(ByVal e As EventArgs)
+ MyBase.OnFontChanged(e)
+ TB.Font = Font
+ End Sub
+
+ Protected Overrides Sub OnGotFocus(ByVal e As EventArgs)
+ MyBase.OnGotFocus(e)
+ TB.Focus()
+ End Sub
+
+ Private Sub TextChangeTb() Handles TB.TextChanged
+ Text = TB.Text
+ End Sub
+
+ Private Sub TextChng() Handles MyBase.TextChanged
+ TB.Text = Text
+ End Sub
+
+ Public Sub NewTextBox()
+ With TB
+ .Text = String.Empty
+ .BackColor = Color.White
+ .ForeColor = HelpersXylos.ColorFromHex("#7C858E")
+ .TextAlign = HorizontalAlignment.Left
+ .BorderStyle = BorderStyle.None
+ .Location = New Point(3, 3)
+ .Font = New Font("Segoe UI", 9)
+ .Size = New Size(Width - 3, Height - 3)
+ .UseSystemPasswordChar = UseSystemPasswordChar
+ End With
+ End Sub
+
+ Sub New()
+ MyBase.New()
+ NewTextBox()
+ Controls.Add(TB)
+ SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor, True)
+ DoubleBuffered = True
+ TextAlign = HorizontalAlignment.Left
+ ForeColor = HelpersXylos.ColorFromHex("#7C858E")
+ Font = New Font("Segoe UI", 9)
+ Size = New Size(130, 29)
+ Enabled = True
+ End Sub
+
+ Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
+
+ G = e.Graphics
+ G.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
+ G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit
+
+ MyBase.OnPaint(e)
+
+ G.Clear(Color.White)
+
+ If Enabled Then
+
+ TB.ForeColor = HelpersXylos.ColorFromHex("#7C858E")
+
+ If State = MouseState.Down Then
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#78B7E6"))
+ G.DrawPath(Border, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 12))
+ End Using
+
+ Else
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#D0D5D9"))
+ G.DrawPath(Border, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 12))
+ End Using
+
+ End If
+
+ Else
+
+ TB.ForeColor = HelpersXylos.ColorFromHex("#7C858E")
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#E1E1E2"))
+ G.DrawPath(Border, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 12))
+ End Using
+
+ End If
+
+ TB.TextAlign = TextAlign
+ TB.UseSystemPasswordChar = UseSystemPasswordChar
+
+ End Sub
+
+ Protected Overrides Sub OnResize(e As EventArgs)
+ MyBase.OnResize(e)
+ If Not MultiLine Then
+ Dim tbheight As Integer = TB.Height
+ TB.Location = New Point(10, CType(((Height / 2) - (tbheight / 2) - 0), Integer))
+ TB.Size = New Size(Width - 20, tbheight)
+ Else
+ TB.Location = New Point(10, 10)
+ TB.Size = New Size(Width - 20, Height - 20)
+ End If
+ End Sub
+
+ Protected Overrides Sub OnEnter(e As EventArgs)
+ MyBase.OnEnter(e)
+ State = MouseState.Down : Invalidate()
+ End Sub
+
+ Protected Overrides Sub OnLeave(e As EventArgs)
+ MyBase.OnLeave(e)
+ State = MouseState.None : Invalidate()
+ End Sub
+
+End Class
+
+Public Class XylosProgressBar
+ Inherits Control
+
+#Region " Drawing "
+
+ Private _Val As Integer = 0
+ Private _Min As Integer = 0
+ Private _Max As Integer = 100
+
+ Public Property Stripes As Color = Color.DarkGreen
+ Public Property BackgroundColor As Color = Color.Green
+
+
+ Public Property Value As Integer
+ Get
+ Return _Val
+ End Get
+ Set(value As Integer)
+ _Val = value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Property Minimum As Integer
+ Get
+ Return _Min
+ End Get
+ Set(value As Integer)
+ _Min = value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Property Maximum As Integer
+ Get
+ Return _Max
+ End Get
+ Set(value As Integer)
+ _Max = value
+ Invalidate()
+ End Set
+ End Property
+
+ Sub New()
+ DoubleBuffered = True
+ Maximum = 100
+ Minimum = 0
+ Value = 0
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ Dim G As Graphics = e.Graphics
+ G.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
+ G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit
+
+ MyBase.OnPaint(e)
+
+ G.Clear(Color.White)
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#D0D5D9"))
+ G.DrawPath(Border, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 6))
+ End Using
+
+ If Not Value = 0 Then
+
+ Using Background As New Drawing2D.HatchBrush(Drawing2D.HatchStyle.LightUpwardDiagonal, Stripes, BackgroundColor)
+ G.FillPath(Background, HelpersXylos.RoundRect1(New Rectangle(0, 0, Value / Maximum * Width - 1, Height - 1), 6))
+ End Using
+
+ End If
+
+
+ End Sub
+
+#End Region
+
+End Class
+
+Public Class XylosCombobox
+ Inherits ComboBox
+
+ Private G As Graphics
+ Private Rect As Rectangle
+ Private _EnabledCalc As Boolean
+
+ Public Shadows Property Enabled As Boolean
+ Get
+ Return EnabledCalc
+ End Get
+ Set(value As Boolean)
+ _EnabledCalc = value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Property EnabledCalc As Boolean
+ Get
+ Return _EnabledCalc
+ End Get
+ Set(value As Boolean)
+ MyBase.Enabled = value
+ Enabled = value
+ Invalidate()
+ End Set
+ End Property
+
+ Sub New()
+ DoubleBuffered = True
+ DropDownStyle = ComboBoxStyle.DropDownList
+ Cursor = Cursors.Hand
+ Enabled = True
+ DrawMode = DrawMode.OwnerDrawFixed
+ ItemHeight = 20
+ End Sub
+
+ Protected Overrides Sub OnCreateControl()
+ MyBase.OnCreateControl()
+ SetStyle(ControlStyles.UserPaint, True)
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+ G = e.Graphics
+ G.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
+ G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit
+
+ MyBase.OnPaint(e)
+
+ G.Clear(Color.White)
+
+ If Enabled Then
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#D0D5D9")), TriangleColor As New SolidBrush(HelpersXylos.ColorFromHex("#7C858E")), TriangleFont As New Font("Marlett", 13)
+ G.DrawPath(Border, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 6))
+ G.DrawString("6", TriangleFont, TriangleColor, New Point(Width - 22, 3))
+ End Using
+
+ Else
+
+ Using Border As New Pen(HelpersXylos.ColorFromHex("#E1E1E2")), TriangleColor As New SolidBrush(HelpersXylos.ColorFromHex("#D0D3D7")), TriangleFont As New Font("Marlett", 13)
+ G.DrawPath(Border, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 6))
+ G.DrawString("6", TriangleFont, TriangleColor, New Point(Width - 22, 3))
+ End Using
+
+ End If
+
+ If Not IsNothing(Items) Then
+
+ Using ItemsFont As New Font("Segoe UI", 9), ItemsColor As New SolidBrush(HelpersXylos.ColorFromHex("#7C858E"))
+
+ If Enabled Then
+
+ If Not SelectedIndex = -1 Then
+ G.DrawString(GetItemText(Items(SelectedIndex)), ItemsFont, ItemsColor, New Point(7, 4))
+ Else
+ Try
+ G.DrawString(GetItemText(Items(0)), ItemsFont, ItemsColor, New Point(7, 4))
+ Catch
+ End Try
+ End If
+
+ Else
+
+ Using DisabledItemsColor As New SolidBrush(HelpersXylos.ColorFromHex("#D0D3D7"))
+
+ If Not SelectedIndex = -1 Then
+ G.DrawString(GetItemText(Items(SelectedIndex)), ItemsFont, DisabledItemsColor, New Point(7, 4))
+ Else
+ G.DrawString(GetItemText(Items(0)), ItemsFont, DisabledItemsColor, New Point(7, 4))
+ End If
+
+ End Using
+
+ End If
+
+ End Using
+
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnDrawItem(e As DrawItemEventArgs)
+ MyBase.OnDrawItem(e)
+ G = e.Graphics
+ G.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
+ G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit
+
+ If Enabled Then
+ e.DrawBackground()
+ Rect = e.Bounds
+
+ Try
+
+ Using ItemsFont As New Font("Segoe UI", 9), Border As New Pen(HelpersXylos.ColorFromHex("#D0D5D9"))
+
+ If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
+
+ Using ItemsColor As New SolidBrush(Color.White), Itembackground As New SolidBrush(HelpersXylos.ColorFromHex("#78B7E6"))
+ G.FillRectangle(Itembackground, Rect)
+ G.DrawString(GetItemText(Items(e.Index)), New Font("Segoe UI", 9), Brushes.White, New Point(Rect.X + 5, Rect.Y + 1))
+ End Using
+
+ Else
+ Using ItemsColor As New SolidBrush(HelpersXylos.ColorFromHex("#7C858E"))
+ G.FillRectangle(Brushes.White, Rect)
+ G.DrawString(GetItemText(Items(e.Index)), New Font("Segoe UI", 9), ItemsColor, New Point(Rect.X + 5, Rect.Y + 1))
+ End Using
+
+ End If
+
+ End Using
+
+ Catch
+ End Try
+
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnSelectedItemChanged(ByVal e As EventArgs)
+ MyBase.OnSelectedItemChanged(e)
+ Invalidate()
+ End Sub
+
+End Class
+
+Public Class XylosSeparator
+ Inherits Control
+
+ Private G As Graphics
+
+ Sub New()
+ DoubleBuffered = True
+ End Sub
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+ G = e.Graphics
+ G.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
+ G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit
+
+ MyBase.OnPaint(e)
+
+ Using C As New Pen(HelpersXylos.ColorFromHex("#EBEBEC"))
+ G.DrawLine(C, New Point(0, 0), New Point(Width, 0))
+ End Using
+
+ End Sub
+
+ Protected Overrides Sub OnResize(e As EventArgs)
+ MyBase.OnResize(e)
+ Size = New Size(Width, 2)
+ End Sub
+
+End Class
+
+Public Class XylosButton
+ Inherits Control
+
+ Enum MouseState As Byte
+ None = 0
+ Over = 1
+ Down = 2
+ End Enum
+
+ Private G As Graphics
+ Private State As MouseState
+
+ Private _EnabledCalc As Boolean
+
+ Public Shadows Event Click(sender As Object, e As EventArgs)
+
+ Sub New()
+ DoubleBuffered = True
+ Enabled = True
+ End Sub
+
+ Public Shadows Property Enabled As Boolean
+ Get
+ Return EnabledCalc
+ End Get
+ Set(value As Boolean)
+ _EnabledCalc = value
+ Invalidate()
+ End Set
+ End Property
+
+ Public Property EnabledCalc As Boolean
+ Get
+ Return _EnabledCalc
+ End Get
+ Set(value As Boolean)
+ Enabled = value
+ Invalidate()
+ End Set
+ End Property
+
+ Private _BackColorA As Color = Color.White
+ Public Property BackColorA As Color
+ Get
+ Return _BackColorA
+ End Get
+ Set(value As Color)
+ _BackColorA = value
+ Invalidate()
+ End Set
+ End Property
+
+
+
+ Protected Overrides Sub OnPaint(e As PaintEventArgs)
+
+ G = e.Graphics
+ G.SmoothingMode = Drawing2D.SmoothingMode.HighSpeed
+ G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit
+
+ MyBase.OnPaint(e)
+
+ If Enabled Then
+
+ Select Case State
+
+ Case MouseState.Over
+
+ Using Background As New SolidBrush(HelpersXylos.ColorFromHex("#FDFDFD"))
+ G.FillPath(Background, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 3))
+ End Using
+
+ Case MouseState.Down
+
+ Using Background As New SolidBrush(HelpersXylos.ColorFromHex("#F0F0F0"))
+ G.FillPath(Background, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 3))
+ End Using
+
+ Case Else
+
+ Using Background As New SolidBrush(_BackColorA) 'HelpersXylos.ColorFromHex("#F6F6F6")
+ G.FillPath(Background, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 3))
+ End Using
+
+ End Select
+
+ Using ButtonFont As New Font("Segoe UI", 9), Border As New Pen(HelpersXylos.ColorFromHex("#C3C3C3"))
+ G.DrawPath(Border, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 3))
+ HelpersXylos.CenterString(G, Text, ButtonFont, HelpersXylos.ColorFromHex("#7C858E"), HelpersXylos.FullRectangle(Size, False))
+ End Using
+
+ Else
+
+ Using Background As New SolidBrush(_BackColorA), Border As New Pen(Color.White), ButtonFont As New Font("Segoe UI", 9)
+ G.FillPath(Background, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 3))
+ G.DrawPath(Border, HelpersXylos.RoundRect1(HelpersXylos.FullRectangle(Size, True), 3))
+ HelpersXylos.CenterString(G, Text, ButtonFont, HelpersXylos.ColorFromHex("#D0D3D7"), HelpersXylos.FullRectangle(Size, False))
+ End Using
+
+ End If
+
+ End Sub
+
+ Protected Overrides Sub OnMouseEnter(e As EventArgs)
+ MyBase.OnMouseEnter(e)
+ State = MouseState.Over : Invalidate()
+ End Sub
+
+ Protected Overrides Sub OnMouseLeave(e As EventArgs)
+ MyBase.OnMouseLeave(e)
+ State = MouseState.None : Invalidate()
+ End Sub
+
+ Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
+ MyBase.OnMouseUp(e)
+
+ If Enabled Then
+ RaiseEvent Click(Me, e)
+ End If
+
+ State = MouseState.Over : Invalidate()
+ End Sub
+
+ Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
+ MyBase.OnMouseDown(e)
+ State = MouseState.Down : Invalidate()
+ End Sub
+
+End Class
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/MenuStripZControl.vb b/HALOCELauncher/Controls/MenuStripZControl.vb
new file mode 100644
index 0000000..ee64c0f
--- /dev/null
+++ b/HALOCELauncher/Controls/MenuStripZControl.vb
@@ -0,0 +1,94 @@
+Imports System
+Imports System.Collections.Generic
+Imports System.Linq
+Imports System.Text
+Imports System.Drawing
+Imports System.Drawing.Drawing2D
+Imports System.Windows.Forms
+
+Namespace CustomWindowsForm
+ Public Class MenuStripZ
+ Inherits MenuStrip
+
+ Public Sub New()
+ Me.Renderer = New MyMenuRenderer()
+ End Sub
+ End Class
+
+ Public Class MyMenuRenderer
+ Inherits ToolStripRenderer
+
+ Protected Overrides Sub OnRenderMenuItemBackground(ByVal e As ToolStripItemRenderEventArgs)
+ MyBase.OnRenderMenuItemBackground(e)
+
+ If e.Item.Enabled Then
+
+ If e.Item.IsOnDropDown = False AndAlso e.Item.Selected Then
+ Dim rect = New Rectangle(0, 0, e.Item.Width - 1, e.Item.Height - 1)
+ Dim rect2 = New Rectangle(0, 0, e.Item.Width - 1, e.Item.Height - 1)
+ e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(60, 60, 60)), rect)
+ e.Graphics.DrawRectangle(New Pen(New SolidBrush(Color.Black)), rect2)
+ e.Item.ForeColor = Color.White
+ Else
+ e.Item.ForeColor = Color.White
+ End If
+
+ If e.Item.IsOnDropDown AndAlso e.Item.Selected Then
+ Dim rect = New Rectangle(0, 0, e.Item.Width - 1, e.Item.Height - 1)
+ e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(60, 60, 60)), rect)
+ e.Graphics.DrawRectangle(New Pen(New SolidBrush(Color.Black)), rect)
+ e.Item.ForeColor = Color.White
+ End If
+
+ If (TryCast(e.Item, ToolStripMenuItem)).DropDown.Visible AndAlso e.Item.IsOnDropDown = False Then
+ Dim rect = New Rectangle(0, 0, e.Item.Width - 1, e.Item.Height - 1)
+ Dim rect2 = New Rectangle(0, 0, e.Item.Width - 1, e.Item.Height - 1)
+ e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(20, 20, 20)), rect)
+ e.Graphics.DrawRectangle(New Pen(New SolidBrush(Color.Black)), rect2)
+ e.Item.ForeColor = Color.White
+ End If
+ End If
+ End Sub
+
+ Protected Overrides Sub OnRenderSeparator(ByVal e As ToolStripSeparatorRenderEventArgs)
+ MyBase.OnRenderSeparator(e)
+ Dim DarkLine = New SolidBrush(Color.FromArgb(30, 30, 30))
+ Dim rect = New Rectangle(30, 3, e.Item.Width - 30, 1)
+ e.Graphics.FillRectangle(DarkLine, rect)
+ End Sub
+
+ Protected Overrides Sub OnRenderItemCheck(ByVal e As ToolStripItemImageRenderEventArgs)
+ MyBase.OnRenderItemCheck(e)
+
+ If e.Item.Selected Then
+ Dim rect = New Rectangle(4, 2, 18, 18)
+ Dim rect2 = New Rectangle(5, 3, 16, 16)
+ Dim b As SolidBrush = New SolidBrush(Color.Black)
+ Dim b2 As SolidBrush = New SolidBrush(Color.FromArgb(220, 220, 220))
+ e.Graphics.FillRectangle(b, rect)
+ e.Graphics.FillRectangle(b2, rect2)
+ e.Graphics.DrawImage(e.Image, New Point(5, 3))
+ Else
+ Dim rect = New Rectangle(4, 2, 18, 18)
+ Dim rect2 = New Rectangle(5, 3, 16, 16)
+ Dim b As SolidBrush = New SolidBrush(Color.White)
+ Dim b2 As SolidBrush = New SolidBrush(Color.FromArgb(255, 80, 90, 90))
+ e.Graphics.FillRectangle(b, rect)
+ e.Graphics.FillRectangle(b2, rect2)
+ e.Graphics.DrawImage(e.Image, New Point(5, 3))
+ End If
+ End Sub
+
+ Protected Overrides Sub OnRenderImageMargin(ByVal e As ToolStripRenderEventArgs)
+ MyBase.OnRenderImageMargin(e)
+ Dim rect = New Rectangle(0, 0, e.ToolStrip.Width, e.ToolStrip.Height)
+ e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(36, 36, 36)), rect)
+ Dim DarkLine = New SolidBrush(Color.FromArgb(36, 36, 36))
+ Dim rect3 = New Rectangle(0, 0, 26, e.AffectedBounds.Height)
+ e.Graphics.FillRectangle(DarkLine, rect3)
+ e.Graphics.DrawLine(New Pen(New SolidBrush(Color.FromArgb(36, 36, 36))), 28, 0, 28, e.AffectedBounds.Height)
+ Dim rect2 = New Rectangle(0, 0, e.ToolStrip.Width - 1, e.ToolStrip.Height - 1)
+ e.Graphics.DrawRectangle(New Pen(New SolidBrush(Color.Black)), rect2)
+ End Sub
+ End Class
+End Namespace
diff --git a/HALOCELauncher/Controls/PanelFX/PanelFX.vb b/HALOCELauncher/Controls/PanelFX/PanelFX.vb
new file mode 100644
index 0000000..d107477
--- /dev/null
+++ b/HALOCELauncher/Controls/PanelFX/PanelFX.vb
@@ -0,0 +1,114 @@
+Imports HALOCELauncher.Types
+Imports System.ComponentModel
+Imports System.Security.Permissions
+Imports HALOCELauncher.Win32FX
+
+
+
+
+
+
+
+
+Public Class PanelFX : Inherits Panel : Implements IBufferedControl
+
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' Gets the required creation parameters when the control handle is created.
+ '''
+ ''' The information returned by the property is used to pass information about the
+ ''' initial state and appearance of this control, at the time an instance of this class is being created.
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' The creation parameters.
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+
+
+
+ Protected Overrides ReadOnly Property CreateParams As CreateParams Implements IBufferedControl.CreateParams
+ Get
+ If (Me.preventFlickeringB) Then
+ Dim cp As CreateParams = MyBase.CreateParams
+ cp.ExStyle = (cp.ExStyle Or CInt(WindowStylesEx.WS_EX_COMPOSITED))
+ Return cp
+ Else
+ Return MyBase.CreateParams
+ End If
+ End Get
+ End Property
+
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' Gets or sets a value indicating whether this control should redraw its surface using a secondary buffer
+ ''' to reduce or prevent flicker.
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' if the surface of the control should be drawn using double buffering;
+ ''' otherwise, .
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+ Public Overridable Shadows Property DoubleBuffered As Boolean Implements IBufferedControl.DoubleBuffered
+ Get
+ Return MyBase.DoubleBuffered
+ End Get
+ Set(ByVal value As Boolean)
+ Me.SetStyle(ControlStyles.DoubleBuffer, value)
+ MyBase.DoubleBuffered = value
+ End Set
+ End Property
+
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' Gets or sets a value that indicates whether the control should avoid unwanted flickering effects.
+ '''
+ ''' If , this will avoid any flickering effect on the control, however,
+ ''' it will also have a negative impact by slowing down the responsiveness of the control about to 30% slower.
+ '''
+ ''' This negative impact doesn't affect to the performance of the application itself,
+ ''' just to the performance of this control.
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' A value that indicates whether the control should avoid unwanted flickering effects.
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+ Public Overridable Property PreventFlickering As Boolean Implements IBufferedControl.PreventFlickering
+ Get
+ Return Me.preventFlickeringB
+ End Get
+ Set(ByVal value As Boolean)
+ Me.preventFlickeringB = value
+ End Set
+ End Property
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' ( Backing Field )
+ ''' A value that indicates whether the control should avoid unwanted flickering effects.
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+ Private preventFlickeringB As Boolean
+
+ Public Sub New()
+ MyBase.SuspendLayout()
+
+ MyBase.ResumeLayout(performLayout:=False)
+ End Sub
+
+End Class
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/ServerTap/AddCustomServer.Designer.vb b/HALOCELauncher/Controls/ServerTap/AddCustomServer.Designer.vb
new file mode 100644
index 0000000..dc90725
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/AddCustomServer.Designer.vb
@@ -0,0 +1,137 @@
+ _
+Partial Class AddCustomServer
+ Inherits System.Windows.Forms.Form
+
+ 'Form overrides dispose to clean up the component list.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ _
+ Private Sub InitializeComponent()
+ Me.GunaLabel1 = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaButton1 = New Guna.UI.WinForms.GunaButton()
+ Me.GunaButton2 = New Guna.UI.WinForms.GunaButton()
+ Me.NameTextbox = New Guna.UI.WinForms.GunaTextBox()
+ Me.SuspendLayout()
+ '
+ 'GunaLabel1
+ '
+ Me.GunaLabel1.AutoSize = True
+ Me.GunaLabel1.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.GunaLabel1.ForeColor = System.Drawing.Color.White
+ Me.GunaLabel1.Location = New System.Drawing.Point(12, 19)
+ Me.GunaLabel1.Name = "GunaLabel1"
+ Me.GunaLabel1.Size = New System.Drawing.Size(210, 14)
+ Me.GunaLabel1.TabIndex = 1
+ Me.GunaLabel1.Text = "Enter New Server HOST:PORT..."
+ '
+ 'GunaButton1
+ '
+ Me.GunaButton1.AnimationHoverSpeed = 0.07!
+ Me.GunaButton1.AnimationSpeed = 0.03!
+ Me.GunaButton1.BaseColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton1.BorderColor = System.Drawing.Color.Black
+ Me.GunaButton1.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.GunaButton1.FocusedColor = System.Drawing.Color.Empty
+ Me.GunaButton1.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaButton1.ForeColor = System.Drawing.Color.White
+ Me.GunaButton1.Image = Nothing
+ Me.GunaButton1.ImageAlign = System.Windows.Forms.HorizontalAlignment.Center
+ Me.GunaButton1.ImageSize = New System.Drawing.Size(20, 20)
+ Me.GunaButton1.Location = New System.Drawing.Point(76, 102)
+ Me.GunaButton1.Name = "GunaButton1"
+ Me.GunaButton1.OnHoverBaseColor = System.Drawing.Color.FromArgb(CType(CType(151, Byte), Integer), CType(CType(143, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton1.OnHoverBorderColor = System.Drawing.Color.Black
+ Me.GunaButton1.OnHoverForeColor = System.Drawing.Color.White
+ Me.GunaButton1.OnHoverImage = Nothing
+ Me.GunaButton1.OnPressedColor = System.Drawing.Color.Black
+ Me.GunaButton1.Size = New System.Drawing.Size(60, 24)
+ Me.GunaButton1.TabIndex = 2
+ Me.GunaButton1.Text = "OK"
+ Me.GunaButton1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
+ '
+ 'GunaButton2
+ '
+ Me.GunaButton2.AnimationHoverSpeed = 0.07!
+ Me.GunaButton2.AnimationSpeed = 0.03!
+ Me.GunaButton2.BaseColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton2.BorderColor = System.Drawing.Color.Black
+ Me.GunaButton2.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.GunaButton2.FocusedColor = System.Drawing.Color.Empty
+ Me.GunaButton2.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaButton2.ForeColor = System.Drawing.Color.White
+ Me.GunaButton2.Image = Nothing
+ Me.GunaButton2.ImageAlign = System.Windows.Forms.HorizontalAlignment.Center
+ Me.GunaButton2.ImageSize = New System.Drawing.Size(20, 20)
+ Me.GunaButton2.Location = New System.Drawing.Point(162, 102)
+ Me.GunaButton2.Name = "GunaButton2"
+ Me.GunaButton2.OnHoverBaseColor = System.Drawing.Color.FromArgb(CType(CType(151, Byte), Integer), CType(CType(143, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.GunaButton2.OnHoverBorderColor = System.Drawing.Color.Black
+ Me.GunaButton2.OnHoverForeColor = System.Drawing.Color.White
+ Me.GunaButton2.OnHoverImage = Nothing
+ Me.GunaButton2.OnPressedColor = System.Drawing.Color.Black
+ Me.GunaButton2.Size = New System.Drawing.Size(60, 24)
+ Me.GunaButton2.TabIndex = 3
+ Me.GunaButton2.Text = "Cancel"
+ Me.GunaButton2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
+ '
+ 'NameTextbox
+ '
+ Me.NameTextbox.BaseColor = System.Drawing.Color.FromArgb(CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer))
+ Me.NameTextbox.BorderColor = System.Drawing.Color.FromArgb(CType(CType(66, Byte), Integer), CType(CType(58, Byte), Integer), CType(CType(170, Byte), Integer))
+ Me.NameTextbox.BorderSize = 1
+ Me.NameTextbox.Cursor = System.Windows.Forms.Cursors.IBeam
+ Me.NameTextbox.FocusedBaseColor = System.Drawing.Color.FromArgb(CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer), CType(CType(14, Byte), Integer))
+ Me.NameTextbox.FocusedBorderColor = System.Drawing.Color.FromArgb(CType(CType(100, Byte), Integer), CType(CType(88, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.NameTextbox.FocusedForeColor = System.Drawing.Color.White
+ Me.NameTextbox.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.NameTextbox.ForeColor = System.Drawing.Color.White
+ Me.NameTextbox.Location = New System.Drawing.Point(39, 49)
+ Me.NameTextbox.MaxLength = 30
+ Me.NameTextbox.Name = "NameTextbox"
+ Me.NameTextbox.PasswordChar = Global.Microsoft.VisualBasic.ChrW(0)
+ Me.NameTextbox.Size = New System.Drawing.Size(238, 26)
+ Me.NameTextbox.TabIndex = 45
+ Me.NameTextbox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
+ '
+ 'AddCustomServer
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(34, Byte), Integer), CType(CType(34, Byte), Integer), CType(CType(34, Byte), Integer))
+ Me.ClientSize = New System.Drawing.Size(319, 138)
+ Me.Controls.Add(Me.NameTextbox)
+ Me.Controls.Add(Me.GunaButton2)
+ Me.Controls.Add(Me.GunaButton1)
+ Me.Controls.Add(Me.GunaLabel1)
+ Me.MaximizeBox = False
+ Me.MinimizeBox = False
+ Me.Name = "AddCustomServer"
+ Me.Opacity = 0.9R
+ Me.ShowIcon = False
+ Me.ShowInTaskbar = False
+ Me.Text = "Add Server"
+ Me.TopMost = True
+ Me.ResumeLayout(False)
+ Me.PerformLayout()
+
+ End Sub
+ Friend WithEvents GunaLabel1 As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaButton1 As Guna.UI.WinForms.GunaButton
+ Friend WithEvents GunaButton2 As Guna.UI.WinForms.GunaButton
+ Friend WithEvents NameTextbox As Guna.UI.WinForms.GunaTextBox
+End Class
diff --git a/HALOCELauncher/Controls/ServerTap/AddCustomServer.resx b/HALOCELauncher/Controls/ServerTap/AddCustomServer.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/AddCustomServer.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/ServerTap/AddCustomServer.vb b/HALOCELauncher/Controls/ServerTap/AddCustomServer.vb
new file mode 100644
index 0000000..831c110
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/AddCustomServer.vb
@@ -0,0 +1,58 @@
+Imports HALOCELauncher.Core.GameTracker
+Imports HALOCELauncher.HaloQuery
+Imports HALOCELauncher.Core.SvManager.SvFormatManager
+Imports HALOCELauncher.Core.Helpers
+
+Public Class AddCustomServer
+
+ Private Sub AddCustomServer_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ Me.Location = CenterForm(Form1, Me, Me.Location)
+ If Not My.Computer.Clipboard.ContainsImage() = True Then
+ NameTextbox.Text = My.Computer.Clipboard.GetText()
+ End If
+ End Sub
+
+ Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
+ If Not NameTextbox.Text = "" Then
+ Dim SvTemList As New List(Of ServerType)
+ Dim sv_tem As ServerType = GetCorrectFormat(NameTextbox.Text)
+
+ If CheckDuplicateServerFromXML(sv_tem) = False Then
+
+ SvTemList.Add(sv_tem)
+ Dim ProcesingXML As Boolean = WritteXmlServers(SvTemList)
+ If ProcesingXML = True Then
+ UpdateEx()
+ End If
+
+ End If
+ Me.Close()
+ End If
+ End Sub
+
+ Private Sub UpdateEx()
+ Servers.UpdateFavoriteTable()
+ End Sub
+
+ Private Function GetCorrectFormat(ByVal IpAdd As String) As ServerType
+ Dim sv_tem As New ServerType
+ Try
+ Dim GetINFO As New HaloServerInfo({IpAdd})
+ sv_tem.Name = GetINFO.Hostname
+ sv_tem.Players = GetINFO.PlayersCount & "/" & GetINFO.MaxPlayers
+ sv_tem.Map = GetINFO.MapName
+ Catch ex As Exception
+ sv_tem.Name = "Query Error"
+ sv_tem.Map = "Query Error"
+ sv_tem.Players = "-/-"
+ sv_tem.IPAdress = IpAdd
+ Return sv_tem
+ End Try
+ Return Nothing
+ End Function
+
+ Private Sub GunaButton2_Click(sender As Object, e As EventArgs) Handles GunaButton2.Click
+ Me.Close()
+ End Sub
+
+End Class
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/ServerTap/FavoritiesC.Designer.vb b/HALOCELauncher/Controls/ServerTap/FavoritiesC.Designer.vb
new file mode 100644
index 0000000..00bf383
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/FavoritiesC.Designer.vb
@@ -0,0 +1,169 @@
+ _
+Partial Class FavoritiesC
+ Inherits System.Windows.Forms.UserControl
+
+ 'UserControl overrides dispose to clean up the component list.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ _
+ Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
+ Me.GunaPanel6 = New Guna.UI.WinForms.GunaPanel()
+ Me.Panel1 = New System.Windows.Forms.Panel()
+ Me.LabelTextLog = New Guna.UI.WinForms.GunaLabel()
+ Me.ListView1 = New HALOCELauncher.TransparentListView()
+ Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.GunaVScrollBar1 = New Guna.UI.WinForms.GunaVScrollBar()
+ Me.PanelContainer = New HALOCELauncher.PanelFX()
+ Me.AnimaContextMenuStrip1 = New HALOCELauncher.AnimaContextMenuStrip()
+ Me.RefreshSeverListToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
+ Me.GunaPanel6.SuspendLayout()
+ Me.Panel1.SuspendLayout()
+ Me.AnimaContextMenuStrip1.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'GunaPanel6
+ '
+ Me.GunaPanel6.Controls.Add(Me.Panel1)
+ Me.GunaPanel6.Controls.Add(Me.GunaVScrollBar1)
+ Me.GunaPanel6.Controls.Add(Me.PanelContainer)
+ Me.GunaPanel6.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.GunaPanel6.Location = New System.Drawing.Point(0, 0)
+ Me.GunaPanel6.Name = "GunaPanel6"
+ Me.GunaPanel6.Size = New System.Drawing.Size(785, 330)
+ Me.GunaPanel6.TabIndex = 8
+ '
+ 'Panel1
+ '
+ Me.Panel1.Controls.Add(Me.LabelTextLog)
+ Me.Panel1.Controls.Add(Me.ListView1)
+ Me.Panel1.Dock = System.Windows.Forms.DockStyle.Right
+ Me.Panel1.Location = New System.Drawing.Point(594, 0)
+ Me.Panel1.Name = "Panel1"
+ Me.Panel1.Size = New System.Drawing.Size(191, 330)
+ Me.Panel1.TabIndex = 36
+ '
+ 'LabelTextLog
+ '
+ Me.LabelTextLog.BackColor = System.Drawing.Color.Transparent
+ Me.LabelTextLog.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.LabelTextLog.ForeColor = System.Drawing.Color.White
+ Me.LabelTextLog.Location = New System.Drawing.Point(-3, 117)
+ Me.LabelTextLog.Name = "LabelTextLog"
+ Me.LabelTextLog.Size = New System.Drawing.Size(191, 213)
+ Me.LabelTextLog.TabIndex = 12
+ '
+ 'ListView1
+ '
+ Me.ListView1.BorderStyle = System.Windows.Forms.BorderStyle.None
+ Me.ListView1.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader2})
+ Me.ListView1.ErrorTextColor = System.Drawing.Color.White
+ Me.ListView1.Font = New System.Drawing.Font("Calibri", 11.0!)
+ Me.ListView1.ForeColor = System.Drawing.Color.White
+ Me.ListView1.HighlightColor = System.Drawing.Color.Empty
+ Me.ListView1.Location = New System.Drawing.Point(0, 0)
+ Me.ListView1.Name = "ListView1"
+ Me.ListView1.OwnerDraw = True
+ Me.ListView1.RedrawInterval = 300
+ Me.ListView1.RedrawOnMouseMove = False
+ Me.ListView1.Size = New System.Drawing.Size(188, 114)
+ Me.ListView1.TabIndex = 11
+ Me.ListView1.UseCompatibleStateImageBehavior = False
+ Me.ListView1.View = System.Windows.Forms.View.Details
+ '
+ 'ColumnHeader1
+ '
+ Me.ColumnHeader1.Text = "Player"
+ Me.ColumnHeader1.Width = 115
+ '
+ 'ColumnHeader2
+ '
+ Me.ColumnHeader2.Text = "Score"
+ Me.ColumnHeader2.Width = 53
+ '
+ 'GunaVScrollBar1
+ '
+ Me.GunaVScrollBar1.LargeChange = 10
+ Me.GunaVScrollBar1.Location = New System.Drawing.Point(584, 0)
+ Me.GunaVScrollBar1.Maximum = 100
+ Me.GunaVScrollBar1.Name = "GunaVScrollBar1"
+ Me.GunaVScrollBar1.Radius = 0
+ Me.GunaVScrollBar1.ScrollIdleColor = System.Drawing.Color.Transparent
+ Me.GunaVScrollBar1.Size = New System.Drawing.Size(8, 330)
+ Me.GunaVScrollBar1.TabIndex = 33
+ Me.GunaVScrollBar1.ThumbColor = System.Drawing.Color.White
+ Me.GunaVScrollBar1.ThumbHoverColor = System.Drawing.Color.Gray
+ Me.GunaVScrollBar1.ThumbPressedColor = System.Drawing.Color.Gray
+ '
+ 'PanelContainer
+ '
+ Me.PanelContainer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
+ Me.PanelContainer.ContextMenuStrip = Me.AnimaContextMenuStrip1
+ Me.PanelContainer.Dock = System.Windows.Forms.DockStyle.Left
+ Me.PanelContainer.Location = New System.Drawing.Point(0, 0)
+ Me.PanelContainer.Name = "PanelContainer"
+ Me.PanelContainer.Size = New System.Drawing.Size(607, 330)
+ Me.PanelContainer.TabIndex = 34
+ '
+ 'AnimaContextMenuStrip1
+ '
+ Me.AnimaContextMenuStrip1.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.AnimaContextMenuStrip1.ForeColor = System.Drawing.Color.FromArgb(CType(CType(200, Byte), Integer), CType(CType(200, Byte), Integer), CType(CType(200, Byte), Integer))
+ Me.AnimaContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.RefreshSeverListToolStripMenuItem})
+ Me.AnimaContextMenuStrip1.Name = "AnimaContextMenuStrip1"
+ Me.AnimaContextMenuStrip1.Size = New System.Drawing.Size(166, 26)
+ '
+ 'RefreshSeverListToolStripMenuItem
+ '
+ Me.RefreshSeverListToolStripMenuItem.Name = "RefreshSeverListToolStripMenuItem"
+ Me.RefreshSeverListToolStripMenuItem.Size = New System.Drawing.Size(165, 22)
+ Me.RefreshSeverListToolStripMenuItem.Text = "Refresh Sever List"
+ '
+ 'Timer1
+ '
+ Me.Timer1.Interval = 1
+ '
+ 'FavoritiesC
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer))
+ Me.Controls.Add(Me.GunaPanel6)
+ Me.Name = "FavoritiesC"
+ Me.Size = New System.Drawing.Size(785, 330)
+ Me.GunaPanel6.ResumeLayout(False)
+ Me.Panel1.ResumeLayout(False)
+ Me.AnimaContextMenuStrip1.ResumeLayout(False)
+ Me.ResumeLayout(False)
+
+ End Sub
+ Friend WithEvents GunaPanel6 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents GunaVScrollBar1 As Guna.UI.WinForms.GunaVScrollBar
+ Friend WithEvents PanelContainer As HALOCELauncher.PanelFX
+ Friend WithEvents Panel1 As System.Windows.Forms.Panel
+ Friend WithEvents LabelTextLog As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents ListView1 As HALOCELauncher.TransparentListView
+ Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader
+ Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader
+ Friend WithEvents Timer1 As System.Windows.Forms.Timer
+ Friend WithEvents AnimaContextMenuStrip1 As HALOCELauncher.AnimaContextMenuStrip
+ Friend WithEvents RefreshSeverListToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+
+End Class
diff --git a/HALOCELauncher/Controls/ServerTap/FavoritiesC.resx b/HALOCELauncher/Controls/ServerTap/FavoritiesC.resx
new file mode 100644
index 0000000..b5a8b23
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/FavoritiesC.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 106, 17
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/ServerTap/FavoritiesC.vb b/HALOCELauncher/Controls/ServerTap/FavoritiesC.vb
new file mode 100644
index 0000000..94efd08
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/FavoritiesC.vb
@@ -0,0 +1,317 @@
+Imports HALOCELauncher.Core.GameTracker
+Imports HALOCELauncher.Core.SvManager.SvFormatManager
+Imports HALOCELauncher.Core.Utils.LogFuncs
+Imports HALOCELauncher.HaloQuery
+
+Public Class FavoritiesC
+
+ Public ReadOnly Property ServerCounter As Integer
+ Get
+ Return PanelContainer.Controls.Count
+ End Get
+ End Property
+
+ Private Sub FavoritiesC_Load(sender As Object, e As EventArgs) Handles Me.Load
+ Try : AddHandler Application.ThreadException, AddressOf Application_Exception_Handler _
+ : Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException, False) _
+ : Catch : End Try
+
+ Me.BackColor = Color.FromArgb(40, Color.Black)
+ ShowLoading(True)
+ StartControls()
+ End Sub
+
+ Private Sub Application_Exception_Handler(ByVal sender As Object, ByVal e As System.Threading.ThreadExceptionEventArgs)
+ Dim ex As Exception = CType(e.Exception, Exception)
+ WriteLog(ex.Message, InfoType.Exception)
+ ClearAll()
+ End Sub
+
+ Public Sub ClearAll()
+ CurrentPage = 1
+ ContinueListing = True
+ PanelContainer.Controls.Clear()
+ ShowLoading(True)
+ ItemID = 0
+ ItemsCount = 0
+ Local_X = 0
+ Local_Y = 2
+ End Sub
+
+ Private Sub ShowLoading(ByVal ShowL As Boolean)
+ If ShowL = True Then
+ Dim ControlLoader As New LoadingC
+ ControlLoader.BackColor = Color.Transparent
+ PanelContainer.Controls.Add(ControlLoader)
+ Dim PointX As Integer = (PanelContainer.Width / 2) - (ControlLoader.Width - 90)
+ Dim PointY As Integer = (PanelContainer.Height / 2) - (ControlLoader.Height - 20)
+ ControlLoader.Location = New Point(PointX, PointY)
+ Else
+ For Each childControl In PanelContainer.Controls
+ If TypeOf childControl Is LoadingC Then
+ PanelContainer.Controls.Remove(childControl)
+ Exit Sub
+ End If
+ Next
+ End If
+ End Sub
+
+ Public Sub UpdateAll()
+ ClearAll()
+ If ExistsXmlServer() = True Then
+ ServerStartListing()
+ End If
+ End Sub
+
+ Private Sub StartControls()
+ ScroolBar()
+ If ExistsXmlServer() = True Then
+ ServerStartListing()
+ End If
+ End Sub
+
+ Dim CurrentPage As Integer = 1
+ Dim ContinueListing As Boolean = True
+
+ Private Sub ServerStartListing()
+ Dim tsk As New Task(ServerLister, TaskCreationOptions.LongRunning)
+ tsk.Start()
+ End Sub
+
+ Dim ServerLister As New Action(
+ Sub()
+ If ContinueListing = True Then
+ ContinueListing = False
+ ServerListerSub()
+ End If
+ End Sub)
+
+ Private Sub ServerListerSub()
+ On Error Resume Next
+
+ Dim ResultDic As List(Of ServerType) = ReadXmlServers()
+
+ For Each Result As ServerType In ResultDic
+
+ Me.BeginInvoke(Sub()
+ ListServers(Result)
+ End Sub)
+ CurrentPage += 1
+ Next
+ ContinueListing = True
+ Me.BeginInvoke(Sub()
+ RedrawList()
+ End Sub)
+
+ ShowLoading(False)
+ End Sub
+
+ Dim ItemID As Integer = 0
+
+ Dim ItemsCount As Integer = 0
+ Dim Local_X As Integer = 0
+ Dim Local_Y As Integer = 2
+
+ Private Sub ListServers(ByVal ServerInfoEx As ServerType)
+
+ Dim NewItem As New sv_control
+ NewItem.Isfavorites = True
+ NewItem.Name = ItemID
+ NewItem.IPAdress = ServerInfoEx.IPAdress
+ NewItem.Namesv = ServerInfoEx.Name
+ NewItem.Players = ServerInfoEx.Players
+ NewItem.Map = ServerInfoEx.Map
+ PanelContainer.Controls.Add(NewItem)
+
+ For Each ControlAdd As Control In NewItem.Controls
+ AddHandler ControlAdd.Click, AddressOf UserControl11_Click
+ Next
+
+ NewItem.Location = New Point(Local_X, Local_Y)
+ ItemID += 1
+ ItemsCount += 1
+
+ If ItemsCount = 1 Then
+ Local_X = 0
+ Local_Y += 30
+ ItemsCount = 0
+ End If
+
+ End Sub
+
+ Private Sub RedrawList()
+ ItemID = 0
+ ItemsCount = 0
+ Local_X = 0
+ Local_Y = 2
+
+ If CurrentPage > 2 Then
+ If ContinueListing = True Then
+ Dim LocalListEx As New List(Of sv_control)
+ LocalListEx.Clear()
+ For Each childControl In PanelContainer.Controls
+ If TypeOf childControl Is sv_control Then
+ LocalListEx.Add(childControl)
+ End If
+ Next
+ PanelContainer.Controls.Clear()
+ For Each svC As sv_control In LocalListEx
+ PanelContainer.Controls.Add(svC)
+ svC.Location = New Point(Local_X, Local_Y)
+ ItemID += 1
+ ItemsCount += 1
+ If ItemsCount = 1 Then
+ Local_X = 0
+ Local_Y += 30
+ ItemsCount = 0
+ End If
+ Next
+ End If
+ End If
+ End Sub
+
+#Region " Scrollbar "
+
+ Dim vScrollHelperMain As Guna.UI.Lib.ScrollBar.PanelScrollHelper
+
+ Private Sub ScroolBar()
+ vScrollHelperMain = New Guna.UI.Lib.ScrollBar.PanelScrollHelper(PanelContainer, GunaVScrollBar1, False)
+ vScrollHelperMain.UpdateScrollBar()
+ End Sub
+
+ Private Sub PanelContainer_Resize(sender As Object, e As EventArgs)
+ If vScrollHelperMain IsNot Nothing Then vScrollHelperMain.UpdateScrollBar()
+ End Sub
+
+#End Region
+
+#Region " SvPropertiesLoad "
+
+ Dim _textToDisplay As String = String.Empty
+
+ Private Sub UserControl11_Click(sender As Object, e As EventArgs)
+ _textToDisplay = String.Empty
+ LabelTextLog.Text = ""
+ ListView1.Items.Clear()
+ For Each childControl In PanelContainer.Controls
+ If TypeOf childControl Is sv_control Then
+ Dim GetBackgroung As Boolean = childControl.IsSelectedSv()
+ If GetBackgroung = True Then
+
+ Try
+ Dim GetINFO As New HaloServerInfo({childControl.IPAdress.ToString})
+
+ For i As Integer = 0 To 2
+ If GetINFO.Ready = True Then
+ Exit For
+ End If
+ i -= 1
+ Next
+
+ childControl.Players = GetINFO.PlayersCount & "/" & GetINFO.MaxPlayers
+ childControl.Map = GetINFO.MapName
+ childControl.UpdateSpecial()
+ _textToDisplay += "----Team Info " & vbNewLine
+ _textToDisplay += " Red : " & GetINFO.RedTeamInfo.Score.ToString & " Blue : " & GetINFO.BlueTeamInfo.Score.ToString & vbNewLine
+
+ _textToDisplay += "----Server Info " & vbNewLine
+ _textToDisplay += " Version : " & GetINFO.GameVersion.ToString & vbNewLine & " Mode : " & GetINFO.Gamemode.ToString & vbNewLine
+ _textToDisplay += " Classic : " & GetINFO.GameClassic.ToString & " Type : " & GetINFO.GameType.ToString & vbNewLine
+ _textToDisplay += " Dedicated : " & CBool(GetINFO.Dedicated).ToString & vbNewLine
+ _textToDisplay += " Variant : " & GetINFO.GameVariant & vbNewLine
+ _textToDisplay += " Query ID : " & GetINFO.QueryID.ToString & " SAPP : " & GetINFO.SAPPC.ToString & vbNewLine
+ _textToDisplay += " Next [Map] : " & GetINFO.NextMap.ToString & vbNewLine & " [Mode] : " & GetINFO.NextMode.ToString & vbNewLine
+
+ StartInfoProperties()
+
+ ' Dim LineCount As String() = _textToDisplay.Split(vbNewLine)
+
+ ' For Each LineEx As String In LineCount
+ ' ListBox1.Items.Add(LineEx)
+ ' Next
+
+ Dim x As Integer = 0
+
+ For Each PlayerA As Player In GetINFO.PlayersList
+ ListView1.Items.Add(PlayerA.Name)
+ ListView1.Items(x).SubItems.Add(PlayerA.Score)
+ ListView1.Items(x).ForeColor = PlayerA.Team.TeamColor
+ x += 1
+ Next
+ Catch ex As Exception
+ _textToDisplay += "Query Error, Please try later!" & vbNewLine
+ _textToDisplay += "" & vbNewLine
+ _textToDisplay += ex.Message
+ StartInfoProperties()
+ End Try
+
+ End If
+ End If
+ Next
+ End Sub
+
+
+ Private _Showing As String = ""
+ Private _avrchar As Integer = 0
+ Private _AwaitTIme As Integer = 0
+ Private _MaxAwaitTIme As Integer = 0
+ Private ContinueAwait As Boolean = True
+
+ Private Sub StartInfoProperties()
+ _avrchar = 0
+ _AwaitTIme = 0
+ _MaxAwaitTIme = 100
+ ContinueAwait = True
+ Timer1.Enabled = True
+ End Sub
+
+ Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
+ Try
+ If _AwaitTIme = _MaxAwaitTIme Then
+ ContinueAwait = False
+ If _Showing.Count < _textToDisplay.Count And _Showing.Count > 0 Then
+ _Showing = _textToDisplay.Substring(0, _Showing.Length + 1)
+ ElseIf _Showing.Count < _textToDisplay.Count And _Showing.Count = 0 Then
+ _Showing = _textToDisplay.Substring(0, 1)
+ ElseIf _Showing.Count < _avrchar Then
+ _Showing = " " + _Showing
+ Else
+ _Showing = ""
+ End If
+ LabelTextLog.Text = _Showing
+ If LabelTextLog.Text = _textToDisplay Then
+ Timer1.Enabled = False
+ End If
+ End If
+
+ If ContinueAwait = True Then
+ _AwaitTIme += 1
+ End If
+
+ Catch ex As Exception
+ MsgBox(ex.ToString)
+ End Try
+ End Sub
+
+ Private Function NumberfitCharsInTextBox(tb As TextBox) As Integer
+ Dim avgW As Integer = 0
+ Dim avgH As Integer = 0
+ Dim avg As Size
+ For i As Integer = 65 To 90
+ avg = TextRenderer.MeasureText(CChar(ChrW(i)).ToString(), LabelTextLog.Font)
+ avgH += avg.Height
+ avgW += avg.Width
+ Next
+ Return CInt((((45 * LabelTextLog.Width) / avgW) * ((45 * LabelTextLog.Height) / avgH)))
+ End Function
+
+#End Region
+
+
+
+
+ Private Sub RefreshSeverListToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RefreshSeverListToolStripMenuItem.Click
+ Me.UpdateAll()
+ End Sub
+
+End Class
diff --git a/HALOCELauncher/Controls/ServerTap/InternetC.Designer.vb b/HALOCELauncher/Controls/ServerTap/InternetC.Designer.vb
new file mode 100644
index 0000000..7e33dd5
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/InternetC.Designer.vb
@@ -0,0 +1,171 @@
+ _
+Partial Class InternetC
+ Inherits System.Windows.Forms.UserControl
+
+ 'UserControl overrides dispose to clean up the component list.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ _
+ Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
+ Me.GunaVScrollBar1 = New Guna.UI.WinForms.GunaVScrollBar()
+ Me.GunaPanel6 = New Guna.UI.WinForms.GunaPanel()
+ Me.Panel1 = New System.Windows.Forms.Panel()
+ Me.LabelTextLog = New Guna.UI.WinForms.GunaLabel()
+ Me.ListView1 = New HALOCELauncher.TransparentListView()
+ Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.PanelContainer = New HALOCELauncher.PanelFX()
+ Me.AnimaContextMenuStrip1 = New HALOCELauncher.AnimaContextMenuStrip()
+ Me.RefreshSeverListToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
+ Me.GunaPanel6.SuspendLayout()
+ Me.Panel1.SuspendLayout()
+ Me.AnimaContextMenuStrip1.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'GunaVScrollBar1
+ '
+ Me.GunaVScrollBar1.LargeChange = 10
+ Me.GunaVScrollBar1.Location = New System.Drawing.Point(584, 0)
+ Me.GunaVScrollBar1.Maximum = 100
+ Me.GunaVScrollBar1.Name = "GunaVScrollBar1"
+ Me.GunaVScrollBar1.Radius = 0
+ Me.GunaVScrollBar1.ScrollIdleColor = System.Drawing.Color.Transparent
+ Me.GunaVScrollBar1.Size = New System.Drawing.Size(8, 330)
+ Me.GunaVScrollBar1.TabIndex = 33
+ Me.GunaVScrollBar1.ThumbColor = System.Drawing.Color.White
+ Me.GunaVScrollBar1.ThumbHoverColor = System.Drawing.Color.Gray
+ Me.GunaVScrollBar1.ThumbPressedColor = System.Drawing.Color.Gray
+ '
+ 'GunaPanel6
+ '
+ Me.GunaPanel6.Controls.Add(Me.Panel1)
+ Me.GunaPanel6.Controls.Add(Me.GunaVScrollBar1)
+ Me.GunaPanel6.Controls.Add(Me.PanelContainer)
+ Me.GunaPanel6.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.GunaPanel6.Location = New System.Drawing.Point(0, 0)
+ Me.GunaPanel6.Name = "GunaPanel6"
+ Me.GunaPanel6.Size = New System.Drawing.Size(785, 330)
+ Me.GunaPanel6.TabIndex = 9
+ '
+ 'Panel1
+ '
+ Me.Panel1.Controls.Add(Me.LabelTextLog)
+ Me.Panel1.Controls.Add(Me.ListView1)
+ Me.Panel1.Dock = System.Windows.Forms.DockStyle.Right
+ Me.Panel1.Location = New System.Drawing.Point(594, 0)
+ Me.Panel1.Name = "Panel1"
+ Me.Panel1.Size = New System.Drawing.Size(191, 330)
+ Me.Panel1.TabIndex = 35
+ '
+ 'LabelTextLog
+ '
+ Me.LabelTextLog.BackColor = System.Drawing.Color.Transparent
+ Me.LabelTextLog.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.LabelTextLog.ForeColor = System.Drawing.Color.White
+ Me.LabelTextLog.Location = New System.Drawing.Point(-3, 117)
+ Me.LabelTextLog.Name = "LabelTextLog"
+ Me.LabelTextLog.Size = New System.Drawing.Size(191, 213)
+ Me.LabelTextLog.TabIndex = 12
+ '
+ 'ListView1
+ '
+ Me.ListView1.BorderStyle = System.Windows.Forms.BorderStyle.None
+ Me.ListView1.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader2})
+ Me.ListView1.ErrorTextColor = System.Drawing.Color.White
+ Me.ListView1.Font = New System.Drawing.Font("Calibri", 11.0!)
+ Me.ListView1.ForeColor = System.Drawing.Color.White
+ Me.ListView1.HighlightColor = System.Drawing.Color.Empty
+ Me.ListView1.Location = New System.Drawing.Point(0, 0)
+ Me.ListView1.Name = "ListView1"
+ Me.ListView1.OwnerDraw = True
+ Me.ListView1.RedrawInterval = 300
+ Me.ListView1.RedrawOnMouseMove = False
+ Me.ListView1.Size = New System.Drawing.Size(188, 114)
+ Me.ListView1.TabIndex = 11
+ Me.ListView1.UseCompatibleStateImageBehavior = False
+ Me.ListView1.View = System.Windows.Forms.View.Details
+ '
+ 'ColumnHeader1
+ '
+ Me.ColumnHeader1.Text = "Player"
+ Me.ColumnHeader1.Width = 115
+ '
+ 'ColumnHeader2
+ '
+ Me.ColumnHeader2.Text = "Score"
+ Me.ColumnHeader2.Width = 53
+ '
+ 'PanelContainer
+ '
+ Me.PanelContainer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
+ Me.PanelContainer.BackColor = System.Drawing.Color.Transparent
+ Me.PanelContainer.ContextMenuStrip = Me.AnimaContextMenuStrip1
+ Me.PanelContainer.Dock = System.Windows.Forms.DockStyle.Left
+ Me.PanelContainer.Location = New System.Drawing.Point(0, 0)
+ Me.PanelContainer.Name = "PanelContainer"
+ Me.PanelContainer.Size = New System.Drawing.Size(607, 330)
+ Me.PanelContainer.TabIndex = 34
+ '
+ 'AnimaContextMenuStrip1
+ '
+ Me.AnimaContextMenuStrip1.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.AnimaContextMenuStrip1.ForeColor = System.Drawing.Color.FromArgb(CType(CType(200, Byte), Integer), CType(CType(200, Byte), Integer), CType(CType(200, Byte), Integer))
+ Me.AnimaContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.RefreshSeverListToolStripMenuItem})
+ Me.AnimaContextMenuStrip1.Name = "AnimaContextMenuStrip1"
+ Me.AnimaContextMenuStrip1.Size = New System.Drawing.Size(166, 26)
+ '
+ 'RefreshSeverListToolStripMenuItem
+ '
+ Me.RefreshSeverListToolStripMenuItem.Name = "RefreshSeverListToolStripMenuItem"
+ Me.RefreshSeverListToolStripMenuItem.Size = New System.Drawing.Size(165, 22)
+ Me.RefreshSeverListToolStripMenuItem.Text = "Refresh Sever List"
+ '
+ 'Timer1
+ '
+ Me.Timer1.Interval = 1
+ '
+ 'InternetC
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
+ Me.BackColor = System.Drawing.Color.Gray
+ Me.Controls.Add(Me.GunaPanel6)
+ Me.Name = "InternetC"
+ Me.Size = New System.Drawing.Size(785, 330)
+ Me.GunaPanel6.ResumeLayout(False)
+ Me.Panel1.ResumeLayout(False)
+ Me.AnimaContextMenuStrip1.ResumeLayout(False)
+ Me.ResumeLayout(False)
+
+ End Sub
+ Friend WithEvents GunaVScrollBar1 As Guna.UI.WinForms.GunaVScrollBar
+ Friend WithEvents PanelContainer As HALOCELauncher.PanelFX
+ Friend WithEvents GunaPanel6 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents Panel1 As System.Windows.Forms.Panel
+ Friend WithEvents ListView1 As HALOCELauncher.TransparentListView
+ Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader
+ Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader
+ Friend WithEvents LabelTextLog As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents Timer1 As System.Windows.Forms.Timer
+ Friend WithEvents AnimaContextMenuStrip1 As HALOCELauncher.AnimaContextMenuStrip
+ Friend WithEvents RefreshSeverListToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+
+End Class
diff --git a/HALOCELauncher/Controls/ServerTap/InternetC.resx b/HALOCELauncher/Controls/ServerTap/InternetC.resx
new file mode 100644
index 0000000..724fcc1
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/InternetC.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 105, 20
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/ServerTap/InternetC.vb b/HALOCELauncher/Controls/ServerTap/InternetC.vb
new file mode 100644
index 0000000..c20b7d4
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/InternetC.vb
@@ -0,0 +1,355 @@
+Imports HALOCELauncher.Core.GameTracker
+Imports HALOCELauncher.Core.Utils.LogFuncs
+Imports HALOCELauncher.HaloQuery
+Imports HALOCELauncher.Core.SvManager.SvFormatManager
+
+Public Class InternetC
+
+ Public ReadOnly Property ServerCounter As Integer
+ Get
+ Return PanelContainer.Controls.Count
+ End Get
+ End Property
+
+ Private Sub InternetC_Load(sender As Object, e As EventArgs) Handles Me.Load
+
+ Try : AddHandler Application.ThreadException, AddressOf Application_Exception_Handler _
+ : Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException, False) _
+ : Catch : End Try
+
+ Me.BackColor = Color.FromArgb(40, Color.Black)
+
+ ShowLoading(True)
+ End Sub
+
+ Private Sub ShowLoading(ByVal ShowL As Boolean)
+ If ShowL = True Then
+ Dim ControlLoader As New LoadingC
+ ControlLoader.BackColor = Color.Transparent
+ PanelContainer.Controls.Add(ControlLoader)
+ Dim PointX As Integer = (PanelContainer.Width / 2) - (ControlLoader.Width - 90)
+ Dim PointY As Integer = (PanelContainer.Height / 2) - (ControlLoader.Height - 20)
+ ControlLoader.Location = New Point(PointX, PointY)
+ Else
+ For Each childControl In PanelContainer.Controls
+ If TypeOf childControl Is LoadingC Then
+ PanelContainer.Controls.Remove(childControl)
+ Exit Sub
+ End If
+ Next
+ End If
+ End Sub
+
+ Private Sub Application_Exception_Handler(ByVal sender As Object, ByVal e As System.Threading.ThreadExceptionEventArgs)
+ Dim ex As Exception = CType(e.Exception, Exception)
+ WriteLog(ex.Message, InfoType.Exception)
+ ClearAll()
+ End Sub
+
+ Public Sub ClearAll()
+ PanelContainer.Controls.Clear()
+ CurrentPage = 1
+ ContinueListing = True
+ ShowLoading(True)
+ ItemID = 0
+ ItemsCount = 0
+ Local_X = 0
+ Local_Y = 2
+ End Sub
+
+ Public Sub UpdateAll()
+ ClearAll()
+ ServerStartListing()
+ End Sub
+
+ Public Sub StartControls()
+ ScroolBar()
+ ServerStartListing()
+ End Sub
+
+ Dim CurrentPage As Integer = 1
+ Dim ContinueListing As Boolean = True
+
+ Private Sub ServerStartListing()
+ Dim tsk As New Task(ServerLister, TaskCreationOptions.LongRunning)
+ tsk.Start()
+ End Sub
+
+ Dim ServerLister As New Action(
+ Sub()
+ For I As Integer = 0 To 50
+
+ Next
+ If ContinueListing = True Then
+ ContinueListing = False
+ ServerListerSub()
+ End If
+ End Sub)
+
+ Private Sub ServerListerSub()
+ On Error Resume Next
+
+ Dim EstartC As New GTAPI
+ Dim ResultDic As List(Of ServerType) = EstartC.GetServerList(GenerateUrl(CurrentPage))
+
+ For Each Result As ServerType In ResultDic
+
+ Me.BeginInvoke(Sub()
+ ListServers(Result)
+ End Sub)
+ CurrentPage += 1
+ Next
+
+ ContinueListing = True
+
+ Me.BeginInvoke(Sub()
+ RedrawList()
+ End Sub)
+
+ ShowLoading(False)
+ End Sub
+
+ Private Function GenerateUrl(ByVal Page As Integer) As String
+ If Page = 1 Then
+ Return "https://www.gametracker.com/search/halo/#search"
+ Else
+ Return "https://www.gametracker.com/search/halo/?searchpge=" & Page.ToString & "#search"
+ End If
+ End Function
+
+ Dim ItemID As Integer = 0
+
+ Dim ItemsCount As Integer = 0
+ Dim Local_X As Integer = 0
+ Dim Local_Y As Integer = 2
+
+ Private Sub ListServers(ByVal ServerInfoEx As ServerType)
+
+ Dim NewItem As New sv_control
+ NewItem.Isfavorites = False
+ NewItem.Name = ItemID
+ NewItem.IPAdress = ServerInfoEx.IPAdress
+ NewItem.Namesv = ServerInfoEx.Name
+ NewItem.Players = ServerInfoEx.Players
+ NewItem.Map = ServerInfoEx.Map
+ PanelContainer.Controls.Add(NewItem)
+
+ For Each ControlAdd As Control In NewItem.Controls
+ AddHandler ControlAdd.Click, AddressOf UserControl11_Click
+ Next
+
+
+ NewItem.Location = New Point(Local_X, Local_Y)
+
+ ItemID += 1
+ ItemsCount += 1
+ If ItemsCount = 1 Then
+ Local_X = 0
+ Local_Y += 30
+ ItemsCount = 0
+ End If
+
+ End Sub
+
+ Private Sub RedrawList()
+ ItemID = 0
+ ItemsCount = 0
+ Local_X = 0
+ Local_Y = 2
+
+ If CurrentPage > 2 Then
+ If ContinueListing = True Then
+ Dim LocalListEx As New List(Of sv_control)
+ LocalListEx.Clear()
+ For Each childControl In PanelContainer.Controls
+ If TypeOf childControl Is sv_control Then
+ LocalListEx.Add(childControl)
+ End If
+ Next
+ PanelContainer.Controls.Clear()
+ For Each svC As sv_control In LocalListEx
+ PanelContainer.Controls.Add(svC)
+ svC.Location = New Point(Local_X, Local_Y)
+ ItemID += 1
+ ItemsCount += 1
+ If ItemsCount = 1 Then
+ Local_X = 0
+ Local_Y += 30
+ ItemsCount = 0
+ End If
+ Next
+ End If
+ End If
+ End Sub
+
+
+#Region " Scrollbar "
+
+ Dim vScrollHelperMain As Guna.UI.Lib.ScrollBar.PanelScrollHelper
+
+ Private Sub ScroolBar()
+ vScrollHelperMain = New Guna.UI.Lib.ScrollBar.PanelScrollHelper(PanelContainer, GunaVScrollBar1, False)
+ vScrollHelperMain.UpdateScrollBar()
+ End Sub
+
+ Private Sub PanelContainer_Resize(sender As Object, e As EventArgs)
+ If vScrollHelperMain IsNot Nothing Then vScrollHelperMain.UpdateScrollBar()
+ End Sub
+
+#End Region
+
+ Private Sub GunaVScrollBar1_Scroll(sender As Object, e As ScrollEventArgs) Handles GunaVScrollBar1.Scroll
+ Dim CurrentValue As Integer = GunaVScrollBar1.Value
+ Dim CurrentMax As Integer = GunaVScrollBar1.Maximum
+ Dim Porcentage As Integer = (CurrentValue * 100) / CurrentMax
+ If Porcentage > 90 Then
+ ServerStartListing()
+ End If
+ End Sub
+
+ Dim _textToDisplay As String = String.Empty
+
+ Private Sub UserControl11_Click(sender As Object, e As EventArgs)
+ _textToDisplay = String.Empty
+ LabelTextLog.Text = ""
+ ListView1.Items.Clear()
+ For Each childControl In PanelContainer.Controls
+ If TypeOf childControl Is sv_control Then
+ Dim GetBackgroung As Boolean = childControl.IsSelectedSv()
+ If GetBackgroung = True Then
+
+ Try
+ Dim GetINFO As New HaloServerInfo({childControl.IPAdress.ToString})
+
+ For i As Integer = 0 To 2
+ If GetINFO.Ready = True Then
+ Exit For
+ End If
+ i -= 1
+ Next
+
+ childControl.Players = GetINFO.PlayersCount & "/" & GetINFO.MaxPlayers
+ childControl.Map = GetINFO.MapName
+ childControl.UpdateSpecial()
+
+ _textToDisplay += "----Team Score " & vbNewLine
+ _textToDisplay += " Red : " & GetINFO.RedTeamInfo.Score.ToString & " Blue : " & GetINFO.BlueTeamInfo.Score.ToString & vbNewLine
+
+ _textToDisplay += "----Server Info " & vbNewLine
+ _textToDisplay += " Version : " & GetINFO.GameVersion.ToString & vbNewLine & " Mode : " & GetINFO.Gamemode.ToString & vbNewLine
+ _textToDisplay += " Classic : " & GetINFO.GameClassic.ToString & " Type : " & GetINFO.GameType.ToString & vbNewLine
+ _textToDisplay += " Dedicated : " & CBool(GetINFO.Dedicated).ToString & vbNewLine
+ _textToDisplay += " Variant : " & GetINFO.GameVariant & vbNewLine
+ _textToDisplay += " Query ID : " & GetINFO.QueryID.ToString & " SAPP : " & GetINFO.SAPPC.ToString & vbNewLine
+ _textToDisplay += " Next [Map] : " & GetINFO.NextMap.ToString & vbNewLine & " [Mode] : " & GetINFO.NextMode.ToString & vbNewLine
+
+ StartInfoProperties()
+
+ ' Dim LineCount As String() = _textToDisplay.Split(vbNewLine)
+
+ ' For Each LineEx As String In LineCount
+ ' ListBox1.Items.Add(LineEx)
+ ' Next
+
+ Dim x As Integer = 0
+
+ For Each PlayerA As Player In GetINFO.PlayersList
+ ListView1.Items.Add(PlayerA.Name)
+ ListView1.Items(x).SubItems.Add(PlayerA.Score)
+ ListView1.Items(x).ForeColor = PlayerA.Team.TeamColor
+ x += 1
+ Next
+ Catch ex As Exception
+ _textToDisplay += "Query Error, Please try later!" & vbNewLine
+ _textToDisplay += "" & vbNewLine
+ _textToDisplay += ex.Message
+ StartInfoProperties()
+ End Try
+
+ End If
+ End If
+ Next
+ End Sub
+
+
+ Private _Showing As String = ""
+ Private _avrchar As Integer = 0
+ Private _AwaitTIme As Integer = 0
+ Private _MaxAwaitTIme As Integer = 0
+ Private ContinueAwait As Boolean = True
+
+ Private Sub StartInfoProperties()
+ _avrchar = 0
+ _AwaitTIme = 0
+ _MaxAwaitTIme = 100
+ ContinueAwait = True
+ Timer1.Enabled = True
+ End Sub
+
+ Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
+ Try
+ If _AwaitTIme = _MaxAwaitTIme Then
+ ContinueAwait = False
+ If _Showing.Count < _textToDisplay.Count And _Showing.Count > 0 Then
+ _Showing = _textToDisplay.Substring(0, _Showing.Length + 1)
+ ElseIf _Showing.Count < _textToDisplay.Count And _Showing.Count = 0 Then
+ _Showing = _textToDisplay.Substring(0, 1)
+ ElseIf _Showing.Count < _avrchar Then
+ _Showing = " " + _Showing
+ Else
+ _Showing = ""
+ End If
+ LabelTextLog.Text = _Showing
+ If LabelTextLog.Text = _textToDisplay Then
+ Timer1.Enabled = False
+ End If
+ End If
+
+ If ContinueAwait = True Then
+ _AwaitTIme += 1
+ End If
+
+ Catch ex As Exception
+ MsgBox(ex.ToString)
+ End Try
+ End Sub
+
+ Private Function NumberfitCharsInTextBox(tb As TextBox) As Integer
+ Dim avgW As Integer = 0
+ Dim avgH As Integer = 0
+ Dim avg As Size
+ For i As Integer = 65 To 90
+ avg = TextRenderer.MeasureText(CChar(ChrW(i)).ToString(), LabelTextLog.Font)
+ avgH += avg.Height
+ avgW += avg.Width
+ Next
+ Return CInt((((45 * LabelTextLog.Width) / avgW) * ((45 * LabelTextLog.Height) / avgH)))
+ End Function
+
+#Region " Write all to favorites "
+
+ Public Function WriteAllServerTofavorites() As Boolean
+ Dim SvTemList As New List(Of ServerType)
+ SvTemList.Clear()
+ For Each childControl In PanelContainer.Controls
+ If TypeOf childControl Is sv_control Then
+ Dim sv_tem As New ServerType With {.Name = childControl.Namesv, .IPAdress = childControl.IPAdress, .Players = childControl.Players, .Map = childControl.Map}
+ If CheckDuplicateServerFromXML(sv_tem) = False Then
+ SvTemList.Add(sv_tem)
+ End If
+ End If
+ Next
+ Dim ProcesingXML As Boolean = WritteXmlServers(SvTemList)
+ If ProcesingXML = True Then
+ Servers.UpdateFavoriteTable()
+ End If
+ Return ProcesingXML
+ End Function
+
+
+#End Region
+
+ Private Sub RefreshSeverListToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RefreshSeverListToolStripMenuItem.Click
+ UpdateAll()
+ End Sub
+End Class
diff --git a/HALOCELauncher/Controls/ServerTap/LoadingC.Designer.vb b/HALOCELauncher/Controls/ServerTap/LoadingC.Designer.vb
new file mode 100644
index 0000000..24d0fdb
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/LoadingC.Designer.vb
@@ -0,0 +1,95 @@
+ _
+Partial Class LoadingC
+ Inherits System.Windows.Forms.UserControl
+
+ 'UserControl overrides dispose to clean up the component list.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ _
+ Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
+ Me.GunaPanel1 = New Guna.UI.WinForms.GunaPanel()
+ Me.Panel1 = New System.Windows.Forms.Panel()
+ Me.Progress = New System.Windows.Forms.Panel()
+ Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
+ Me.AnimaProgressBar1 = New HALOCELauncher.AnimaProgressBar()
+ Me.GunaPanel1.SuspendLayout()
+ Me.Panel1.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'GunaPanel1
+ '
+ Me.GunaPanel1.BackColor = System.Drawing.Color.Transparent
+ Me.GunaPanel1.Controls.Add(Me.Panel1)
+ Me.GunaPanel1.Controls.Add(Me.AnimaProgressBar1)
+ Me.GunaPanel1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.GunaPanel1.Location = New System.Drawing.Point(0, 0)
+ Me.GunaPanel1.Name = "GunaPanel1"
+ Me.GunaPanel1.Size = New System.Drawing.Size(263, 67)
+ Me.GunaPanel1.TabIndex = 0
+ '
+ 'Panel1
+ '
+ Me.Panel1.BackColor = System.Drawing.Color.Transparent
+ Me.Panel1.Controls.Add(Me.Progress)
+ Me.Panel1.Location = New System.Drawing.Point(26, 25)
+ Me.Panel1.Name = "Panel1"
+ Me.Panel1.Size = New System.Drawing.Size(206, 15)
+ Me.Panel1.TabIndex = 1
+ '
+ 'Progress
+ '
+ Me.Progress.Location = New System.Drawing.Point(0, 0)
+ Me.Progress.Name = "Progress"
+ Me.Progress.Size = New System.Drawing.Size(11, 14)
+ Me.Progress.TabIndex = 0
+ '
+ 'Timer1
+ '
+ Me.Timer1.Enabled = True
+ Me.Timer1.Interval = 1
+ '
+ 'AnimaProgressBar1
+ '
+ Me.AnimaProgressBar1.BorderColors = System.Drawing.Color.SpringGreen
+ Me.AnimaProgressBar1.Location = New System.Drawing.Point(25, 23)
+ Me.AnimaProgressBar1.Name = "AnimaProgressBar1"
+ Me.AnimaProgressBar1.Size = New System.Drawing.Size(208, 18)
+ Me.AnimaProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous
+ Me.AnimaProgressBar1.TabIndex = 0
+ '
+ 'LoadingC
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer))
+ Me.Controls.Add(Me.GunaPanel1)
+ Me.Name = "LoadingC"
+ Me.Size = New System.Drawing.Size(263, 67)
+ Me.GunaPanel1.ResumeLayout(False)
+ Me.Panel1.ResumeLayout(False)
+ Me.ResumeLayout(False)
+
+ End Sub
+ Friend WithEvents GunaPanel1 As Guna.UI.WinForms.GunaPanel
+ Friend WithEvents Panel1 As System.Windows.Forms.Panel
+ Friend WithEvents Progress As System.Windows.Forms.Panel
+ Friend WithEvents AnimaProgressBar1 As HALOCELauncher.AnimaProgressBar
+ Friend WithEvents Timer1 As System.Windows.Forms.Timer
+
+End Class
diff --git a/HALOCELauncher/Controls/ServerTap/LoadingC.resx b/HALOCELauncher/Controls/ServerTap/LoadingC.resx
new file mode 100644
index 0000000..d0d99f4
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/LoadingC.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/ServerTap/LoadingC.vb b/HALOCELauncher/Controls/ServerTap/LoadingC.vb
new file mode 100644
index 0000000..179bb0f
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/LoadingC.vb
@@ -0,0 +1,40 @@
+Public Class LoadingC
+
+ Dim Retorn As Boolean = False
+ Dim Xmove As Integer = 0
+ Dim Pcolor As Integer = 0
+ Dim ColorRetorn As Boolean = False
+
+ Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
+
+ If ColorRetorn = False Then
+ Pcolor += 1
+ Progress.BackColor = Color.FromArgb(Pcolor, Pcolor, Pcolor)
+ If Pcolor = 255 Then
+ ColorRetorn = True
+ End If
+ ElseIf ColorRetorn = True Then
+ Pcolor -= 1
+ Progress.BackColor = Color.FromArgb(Pcolor, Pcolor, Pcolor)
+ If Pcolor = 0 Then
+ ColorRetorn = False
+ End If
+ End If
+
+ If Retorn = False Then
+ Xmove += 1
+ Progress.Location = New Point(Xmove, 0)
+ If Xmove = 195 Then
+ Retorn = True
+ End If
+ ElseIf Retorn = True Then
+ Xmove -= 1
+ Progress.Location = New Point(Xmove, 0)
+ If Xmove = 0 Then
+ Retorn = False
+ End If
+ End If
+
+ End Sub
+
+End Class
diff --git a/HALOCELauncher/Controls/ServerTap/sv_control.Designer.vb b/HALOCELauncher/Controls/ServerTap/sv_control.Designer.vb
new file mode 100644
index 0000000..8164573
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/sv_control.Designer.vb
@@ -0,0 +1,278 @@
+ _
+Partial Class sv_control
+ Inherits System.Windows.Forms.UserControl
+
+ 'UserControl overrides dispose to clean up the component list.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ _
+ Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
+ Me.GunaElipse1 = New Guna.UI.WinForms.GunaElipse(Me.components)
+ Me.HostNamelbl = New Guna.UI.WinForms.GunaLabel()
+ Me.AnimaContextMenuStrip1 = New HALOCELauncher.AnimaContextMenuStrip()
+ Me.ConnectToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.ConnectWithHALOPCToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator()
+ Me.AddToFavoritesToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.AddAllServersToFavoritesToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.DeleteServerToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.RefreshServerToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator()
+ Me.CopyServerInfoToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.CreateAndCopyServerInviteToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.GunaElipse2 = New Guna.UI.WinForms.GunaElipse(Me.components)
+ Me.Playerslbl = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaElipse3 = New Guna.UI.WinForms.GunaElipse(Me.components)
+ Me.Pinglbl = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaElipse4 = New Guna.UI.WinForms.GunaElipse(Me.components)
+ Me.Modelbl = New Guna.UI.WinForms.GunaLabel()
+ Me.Maplbl = New Guna.UI.WinForms.GunaLabel()
+ Me.GunaButton1 = New Guna.UI.WinForms.GunaButton()
+ Me.BackgroundWorker1 = New System.ComponentModel.BackgroundWorker()
+ Me.AnimaContextMenuStrip1.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'GunaElipse1
+ '
+ Me.GunaElipse1.TargetControl = Me.HostNamelbl
+ '
+ 'HostNamelbl
+ '
+ Me.HostNamelbl.AutoSize = True
+ Me.HostNamelbl.BackColor = System.Drawing.Color.Transparent
+ Me.HostNamelbl.ContextMenuStrip = Me.AnimaContextMenuStrip1
+ Me.HostNamelbl.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.HostNamelbl.ForeColor = System.Drawing.Color.White
+ Me.HostNamelbl.Location = New System.Drawing.Point(3, 5)
+ Me.HostNamelbl.Name = "HostNamelbl"
+ Me.HostNamelbl.Size = New System.Drawing.Size(64, 15)
+ Me.HostNamelbl.TabIndex = 1
+ Me.HostNamelbl.Text = "HostName"
+ '
+ 'AnimaContextMenuStrip1
+ '
+ Me.AnimaContextMenuStrip1.BackColor = System.Drawing.Color.White
+ Me.AnimaContextMenuStrip1.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.AnimaContextMenuStrip1.ForeColor = System.Drawing.Color.FromArgb(CType(CType(200, Byte), Integer), CType(CType(200, Byte), Integer), CType(CType(200, Byte), Integer))
+ Me.AnimaContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ConnectToolStripMenuItem, Me.ConnectWithHALOPCToolStripMenuItem, Me.ToolStripSeparator1, Me.AddToFavoritesToolStripMenuItem, Me.AddAllServersToFavoritesToolStripMenuItem, Me.DeleteServerToolStripMenuItem, Me.RefreshServerToolStripMenuItem, Me.ToolStripSeparator2, Me.CopyServerInfoToolStripMenuItem, Me.CreateAndCopyServerInviteToolStripMenuItem})
+ Me.AnimaContextMenuStrip1.Name = "AnimaContextMenuStrip1"
+ Me.AnimaContextMenuStrip1.Size = New System.Drawing.Size(233, 192)
+ '
+ 'ConnectToolStripMenuItem
+ '
+ Me.ConnectToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.ConnectToolStripMenuItem.Name = "ConnectToolStripMenuItem"
+ Me.ConnectToolStripMenuItem.Size = New System.Drawing.Size(232, 22)
+ Me.ConnectToolStripMenuItem.Text = "Connect with HALO CE"
+ '
+ 'ConnectWithHALOPCToolStripMenuItem
+ '
+ Me.ConnectWithHALOPCToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.ConnectWithHALOPCToolStripMenuItem.Name = "ConnectWithHALOPCToolStripMenuItem"
+ Me.ConnectWithHALOPCToolStripMenuItem.Size = New System.Drawing.Size(232, 22)
+ Me.ConnectWithHALOPCToolStripMenuItem.Text = "Connect with HALO PC"
+ '
+ 'ToolStripSeparator1
+ '
+ Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
+ Me.ToolStripSeparator1.Size = New System.Drawing.Size(229, 6)
+ '
+ 'AddToFavoritesToolStripMenuItem
+ '
+ Me.AddToFavoritesToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.AddToFavoritesToolStripMenuItem.Name = "AddToFavoritesToolStripMenuItem"
+ Me.AddToFavoritesToolStripMenuItem.Size = New System.Drawing.Size(232, 22)
+ Me.AddToFavoritesToolStripMenuItem.Text = "Add to Favorites"
+ '
+ 'AddAllServersToFavoritesToolStripMenuItem
+ '
+ Me.AddAllServersToFavoritesToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.AddAllServersToFavoritesToolStripMenuItem.Name = "AddAllServersToFavoritesToolStripMenuItem"
+ Me.AddAllServersToFavoritesToolStripMenuItem.Size = New System.Drawing.Size(232, 22)
+ Me.AddAllServersToFavoritesToolStripMenuItem.Text = "Add All Servers To favorites"
+ '
+ 'DeleteServerToolStripMenuItem
+ '
+ Me.DeleteServerToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.DeleteServerToolStripMenuItem.Name = "DeleteServerToolStripMenuItem"
+ Me.DeleteServerToolStripMenuItem.Size = New System.Drawing.Size(232, 22)
+ Me.DeleteServerToolStripMenuItem.Text = "Delete Server"
+ '
+ 'RefreshServerToolStripMenuItem
+ '
+ Me.RefreshServerToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.RefreshServerToolStripMenuItem.Name = "RefreshServerToolStripMenuItem"
+ Me.RefreshServerToolStripMenuItem.Size = New System.Drawing.Size(232, 22)
+ Me.RefreshServerToolStripMenuItem.Text = "Refresh server"
+ '
+ 'ToolStripSeparator2
+ '
+ Me.ToolStripSeparator2.Name = "ToolStripSeparator2"
+ Me.ToolStripSeparator2.Size = New System.Drawing.Size(229, 6)
+ '
+ 'CopyServerInfoToolStripMenuItem
+ '
+ Me.CopyServerInfoToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.CopyServerInfoToolStripMenuItem.Name = "CopyServerInfoToolStripMenuItem"
+ Me.CopyServerInfoToolStripMenuItem.Size = New System.Drawing.Size(232, 22)
+ Me.CopyServerInfoToolStripMenuItem.Text = "Copy server Info"
+ '
+ 'CreateAndCopyServerInviteToolStripMenuItem
+ '
+ Me.CreateAndCopyServerInviteToolStripMenuItem.ForeColor = System.Drawing.Color.White
+ Me.CreateAndCopyServerInviteToolStripMenuItem.Name = "CreateAndCopyServerInviteToolStripMenuItem"
+ Me.CreateAndCopyServerInviteToolStripMenuItem.Size = New System.Drawing.Size(232, 22)
+ Me.CreateAndCopyServerInviteToolStripMenuItem.Text = "Create and Copy Server Invite "
+ '
+ 'GunaElipse2
+ '
+ Me.GunaElipse2.TargetControl = Me.Playerslbl
+ '
+ 'Playerslbl
+ '
+ Me.Playerslbl.AutoSize = True
+ Me.Playerslbl.BackColor = System.Drawing.Color.Transparent
+ Me.Playerslbl.ContextMenuStrip = Me.AnimaContextMenuStrip1
+ Me.Playerslbl.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.Playerslbl.ForeColor = System.Drawing.Color.White
+ Me.Playerslbl.Location = New System.Drawing.Point(267, 5)
+ Me.Playerslbl.Name = "Playerslbl"
+ Me.Playerslbl.Size = New System.Drawing.Size(44, 15)
+ Me.Playerslbl.TabIndex = 2
+ Me.Playerslbl.Text = "Players"
+ '
+ 'GunaElipse3
+ '
+ Me.GunaElipse3.TargetControl = Me.Pinglbl
+ '
+ 'Pinglbl
+ '
+ Me.Pinglbl.AutoSize = True
+ Me.Pinglbl.BackColor = System.Drawing.Color.Transparent
+ Me.Pinglbl.ContextMenuStrip = Me.AnimaContextMenuStrip1
+ Me.Pinglbl.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.Pinglbl.ForeColor = System.Drawing.Color.White
+ Me.Pinglbl.Location = New System.Drawing.Point(336, 5)
+ Me.Pinglbl.Name = "Pinglbl"
+ Me.Pinglbl.Size = New System.Drawing.Size(29, 15)
+ Me.Pinglbl.TabIndex = 3
+ Me.Pinglbl.Text = "0ms"
+ '
+ 'GunaElipse4
+ '
+ Me.GunaElipse4.TargetControl = Me.Modelbl
+ '
+ 'Modelbl
+ '
+ Me.Modelbl.AutoSize = True
+ Me.Modelbl.BackColor = System.Drawing.Color.Transparent
+ Me.Modelbl.ContextMenuStrip = Me.AnimaContextMenuStrip1
+ Me.Modelbl.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.Modelbl.ForeColor = System.Drawing.Color.White
+ Me.Modelbl.Location = New System.Drawing.Point(497, 5)
+ Me.Modelbl.Name = "Modelbl"
+ Me.Modelbl.Size = New System.Drawing.Size(38, 15)
+ Me.Modelbl.TabIndex = 4
+ Me.Modelbl.Text = "Mode"
+ '
+ 'Maplbl
+ '
+ Me.Maplbl.AutoSize = True
+ Me.Maplbl.BackColor = System.Drawing.Color.Transparent
+ Me.Maplbl.ContextMenuStrip = Me.AnimaContextMenuStrip1
+ Me.Maplbl.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.Maplbl.ForeColor = System.Drawing.Color.White
+ Me.Maplbl.Location = New System.Drawing.Point(396, 5)
+ Me.Maplbl.Name = "Maplbl"
+ Me.Maplbl.Size = New System.Drawing.Size(33, 15)
+ Me.Maplbl.TabIndex = 5
+ Me.Maplbl.Text = "MAP"
+ '
+ 'GunaButton1
+ '
+ Me.GunaButton1.AnimationHoverSpeed = 0.07!
+ Me.GunaButton1.AnimationSpeed = 0.03!
+ Me.GunaButton1.BackColor = System.Drawing.Color.Transparent
+ Me.GunaButton1.BaseColor = System.Drawing.Color.Transparent
+ Me.GunaButton1.BorderColor = System.Drawing.Color.Transparent
+ Me.GunaButton1.BorderSize = 1
+ Me.GunaButton1.ContextMenuStrip = Me.AnimaContextMenuStrip1
+ Me.GunaButton1.DialogResult = System.Windows.Forms.DialogResult.None
+ Me.GunaButton1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.GunaButton1.FocusedColor = System.Drawing.Color.Empty
+ Me.GunaButton1.Font = New System.Drawing.Font("Segoe UI", 9.0!)
+ Me.GunaButton1.ForeColor = System.Drawing.Color.White
+ Me.GunaButton1.Image = Nothing
+ Me.GunaButton1.ImageSize = New System.Drawing.Size(20, 20)
+ Me.GunaButton1.Location = New System.Drawing.Point(0, 0)
+ Me.GunaButton1.Name = "GunaButton1"
+ Me.GunaButton1.OnHoverBaseColor = System.Drawing.Color.Transparent
+ Me.GunaButton1.OnHoverBorderColor = System.Drawing.Color.SpringGreen
+ Me.GunaButton1.OnHoverForeColor = System.Drawing.Color.White
+ Me.GunaButton1.OnHoverImage = Nothing
+ Me.GunaButton1.OnPressedColor = System.Drawing.Color.Black
+ Me.GunaButton1.Radius = 1
+ Me.GunaButton1.Size = New System.Drawing.Size(578, 25)
+ Me.GunaButton1.TabIndex = 0
+ '
+ 'BackgroundWorker1
+ '
+ '
+ 'sv_control
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer))
+ Me.Controls.Add(Me.Maplbl)
+ Me.Controls.Add(Me.Modelbl)
+ Me.Controls.Add(Me.Pinglbl)
+ Me.Controls.Add(Me.Playerslbl)
+ Me.Controls.Add(Me.HostNamelbl)
+ Me.Controls.Add(Me.GunaButton1)
+ Me.Name = "sv_control"
+ Me.Size = New System.Drawing.Size(578, 25)
+ Me.AnimaContextMenuStrip1.ResumeLayout(False)
+ Me.ResumeLayout(False)
+ Me.PerformLayout()
+
+ End Sub
+ Friend WithEvents GunaButton1 As Guna.UI.WinForms.GunaButton
+ Friend WithEvents HostNamelbl As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents Playerslbl As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents Pinglbl As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents Modelbl As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents GunaElipse1 As Guna.UI.WinForms.GunaElipse
+ Friend WithEvents GunaElipse2 As Guna.UI.WinForms.GunaElipse
+ Friend WithEvents GunaElipse3 As Guna.UI.WinForms.GunaElipse
+ Friend WithEvents GunaElipse4 As Guna.UI.WinForms.GunaElipse
+ Friend WithEvents Maplbl As Guna.UI.WinForms.GunaLabel
+ Friend WithEvents AnimaContextMenuStrip1 As HALOCELauncher.AnimaContextMenuStrip
+ Friend WithEvents ConnectToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator
+ Friend WithEvents AddToFavoritesToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents DeleteServerToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents RefreshServerToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents ToolStripSeparator2 As System.Windows.Forms.ToolStripSeparator
+ Friend WithEvents CopyServerInfoToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents AddAllServersToFavoritesToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents CreateAndCopyServerInviteToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents ConnectWithHALOPCToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents BackgroundWorker1 As System.ComponentModel.BackgroundWorker
+
+End Class
diff --git a/HALOCELauncher/Controls/ServerTap/sv_control.resx b/HALOCELauncher/Controls/ServerTap/sv_control.resx
new file mode 100644
index 0000000..5dd2997
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/sv_control.resx
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 489, 17
+
+
+ 135, 17
+
+
+ 253, 17
+
+
+ 371, 17
+
+
+ 681, 17
+
+
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/ServerTap/sv_control.vb b/HALOCELauncher/Controls/ServerTap/sv_control.vb
new file mode 100644
index 0000000..98e3cf9
--- /dev/null
+++ b/HALOCELauncher/Controls/ServerTap/sv_control.vb
@@ -0,0 +1,316 @@
+Imports HALOCELauncher.HaloQuery
+Imports HALOCELauncher.Core.SvManager.SvFormatManager
+Imports HALOCELauncher.Core.GameTracker
+
+Public Class sv_control
+
+#Region " Properties "
+
+ Private _Namesv As String = Nothing
+ Private _IPAdress As String = Nothing
+ Private _Map As String = Nothing
+ Private _ListID As Integer = Nothing
+ Private _Players As String = Nothing
+
+ Public Property Players As String
+ Get
+ Return _Players
+ End Get
+ Set(value As String)
+ _Players = value
+ End Set
+ End Property
+
+ Public Property Map As String
+ Get
+ Return _Map
+ End Get
+ Set(value As String)
+ _Map = value
+ End Set
+ End Property
+
+ Public Property Namesv As String
+ Get
+ Return _Namesv
+ End Get
+ Set(value As String)
+ _Namesv = value
+ End Set
+ End Property
+
+ Public Property IPAdress As String
+ Get
+ Return _IPAdress
+ End Get
+ Set(value As String)
+ _IPAdress = value
+ End Set
+ End Property
+
+ Public Property ListID As Integer
+ Get
+ Return _ListID
+ End Get
+ Set(value As Integer)
+ _ListID = value
+ End Set
+ End Property
+
+ Private Sub UpdateValues()
+ HostNamelbl.Text = _Namesv
+ Playerslbl.Text = _Players
+ Maplbl.Text = _Map
+ Try
+ If Not IPAdress = Nothing Then
+ Dim GetINFO As New HaloServerInfo({IPAdress})
+ Maplbl.Text = GetINFO.MapName
+ Playerslbl.Text = GetINFO.PlayersCount & "/" & GetINFO.MaxPlayers
+ Modelbl.Text = GetINFO.GameType
+ End If
+ Catch ex As Exception
+ Modelbl.Text = "CTF"
+ End Try
+ End Sub
+
+ Public Function IsSelectedSv() As Boolean
+ If Me.BackColor = Color.Transparent Then
+ Return False
+ Else
+ Return True
+ End If
+ End Function
+
+ Public Function IsSelected() As Boolean
+ Return IsMauseInControl
+ End Function
+
+ Private _Isfavorites As Boolean = False
+ Public Property Isfavorites As Boolean
+ Get
+ Return _Isfavorites
+ End Get
+ Set(value As Boolean)
+ _Isfavorites = value
+ End Set
+ End Property
+
+ Public Sub UpdateSpecial()
+ Playerslbl.Text = _Players
+ Maplbl.Text = _Map
+ End Sub
+
+#End Region
+
+ Private Sub UpdateEx()
+ If _Isfavorites = True Then
+ 'Servers.UpdateFavoriteTable()
+ UpdateAe = True
+ End If
+ End Sub
+
+ Private Sub sv_control_Load(sender As Object, e As EventArgs) Handles Me.Load
+ Me.BackColor = Color.Transparent
+ Pinglbl.Text = ""
+ If _Isfavorites = True Then
+ Me.AnimaContextMenuStrip1.Items.Item(2).Visible = False
+ Me.AnimaContextMenuStrip1.Items.Item(3).Visible = False
+ Else
+ Me.AnimaContextMenuStrip1.Items.Item(2).Visible = True
+ Me.AnimaContextMenuStrip1.Items.Item(3).Visible = False
+ End If
+ Me.UpdateValues()
+ HandlesSub()
+ BackgroundWorker1.RunWorkerAsync()
+ End Sub
+
+ Private Sub HandlesSub()
+
+ AddHandler HostNamelbl.MouseHover, AddressOf HandleHover
+ AddHandler HostNamelbl.MouseLeave, AddressOf HandleLeave
+ AddHandler HostNamelbl.Click, AddressOf GunaButton1_Click
+ AddHandler HostNamelbl.MouseDoubleClick, AddressOf HandleDoubleClick
+
+ AddHandler Playerslbl.MouseHover, AddressOf HandleHover
+ AddHandler Playerslbl.MouseLeave, AddressOf HandleLeave
+ AddHandler Playerslbl.Click, AddressOf GunaButton1_Click
+ AddHandler Playerslbl.MouseDoubleClick, AddressOf HandleDoubleClick
+
+ AddHandler Modelbl.MouseHover, AddressOf HandleHover
+ AddHandler Modelbl.MouseLeave, AddressOf HandleLeave
+ AddHandler Modelbl.Click, AddressOf GunaButton1_Click
+ AddHandler Modelbl.MouseDoubleClick, AddressOf HandleDoubleClick
+
+ AddHandler Maplbl.MouseHover, AddressOf HandleHover
+ AddHandler Maplbl.MouseLeave, AddressOf HandleLeave
+ AddHandler Maplbl.Click, AddressOf GunaButton1_Click
+ AddHandler Maplbl.MouseDoubleClick, AddressOf HandleDoubleClick
+
+ AddHandler Pinglbl.MouseHover, AddressOf HandleHover
+ AddHandler Pinglbl.MouseLeave, AddressOf HandleLeave
+ AddHandler Pinglbl.Click, AddressOf GunaButton1_Click
+ AddHandler Pinglbl.MouseDoubleClick, AddressOf HandleDoubleClick
+
+ End Sub
+
+ Private IsMauseInControl As Boolean = False
+ Private Sub HandleHover(sender As Object, e As EventArgs)
+ Me.BackColor = GunaButton1.OnHoverBaseColor
+ Me.GunaButton1.BorderColor = Color.SpringGreen
+ IsMauseInControl = True
+ End Sub
+
+ Private Sub HandleLeave(sender As Object, e As EventArgs)
+ Me.GunaButton1.BorderColor = Color.Transparent
+ Me.BackColor = GunaButton1.OnHoverBaseColor
+ IsMauseInControl = False
+ End Sub
+
+ Private Sub HandleDoubleClick(sender As Object, e As EventArgs)
+ ConnectServer(My.Settings.GameDefect)
+ End Sub
+
+ Private Sub GunaButton1_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles GunaButton1.MouseDoubleClick
+ ConnectServer(My.Settings.GameDefect)
+ End Sub
+
+ Private Sub GunaButton1_MouseHover(sender As Object, e As EventArgs) Handles GunaButton1.MouseHover
+ ' IsMauseInControl = True
+ Me.BackColor = GunaButton1.OnHoverBaseColor
+ End Sub
+
+ Private Sub GunaButton1_MouseLeave(sender As Object, e As EventArgs) Handles GunaButton1.MouseLeave
+ Me.BackColor = Color.Transparent
+ End Sub
+
+ Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
+ ' Servers.GetAllInfo(_IPAdress)
+ Me.BackColor = Color.FromArgb(40, Color.Black)
+ End Sub
+
+
+ Private Sub ConnectServer(ByVal TypeGame As Integer)
+ If TypeGame = 0 Then
+ If My.Settings.GameDirCE = "" Then
+ Else
+ Dim NewLauncher As New Core.Launcher(My.Settings.GameDirCE)
+ NewLauncher.Launch(IPAdress)
+ End If
+ ElseIf TypeGame = 1 Then
+ If My.Settings.GameDirCE = "" Then
+ Else
+ Dim NewLauncher As New Core.Launcher(My.Settings.GameDirPC)
+ NewLauncher.Launch(IPAdress)
+ End If
+ End If
+ End Sub
+
+ Private WithEvents TimerMonitorCheck As New Timer With {.Enabled = True, .Interval = 1}
+
+ Private Sub TimerMonitorCheck_Tick(sender As Object, e As EventArgs)
+ If IsMauseInControl = True Then
+ GunaButton1.BorderColor = Color.SpringGreen
+ Else
+ GunaButton1.BorderColor = Color.Transparent
+ End If
+ If My.Settings.GameDirCE = "" Then
+ Me.AnimaContextMenuStrip1.Items.Item(0).Visible = False
+ End If
+ If My.Settings.GameDirPC = "" Then
+ Me.AnimaContextMenuStrip1.Items.Item(1).Visible = False
+ End If
+ If IsMauseInControl = True Then
+ If Continues = True Then
+ BackgroundWorker1.RunWorkerAsync()
+ Continues = False
+ End If
+
+ Pinglbl.Text = pingms
+ End If
+
+ End Sub
+
+#Region " TapStrip "
+
+ Private Sub ConnectToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ConnectToolStripMenuItem.Click
+ ConnectServer(0)
+ End Sub
+
+ Private Sub ConnectWithHALOPCToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ConnectWithHALOPCToolStripMenuItem.Click
+ ConnectServer(1)
+ End Sub
+
+ Private Sub AddToFavoritesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AddToFavoritesToolStripMenuItem.Click
+ Dim SvTemList As New List(Of ServerType)
+ Dim sv_tem As New ServerType With {.Name = _Namesv, .IPAdress = _IPAdress, .Players = _Players, .Map = _Map}
+
+ If CheckDuplicateServerFromXML(sv_tem) = False Then
+
+ SvTemList.Add(sv_tem)
+ Dim ProcesingXML As Boolean = WritteXmlServers(SvTemList)
+ If ProcesingXML = True Then
+ UpdateEx()
+ End If
+
+ End If
+
+ End Sub
+
+ Private Sub DeleteServerToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DeleteServerToolStripMenuItem.Click
+ Dim sv_tem As New ServerType With {.Name = _Namesv, .IPAdress = _IPAdress, .Players = _Players, .Map = _Map}
+ Dim ProcesingXML As Boolean = DeleteServerFromXML(sv_tem)
+ If ProcesingXML = True Then
+ UpdateEx()
+ End If
+ End Sub
+
+ Private Sub RefreshServerToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RefreshServerToolStripMenuItem.Click
+ UpdateValues()
+ ' Dim sv_tem As New ServerType With {.Name = _Namesv, .IPAdress = _IPAdress, .Players = _Players, .Map = _Map}
+ ' Servers.GetAllInfo(_IPAdress)
+ End Sub
+
+ Private Sub CopyServerInfoToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CopyServerInfoToolStripMenuItem.Click
+ Dim HeaderString As String = "Halo Launcher for CE and PC!" & vbNewLine & "By EternalSoft" & vbNewLine
+ Dim sv_Info_Cop As String = "Hostname : " & _Namesv & vbNewLine & "Ip Adress : " & _IPAdress & vbNewLine & "Players: " & _Players & vbNewLine & "Server Map : " & _Map
+ Clipboard.SetText(HeaderString & sv_Info_Cop)
+ End Sub
+
+
+#End Region
+
+ Private Sub CreateAndCopyServerInviteToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CreateAndCopyServerInviteToolStripMenuItem.Click
+ Clipboard.SetText(Core.Utils.Compression.CompressedData(_IPAdress))
+ End Sub
+
+ Private Sub AddAllServersToFavoritesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AddAllServersToFavoritesToolStripMenuItem.Click
+ Servers.CallWriteAllServerTofavorites()
+ End Sub
+
+
+#Region " PingMSAsync "
+
+ Public pingms As String = String.Empty
+ Public Continues As Boolean = False
+
+ Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
+ On Error Resume Next
+ pingms = Medidorping(_IPAdress)
+ Continues = True
+ End Sub
+
+ Private Function Medidorping(ByVal ip As String) As String
+ Dim sw As New Stopwatch
+ If My.Computer.Network.IsAvailable() Then
+ sw.Start()
+ My.Computer.Network.Ping(ip)
+ sw.Stop()
+ Medidorping = sw.ElapsedMilliseconds & " ms"
+ Else
+ Medidorping = "Error"
+ End If
+ End Function
+
+#End Region
+
+End Class
diff --git a/HALOCELauncher/Controls/ThemeModule.vb b/HALOCELauncher/Controls/ThemeModule.vb
new file mode 100644
index 0000000..ac08432
--- /dev/null
+++ b/HALOCELauncher/Controls/ThemeModule.vb
@@ -0,0 +1,41 @@
+Imports System.Drawing.Drawing2D
+
+Module ThemeModule
+
+ Friend G As Graphics
+
+ Sub New()
+ TextBitmap = New Bitmap(1, 1)
+ TextGraphics = Graphics.FromImage(TextBitmap)
+ End Sub
+
+ Private TextBitmap As Bitmap
+ Private TextGraphics As Graphics
+
+ Friend Function MeasureString(text As String, font As Font) As SizeF
+ Return TextGraphics.MeasureString(text, font)
+ End Function
+
+ Friend Function MeasureString(text As String, font As Font, width As Integer) As SizeF
+ Return TextGraphics.MeasureString(text, font, width, StringFormat.GenericTypographic)
+ End Function
+
+ Private CreateRoundPath As GraphicsPath
+ Private CreateRoundRectangle As Rectangle
+
+ Friend Function CreateRound(ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal slope As Integer) As GraphicsPath
+ CreateRoundRectangle = New Rectangle(x, y, width, height)
+ Return CreateRound(CreateRoundRectangle, slope)
+ End Function
+
+ Friend Function CreateRound(ByVal r As Rectangle, ByVal slope As Integer) As GraphicsPath
+ CreateRoundPath = New GraphicsPath(FillMode.Winding)
+ CreateRoundPath.AddArc(r.X, r.Y, slope, slope, 180.0F, 90.0F)
+ CreateRoundPath.AddArc(r.Right - slope, r.Y, slope, slope, 270.0F, 90.0F)
+ CreateRoundPath.AddArc(r.Right - slope, r.Bottom - slope, slope, slope, 0.0F, 90.0F)
+ CreateRoundPath.AddArc(r.X, r.Bottom - slope, slope, slope, 90.0F, 90.0F)
+ CreateRoundPath.CloseFigure()
+ Return CreateRoundPath
+ End Function
+
+End Module
\ No newline at end of file
diff --git a/HALOCELauncher/Controls/TransparentListView.vb b/HALOCELauncher/Controls/TransparentListView.vb
new file mode 100644
index 0000000..99ab127
--- /dev/null
+++ b/HALOCELauncher/Controls/TransparentListView.vb
@@ -0,0 +1,371 @@
+Imports System.Drawing
+Imports System.Windows.Forms
+
+'********************************************************************************
+'* Created by Predrag Gruevski (obi1kenobi) *
+'* Originally published on VBForums *
+'* 02.01.2010 *
+'* Feel free to use this code for any use you see fit, *
+'* just please do not alter this info box and credit me for the code. *
+'********************************************************************************
+
+Public Class TransparentListView
+ Inherits ListView
+
+#Region " Consts "
+
+ Const CLR_NONE As Integer = -1
+ Const LVM_FIRST As Integer = &H1000
+ Const LVM_GETBKCOLOR As Integer = LVM_FIRST + 0
+ Const LVM_SETBKCOLOR As Integer = LVM_FIRST + 1
+ Const WM_HSCROLL As Integer = &H114
+ Const WM_VSCROLL As Integer = &H115
+ Const SBM_SETSCROLLINFO As Integer = &HE9
+
+#End Region
+
+#Region " APIs "
+
+ Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
+
+#End Region
+
+#Region " Variables "
+
+ Private WithEvents tmr As New Timer
+ Private stp As New Stopwatch
+ Private _redrawOnMouseMove As Boolean
+ Private _interval As Integer = 300
+ Private _highlightColor As Color
+ Private _errorColor As Color
+ Private itemHeight As Integer
+
+#End Region
+
+#Region " Constructors "
+
+ '''
+ ''' Creates a new TransparentListView object.
+ '''
+ '''
+ Public Sub New()
+ Me.OwnerDraw = True
+ Me.DoubleBuffered = True
+ Me.Font = New Font("Calibri", 11, FontStyle.Regular, GraphicsUnit.Point)
+ tmr.Interval = _interval
+ End Sub
+
+#End Region
+
+#Region " Properties "
+
+ '''
+ ''' The color to use when a certain ListViewItem has unresolved issues.
+ '''
+ Public Property ErrorTextColor() As Color
+ Get
+ Return _errorColor
+ End Get
+ Set(ByVal value As Color)
+ _errorColor = value
+ End Set
+ End Property
+
+ '''
+ ''' The color to use when highlighting an item.
+ '''
+ Public Property HighlightColor() As Color
+ Get
+ Return _highlightColor
+ End Get
+ Set(ByVal value As Color)
+ _highlightColor = value
+ End Set
+ End Property
+
+ '''
+ ''' The intervals at which to redraw the control when scrolling. Higher values are reccomended for less powerful CPUs.
+ ''' Decrease this value if experiencing choppy redraws during scrolling. Values below 5-6ms may result in extreme CPU use.
+ '''
+ Public Property RedrawInterval() As Integer
+ Get
+ Return _interval
+ End Get
+ Set(ByVal value As Integer)
+ If value <= 0 Then
+ _interval = 15 '15ms should result in appx. 60 refreshes per second (60Hz) - only when required
+ tmr.Interval = 15
+ Else
+ _interval = value
+ tmr.Interval = value
+ End If
+ End Set
+ End Property
+
+ '''
+ ''' True if the control should be redrawn when the mouse is moved, otherwise False.
+ '''
+ ''' There have been some issues with the Set method, so it's temporarily disabled and has no effect.
+ Public Property RedrawOnMouseMove() As Boolean
+ Get
+ Return _redrawOnMouseMove
+ End Get
+ Set(ByVal value As Boolean)
+ '_redrawOnMouseMove = value
+ End Set
+ End Property
+
+#End Region
+
+#Region " Methods "
+
+#Region " Overriden Methods "
+
+ Protected Overrides Sub OnMouseWheel(ByVal e As System.Windows.Forms.MouseEventArgs)
+ MyBase.OnMouseWheel(e)
+ OnListViewScrolled(EventArgs.Empty)
+ End Sub
+
+ Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
+ If Me.Items.Count > 0 Then
+ Dim clickedItem As ListViewItem = Me.GetItemAt(5, e.Y)
+ If (clickedItem IsNot Nothing) Then
+ clickedItem.Selected = True
+ clickedItem.Focused = True
+ 'Else
+ 'Dim bnd As Integer = Me.Items.Count - 1
+ 'For i As Integer = 0 To bnd
+ ' clickedItem = Me.Items(bnd)
+ ' If clickedItem.Bounds.Contains(5, e.Y) Then
+ ' clickedItem.Selected = True
+ ' clickedItem.Focused = True
+ ' Exit For
+ 'End If
+ ' Next
+ End If
+ End If
+ MyBase.OnMouseUp(e)
+ End Sub
+
+ Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
+ Me.Refresh()
+ MyBase.OnResize(e)
+ End Sub
+
+ _
+ Protected Overrides Sub OnDrawItem(ByVal e As System.Windows.Forms.DrawListViewItemEventArgs)
+
+ If Not (e.State And ListViewItemStates.Selected) = 0 OrElse e.Item.Selected Then
+ Using br As New Drawing.SolidBrush(_highlightColor)
+
+ 'Using br As New Drawing2D.LinearGradientBrush(e.Bounds, Color.FromArgb(200, Color.LightSkyBlue.R, Color.LightSkyBlue.B, Color.LightSkyBlue.G), Color.FromArgb(230, Color.Yellow.R, Color.Yellow.B, Color.Yellow.G), Drawing2D.LinearGradientMode.Vertical)
+ ' Draw the background for a selected item.
+ e.Graphics.FillRectangle(br, e.Bounds)
+ 'e.DrawFocusRectangle() 'Disabled focus rectangle since it was off-center
+ End Using
+ 'Else
+ ' Draw the background for an unselected item.
+ End If
+
+ 'Dim sf As New StringFormat()
+ 'Dim index As Integer
+ 'Dim clr As Color
+ '
+ ' index = SmallImageList.Images.IndexOfKey(e.Item.ImageKey)
+ ' e.Graphics.DrawImage(SmallImageList.Images.Item(index), New Rectangle(e.Bounds.X + 2, e.Bounds.Y + 2, 16, 16))
+ ' Using br As New SolidBrush(clr)
+ ' e.Graphics.DrawString(e.Item.Text, Me.Font, br, New Rectangle(e.Bounds.X + SmallImageList.ImageSize.Width + 4, e.Bounds.Y, e.Bounds.Width - SmallImageList.ImageSize.Width - 4, e.Bounds.Height), sf)
+ ' End Using
+
+ 'If Not DirectCast(e.Item.Tag, Users.FileData).FileExists Then
+ 'Using br2 As New Drawing.SolidBrush(Color.FromArgb(100, 255, 0, 0))
+ ' e.Graphics.FillRectangle(br2, e.Bounds)
+ ' End Using
+ 'End If
+
+ ' Draw the item text for views other than the Details view.
+ If Not Me.View = View.Details Then
+ e.DrawText()
+ End If
+ MyBase.OnDrawItem(e)
+ End Sub
+
+ ' _
+ Protected Overrides Sub OnDrawSubItem(ByVal e As System.Windows.Forms.DrawListViewSubItemEventArgs)
+ 'Dim flags As TextFormatFlags = TextFormatFlags.Left
+
+ Dim sf As New StringFormat()
+ Dim clr As Color
+ Dim index As Integer
+
+ Try
+
+ sf.LineAlignment = StringAlignment.Far
+ ' Store the column text alignment, letting it default
+ ' to Left if it has not been set to Center or Right.
+ Select Case e.Header.TextAlign
+ Case HorizontalAlignment.Center
+ sf.Alignment = StringAlignment.Center
+ Case HorizontalAlignment.Right
+ sf.Alignment = StringAlignment.Far
+ End Select
+
+ e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
+
+ If e.Item.ForeColor <> _errorColor Then
+ clr = Me.ForeColor
+ Else
+ clr = _errorColor
+ End If
+
+ 'Dim lv As ListViewItem = e.Item
+ 'Dim tmp As String
+ '
+ ' For Each t As ListViewItem.ListViewSubItem In e.Item.SubItems
+ ' tmp = t.Text
+ ' Next
+
+ Using br As New SolidBrush(clr)
+ If e.Item.Text = e.SubItem.Text Then
+ If SmallImageList IsNot Nothing Then
+ index = SmallImageList.Images.IndexOfKey(e.Item.ImageKey)
+ If index <> -1 Then
+ e.Graphics.DrawImage(SmallImageList.Images.Item(index), New Rectangle(e.Bounds.X + 2, e.Bounds.Y + 2, 16, 16))
+ e.Graphics.DrawString(e.Item.Text, Me.Font, br, New Rectangle(e.Bounds.X + SmallImageList.ImageSize.Width + 4, e.Bounds.Y, e.Bounds.Width - SmallImageList.ImageSize.Width - 4, e.Bounds.Height), sf)
+ Else
+ e.Graphics.DrawString(e.Item.Text, Me.Font, br, New Rectangle(e.Bounds.X + 4, e.Bounds.Y, e.Bounds.Width - 4, e.Bounds.Height), sf)
+ End If
+ Else
+ e.Graphics.DrawString(e.Item.Text, Me.Font, br, New Rectangle(e.Bounds.X + 4, e.Bounds.Y, e.Bounds.Width - 4, e.Bounds.Height), sf)
+ End If
+ Else
+ 'e.DrawText()
+ e.Graphics.DrawString(e.SubItem.Text, Me.Font, br, e.Bounds, sf)
+ End If
+ End Using
+
+ 'e.DrawText(flags)
+
+ Finally
+ sf.Dispose()
+ End Try
+
+ 'MyBase.OnDrawSubItem(e)
+ End Sub
+
+ _
+ Protected Overrides Sub OnDrawColumnHeader(ByVal e As System.Windows.Forms.DrawListViewColumnHeaderEventArgs)
+ Dim sf As New StringFormat()
+ Try
+
+ ' Store the column text alignment, letting it default
+ ' to Left if it has not been set to Center or Right.
+ sf.LineAlignment = StringAlignment.Center
+ Select Case e.Header.TextAlign
+ Case HorizontalAlignment.Center
+ sf.Alignment = StringAlignment.Center
+ Case HorizontalAlignment.Right
+ sf.Alignment = StringAlignment.Far
+ End Select
+
+ ' Draw the standard header background.
+ e.DrawBackground()
+
+ ' Draw the header text.
+ Dim headerFont As New Font("Microsoft Sans Serif", 8, FontStyle.Regular)
+ Try
+ e.Graphics.DrawString(e.Header.Text, headerFont, _
+ Brushes.Black, e.Bounds, sf)
+ Finally
+ headerFont.Dispose()
+ End Try
+
+ Finally
+ sf.Dispose()
+ End Try
+
+ 'MyBase.OnDrawColumnHeader(e)
+ End Sub
+
+ Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs)
+ If _redrawOnMouseMove Then
+ Dim item As ListViewItem = Me.GetItemAt(e.X, e.Y)
+ If item IsNot Nothing Then 'AndAlso item.Tag Is Nothing Then
+ Me.Invalidate(item.Bounds)
+ 'item.Tag = "tagged"
+ End If
+ End If
+ MyBase.OnMouseMove(e)
+ End Sub
+
+ Protected Overrides Sub OnInvalidated(ByVal e As System.Windows.Forms.InvalidateEventArgs)
+ 'Related to the use of Tag and RedrawOnMouseMove properties.
+
+ 'For Each item As ListViewItem In Me.Items
+ 'If item Is Nothing Then Return
+ 'item.Tag = Nothing
+ 'Next
+ MyBase.OnInvalidated(e)
+ End Sub
+
+ Protected Overrides Sub OnColumnWidthChanged(ByVal e As System.Windows.Forms.ColumnWidthChangedEventArgs)
+ Me.Invalidate()
+ MyBase.OnColumnWidthChanged(e)
+ End Sub
+
+ Protected Overrides Sub OnHandleCreated(ByVal e As System.EventArgs)
+ MyBase.OnHandleCreated(e)
+ SendMessage(Me.Handle.ToInt32, LVM_SETBKCOLOR, 0, CLR_NONE)
+ End Sub
+
+ _
+ Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
+ Select Case m.Msg
+ Case WM_VSCROLL
+ OnListViewScrolled(EventArgs.Empty)
+ Case WM_HSCROLL
+ OnListViewScrolled(EventArgs.Empty)
+ Case SBM_SETSCROLLINFO
+ OnListViewScrolled(EventArgs.Empty)
+ End Select
+ MyBase.WndProc(m)
+ End Sub
+
+#End Region
+
+#Region " Custom Methods "
+
+ Protected Overridable Sub OnListViewScrolled(ByVal e As EventArgs)
+ If stp.IsRunning Then
+ If stp.ElapsedMilliseconds > _interval Then
+ stp = Stopwatch.StartNew
+ Me.Invalidate()
+ End If
+ Else
+ stp.Start()
+ End If
+ tmr.Stop()
+ tmr.Start()
+ RaiseEvent ListViewScrolled(Me, e)
+ End Sub
+
+#End Region
+
+#End Region
+
+#Region " Event Handlers "
+
+ Private Sub tmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmr.Tick
+ Me.Invalidate()
+ tmr.Enabled = False
+ End Sub
+
+#End Region
+
+#Region " Events "
+
+ Public Event ListViewScrolled(ByVal sender As Object, ByVal e As EventArgs)
+
+#End Region
+
+End Class
diff --git a/HALOCELauncher/Core/AntiFlicker/IBufferedControl.vb b/HALOCELauncher/Core/AntiFlicker/IBufferedControl.vb
new file mode 100644
index 0000000..3ea3a00
--- /dev/null
+++ b/HALOCELauncher/Core/AntiFlicker/IBufferedControl.vb
@@ -0,0 +1,147 @@
+' ***********************************************************************
+' Author : Elektro
+' Modified : 20-March-2017
+' ***********************************************************************
+
+#Region " Public Members Summary "
+
+#Region " Properties "
+
+' CreateParams As CreateParams
+' DoubleBuffered As Boolean
+' PreventFlickering As Boolean
+
+#End Region
+
+#End Region
+
+#Region " Option Statements "
+
+Option Strict On
+Option Explicit On
+Option Infer Off
+
+#End Region
+
+#Region " Imports "
+
+Imports System.ComponentModel
+Imports System.Windows.Forms
+
+#End Region
+
+#Region " IBufferedControl "
+
+Namespace Types
+
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' Provides simple double buffering (anti flickering) functionality for a Windows Forms ,
+ ''' such for example a .
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+ Public Interface IBufferedControl
+
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' Gets the required creation parameters when the control handle is created.
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' The creation parameters.
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+
+
+ ReadOnly Property CreateParams As CreateParams
+ ' Implementation Exmple:
+ '
+ ' Protected Overrides ReadOnly Property CreateParams As CreateParams Implements IBufferedControl.CreateParams
+ ' Get
+ ' If (Me.preventFlickeringB) Then
+ ' Dim cp As CreateParams = MyBase.CreateParams
+ ' cp.ExStyle = (cp.ExStyle Or CInt(WindowStylesEx.WS_EX_COMPOSITED))
+ ' Return cp
+ ' Else
+ ' Return MyBase.CreateParams
+ ' End If
+ ' End Get
+ ' End Property
+
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' Gets or sets a value indicating whether this control should redraw its surface using a secondary buffer
+ ''' to reduce or prevent flicker.
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' if the surface of the control should be drawn using double buffering;
+ ''' otherwise, .
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+ Property DoubleBuffered As Boolean
+ ' Implementation Exmple:
+ '
+ ' Public Overridable Shadows Property DoubleBuffered As Boolean Implements IBufferedControl.DoubleBuffered
+ ' Get
+ ' Return MyBase.DoubleBuffered
+ ' End Get
+ ' Set(ByVal value As Boolean)
+ ' Me.SetStyle(ControlStyles.DoubleBuffer, value)
+ ' MyBase.DoubleBuffered = value
+ ' End Set
+ ' End Property
+
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' Gets or sets a value that indicates whether the control should avoid unwanted flickering effects.
+ '''
+ ''' If , this will avoid any flickering effect on the control, however,
+ ''' it will also have a negative impact by slowing down the responsiveness of the control about to 30% slower.
+ '''
+ ''' This negative impact doesn't affect to the performance of the application itself,
+ ''' just to the performance of this control.
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+ '''
+ ''' A value that indicates whether the control should avoid unwanted flickering effects.
+ '''
+ ''' ----------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+ Property PreventFlickering As Boolean
+ ' Implementation Exmple:
+ '
+ ' Public Overridable Property PreventFlickering As Boolean Implements IBufferedControl.PreventFlickering
+ ' Get
+ ' Return Me.preventFlickeringB
+ ' End Get
+ ' Set(ByVal value As Boolean)
+ ' Me.preventFlickeringB = value
+ ' End Set
+ ' End Property
+ ' ''' ----------------------------------------------------------------------------------------------------
+ ' '''
+ ' ''' ( Backing Field )
+ ' ''' A value that indicates whether the control should avoid unwanted flickering effects.
+ ' '''
+ ' ''' ----------------------------------------------------------------------------------------------------
+ ' Private preventFlickeringB As Boolean
+
+ End Interface
+
+End Namespace
+
+#End Region
\ No newline at end of file
diff --git a/HALOCELauncher/Core/AntiFlicker/Win32FX.vb b/HALOCELauncher/Core/AntiFlicker/Win32FX.vb
new file mode 100644
index 0000000..23b59f1
--- /dev/null
+++ b/HALOCELauncher/Core/AntiFlicker/Win32FX.vb
@@ -0,0 +1,151 @@
+Public Class Win32FX
+
+ _
+ Public Enum WindowStylesEx As UInteger
+ ''' Specifies a window that accepts drag-drop files.
+ WS_EX_ACCEPTFILES = &H10
+
+ ''' Forces a top-level window onto the taskbar when the window is visible.
+ WS_EX_APPWINDOW = &H40000
+
+ ''' Specifies a window that has a border with a sunken edge.
+ WS_EX_CLIENTEDGE = &H200
+
+ '''
+ ''' Specifies a window that paints all descendants in bottom-to-top painting order using double-buffering.
+ ''' This cannot be used if the window has a class style of either CS_OWNDC or CS_CLASSDC. This style is not supported in Windows 2000.
+ '''
+ '''
+ ''' With WS_EX_COMPOSITED set, all descendants of a window get bottom-to-top painting order using double-buffering.
+ ''' Bottom-to-top painting order allows a descendent window to have translucency (alpha) and transparency (color-key) effects,
+ ''' but only if the descendent window also has the WS_EX_TRANSPARENT bit set.
+ ''' Double-buffering allows the window and its descendents to be painted without flicker.
+ '''
+ WS_EX_COMPOSITED = &H2000000
+
+ '''
+ ''' Specifies a window that includes a question mark in the title bar. When the user clicks the question mark,
+ ''' the cursor changes to a question mark with a pointer. If the user then clicks a child window, the child receives a WM_HELP message.
+ ''' The child window should pass the message to the parent window procedure, which should call the WinHelp function using the HELP_WM_HELP command.
+ ''' The Help application displays a pop-up window that typically contains help for the child window.
+ ''' WS_EX_CONTEXTHELP cannot be used with the WS_MAXIMIZEBOX or WS_MINIMIZEBOX styles.
+ '''
+ WS_EX_CONTEXTHELP = &H400
+
+ '''
+ ''' Specifies a window which contains child windows that should take part in dialog box navigation.
+ ''' If this style is specified, the dialog manager recurses into children of this window when performing navigation operations
+ ''' such as handling the TAB key, an arrow key, or a keyboard mnemonic.
+ '''
+ WS_EX_CONTROLPARENT = &H10000
+
+ ''' Specifies a window that has a double border.
+ WS_EX_DLGMODALFRAME = &H1
+
+ '''
+ ''' Specifies a window that is a layered window.
+ ''' This cannot be used for child windows or if the window has a class style of either CS_OWNDC or CS_CLASSDC.
+ '''
+ WS_EX_LAYERED = &H80000
+
+ '''
+ ''' Specifies a window with the horizontal origin on the right edge. Increasing horizontal values advance to the left.
+ ''' The shell language must support reading-order alignment for this to take effect.
+ '''
+ WS_EX_LAYOUTRTL = &H400000
+
+ ''' Specifies a window that has generic left-aligned properties. This is the default.
+ WS_EX_LEFT = &H0
+
+ '''
+ ''' Specifies a window with the vertical scroll bar (if present) to the left of the client area.
+ ''' The shell language must support reading-order alignment for this to take effect.
+ '''
+ WS_EX_LEFTSCROLLBAR = &H4000
+
+ '''
+ ''' Specifies a window that displays text using left-to-right reading-order properties. This is the default.
+ '''
+ WS_EX_LTRREADING = &H0
+
+ '''
+ ''' Specifies a multiple-document interface (MDI) child window.
+ '''
+ WS_EX_MDICHILD = &H40
+
+ '''
+ ''' Specifies a top-level window created with this style does not become the foreground window when the user clicks it.
+ ''' The system does not bring this window to the foreground when the user minimizes or closes the foreground window.
+ ''' The window does not appear on the taskbar by default. To force the window to appear on the taskbar, use the WS_EX_APPWINDOW style.
+ ''' To activate the window, use the SetActiveWindow or SetForegroundWindow function.
+ '''
+ WS_EX_NOACTIVATE = &H8000000
+
+ '''
+ ''' Specifies a window which does not pass its window layout to its child windows.
+ '''
+ WS_EX_NOINHERITLAYOUT = &H100000
+
+ '''
+ ''' Specifies that a child window created with this style does not send the WM_PARENTNOTIFY message to its parent window when it is created or destroyed.
+ '''
+ WS_EX_NOPARENTNOTIFY = &H4
+
+ '''
+ ''' The window does not render to a redirection surface.
+ ''' This is for windows that do not have visible content or that use mechanisms other than surfaces to provide their visual.
+ '''
+ WS_EX_NOREDIRECTIONBITMAP = &H200000
+
+ ''' Specifies an overlapped window.
+ WS_EX_OVERLAPPEDWINDOW = WS_EX_WINDOWEDGE Or WS_EX_CLIENTEDGE
+
+ ''' Specifies a palette window, which is a modeless dialog box that presents an array of commands.
+ WS_EX_PALETTEWINDOW = WS_EX_WINDOWEDGE Or WS_EX_TOOLWINDOW Or WS_EX_TOPMOST
+
+ '''
+ ''' Specifies a window that has generic "right-aligned" properties. This depends on the window class.
+ ''' The shell language must support reading-order alignment for this to take effect.
+ ''' Using the WS_EX_RIGHT style has the same effect as using the SS_RIGHT (static), ES_RIGHT (edit), and BS_RIGHT/BS_RIGHTBUTTON (button) control styles.
+ '''
+ WS_EX_RIGHT = &H1000
+
+ ''' Specifies a window with the vertical scroll bar (if present) to the right of the client area. This is the default.
+ WS_EX_RIGHTSCROLLBAR = &H0
+
+ '''
+ ''' Specifies a window that displays text using right-to-left reading-order properties.
+ ''' The shell language must support reading-order alignment for this to take effect.
+ '''
+ WS_EX_RTLREADING = &H2000
+
+ ''' Specifies a window with a three-dimensional border style intended to be used for items that do not accept user input.
+ WS_EX_STATICEDGE = &H20000
+
+ '''
+ ''' Specifies a window that is intended to be used as a floating toolbar.
+ ''' A tool window has a title bar that is shorter than a normal title bar, and the window title is drawn using a smaller font.
+ ''' A tool window does not appear in the taskbar or in the dialog that appears when the user presses ALT+TAB.
+ ''' If a tool window has a system menu, its icon is not displayed on the title bar.
+ ''' However, you can display the system menu by right-clicking or by typing ALT+SPACE.
+ '''
+ WS_EX_TOOLWINDOW = &H80
+
+ '''
+ ''' Specifies a window that should be placed above all non-topmost windows and should stay above them, even when the window is deactivated.
+ ''' To add or remove this style, use the SetWindowPos function.
+ '''
+ WS_EX_TOPMOST = &H8
+
+ '''
+ ''' Specifies a window that should not be painted until siblings beneath the window (that were created by the same thread) have been painted.
+ ''' The window appears transparent because the bits of underlying sibling windows have already been painted.
+ ''' To achieve transparency without these restrictions, use the SetWindowRgn function.
+ '''
+ WS_EX_TRANSPARENT = &H20
+
+ ''' Specifies a window that has a border with a raised edge.
+ WS_EX_WINDOWEDGE = &H100
+ End Enum
+
+End Class
diff --git a/HALOCELauncher/Core/FakeFullScreen/SetWindowState.vb b/HALOCELauncher/Core/FakeFullScreen/SetWindowState.vb
new file mode 100644
index 0000000..9daedc9
--- /dev/null
+++ b/HALOCELauncher/Core/FakeFullScreen/SetWindowState.vb
@@ -0,0 +1,304 @@
+' ***********************************************************************
+' Author : Elektro
+' Last Modified On : 10-02-2014
+' ***********************************************************************
+'
+' Copyright (c) Elektro Studios. All rights reserved.
+'
+' ***********************************************************************
+
+#Region " Usage Examples "
+
+'Dim HWND As IntPtr = Process.GetProcessesByName("devenv").First.MainWindowHandle
+'
+'SetWindowState.SetWindowState(HWND, SetWindowState.WindowState.Hide)
+'SetWindowState.SetWindowState("devenv", SetWindowState.WindowState.Restore, Recursivity:=False)
+
+#End Region
+
+#Region " Imports "
+
+Imports System.Runtime.InteropServices
+
+#End Region
+
+'''
+''' Sets the state of a window.
+'''
+Public NotInheritable Class SetWindowState
+
+#Region " P/Invoke "
+
+ '''
+ ''' Platform Invocation methods (P/Invoke), access unmanaged code.
+ ''' This class does not suppress stack walks for unmanaged code permission.
+ ''' must not be applied to this class.
+ ''' This class is for methods that can be used anywhere because a stack walk will be performed.
+ ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/ms182161.aspx
+ '''
+ Protected NotInheritable Class NativeMethods
+
+#Region " Methods "
+
+ '''
+ ''' Retrieves a handle to the top-level window whose class name and window name match the specified strings.
+ ''' This function does not search child windows.
+ ''' This function does not perform a case-sensitive search.
+ ''' To search child windows, beginning with a specified child window, use the FindWindowEx function.
+ ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx
+ '''
+ ''' The class name.
+ ''' If this parameter is NULL, it finds any window whose title matches the lpWindowName parameter.
+ ''' The window name (the window's title).
+ ''' If this parameter is NULL, all window names match.
+ ''' If the function succeeds, the return value is a handle to the window that has the specified class name and window name.
+ ''' If the function fails, the return value is NULL.
+
+ Friend Shared Function FindWindow(
+ ByVal lpClassName As String,
+ ByVal lpWindowName As String
+ ) As IntPtr
+ End Function
+
+ '''
+ ''' Retrieves a handle to a window whose class name and window name match the specified strings.
+ ''' The function searches child windows, beginning with the one following the specified child window.
+ ''' This function does not perform a case-sensitive search.
+ ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx
+ '''
+ '''
+ ''' A handle to the parent window whose child windows are to be searched.
+ ''' If hwndParent is NULL, the function uses the desktop window as the parent window.
+ ''' The function searches among windows that are child windows of the desktop.
+ '''
+ '''
+ ''' A handle to a child window.
+ ''' The search begins with the next child window in the Z order.
+ ''' The child window must be a direct child window of hwndParent, not just a descendant window.
+ ''' If hwndChildAfter is NULL, the search begins with the first child window of hwndParent.
+ '''
+ '''
+ ''' The window class name.
+ '''
+ '''
+ ''' The window name (the window's title).
+ ''' If this parameter is NULL, all window names match.
+ '''
+ '''
+ ''' If the function succeeds, the return value is a handle to the window that has the specified class and window names.
+ ''' If the function fails, the return value is NULL.
+ '''
+
+ Friend Shared Function FindWindowEx(
+ ByVal hwndParent As IntPtr,
+ ByVal hwndChildAfter As IntPtr,
+ ByVal strClassName As String,
+ ByVal strWindowName As String
+ ) As IntPtr
+ End Function
+
+ '''
+ ''' Retrieves the identifier of the thread that created the specified window
+ ''' and, optionally, the identifier of the process that created the window.
+ ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633522%28v=vs.85%29.aspx
+ '''
+ ''' A handle to the window.
+ '''
+ ''' A pointer to a variable that receives the process identifier.
+ ''' If this parameter is not NULL, GetWindowThreadProcessId copies the identifier of the process to the variable;
+ ''' otherwise, it does not.
+ '''
+ ''' The identifier of the thread that created the window.
+
+ Friend Shared Function GetWindowThreadProcessId(
+ ByVal hWnd As IntPtr,
+ ByRef ProcessId As Integer
+ ) As Integer
+ End Function
+
+ '''
+ ''' Sets the specified window's show state.
+ ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx
+ '''
+ ''' A handle to the window.
+ ''' Controls how the window is to be shown.
+ ''' true if the function succeeds, false otherwise.
+
+ Friend Shared Function ShowWindow(
+ ByVal hwnd As IntPtr,
+ ByVal nCmdShow As WindowState
+ ) As Boolean
+ End Function
+
+#End Region
+
+ End Class
+
+#End Region
+
+#Region " Enumerations "
+
+ '''
+ ''' Controls how the window is to be shown.
+ ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx
+ '''
+ Friend Enum WindowState As Integer
+
+ '''
+ ''' Hides the window and activates another window.
+ '''
+ Hide = 0I
+
+ '''
+ ''' Activates and displays a window.
+ ''' If the window is minimized or maximized, the system restores it to its original size and position.
+ ''' An application should specify this flag when displaying the window for the first time.
+ '''
+ Normal = 1I
+
+ '''
+ ''' Activates the window and displays it as a minimized window.
+ '''
+ ShowMinimized = 2I
+
+ '''
+ ''' Maximizes the specified window.
+ '''
+ Maximize = 3I
+
+ '''
+ ''' Activates the window and displays it as a maximized window.
+ '''
+ ShowMaximized = Maximize
+
+ '''
+ ''' Displays a window in its most recent size and position.
+ ''' This value is similar to , except the window is not actived.
+ '''
+ ShowNoActivate = 4I
+
+ '''
+ ''' Activates the window and displays it in its current size and position.
+ '''
+ Show = 5I
+
+ '''
+ ''' Minimizes the specified window and activates the next top-level window in the Z order.
+ '''
+ Minimize = 6I
+
+ '''
+ ''' Displays the window as a minimized window.
+ ''' This value is similar to , except the window is not activated.
+ '''
+ ShowMinNoActive = 7I
+
+ '''
+ ''' Displays the window in its current size and position.
+ ''' This value is similar to , except the window is not activated.
+ '''
+ ShowNA = 8I
+
+ '''
+ ''' Activates and displays the window.
+ ''' If the window is minimized or maximized, the system restores it to its original size and position.
+ ''' An application should specify this flag when restoring a minimized window.
+ '''
+ Restore = 9I
+
+ '''
+ ''' Sets the show state based on the SW_* value specified in the STARTUPINFO structure
+ ''' passed to the CreateProcess function by the program that started the application.
+ '''
+ ShowDefault = 10I
+
+ '''
+ ''' Windows 2000/XP:
+ ''' Minimizes a window, even if the thread that owns the window is not responding.
+ ''' This flag should only be used when minimizing windows from a different thread.
+ '''
+ ForceMinimize = 11I
+
+ End Enum
+
+#End Region
+
+#Region " Public Methods "
+
+ '''
+ ''' Set the state of a window by an HWND.
+ '''
+ ''' A handle to the window.
+ ''' The state of the window.
+ ''' true if the function succeeds, false otherwise.
+ Friend Shared Function SetWindowState(ByVal WindowHandle As IntPtr,
+ ByVal WindowState As WindowState) As Boolean
+
+ Return NativeMethods.ShowWindow(WindowHandle, WindowState)
+
+ End Function
+
+ '''
+ ''' Set the state of a window by a process name.
+ '''
+ ''' The name of the process.
+ ''' The state of the window.
+ ''' If set to false, only the first process instance will be processed.
+ Friend Shared Sub SetWindowState(ByVal ProcessName As String,
+ ByVal WindowState As WindowState,
+ Optional ByVal Recursivity As Boolean = False)
+
+ If ProcessName.EndsWith(".exe", StringComparison.OrdinalIgnoreCase) Then
+ ProcessName = ProcessName.Remove(ProcessName.Length - ".exe".Length)
+ End If
+
+ Dim pHandle As IntPtr = IntPtr.Zero
+ Dim pID As Integer = 0I
+
+ Dim Processes As Process() = Process.GetProcessesByName(ProcessName)
+
+ ' If any process matching the name is found then...
+ If Processes.Count = 0 Then
+ Exit Sub
+ End If
+
+ For Each p As Process In Processes
+
+ ' If Window is visible then...
+ If p.MainWindowHandle <> IntPtr.Zero Then
+ SetWindowState(p.MainWindowHandle, WindowState)
+
+ Else ' Window is hidden
+
+ ' Check all open windows (not only the process we are looking),
+ ' begining from the child of the desktop, phandle = IntPtr.Zero initialy.
+ While pID <> p.Id ' Check all windows.
+
+ ' Get child handle of window who's handle is "pHandle".
+ pHandle = NativeMethods.FindWindowEx(IntPtr.Zero, pHandle, Nothing, Nothing)
+
+ ' Get ProcessId from "pHandle".
+ NativeMethods.GetWindowThreadProcessId(pHandle, pID)
+
+ ' If the ProcessId matches the "pID" then...
+ If pID = p.Id Then
+
+ NativeMethods.ShowWindow(pHandle, WindowState)
+
+ If Not Recursivity Then
+ Exit For
+ End If
+
+ End If
+
+ End While
+
+ End If
+
+ Next p
+
+ End Sub
+
+#End Region
+
+End Class
\ No newline at end of file
diff --git a/HALOCELauncher/Core/FakeFullScreen/SetWindowStyle.vb b/HALOCELauncher/Core/FakeFullScreen/SetWindowStyle.vb
new file mode 100644
index 0000000..cbba315
--- /dev/null
+++ b/HALOCELauncher/Core/FakeFullScreen/SetWindowStyle.vb
@@ -0,0 +1,319 @@
+' ***********************************************************************
+' Author : Destroyer
+' Last Modified On : 29-09-2020
+' ***********************************************************************
+'
+' Copyright (c) All rights reserved.
+'
+' ***********************************************************************
+
+#Region " Usage Examples "
+
+'Dim HWND As IntPtr = Process.GetProcessesByName("devenv").First.MainWindowHandle
+'
+'SetWindowState.SetWindowStyle(HWND, SetWindowStyle.WindowStyles.WS_BORDER)
+'SetWindowState.SetWindowStyle("devenv", SetWindowStyle.WindowStyles.WS_BORDER, Recursivity:=False)
+
+#End Region
+
+#Region " Imports "
+
+Imports System.Runtime.InteropServices
+
+#End Region
+
+'''
+''' Sets the style of a window.
+'''
+Public NotInheritable Class SetWindowStyle
+
+#Region " P/Invoke "
+
+ '''
+ ''' Platform Invocation methods (P/Invoke), access unmanaged code.
+ ''' This class does not suppress stack walks for unmanaged code permission.
+ ''' must not be applied to this class.
+ ''' This class is for methods that can be used anywhere because a stack walk will be performed.
+ ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/ms182161.aspx
+ '''
+ Protected NotInheritable Class NativeMethods
+
+#Region " Methods "
+
+ '''
+ ''' Retrieves a handle to the top-level window whose class name and window name match the specified strings.
+ ''' This function does not search child windows.
+ ''' This function does not perform a case-sensitive search.
+ ''' To search child windows, beginning with a specified child window, use the FindWindowEx function.
+ ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx
+ '''
+ ''' The class name.
+ ''' If this parameter is NULL, it finds any window whose title matches the lpWindowName parameter.
+ ''' The window name (the window's title).
+ ''' If this parameter is NULL, all window names match.
+ ''' If the function succeeds, the return value is a handle to the window that has the specified class name and window name.
+ ''' If the function fails, the return value is NULL.
+
+ Friend Shared Function FindWindow(
+ ByVal lpClassName As String,
+ ByVal lpWindowName As String
+ ) As IntPtr
+ End Function
+
+ '''
+ ''' Retrieves a handle to a window whose class name and window name match the specified strings.
+ ''' The function searches child windows, beginning with the one following the specified child window.
+ ''' This function does not perform a case-sensitive search.
+ ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx
+ '''
+ '''
+ ''' A handle to the parent window whose child windows are to be searched.
+ ''' If hwndParent is NULL, the function uses the desktop window as the parent window.
+ ''' The function searches among windows that are child windows of the desktop.
+ '''
+ '''
+ ''' A handle to a child window.
+ ''' The search begins with the next child window in the Z order.
+ ''' The child window must be a direct child window of hwndParent, not just a descendant window.
+ ''' If hwndChildAfter is NULL, the search begins with the first child window of hwndParent.
+ '''
+ '''
+ ''' The window class name.
+ '''
+ '''
+ ''' The window name (the window's title).
+ ''' If this parameter is NULL, all window names match.
+ '''
+ '''
+ ''' If the function succeeds, the return value is a handle to the window that has the specified class and window names.
+ ''' If the function fails, the return value is NULL.
+ '''
+
+ Friend Shared Function FindWindowEx(
+ ByVal hwndParent As IntPtr,
+ ByVal hwndChildAfter As IntPtr,
+ ByVal strClassName As String,
+ ByVal strWindowName As String
+ ) As IntPtr
+ End Function
+
+ '''
+ ''' Retrieves the identifier of the thread that created the specified window
+ ''' and, optionally, the identifier of the process that created the window.
+ ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633522%28v=vs.85%29.aspx
+ '''
+ ''' A handle to the window.
+ '''
+ ''' A pointer to a variable that receives the process identifier.
+ ''' If this parameter is not NULL, GetWindowThreadProcessId copies the identifier of the process to the variable;
+ ''' otherwise, it does not.
+ '''
+ ''' The identifier of the thread that created the window.
+
+ Friend Shared Function GetWindowThreadProcessId(
+ ByVal hWnd As IntPtr,
+ ByRef ProcessId As Integer
+ ) As Integer
+ End Function
+
+ _
+ Friend Shared Function SetWindowLong32(ByVal hWnd As IntPtr, nIndex As WindowLongFlags, ByVal dwNewLong As Integer) As Integer
+ End Function
+
+ _
+ Friend Shared Function SetWindowLongPtr64(ByVal hWnd As IntPtr, nIndex As WindowLongFlags, ByVal dwNewLong As IntPtr) As IntPtr
+ End Function
+
+ Friend Shared Function SetWindowLongPtr(ByVal hWnd As IntPtr, nIndex As WindowLongFlags, ByVal dwNewLong As IntPtr) As IntPtr
+ If IntPtr.Size = 8 Then
+ Return SetWindowLongPtr64(hWnd, nIndex, dwNewLong)
+ Else
+ Return New IntPtr(SetWindowLong32(hWnd, nIndex, dwNewLong.ToInt32))
+ End If
+ End Function
+
+#End Region
+
+ End Class
+
+#End Region
+
+#Region " Enumerations "
+
+ Public Enum WindowLongFlags As Integer
+ GWL_EXSTYLE = -20
+ GWLP_HINSTANCE = -6
+ GWLP_HWNDPARENT = -8
+ GWL_ID = -12
+ GWL_STYLE = -16
+ GWL_USERDATA = -21
+ GWL_WNDPROC = -4
+ DWLP_USER = &H8
+ DWLP_MSGRESULT = &H0
+ DWLP_DLGPROC = &H4
+ End Enum
+
+ _
+ Public Enum WindowStyles As Long
+
+ Todo1 = 2
+ Todo2 = 2048
+ Todo3 = 32768
+
+ WS_OVERLAPPED = 0
+ WS_POPUP = 2147483648
+ WS_CHILD = 1073741824
+ WS_MINIMIZE = 536870912
+ WS_VISIBLE = 268435456
+ WS_DISABLED = 134217728
+ WS_CLIPSIBLINGS = 67108864
+ WS_CLIPCHILDREN = 33554432
+ WS_MAXIMIZE = 16777216
+ WS_BORDER = 8388608
+ WS_DLGFRAME = 4194304
+ WS_VSCROLL = 2097152
+ WS_HSCROLL = 1048576
+ WS_SYSMENU = 524288
+ WS_THICKFRAME = 262144
+ WS_GROUP = 131072
+ WS_TABSTOP = 65536
+
+ WS_MINIMIZEBOX = 131072
+ WS_MAXIMIZEBOX = 65536
+
+ WS_CAPTION = WS_BORDER Or WS_DLGFRAME
+ WS_TILED = WS_OVERLAPPED
+ WS_ICONIC = WS_MINIMIZE
+ WS_SIZEBOX = WS_THICKFRAME
+ WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW
+
+ WS_OVERLAPPEDWINDOW = WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or _
+ WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
+ WS_POPUPWINDOW = WS_POPUP Or WS_BORDER Or WS_SYSMENU
+ WS_CHILDWINDOW = WS_CHILD
+
+ WS_EX_DLGMODALFRAME = 1
+ WS_EX_NOPARENTNOTIFY = 4
+ WS_EX_TOPMOST = 8
+ WS_EX_ACCEPTFILES = 16
+ WS_EX_TRANSPARENT = 32
+
+ '#If (WINVER >= 400) Then
+ WS_EX_MDICHILD = 64
+ WS_EX_TOOLWINDOW = 128
+ WS_EX_WINDOWEDGE = 256
+ WS_EX_CLIENTEDGE = 512
+ WS_EX_CONTEXTHELP = 1024
+
+ WS_EX_RIGHT = 4096
+ WS_EX_LEFT = 0
+ WS_EX_RTLREADING = 8192
+ WS_EX_LTRREADING = 0
+ WS_EX_LEFTSCROLLBAR = 16384
+ WS_EX_RIGHTSCROLLBAR = 0
+
+ WS_EX_CONTROLPARENT = 65536
+ WS_EX_STATICEDGE = 131072
+ WS_EX_APPWINDOW = 262144
+
+ WS_EX_OVERLAPPEDWINDOW = WS_EX_WINDOWEDGE Or WS_EX_CLIENTEDGE
+ WS_EX_PALETTEWINDOW = WS_EX_WINDOWEDGE Or WS_EX_TOOLWINDOW Or WS_EX_TOPMOST
+ '#End If
+
+ '#If (WIN32WINNT >= 500) Then
+ WS_EX_LAYERED = 524288
+ '#End If
+
+ '#If (WINVER >= 500) Then
+ WS_EX_NOINHERITLAYOUT = 1048576 ' Disable inheritence of mirroring by children
+ WS_EX_LAYOUTRTL = 4194304 ' Right to left mirroring
+ '#End If
+
+ '#If (WIN32WINNT >= 500) Then
+ WS_EX_COMPOSITED = 33554432
+ WS_EX_NOACTIVATE = 67108864
+ '#End If
+
+ End Enum
+
+#End Region
+
+#Region " Public Methods "
+
+ '''
+ ''' Set the state of a window by an HWND.
+ '''
+ ''' A handle to the window.
+ ''' The Style of the window.
+ ''' true if the function succeeds, false otherwise.
+ Friend Shared Function SetWindowStyle(ByVal WindowHandle As IntPtr,
+ ByVal WindowStyle As WindowStyles) As Boolean
+
+ Return NativeMethods.SetWindowLongPtr(WindowHandle, WindowLongFlags.GWL_STYLE, WindowStyle)
+
+ End Function
+
+ '''
+ ''' Set the state of a window by a process name.
+ '''
+ ''' The name of the process.
+ ''' The Style of the window.
+ ''' If set to false, only the first process instance will be processed.
+ Friend Shared Sub SetWindowStyle(ByVal ProcessName As String,
+ ByVal WindowStyle As WindowStyles,
+ Optional ByVal Recursivity As Boolean = False)
+
+ If ProcessName.EndsWith(".exe", StringComparison.OrdinalIgnoreCase) Then
+ ProcessName = ProcessName.Remove(ProcessName.Length - ".exe".Length)
+ End If
+
+ Dim pHandle As IntPtr = IntPtr.Zero
+ Dim pID As Integer = 0I
+
+ Dim Processes As Process() = Process.GetProcessesByName(ProcessName)
+
+ ' If any process matching the name is found then...
+ If Processes.Count = 0 Then
+ Exit Sub
+ End If
+
+ For Each p As Process In Processes
+
+ ' If Window is visible then...
+ If p.MainWindowHandle <> IntPtr.Zero Then
+ SetWindowStyle(p.MainWindowHandle, WindowStyle)
+
+ Else ' Window is hidden
+
+ ' Check all open windows (not only the process we are looking),
+ ' begining from the child of the desktop, phandle = IntPtr.Zero initialy.
+ While pID <> p.Id ' Check all windows.
+
+ ' Get child handle of window who's handle is "pHandle".
+ pHandle = NativeMethods.FindWindowEx(IntPtr.Zero, pHandle, Nothing, Nothing)
+
+ ' Get ProcessId from "pHandle".
+ NativeMethods.GetWindowThreadProcessId(pHandle, pID)
+
+ ' If the ProcessId matches the "pID" then...
+ If pID = p.Id Then
+
+ NativeMethods.SetWindowLongPtr(pHandle, WindowLongFlags.GWL_STYLE, WindowStyle)
+
+ If Not Recursivity Then
+ Exit For
+ End If
+
+ End If
+
+ End While
+
+ End If
+
+ Next p
+
+ End Sub
+
+#End Region
+
+End Class
diff --git a/HALOCELauncher/Core/Font/CustomFont.vb b/HALOCELauncher/Core/Font/CustomFont.vb
new file mode 100644
index 0000000..470258f
--- /dev/null
+++ b/HALOCELauncher/Core/Font/CustomFont.vb
@@ -0,0 +1,83 @@
+#Region " Use Custom Text-Font "
+
+' [ Use Custom Text-Font ]
+'
+' Instructions :
+' 1. Add a .TTF font to the resources
+' 2. Add the class
+' 3. Use it
+'
+' Examples:
+' Label1.Font = New Font(GameFont.Font, 10.0!)
+' Label1.Text = "This is your custom font !!"
+
+'Dim MyFont As New CustomFont(My.Resources.kakakaka)
+
+'Private Sub Main_Disposed(sender As Object, e As System.EventArgs) Handles Me.Disposed
+' MyFont.Dispose()
+'End Sub
+
+' CustomFont.vb
+#Region " CustomFont Class "
+
+Imports System.Drawing
+Imports System.Drawing.Text
+Imports System.Runtime.InteropServices
+
+'''
+''' Represents a custom font not installed on the user's system.
+'''
+Public NotInheritable Class CustomFont
+ Implements IDisposable
+
+ Private fontCollection As New PrivateFontCollection()
+ Private fontPtr As IntPtr
+
+#Region "Constructor"
+ '''
+ ''' Creates a new custom font using the specified font data.
+ '''
+ ''' The font data representing the font.
+ Public Sub New(ByVal fontData() As Byte)
+ 'Create a pointer to the font data and copy the
+ 'font data into the location in memory pointed to
+ fontPtr = Marshal.AllocHGlobal(fontData.Length)
+ Marshal.Copy(fontData, 0, fontPtr, fontData.Length)
+
+ 'Add the font to the shared collection of fonts:
+ fontCollection.AddMemoryFont(fontPtr, fontData.Length)
+ End Sub
+#End Region
+
+#Region "Destructor"
+ 'Free the font in unmanaged memory, dispose of
+ 'the font collection and suppress finalization
+ Public Sub Dispose() Implements IDisposable.Dispose
+ Marshal.FreeHGlobal(fontPtr)
+ fontCollection.Dispose()
+
+ GC.SuppressFinalize(Me)
+ End Sub
+
+ 'Free the font in unmanaged memory
+ Protected Overrides Sub Finalize()
+ Marshal.FreeHGlobal(fontPtr)
+ End Sub
+#End Region
+
+#Region "Properties"
+ '''
+ ''' Gets the font family of the custom font.
+ '''
+ Public ReadOnly Property Font() As FontFamily
+ Get
+ Return fontCollection.Families(0)
+ End Get
+ End Property
+#End Region
+
+End Class
+
+#End Region
+
+#End Region
\ No newline at end of file
diff --git a/HALOCELauncher/Core/GameTracker/GTAPI.vb b/HALOCELauncher/Core/GameTracker/GTAPI.vb
new file mode 100644
index 0000000..0765102
--- /dev/null
+++ b/HALOCELauncher/Core/GameTracker/GTAPI.vb
@@ -0,0 +1,182 @@
+Imports System.Net
+Imports System.IO
+Imports HtmlAgilityPack
+Imports System.Text.RegularExpressions
+
+
+Namespace Core.GameTracker
+
+ Public Class ServerType
+ Private _Name As String = Nothing
+ Private _IPAdress As String = Nothing
+ Private _Map As String = Nothing
+ Private _ListID As Integer = Nothing
+ Private _Players As String = Nothing
+
+ Public Property Players As String
+ Get
+ Return _Players
+ End Get
+ Set(value As String)
+ _Players = value
+ End Set
+ End Property
+
+ Public Property Map As String
+ Get
+ Return _Map
+ End Get
+ Set(value As String)
+ _Map = value
+ End Set
+ End Property
+
+ Public Property Name As String
+ Get
+ Return _Name
+ End Get
+ Set(value As String)
+ _Name = value
+ End Set
+ End Property
+
+ Public Property IPAdress As String
+ Get
+ Return _IPAdress
+ End Get
+ Set(value As String)
+ _IPAdress = value
+ End Set
+ End Property
+
+ Public Property ListID As Integer
+ Get
+ Return _ListID
+ End Get
+ Set(value As Integer)
+ _ListID = value
+ End Set
+ End Property
+
+ End Class
+
+ Public Class GTAPI
+
+ Public Sub New()
+
+ End Sub
+
+ Private HeaderTable As String = String.Empty
+
+ Public Function GetServerList(Optional ByVal GameUrl As String = "https://www.gametracker.com/search/halo/#search") As List(Of ServerType)
+ On Error Resume Next
+ Dim ResultA As New List(Of ServerType)
+ Dim HtmlDocumentString As String = GetHTMLPage(GameUrl)
+ Dim htmldocEX As New HtmlAgilityPack.HtmlDocument
+
+
+ If Not HtmlDocumentString = String.Empty Then
+
+ htmldocEX.LoadHtml(HtmlDocumentString)
+
+ For Each row As HtmlNode In htmldocEX.DocumentNode.SelectNodes("//table[@class='table_lst table_lst_srs']")
+ Dim cells As HtmlNodeCollection = row.SelectNodes(".//tr")
+
+ For i As Integer = 0 To cells.Count - 1
+
+ If i = 0 Then
+ 'Header Table
+ HeaderTable = TableFilter(cells(i).InnerText)
+ 'MsgBox(HeaderTable)
+ Else
+
+ Dim ServerInfostr As String = TableFilter(cells(i).InnerText, True)
+ Dim ServerReaderInfo As String() = ServerInfostr.Split("|")
+ Dim LocalServer As New ServerType
+ LocalServer.ListID = Num(ServerReaderInfo(0))
+ LocalServer.Name = ServerReaderInfo(1)
+ LocalServer.Players = ServerReaderInfo(2)
+ LocalServer.IPAdress = ServerReaderInfo(3)
+ LocalServer.Map = ServerReaderInfo(4)
+ If Not LocalServer.IPAdress = "Players" Then
+ ResultA.Add(LocalServer)
+ End If
+
+ End If
+
+ Next
+
+ Next
+
+ Return ResultA
+
+ End If
+ 'Return Nothing
+ End Function
+
+#Region " Methods "
+
+ Private Function GetHTMLPage(ByVal Url As String) As String
+ System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
+ Dim cookieJar As CookieContainer = New CookieContainer()
+ Dim request As HttpWebRequest = CType(WebRequest.Create(Url), HttpWebRequest)
+ request.UseDefaultCredentials = True
+ request.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials
+ request.CookieContainer = cookieJar
+ request.Accept = "text/html, application/xhtml+xml, */*"
+ request.Referer = "https://www.gametracker.com/"
+ request.Headers.Add("Accept-Language", "en-GB")
+ request.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"
+ request.Host = "www.gametracker.com"
+ Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
+ Dim htmlString As String = String.Empty
+
+ Using reader = New StreamReader(response.GetResponseStream())
+ htmlString = reader.ReadToEnd()
+ End Using
+
+ Return htmlString
+ End Function
+
+ Private Function TableFilter(ByVal subjectString As String, Optional Separator As Boolean = False) As String
+ Dim SubjetFilter As String = subjectString.Replace("|", "")
+ Dim FilterString As String = Regex.Replace(SubjetFilter, "^\s+$[\r\n]*", "", RegexOptions.Multiline)
+ Dim ResultStr As String = String.Empty
+ Dim reader = New StringReader(FilterString)
+ While True
+ Dim line = reader.ReadLine()
+ If line Is Nothing Then
+ Exit While
+ Else
+ If Separator = True Then
+ ResultStr += RemoveWhitespace(line) & "|"
+ Else
+ ResultStr += RemoveWhitespace(line) & " "
+ End If
+ End If
+ End While
+ Return ResultStr
+ End Function
+
+ Private Function Num(ByVal value As String) As Integer
+ Dim returnVal As String = String.Empty
+ Dim collection As MatchCollection = Regex.Matches(value, "\d+")
+ For Each m As Match In collection
+ returnVal += m.ToString()
+ Next
+ Return Convert.ToInt32(returnVal)
+ End Function
+
+ Private Function RemoveWhitespace(fullString As String) As String
+ Return New String(fullString.Where(Function(x) Not Char.IsWhiteSpace(x)).ToArray())
+ End Function
+
+#End Region
+
+
+ End Class
+
+
+
+End Namespace
+
diff --git a/HALOCELauncher/Core/HaloQuery/HaloServer.vb b/HALOCELauncher/Core/HaloQuery/HaloServer.vb
new file mode 100644
index 0000000..04f5381
--- /dev/null
+++ b/HALOCELauncher/Core/HaloQuery/HaloServer.vb
@@ -0,0 +1,42 @@
+Imports System.Collections.Generic
+Imports System.Text
+Imports System.Net.Sockets
+
+Namespace HaloQuery
+ Public Class HaloServer
+ Private socket As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp) With {
+ .ReceiveTimeout = 1000
+ }
+ Public ServerHost As String
+ Public ServerPort As Integer
+
+ Public Sub New(ByVal host As String, ByVal port As Integer)
+ Me.ServerHost = host
+ Me.ServerPort = port
+ End Sub
+
+ Public Function GetRawResponse() As String
+ socket.Connect(Me.ServerHost, Me.ServerPort)
+ Dim buffer As Byte() = Encoding.[Default].GetBytes("\status\")
+ Dim received As Integer = 0
+ socket.Send(buffer)
+ buffer = New Byte(4095) {}
+ received = socket.Receive(buffer)
+ socket.Close()
+ Return Encoding.[Default].GetString(buffer, 0, received)
+ End Function
+
+ Public Function GetDictionaryResponse(Optional ByVal rawResponse As String = Nothing) As Dictionary(Of String, String)
+ If rawResponse Is Nothing Then rawResponse = Me.GetRawResponse()
+ Dim dataPart As String() = rawResponse.Split("\"c)
+ Dim parsedResponse As Dictionary(Of String, String) = New Dictionary(Of String, String)()
+
+ For i As Integer = 1 To dataPart.Length - 1 Step 2
+ parsedResponse.Add(dataPart(i), dataPart(i + 1))
+ Next
+
+ Return parsedResponse
+ End Function
+
+ End Class
+End Namespace
diff --git a/HALOCELauncher/Core/HaloQuery/HaloServerInfo.vb b/HALOCELauncher/Core/HaloQuery/HaloServerInfo.vb
new file mode 100644
index 0000000..2933b7f
--- /dev/null
+++ b/HALOCELauncher/Core/HaloQuery/HaloServerInfo.vb
@@ -0,0 +1,506 @@
+Imports HALOCELauncher.HaloQuery
+Imports System.Text.RegularExpressions
+
+Namespace HaloQuery
+
+
+
+ Public Class Player
+ Private _ID As Integer = Nothing
+ Private _Score As Integer = Nothing
+ Private _Name As String = Nothing
+ Private _Ping As Integer = Nothing
+ Private _Team As New Team
+ Public Sub New()
+
+ End Sub
+ Public Property ID As Integer
+ Get
+ Return _ID
+ End Get
+ Set(value As Integer)
+ _ID = value
+ End Set
+ End Property
+
+ Public Property Score As Integer
+ Get
+ Return _Score
+ End Get
+ Set(value As Integer)
+ _Score = value
+ End Set
+ End Property
+
+ Public Property Ping As Integer
+ Get
+ Return _Ping
+ End Get
+ Set(value As Integer)
+ _Ping = value
+ End Set
+ End Property
+
+ Public Property Name As String
+ Get
+ Return _Name
+ End Get
+ Set(value As String)
+ _Name = value
+ End Set
+ End Property
+
+ Public Property Team As Team
+ Get
+ Return _Team
+ End Get
+ Set(value As Team)
+ _Team = value
+ End Set
+ End Property
+
+ End Class
+
+ Public Class Team
+ Private _ID As Integer = Nothing
+ Private _Score As Integer = Nothing
+ Private _TeamColor As Color = Color.White
+
+ Public Property ID As Integer
+ Get
+ Return _ID
+ End Get
+ Set(value As Integer)
+ _ID = value
+ End Set
+ End Property
+
+ Public Property Score As Integer
+ Get
+ Return _Score
+ End Get
+ Set(value As Integer)
+ _Score = value
+ End Set
+ End Property
+
+ Public Property TeamColor As Color
+ Get
+ Return _TeamColor
+ End Get
+ Set(value As Color)
+ _TeamColor = value
+ End Set
+ End Property
+ End Class
+
+ Public Class HaloServerInfo
+
+#Region " Properties "
+
+ Private _Ready As Boolean = False
+ Public ReadOnly Property Ready As Boolean
+ Get
+ Return _Ready
+ End Get
+ End Property
+
+ Public ReadOnly Property PlayersList As List(Of Player)
+ Get
+ Return GetPlayerList()
+ End Get
+ End Property
+
+ Public ReadOnly Property RedTeamInfo As Team
+ Get
+ Return GameTeam.Red
+ End Get
+ End Property
+
+ Public ReadOnly Property BlueTeamInfo As Team
+ Get
+ Return GameTeam.Blue
+ End Get
+ End Property
+
+ Private _Hostname As String = String.Empty
+ Public ReadOnly Property Hostname As String
+ Get
+ Return _Hostname
+ End Get
+ End Property
+
+ Private _GameVer As String = String.Empty
+ Public ReadOnly Property GameVersion As String
+ Get
+ Return _GameVer
+ End Get
+ End Property
+
+ Private _HostPort As Integer = Nothing
+ Public ReadOnly Property HostPort As Integer
+ Get
+ Return _HostPort
+ End Get
+ End Property
+
+ Private _MaxPlayers As Integer = Nothing
+ Public ReadOnly Property MaxPlayers As Integer
+ Get
+ Return _MaxPlayers
+ End Get
+ End Property
+
+ Private _Password As Boolean = False
+ Public ReadOnly Property Password As Boolean
+ Get
+ Return _Password
+ End Get
+ End Property
+
+ Private _MapName As String = String.Empty
+ Public ReadOnly Property MapName As String
+ Get
+ Return _MapName
+ End Get
+ End Property
+
+ Private _Dedicated As Integer = Nothing
+ Public ReadOnly Property Dedicated As Integer
+ Get
+ Return _Dedicated
+ End Get
+ End Property
+
+ Private _Gamemode As String = String.Empty
+ Public ReadOnly Property Gamemode As String
+ Get
+ Return _Gamemode
+ End Get
+ End Property
+
+ Private _GameClassic As Integer = Nothing
+ Public ReadOnly Property GameClassic As Integer
+ Get
+ Return _GameClassic
+ End Get
+ End Property
+
+ Private _NumbPlayers As Integer = Nothing
+ Public ReadOnly Property PlayersCount As Integer
+ Get
+ Return _NumbPlayers
+ End Get
+ End Property
+
+ Private _GameType As String = String.Empty
+ Public ReadOnly Property GameType As String
+ Get
+ Return _GameType
+ End Get
+ End Property
+
+ Private _TeamPlay As Integer = Nothing
+ Public ReadOnly Property TeamPlay As Integer
+ Get
+ Return _TeamPlay
+ End Get
+ End Property
+
+ Private _GameVariant As String = String.Empty
+ Public ReadOnly Property GameVariant As String
+ Get
+ Return _GameVariant
+ End Get
+ End Property
+
+ Private _FragLimit As Integer = Nothing
+ Public ReadOnly Property FragLimit As Integer
+ Get
+ Return _FragLimit
+ End Get
+ End Property
+
+ Private _PlayerFlags As String = String.Empty
+ Public ReadOnly Property PlayerFlags As String
+ Get
+ Return _PlayerFlags
+ End Get
+ End Property
+
+ Private _GameFlags As String = String.Empty
+ Public ReadOnly Property GameFlags As String
+ Get
+ Return _GameFlags
+ End Get
+ End Property
+
+ Private _Final As String = String.Empty
+ Public ReadOnly Property Final As String
+ Get
+ Return _Final
+ End Get
+ End Property
+
+ Private _QueryID As String = String.Empty
+ Public ReadOnly Property QueryID As String
+ Get
+ Return _QueryID
+ End Get
+ End Property
+
+ Private _SAPPC As String = String.Empty
+ Public ReadOnly Property SAPPC As String
+ Get
+ Return _SAPPC
+ End Get
+ End Property
+
+ Private _SAPPFlags As String = String.Empty
+ Public ReadOnly Property SAPPFlags As String
+ Get
+ Return _SAPPFlags
+ End Get
+ End Property
+
+ Private _NextMap As String = String.Empty
+ Public ReadOnly Property NextMap As String
+ Get
+ Return _NextMap
+ End Get
+ End Property
+
+ Private _NextMode As String = String.Empty
+ Public ReadOnly Property NextMode As String
+ Get
+ Return _NextMode
+ End Get
+ End Property
+
+#End Region
+
+#Region " Structures "
+
+#Region " PlayerStructure "
+
+ Public Structure Players
+ Public Shared Player1 As New Player
+ Public Shared Player2 As New Player
+ Public Shared Player3 As New Player
+ Public Shared Player4 As New Player
+ Public Shared Player5 As New Player
+ Public Shared Player6 As New Player
+ Public Shared Player7 As New Player
+ Public Shared Player8 As New Player
+ Public Shared Player9 As New Player
+ Public Shared Player10 As New Player
+ Public Shared Player11 As New Player
+ Public Shared Player12 As New Player
+ Public Shared Player13 As New Player
+ Public Shared Player14 As New Player
+ Public Shared Player15 As New Player
+ Public Shared Player16 As New Player
+ End Structure
+
+#End Region
+
+#Region " TeamStructure "
+
+ Private Structure GameTeam
+ Public Shared Red As New Team With {.ID = 0, .TeamColor = Color.Red}
+ Public Shared Blue As New Team With {.ID = 1, .TeamColor = Color.Blue}
+ End Structure
+
+#End Region
+
+#End Region
+
+ Public Sub New(ByVal argsEx As String())
+ _Ready = False
+ Dim ServerInfo As Boolean = GetServerInfo(argsEx)
+ _Ready = True
+ End Sub
+
+ Public Function GetServerInfo(ByVal Argumentos As String()) As Boolean
+ ' Try
+ Dim server = GetHaloServerFromArgs(Argumentos)
+
+ For Each record In server.GetDictionaryResponse()
+ Select Case record.Key
+ 'Players ID / NAME / SCORE / PING
+ '
+ '--------Name And ID
+ Case "player_0" : Players.Player1.Name = record.Value : Players.Player1.ID = 0
+ Case "player_1" : Players.Player2.Name = record.Value : Players.Player2.ID = 1
+ Case "player_2" : Players.Player3.Name = record.Value : Players.Player3.ID = 2
+ Case "player_3" : Players.Player4.Name = record.Value : Players.Player4.ID = 3
+ Case "player_4" : Players.Player5.Name = record.Value : Players.Player5.ID = 4
+ Case "player_5" : Players.Player6.Name = record.Value : Players.Player6.ID = 5
+ Case "player_6" : Players.Player7.Name = record.Value : Players.Player7.ID = 6
+ Case "player_7" : Players.Player8.Name = record.Value : Players.Player8.ID = 7
+ Case "player_8" : Players.Player9.Name = record.Value : Players.Player9.ID = 8
+ Case "player_9" : Players.Player10.Name = record.Value : Players.Player10.ID = 9
+ Case "player_10" : Players.Player11.Name = record.Value : Players.Player11.ID = 10
+ Case "player_11" : Players.Player12.Name = record.Value : Players.Player12.ID = 11
+ Case "player_12" : Players.Player13.Name = record.Value : Players.Player13.ID = 12
+ Case "player_13" : Players.Player14.Name = record.Value : Players.Player14.ID = 13
+ Case "player_14" : Players.Player15.Name = record.Value : Players.Player15.ID = 14
+ Case "player_15" : Players.Player16.Name = record.Value : Players.Player16.ID = 15
+ '
+ '--------Score
+ Case "score_0" : Players.Player1.Score = Num(record.Value)
+ Case "score_1" : Players.Player2.Score = Num(record.Value)
+ Case "score_2" : Players.Player3.Score = Num(record.Value)
+ Case "score_3" : Players.Player4.Score = Num(record.Value)
+ Case "score_4" : Players.Player5.Score = Num(record.Value)
+ Case "score_5" : Players.Player6.Score = Num(record.Value)
+ Case "score_6" : Players.Player7.Score = Num(record.Value)
+ Case "score_7" : Players.Player8.Score = Num(record.Value)
+ Case "score_8" : Players.Player9.Score = Num(record.Value)
+ Case "score_9" : Players.Player10.Score = Num(record.Value)
+ Case "score_10" : Players.Player11.Score = Num(record.Value)
+ Case "score_11" : Players.Player12.Score = Num(record.Value)
+ Case "score_12" : Players.Player13.Score = Num(record.Value)
+ Case "score_13" : Players.Player14.Score = Num(record.Value)
+ Case "score_14" : Players.Player15.Score = Num(record.Value)
+ Case "score_15" : Players.Player16.Score = Num(record.Value)
+ '
+ '--------Ping
+ Case "ping_0" : Players.Player1.Ping = record.Value
+ Case "ping_1" : Players.Player2.Ping = record.Value
+ Case "ping_2" : Players.Player3.Ping = record.Value
+ Case "ping_3" : Players.Player4.Ping = record.Value
+ Case "ping_4" : Players.Player5.Ping = record.Value
+ Case "ping_5" : Players.Player6.Ping = record.Value
+ Case "ping_6" : Players.Player7.Ping = record.Value
+ Case "ping_7" : Players.Player8.Ping = record.Value
+ Case "ping_8" : Players.Player9.Ping = record.Value
+ Case "ping_9" : Players.Player10.Ping = record.Value
+ Case "ping_10" : Players.Player11.Ping = record.Value
+ Case "ping_11" : Players.Player12.Ping = record.Value
+ Case "ping_12" : Players.Player13.Ping = record.Value
+ Case "ping_13" : Players.Player14.Ping = record.Value
+ Case "ping_14" : Players.Player15.Ping = record.Value
+ Case "ping_15" : Players.Player16.Ping = record.Value
+ '
+ '--------Team
+ Case "team_0" : If record.Value = GameTeam.Red.ID Then : Players.Player1.Team = GameTeam.Red : Else : Players.Player1.Team = GameTeam.Blue : End If
+ Case "team_1" : If record.Value = GameTeam.Red.ID Then : Players.Player2.Team = GameTeam.Red : Else : Players.Player2.Team = GameTeam.Blue : End If
+ Case "team_2" : If record.Value = GameTeam.Red.ID Then : Players.Player3.Team = GameTeam.Red : Else : Players.Player3.Team = GameTeam.Blue : End If
+ Case "team_3" : If record.Value = GameTeam.Red.ID Then : Players.Player4.Team = GameTeam.Red : Else : Players.Player4.Team = GameTeam.Blue : End If
+ Case "team_4" : If record.Value = GameTeam.Red.ID Then : Players.Player5.Team = GameTeam.Red : Else : Players.Player5.Team = GameTeam.Blue : End If
+ Case "team_5" : If record.Value = GameTeam.Red.ID Then : Players.Player6.Team = GameTeam.Red : Else : Players.Player6.Team = GameTeam.Blue : End If
+ Case "team_6" : If record.Value = GameTeam.Red.ID Then : Players.Player7.Team = GameTeam.Red : Else : Players.Player7.Team = GameTeam.Blue : End If
+ Case "team_7" : If record.Value = GameTeam.Red.ID Then : Players.Player8.Team = GameTeam.Red : Else : Players.Player8.Team = GameTeam.Blue : End If
+ Case "team_8" : If record.Value = GameTeam.Red.ID Then : Players.Player9.Team = GameTeam.Red : Else : Players.Player9.Team = GameTeam.Blue : End If
+ Case "team_9" : If record.Value = GameTeam.Red.ID Then : Players.Player10.Team = GameTeam.Red : Else : Players.Player10.Team = GameTeam.Blue : End If
+ Case "team_10" : If record.Value = GameTeam.Red.ID Then : Players.Player11.Team = GameTeam.Red : Else : Players.Player11.Team = GameTeam.Blue : End If
+ Case "team_11" : If record.Value = GameTeam.Red.ID Then : Players.Player12.Team = GameTeam.Red : Else : Players.Player12.Team = GameTeam.Blue : End If
+ Case "team_12" : If record.Value = GameTeam.Red.ID Then : Players.Player13.Team = GameTeam.Red : Else : Players.Player13.Team = GameTeam.Blue : End If
+ Case "team_13" : If record.Value = GameTeam.Red.ID Then : Players.Player14.Team = GameTeam.Red : Else : Players.Player14.Team = GameTeam.Blue : End If
+ Case "team_14" : If record.Value = GameTeam.Red.ID Then : Players.Player15.Team = GameTeam.Red : Else : Players.Player15.Team = GameTeam.Blue : End If
+ Case "team_15" : If record.Value = GameTeam.Red.ID Then : Players.Player16.Team = GameTeam.Red : Else : Players.Player16.Team = GameTeam.Blue : End If
+ '
+ '
+ 'Team ID and Score
+ Case "team_t0" : If record.Value = "Red" Then : GameTeam.Red.ID = 0 : GameTeam.Blue.ID = 1 : End If
+ Case "team_t1" : If record.Value = "Blue" Then : GameTeam.Blue.ID = 1 : GameTeam.Red.ID = 0 : End If
+ Case "score_t0" : If GameTeam.Red.ID = 0 Then : GameTeam.Red.Score = record.Value : Else : GameTeam.Blue.Score = record.Value : End If
+ Case "score_t1" : If GameTeam.Blue.ID = 1 Then : GameTeam.Blue.Score = record.Value : Else : GameTeam.Red.Score = record.Value : End If
+ '
+ Case "hostname" : If record.Value = "" Then : _Hostname = "Erro to get" : Else : _Hostname = record.Value.ToString : End If
+ Case "gamever" : _GameVer = record.Value
+ Case "hostport" : _HostPort = Num(record.Value)
+ Case "maxplayers" : _MaxPlayers = Val(record.Value)
+ Case "password" : _Password = CBool(record.Value)
+ Case "mapname" : _MapName = record.Value
+ Case "dedicated" : _Dedicated = record.Value
+ Case "gamemode" : _Gamemode = record.Value
+ Case "game_classic" : _GameClassic = record.Value
+ Case "numplayers" : _NumbPlayers = Val(record.Value)
+ Case "gametype" : _GameType = record.Value
+ Case "teamplay" : _TeamPlay = Val(record.Value)
+ Case "gamevariant" : _GameVariant = record.Value
+ Case "fraglimit" : _FragLimit = Val(record.Value)
+ Case "player_flags" : _PlayerFlags = record.Value
+ Case "game_flags" : _GameFlags = record.Value
+ Case "final" : _Final = record.Value
+ Case "queryid" : _QueryID = record.Value
+ Case "sapp" : _SAPPC = record.Value
+ Case "sapp_flags" : _SAPPFlags = record.Value
+ Case "nextmap" : _NextMap = record.Value
+ Case "nextmode" : _NextMode = record.Value
+
+ End Select
+ Next
+
+ Return True
+ ' Catch ex As Exception
+ ' Throw New Exception(ex.Message)
+ 'End Try
+ Return False
+ End Function
+
+#Region " Methods "
+
+ Private Function Num(ByVal value As String) As Integer
+ If value = "" Then
+ Return 8080
+ Else
+ Dim returnVal As String = String.Empty
+ Dim collection As MatchCollection = Regex.Matches(value, "\d+")
+ For Each m As Match In collection
+ returnVal += m.ToString()
+ Next
+ Return Convert.ToInt32(returnVal)
+ End If
+ End Function
+
+ Private Function GetHaloServerFromArgs(ByVal args As String()) As HaloServer
+ Dim serverArgs = args
+ Dim host As String
+ Dim port As Integer
+ If args.Length = 1 Then serverArgs = args(0).Split(":"c)
+
+ If serverArgs.Length = 0 OrElse serverArgs.Length > 2 Then
+ ' TextBox1.Text += "haloq (host[:port] | host [port])" & vbNewLine
+ MsgBox("error")
+ End If
+
+ host = serverArgs(0)
+
+ If serverArgs.Length = 1 Then
+ port = 2302
+ Else
+ port = Integer.Parse(serverArgs(1))
+ End If
+
+ Return New HaloServer(host, port)
+ End Function
+
+ Private Function GetPlayerList() As List(Of Player)
+ Dim PlayerList As New List(Of Player)
+ PlayerList.Add(Players.Player1)
+ PlayerList.Add(Players.Player2)
+ PlayerList.Add(Players.Player3)
+ PlayerList.Add(Players.Player4)
+ PlayerList.Add(Players.Player5)
+ PlayerList.Add(Players.Player6)
+ PlayerList.Add(Players.Player7)
+ PlayerList.Add(Players.Player8)
+ PlayerList.Add(Players.Player9)
+ PlayerList.Add(Players.Player10)
+ PlayerList.Add(Players.Player11)
+ PlayerList.Add(Players.Player12)
+ PlayerList.Add(Players.Player13)
+ PlayerList.Add(Players.Player14)
+ PlayerList.Add(Players.Player15)
+ PlayerList.Add(Players.Player16)
+ Return PlayerList
+ End Function
+
+#End Region
+
+ End Class
+End Namespace
+
diff --git a/HALOCELauncher/Core/Helpers.vb b/HALOCELauncher/Core/Helpers.vb
new file mode 100644
index 0000000..5b8a052
--- /dev/null
+++ b/HALOCELauncher/Core/Helpers.vb
@@ -0,0 +1,130 @@
+Imports System.IO
+Imports System.Security.Principal
+
+
+Namespace Core
+
+ Public Class Helpers
+
+ Public Shared ReadOnly Property IsAdministrator As Boolean
+ Get
+ Return New WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator)
+ End Get
+ End Property
+
+ Public Shared Sub RUNAdmin(ByVal Appdir As String)
+ Dim startInfo = New ProcessStartInfo(Appdir)
+ startInfo.RedirectStandardOutput = True
+ startInfo.RedirectStandardError = True
+ startInfo.UseShellExecute = False
+ startInfo.Verb = "runas"
+ Process.Start(startInfo)
+ End
+ End Sub
+
+ Public Shared Sub EnabledDragger(ByVal ControlEx As Control)
+ Dim NewDragControl As New Guna.UI.WinForms.GunaDragControl
+ NewDragControl.TargetControl = ControlEx
+ End Sub
+
+ Public Shared Function SecondtoMilli(ByVal second As Integer) As Integer
+ Return (second * 1000)
+ End Function
+
+ Public Shared Function GetRandomNum(Optional ByVal minimum As Integer = 0, Optional ByVal Maximum As Integer = 0) As Integer
+ Dim random As New Random()
+ If Maximum = 0 Then
+ Return random.Next()
+ Else
+ Return random.Next(minimum, Maximum)
+ End If
+ End Function
+
+ Public Shared Function CompareImages(ByVal img1 As Bitmap, ByVal img2 As Bitmap) As Boolean
+ Dim i As Integer
+ Dim j As Integer
+
+ For i = 0 To img1.Width - 1
+ For j = 0 To img2.Height - 1
+ If img1.GetPixel(i, j) <> img2.GetPixel(i, j) Then
+ Return False
+ End If
+ Next
+ Next
+ Return True
+ End Function
+
+ Public Shared Function open(Optional Custom_Filter As String = "Executables (*.exe)|*.exe") As String
+ Using openFileDialog As OpenFileDialog = New OpenFileDialog()
+ Dim openFileDialog2 As OpenFileDialog = openFileDialog
+ openFileDialog2.AddExtension = True
+ openFileDialog2.AutoUpgradeEnabled = True
+ openFileDialog2.CheckPathExists = True
+ openFileDialog2.Title = "Selec File"
+ openFileDialog2.Filter = Custom_Filter
+ openFileDialog2.FileName = ""
+ openFileDialog2.RestoreDirectory = True
+ If openFileDialog.ShowDialog() = DialogResult.OK Then
+ Return openFileDialog.FileName
+ End If
+ End Using
+ Return "Error"
+ End Function
+
+ Public Shared Function save(Optional Custom_Filename As String = " ", Optional Custom_Filter As String = "Executables (*.exe)|*.exe") As String
+ Using saveFileDialog As SaveFileDialog = New SaveFileDialog()
+ Dim saveFileDialog2 As SaveFileDialog = saveFileDialog
+ saveFileDialog2.AddExtension = True
+ saveFileDialog2.AutoUpgradeEnabled = True
+ saveFileDialog2.CheckPathExists = True
+ saveFileDialog2.FileName = Custom_Filename
+ saveFileDialog2.Filter = Custom_Filter
+ saveFileDialog2.FilterIndex = 2
+ saveFileDialog2.RestoreDirectory = True
+ saveFileDialog2.Title = "Select a file destination to save"
+ If saveFileDialog.ShowDialog() = DialogResult.OK Then
+ Return saveFileDialog.FileName
+ End If
+ End Using
+ Return "Error"
+ End Function
+
+#Region " Base64 Functions "
+
+ Public Shared Function ConvertImageToBase64String(ByVal ImageL As Image) As String
+ Using ms As New MemoryStream()
+ ImageL.Save(ms, System.Drawing.Imaging.ImageFormat.Png) 'We load the image from first PictureBox in the MemoryStream
+ Dim obyte = ms.ToArray() 'We tranform it to byte array..
+
+ Return Convert.ToBase64String(obyte) 'We then convert the byte array to base 64 string.
+ End Using
+ End Function
+
+ Public Shared Function ConvertBase64ToByteArray(base64 As String) As Byte()
+ Return Convert.FromBase64String(base64) 'Convert the base64 back to byte array.
+ End Function
+
+ 'Here's the part of your code (which works)
+ Public Shared Function convertbytetoimage(ByVal BA As Byte())
+ Dim ms As MemoryStream = New MemoryStream(BA)
+ Dim image = System.Drawing.Image.FromStream(ms)
+ Return image
+ End Function
+
+#End Region
+
+#Region " CenterForm function "
+
+ Public Shared Function CenterForm(ByVal ParentForm As Form, ByVal Form_to_Center As Form, ByVal Form_Location As Point) As Point
+ Dim FormLocation As New Point
+ FormLocation.X = (ParentForm.Left + (ParentForm.Width - Form_to_Center.Width) / 2) ' set the X coordinates.
+ FormLocation.Y = (ParentForm.Top + (ParentForm.Height - Form_to_Center.Height) / 2) ' set the Y coordinates.
+ Return FormLocation ' return the Location to the Form it was called from.
+ End Function
+
+#End Region
+
+ End Class
+
+End Namespace
+
diff --git a/HALOCELauncher/Core/Launcher.vb b/HALOCELauncher/Core/Launcher.vb
new file mode 100644
index 0000000..bc1277a
--- /dev/null
+++ b/HALOCELauncher/Core/Launcher.vb
@@ -0,0 +1,161 @@
+Imports System.Runtime.InteropServices
+
+Namespace Core
+
+ Public Class Launcher
+
+ Private Timer1 As New System.Windows.Forms.Timer With {.Interval = 100}
+ Public GameProc As String = String.Empty
+ Public GameDir As String = String.Empty
+
+ Public Sub New(Optional ByVal GameDirEx As String = Nothing)
+ If GameDirEx = Nothing Then
+ If My.Settings.GameDefect = 0 Then
+ GameDirEx = My.Settings.GameDirCE
+ ElseIf My.Settings.GameDefect = 1 Then
+ GameDirEx = My.Settings.GameDirPC
+ End If
+ Else
+ GameDir = GameDirEx
+ End If
+ GameProc = IO.Path.GetFileName(GameDir)
+ AddHandler Timer1.Tick, AddressOf Timer1_Tick
+ End Sub
+
+ Public Sub Launch(ByVal IpAdress As String, Optional ByVal Password As String = "")
+ Dim Larguments As String = String.Empty
+ Dim Arguments As String = GetArguments()
+ If My.Settings.LaunchMode = 0 Then Larguments = " -window "
+ Larguments += " -connect " & IpAdress & " "
+ If Not Password = "" Then
+ Larguments += Arguments & " -password " & Password
+ Else
+ Larguments += Arguments
+ End If
+
+ If IO.File.Exists(GameDir) = True Then
+ Dim p As New Process
+ p.StartInfo.WorkingDirectory = (IO.Path.GetDirectoryName(GameDir))
+ p.StartInfo.FileName = IO.Path.GetFileName(GameDir)
+ p.StartInfo.Arguments = Larguments
+ p.Start()
+ p.WaitForInputIdle()
+ If My.Settings.LaunchMode = 0 Then Timer1.Enabled = True
+ End If
+ End Sub
+
+
+ Dim ProcC As Integer = 0
+ Dim Procede As Boolean = False
+ Private Sub Timer1_Tick(sender As Object, e As EventArgs)
+ Dim procs As Process() = Process.GetProcesses()
+
+ Dim ProcessNameEX As String = IO.Path.GetFileNameWithoutExtension(GameProc)
+ Dim processcount As Integer = procs.Count
+ For Each proc As Process In procs
+
+ If proc.ProcessName = ProcessNameEX Then
+ Dim placement = GetPlacement(proc.MainWindowHandle)
+ If placement.showCmd.ToString = "Normal" Then
+ Dim FakeFullSc As Boolean = FullScreenEmulation(GameProc)
+ Procede = True
+ End If
+ If Procede = True Then
+ If placement.showCmd.ToString = "Maximized" Then
+ Dim FakeFullSc As Boolean = FullScreenEmulation(GameProc)
+ Timer1.Enabled = False
+ End If
+ End If
+ End If
+ Next
+ End Sub
+
+ Public Function FullScreenEmulation(ByVal ProcessName As String) As Boolean
+ Try
+ If ProcessName.EndsWith(".exe", StringComparison.OrdinalIgnoreCase) Then ProcessName = ProcessName.Remove(ProcessName.Length - ".exe".Length)
+ Dim HWND As IntPtr = Process.GetProcessesByName(ProcessName).First.MainWindowHandle
+ For i As Integer = 0 To 2
+ SetWindowStyle.SetWindowStyle(HWND, SetWindowStyle.WindowStyles.WS_BORDER)
+ SetWindowState.SetWindowState(HWND, SetWindowState.WindowState.Maximize)
+ Next
+ BringMainWindowToFront(ProcessName)
+ Return True
+ Catch ex As Exception
+ Return False
+ End Try
+ End Function
+
+ Public Function GetArguments() As String
+ Dim Arguments As String = String.Empty
+ If My.Settings.LaunchMode = 1 Then Arguments += " -window "
+ If My.Settings.ConsoleC = True Then Arguments += " -console "
+ If My.Settings.ScreenshotC = True Then Arguments += " -screenshot "
+ If My.Settings.devC = True Then Arguments += " -devmode "
+ If My.Settings.SoundC = True Then Arguments += " -nosound "
+ If My.Settings.VideoC = True Then Arguments += " -novideo "
+ If My.Settings.GammaC = True Then Arguments += " -nogamma "
+ If My.Settings.JoystickC = True Then Arguments += " -nojoystick "
+ If My.Settings.SafeModeC = True Then Arguments += " -safemode "
+ Return Arguments
+ End Function
+
+#Region " Set Focus "
+
+
+ Private Shared Function SetForegroundWindow(ByVal hwnd As IntPtr) As Integer
+ End Function
+
+ Dim FisrsFocus As Boolean = False
+
+ Public Sub BringMainWindowToFront(ByVal processName As String)
+ If FisrsFocus = False Then
+ Dim bProcess As Process = Process.GetProcessesByName(processName).FirstOrDefault()
+
+ If bProcess IsNot Nothing Then
+ SetForegroundWindow(bProcess.MainWindowHandle)
+ End If
+ FisrsFocus = True
+ End If
+ End Sub
+
+#End Region
+
+
+#Region " Check FakeFullscreen "
+
+ Private Shared Function GetPlacement(ByVal hwnd As IntPtr) As WINDOWPLACEMENT
+ Dim placement As WINDOWPLACEMENT = New WINDOWPLACEMENT()
+ placement.length = Marshal.SizeOf(placement)
+ GetWindowPlacement(hwnd, placement)
+ Return placement
+ End Function
+
+
+ Friend Shared Function GetWindowPlacement(ByVal hWnd As IntPtr, ByRef lpwndpl As WINDOWPLACEMENT) As Boolean
+ End Function
+
+
+
+ Friend Structure WINDOWPLACEMENT
+ Public length As Integer
+ Public flags As Integer
+ Public showCmd As ShowWindowCommands
+ Public ptMinPosition As System.Drawing.Point
+ Public ptMaxPosition As System.Drawing.Point
+ Public rcNormalPosition As System.Drawing.Rectangle
+ End Structure
+
+ Friend Enum ShowWindowCommands As Integer
+ Hide = 0
+ Normal = 1
+ Minimized = 2
+ Maximized = 3
+ End Enum
+
+#End Region
+
+ End Class
+
+End Namespace
+
+
diff --git a/HALOCELauncher/Core/SvManager/SvFormatManager.vb b/HALOCELauncher/Core/SvManager/SvFormatManager.vb
new file mode 100644
index 0000000..0545e9e
--- /dev/null
+++ b/HALOCELauncher/Core/SvManager/SvFormatManager.vb
@@ -0,0 +1,254 @@
+Imports HALOCELauncher.Core.Utils
+Imports HALOCELauncher.Core.GameTracker
+
+Namespace Core.SvManager
+
+ Public Class SvFormatManager
+
+ Private Shared xmlfile As String = "HALOSV_List.xml"
+
+ Public Shared UpdateAe As Boolean = False
+
+ Public Shared Server_Config As String =
+
+
+ %Heart%
+ ]]>.Value
+
+ Public Shared Server_Estructure As String =
+
+ %sv_name%
+ %sv_ip%
+ %sv_player%
+
+ ]]>.Value
+
+ Public Shared Property xml_svlist As String
+ Get
+ Return xmlfile
+ End Get
+ Set(value As String)
+ xmlfile = value
+ End Set
+ End Property
+
+ Public Shared Function ExistsXmlServer() As Boolean
+ Return IO.File.Exists(xmlfile)
+ End Function
+
+ Public Shared Function ReadXmlServers() As List(Of ServerType)
+ Dim localsv As New List(Of ServerType)
+
+ Dim xmlData As XDocument = XDocument.Parse(IO.File.ReadAllText(xmlfile))
+
+ For Each signature As XElement In xmlData.Root.Elements
+ Dim Lmsv As New ServerType
+ Dim Hostname As String = signature..Value
+ Dim IpAddr As String = signature..Value
+ Dim Players As String = signature..Value
+ Dim Mapsv As String = signature.