diff --git a/Assets/OrbisModuleManager/OrbisModuleManager.ico b/Assets/OrbisLibraryManager/OrbisLibraryManager.ico
similarity index 100%
rename from Assets/OrbisModuleManager/OrbisModuleManager.ico
rename to Assets/OrbisLibraryManager/OrbisLibraryManager.ico
diff --git a/External/SimpleUI b/External/SimpleUI
index c122d1a..908a1bc 160000
--- a/External/SimpleUI
+++ b/External/SimpleUI
@@ -1 +1 @@
-Subproject commit c122d1a82597af7d8b6bc346beb4cef6e8322892
+Subproject commit 908a1bc261473cc0304f208c7270fa3365609cb6
diff --git a/Orbis Suite 3.0.sln b/Orbis Suite 3.0.sln
index b113663..1f24c79 100644
--- a/Orbis Suite 3.0.sln
+++ b/Orbis Suite 3.0.sln
@@ -54,6 +54,8 @@ Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "DummyInstaller", "Windows\I
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SetupBA", "Windows\Installer\SetupBA\SetupBA.csproj", "{33C378F9-36C5-4C2C-8350-FD1C8DD5AB66}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrbisLibraryManager", "OrbisLibraryManager\OrbisLibraryManager.csproj", "{4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -226,6 +228,22 @@ Global
{33C378F9-36C5-4C2C-8350-FD1C8DD5AB66}.Release|x64.Build.0 = Release|Any CPU
{33C378F9-36C5-4C2C-8350-FD1C8DD5AB66}.Release|x86.ActiveCfg = Release|Any CPU
{33C378F9-36C5-4C2C-8350-FD1C8DD5AB66}.Release|x86.Build.0 = Release|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|Win32.Build.0 = Debug|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|x64.Build.0 = Debug|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|x86.Build.0 = Debug|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|Win32.ActiveCfg = Release|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|Win32.Build.0 = Release|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|x64.ActiveCfg = Release|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|x64.Build.0 = Release|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|x86.ActiveCfg = Release|Any CPU
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -244,6 +262,7 @@ Global
{0978D0B2-FFA5-42B2-81AC-0CFD85DE9184} = {6046C772-BE17-4BC8-A362-AD8C77F9178E}
{A37095E9-80BD-4A6B-AF8B-33D278CF92F3} = {6046C772-BE17-4BC8-A362-AD8C77F9178E}
{33C378F9-36C5-4C2C-8350-FD1C8DD5AB66} = {6046C772-BE17-4BC8-A362-AD8C77F9178E}
+ {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC} = {8F0E1457-FB1E-47A4-9DA8-74A6B757CAA4}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4B6EE1D0-5ADF-44A2-B6EE-E5C8E110EE47}
diff --git a/OrbisLibraryManager/App.xaml b/OrbisLibraryManager/App.xaml
new file mode 100644
index 0000000..e8bed8c
--- /dev/null
+++ b/OrbisLibraryManager/App.xaml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OrbisLibraryManager/App.xaml.cs b/OrbisLibraryManager/App.xaml.cs
new file mode 100644
index 0000000..66c7bdb
--- /dev/null
+++ b/OrbisLibraryManager/App.xaml.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace OrbisLibraryManager
+{
+ ///
+ /// Interaction logic for App.xaml
+ ///
+ public partial class App : Application
+ {
+ }
+}
diff --git a/OrbisLibraryManager/AssemblyInfo.cs b/OrbisLibraryManager/AssemblyInfo.cs
new file mode 100644
index 0000000..8b5504e
--- /dev/null
+++ b/OrbisLibraryManager/AssemblyInfo.cs
@@ -0,0 +1,10 @@
+using System.Windows;
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
diff --git a/OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml b/OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml
new file mode 100644
index 0000000..6b4da41
--- /dev/null
+++ b/OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml.cs b/OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml.cs
new file mode 100644
index 0000000..ccf90cf
--- /dev/null
+++ b/OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml.cs
@@ -0,0 +1,112 @@
+using OrbisSuite;
+using OrbisSuite.Common.Database;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace OrbisLibraryManager.Controls
+{
+ ///
+ /// Interaction logic for CurrentTargetDisplay.xaml
+ ///
+ public partial class CurrentTargetDisplay : UserControl
+ {
+ public CurrentTargetDisplay()
+ {
+ InitializeComponent();
+
+ OrbisLib.Instance.Events.DBTouched += Events_DBTouched;
+ OrbisLib.Instance.Events.TargetStateChanged += Events_TargetStateChanged;
+ RefreshTarget();
+ }
+
+ private void Events_TargetStateChanged(object? sender, TargetStateChangedEvent e)
+ {
+ Dispatcher.Invoke(() => { RefreshTarget(); });
+ }
+
+ private void Events_DBTouched(object? sender, DBTouchedEvent e)
+ {
+ Dispatcher.Invoke(() => { RefreshTarget(); });
+ }
+
+ private void RefreshTarget()
+ {
+ var CurrentTarget = OrbisLib.Instance.SelectedTarget.Info;
+
+ if (CurrentTarget != null)
+ {
+ switch (CurrentTarget.Status)
+ {
+ case TargetStatusType.Offline:
+ CurrentTargetState.Fill = new SolidColorBrush(Color.FromRgb(255, 0, 0));
+ CurrentTargetState.ToolTip = "Offline";
+ break;
+
+ case TargetStatusType.Online:
+ CurrentTargetState.Fill = new SolidColorBrush(Color.FromRgb(255, 140, 0));
+ CurrentTargetState.ToolTip = "Online";
+ break;
+
+ case TargetStatusType.APIAvailable:
+ CurrentTargetState.Fill = new SolidColorBrush(Color.FromRgb(0, 128, 0));
+ CurrentTargetState.ToolTip = "Online & API Available";
+ break;
+
+ default:
+ CurrentTargetState.Fill = new SolidColorBrush(Color.FromRgb(255, 0, 0));
+ CurrentTargetState.ToolTip = "Unknown";
+ break;
+ }
+
+ CurrentTargetName.Text = CurrentTarget.IsDefault ? $"★{CurrentTarget.Name}" : CurrentTarget.Name;
+
+ if (CurrentTarget.CurrentTitleID == null || !Regex.IsMatch(CurrentTarget.CurrentTitleID, @"CUSA\d{5}"))
+ {
+ CurrentTargetTitleName.Text = "Unknown Title";
+ CurrentTargetTitleId.Text = "-";
+ CurrentTargetTitleImage.Source = new BitmapImage(new Uri("pack://application:,,,/OrbisLibraryManager;component/Images/DefaultTitleIcon.png"));
+ }
+ else
+ {
+ var Title = new TMDB(CurrentTarget.CurrentTitleID);
+ Regex rgx = new Regex(@"[^0-9a-zA-Z +.:']");
+ CurrentTargetTitleName.Text = Title.Names.First();
+ CurrentTargetTitleId.Text = Title.NPTitleID;
+ var test = Title.BGM;
+ CurrentTargetTitleImage.Source = new BitmapImage(new Uri(Title.Icons.First()));
+ }
+ }
+ }
+
+ private void CurrentTargetTitleImage_MouseDown(object sender, MouseButtonEventArgs e)
+ {
+ var CurrentTarget = OrbisLib.Instance.SelectedTarget.Info;
+
+ if (CurrentTarget != null && CurrentTarget.CurrentTitleID != null && Regex.IsMatch(CurrentTarget.CurrentTitleID, @"CUSA\d{5}"))
+ {
+ var Title = new TMDB(CurrentTarget.CurrentTitleID);
+ var url = $"https://store.playstation.com/product/{Title.ContentID}/";
+
+ System.Diagnostics.Process.Start(new ProcessStartInfo
+ {
+ FileName = url,
+ UseShellExecute = true
+ });
+ }
+ }
+ }
+}
diff --git a/OrbisLibraryManager/Controls/ImageButton.xaml b/OrbisLibraryManager/Controls/ImageButton.xaml
new file mode 100644
index 0000000..51c73a6
--- /dev/null
+++ b/OrbisLibraryManager/Controls/ImageButton.xaml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/OrbisLibraryManager/Controls/ImageButton.xaml.cs b/OrbisLibraryManager/Controls/ImageButton.xaml.cs
new file mode 100644
index 0000000..1e28f2a
--- /dev/null
+++ b/OrbisLibraryManager/Controls/ImageButton.xaml.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace OrbisLibraryManager.Controls
+{
+ ///
+ /// Interaction logic for ImageButton.xaml
+ ///
+ public partial class ImageButton : UserControl
+ {
+ public event EventHandler? Click;
+
+ public ImageButton()
+ {
+ InitializeComponent();
+ }
+
+ public string ImageSource
+ {
+ get { return (string)GetValue(ImageSourceProperty); }
+ set { SetValue(ImageSourceProperty, value); }
+ }
+
+ public static readonly DependencyProperty ImageSourceProperty =
+ DependencyProperty.Register("ImageSource", typeof(string), typeof(ImageButton), new PropertyMetadata(string.Empty, ImageSource_Changed));
+
+ private static void ImageSource_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
+ {
+ var currentControl = (ImageButton)d;
+ currentControl.ButtonImage.Source = new BitmapImage(new Uri($"pack://application:,,,{(string)e.NewValue}"));
+ currentControl.ButtonImage.Opacity = currentControl.IsEnabled ? 1 : 0.5;
+ }
+
+ public int ImageMargin
+ {
+ get { return (int)GetValue(ImageMarginProperty); }
+ set { SetValue(ImageMarginProperty, value); }
+ }
+
+ public static readonly DependencyProperty ImageMarginProperty =
+ DependencyProperty.Register("ImageMargin", typeof(int), typeof(ImageButton), new PropertyMetadata(0));
+
+ private void ImageButtonElement_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
+ {
+ ButtonImage.Source = new BitmapImage(new Uri($"pack://application:,,,{ImageSource}"));
+ ButtonImage.Opacity = IsEnabled ? 1 : 0.5;
+ }
+
+ private void SimpleButton_Click(object sender, RoutedEventArgs e)
+ {
+ Click?.Invoke(sender, e);
+ }
+ }
+}
diff --git a/OrbisLibraryManager/Images/Attached.png b/OrbisLibraryManager/Images/Attached.png
new file mode 100644
index 0000000..8a0429a
Binary files /dev/null and b/OrbisLibraryManager/Images/Attached.png differ
diff --git a/OrbisLibraryManager/Images/DefaultTitleIcon.png b/OrbisLibraryManager/Images/DefaultTitleIcon.png
new file mode 100644
index 0000000..089293a
Binary files /dev/null and b/OrbisLibraryManager/Images/DefaultTitleIcon.png differ
diff --git a/OrbisLibraryManager/Images/Detached.png b/OrbisLibraryManager/Images/Detached.png
new file mode 100644
index 0000000..9dc8e78
Binary files /dev/null and b/OrbisLibraryManager/Images/Detached.png differ
diff --git a/OrbisLibraryManager/Images/KillProcess.png b/OrbisLibraryManager/Images/KillProcess.png
new file mode 100644
index 0000000..202ef8b
Binary files /dev/null and b/OrbisLibraryManager/Images/KillProcess.png differ
diff --git a/OrbisLibraryManager/Images/RestMode.png b/OrbisLibraryManager/Images/RestMode.png
new file mode 100644
index 0000000..c0d42be
Binary files /dev/null and b/OrbisLibraryManager/Images/RestMode.png differ
diff --git a/OrbisLibraryManager/Images/Restart.png b/OrbisLibraryManager/Images/Restart.png
new file mode 100644
index 0000000..44fb5d3
Binary files /dev/null and b/OrbisLibraryManager/Images/Restart.png differ
diff --git a/OrbisLibraryManager/Images/Send.png b/OrbisLibraryManager/Images/Send.png
new file mode 100644
index 0000000..2272ca5
Binary files /dev/null and b/OrbisLibraryManager/Images/Send.png differ
diff --git a/OrbisLibraryManager/Images/Shutdown.png b/OrbisLibraryManager/Images/Shutdown.png
new file mode 100644
index 0000000..bf3aae0
Binary files /dev/null and b/OrbisLibraryManager/Images/Shutdown.png differ
diff --git a/OrbisLibraryManager/OrbisLibraryManager.csproj b/OrbisLibraryManager/OrbisLibraryManager.csproj
new file mode 100644
index 0000000..ed52a8c
--- /dev/null
+++ b/OrbisLibraryManager/OrbisLibraryManager.csproj
@@ -0,0 +1,95 @@
+
+
+
+ WinExe
+ net6.0-windows
+ enable
+ true
+ OrbisLibraryManager.ico
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+
+
+
+
+
+ ..\External\SimpleUI\SimpleUI\bin\Debug\net6.0-windows\Microsoft.Expression.Drawing.dll
+
+
+ ..\External\SimpleUI\SimpleUI\bin\Debug\net6.0-windows\SimpleUI.dll
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+
+ Code
+
+
+ Code
+
+
+
+
+
+ $(DefaultXamlRuntime)
+ Designer
+
+
+ $(DefaultXamlRuntime)
+ Designer
+
+
+
+
diff --git a/OrbisLibraryManager/OrbisLibraryManager.ico b/OrbisLibraryManager/OrbisLibraryManager.ico
new file mode 100644
index 0000000..cb4074d
Binary files /dev/null and b/OrbisLibraryManager/OrbisLibraryManager.ico differ
diff --git a/OrbisLibraryManager/OrbisLibraryManager.xaml b/OrbisLibraryManager/OrbisLibraryManager.xaml
new file mode 100644
index 0000000..dd05b7d
--- /dev/null
+++ b/OrbisLibraryManager/OrbisLibraryManager.xaml
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OrbisLibraryManager/OrbisLibraryManager.xaml.cs b/OrbisLibraryManager/OrbisLibraryManager.xaml.cs
new file mode 100644
index 0000000..2e9d419
--- /dev/null
+++ b/OrbisLibraryManager/OrbisLibraryManager.xaml.cs
@@ -0,0 +1,29 @@
+using SimpleUI.Controls;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace OrbisLibraryManager
+{
+ ///
+ /// Interaction logic for MainWindow.xaml
+ ///
+ public partial class MainWindow : SimpleWindow
+ {
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/Playstation/OrbisToolbox-2.0/Debug.h b/Playstation/OrbisToolbox-2.0/Debug.h
index 26974ff..6f31133 100644
--- a/Playstation/OrbisToolbox-2.0/Debug.h
+++ b/Playstation/OrbisToolbox-2.0/Debug.h
@@ -8,5 +8,7 @@ public:
void HandleAPI(OrbisNetId Sock, APIPacket* Packet);
private:
+ bool IsDebugging;
+ int CurrentPID;
};
diff --git a/Playstation/OrbisToolbox-2.0/Version.h b/Playstation/OrbisToolbox-2.0/Version.h
index 62fe041..8ebf8ed 100644
--- a/Playstation/OrbisToolbox-2.0/Version.h
+++ b/Playstation/OrbisToolbox-2.0/Version.h
@@ -1,11 +1,11 @@
-#pragma once
-#define ORBIS_TOOLBOX_MAJOR 2
-#define ORBIS_TOOLBOX_MINOR 0
-#define ORBIS_TOOLBOX_BUILDVERSION 196
-#define stringify(a) stringify_(a)
-#define stringify_(a) #a
-#if defined(ORBIS_TOOLBOX_DEBUG)
-#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Dev Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__)
-#else
-#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__)
-#endif
+#pragma once
+#define ORBIS_TOOLBOX_MAJOR 2
+#define ORBIS_TOOLBOX_MINOR 0
+#define ORBIS_TOOLBOX_BUILDVERSION 198
+#define stringify(a) stringify_(a)
+#define stringify_(a) #a
+#if defined(ORBIS_TOOLBOX_DEBUG)
+#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Dev Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__)
+#else
+#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__)
+#endif
diff --git a/Windows/OrbisNeighborHood/MVVM/View/DashboardView.xaml b/Windows/OrbisNeighborHood/MVVM/View/DashboardView.xaml
index ba22674..97fb88d 100644
--- a/Windows/OrbisNeighborHood/MVVM/View/DashboardView.xaml
+++ b/Windows/OrbisNeighborHood/MVVM/View/DashboardView.xaml
@@ -399,8 +399,8 @@
diff --git a/Windows/OrbisNeighborHood/NeighborHood.xaml b/Windows/OrbisNeighborHood/NeighborHood.xaml
index c0c84b5..4446609 100644
--- a/Windows/OrbisNeighborHood/NeighborHood.xaml
+++ b/Windows/OrbisNeighborHood/NeighborHood.xaml
@@ -70,6 +70,10 @@
+
+