(f0d812055) v0.9.9.0
This commit is contained in:
@@ -27,10 +27,10 @@ namespace Barotrauma
|
||||
}
|
||||
|
||||
public partial class GameSettings
|
||||
{
|
||||
const string savePath = "config.xml";
|
||||
const string playerSavePath = "config_player.xml";
|
||||
const string vanillaContentPackagePath = "Data/ContentPackages/Vanilla";
|
||||
{
|
||||
public const string SavePath = "config.xml";
|
||||
public const string PlayerSavePath = "config_player.xml";
|
||||
public const string VanillaContentPackagePath = "Data/ContentPackages/Vanilla";
|
||||
|
||||
public int GraphicsWidth { get; set; }
|
||||
public int GraphicsHeight { get; set; }
|
||||
@@ -91,6 +91,7 @@ namespace Barotrauma
|
||||
set { /*do nothing*/ }
|
||||
}
|
||||
#endif
|
||||
public bool UseDualModeSockets { get; set; } = true;
|
||||
|
||||
public bool AutoUpdateWorkshopItems;
|
||||
|
||||
@@ -117,6 +118,19 @@ namespace Barotrauma
|
||||
set { jobPreferences = value; }
|
||||
}
|
||||
|
||||
public bool AreJobPreferencesEqual(List<Pair<string, int>> compareTo)
|
||||
{
|
||||
if (jobPreferences == null || compareTo == null) return false;
|
||||
if (jobPreferences.Count != compareTo.Count) return false;
|
||||
|
||||
for (int i = 0; i < jobPreferences.Count; i++)
|
||||
{
|
||||
if (jobPreferences[i].First != compareTo[i].First || jobPreferences[i].Second != compareTo[i].Second) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public int CharacterHeadIndex { get; set; }
|
||||
public int CharacterHairIndex { get; set; }
|
||||
public int CharacterBeardIndex { get; set; }
|
||||
@@ -138,6 +152,13 @@ namespace Barotrauma
|
||||
public bool CrewMenuOpen { get; set; } = true;
|
||||
public bool ChatOpen { get; set; } = true;
|
||||
|
||||
public float CorpseDespawnDelay { get; set; } = 10.0f * 60.0f;
|
||||
|
||||
/// <summary>
|
||||
/// How many corpses there can be in a sub before they start to get despawned
|
||||
/// </summary>
|
||||
public int CorpsesPerSubDespawnThreshold { get; set; } = 5;
|
||||
|
||||
private string overrideSaveFolder, overrideMultiplayerSaveFolder;
|
||||
|
||||
private bool unsavedSettings;
|
||||
@@ -196,13 +217,20 @@ namespace Barotrauma
|
||||
get { return voiceChatVolume; }
|
||||
set
|
||||
{
|
||||
voiceChatVolume = MathHelper.Clamp(value, 0.0f, 1.0f);
|
||||
voiceChatVolume = MathHelper.Clamp(value, 0.0f, 2.0f);
|
||||
#if CLIENT
|
||||
GameMain.SoundManager?.SetCategoryGainMultiplier("voip", voiceChatVolume * 30.0f, 0);
|
||||
GameMain.SoundManager?.SetCategoryGainMultiplier("voip", Math.Min(voiceChatVolume, 1.0f), 0);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public int VoiceChatCutoffPrevention
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public const float MaxMicrophoneVolume = 10.0f;
|
||||
public float MicrophoneVolume
|
||||
{
|
||||
@@ -236,6 +264,7 @@ namespace Barotrauma
|
||||
|
||||
#if DEBUG
|
||||
public bool AutomaticQuickStartEnabled { get; set; }
|
||||
public bool TextManagerDebugModeEnabled { get; set; }
|
||||
#endif
|
||||
|
||||
private FileSystemWatcher modsFolderWatcher;
|
||||
@@ -311,7 +340,7 @@ namespace Barotrauma
|
||||
ref shouldRefreshAfflictions);
|
||||
|
||||
if (shouldRefreshAfflictions) { AfflictionPrefab.LoadAll(GameMain.Instance.GetFilesOfType(ContentType.Afflictions)); }
|
||||
if (shouldRefreshSubs) { Submarine.RefreshSavedSubs(); }
|
||||
if (shouldRefreshSubs) { SubmarineInfo.RefreshSavedSubs(); }
|
||||
if (shouldRefreshFabricationRecipes) { ItemPrefab.InitFabricationRecipes(); }
|
||||
if (shouldRefreshRuinGenerationParams) { RuinGeneration.RuinGenerationParams.ClearAll(); }
|
||||
if (shouldRefreshScriptedEventSets) { ScriptedEventSet.LoadPrefabs(); }
|
||||
@@ -359,7 +388,7 @@ namespace Barotrauma
|
||||
ref shouldRefreshAfflictions);
|
||||
|
||||
if (shouldRefreshAfflictions) { AfflictionPrefab.LoadAll(GameMain.Instance.GetFilesOfType(ContentType.Afflictions)); }
|
||||
if (shouldRefreshSubs) { Submarine.RefreshSavedSubs(); }
|
||||
if (shouldRefreshSubs) { SubmarineInfo.RefreshSavedSubs(); }
|
||||
if (shouldRefreshFabricationRecipes) { ItemPrefab.InitFabricationRecipes(); }
|
||||
if (shouldRefreshRuinGenerationParams) { RuinGeneration.RuinGenerationParams.ClearAll(); }
|
||||
if (shouldRefreshScriptedEventSets) { ScriptedEventSet.LoadPrefabs(); }
|
||||
@@ -408,7 +437,7 @@ namespace Barotrauma
|
||||
ref shouldRefreshAfflictions);
|
||||
|
||||
if (shouldRefreshAfflictions) { AfflictionPrefab.LoadAll(GameMain.Instance.GetFilesOfType(ContentType.Afflictions)); }
|
||||
if (shouldRefreshSubs) { Submarine.RefreshSavedSubs(); }
|
||||
if (shouldRefreshSubs) { SubmarineInfo.RefreshSavedSubs(); }
|
||||
if (shouldRefreshFabricationRecipes) { ItemPrefab.InitFabricationRecipes(); }
|
||||
if (shouldRefreshRuinGenerationParams) { RuinGeneration.RuinGenerationParams.ClearAll(); }
|
||||
if (shouldRefreshScriptedEventSets) { ScriptedEventSet.LoadPrefabs(); }
|
||||
@@ -496,10 +525,10 @@ namespace Barotrauma
|
||||
shouldRefreshSoundPlayer = true;
|
||||
break;
|
||||
case ContentType.Particles:
|
||||
GameMain.ParticleManager.LoadPrefabsFromFile(file);
|
||||
GameMain.ParticleManager?.LoadPrefabsFromFile(file);
|
||||
break;
|
||||
case ContentType.Decals:
|
||||
GameMain.DecalManager.LoadFromFile(file);
|
||||
GameMain.DecalManager?.LoadFromFile(file);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
@@ -579,10 +608,10 @@ namespace Barotrauma
|
||||
shouldRefreshSoundPlayer = true;
|
||||
break;
|
||||
case ContentType.Particles:
|
||||
GameMain.ParticleManager.RemovePrefabsByFile(file.Path);
|
||||
GameMain.ParticleManager?.RemovePrefabsByFile(file.Path);
|
||||
break;
|
||||
case ContentType.Decals:
|
||||
GameMain.DecalManager.RemoveByFile(file.Path);
|
||||
GameMain.DecalManager?.RemoveByFile(file.Path);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
@@ -615,6 +644,7 @@ namespace Barotrauma
|
||||
case ContentType.Particles:
|
||||
case ContentType.Decals:
|
||||
case ContentType.Outpost:
|
||||
case ContentType.Wreck:
|
||||
case ContentType.BackgroundCreaturePrefabs:
|
||||
case ContentType.ServerExecutable:
|
||||
case ContentType.None:
|
||||
@@ -643,7 +673,7 @@ namespace Barotrauma
|
||||
ItemAssemblyPrefab.Prefabs.SortAll();
|
||||
StructurePrefab.Prefabs.SortAll();
|
||||
|
||||
Submarine.RefreshSavedSubs();
|
||||
SubmarineInfo.RefreshSavedSubs();
|
||||
ItemPrefab.InitFabricationRecipes();
|
||||
RuinGeneration.RuinGenerationParams.ClearAll();
|
||||
ScriptedEventSet.LoadPrefabs();
|
||||
@@ -724,6 +754,10 @@ namespace Barotrauma
|
||||
public bool ShowLanguageSelectionPrompt { get; set; }
|
||||
|
||||
private bool showTutorialSkipWarning = true;
|
||||
|
||||
public static bool EnableSubmarineAutoSave { get; set; }
|
||||
public static Color SubEditorBackgroundColor { get; set; }
|
||||
|
||||
public bool ShowTutorialSkipWarning
|
||||
{
|
||||
get { return showTutorialSkipWarning && CompletedTutorialNames.Count == 0; }
|
||||
@@ -757,7 +791,7 @@ namespace Barotrauma
|
||||
|
||||
private void OnModFolderUpdate(object sender, FileSystemEventArgs e)
|
||||
{
|
||||
if (SuppressModFolderWatcher || !(GameMain.NetworkMember?.IsClient ?? false)) { return; }
|
||||
if (SuppressModFolderWatcher || (GameMain.NetworkMember?.IsClient ?? false)) { return; }
|
||||
switch (e.ChangeType)
|
||||
{
|
||||
case WatcherChangeTypes.Created:
|
||||
@@ -818,7 +852,7 @@ namespace Barotrauma
|
||||
|
||||
private void LoadDefaultConfig(bool setLanguage = true)
|
||||
{
|
||||
XDocument doc = XMLExtensions.TryLoadXml(savePath);
|
||||
XDocument doc = XMLExtensions.TryLoadXml(SavePath);
|
||||
if (doc == null)
|
||||
{
|
||||
GraphicsWidth = 1024;
|
||||
@@ -875,8 +909,11 @@ namespace Barotrauma
|
||||
new XAttribute("soundvolume", soundVolume),
|
||||
new XAttribute("microphonevolume", microphoneVolume),
|
||||
new XAttribute("voicechatvolume", voiceChatVolume),
|
||||
new XAttribute("voicechatcutoffprevention", VoiceChatCutoffPrevention),
|
||||
new XAttribute("verboselogging", VerboseLogging),
|
||||
new XAttribute("savedebugconsolelogs", SaveDebugConsoleLogs),
|
||||
new XAttribute("submarineautosave", EnableSubmarineAutoSave),
|
||||
new XAttribute("subeditorbackground", XMLExtensions.ColorToString(SubEditorBackgroundColor)),
|
||||
new XAttribute("enablesplashscreen", EnableSplashScreen),
|
||||
new XAttribute("usesteammatchmaking", UseSteamMatchmaking),
|
||||
new XAttribute("quickstartsub", QuickStartSubmarineName),
|
||||
@@ -931,7 +968,7 @@ namespace Barotrauma
|
||||
|
||||
foreach (ContentPackage contentPackage in SelectedContentPackages)
|
||||
{
|
||||
if (contentPackage.Path.Contains(vanillaContentPackagePath))
|
||||
if (contentPackage.Path.Contains(VanillaContentPackagePath))
|
||||
{
|
||||
doc.Root.Add(new XElement("contentpackage", new XAttribute("path", contentPackage.Path)));
|
||||
break;
|
||||
@@ -986,7 +1023,7 @@ namespace Barotrauma
|
||||
|
||||
try
|
||||
{
|
||||
using (var writer = XmlWriter.Create(savePath, settings))
|
||||
using (var writer = XmlWriter.Create(SavePath, settings))
|
||||
{
|
||||
doc.WriteTo(writer);
|
||||
writer.Flush();
|
||||
@@ -1021,7 +1058,7 @@ namespace Barotrauma
|
||||
/// </summary>
|
||||
private bool LoadPlayerConfigInternal()
|
||||
{
|
||||
XDocument doc = XMLExtensions.LoadXml(playerSavePath);
|
||||
XDocument doc = XMLExtensions.LoadXml(PlayerSavePath);
|
||||
if (doc == null || doc.Root == null)
|
||||
{
|
||||
ShowUserStatisticsPrompt = true;
|
||||
@@ -1187,6 +1224,8 @@ namespace Barotrauma
|
||||
new XAttribute("soundvolume", soundVolume),
|
||||
new XAttribute("verboselogging", VerboseLogging),
|
||||
new XAttribute("savedebugconsolelogs", SaveDebugConsoleLogs),
|
||||
new XAttribute("submarineautosave", EnableSubmarineAutoSave),
|
||||
new XAttribute("subeditorbackground", XMLExtensions.ColorToString(SubEditorBackgroundColor)),
|
||||
new XAttribute("enablesplashscreen", EnableSplashScreen),
|
||||
new XAttribute("usesteammatchmaking", UseSteamMatchmaking),
|
||||
new XAttribute("quickstartsub", QuickStartSubmarineName),
|
||||
@@ -1199,9 +1238,13 @@ namespace Barotrauma
|
||||
new XAttribute("crewmenuopen", CrewMenuOpen),
|
||||
new XAttribute("campaigndisclaimershown", CampaignDisclaimerShown),
|
||||
new XAttribute("editordisclaimershown", EditorDisclaimerShown),
|
||||
new XAttribute("tutorialskipwarning", ShowTutorialSkipWarning)
|
||||
new XAttribute("tutorialskipwarning", ShowTutorialSkipWarning),
|
||||
new XAttribute("corpsedespawndelay", CorpseDespawnDelay),
|
||||
new XAttribute("corpsespersubdespawnthreshold", CorpsesPerSubDespawnThreshold),
|
||||
new XAttribute("usedualmodesockets", UseDualModeSockets)
|
||||
#if DEBUG
|
||||
, new XAttribute("automaticquickstartenabled", AutomaticQuickStartEnabled)
|
||||
, new XAttribute("textmanagerdebugmodeenabled", TextManagerDebugModeEnabled)
|
||||
#endif
|
||||
);
|
||||
|
||||
@@ -1250,6 +1293,7 @@ namespace Barotrauma
|
||||
new XAttribute("musicvolume", musicVolume),
|
||||
new XAttribute("soundvolume", soundVolume),
|
||||
new XAttribute("voicechatvolume", voiceChatVolume),
|
||||
new XAttribute("voicechatcutoffprevention", VoiceChatCutoffPrevention),
|
||||
new XAttribute("microphonevolume", microphoneVolume),
|
||||
new XAttribute("muteonfocuslost", MuteOnFocusLost),
|
||||
new XAttribute("dynamicrangecompressionenabled", DynamicRangeCompressionEnabled),
|
||||
@@ -1349,7 +1393,7 @@ namespace Barotrauma
|
||||
|
||||
try
|
||||
{
|
||||
using (var writer = XmlWriter.Create(playerSavePath, settings))
|
||||
using (var writer = XmlWriter.Create(PlayerSavePath, settings))
|
||||
{
|
||||
doc.WriteTo(writer);
|
||||
writer.Flush();
|
||||
@@ -1374,6 +1418,8 @@ namespace Barotrauma
|
||||
AutoCheckUpdates = doc.Root.GetAttributeBool("autocheckupdates", AutoCheckUpdates);
|
||||
sendUserStatistics = doc.Root.GetAttributeBool("senduserstatistics", sendUserStatistics);
|
||||
QuickStartSubmarineName = doc.Root.GetAttributeString("quickstartsub", QuickStartSubmarineName);
|
||||
EnableSubmarineAutoSave = doc.Root.GetAttributeBool("submarineautosave", true);
|
||||
SubEditorBackgroundColor = doc.Root.GetAttributeColor("subeditorbackground", new Color(0.051f, 0.149f, 0.271f, 1.0f));
|
||||
UseSteamMatchmaking = doc.Root.GetAttributeBool("usesteammatchmaking", UseSteamMatchmaking);
|
||||
RequireSteamAuthentication = doc.Root.GetAttributeBool("requiresteamauthentication", RequireSteamAuthentication);
|
||||
EnableSplashScreen = doc.Root.GetAttributeBool("enablesplashscreen", EnableSplashScreen);
|
||||
@@ -1382,11 +1428,15 @@ namespace Barotrauma
|
||||
EnableMouseLook = doc.Root.GetAttributeBool("enablemouselook", EnableMouseLook);
|
||||
CrewMenuOpen = doc.Root.GetAttributeBool("crewmenuopen", CrewMenuOpen);
|
||||
ChatOpen = doc.Root.GetAttributeBool("chatopen", ChatOpen);
|
||||
CorpseDespawnDelay = doc.Root.GetAttributeInt("corpsedespawndelay", 10 * 60);
|
||||
CorpsesPerSubDespawnThreshold = doc.Root.GetAttributeInt("corpsespersubdespawnthreshold", 5);
|
||||
CampaignDisclaimerShown = doc.Root.GetAttributeBool("campaigndisclaimershown", CampaignDisclaimerShown);
|
||||
EditorDisclaimerShown = doc.Root.GetAttributeBool("editordisclaimershown", EditorDisclaimerShown);
|
||||
ShowTutorialSkipWarning = doc.Root.GetAttributeBool("tutorialskipwarning", true);
|
||||
UseDualModeSockets = doc.Root.GetAttributeBool("usedualmodesockets", true);
|
||||
#if DEBUG
|
||||
AutomaticQuickStartEnabled = doc.Root.GetAttributeBool("automaticquickstartenabled", AutomaticQuickStartEnabled);
|
||||
TextManagerDebugModeEnabled = doc.Root.GetAttributeBool("textmanagerdebugmodeenabled", TextManagerDebugModeEnabled);
|
||||
#endif
|
||||
XElement gameplayElement = doc.Root.Element("gameplay");
|
||||
jobPreferences = new List<Pair<string, int>>();
|
||||
@@ -1472,6 +1522,7 @@ namespace Barotrauma
|
||||
DynamicRangeCompressionEnabled = audioSettings.GetAttributeBool("dynamicrangecompressionenabled", DynamicRangeCompressionEnabled);
|
||||
VoipAttenuationEnabled = audioSettings.GetAttributeBool("voipattenuationenabled", VoipAttenuationEnabled);
|
||||
VoiceChatVolume = audioSettings.GetAttributeFloat("voicechatvolume", VoiceChatVolume);
|
||||
VoiceChatCutoffPrevention = audioSettings.GetAttributeInt("voicechatcutoffprevention", VoiceChatCutoffPrevention);
|
||||
MuteOnFocusLost = audioSettings.GetAttributeBool("muteonfocuslost", MuteOnFocusLost);
|
||||
|
||||
UseDirectionalVoiceChat = audioSettings.GetAttributeBool("usedirectionalvoicechat", UseDirectionalVoiceChat);
|
||||
@@ -1560,6 +1611,8 @@ namespace Barotrauma
|
||||
InventoryScale = 1;
|
||||
AutoUpdateWorkshopItems = true;
|
||||
CampaignDisclaimerShown = false;
|
||||
CorpseDespawnDelay = 10 * 60;
|
||||
CorpsesPerSubDespawnThreshold = 5;
|
||||
if (resetLanguage)
|
||||
{
|
||||
Language = "English";
|
||||
|
||||
Reference in New Issue
Block a user