- Finished most of LuaCsSetup top-level functionality.
- Removed some unneeded interface definitions. - Clean-slated some Services that need to be re-written.
This commit is contained in:
@@ -18,12 +18,14 @@ using System.Reflection;
|
||||
using System.Threading;
|
||||
using Barotrauma.Extensions;
|
||||
using System.Collections.Immutable;
|
||||
using Barotrauma.LuaCs.Events;
|
||||
|
||||
namespace Barotrauma
|
||||
{
|
||||
class GameMain : Game
|
||||
{
|
||||
public static LuaCsSetup LuaCs;
|
||||
private static LuaCsSetup _luaCs;
|
||||
public static LuaCsSetup LuaCs => _luaCs ??= new LuaCsSetup();
|
||||
public static bool ShowFPS;
|
||||
public static bool ShowPerf;
|
||||
public static bool DebugDraw;
|
||||
@@ -244,8 +246,6 @@ namespace Barotrauma
|
||||
throw new Exception("Content folder not found. If you are trying to compile the game from the source code and own a legal copy of the game, you can copy the Content folder from the game's files to BarotraumaShared/Content.");
|
||||
}
|
||||
|
||||
LuaCs = new LuaCsSetup();
|
||||
|
||||
GameSettings.Init();
|
||||
CreatureMetrics.Init();
|
||||
|
||||
@@ -1054,7 +1054,7 @@ namespace Barotrauma
|
||||
|
||||
SoundManager?.Update();
|
||||
|
||||
GameMain.LuaCs.Update();
|
||||
LuaCs.EventService.PublishEvent<IEventUpdate>(sub => sub.OnUpdate(Timing.Step));
|
||||
|
||||
Timing.Accumulator -= Timing.Step;
|
||||
|
||||
@@ -1237,8 +1237,6 @@ namespace Barotrauma
|
||||
GUIMessageBox.CloseAll();
|
||||
MainMenuScreen.Select();
|
||||
GameSession = null;
|
||||
|
||||
GameMain.LuaCs.Stop();
|
||||
}
|
||||
|
||||
public void ShowBugReporter()
|
||||
|
||||
@@ -179,8 +179,6 @@ namespace Barotrauma.Tutorials
|
||||
|
||||
public void Start()
|
||||
{
|
||||
GameMain.LuaCs.CheckInitialize();
|
||||
|
||||
GameMain.Instance.ShowLoading(Loading());
|
||||
ObjectiveManager.ResetObjectives();
|
||||
|
||||
|
||||
@@ -18,5 +18,6 @@ public record StylesResourceInfo : IStylesResourceInfo
|
||||
public ImmutableArray<CultureInfo> SupportedCultures { get; init; }
|
||||
public string InternalName { get; init; }
|
||||
public ContentPackage OwnerPackage { get; init; }
|
||||
public string FallbackPackageName { get; }
|
||||
public ImmutableArray<IPackageDependencyInfo> Dependencies { get; init; }
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace Barotrauma
|
||||
{
|
||||
if (!File.Exists(LuaCsSetup.VersionFile)) { return; }
|
||||
|
||||
ContentPackage luaPackage = LuaCsSetup.GetPackage(LuaCsSetup.LuaForBarotraumaId);
|
||||
ContentPackage luaPackage = LuaCsSetup.GetPackage(new SteamWorkshopId(GameMain.LuaCs.LuaForBarotraumaSteamId?.Value ?? 0));
|
||||
|
||||
if (luaPackage == null) { return; }
|
||||
|
||||
|
||||
@@ -19,65 +19,55 @@ namespace Barotrauma
|
||||
|
||||
new GUITickBox(new RectTransform(new Vector2(0.8f, 0.1f), list.Content.RectTransform), "Enable CSharp Scripting")
|
||||
{
|
||||
Selected = GameMain.LuaCs.Config.EnableCsScripting,
|
||||
Selected = GameMain.LuaCs.IsCsEnabled?.Value ?? false,
|
||||
ToolTip = "This enables CSharp Scripting for mods to use, WARNING: CSharp is NOT sandboxed, be careful with what mods you download.",
|
||||
OnSelected = (GUITickBox tick) =>
|
||||
{
|
||||
GameMain.LuaCs.Config.EnableCsScripting = tick.Selected;
|
||||
GameMain.LuaCs.WriteSettings();
|
||||
|
||||
GameMain.LuaCs.IsCsEnabled?.TrySetValue(tick.Selected);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
new GUITickBox(new RectTransform(new Vector2(0.8f, 0.1f), list.Content.RectTransform), "Treat Forced Mods As Normal")
|
||||
{
|
||||
Selected = GameMain.LuaCs.Config.TreatForcedModsAsNormal,
|
||||
Selected = GameMain.LuaCs.TreatForcedModsAsNormal?.Value ?? false,
|
||||
ToolTip = "This makes mods that were setup to run even when disabled to only run when enabled.",
|
||||
OnSelected = (GUITickBox tick) =>
|
||||
{
|
||||
GameMain.LuaCs.Config.TreatForcedModsAsNormal = tick.Selected;
|
||||
GameMain.LuaCs.WriteSettings();
|
||||
|
||||
GameMain.LuaCs.TreatForcedModsAsNormal?.TrySetValue(tick.Selected);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
new GUITickBox(new RectTransform(new Vector2(0.8f, 0.1f), list.Content.RectTransform), "Prefer To Use Workshop Lua Setup")
|
||||
{
|
||||
Selected = GameMain.LuaCs.Config.PreferToUseWorkshopLuaSetup,
|
||||
Selected = GameMain.LuaCs.PreferToUseWorkshopLuaSetup?.Value ?? false,
|
||||
ToolTip = "This makes Lua look first for the Lua/LuaSetup.lua located in the Workshop package instead of the one located locally.",
|
||||
OnSelected = (GUITickBox tick) =>
|
||||
{
|
||||
GameMain.LuaCs.Config.PreferToUseWorkshopLuaSetup = tick.Selected;
|
||||
GameMain.LuaCs.WriteSettings();
|
||||
|
||||
GameMain.LuaCs.PreferToUseWorkshopLuaSetup?.TrySetValue(tick.Selected);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
new GUITickBox(new RectTransform(new Vector2(0.8f, 0.1f), list.Content.RectTransform), "Disable Error GUI Overlay")
|
||||
{
|
||||
Selected = GameMain.LuaCs.Config.DisableErrorGUIOverlay,
|
||||
Selected = GameMain.LuaCs.DisableErrorGUIOverlay?.Value ?? false,
|
||||
ToolTip = "",
|
||||
OnSelected = (GUITickBox tick) =>
|
||||
{
|
||||
GameMain.LuaCs.Config.DisableErrorGUIOverlay = tick.Selected;
|
||||
GameMain.LuaCs.WriteSettings();
|
||||
|
||||
GameMain.LuaCs.DisableErrorGUIOverlay?.TrySetValue(tick.Selected);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
new GUITickBox(new RectTransform(new Vector2(0.8f, 0.1f), list.Content.RectTransform), "Hide usernames In Error Logs")
|
||||
{
|
||||
Selected = GameMain.LuaCs.Config.HideUserNames,
|
||||
Selected = GameMain.LuaCs.HideUserNamesInLogs?.Value ?? false,
|
||||
ToolTip = "Hides the operating system username when displaying error logs (eg your username on windows).",
|
||||
OnSelected = (GUITickBox tick) =>
|
||||
{
|
||||
GameMain.LuaCs.Config.HideUserNames = tick.Selected;
|
||||
GameMain.LuaCs.WriteSettings();
|
||||
|
||||
GameMain.LuaCs.HideUserNamesInLogs?.TrySetValue(tick.Selected);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -100,7 +90,6 @@ namespace Barotrauma
|
||||
OnClicked = (GUIButton button, object obj) =>
|
||||
{
|
||||
Close();
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Barotrauma.CharacterEditor;
|
||||
using Barotrauma.LuaCs.Services;
|
||||
|
||||
// ReSharper disable ObjectCreationAsStatement
|
||||
|
||||
namespace Barotrauma
|
||||
{
|
||||
@@ -8,47 +15,42 @@ namespace Barotrauma
|
||||
{
|
||||
public void AddToGUIUpdateList()
|
||||
{
|
||||
if (!GameMain.LuaCs.Config.DisableErrorGUIOverlay)
|
||||
if (!DisableErrorGUIOverlay.Value)
|
||||
{
|
||||
LuaCsLogger.AddToGUIUpdateList();
|
||||
}
|
||||
}
|
||||
|
||||
public void CheckInitialize()
|
||||
{
|
||||
List<ContentPackage> csharpMods = new List<ContentPackage>();
|
||||
foreach (ContentPackage cp in ContentPackageManager.EnabledPackages.All)
|
||||
{
|
||||
if (Directory.Exists(cp.Dir + "/CSharp") || Directory.Exists(cp.Dir + "/bin"))
|
||||
{
|
||||
csharpMods.Add(cp);
|
||||
}
|
||||
}
|
||||
private partial bool ShouldRunCs() => IsCsEnabled.Value;
|
||||
|
||||
public IStylesManagementService StylesManagementService => _servicesProvider.TryGetService<IStylesManagementService>(out var svc)
|
||||
? svc : throw new NullReferenceException("Networking Manager service not found!");
|
||||
|
||||
if (csharpMods.Count == 0 || ShouldRunCs)
|
||||
{
|
||||
Initialize();
|
||||
public void CheckCsEnabled()
|
||||
{
|
||||
|
||||
var csharpMods = PackageManagementService.Assemblies
|
||||
.GroupBy(ass => ass.OwnerPackage)
|
||||
.Select(grp => grp.Key)
|
||||
.Where(ContentPackageManager.EnabledPackages.All.Contains)
|
||||
.ToImmutableArray();
|
||||
|
||||
if (!csharpMods.Any())
|
||||
return;
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
foreach (ContentPackage cp in csharpMods)
|
||||
{
|
||||
if (cp.UgcId.TryUnwrap(out ContentPackageId id))
|
||||
{
|
||||
sb.AppendLine($"- {cp.Name} ({id})");
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.AppendLine($"- {cp.Name} (Not On Workshop)");
|
||||
}
|
||||
}
|
||||
|
||||
if (GameMain.Client == null || GameMain.Client.IsServerOwner)
|
||||
{
|
||||
new GUIMessageBox("", $"You have CSharp mods enabled but don't have the CSharp Scripting enabled, those mods might not work, go to the Main Menu, click on LuaCs Settings and check Enable CSharp Scripting.\n\n{sb}");
|
||||
Initialize();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -59,17 +61,51 @@ namespace Barotrauma
|
||||
|
||||
msg.Buttons[0].OnClicked = (GUIButton button, object obj) =>
|
||||
{
|
||||
Initialize(true);
|
||||
msg.Close();
|
||||
this.IsCsEnabled.TrySetValue(true);
|
||||
return true;
|
||||
};
|
||||
|
||||
msg.Buttons[1].OnClicked = (GUIButton button, object obj) =>
|
||||
{
|
||||
Initialize();
|
||||
msg.Close();
|
||||
this.IsCsEnabled.TrySetValue(false);
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles changes in game states tracked by screen changes.
|
||||
/// </summary>
|
||||
/// <param name="screen">The new game screen.</param>
|
||||
public partial void OnScreenSelected(Screen screen)
|
||||
{
|
||||
switch (screen)
|
||||
{
|
||||
// menus and navigation states
|
||||
case MainMenuScreen:
|
||||
case ModDownloadScreen:
|
||||
case ServerListScreen:
|
||||
SetRunState(RunState.Configuration);
|
||||
break;
|
||||
// running lobby or editor states
|
||||
case CampaignEndScreen:
|
||||
case CharacterEditorScreen:
|
||||
case EventEditorScreen:
|
||||
case GameScreen:
|
||||
case LevelEditorScreen:
|
||||
case NetLobbyScreen:
|
||||
case ParticleEditorScreen:
|
||||
case RoundSummaryScreen:
|
||||
case SpriteEditorScreen:
|
||||
case SubEditorScreen:
|
||||
case TestScreen: // notes: TestScreen is a Linux edge case editor screen and is deprecated.
|
||||
CheckCsEnabled();
|
||||
SetRunState(RunState.Running);
|
||||
break;
|
||||
default:
|
||||
Logger.LogError($"{nameof(LuaCsSetup)}: Received an unknown screen {screen?.GetType().Name ?? "'null screen'"}. Retarding load state to 'unloaded'.");
|
||||
SetRunState(RunState.Unloaded);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
using System.Collections.Immutable;
|
||||
using System.Threading.Tasks;
|
||||
using Barotrauma.LuaCs.Data;
|
||||
|
||||
namespace Barotrauma.LuaCs.Services;
|
||||
|
||||
public interface IStylesManagementService : IReusableService
|
||||
{
|
||||
Task<FluentResults.Result> LoadStylesAsync(ImmutableArray<IStylesResourceInfo> styles);
|
||||
FluentResults.Result<IStylesService> GetStylesService(ContentPackage package);
|
||||
Task<FluentResults.Result> DisposeAllStyles();
|
||||
Task<FluentResults.Result> DisposeStylesForPackage(ContentPackage package);
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
namespace Barotrauma.LuaCs.Services;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Barotrauma.LuaCs.Services;
|
||||
|
||||
// TODO: Rework interface to support resource infos.
|
||||
/// <summary>
|
||||
@@ -7,43 +9,48 @@
|
||||
public interface IStylesService : IReusableService
|
||||
{
|
||||
/// <summary>
|
||||
/// Tries to load the styles file for the given contentpackage and path into a new UIStylesProcessor instance.
|
||||
/// Tries to load the styles file for the given <see cref="ContentPackage"/> and path into a new <see cref="UIStyleProcessor"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="package"></param>
|
||||
/// <param name="path"></param>
|
||||
/// <returns></returns>
|
||||
FluentResults.Result LoadStylesFile(ContentPackage package, ContentPath path);
|
||||
Task<FluentResults.Result> LoadStylesFileAsync(ContentPackage package, ContentPath path);
|
||||
|
||||
/// <summary>
|
||||
/// Unloads all styles assets and UIStyleProcessor instances.
|
||||
/// Unloads all styles assets and <see cref="UIStyleProcessor"/> instances.
|
||||
/// </summary>
|
||||
FluentResults.Result UnloadAllStyles();
|
||||
|
||||
/// <summary>
|
||||
/// Tries to the get the font asset by xml asset name, returns null on failure.
|
||||
/// Tries to the get the <see cref="GUIFont"/> asset by xml asset name, returns null on failure.
|
||||
/// </summary>
|
||||
/// <param name="fontName">XML Name of the asset.</param>
|
||||
/// <returns>The asset or null if none are found.</returns>
|
||||
GUIFont GetFont(string fontName);
|
||||
|
||||
/// <summary>
|
||||
/// Tries to the get the sprite asset by xml asset name, returns null on failure.
|
||||
/// Tries to the get the <see cref="GUISprite"/> asset by xml asset name, returns null on failure.
|
||||
/// </summary>
|
||||
/// <param name="spriteName">XML Name of the asset.</param>
|
||||
/// <returns>The asset or null if none are found.</returns>
|
||||
GUISprite GetSprite(string spriteName);
|
||||
|
||||
/// <summary>
|
||||
/// Tries to the get the sprite sheet asset by xml asset name, returns null on failure.
|
||||
/// Tries to the get the <see cref="GUISpriteSheet"/> asset by xml asset name, returns null on failure.
|
||||
/// </summary>
|
||||
/// <param name="spriteSheetName">XML Name of the asset.</param>
|
||||
/// <returns>The asset or null if none are found.</returns>
|
||||
GUISpriteSheet GetSpriteSheet(string spriteSheetName);
|
||||
|
||||
/// <summary>
|
||||
/// Tries to the get the cursor asset by xml asset name, returns null on failure.
|
||||
/// Tries to the get the <see cref="GUICursor"/> asset by xml asset name, returns null on failure.
|
||||
/// </summary>
|
||||
/// <param name="cursorName">XML Name of the asset.</param>
|
||||
/// <returns>The asset or null if none are found.</returns>
|
||||
GUICursor GetCursor(string cursorName);
|
||||
|
||||
/// <summary>
|
||||
/// Tries to the get the color asset by xml asset name, returns null on failure.
|
||||
/// Tries to the get the <see cref="GUIColor"/> asset by xml asset name, returns null on failure.
|
||||
/// </summary>
|
||||
/// <param name="colorName">XML Name of the asset.</param>
|
||||
/// <returns>The asset or null if none are found.</returns>
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Immutable;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Barotrauma.LuaCs.Data;
|
||||
using Barotrauma.LuaCs.Services.Processing;
|
||||
|
||||
namespace Barotrauma.LuaCs.Services;
|
||||
|
||||
public partial class PackageService : IStylesResourcesInfo
|
||||
{
|
||||
private readonly Lazy<IStylesService> _stylesService;
|
||||
public IStylesService Styles => _stylesService.Value;
|
||||
|
||||
public PackageService(
|
||||
Lazy<IModConfigCreatorService> configParserService,
|
||||
Lazy<ILuaScriptService> luaScriptService,
|
||||
Lazy<ILocalizationService> localizationService,
|
||||
Lazy<IPluginService> pluginService,
|
||||
Lazy<IStylesService> stylesService,
|
||||
Lazy<IConfigService> configService,
|
||||
IPackageManagementService packageManagementService,
|
||||
IStorageService storageService,
|
||||
ILoggerService loggerService)
|
||||
{
|
||||
_configParserService = configParserService;
|
||||
_luaScriptService = luaScriptService;
|
||||
_localizationService = localizationService;
|
||||
_pluginService = pluginService;
|
||||
_stylesService = stylesService;
|
||||
_configService = configService;
|
||||
_packageManagementService = packageManagementService;
|
||||
_storageService = storageService;
|
||||
_loggerService = loggerService;
|
||||
}
|
||||
|
||||
public ImmutableArray<IStylesResourceInfo> StylesResourceInfos => ModConfigInfo?.StylesResourceInfos ?? ImmutableArray<IStylesResourceInfo>.Empty;
|
||||
|
||||
public FluentResults.Result LoadStyles([NotNull]IStylesResourcesInfo stylesInfo)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
namespace Barotrauma.LuaCs.Services.Processing;
|
||||
|
||||
public class StylesManagementService : IStylesManagementService
|
||||
{
|
||||
|
||||
}
|
||||
@@ -1,16 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using FluentResults;
|
||||
using FluentResults.LuaCs;
|
||||
|
||||
namespace Barotrauma.LuaCs.Services;
|
||||
|
||||
// TODO: Complete rewrite
|
||||
public class StylesService : IStylesService
|
||||
{
|
||||
private readonly Dictionary<string, UIStyleProcessor> _loadedProcessors = new();
|
||||
private readonly ConcurrentDictionary<string, UIStyleProcessor> _loadedProcessors = new();
|
||||
private readonly IStorageService _storageService;
|
||||
private readonly ILoggerService _loggerService;
|
||||
|
||||
@@ -19,40 +22,11 @@ public class StylesService : IStylesService
|
||||
_storageService = storageService;
|
||||
_loggerService = loggerService;
|
||||
}
|
||||
|
||||
public FluentResults.Result LoadStylesFile(ContentPackage package, ContentPath path)
|
||||
|
||||
|
||||
public async Task<FluentResults.Result> LoadStylesFileAsync(ContentPackage package, ContentPath path)
|
||||
{
|
||||
//check if file already in dict
|
||||
if (_loadedProcessors.ContainsKey(path.FullPath))
|
||||
{
|
||||
return FluentResults.Result.Ok();
|
||||
}
|
||||
//check if file exists
|
||||
if (_storageService.FileExists(path.FullPath) is {} result
|
||||
&& result.IsFailed | (result.IsSuccess & result.Value == false))
|
||||
{
|
||||
return FluentResults.Result.Fail(result.Errors)
|
||||
.WithError(new Error($"{nameof(StylesService)}.{nameof(LoadStylesFile)} file does not exist!")
|
||||
.WithMetadata(MetadataType.ExceptionObject, this)
|
||||
.WithMetadata(MetadataType.RootObject, package));
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var styleProcessor = new UIStyleProcessor(package, path);
|
||||
styleProcessor.LoadFile();
|
||||
_loadedProcessors.Add(path.FullPath, styleProcessor);
|
||||
}
|
||||
catch (InvalidDataException exception)
|
||||
{
|
||||
return FluentResults.Result.Fail(new Error($"{nameof(StylesService)}.{nameof(LoadStylesFile)} failed for ContentPackage {package.Name}: Exception: {exception.Message}")
|
||||
.WithMetadata(MetadataType.ExceptionDetails, exception.Message)
|
||||
.WithMetadata(MetadataType.ExceptionObject, this)
|
||||
.WithMetadata(MetadataType.RootObject, package)
|
||||
.WithMetadata(MetadataType.StackTrace, exception.StackTrace));
|
||||
}
|
||||
|
||||
return FluentResults.Result.Ok();
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public FluentResults.Result UnloadAllStyles()
|
||||
@@ -134,7 +108,7 @@ public class StylesService : IStylesService
|
||||
return null;
|
||||
}
|
||||
|
||||
private bool NoProcessorsLoaded => _loadedProcessors.Count < 1;
|
||||
private bool NoProcessorsLoaded => _loadedProcessors.IsEmpty;
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
@@ -146,4 +120,6 @@ public class StylesService : IStylesService
|
||||
{
|
||||
return UnloadAllStyles();
|
||||
}
|
||||
|
||||
public bool IsDisposed { get; private set; }
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using Barotrauma.Extensions;
|
||||
using Barotrauma.IO;
|
||||
using Barotrauma.LuaCs.Events;
|
||||
using Barotrauma.Networking;
|
||||
using Barotrauma.Steam;
|
||||
using Microsoft.Xna.Framework;
|
||||
@@ -118,7 +119,6 @@ namespace Barotrauma
|
||||
ContentPackageManager.EnabledPackages.SetRegular(regularPackages);
|
||||
}
|
||||
GameMain.NetLobbyScreen.Select();
|
||||
GameMain.LuaCs.CheckInitialize();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -366,7 +366,7 @@ namespace Barotrauma
|
||||
ContentPackageManager.EnabledPackages.BackUp();
|
||||
ContentPackageManager.EnabledPackages.SetCore(corePackage);
|
||||
ContentPackageManager.EnabledPackages.SetRegular(regularPackages);
|
||||
|
||||
|
||||
//see if any of the packages we enabled contain subs that we were missing previously, and update their paths
|
||||
foreach (var serverSub in GameMain.Client.ServerSubmarines)
|
||||
{
|
||||
@@ -379,7 +379,6 @@ namespace Barotrauma
|
||||
}
|
||||
GameMain.NetLobbyScreen.UpdateSubList(GameMain.NetLobbyScreen.SubList, GameMain.Client.ServerSubmarines);
|
||||
GameMain.NetLobbyScreen.Select();
|
||||
GameMain.LuaCs.CheckInitialize();
|
||||
}
|
||||
}
|
||||
else if (GameMain.Client.FileReceiver.ActiveTransfers.None())
|
||||
|
||||
Reference in New Issue
Block a user