expose custom config to plugins
add support for some basic game parameters to be set via custom config
This commit is contained in:
@@ -4,6 +4,7 @@ using System.Linq;
|
|||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
using Torch.API.Managers;
|
using Torch.API.Managers;
|
||||||
using Torch.API.Session;
|
using Torch.API.Session;
|
||||||
using VRage.Game.ModAPI;
|
using VRage.Game.ModAPI;
|
||||||
@@ -26,6 +27,11 @@ namespace Torch.API
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
ITorchConfig Config { get; }
|
ITorchConfig Config { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Extended Configuration for the current instance.
|
||||||
|
/// </summary>
|
||||||
|
IConfiguration Configuration { get; }
|
||||||
|
|
||||||
/// <inheritdoc cref="IPluginManager"/>
|
/// <inheritdoc cref="IPluginManager"/>
|
||||||
[Obsolete]
|
[Obsolete]
|
||||||
IPluginManager Plugins { get; }
|
IPluginManager Plugins { get; }
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="JorgeSerrano.Json.JsonSnakeCaseNamingPolicy" Version="0.9.0" />
|
<PackageReference Include="JorgeSerrano.Json.JsonSnakeCaseNamingPolicy" Version="0.9.0" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="7.0.4" />
|
||||||
<PackageReference Include="NLog" Version="5.1.0" />
|
<PackageReference Include="NLog" Version="5.1.0" />
|
||||||
<PackageReference Include="NuGet.Commands" Version="6.4.0" />
|
<PackageReference Include="NuGet.Commands" Version="6.4.0" />
|
||||||
<PackageReference Include="NuGet.DependencyResolver.Core" Version="6.4.0" />
|
<PackageReference Include="NuGet.DependencyResolver.Core" Version="6.4.0" />
|
||||||
|
@@ -8,6 +8,15 @@
|
|||||||
"resolved": "0.9.0",
|
"resolved": "0.9.0",
|
||||||
"contentHash": "xCqODS+wzpUXNtg4bMMvXG5PLbP0iTwRzRn2R+zWHKm83E6tbV2bCagawXp1EnZeNpd5OXpMxehulZWns8efzQ=="
|
"contentHash": "xCqODS+wzpUXNtg4bMMvXG5PLbP0iTwRzRn2R+zWHKm83E6tbV2bCagawXp1EnZeNpd5OXpMxehulZWns8efzQ=="
|
||||||
},
|
},
|
||||||
|
"Microsoft.Extensions.Configuration.Binder": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[7.0.4, )",
|
||||||
|
"resolved": "7.0.4",
|
||||||
|
"contentHash": "8+XPvJnHZsYgHOQlcMuQe7QNF5KdVKHH1F/wW3nd8/u81Gk/XFAYMDP0Lpz18h7/AM95M662vvqMorcYxCBB4w==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Configuration.Abstractions": "7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"NLog": {
|
"NLog": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[5.1.0, )",
|
"requested": "[5.1.0, )",
|
||||||
@@ -64,6 +73,19 @@
|
|||||||
"resolved": "6.0.0",
|
"resolved": "6.0.0",
|
||||||
"contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg=="
|
"contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg=="
|
||||||
},
|
},
|
||||||
|
"Microsoft.Extensions.Configuration.Abstractions": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "7.0.0",
|
||||||
|
"contentHash": "f34u2eaqIjNO9YLHBz8rozVZ+TcFiFs0F3r7nUJd7FRkVSxk8u4OpoK226mi49MwexHOR2ibP9MFvRUaLilcQQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Primitives": "7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Primitives": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "7.0.0",
|
||||||
|
"contentHash": "um1KU5kxcRp3CNuI8o/GrZtD4AIOXDk+RLsytjZ9QPok3ttLUelLKpilVPuaFT3TFjOhSibUAso0odbOaCDj3Q=="
|
||||||
|
},
|
||||||
"Newtonsoft.Json": {
|
"Newtonsoft.Json": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "13.0.1",
|
"resolved": "13.0.1",
|
||||||
|
@@ -85,9 +85,9 @@ namespace Torch.Server
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Run()
|
public void Run(IConfiguration configuration)
|
||||||
{
|
{
|
||||||
_server = new TorchServer(Config, ApplicationContext.Current.InstanceDirectory.FullName, ApplicationContext.Current.InstanceName);
|
_server = new TorchServer(Config, ApplicationContext.Current.InstanceDirectory.FullName, ApplicationContext.Current.InstanceName, configuration);
|
||||||
|
|
||||||
if (ApplicationContext.Current.IsService || Config.NoGui)
|
if (ApplicationContext.Current.IsService || Config.NoGui)
|
||||||
{
|
{
|
||||||
|
@@ -39,7 +39,7 @@ namespace Torch.Server
|
|||||||
context.GameBinariesDirectory.FullName);
|
context.GameBinariesDirectory.FullName);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
initializer.Run();
|
initializer.Run(configuration);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetupLogging(IApplicationContext context, IConfiguration configuration)
|
private static void SetupLogging(IApplicationContext context, IConfiguration configuration)
|
||||||
|
@@ -8,6 +8,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using Microsoft.Diagnostics.Runtime;
|
using Microsoft.Diagnostics.Runtime;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
using NLog;
|
using NLog;
|
||||||
using PropertyChanged;
|
using PropertyChanged;
|
||||||
using Sandbox;
|
using Sandbox;
|
||||||
@@ -46,8 +47,9 @@ namespace Torch.Server
|
|||||||
|
|
||||||
//Here to trigger rebuild
|
//Here to trigger rebuild
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public TorchServer(ITorchConfig config, string instancePath, string instanceName) : base(config)
|
public TorchServer(ITorchConfig config, string instancePath, string instanceName, IConfiguration configuration) : base(config)
|
||||||
{
|
{
|
||||||
|
Configuration = configuration;
|
||||||
InstancePath = instancePath;
|
InstancePath = instancePath;
|
||||||
InstanceName = instanceName;
|
InstanceName = instanceName;
|
||||||
DedicatedInstance = new InstanceManager(this);
|
DedicatedInstance = new InstanceManager(this);
|
||||||
@@ -136,6 +138,8 @@ namespace Torch.Server
|
|||||||
Log.Info($"Initialized server '{InstanceName}' at '{InstancePath}'");
|
Log.Info($"Initialized server '{InstanceName}' at '{InstancePath}'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override IConfiguration Configuration { get; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public override void Start()
|
public override void Start()
|
||||||
{
|
{
|
||||||
|
@@ -601,6 +601,7 @@
|
|||||||
"type": "Project",
|
"type": "Project",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"JorgeSerrano.Json.JsonSnakeCaseNamingPolicy": "[0.9.0, )",
|
"JorgeSerrano.Json.JsonSnakeCaseNamingPolicy": "[0.9.0, )",
|
||||||
|
"Microsoft.Extensions.Configuration.Binder": "[7.0.4, )",
|
||||||
"NLog": "[5.1.0, )",
|
"NLog": "[5.1.0, )",
|
||||||
"NuGet.Commands": "[6.4.0, )",
|
"NuGet.Commands": "[6.4.0, )",
|
||||||
"NuGet.DependencyResolver.Core": "[6.4.0, )",
|
"NuGet.DependencyResolver.Core": "[6.4.0, )",
|
||||||
|
@@ -5,6 +5,7 @@ using System.Reflection;
|
|||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
using NLog;
|
using NLog;
|
||||||
using Sandbox;
|
using Sandbox;
|
||||||
using Sandbox.Game;
|
using Sandbox.Game;
|
||||||
@@ -59,6 +60,8 @@ namespace Torch
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public ITorchConfig Config { get; protected set; }
|
public ITorchConfig Config { get; protected set; }
|
||||||
|
|
||||||
|
public abstract IConfiguration Configuration { get; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public SemanticVersioning.Version TorchVersion { get; }
|
public SemanticVersioning.Version TorchVersion { get; }
|
||||||
public string InstancePath { get; protected init;}
|
public string InstancePath { get; protected init;}
|
||||||
|
@@ -8,6 +8,7 @@ using System.Text;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Havok;
|
using Havok;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NLog.Fluent;
|
using NLog.Fluent;
|
||||||
using Sandbox;
|
using Sandbox;
|
||||||
@@ -30,6 +31,7 @@ using VRage.Dedicated;
|
|||||||
using VRage.EOS;
|
using VRage.EOS;
|
||||||
using VRage.FileSystem;
|
using VRage.FileSystem;
|
||||||
using VRage.Game;
|
using VRage.Game;
|
||||||
|
using VRage.Game.ModAPI;
|
||||||
using VRage.Game.ObjectBuilder;
|
using VRage.Game.ObjectBuilder;
|
||||||
using VRage.Game.SessionComponents;
|
using VRage.Game.SessionComponents;
|
||||||
using VRage.GameServices;
|
using VRage.GameServices;
|
||||||
@@ -169,8 +171,11 @@ namespace Torch
|
|||||||
MyInitializer.InvokeBeforeRun(_appSteamId, _appName, MyVRage.Platform.System.GetRootPath(), _userDataPath);
|
MyInitializer.InvokeBeforeRun(_appSteamId, _appName, MyVRage.Platform.System.GetRootPath(), _userDataPath);
|
||||||
|
|
||||||
_log.Info("Loading Dedicated Config");
|
_log.Info("Loading Dedicated Config");
|
||||||
|
|
||||||
// object created in SpaceEngineersGame.SetupPerGameSettings()
|
// object created in SpaceEngineersGame.SetupPerGameSettings()
|
||||||
MySandboxGame.ConfigDedicated.Load();
|
MySandboxGame.ConfigDedicated.Load();
|
||||||
|
ApplyConfiguration(MySandboxGame.ConfigDedicated);
|
||||||
|
|
||||||
MyPlatformGameSettings.CONSOLE_COMPATIBLE = MySandboxGame.ConfigDedicated.ConsoleCompatibility;
|
MyPlatformGameSettings.CONSOLE_COMPATIBLE = MySandboxGame.ConfigDedicated.ConsoleCompatibility;
|
||||||
|
|
||||||
//Type.GetType("VRage.Steam.MySteamService, VRage.Steam").GetProperty("IsActive").GetSetMethod(true).Invoke(service, new object[] {SteamAPI.Init()});
|
//Type.GetType("VRage.Steam.MySteamService, VRage.Steam").GetProperty("IsActive").GetSetMethod(true).Invoke(service, new object[] {SteamAPI.Init()});
|
||||||
@@ -302,6 +307,18 @@ namespace Torch
|
|||||||
MyGlobalTypeMetadata.Static.Init(false);
|
MyGlobalTypeMetadata.Static.Init(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ApplyConfiguration(IMyConfigDedicated dedicated)
|
||||||
|
{
|
||||||
|
var config = _torch.Configuration.GetSection("DedicatedServer");
|
||||||
|
|
||||||
|
dedicated.ServerPort = config.GetValue("Port", dedicated.ServerPort);
|
||||||
|
dedicated.ConsoleCompatibility = config.GetValue("ConsoleCompatibility", dedicated.ConsoleCompatibility);
|
||||||
|
dedicated.IP = config.GetValue("Ip", dedicated.IP);
|
||||||
|
dedicated.WorldName = config.GetValue("WorldName", dedicated.WorldName);
|
||||||
|
dedicated.ServerName = config.GetValue("ServerName", dedicated.ServerName);
|
||||||
|
dedicated.ServerDescription = config.GetValue("ServerDescription", dedicated.ServerDescription);
|
||||||
|
}
|
||||||
|
|
||||||
private void Destroy()
|
private void Destroy()
|
||||||
{
|
{
|
||||||
_game.Dispose();
|
_game.Dispose();
|
||||||
|
@@ -145,6 +145,27 @@
|
|||||||
"resolved": "3.3.3",
|
"resolved": "3.3.3",
|
||||||
"contentHash": "j/rOZtLMVJjrfLRlAMckJLPW/1rze9MT1yfWqSIbUPGRu1m1P0fuo9PmqapwsmePfGB5PJrudQLvmUOAMF0DqQ=="
|
"contentHash": "j/rOZtLMVJjrfLRlAMckJLPW/1rze9MT1yfWqSIbUPGRu1m1P0fuo9PmqapwsmePfGB5PJrudQLvmUOAMF0DqQ=="
|
||||||
},
|
},
|
||||||
|
"Microsoft.Extensions.Configuration.Abstractions": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "7.0.0",
|
||||||
|
"contentHash": "f34u2eaqIjNO9YLHBz8rozVZ+TcFiFs0F3r7nUJd7FRkVSxk8u4OpoK226mi49MwexHOR2ibP9MFvRUaLilcQQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Primitives": "7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Configuration.Binder": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "7.0.4",
|
||||||
|
"contentHash": "8+XPvJnHZsYgHOQlcMuQe7QNF5KdVKHH1F/wW3nd8/u81Gk/XFAYMDP0Lpz18h7/AM95M662vvqMorcYxCBB4w==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Configuration.Abstractions": "7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Primitives": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "7.0.0",
|
||||||
|
"contentHash": "um1KU5kxcRp3CNuI8o/GrZtD4AIOXDk+RLsytjZ9QPok3ttLUelLKpilVPuaFT3TFjOhSibUAso0odbOaCDj3Q=="
|
||||||
|
},
|
||||||
"Microsoft.Xaml.Behaviors.Wpf": {
|
"Microsoft.Xaml.Behaviors.Wpf": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.1.31",
|
"resolved": "1.1.31",
|
||||||
@@ -383,6 +404,7 @@
|
|||||||
"type": "Project",
|
"type": "Project",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"JorgeSerrano.Json.JsonSnakeCaseNamingPolicy": "[0.9.0, )",
|
"JorgeSerrano.Json.JsonSnakeCaseNamingPolicy": "[0.9.0, )",
|
||||||
|
"Microsoft.Extensions.Configuration.Binder": "[7.0.4, )",
|
||||||
"NLog": "[5.1.0, )",
|
"NLog": "[5.1.0, )",
|
||||||
"NuGet.Commands": "[6.4.0, )",
|
"NuGet.Commands": "[6.4.0, )",
|
||||||
"NuGet.DependencyResolver.Core": "[6.4.0, )",
|
"NuGet.DependencyResolver.Core": "[6.4.0, )",
|
||||||
|
Reference in New Issue
Block a user