This commit is contained in:
2025-03-15 12:33:50 +01:00
parent 0d3516774e
commit 569b1d00b3
28 changed files with 446 additions and 147 deletions

View File

@@ -0,0 +1,59 @@
using System;
using System.Reflection;
using RebootKit.Engine.Foundation;
namespace RebootKit.Engine.Services.Console {
[AttributeUsage(AttributeTargets.Field)]
public class CVarAttribute : Attribute {
public string Name { get; }
public CVarValue Value { get; }
public CVarAttribute(string name, float defaultValue) {
Name = name;
Value = new CVarValue(defaultValue);
}
public CVarAttribute(string name, double defaultValue) {
Name = name;
Value = new CVarValue(defaultValue);
}
public CVarAttribute(string name, string defaultValue) {
Name = name;
Value = new CVarValue(defaultValue);
}
public CVarAttribute(string name, int defaultValue) {
Name = name;
Value = new CVarValue(defaultValue);
}
}
public class CVarFieldInjector : DIContext.IFieldInjector {
private static readonly Logger Logger = new(nameof(CVarFieldInjector));
public bool Inject(FieldInfo field, object target, DIContext context) {
if (!Attribute.IsDefined(field, typeof(CVarAttribute))) {
return false;
}
ConsoleService console = context.Resolve<ConsoleService>();
if (console == null) {
Logger.Error($"Cannot inject field because cannot resolve `{nameof(ConsoleService)}`");
return false;
}
CVarAttribute cvarAttribute = field.GetCustomAttribute<CVarAttribute>();
CVar cvar = console.GetCVar(cvarAttribute.Name);
if (cvar == null) {
cvar = new CVar(cvarAttribute.Name, cvarAttribute.Value);
console.Replace(cvar);
}
field.SetValue(target, cvar);
return true;
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1ce6213dda8c4f8d9eafe4afd1614a86
timeCreated: 1742005021

View File

@@ -62,16 +62,26 @@ namespace RebootKit.Engine.Services.Console {
_ui.Clear();
_ui.Write("Hello shelf\n");
}
public void Dispose() {
if (_ui != null) {
UnityEngine.Object.Destroy(_ui);
_ui = null;
}
_config.ToggleAction.Action.performed -= OnToggleAction;
}
public bool CVarExists(string name) {
foreach (CVar cvar in _cvars) {
if (cvar.Name.Equals(name)) {
return true;
}
}
return false;
}
public CVar GetCVar(string name) {
foreach (CVar cvar in _cvars) {
if (cvar.Name.Equals(name)) {

View File

@@ -1,11 +1,12 @@
using System.Threading;
using Cysharp.Threading.Tasks;
using RebootKit.Engine.Foundation;
using RebootKit.Engine.Services.Console;
namespace RebootKit.Engine.Services.Game {
public class GameService : IService {
private static readonly Logger _logger = new(nameof(GameService));
private static readonly Logger Logger = new(nameof(GameService));
private GameModeAsset _gameModeAsset;
private GameMode _gameMode;
private bool _running;
@@ -28,7 +29,7 @@ namespace RebootKit.Engine.Services.Game {
private async UniTask Run(CancellationToken cancellationToken) {
if (_gameMode == null) {
_logger.Error("Trying to run game without game mode");
Logger.Error("Trying to run game without game mode");
return;
}