diff --git a/LANCommander.Playnite.Extension/App.xaml b/LANCommander.Playnite.Extension/App.xaml
new file mode 100644
index 0000000..5b208c5
--- /dev/null
+++ b/LANCommander.Playnite.Extension/App.xaml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/LANCommander.Playnite.Extension/LANCommander.Playnite.Extension.csproj b/LANCommander.Playnite.Extension/LANCommander.Playnite.Extension.csproj
new file mode 100644
index 0000000..c909c3c
--- /dev/null
+++ b/LANCommander.Playnite.Extension/LANCommander.Playnite.Extension.csproj
@@ -0,0 +1,78 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {F9EB13D4-8FD9-4095-B934-F7EC681E6901}
+ Library
+ Properties
+ LANCommander.Playnite.Extension
+ LANCommander.Playnite.Extension
+ v4.6.2
+ 512
+ true
+
+
+ true
+ full
+ false
+ ..\..\..\..\Games\Playnite\Extensions\LANCommander\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\packages\PlayniteSDK.6.8.0\lib\net462\Playnite.SDK.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PlayniteSettingsView.xaml
+
+
+
+
+
+
+
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+
+
\ No newline at end of file
diff --git a/LANCommander.Playnite.Extension/Localization/en_US.xaml b/LANCommander.Playnite.Extension/Localization/en_US.xaml
new file mode 100644
index 0000000..3af9acd
--- /dev/null
+++ b/LANCommander.Playnite.Extension/Localization/en_US.xaml
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file
diff --git a/LANCommander.Playnite.Extension/PlayniteClient.cs b/LANCommander.Playnite.Extension/PlayniteClient.cs
new file mode 100644
index 0000000..c630116
--- /dev/null
+++ b/LANCommander.Playnite.Extension/PlayniteClient.cs
@@ -0,0 +1,19 @@
+using Playnite.SDK;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LANCommander.Playnite.Extension
+{
+ public class PlayniteClient : LibraryClient
+ {
+ public override bool IsInstalled => true;
+
+ public override void Open()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/LANCommander.Playnite.Extension/PlayniteLibraryPlugin.cs b/LANCommander.Playnite.Extension/PlayniteLibraryPlugin.cs
new file mode 100644
index 0000000..da98550
--- /dev/null
+++ b/LANCommander.Playnite.Extension/PlayniteLibraryPlugin.cs
@@ -0,0 +1,47 @@
+using Playnite.SDK;
+using Playnite.SDK.Models;
+using Playnite.SDK.Plugins;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Controls;
+
+namespace LANCommander.Playnite.Extension
+{
+ public class PlayniteLibraryPlugin : LibraryPlugin
+ {
+ public static readonly ILogger Logger = LogManager.GetLogger();
+ private SettingsViewModel Settings { get; set; }
+
+ public override Guid Id { get; } = Guid.Parse("48e1bac7-e0a0-45d7-ba83-36f5e9e959fc");
+ public override string Name => "LANCommander";
+ public override LibraryClient Client { get; } = new PlayniteClient();
+
+ public PlayniteLibraryPlugin(IPlayniteAPI api) : base(api)
+ {
+ Settings = new SettingsViewModel(this);
+ Properties = new LibraryPluginProperties
+ {
+ HasSettings = true,
+ };
+ }
+
+ public override IEnumerable GetGames(LibraryGetGamesArgs args)
+ {
+ // Implement LANCommander client here
+ return new List();
+ }
+
+ public override ISettings GetSettings(bool firstRunSettings)
+ {
+ return base.GetSettings(firstRunSettings);
+ }
+
+ public override UserControl GetSettingsView(bool firstRunView)
+ {
+ return base.GetSettingsView(firstRunView);
+ }
+ }
+}
diff --git a/LANCommander.Playnite.Extension/PlayniteSettings.cs b/LANCommander.Playnite.Extension/PlayniteSettings.cs
new file mode 100644
index 0000000..13af1f5
--- /dev/null
+++ b/LANCommander.Playnite.Extension/PlayniteSettings.cs
@@ -0,0 +1,58 @@
+using Playnite.SDK;
+using Playnite.SDK.Data;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LANCommander.Playnite.Extension
+{
+ public class PlayniteSettings : ObservableObject
+ {
+ private string Option1 = String.Empty;
+ private bool Option2 = false;
+ private bool OptionThatWontBeSaved = false;
+ }
+
+ public class SettingsViewModel : ObservableObject, ISettings
+ {
+ private readonly PlayniteLibraryPlugin Plugin;
+ private PlayniteSettings EditingClone { get; set; }
+ private PlayniteSettings Settings { get; set; }
+
+ public SettingsViewModel(PlayniteLibraryPlugin plugin)
+ {
+ Plugin = plugin;
+
+ var savedSettings = Plugin.LoadPluginSettings();
+
+ if (savedSettings != null)
+ Settings = savedSettings;
+ else
+ Settings = new PlayniteSettings();
+ }
+
+ public void BeginEdit()
+ {
+ EditingClone = Serialization.GetClone(Settings);
+ }
+
+ public void CancelEdit()
+ {
+ Settings = EditingClone;
+ }
+
+ public void EndEdit()
+ {
+ Plugin.SavePluginSettings(Settings);
+ }
+
+ public bool VerifySettings(out List errors)
+ {
+ errors = new List();
+
+ return true;
+ }
+ }
+}
diff --git a/LANCommander.Playnite.Extension/PlayniteSettingsView.xaml b/LANCommander.Playnite.Extension/PlayniteSettingsView.xaml
new file mode 100644
index 0000000..9268644
--- /dev/null
+++ b/LANCommander.Playnite.Extension/PlayniteSettingsView.xaml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/LANCommander.Playnite.Extension/PlayniteSettingsView.xaml.cs b/LANCommander.Playnite.Extension/PlayniteSettingsView.xaml.cs
new file mode 100644
index 0000000..f253cd9
--- /dev/null
+++ b/LANCommander.Playnite.Extension/PlayniteSettingsView.xaml.cs
@@ -0,0 +1,25 @@
+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 LANCommander.Playnite.Extension
+{
+ public partial class PlayniteSettingsView : UserControl
+ {
+ public PlayniteSettingsView()
+ {
+
+ }
+ }
+}
diff --git a/LANCommander.Playnite.Extension/Properties/AssemblyInfo.cs b/LANCommander.Playnite.Extension/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..4ea9728
--- /dev/null
+++ b/LANCommander.Playnite.Extension/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("LANCommander.Playnite.Extension")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("LANCommander.Playnite.Extension")]
+[assembly: AssemblyCopyright("Copyright © 2023")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("f9eb13d4-8fd9-4095-b934-f7ec681e6901")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/LANCommander.Playnite.Extension/extension.yaml b/LANCommander.Playnite.Extension/extension.yaml
new file mode 100644
index 0000000..b37fd3d
--- /dev/null
+++ b/LANCommander.Playnite.Extension/extension.yaml
@@ -0,0 +1,7 @@
+Id: LANCommander.Playnite.Extension_48e1bac7-e0a0-45d7-ba83-36f5e9e959fc
+Name: LANCommander Playnite Extension
+Author: Pat Hartl
+Version: 1.0
+Module: LANCommander.Playnite.Extension.dll
+Type: GameLibrary
+Icon: icon.png
\ No newline at end of file
diff --git a/LANCommander.Playnite.Extension/packages.config b/LANCommander.Playnite.Extension/packages.config
new file mode 100644
index 0000000..c555305
--- /dev/null
+++ b/LANCommander.Playnite.Extension/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/LANCommander.db.bak b/LANCommander.db.bak
new file mode 100644
index 0000000..95093e5
Binary files /dev/null and b/LANCommander.db.bak differ
diff --git a/LANCommander.sln b/LANCommander.sln
index 21ab6a1..90c7074 100644
--- a/LANCommander.sln
+++ b/LANCommander.sln
@@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.1.32328.378
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LANCommander", "LANCommander.csproj", "{C64D17A8-CDB3-4D1E-858F-6CF05B6FED4D}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LANCommander", "LANCommander.csproj", "{C64D17A8-CDB3-4D1E-858F-6CF05B6FED4D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LANCommander.Playnite.Extension", "LANCommander.Playnite.Extension\LANCommander.Playnite.Extension.csproj", "{F9EB13D4-8FD9-4095-B934-F7EC681E6901}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -15,6 +17,10 @@ Global
{C64D17A8-CDB3-4D1E-858F-6CF05B6FED4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C64D17A8-CDB3-4D1E-858F-6CF05B6FED4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C64D17A8-CDB3-4D1E-858F-6CF05B6FED4D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F9EB13D4-8FD9-4095-B934-F7EC681E6901}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F9EB13D4-8FD9-4095-B934-F7EC681E6901}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F9EB13D4-8FD9-4095-B934-F7EC681E6901}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F9EB13D4-8FD9-4095-B934-F7EC681E6901}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE