(bf037f9b0) Don't allow deleting vanilla subs or subs that are a part of some content package

This commit is contained in:
Joonas Rikkonen
2019-04-08 13:36:58 +03:00
parent 1ffe3e4ec0
commit 9594ea67a7
2 changed files with 37 additions and 2 deletions
@@ -416,6 +416,21 @@ namespace Barotrauma
}
}
public bool IsVanillaSubmarine()
{
var vanilla = GameMain.VanillaContent;
if (vanilla != null)
{
var vanillaSubs = vanilla.GetFilesOfType(ContentType.Submarine);
string pathToCompare = filePath.Replace(@"\", @"/").ToLowerInvariant();
if (vanillaSubs.Any(sub => sub.Replace(@"\", @"/").ToLowerInvariant() == pathToCompare))
{
return true;
}
}
return false;
}
public void CheckForErrors()
{
List<string> errorMsgs = new List<string>();
@@ -1278,7 +1278,11 @@ namespace Barotrauma
{
OnSelected = (GUIComponent selected, object userData) =>
{
if (paddedLoadFrame.FindChild("delete") is GUIButton deleteBtn) deleteBtn.Enabled = true;
Submarine sub = userData as Submarine;
if (paddedLoadFrame.FindChild("delete") is GUIButton deleteBtn)
{
deleteBtn.Enabled = !sub.IsVanillaSubmarine();
}
return true;
}
};
@@ -1397,7 +1401,23 @@ namespace Barotrauma
private void TryDeleteSub(Submarine sub)
{
if (sub == null) return;
if (sub == null) { return; }
if (sub.IsVanillaSubmarine())
{
GUI.AddMessage(TextManager.Get("CannotEditVanillaSubs"), Color.Red, font: GUI.LargeFont);
return;
}
string pathToCompare = sub.FilePath.Replace(@"\", @"/").ToLowerInvariant();
foreach (ContentPackage cp in ContentPackage.List)
{
if (cp.Files.Any(f => f.Path.Replace(@"\", @"/").ToLowerInvariant() == pathToCompare))
{
new GUIMessageBox("", TextManager.Get("CannotRemoveContentPackageSub").Replace("[contentpackage]", cp.Name));
return;
}
}
var msgBox = new GUIMessageBox(
TextManager.Get("DeleteDialogLabel"),