Update template to latest RobustToolbox version.

This commit is contained in:
Vera Aguilera Puerto 2021-12-29 12:34:48 +01:00
parent 338a7455ac
commit 2e6af3eb52
8 changed files with 109 additions and 179 deletions

View file

@ -8,68 +8,65 @@ using Robust.Shared.Timing;
// DEVNOTE: You can change the namespace and project name to whatever you want!
// Just make sure to consistently use a prefix across your different projects.
namespace Template.Game
namespace Template.Game;
public class EntryPoint : GameClient
{
public class EntryPoint : GameClient
// See line 35. 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()
{
// See line 35. 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()
{
base.PreInit();
base.PreInit();
// Default to en-US.
// DEVNOTE: If you want your game to be multi-regional at runtime, you'll need to
// do something more complicated here.
IoCManager.Resolve<ILocalizationManager>().LoadCulture(new CultureInfo(Culture));
}
public override void Init()
{
var factory = IoCManager.Resolve<IComponentFactory>();
// DEVNOTE: Registers all of your components.
factory.DoAutoRegistrations();
TemplateIoC.Register();
IoCManager.BuildGraph();
factory.GenerateNetIds();
// DEVNOTE: This is generally where you'll be setting up the IoCManager further, like the tile manager.
}
public override void PostInit()
{
base.PostInit();
// DEVNOTE: Further setup..
// DEVNOTE: This starts the singleplayer mode,
// which means you can start creating entities, spawning things...
// If you want to have a main menu to start the game from instead, use the StateManager.
IoCManager.Resolve<IBaseClient>().StartSinglePlayer();
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
// DEVNOTE: You'll want to do a proper shutdown 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.
}
// Default to en-US.
// DEVNOTE: If you want your game to be multi-regional at runtime, you'll need to
// do something more complicated here.
IoCManager.Resolve<ILocalizationManager>().LoadCulture(new CultureInfo(Culture));
}
public override void Init()
{
var factory = IoCManager.Resolve<IComponentFactory>();
// DEVNOTE: Registers all of your components.
factory.DoAutoRegistrations();
TemplateIoC.Register();
IoCManager.BuildGraph();
factory.GenerateNetIds();
// DEVNOTE: This is generally where you'll be setting up the IoCManager further, like the tile manager.
}
public override void PostInit()
{
base.PostInit();
// DEVNOTE: Further setup..
// DEVNOTE: This starts the singleplayer mode,
// which means you can start creating entities, spawning things...
// If you want to have a main menu to start the game from instead, use the StateManager.
IoCManager.Resolve<IBaseClient>().StartSinglePlayer();
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
// DEVNOTE: You'll want to do a proper shutdown 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

@ -1,21 +1,20 @@
using Robust.Shared;
using Robust.Shared.Configuration;
namespace Template.Game
{
// 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.
namespace Template.Game;
public static readonly CVarDef<bool>
DummyCVarForTemplate = CVarDef.Create("dummy.whydoineedthis", true, CVar.ARCHIVE);
}
// 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);
}

View file

@ -1,11 +1,10 @@
using Robust.Shared.Input;
namespace Template.Game.Input
namespace Template.Game.Input;
[KeyFunctions]
public static class ContentKeyFunctions
{
[KeyFunctions]
public static class ContentKeyFunctions
{
// DEVNOTE: Stick keys you want to be bindable here.
// public static readonly BoundKeyFunction DummyKey = "DummyKey";
}
// DEVNOTE: Stick keys you want to be bindable here.
// public static readonly BoundKeyFunction DummyKey = "DummyKey";
}

View file

@ -1,43 +1,42 @@
using Robust.Client;
namespace Template.Game
namespace Template.Game;
internal static class Program
{
internal static class Program
public static void Main(string[] args)
{
public static void Main(string[] args)
ContentStart.StartLibrary(args, new GameControllerOptions()
{
ContentStart.StartLibrary(args, new GameControllerOptions()
{
// DEVNOTE: Your options here!
// DEVNOTE: Your options here!
// We disable sandboxing given we're using RobustToolbox as a library, and we won't be on the hub.
Sandboxing = false,
// We disable sandboxing given we're using RobustToolbox as a library, and we won't be on the hub.
Sandboxing = false,
// Projects with this prefix will be loaded by the engine.
ContentModulePrefix = "Template.",
// Projects with this prefix will be loaded by the engine.
ContentModulePrefix = "Template.",
// Name of the folder where the game will be built in. Also check Template.Game.csproj:9!
ContentBuildDirectory = "Template.Game",
// Name of the folder where the game will be built in. Also check Template.Game.csproj:9!
ContentBuildDirectory = "Template.Game",
// Default window name. This can also be changed on runtime with the IClyde service.
DefaultWindowTitle = "RobustToolbox Template Game",
// Default window name. This can also be changed on runtime with the IClyde service.
DefaultWindowTitle = "RobustToolbox Template Game",
// This template is singleplayer-only, so we disable connecting to a server from program arguments.
DisableCommandLineConnect = true,
// This template is singleplayer-only, so we disable connecting to a server from program arguments.
DisableCommandLineConnect = true,
// Name of the folder where the user's data (config, etc) will be stored.
UserDataDirectoryName = "Template Game",
// Name of the folder where the user's data (config, etc) will be stored.
UserDataDirectoryName = "Template Game",
// Name of the configuration file in the user's data directory.
ConfigFileName = "config.toml",
// Name of the configuration file in the user's data directory.
ConfigFileName = "config.toml",
//SplashLogo = new ResourcePath("/path/to/splash/logo.png"),
//SplashLogo = new ResourcePath("/path/to/splash/logo.png"),
// Check "RobustToolbox/Resources/Textures/Logo/icon" for an example window icon set.
//WindowIconSet = new ResourcePath("/path/to/folder/with/window/icon/set"),
// Check "RobustToolbox/Resources/Textures/Logo/icon" for an example window icon set.
//WindowIconSet = new ResourcePath("/path/to/folder/with/window/icon/set"),
// There are a few more options, be sure to check them all!
});
}
// There are a few more options, be sure to check them all!
});
}
}

View file

@ -3,7 +3,7 @@
<PropertyGroup>
<!-- Work around https://github.com/dotnet/project-system/issues/4314 -->
<TargetFramework>$(TargetFramework)</TargetFramework>
<LangVersion>9</LangVersion>
<LangVersion>latest</LangVersion>
<IsPackable>false</IsPackable>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<OutputPath>..\bin\Template.Game\</OutputPath> <!-- This is important for gamepack mounting purposes. -->

View file

@ -1,10 +1,9 @@
namespace Template.Game
namespace Template.Game;
internal static class TemplateIoC
{
internal static class TemplateIoC
public static void Register()
{
public static void Register()
{
// DEVNOTE: IoCManager registrations for the game go here.
}
// DEVNOTE: IoCManager registrations for the game go here.
}
}