From 14832e2040e2659c3eba67d7b5c3e43e5535f688 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Tue, 26 Mar 2019 14:06:55 +0200 Subject: [PATCH] (aea5053bf) Fix wall target position not updated when the submarine moves. Fix latchontoai attach positions and distance checks. Detaching should also work both when the characters can get in and when the submarine velocity is enough to detach the characters. Still not synced, but re-enabled for testing. --- .../Source/Characters/AI/EnemyAIController.cs | 11 +-- .../Source/Items/Components/Door.cs | 4 +- .../Source/Items/Components/Turret.cs | 6 +- .../Networking/FileTransfer/FileReceiver.cs | 34 +++---- .../Source/Networking/GameClient.cs | 94 +------------------ .../Source/Screens/CampaignUI.cs | 11 +-- .../Source/Screens/NetLobbyScreen.cs | 12 +-- .../Source/Networking/GameServer.cs | 13 +-- .../Source/Characters/AI/EnemyAIController.cs | 39 +++++--- .../Source/Characters/AI/LatchOntoAI.cs | 2 +- .../Source/Characters/Limb.cs | 2 +- .../Source/Events/Missions/Mission.cs | 6 ++ .../BarotraumaShared/Source/Items/Item.cs | 4 +- .../Source/Map/Map/Location.cs | 16 +--- .../BarotraumaShared/Source/Utils/SaveUtil.cs | 10 +- 15 files changed, 76 insertions(+), 188 deletions(-) diff --git a/Barotrauma/BarotraumaClient/Source/Characters/AI/EnemyAIController.cs b/Barotrauma/BarotraumaClient/Source/Characters/AI/EnemyAIController.cs index c18e14dee..e112d338c 100644 --- a/Barotrauma/BarotraumaClient/Source/Characters/AI/EnemyAIController.cs +++ b/Barotrauma/BarotraumaClient/Source/Characters/AI/EnemyAIController.cs @@ -16,13 +16,14 @@ namespace Barotrauma if (SelectedAiTarget?.Entity != null) { - GUI.DrawLine(spriteBatch, pos, new Vector2(SelectedAiTarget.WorldPosition.X, -SelectedAiTarget.WorldPosition.Y), Color.Red * 0.3f, 0, 5); + GUI.DrawLine(spriteBatch, pos, new Vector2(SelectedAiTarget.WorldPosition.X, -SelectedAiTarget.WorldPosition.Y), Color.Red * 0.5f, 0, 4); if (wallTarget != null) { Vector2 wallTargetPos = wallTarget.Position; + if (wallTarget.Structure.Submarine != null) { wallTargetPos += wallTarget.Structure.Submarine.Position; } wallTargetPos.Y = -wallTargetPos.Y; - GUI.DrawRectangle(spriteBatch, wallTargetPos - new Vector2(10.0f, 10.0f), new Vector2(20.0f, 20.0f), Color.Red, false); + GUI.DrawRectangle(spriteBatch, wallTargetPos - new Vector2(10.0f, 10.0f), new Vector2(20.0f, 20.0f), Color.Orange, false); GUI.DrawLine(spriteBatch, pos, wallTargetPos, Color.Orange * 0.5f, 0, 5); } GUI.DrawString(spriteBatch, pos - Vector2.UnitY * 60.0f, $"{SelectedAiTarget.Entity.ToString()} ({targetValue.FormatZeroDecimal()})", Color.Red, Color.Black); @@ -56,18 +57,16 @@ namespace Barotrauma { GUI.DrawLine(spriteBatch, ConvertUnits.ToDisplayUnits(new Vector2(attachJoint.WorldAnchorA.X, -attachJoint.WorldAnchorA.Y)), - ConvertUnits.ToDisplayUnits(new Vector2(attachJoint.WorldAnchorB.X, -attachJoint.WorldAnchorB.Y)), Color.Orange * 0.6f, 0, 5); + ConvertUnits.ToDisplayUnits(new Vector2(attachJoint.WorldAnchorB.X, -attachJoint.WorldAnchorB.Y)), Color.Green, 0, 4); } if (latchOntoAI.WallAttachPos.HasValue) { GUI.DrawLine(spriteBatch, pos, - ConvertUnits.ToDisplayUnits(new Vector2(latchOntoAI.WallAttachPos.Value.X, -latchOntoAI.WallAttachPos.Value.Y)), Color.Orange * 0.6f, 0, 3); + ConvertUnits.ToDisplayUnits(new Vector2(latchOntoAI.WallAttachPos.Value.X, -latchOntoAI.WallAttachPos.Value.Y)), Color.Green, 0, 3); } } - GUI.DrawLine(spriteBatch, pos, pos + ConvertUnits.ToDisplayUnits(new Vector2(Steering.X, -Steering.Y)), Color.Blue, width: 3); - if (steeringManager is IndoorsSteeringManager pathSteering) { var path = pathSteering.CurrentPath; diff --git a/Barotrauma/BarotraumaClient/Source/Items/Components/Door.cs b/Barotrauma/BarotraumaClient/Source/Items/Components/Door.cs index 8a1858095..d536e9fe5 100644 --- a/Barotrauma/BarotraumaClient/Source/Items/Components/Door.cs +++ b/Barotrauma/BarotraumaClient/Source/Items/Components/Door.cs @@ -93,7 +93,7 @@ namespace Barotrauma.Items.Components public void Draw(SpriteBatch spriteBatch, bool editing) { - Color color = item.SpriteColor; + Color color = Color.White; if (brokenSprite == null) { //broken doors turn black if no broken sprite has been configured @@ -108,7 +108,7 @@ namespace Barotrauma.Items.Components weldSpritePos.Y = -weldSpritePos.Y; weldedSprite.Draw(spriteBatch, - weldSpritePos, item.SpriteColor * (stuck / 100.0f), scale: item.Scale); + weldSpritePos, Color.White * (stuck / 100.0f), scale: item.Scale); } if (openState == 1.0f) diff --git a/Barotrauma/BarotraumaClient/Source/Items/Components/Turret.cs b/Barotrauma/BarotraumaClient/Source/Items/Components/Turret.cs index 6e42a2949..4ed31820f 100644 --- a/Barotrauma/BarotraumaClient/Source/Items/Components/Turret.cs +++ b/Barotrauma/BarotraumaClient/Source/Items/Components/Turret.cs @@ -237,13 +237,13 @@ namespace Barotrauma.Items.Components railSprite?.Draw(spriteBatch, drawPos, - item.SpriteColor, + Color.White, rotation + MathHelper.PiOver2, item.Scale, SpriteEffects.None, item.SpriteDepth + (railSprite.Depth - item.Sprite.Depth)); barrelSprite?.Draw(spriteBatch, - drawPos - new Vector2((float)Math.Cos(rotation), (float)Math.Sin(rotation)) * recoilOffset * item.Scale, - item.SpriteColor, + drawPos - new Vector2((float)Math.Cos(rotation), (float)Math.Sin(rotation)) * recoilOffset * item.Scale, + Color.White, rotation + MathHelper.PiOver2, item.Scale, SpriteEffects.None, item.SpriteDepth + (barrelSprite.Depth - item.Sprite.Depth)); diff --git a/Barotrauma/BarotraumaClient/Source/Networking/FileTransfer/FileReceiver.cs b/Barotrauma/BarotraumaClient/Source/Networking/FileTransfer/FileReceiver.cs index be2dd8d7b..ad3a3fb8b 100644 --- a/Barotrauma/BarotraumaClient/Source/Networking/FileTransfer/FileReceiver.cs +++ b/Barotrauma/BarotraumaClient/Source/Networking/FileTransfer/FileReceiver.cs @@ -241,30 +241,20 @@ namespace Barotrauma.Networking FileSize = fileSize }; - int maxRetries = 4; - for (int i = 0; i <= maxRetries; i++) + try { - try - { - newTransfer.OpenStream(); - } - catch (IOException e) - { - if (i < maxRetries) - { - DebugConsole.NewMessage("Failed to initiate a file transfer {" + e.Message + "}, retrying in 250 ms...", Color.Red); - Thread.Sleep(250); - } - else - { - DebugConsole.NewMessage("Failed to initiate a file transfer {" + e.Message + "}", Color.Red); - GameMain.Client.CancelFileTransfer(inc.SequenceChannel); - newTransfer.Status = FileTransferStatus.Error; - OnTransferFailed(newTransfer); - return; - } - } + newTransfer.OpenStream(); } + catch (IOException e) + { + GameMain.Client.CancelFileTransfer(inc.SequenceChannel); + DebugConsole.NewMessage("Failed to initiate a file transfer {" + e.Message + "}", Color.Red); + + newTransfer.Status = FileTransferStatus.Error; + OnTransferFailed(newTransfer); + return; + } + activeTransfers.Add(newTransfer); } break; diff --git a/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs b/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs index fb9abb67a..dd064d8fe 100644 --- a/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs +++ b/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs @@ -141,23 +141,8 @@ namespace Barotrauma.Networking { OnClicked = (btn, userdata) => { - if (!permissions.HasFlag(ClientPermissions.ManageRound)) { return false; } - if (!Submarine.MainSub.AtStartPosition && !Submarine.MainSub.AtEndPosition) - { - var msgBox = new GUIMessageBox("", TextManager.Get("EndRoundSubNotAtLevelEnd"), - new string[] { TextManager.Get("Yes"), TextManager.Get("No") }); - msgBox.Buttons[0].OnClicked = (_, __) => - { - GameMain.Client.RequestRoundEnd(); - return true; - }; - msgBox.Buttons[0].OnClicked += msgBox.Close; - msgBox.Buttons[1].OnClicked += msgBox.Close; - } - else - { - RequestRoundEnd(); - } + if (!permissions.HasFlag(ClientPermissions.ManageRound)) return false; + RequestRoundEnd(); return true; }, Visible = false @@ -1282,75 +1267,6 @@ namespace Barotrauma.Networking } } - private void ReadLobbyUpdate(NetIncomingMessage inc) - { - UInt16 listId = inc.ReadUInt16(); - List tempClients = new List(); - int clientCount = inc.ReadByte(); - for (int i = 0; i < clientCount; i++) - { - byte id = inc.ReadByte(); - string name = inc.ReadString(); - UInt16 characterID = inc.ReadUInt16(); - bool muted = inc.ReadBoolean(); - inc.ReadPadBits(); - - tempClients.Add(new TempClient - { - ID = id, - Name = name, - CharacterID = characterID, - Muted = muted - }); - } - - if (NetIdUtils.IdMoreRecent(listId, LastClientListUpdateID)) - { - bool updateClientListId = true; - List currentClients = new List(); - foreach (TempClient tc in tempClients) - { - //see if the client already exists - var existingClient = ConnectedClients.Find(c => c.ID == tc.ID && c.Name == tc.Name); - if (existingClient == null) //if not, create it - { - existingClient = new Client(tc.Name, tc.ID) - { - Muted = tc.Muted - }; - ConnectedClients.Add(existingClient); - GameMain.NetLobbyScreen.AddPlayer(existingClient); - } - existingClient.Character = null; - existingClient.Muted = tc.Muted; - if (tc.CharacterID > 0) - { - existingClient.Character = Entity.FindEntityByID(tc.CharacterID) as Character; - if (existingClient.Character == null) - { - updateClientListId = false; - } - } - if (existingClient.ID == myID) - { - existingClient.SetPermissions(permissions, permittedConsoleCommands); - } - currentClients.Add(existingClient); - } - //remove clients that aren't present anymore - for (int i = ConnectedClients.Count - 1; i >= 0; i--) - { - if (!currentClients.Contains(ConnectedClients[i])) - { - GameMain.NetLobbyScreen.RemovePlayer(ConnectedClients[i]); - ConnectedClients[i].Dispose(); - ConnectedClients.RemoveAt(i); - } - } - if (updateClientListId) LastClientListUpdateID = listId; - } - } - private void ReadLobbyUpdate(NetIncomingMessage inc) { ServerNetObject objHeader; @@ -1513,11 +1429,7 @@ namespace Barotrauma.Networking break; case ServerNetObject.ENTITY_EVENT: case ServerNetObject.ENTITY_EVENT_INITIAL: - if (!entityEventManager.Read(objHeader, inc, sendingTime, entities)) - { - eventReadFailed = true; - break; - } + if (!entityEventManager.Read(objHeader, inc, sendingTime, entities)) { break; } break; case ServerNetObject.CHAT_MESSAGE: ChatMessage.ClientRead(inc); diff --git a/Barotrauma/BarotraumaClient/Source/Screens/CampaignUI.cs b/Barotrauma/BarotraumaClient/Source/Screens/CampaignUI.cs index 3c322d12d..827b8af57 100644 --- a/Barotrauma/BarotraumaClient/Source/Screens/CampaignUI.cs +++ b/Barotrauma/BarotraumaClient/Source/Screens/CampaignUI.cs @@ -457,14 +457,11 @@ namespace Barotrauma { IgnoreLayoutGroups = true, OnClicked = (GUIButton btn, object obj) => { StartRound?.Invoke(); return true; }, - Enabled = true + Enabled = true, + Visible = GameMain.Client == null || + GameMain.Client.HasPermission(Networking.ClientPermissions.ManageRound) || + GameMain.Client.HasPermission(Networking.ClientPermissions.ManageCampaign) }; - if (GameMain.Client != null) - { - startButton.Visible = !GameMain.Client.GameStarted && - (GameMain.Client.HasPermission(Networking.ClientPermissions.ManageRound) || - GameMain.Client.HasPermission(Networking.ClientPermissions.ManageCampaign)); - } } OnLocationSelected?.Invoke(location, connection); diff --git a/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs b/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs index 02f6ba21c..e249c088f 100644 --- a/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs +++ b/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs @@ -726,12 +726,6 @@ namespace Barotrauma spectateButton.Visible = GameMain.Client.GameStarted; ReadyToStartBox.Visible = !GameMain.Client.GameStarted; ReadyToStartBox.Selected = false; - if (campaignUI?.StartButton != null) - { - campaignUI.StartButton.Visible = !GameMain.Client.GameStarted && - (GameMain.Client.HasPermission(ClientPermissions.ManageRound) || - GameMain.Client.HasPermission(ClientPermissions.ManageCampaign)); - } GameMain.Client.SetReadyToStart(ReadyToStartBox); } else @@ -853,9 +847,9 @@ namespace Barotrauma if (campaignUI?.StartButton != null) { - campaignUI.StartButton.Visible = !GameMain.Client.GameStarted && - (GameMain.Client.HasPermission(ClientPermissions.ManageRound) || - GameMain.Client.HasPermission(ClientPermissions.ManageCampaign)); + campaignUI.StartButton.Visible = + GameMain.Client.HasPermission(ClientPermissions.ManageRound) || + GameMain.Client.HasPermission(ClientPermissions.ManageCampaign); } } diff --git a/Barotrauma/BarotraumaServer/Source/Networking/GameServer.cs b/Barotrauma/BarotraumaServer/Source/Networking/GameServer.cs index 202c87097..dd514f544 100644 --- a/Barotrauma/BarotraumaServer/Source/Networking/GameServer.cs +++ b/Barotrauma/BarotraumaServer/Source/Networking/GameServer.cs @@ -813,16 +813,7 @@ namespace Barotrauma.Networking Log(c.Name + " has reported an error: " + errorStr, ServerLog.MessageType.Error); GameAnalyticsManager.AddErrorEventOnce("GameServer.HandleClientError:LevelsDontMatch" + error, GameAnalyticsSDK.Net.EGAErrorSeverity.Error, errorStr); - - if (c.Connection == OwnerConnection) - { - SendDirectChatMessage(errorStr, c, ChatMessageType.MessageBox); - EndGame(); - } - else - { - KickClient(c, errorStr); - } + KickClient(c, errorStr); } public override void CreateEntityEvent(INetSerializable entity, object[] extraData = null) @@ -1039,7 +1030,7 @@ namespace Barotrauma.Networking if (command == ClientPermissions.ManageRound && inc.PeekBoolean() && GameMain.GameSession?.GameMode is MultiPlayerCampaign mpCampaign) { - if (!mpCampaign.AllowedToEndRound(sender.Character) && !sender.HasPermission(command)) + if (!mpCampaign.AllowedToEndRound(sender.Character)) { return; } diff --git a/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs b/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs index 2bdd86696..be6ca7fcb 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs @@ -288,7 +288,7 @@ namespace Barotrauma } else { - var targetingPriority = UpdateTargets(Character); + UpdateTargets(Character, out TargetingPriority targetingPriority); updateTargetsTimer = UpdateTargetsInterval; if (SelectedAiTarget == null) @@ -299,7 +299,7 @@ namespace Barotrauma { State = AIState.Escape; } - else + else if (targetingPriority != null) { State = targetingPriority.State; } @@ -472,7 +472,10 @@ namespace Barotrauma } else { - UpdateWallTarget(); + if (!IsProperlyLatched) + { + UpdateWallTarget(); + } raycastTimer = RaycastInterval; } @@ -496,6 +499,10 @@ namespace Barotrauma if (wallTarget != null) { attackWorldPos = wallTarget.Position; + if (wallTarget.Structure.Submarine != null) + { + attackWorldPos += wallTarget.Structure.Submarine.Position; + } attackSimPos = ConvertUnits.ToSimUnits(attackWorldPos); } else @@ -839,12 +846,7 @@ namespace Barotrauma attachTargetNormal = new Vector2(Math.Sign(WorldPosition.X - wall.WorldPosition.X), 0.0f); sectionPos.X += (wall.BodyWidth <= 0.0f ? wall.Rect.Width : wall.BodyWidth) / 2 * attachTargetNormal.X; } - - latchOntoAI?.SetAttachTarget(wall.Submarine.PhysicsBody.FarseerBody, wall.Submarine, sectionPos, attachTargetNormal); - if (wall.Submarine != null) - { - sectionPos += wall.Submarine.Position; - } + latchOntoAI?.SetAttachTarget(wall.Submarine.PhysicsBody.FarseerBody, wall.Submarine, ConvertUnits.ToSimUnits(sectionPos), attachTargetNormal); wallTarget = new WallTarget(sectionPos, wall, sectionIndex); } } @@ -967,18 +969,27 @@ namespace Barotrauma steeringManager.SteeringSeek(attackSimPosition - (mouthPos - SimPosition)); } } - + #endregion #region Targeting + private bool IsProperlyLatched => latchOntoAI != null && latchOntoAI.IsAttached && SelectedAiTarget?.Entity == wallTarget?.Structure; + //goes through all the AItargets, evaluates how preferable it is to attack the target, //whether the Character can see/hear the target and chooses the most preferable target within //sight/hearing range - public TargetingPriority UpdateTargets(Character character) + public AITarget UpdateTargets(Character character, out TargetingPriority priority) { + if (IsProperlyLatched) + { + // If attached to a valid target, just keep the target. + // Priority not used in this case. + priority = null; + return SelectedAiTarget; + } AITarget newTarget = null; - TargetingPriority targetingPriority = null; + priority = null; selectedTargetMemory = null; targetValue = 0.0f; @@ -1177,7 +1188,7 @@ namespace Barotrauma { newTarget = target; selectedTargetMemory = targetMemory; - targetingPriority = targetingPriorities[targetingTag]; + priority = targetingPriorities[targetingTag]; targetValue = valueModifier; } } @@ -1187,7 +1198,7 @@ namespace Barotrauma { wallTarget = null; } - return targetingPriority; + return SelectedAiTarget; } private AITargetMemory GetTargetMemory(AITarget target) diff --git a/Barotrauma/BarotraumaShared/Source/Characters/AI/LatchOntoAI.cs b/Barotrauma/BarotraumaShared/Source/Characters/AI/LatchOntoAI.cs index 200e20a5a..fe5304a4c 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/AI/LatchOntoAI.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/AI/LatchOntoAI.cs @@ -193,7 +193,7 @@ namespace Barotrauma // is not attached or is attached to something else if (!IsAttached || IsAttached && attachJoints[0].BodyB == attachTargetBody) { - if (Vector2.DistanceSquared(ConvertUnits.ToDisplayUnits(transformedAttachPos), enemyAI.AttackingLimb.WorldPosition) < enemyAI.AttackingLimb.attack.Range * enemyAI.AttackingLimb.attack.Range) + if (Vector2.DistanceSquared(ConvertUnits.ToDisplayUnits(transformedAttachPos), enemyAI.AttackingLimb.WorldPosition) < enemyAI.AttackingLimb.attack.DamageRange * enemyAI.AttackingLimb.attack.DamageRange) { AttachToBody(character.AnimController.Collider, attachLimb, attachTargetBody, transformedAttachPos); } diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Limb.cs b/Barotrauma/BarotraumaShared/Source/Characters/Limb.cs index 2d07409d1..b19684c74 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Limb.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Limb.cs @@ -528,7 +528,7 @@ namespace Barotrauma } else { - // If the attack is aimed to a character but hits a structure, the hit is blocked. + // If there is nothing between, the hit is successful wasHit = structureBody == null; } } diff --git a/Barotrauma/BarotraumaShared/Source/Events/Missions/Mission.cs b/Barotrauma/BarotraumaShared/Source/Events/Missions/Mission.cs index d82b66631..1aa0e23cf 100644 --- a/Barotrauma/BarotraumaShared/Source/Events/Missions/Mission.cs +++ b/Barotrauma/BarotraumaShared/Source/Events/Missions/Mission.cs @@ -103,6 +103,12 @@ namespace Barotrauma if (missionType == MissionType.Random) { allowedMissions.AddRange(MissionPrefab.List); +#if SERVER + if (GameMain.Server != null) + { + allowedMissions.RemoveAll(mission => !GameMain.Server.ServerSettings.AllowedRandomMissionTypes.Contains(mission.type)); + } +#endif } else if (missionType == MissionType.None) { diff --git a/Barotrauma/BarotraumaShared/Source/Items/Item.cs b/Barotrauma/BarotraumaShared/Source/Items/Item.cs index 11c413b9b..32cb6f3be 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Item.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Item.cs @@ -211,14 +211,14 @@ namespace Barotrauma set { spriteColor = value; } } - [Serialize("1.0,1.0,1.0,1.0", true), Editable] + [Serialize("1.0,1.0,1.0,1.0", false), Editable] public Color InventoryIconColor { get; protected set; } - [Serialize("1.0,1.0,1.0,1.0", true), Editable(ToolTip = "Changes the color of the item this item is contained inside. Only has an effect if either of the UseContainedSpriteColor or UseContainedInventoryIconColor property of the container is set to true.")] + [Serialize("1.0,1.0,1.0,1.0", false), Editable(ToolTip = "Changes the color of the item this item is contained inside. Only has an effect if either of the UseContainedSpriteColor or UseContainedInventoryIconColor property of the container is set to true.")] public Color ContainerColor { get; diff --git a/Barotrauma/BarotraumaShared/Source/Map/Map/Location.cs b/Barotrauma/BarotraumaShared/Source/Map/Map/Location.cs index e397d485f..f507b0796 100644 --- a/Barotrauma/BarotraumaShared/Source/Map/Map/Location.cs +++ b/Barotrauma/BarotraumaShared/Source/Map/Map/Location.cs @@ -33,7 +33,7 @@ namespace Barotrauma get { CheckMissionCompleted(); - + for (int i = availableMissions.Count; i < Connections.Count * 2; i++) { int seed = (ToolBox.StringToInt(BaseName) + MissionsCompleted * 10 + i) % int.MaxValue; @@ -47,7 +47,7 @@ namespace Barotrauma if (availableMissions.Any(m => m.Prefab == mission.Prefab)) { continue; } if (GameSettings.VerboseLogging && mission != null) { - DebugConsole.NewMessage("Generated a new mission for a location (location: " + Name + ", seed: " + seed.ToString("X") + ", missions completed: " + MissionsCompleted + ", type: " + mission.Name + ")", Color.White); + DebugConsole.NewMessage("Generated a new mission for a location connection (seed: " + seed.ToString("X") + ", type: " + mission.Name + ")", Color.White); } availableMissions.Add(mission); } @@ -100,16 +100,7 @@ namespace Barotrauma public void ChangeType(LocationType newType) { - if (newType == Type) { return; } - - //clear missions from this and adjacent locations (they may be invalid now) - availableMissions.Clear(); - foreach (LocationConnection connection in Connections) - { - connection.OtherLocation(this)?.availableMissions.Clear(); - } - - DebugConsole.Log("Location " + baseName + " changed it's type from " + Type + " to " + newType); + if (newType == Type) return; Type = newType; Name = Type.NameFormats[nameFormatIndex % Type.NameFormats.Count].Replace("[name]", baseName); @@ -121,7 +112,6 @@ namespace Barotrauma { if (mission.Completed) { - DebugConsole.Log("Mission \"" + mission.Name + "\" completed in \"" + Name + "\"."); MissionsCompleted++; } } diff --git a/Barotrauma/BarotraumaShared/Source/Utils/SaveUtil.cs b/Barotrauma/BarotraumaShared/Source/Utils/SaveUtil.cs index 601318392..822be89c9 100644 --- a/Barotrauma/BarotraumaShared/Source/Utils/SaveUtil.cs +++ b/Barotrauma/BarotraumaShared/Source/Utils/SaveUtil.cs @@ -32,7 +32,6 @@ namespace Barotrauma public static void SaveGame(string filePath) { - DebugConsole.Log("Saving the game to: " + filePath); Directory.CreateDirectory(TempPath); try { @@ -112,7 +111,6 @@ namespace Barotrauma public static XDocument LoadGameSessionDoc(string filePath) { - DebugConsole.Log("Loading game session doc: " + filePath); try { DecompressToDirectory(filePath, TempPath, null); @@ -403,18 +401,18 @@ namespace Barotrauma } } - public static void ClearFolder(string FolderName, string[] ignoredFileNames = null) + public static void ClearFolder(string FolderName, string[] ignoredFiles = null) { DirectoryInfo dir = new DirectoryInfo(FolderName); foreach (FileInfo fi in dir.GetFiles()) { - if (ignoredFileNames != null) + if (ignoredFiles != null) { bool ignore = false; - foreach (string ignoredFile in ignoredFileNames) + foreach (string ignoredFile in ignoredFiles) { - if (Path.GetFileName(fi.FullName).Equals(Path.GetFileName(ignoredFile))) + if (Path.GetFullPath(fi.FullName).Equals(Path.GetFullPath(ignoredFile))) { ignore = true; break;