# Conflicts: # .github/CODEOWNERS # .github/ISSUE_TEMPLATE/config.yml # .github/ISSUE_TEMPLATE/issue_report.md # Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs # Content.Client/Medical/CrewMonitoring/CrewMonitoringWindow.xaml # Content.Client/UserInterface/Systems/Ghost/Controls/Roles/MakeGhostRoleWindow.xaml # Content.Client/UserInterface/Systems/Ghost/Controls/Roles/MakeGhostRoleWindow.xaml.cs # Content.Client/Weapons/Ranged/Systems/GunSystem.cs # Content.IntegrationTests/Tests/Destructible/DestructibleDamageGroupTest.cs # Content.IntegrationTests/Tests/Destructible/DestructibleDamageTypeTest.cs # Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs # Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeComponent.cs # Content.Server/Atmos/EntitySystems/FlammableSystem.cs # Content.Server/Chat/Systems/ChatSystem.cs # Content.Server/Destructible/Thresholds/DamageThreshold.cs # Content.Server/Entry/EntryPoint.cs # Content.Server/Fluids/EntitySystems/PuddleSystem.cs # Content.Server/GuideGenerator/ReagentEntry.cs # Content.Server/IoC/ServerContentIoC.cs # Content.Server/Medical/HealthAnalyzerSystem.cs # Content.Server/Medical/VomitSystem.cs # Content.Server/Radio/EntitySystems/HeadsetSystem.cs # Content.Server/Revenant/EntitySystems/RevenantSystem.cs # Content.Server/Weapons/Ranged/Systems/GunSystem.cs # Content.Shared/Armor/SharedArmorSystem.cs # Content.Shared/Bed/Sleep/SleepingSystem.cs # Content.Shared/Cabinet/ItemCabinetSystem.cs # Content.Shared/Chat/SharedChatSystem.Emote.cs # Content.Shared/Chat/SharedChatSystem.cs # Content.Shared/Clothing/EntitySystems/MaskSystem.cs # Content.Shared/Clothing/EntitySystems/SharedChameleonClothingSystem.cs # Content.Shared/Damage/Systems/DamageableSystem.cs # Content.Shared/EntityEffects/Effects/StatusEffects/GenericStatusEffect.cs # Content.Shared/EntityEffects/Effects/Transform/ExplosionEntityEffect.cs # Content.Shared/Humanoid/HumanoidCharacterAppearance.cs # Content.Shared/IoC/SharedContentIoC.cs # Content.Shared/Lock/LockSystem.cs # Content.Shared/Ninja/Components/NinjaSuitComponent.cs # Content.Shared/Preferences/HumanoidCharacterProfile.cs # Content.Shared/Revenant/Components/RevenantComponent.cs # Content.Shared/Silicons/StationAi/SharedStationAiSystem.Airlock.cs # Content.Shared/Trigger/Systems/TriggerSystem.Condition.cs # Content.Shared/VendingMachines/SharedVendingMachineSystem.cs # Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs # Content.Shared/Weapons/Ranged/HitscanPrototype.cs # Content.Shared/Xenoarchaeology/Artifact/XAT/BaseQueryUpdateXATSystem.cs # README.md # Resources/Audio/Weapons/attributions.yml # Resources/Locale/en-US/_strings/ghost/make-ghost-gui.ftl # Resources/Locale/en-US/_strings/guidebook/chemistry/conditions.ftl # Resources/Locale/en-US/_strings/guidebook/chemistry/effects.ftl # Resources/Locale/en-US/_strings/guidebook/chemistry/healthchange.ftl # Resources/Locale/en-US/_strings/guidebook/chemistry/statuseffects.ftl # Resources/Locale/en-US/_strings/job/job-description.ftl # Resources/Locale/en-US/_strings/medical/components/crew-monitoring-component.ftl # Resources/Locale/en-US/_strings/npc/hugbot.ftl # Resources/Locale/en-US/_strings/npc/npc-debug.ftl # Resources/Locale/en-US/_strings/speech/speech-triggers.ftl # Resources/Locale/en-US/_strings/ui/stat-values.ftl # Resources/Locale/en-US/guidebook/chemistry/conditions.ftl # Resources/Locale/en-US/guidebook/chemistry/effects.ftl # Resources/Locale/en-US/guidebook/chemistry/healthchange.ftl # Resources/Locale/en-US/guidebook/entity-effects/conditions.ftl # Resources/Locale/en-US/guidebook/entity-effects/effects.ftl # Resources/Locale/en-US/guidebook/entity-effects/healthchange.ftl # Resources/Maps/Shuttles/cargo_relic.yml # Resources/Maps/_Sunrise/Station/bagel.yml # Resources/Maps/_Sunrise/Station/barratry.yml # Resources/Maps/_Sunrise/Station/fland.yml # Resources/Maps/_Sunrise/Station/marathon.yml # Resources/Maps/_Sunrise/Station/oasis.yml # Resources/Maps/_Sunrise/Station/packed.yml # Resources/Maps/_Sunrise/Station/plasma.yml # Resources/Maps/_Sunrise/Station/relic.yml # Resources/Maps/_Sunrise/event/clon_mine.yml # Resources/Maps/_Sunrise/event/void.yml # Resources/Prototypes/Body/Prototypes/vox.yml # Resources/Prototypes/Catalog/Fills/Boxes/emergency.yml # Resources/Prototypes/Catalog/Fills/Crates/fun.yml # Resources/Prototypes/Catalog/Fills/Lockers/heads.yml # Resources/Prototypes/Catalog/Fills/Lockers/security.yml # Resources/Prototypes/Entities/Clothing/Belt/belts.yml # Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml # Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml # Resources/Prototypes/Entities/Mobs/Species/skeleton.yml # Resources/Prototypes/Entities/Objects/Devices/Electronics/base_electronics.yml # Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml # Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml # Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml # Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml # Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml # Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml # Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml # Resources/Prototypes/Entities/Structures/Doors/Airlocks/airlocks.yml # Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml # Resources/Prototypes/Entities/Structures/Machines/lathe.yml # Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml # Resources/Prototypes/Loadouts/Jobs/Engineering/station_engineer.yml # Resources/Prototypes/Loadouts/Jobs/Science/scientist.yml # Resources/Prototypes/Loadouts/Jobs/Security/security_officer.yml # Resources/Prototypes/Loadouts/Miscellaneous/glasses.yml # Resources/Prototypes/Loadouts/loadout_groups.yml # Resources/Prototypes/Objectives/objectiveGroups.yml # Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml # Resources/Prototypes/Reagents/medicine.yml # Resources/Prototypes/Reagents/narcotics.yml # Resources/Prototypes/Reagents/toxins.yml # Resources/Prototypes/Recipes/Lathes/Packs/biogen.yml # Resources/Prototypes/Recipes/Lathes/Packs/security.yml # Resources/Prototypes/Recipes/Lathes/biogen.yml # Resources/Prototypes/Roles/Antags/nukeops.yml # Resources/Prototypes/Roles/Antags/revolutionary.yml # Resources/Prototypes/Roles/Antags/thief.yml # Resources/Prototypes/Roles/Antags/traitor.yml # Resources/Prototypes/Roles/Antags/wizard.yml # Resources/Prototypes/Roles/Antags/zombie.yml # Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml # Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml # Resources/Prototypes/Roles/Jobs/Civilian/chef.yml # Resources/Prototypes/Roles/Jobs/Civilian/mime.yml # Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml # Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml # Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml # Resources/Prototypes/Roles/Jobs/Medical/chemist.yml # Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml # Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml # Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml # Resources/Prototypes/Roles/Jobs/Science/borg.yml # Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml # Resources/Prototypes/Roles/Jobs/Science/scientist.yml # Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml # Resources/Prototypes/Roles/Jobs/Security/security_officer.yml # Resources/Prototypes/Roles/Jobs/Security/warden.yml # Resources/Prototypes/Stacks/Materials/crystals.yml # Resources/Prototypes/Stacks/floor_tile_stacks.yml # Resources/Prototypes/tags.yml # Resources/ServerInfo/Guidebook/Science/ArtifactReports.xml # Resources/ServerInfo/Guidebook/Science/Xenoarchaeology.xml # Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/equipped-HAND.png # Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/meta.json # Resources/Textures/Clothing/Head/Hardsuits/mime.rsi/meta.json # Resources/Textures/Effects/speech.rsi/moth3.png # Resources/Textures/Interface/Misc/job_icons.rsi/meta.json # Resources/Textures/Structures/Machines/microwave.rsi/meta.json # Resources/Textures/Structures/Machines/microwave.rsi/mw.png # Resources/Textures/Structures/Machines/microwave.rsi/mw0.png # Resources/Textures/Structures/Machines/microwave.rsi/mw_running_unlit.png # Resources/Textures/Structures/Machines/microwave.rsi/mw_unlit.png # Resources/Textures/Structures/Machines/microwave.rsi/mwb.png # Resources/Textures/Structures/Machines/microwave.rsi/mwbloody.png # Resources/Textures/Structures/Machines/microwave.rsi/mwbloody0.png # Resources/Textures/Structures/Machines/microwave.rsi/mwbloody1.png # Resources/Textures/Structures/Machines/microwave.rsi/mwbloodyo.png # Resources/Textures/Structures/Machines/microwave.rsi/mwo.png # Resources/Textures/Structures/Machines/microwave_syndie.rsi/meta.json # Resources/Textures/Structures/Machines/microwave_syndie.rsi/mw.png # Resources/Textures/Structures/Machines/microwave_syndie.rsi/mw0.png # Resources/Textures/Structures/Machines/microwave_syndie.rsi/mw_running_unlit.png # Resources/Textures/Structures/Machines/microwave_syndie.rsi/mw_unlit.png # Resources/Textures/Structures/Machines/microwave_syndie.rsi/mwb.png # Resources/Textures/Structures/Machines/microwave_syndie.rsi/mwo.png # Resources/migration.yml # RobustToolbox
295 lines
12 KiB
C#
295 lines
12 KiB
C#
using Content.Server._Sunrise.Contributors;
|
|
using Content.Server._Sunrise.Entry;
|
|
using Content.Server._Sunrise.GuideGenerator;
|
|
using Content.Server._Sunrise.PlayerCache;
|
|
using Content.Server._Sunrise.ServersHub;
|
|
using Content.Server._Sunrise.TTS;
|
|
using Content.Server.Acz;
|
|
using Content.Server.Administration;
|
|
using Content.Server.Administration.Logs;
|
|
using Content.Server.Administration.Managers;
|
|
using Content.Server.Afk;
|
|
using Content.Server.Chat.Managers;
|
|
using Content.Server.Connection;
|
|
using Content.Server.Database;
|
|
using Content.Server.Discord.DiscordLink;
|
|
using Content.Server.EUI;
|
|
using Content.Server.GameTicking;
|
|
using Content.Server.GhostKick;
|
|
using Content.Server.GuideGenerator;
|
|
using Content.Server.Info;
|
|
using Content.Server.IoC;
|
|
using Content.Server.Maps;
|
|
using Content.Server.NodeContainer.NodeGroups;
|
|
using Content.Server.Players.JobWhitelist;
|
|
using Content.Server.Players.PlayTimeTracking;
|
|
using Content.Server.Players.RateLimiting;
|
|
using Content.Server.Preferences.Managers;
|
|
using Content.Server.ServerInfo;
|
|
using Content.Server.ServerUpdates;
|
|
using Content.Server.Voting.Managers;
|
|
using Content.Shared.CCVar;
|
|
using Content.Shared.Kitchen;
|
|
using Content.Shared.Localizations;
|
|
using Content.Sunrise.Interfaces.Server;
|
|
using Content.Sunrise.Interfaces.Shared;
|
|
using Robust.Server;
|
|
using Robust.Server.ServerStatus;
|
|
using Robust.Shared.Configuration;
|
|
using Robust.Shared.ContentPack;
|
|
using Robust.Shared.Prototypes;
|
|
using Robust.Shared.Timing;
|
|
using Robust.Shared.Utility;
|
|
|
|
namespace Content.Server.Entry
|
|
{
|
|
public sealed class EntryPoint : GameServer
|
|
{
|
|
internal const string ConfigPresetsDir = "/ConfigPresets/";
|
|
private const string ConfigPresetsDirBuild = $"{ConfigPresetsDir}Build/";
|
|
|
|
[Dependency] private readonly CVarControlManager _cvarCtrl = default!;
|
|
[Dependency] private readonly ContentLocalizationManager _loc = default!;
|
|
[Dependency] private readonly ContentNetworkResourceManager _netResMan = default!;
|
|
[Dependency] private readonly DiscordChatLink _discordChatLink = default!;
|
|
[Dependency] private readonly DiscordLink _discordLink = default!;
|
|
[Dependency] private readonly EuiManager _euiManager = default!;
|
|
[Dependency] private readonly GhostKickManager _ghostKick = default!;
|
|
[Dependency] private readonly IAdminManager _admin = default!;
|
|
[Dependency] private readonly IAdminLogManager _adminLog = default!;
|
|
[Dependency] private readonly IAfkManager _afk = default!;
|
|
[Dependency] private readonly IBanManager _ban = default!;
|
|
[Dependency] private readonly IChatManager _chatSan = default!;
|
|
[Dependency] private readonly IChatSanitizationManager _chat = default!;
|
|
[Dependency] private readonly IComponentFactory _factory = default!;
|
|
[Dependency] private readonly IConfigurationManager _cfg = default!;
|
|
[Dependency] private readonly IConnectionManager _connection = default!;
|
|
[Dependency] private readonly IEntitySystemManager _entSys = default!;
|
|
[Dependency] private readonly IGameMapManager _gameMap = default!;
|
|
[Dependency] private readonly ILogManager _log = default!;
|
|
[Dependency] private readonly INodeGroupFactory _nodeFactory = default!;
|
|
[Dependency] private readonly IPrototypeManager _proto = default!;
|
|
[Dependency] private readonly IResourceManager _res = default!;
|
|
[Dependency] private readonly IServerDbManager _dbManager = default!;
|
|
[Dependency] private readonly IServerPreferencesManager _preferences = default!;
|
|
[Dependency] private readonly IStatusHost _host = default!;
|
|
[Dependency] private readonly IVoteManager _voteManager = default!;
|
|
[Dependency] private readonly IWatchlistWebhookManager _watchlistWebhookManager = default!;
|
|
[Dependency] private readonly JobWhitelistManager _job = default!;
|
|
[Dependency] private readonly MultiServerKickManager _multiServerKick = default!;
|
|
[Dependency] private readonly PlayTimeTrackingManager _playTimeTracking = default!;
|
|
[Dependency] private readonly PlayerRateLimitManager _rateLimit = default!;
|
|
[Dependency] private readonly RecipeManager _recipe = default!;
|
|
[Dependency] private readonly RulesManager _rules = default!;
|
|
[Dependency] private readonly ServerApi _serverApi = default!;
|
|
[Dependency] private readonly ServerInfoManager _serverInfo = default!;
|
|
[Dependency] private readonly ServerUpdateManager _updateManager = default!;
|
|
[Dependency] private readonly ServersHubManager _serversHubManager = default!; // Sunrise-Edit
|
|
[Dependency] private readonly ContributorsManager _contributorsManager = default!; // Sunrise-Edit
|
|
[Dependency] private readonly PlayerCacheManager _playerCacheManager = default!; // Sunrise-Edit
|
|
[Dependency] private readonly TTSManager _ttsManager = default!; // Sunrise-Edit
|
|
private ISharedSponsorsManager? _sponsorsManager; // Sunrise-Sponsors
|
|
|
|
public override void PreInit()
|
|
{
|
|
ServerContentIoC.Register(Dependencies);
|
|
foreach (var callback in TestingCallbacks)
|
|
{
|
|
var cast = (ServerModuleTestingCallbacks)callback;
|
|
cast.ServerBeforeIoC?.Invoke();
|
|
}
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public override void Init()
|
|
{
|
|
base.Init();
|
|
Dependencies.BuildGraph();
|
|
Dependencies.InjectDependencies(this);
|
|
|
|
LoadConfigPresets(_cfg, _res, _log.GetSawmill("configpreset"));
|
|
|
|
var aczProvider = new ContentMagicAczProvider(Dependencies);
|
|
_host.SetMagicAczProvider(aczProvider);
|
|
|
|
_factory.DoAutoRegistrations();
|
|
_factory.IgnoreMissingComponents("Visuals");
|
|
_factory.RegisterIgnore(IgnoredComponents.List);
|
|
_factory.GenerateNetIds();
|
|
|
|
_proto.RegisterIgnore("parallax");
|
|
|
|
_loc.Initialize();
|
|
|
|
var dest = _cfg.GetCVar(CCVars.DestinationFile);
|
|
if (!string.IsNullOrEmpty(dest))
|
|
return; //hacky but it keeps load times for the generator down.
|
|
|
|
_log.GetSawmill("Storage").Level = LogLevel.Info;
|
|
_log.GetSawmill("db.ef").Level = LogLevel.Info;
|
|
|
|
_adminLog.Initialize();
|
|
_connection.Initialize();
|
|
_dbManager.Init();
|
|
_preferences.Init();
|
|
_nodeFactory.Initialize();
|
|
_netResMan.Initialize();
|
|
_ghostKick.Initialize();
|
|
_serverInfo.Initialize();
|
|
_serverApi.Initialize();
|
|
_contributorsManager.Initialize(); // Sunrise-Edit
|
|
_serversHubManager.Initialize(); // Sunrise-Edit
|
|
_playerCacheManager.Initialize(); // Sunrise-Edit
|
|
_ttsManager.Initialize(); // Sunrise-Edit
|
|
IoCManager.Resolve<PlayerCacheManager>().Initialize(); // Sunrise-Edit
|
|
|
|
// Sunrise-Sponsors-Start
|
|
SunriseServerEntry.Init();
|
|
IoCManager.Instance!.TryResolveType(out _sponsorsManager);
|
|
// Sunrise-Sponsors-End
|
|
|
|
_voteManager.Initialize();
|
|
_updateManager.Initialize();
|
|
_playTimeTracking.Initialize();
|
|
_watchlistWebhookManager.Initialize();
|
|
_job.Initialize();
|
|
_rateLimit.Initialize();
|
|
}
|
|
|
|
public override void PostInit()
|
|
{
|
|
base.PostInit();
|
|
|
|
_chatSan.Initialize();
|
|
_chat.Initialize();
|
|
var dest = _cfg.GetCVar(CCVars.DestinationFile);
|
|
if (!string.IsNullOrEmpty(dest))
|
|
{
|
|
var resPath = new ResPath(dest).ToRootedPath();
|
|
var file = _res.UserData.OpenWriteText(resPath.WithName("chem_" + dest));
|
|
ChemistryJsonGenerator.PublishJson(file);
|
|
file.Flush();
|
|
file = _res.UserData.OpenWriteText(resPath.WithName("react_" + dest));
|
|
ReactionJsonGenerator.PublishJson(file);
|
|
file.Flush();
|
|
// Wiki-Start
|
|
file = _res.UserData.OpenWriteText(resPath.WithName("entity_" + dest));
|
|
EntityJsonGenerator.PublishJson(file);
|
|
file.Flush();
|
|
file = _res.UserData.OpenWriteText(resPath.WithName("mealrecipes_" + dest));
|
|
MealsRecipesJsonGenerator.PublishJson(file);
|
|
file.Flush();
|
|
file = _res.UserData.OpenWriteText(resPath.WithName("healthchangereagents_" + dest));
|
|
HealthChangeReagentsJsonGenerator.PublishJson(file);
|
|
file.Flush();
|
|
// Wiki-End
|
|
IoCManager.Resolve<IBaseServer>().Shutdown("Data generation done");
|
|
Dependencies.Resolve<IBaseServer>().Shutdown("Data generation done");
|
|
return;
|
|
}
|
|
|
|
_recipe.Initialize();
|
|
_admin.Initialize();
|
|
_afk.Initialize();
|
|
_rules.Initialize();
|
|
_discordLink.Initialize();
|
|
_discordChatLink.Initialize();
|
|
_euiManager.Initialize();
|
|
_gameMap.Initialize();
|
|
_entSys.GetEntitySystem<GameTicker>().PostInitialize();
|
|
_ban.Initialize();
|
|
_connection.PostInit();
|
|
_multiServerKick.Initialize();
|
|
_cvarCtrl.Initialize();
|
|
|
|
// Sunrise-Sponsors-Start
|
|
SunriseServerEntry.PostInit();
|
|
// Sunrise-Sponsors-End
|
|
}
|
|
|
|
public override void Update(ModUpdateLevel level, FrameEventArgs frameEventArgs)
|
|
{
|
|
base.Update(level, frameEventArgs);
|
|
|
|
switch (level)
|
|
{
|
|
case ModUpdateLevel.PostEngine:
|
|
{
|
|
_euiManager.SendUpdates();
|
|
_voteManager.Update();
|
|
break;
|
|
}
|
|
|
|
case ModUpdateLevel.FramePostEngine:
|
|
_updateManager.Update();
|
|
_playTimeTracking.Update();
|
|
_watchlistWebhookManager.Update();
|
|
_connection.Update();
|
|
_serversHubManager.Update(); // Sunrise-Edit
|
|
_contributorsManager.Update(); // Sunrise-Edit
|
|
_sponsorsManager?.Update(); // Sunrise-Edit
|
|
break;
|
|
}
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
var dest = _cfg.GetCVar(CCVars.DestinationFile);
|
|
if (!string.IsNullOrEmpty(dest))
|
|
{
|
|
_playTimeTracking.Shutdown();
|
|
_dbManager.Shutdown();
|
|
}
|
|
|
|
_serverApi.Shutdown();
|
|
|
|
// TODO Should this be awaited?
|
|
_discordLink.Shutdown();
|
|
_discordChatLink.Shutdown();
|
|
}
|
|
|
|
private static void LoadConfigPresets(IConfigurationManager cfg, IResourceManager res, ISawmill sawmill)
|
|
{
|
|
LoadBuildConfigPresets(cfg, res, sawmill);
|
|
|
|
var presets = cfg.GetCVar(CCVars.ConfigPresets);
|
|
if (presets == "")
|
|
return;
|
|
|
|
foreach (var preset in presets.Split(','))
|
|
{
|
|
var path = $"{ConfigPresetsDir}{preset}.toml";
|
|
if (!res.TryContentFileRead(path, out var file))
|
|
{
|
|
sawmill.Error("Unable to load config preset {Preset}!", path);
|
|
continue;
|
|
}
|
|
|
|
cfg.LoadDefaultsFromTomlStream(file);
|
|
sawmill.Info("Loaded config preset: {Preset}", path);
|
|
}
|
|
}
|
|
|
|
private static void LoadBuildConfigPresets(IConfigurationManager cfg, IResourceManager res, ISawmill sawmill)
|
|
{
|
|
#if TOOLS
|
|
Load(CCVars.ConfigPresetDevelopment, "development");
|
|
#endif
|
|
#if DEBUG
|
|
Load(CCVars.ConfigPresetDebug, "debug");
|
|
#endif
|
|
|
|
#pragma warning disable CS8321
|
|
void Load(CVarDef<bool> cVar, string name)
|
|
{
|
|
var path = $"{ConfigPresetsDirBuild}{name}.toml";
|
|
if (cfg.GetCVar(cVar) && res.TryContentFileRead(path, out var file))
|
|
{
|
|
cfg.LoadDefaultsFromTomlStream(file);
|
|
sawmill.Info("Loaded config preset: {Preset}", path);
|
|
}
|
|
}
|
|
#pragma warning restore CS8321
|
|
}
|
|
}
|
|
}
|