Some extra logging and bring back LuaCsTimer
This commit is contained in:
committed by
Maplewheels
parent
13a9bc443e
commit
708fe93efe
@@ -1,4 +1,5 @@
|
|||||||
using Barotrauma.LuaCs.Services;
|
using Barotrauma.LuaCs.Events;
|
||||||
|
using Barotrauma.LuaCs.Services;
|
||||||
using Barotrauma.LuaCs.Services.Compatibility;
|
using Barotrauma.LuaCs.Services.Compatibility;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -6,7 +7,7 @@ using System.Diagnostics;
|
|||||||
|
|
||||||
namespace Barotrauma
|
namespace Barotrauma
|
||||||
{
|
{
|
||||||
public class LuaCsTimer : ILuaCsTimer
|
public class LuaCsTimer : ILuaCsTimer, IEventUpdate
|
||||||
{
|
{
|
||||||
public static double Time => Timing.TotalTime;
|
public static double Time => Timing.TotalTime;
|
||||||
public static double GetTime() => Time;
|
public static double GetTime() => Time;
|
||||||
@@ -55,6 +56,14 @@ namespace Barotrauma
|
|||||||
|
|
||||||
private List<TimedAction> timedActions = new List<TimedAction>();
|
private List<TimedAction> timedActions = new List<TimedAction>();
|
||||||
|
|
||||||
|
private readonly IEventService _eventService;
|
||||||
|
|
||||||
|
public LuaCsTimer(IEventService eventService)
|
||||||
|
{
|
||||||
|
_eventService = eventService;
|
||||||
|
_eventService.Subscribe<IEventUpdate>(this);
|
||||||
|
}
|
||||||
|
|
||||||
private void AddTimer(TimedAction timedAction)
|
private void AddTimer(TimedAction timedAction)
|
||||||
{
|
{
|
||||||
if (timedAction == null)
|
if (timedAction == null)
|
||||||
@@ -75,7 +84,29 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update()
|
public void Clear()
|
||||||
|
{
|
||||||
|
timedActions = new List<TimedAction>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Wait(LuaCsAction action, int millisecondDelay)
|
||||||
|
{
|
||||||
|
TimedAction timedAction = new TimedAction(action, millisecondDelay);
|
||||||
|
AddTimer(timedAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void NextFrame(LuaCsAction action)
|
||||||
|
{
|
||||||
|
TimedAction timedAction = new TimedAction(action, 0);
|
||||||
|
AddTimer(timedAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
_eventService.Unsubscribe<IEventUpdate>(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnUpdate(double fixedDeltaTime)
|
||||||
{
|
{
|
||||||
lock (timedActions)
|
lock (timedActions)
|
||||||
{
|
{
|
||||||
@@ -104,28 +135,6 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Clear()
|
|
||||||
{
|
|
||||||
timedActions = new List<TimedAction>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Wait(LuaCsAction action, int millisecondDelay)
|
|
||||||
{
|
|
||||||
TimedAction timedAction = new TimedAction(action, millisecondDelay);
|
|
||||||
AddTimer(timedAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void NextFrame(LuaCsAction action)
|
|
||||||
{
|
|
||||||
TimedAction timedAction = new TimedAction(action, 0);
|
|
||||||
AddTimer(timedAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
// ignored
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsDisposed => false;
|
public bool IsDisposed => false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -191,6 +191,7 @@ namespace Barotrauma
|
|||||||
servicesProvider.RegisterServiceType<ILuaScriptManagementService, LuaScriptManagementService>(ServiceLifetime.Singleton);
|
servicesProvider.RegisterServiceType<ILuaScriptManagementService, LuaScriptManagementService>(ServiceLifetime.Singleton);
|
||||||
servicesProvider.RegisterServiceType<ILuaScriptLoader, LuaScriptLoader>(ServiceLifetime.Transient);
|
servicesProvider.RegisterServiceType<ILuaScriptLoader, LuaScriptLoader>(ServiceLifetime.Transient);
|
||||||
servicesProvider.RegisterServiceType<LuaGame, LuaGame>(ServiceLifetime.Singleton);
|
servicesProvider.RegisterServiceType<LuaGame, LuaGame>(ServiceLifetime.Singleton);
|
||||||
|
servicesProvider.RegisterServiceType<ILuaCsTimer, LuaCsTimer>(ServiceLifetime.Singleton);
|
||||||
// TODO: INetworkingService
|
// TODO: INetworkingService
|
||||||
servicesProvider.RegisterServiceType<IConfigService, ConfigService>(ServiceLifetime.Singleton);
|
servicesProvider.RegisterServiceType<IConfigService, ConfigService>(ServiceLifetime.Singleton);
|
||||||
servicesProvider.RegisterServiceType<IModConfigService, ModConfigService>(ServiceLifetime.Transient);
|
servicesProvider.RegisterServiceType<IModConfigService, ModConfigService>(ServiceLifetime.Transient);
|
||||||
|
|||||||
+10
-6
@@ -45,6 +45,7 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService
|
|||||||
private readonly ILoggerService _loggerService;
|
private readonly ILoggerService _loggerService;
|
||||||
private readonly LuaGame _luaGame;
|
private readonly LuaGame _luaGame;
|
||||||
private readonly ILuaCsHook _luaCsHook;
|
private readonly ILuaCsHook _luaCsHook;
|
||||||
|
private readonly ILuaCsTimer _luaCsTimer;
|
||||||
//private readonly ILuaCsNetworking _luaCsNetworking;
|
//private readonly ILuaCsNetworking _luaCsNetworking;
|
||||||
//private readonly ILuaCsUtility _luaCsUtility;
|
//private readonly ILuaCsUtility _luaCsUtility;
|
||||||
//private readonly ILuaCsTimer _luaCsTimer;
|
//private readonly ILuaCsTimer _luaCsTimer;
|
||||||
@@ -54,10 +55,10 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService
|
|||||||
ILuaScriptLoader loader,
|
ILuaScriptLoader loader,
|
||||||
ILuaScriptServicesConfig luaScriptServicesConfig,
|
ILuaScriptServicesConfig luaScriptServicesConfig,
|
||||||
LuaGame luaGame,
|
LuaGame luaGame,
|
||||||
ILuaCsHook luaCsHook
|
ILuaCsHook luaCsHook,
|
||||||
//ILuaCsNetworking luaCsNetworking,
|
//ILuaCsNetworking luaCsNetworking,
|
||||||
//ILuaCsUtility luaCsUtility,
|
//ILuaCsUtility luaCsUtility,
|
||||||
//ILuaCsTimer luaCsTimer
|
ILuaCsTimer luaCsTimer
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_luaScriptLoader = loader;
|
_luaScriptLoader = loader;
|
||||||
@@ -68,7 +69,7 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService
|
|||||||
_luaCsHook = luaCsHook;
|
_luaCsHook = luaCsHook;
|
||||||
//_luaCsNetworking = luaCsNetworking;
|
//_luaCsNetworking = luaCsNetworking;
|
||||||
//_luaCsUtility = luaCsUtility;
|
//_luaCsUtility = luaCsUtility;
|
||||||
//_luaCsTimer = luaCsTimer;
|
_luaCsTimer = luaCsTimer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsDisposed { get; private set; }
|
public bool IsDisposed { get; private set; }
|
||||||
@@ -195,7 +196,7 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService
|
|||||||
|
|
||||||
_script.Globals["Game"] = _luaGame;
|
_script.Globals["Game"] = _luaGame;
|
||||||
_script.Globals["Hook"] = _luaCsHook;
|
_script.Globals["Hook"] = _luaCsHook;
|
||||||
//_script.Globals["Timer"] = _luaCsTimer;
|
_script.Globals["Timer"] = _luaCsTimer;
|
||||||
_script.Globals["File"] = UserData.CreateStatic<LuaCsFile>();
|
_script.Globals["File"] = UserData.CreateStatic<LuaCsFile>();
|
||||||
//_script.Globals["Networking"] = _luaCsNetworking;
|
//_script.Globals["Networking"] = _luaCsNetworking;
|
||||||
//_script.Globals["Steam"] = Steam;
|
//_script.Globals["Steam"] = Steam;
|
||||||
@@ -215,18 +216,21 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService
|
|||||||
return FluentResults.Result.Fail("Tried to execute Lua scripts without unloading first.");
|
return FluentResults.Result.Fail("Tried to execute Lua scripts without unloading first.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_loggerService.LogMessage("Executing Lua scripts");
|
||||||
|
|
||||||
SetupEnvironment();
|
SetupEnvironment();
|
||||||
|
|
||||||
_isRunning = true;
|
|
||||||
|
|
||||||
var result = FluentResults.Result.Ok();
|
var result = FluentResults.Result.Ok();
|
||||||
|
|
||||||
|
_isRunning = true;
|
||||||
|
|
||||||
foreach (ILuaScriptResourceInfo resource in executionOrder.Where(l => l.IsAutorun))
|
foreach (ILuaScriptResourceInfo resource in executionOrder.Where(l => l.IsAutorun))
|
||||||
{
|
{
|
||||||
foreach (ContentPath filePath in resource.FilePaths)
|
foreach (ContentPath filePath in resource.FilePaths)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
_loggerService.LogMessage($"Run {filePath.Value}");
|
||||||
_script?.Call(_script.LoadFile(filePath.FullPath), Path.GetDirectoryName(resource.OwnerPackage.Path));
|
_script?.Call(_script.LoadFile(filePath.FullPath), Path.GetDirectoryName(resource.OwnerPackage.Path));
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ public class PluginManagementService : IAssemblyManagementService
|
|||||||
public bool IsDisposed { get; }
|
public bool IsDisposed { get; }
|
||||||
public FluentResults.Result Reset()
|
public FluentResults.Result Reset()
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
return FluentResults.Result.Fail("Not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
Reference in New Issue
Block a user