(965abc29d) If the target sub is not the same as the current sub, need to take the difference into account in sim positions.
This commit is contained in:
@@ -242,10 +242,6 @@ namespace Barotrauma
|
|||||||
if (hover && PlayerInput.LeftButtonClicked())
|
if (hover && PlayerInput.LeftButtonClicked())
|
||||||
{
|
{
|
||||||
GameMain.Config.Language = language;
|
GameMain.Config.Language = language;
|
||||||
//reload tip in the selected language
|
|
||||||
selectedTip = TextManager.Get("LoadingScreenTip", true);
|
|
||||||
GameMain.Config.SetDefaultBindings(legacy: false);
|
|
||||||
GameMain.Config.CheckBindings(useDefaults: true);
|
|
||||||
WaitForLanguageSelection = false;
|
WaitForLanguageSelection = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -543,6 +543,14 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
attackSimPos -= Character.Submarine.SimPosition;
|
attackSimPos -= Character.Submarine.SimPosition;
|
||||||
}
|
}
|
||||||
|
else if (Character.Submarine != SelectedAiTarget.Entity.Submarine)
|
||||||
|
{
|
||||||
|
if (Character.Submarine != null && SelectedAiTarget.Entity.Submarine != null)
|
||||||
|
{
|
||||||
|
Vector2 diff = Character.Submarine.SimPosition - SelectedAiTarget.Entity.Submarine.SimPosition;
|
||||||
|
attackSimPos -= diff;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Math.Abs(Character.AnimController.movement.X) > 0.1f && !Character.AnimController.InWater &&
|
if (Math.Abs(Character.AnimController.movement.X) > 0.1f && !Character.AnimController.InWater &&
|
||||||
|
|||||||
@@ -114,11 +114,23 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
Vector2 currTargetSimPos = Vector2.Zero;
|
Vector2 currTargetSimPos = Vector2.Zero;
|
||||||
currTargetSimPos = Target.SimPosition;
|
currTargetSimPos = Target.SimPosition;
|
||||||
//if character is inside the sub and target isn't, transform the position
|
// Take the sub position into account in the sim pos
|
||||||
if (character.Submarine != null && Target.Submarine == null)
|
if (character.Submarine == null && Target.Submarine != null)
|
||||||
|
{
|
||||||
|
currTargetSimPos += Target.Submarine.SimPosition;
|
||||||
|
}
|
||||||
|
else if (character.Submarine != null && Target.Submarine == null)
|
||||||
{
|
{
|
||||||
currTargetSimPos -= character.Submarine.SimPosition;
|
currTargetSimPos -= character.Submarine.SimPosition;
|
||||||
}
|
}
|
||||||
|
else if (character.Submarine != Target.Submarine)
|
||||||
|
{
|
||||||
|
if (character.Submarine != null && Target.Submarine != null)
|
||||||
|
{
|
||||||
|
Vector2 diff = character.Submarine.SimPosition - Target.Submarine.SimPosition;
|
||||||
|
currTargetSimPos -= diff;
|
||||||
|
}
|
||||||
|
}
|
||||||
character.AIController.SteeringManager.SteeringSeek(currTargetSimPos);
|
character.AIController.SteeringManager.SteeringSeek(currTargetSimPos);
|
||||||
if (getDivingGearIfNeeded)
|
if (getDivingGearIfNeeded)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -302,6 +302,10 @@ namespace Barotrauma
|
|||||||
public void SetDefaultBindings(XDocument doc = null, bool legacy = false)
|
public void SetDefaultBindings(XDocument doc = null, bool legacy = false)
|
||||||
{
|
{
|
||||||
keyMapping = new KeyOrMouse[Enum.GetNames(typeof(InputType)).Length];
|
keyMapping = new KeyOrMouse[Enum.GetNames(typeof(InputType)).Length];
|
||||||
|
keyMapping[(int)InputType.Up] = new KeyOrMouse(Keys.W);
|
||||||
|
keyMapping[(int)InputType.Down] = new KeyOrMouse(Keys.S);
|
||||||
|
keyMapping[(int)InputType.Left] = new KeyOrMouse(Keys.A);
|
||||||
|
keyMapping[(int)InputType.Right] = new KeyOrMouse(Keys.D);
|
||||||
keyMapping[(int)InputType.Run] = new KeyOrMouse(Keys.LeftShift);
|
keyMapping[(int)InputType.Run] = new KeyOrMouse(Keys.LeftShift);
|
||||||
keyMapping[(int)InputType.Attack] = new KeyOrMouse(2);
|
keyMapping[(int)InputType.Attack] = new KeyOrMouse(2);
|
||||||
keyMapping[(int)InputType.Crouch] = new KeyOrMouse(Keys.LeftControl);
|
keyMapping[(int)InputType.Crouch] = new KeyOrMouse(Keys.LeftControl);
|
||||||
@@ -315,47 +319,11 @@ namespace Barotrauma
|
|||||||
keyMapping[(int)InputType.RadioChat] = new KeyOrMouse(Keys.R);
|
keyMapping[(int)InputType.RadioChat] = new KeyOrMouse(Keys.R);
|
||||||
keyMapping[(int)InputType.CrewOrders] = new KeyOrMouse(Keys.C);
|
keyMapping[(int)InputType.CrewOrders] = new KeyOrMouse(Keys.C);
|
||||||
|
|
||||||
|
keyMapping[(int)InputType.SelectNextCharacter] = new KeyOrMouse(Keys.Z);
|
||||||
|
keyMapping[(int)InputType.SelectPreviousCharacter] = new KeyOrMouse(Keys.X);
|
||||||
|
|
||||||
keyMapping[(int)InputType.Voice] = new KeyOrMouse(Keys.V);
|
keyMapping[(int)InputType.Voice] = new KeyOrMouse(Keys.V);
|
||||||
|
|
||||||
if (Language == "French")
|
|
||||||
{
|
|
||||||
keyMapping[(int)InputType.Up] = new KeyOrMouse(Keys.Z);
|
|
||||||
keyMapping[(int)InputType.Down] = new KeyOrMouse(Keys.S);
|
|
||||||
keyMapping[(int)InputType.Left] = new KeyOrMouse(Keys.Q);
|
|
||||||
keyMapping[(int)InputType.Right] = new KeyOrMouse(Keys.D);
|
|
||||||
|
|
||||||
keyMapping[(int)InputType.SelectNextCharacter] = new KeyOrMouse(Keys.X);
|
|
||||||
keyMapping[(int)InputType.SelectPreviousCharacter] = new KeyOrMouse(Keys.W);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
keyMapping[(int)InputType.Up] = new KeyOrMouse(Keys.W);
|
|
||||||
keyMapping[(int)InputType.Down] = new KeyOrMouse(Keys.S);
|
|
||||||
keyMapping[(int)InputType.Left] = new KeyOrMouse(Keys.A);
|
|
||||||
keyMapping[(int)InputType.Right] = new KeyOrMouse(Keys.D);
|
|
||||||
|
|
||||||
keyMapping[(int)InputType.SelectNextCharacter] = new KeyOrMouse(Keys.Z);
|
|
||||||
keyMapping[(int)InputType.SelectPreviousCharacter] = new KeyOrMouse(Keys.X);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Load DefaultConfig
|
|
||||||
private void LoadDefaultConfig()
|
|
||||||
{
|
|
||||||
XDocument doc = XMLExtensions.TryLoadXml(savePath);
|
|
||||||
|
|
||||||
Language = doc.Root.GetAttributeString("language", "English");
|
|
||||||
|
|
||||||
MasterServerUrl = doc.Root.GetAttributeString("masterserverurl", "");
|
|
||||||
|
|
||||||
AutoCheckUpdates = doc.Root.GetAttributeBool("autocheckupdates", true);
|
|
||||||
WasGameUpdated = doc.Root.GetAttributeBool("wasgameupdated", false);
|
|
||||||
|
|
||||||
VerboseLogging = doc.Root.GetAttributeBool("verboselogging", false);
|
|
||||||
SaveDebugConsoleLogs = doc.Root.GetAttributeBool("savedebugconsolelogs", false);
|
|
||||||
|
|
||||||
QuickStartSubmarineName = doc.Root.GetAttributeString("quickstartsub", "");
|
|
||||||
|
|
||||||
if (legacy)
|
if (legacy)
|
||||||
{
|
{
|
||||||
keyMapping[(int)InputType.Use] = new KeyOrMouse(0);
|
keyMapping[(int)InputType.Use] = new KeyOrMouse(0);
|
||||||
@@ -373,15 +341,33 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
foreach (XElement subElement in doc.Root.Elements())
|
foreach (XElement subElement in doc.Root.Elements())
|
||||||
{
|
{
|
||||||
if (subElement.Name.ToString().ToLowerInvariant() == "keymapping")
|
switch (subElement.Name.ToString().ToLowerInvariant())
|
||||||
{
|
{
|
||||||
LoadKeyBinds(subElement);
|
case "keymapping":
|
||||||
|
foreach (XAttribute attribute in subElement.Attributes())
|
||||||
|
{
|
||||||
|
if (Enum.TryParse(attribute.Name.ToString(), true, out InputType inputType))
|
||||||
|
{
|
||||||
|
if (int.TryParse(attribute.Value.ToString(), out int mouseButton))
|
||||||
|
{
|
||||||
|
keyMapping[(int)inputType] = new KeyOrMouse(mouseButton);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (Enum.TryParse(attribute.Value.ToString(), true, out Keys key))
|
||||||
|
{
|
||||||
|
keyMapping[(int)inputType] = new KeyOrMouse(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CheckBindings(bool useDefaults)
|
private void CheckBindings(bool useDefaults)
|
||||||
{
|
{
|
||||||
foreach (InputType inputType in Enum.GetValues(typeof(InputType)))
|
foreach (InputType inputType in Enum.GetValues(typeof(InputType)))
|
||||||
{
|
{
|
||||||
@@ -836,54 +822,6 @@ namespace Barotrauma
|
|||||||
VoiceSetting = voiceSetting;
|
VoiceSetting = voiceSetting;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!SelectedContentPackages.Any())
|
|
||||||
{
|
|
||||||
var availablePackage = ContentPackage.List.FirstOrDefault(cp => cp.IsCompatible() && cp.CorePackage);
|
|
||||||
if (availablePackage != null)
|
|
||||||
{
|
|
||||||
SelectedContentPackages.Add(availablePackage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//save to get rid of the invalid selected packages in the config file
|
|
||||||
if (missingPackagePaths.Count > 0 || incompatiblePackages.Count > 0) { SaveNewPlayerConfig(); }
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Save DefaultConfig
|
|
||||||
private void SaveNewDefaultConfig()
|
|
||||||
{
|
|
||||||
XDocument doc = new XDocument();
|
|
||||||
|
|
||||||
if (doc.Root == null)
|
|
||||||
{
|
|
||||||
doc.Add(new XElement("config"));
|
|
||||||
}
|
|
||||||
|
|
||||||
doc.Root.Add(
|
|
||||||
new XAttribute("language", TextManager.Language),
|
|
||||||
new XAttribute("masterserverurl", MasterServerUrl),
|
|
||||||
new XAttribute("autocheckupdates", AutoCheckUpdates),
|
|
||||||
new XAttribute("musicvolume", musicVolume),
|
|
||||||
new XAttribute("soundvolume", soundVolume),
|
|
||||||
new XAttribute("voicechatvolume", voiceChatVolume),
|
|
||||||
new XAttribute("verboselogging", VerboseLogging),
|
|
||||||
new XAttribute("savedebugconsolelogs", SaveDebugConsoleLogs),
|
|
||||||
new XAttribute("enablesplashscreen", EnableSplashScreen),
|
|
||||||
new XAttribute("usesteammatchmaking", useSteamMatchmaking),
|
|
||||||
new XAttribute("quickstartsub", QuickStartSubmarineName),
|
|
||||||
new XAttribute("requiresteamauthentication", requireSteamAuthentication),
|
|
||||||
new XAttribute("aimassistamount", aimAssistAmount));
|
|
||||||
|
|
||||||
if (!ShowUserStatisticsPrompt)
|
|
||||||
{
|
|
||||||
doc.Root.Add(new XAttribute("senduserstatistics", sendUserStatistics));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (WasGameUpdated)
|
|
||||||
{
|
|
||||||
doc.Root.Add(new XAttribute("wasgameupdated", true));
|
|
||||||
}
|
|
||||||
|
|
||||||
useSteamMatchmaking = doc.Root.GetAttributeBool("usesteammatchmaking", useSteamMatchmaking);
|
useSteamMatchmaking = doc.Root.GetAttributeBool("usesteammatchmaking", useSteamMatchmaking);
|
||||||
requireSteamAuthentication = doc.Root.GetAttributeBool("requiresteamauthentication", requireSteamAuthentication);
|
requireSteamAuthentication = doc.Root.GetAttributeBool("requiresteamauthentication", requireSteamAuthentication);
|
||||||
@@ -905,7 +843,23 @@ namespace Barotrauma
|
|||||||
switch (subElement.Name.ToString().ToLowerInvariant())
|
switch (subElement.Name.ToString().ToLowerInvariant())
|
||||||
{
|
{
|
||||||
case "keymapping":
|
case "keymapping":
|
||||||
LoadKeyBinds(subElement);
|
foreach (XAttribute attribute in subElement.Attributes())
|
||||||
|
{
|
||||||
|
if (Enum.TryParse(attribute.Name.ToString(), true, out InputType inputType))
|
||||||
|
{
|
||||||
|
if (int.TryParse(attribute.Value.ToString(), out int mouseButton))
|
||||||
|
{
|
||||||
|
keyMapping[(int)inputType] = new KeyOrMouse(mouseButton);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (Enum.TryParse(attribute.Value.ToString(), true, out Keys key))
|
||||||
|
{
|
||||||
|
keyMapping[(int)inputType] = new KeyOrMouse(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case "gameplay":
|
case "gameplay":
|
||||||
jobPreferences = new List<string>();
|
jobPreferences = new List<string>();
|
||||||
@@ -951,7 +905,22 @@ namespace Barotrauma
|
|||||||
|
|
||||||
foreach (XElement subElement in doc.Root.Elements())
|
foreach (XElement subElement in doc.Root.Elements())
|
||||||
{
|
{
|
||||||
switch (subElement.Name.ToString().ToLowerInvariant())
|
gSettings = new XElement("graphicssettings");
|
||||||
|
doc.Root.Add(gSettings);
|
||||||
|
}
|
||||||
|
|
||||||
|
gSettings.ReplaceAttributes(
|
||||||
|
new XAttribute("particlelimit", ParticleLimit),
|
||||||
|
new XAttribute("lightmapscale", LightMapScale),
|
||||||
|
new XAttribute("specularity", SpecularityEnabled),
|
||||||
|
new XAttribute("chromaticaberration", ChromaticAberrationEnabled),
|
||||||
|
new XAttribute("losmode", LosMode),
|
||||||
|
new XAttribute("hudscale", HUDScale),
|
||||||
|
new XAttribute("inventoryscale", InventoryScale));
|
||||||
|
|
||||||
|
foreach (ContentPackage contentPackage in SelectedContentPackages)
|
||||||
|
{
|
||||||
|
if (contentPackage.Path.Contains(vanillaContentPackagePath))
|
||||||
{
|
{
|
||||||
case "contentpackage":
|
case "contentpackage":
|
||||||
string path = System.IO.Path.GetFullPath(subElement.GetAttributeString("path", ""));
|
string path = System.IO.Path.GetFullPath(subElement.GetAttributeString("path", ""));
|
||||||
@@ -1065,6 +1034,7 @@ namespace Barotrauma
|
|||||||
new XAttribute("autocheckupdates", AutoCheckUpdates),
|
new XAttribute("autocheckupdates", AutoCheckUpdates),
|
||||||
new XAttribute("musicvolume", musicVolume),
|
new XAttribute("musicvolume", musicVolume),
|
||||||
new XAttribute("soundvolume", soundVolume),
|
new XAttribute("soundvolume", soundVolume),
|
||||||
|
new XAttribute("voicechatvolume", voiceChatVolume),
|
||||||
new XAttribute("verboselogging", VerboseLogging),
|
new XAttribute("verboselogging", VerboseLogging),
|
||||||
new XAttribute("savedebugconsolelogs", SaveDebugConsoleLogs),
|
new XAttribute("savedebugconsolelogs", SaveDebugConsoleLogs),
|
||||||
new XAttribute("enablesplashscreen", EnableSplashScreen),
|
new XAttribute("enablesplashscreen", EnableSplashScreen),
|
||||||
@@ -1219,26 +1189,6 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private void LoadKeyBinds(XElement element)
|
|
||||||
{
|
|
||||||
foreach (XAttribute attribute in element.Attributes())
|
|
||||||
{
|
|
||||||
if (!Enum.TryParse(attribute.Name.ToString(), true, out InputType inputType)) { continue; }
|
|
||||||
|
|
||||||
if (int.TryParse(attribute.Value.ToString(), out int mouseButton))
|
|
||||||
{
|
|
||||||
keyMapping[(int)inputType] = new KeyOrMouse(mouseButton);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (Enum.TryParse(attribute.Value.ToString(), true, out Keys key))
|
|
||||||
{
|
|
||||||
keyMapping[(int)inputType] = new KeyOrMouse(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ResetToDefault()
|
public void ResetToDefault()
|
||||||
{
|
{
|
||||||
LoadDefaultConfig();
|
LoadDefaultConfig();
|
||||||
|
|||||||
Reference in New Issue
Block a user