This commit is contained in:
moonheart08 2020-10-08 22:00:24 -05:00
parent 5bec4a5921
commit 50c6173d91
14 changed files with 261 additions and 8 deletions

View file

@ -0,0 +1,12 @@
using Robust.Shared.IoC;
namespace Content.Client
{
internal static class ClientContentIoC
{
public static void Register()
{
// DEVNOTE: IoCManager registrations for the client go here and only here.
}
}
}

View file

@ -0,0 +1,55 @@
using Robust.Shared.ContentPack;
using Robust.Shared.Interfaces.Configuration;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Interfaces.Map;
using Robust.Shared.IoC;
using Robust.Shared.Map;
using Robust.Shared.Prototypes;
using Robust.Shared.Timing;
namespace Content.Client
{
public class EntryPoint: GameClient
{
public override void Init()
{
var factory = IoCManager.Resolve<IComponentFactory>();
var prototypes = IoCManager.Resolve<IPrototypeManager>();
factory.DoAutoRegistrations();
foreach (var ignoreName in IgnoredComponents.List)
{
factory.RegisterIgnore(ignoreName);
}
foreach (var ignoreName in IgnoredPrototypes.List)
{
prototypes.RegisterIgnore(ignoreName);
}
ClientContentIoC.Register();
IoCManager.BuildGraph();
// DEVNOTE: This is generally where you'll be setting up the IoCManager further.
IoCManager.InjectDependencies(this);
}
public override void PostInit()
{
base.PostInit();
// DEVNOTE: Further setup, this is the spot you should start trying to connect to the server from.
}
public override void Update(ModUpdateLevel level, FrameEventArgs frameEventArgs)
{
base.Update(level, frameEventArgs);
// DEVNOTE: Game update loop goes here. Usually you'll want some independent GameTicker.
}
}
}

View file

@ -0,0 +1,9 @@
namespace Content.Client
{
public static class IgnoredComponents
{
public static string[] List => new string[] {
// Stick components you want ignored here.
};
}
}

View file

@ -0,0 +1,9 @@
namespace Content.Client
{
public static class IgnoredPrototypes
{
public static string[] List => new string[] {
// Stick prototypes you want ignored here.
};
}
}

View file

@ -4,9 +4,6 @@ namespace Content.Client
{
internal static class Program
{
public static void Main(string[] args)
{
ContentStart.Start(args);
}
public static void Main(string[] args) => ContentStart.Start(args);
}
}

15
Content.Client/app.config Normal file
View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.86.0.518" newVersion="0.86.0.518" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View file

@ -0,0 +1,41 @@
using Robust.Shared.ContentPack;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Timing;
namespace Content.Server
{
public class EntryPoint: GameServer
{
public override void Init() {
base.Init();
var factory = IoCManager.Resolve<IComponentFactory>();
factory.DoAutoRegistrations();
foreach (var ignoreName in IgnoredComponents.List)
{
factory.RegisterIgnore(ignoreName);
}
ServerContentIoC.Register();
IoCManager.BuildGraph();
// DEVNOTE: This is generally where you'll be setting up the IoCManager further.
}
public override void PostInit()
{
base.PostInit();
// DEVNOTE: Can also initialize IoC stuff more here.
}
public override void Update(ModUpdateLevel level, FrameEventArgs frameEventArgs)
{
base.Update(level, frameEventArgs);
// DEVNOTE: Game update loop goes here. Usually you'll want some independent GameTicker.
}
}
}

View file

@ -0,0 +1,9 @@
namespace Content.Server
{
public static class IgnoredComponents
{
public static string[] List => new string[] {
// Stick components you want ignored here.
};
}
}

View file

@ -4,9 +4,6 @@ namespace Content.Server
{
internal static class Program
{
public static void Main(string[] args)
{
ContentStart.Start(args);
}
public static void Main(string[] args) => ContentStart.Start(args);
}
}

View file

@ -0,0 +1,12 @@
using Robust.Shared.IoC;
namespace Content.Server
{
internal static class ServerContentIoC
{
public static void Register()
{
// DEVNOTE: IoCManager registrations for the server go here and only here.
}
}
}

15
Content.Server/app.config Normal file
View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.86.0.518" newVersion="0.86.0.518" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View file

@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using Robust.Shared.ContentPack;
using Robust.Shared.IoC;
using Robust.Shared.Localization;
using Robust.Shared.Localization.Macros;
using Robust.Shared.Prototypes;
namespace Content.Shared
{
public class EntryPoint: GameShared
{
// See line 25. Controls the default game culture and language.
// Robust calls this culture, but you might find it more fitting to call it the game
// language. Robust doesn't support changing this mid-game. Load your config file early
// if you want that.
private const string Culture = "en-US";
public override void PreInit()
{
Console.WriteLine("BLUH");
IoCManager.InjectDependencies(this);
var textMacroFactory = IoCManager.Resolve<ITextMacroFactory>();
textMacroFactory.DoAutoRegistrations();
// Default to en-US.
// DEVNOTE: If you want your game to be multiregional at runtime, you'll need to
// do something more complicated here.
Loc.LoadCulture(new CultureInfo(Culture));
// TODO: Document what else you might want to put here
}
public override void Init()
{
// TODO: Document what you put here
}
public override void PostInit()
{
base.PostInit();
// DEVNOTE: You might want to put special init handlers for, say, tiles here.
// TODO: Document what else you might want to put here
}
}
}

View file

@ -0,0 +1,21 @@
using Robust.Shared;
using Robust.Shared.Configuration;
namespace Content.Shared
{
// DEVNOTE: This is the same as SS14's CCVars. Except it's not named CCVars as that name is
// hot garbage.
[CVarDefs]
public sealed class GameConfigVars: CVars
{
// Declare persistent game config variables here.
// ```
// public static readonly CVarDef<SerializableType>
// VariableName = CVarDef.Create("namespace.varname", default_value, CVar.TYPE | CVar.OTHERTYPE)
// ```
// This is a good spot to store your database config, among other things.
public static readonly CVarDef<bool>
DummyCVarForTemplate = CVarDef.Create("dummy.whydoineedthis", true, CVar.ARCHIVE);
}
}

15
Content.Shared/app.config Normal file
View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.86.0.518" newVersion="0.86.0.518" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>