The content package a submarine was saved with is included in the submarine preview, added a warning when attempting to start a campaign using a sub with a mismatching content package
This commit is contained in:
@@ -123,7 +123,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
if (PreviewImage == null)
|
if (PreviewImage == null)
|
||||||
{
|
{
|
||||||
var txtBlock = new GUITextBlock(new Rectangle(-10, 60, 256, 128), TextManager.Get("SubPreviewImageNotFound"), Color.Black * 0.5f, null, Alignment.Center, "", frame, true);
|
var txtBlock = new GUITextBlock(new Rectangle(-20, 60, 256, 128), TextManager.Get("SubPreviewImageNotFound"), Color.Black * 0.5f, null, Alignment.Center, "", frame, true);
|
||||||
txtBlock.OutlineColor = txtBlock.TextColor;
|
txtBlock.OutlineColor = txtBlock.TextColor;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -136,15 +136,19 @@ namespace Barotrauma
|
|||||||
TextManager.Get("Unknown") :
|
TextManager.Get("Unknown") :
|
||||||
TextManager.Get("DimensionsFormat").Replace("[width]", ((int)(realWorldDimensions.X)).ToString()).Replace("[height]", ((int)(realWorldDimensions.Y)).ToString());
|
TextManager.Get("DimensionsFormat").Replace("[width]", ((int)(realWorldDimensions.X)).ToString()).Replace("[height]", ((int)(realWorldDimensions.Y)).ToString());
|
||||||
|
|
||||||
new GUITextBlock(new Rectangle(256, 60, 100, 20),
|
new GUITextBlock(new Rectangle(246, 60, 100, 20),
|
||||||
|
TextManager.Get("ContentPackage") + ": " + (ContentPackage ?? "Unknown"),
|
||||||
|
"", frame, GUI.SmallFont);
|
||||||
|
|
||||||
|
new GUITextBlock(new Rectangle(246, 80, 100, 20),
|
||||||
TextManager.Get("Dimensions") + ": " + dimensionsStr,
|
TextManager.Get("Dimensions") + ": " + dimensionsStr,
|
||||||
"", frame, GUI.SmallFont);
|
"", frame, GUI.SmallFont);
|
||||||
|
|
||||||
new GUITextBlock(new Rectangle(256, 80, 100, 20),
|
new GUITextBlock(new Rectangle(246, 100, 100, 20),
|
||||||
TextManager.Get("RecommendedCrewSize") + ": " + (RecommendedCrewSizeMax == 0 ? TextManager.Get("Unknown") : RecommendedCrewSizeMin + " - " + RecommendedCrewSizeMax),
|
TextManager.Get("RecommendedCrewSize") + ": " + (RecommendedCrewSizeMax == 0 ? TextManager.Get("Unknown") : RecommendedCrewSizeMin + " - " + RecommendedCrewSizeMax),
|
||||||
"", frame, GUI.SmallFont);
|
"", frame, GUI.SmallFont);
|
||||||
|
|
||||||
new GUITextBlock(new Rectangle(256, 100, 100, 20),
|
new GUITextBlock(new Rectangle(246, 120, 100, 20),
|
||||||
TextManager.Get("RecommendedCrewExperience") + ": " + (string.IsNullOrEmpty(RecommendedCrewExperience) ? TextManager.Get("unknown") : RecommendedCrewExperience),
|
TextManager.Get("RecommendedCrewExperience") + ": " + (string.IsNullOrEmpty(RecommendedCrewExperience) ? TextManager.Get("unknown") : RecommendedCrewExperience),
|
||||||
"", frame, GUI.SmallFont);
|
"", frame, GUI.SmallFont);
|
||||||
|
|
||||||
|
|||||||
@@ -56,22 +56,44 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
|
|
||||||
Submarine selectedSub = subList.SelectedData as Submarine;
|
Submarine selectedSub = subList.SelectedData as Submarine;
|
||||||
if (selectedSub != null && selectedSub.HasTag(SubmarineTag.Shuttle))
|
if (selectedSub == null) return false;
|
||||||
|
|
||||||
|
string savePath = SaveUtil.CreateSavePath(isMultiplayer ? SaveUtil.SaveType.Multiplayer : SaveUtil.SaveType.Singleplayer, saveNameBox.Text);
|
||||||
|
if (selectedSub.HasTag(SubmarineTag.Shuttle) || GameMain.SelectedPackage.Name != selectedSub.ContentPackage)
|
||||||
{
|
{
|
||||||
var msgBox = new GUIMessageBox(TextManager.Get("ShuttleSelected"),
|
if (GameMain.SelectedPackage.Name != selectedSub.ContentPackage)
|
||||||
TextManager.Get("ShuttleWarning"),
|
{
|
||||||
new string[] { TextManager.Get("Yes"), TextManager.Get("No") });
|
var msgBox = new GUIMessageBox(TextManager.Get("ContentPackageMismatch"),
|
||||||
|
TextManager.Get("ContentPackageMismatchWarning")
|
||||||
|
.Replace("[subcontentpackage]", selectedSub.ContentPackage)
|
||||||
|
.Replace("[selectedcontentpackage]", GameMain.SelectedPackage.Name),
|
||||||
|
new string[] { TextManager.Get("Yes"), TextManager.Get("No") });
|
||||||
|
|
||||||
string savePath = SaveUtil.CreateSavePath(isMultiplayer ? SaveUtil.SaveType.Multiplayer : SaveUtil.SaveType.Singleplayer, saveNameBox.Text);
|
msgBox.Buttons[0].OnClicked = msgBox.Close;
|
||||||
msgBox.Buttons[0].OnClicked = (button, obj) => { StartNewGame?.Invoke(selectedSub, savePath, seedBox.Text); return true; };
|
msgBox.Buttons[0].OnClicked += (button, obj) =>
|
||||||
msgBox.Buttons[0].OnClicked += msgBox.Close;
|
{
|
||||||
|
if (GUIMessageBox.MessageBoxes.Count == 0) StartNewGame?.Invoke(selectedSub, savePath, seedBox.Text);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
msgBox.Buttons[1].OnClicked = msgBox.Close;
|
msgBox.Buttons[1].OnClicked = msgBox.Close;
|
||||||
return false;
|
}
|
||||||
|
|
||||||
|
if (selectedSub.HasTag(SubmarineTag.Shuttle))
|
||||||
|
{
|
||||||
|
var msgBox = new GUIMessageBox(TextManager.Get("ShuttleSelected"),
|
||||||
|
TextManager.Get("ShuttleWarning"),
|
||||||
|
new string[] { TextManager.Get("Yes"), TextManager.Get("No") });
|
||||||
|
|
||||||
|
msgBox.Buttons[0].OnClicked = (button, obj) => { StartNewGame?.Invoke(selectedSub, savePath, seedBox.Text); return true; };
|
||||||
|
msgBox.Buttons[0].OnClicked += msgBox.Close;
|
||||||
|
|
||||||
|
msgBox.Buttons[1].OnClicked = msgBox.Close;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string savePath = SaveUtil.CreateSavePath(isMultiplayer ? SaveUtil.SaveType.Multiplayer : SaveUtil.SaveType.Singleplayer, saveNameBox.Text);
|
|
||||||
StartNewGame?.Invoke(selectedSub, savePath, seedBox.Text);
|
StartNewGame?.Invoke(selectedSub, savePath, seedBox.Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -422,6 +422,8 @@ namespace Barotrauma
|
|||||||
savePath = Path.Combine(Submarine.SavePath, savePath);
|
savePath = Path.Combine(Submarine.SavePath, savePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Submarine.MainSub.ContentPackage = GameMain.Config.SelectedContentPackage.Name;
|
||||||
|
|
||||||
MemoryStream imgStream = new MemoryStream();
|
MemoryStream imgStream = new MemoryStream();
|
||||||
CreateImage(256, 128, imgStream);
|
CreateImage(256, 128, imgStream);
|
||||||
|
|
||||||
@@ -525,7 +527,6 @@ namespace Barotrauma
|
|||||||
crewSizeMin.MinValueInt = 1;
|
crewSizeMin.MinValueInt = 1;
|
||||||
crewSizeMin.MaxValueInt = 128;
|
crewSizeMin.MaxValueInt = 128;
|
||||||
|
|
||||||
|
|
||||||
new GUITextBlock(new Rectangle(285, y, 10, 20), "-", "", Alignment.TopLeft, Alignment.Center, saveFrame);
|
new GUITextBlock(new Rectangle(285, y, 10, 20), "-", "", Alignment.TopLeft, Alignment.Center, saveFrame);
|
||||||
|
|
||||||
var crewSizeMax = new GUINumberInput(new Rectangle(300, y, 50, 20), "", GUINumberInput.NumberType.Int, saveFrame);
|
var crewSizeMax = new GUINumberInput(new Rectangle(300, y, 50, 20), "", GUINumberInput.NumberType.Int, saveFrame);
|
||||||
|
|||||||
@@ -130,6 +130,9 @@
|
|||||||
<ShuttleSelected>Shuttle selected</ShuttleSelected>
|
<ShuttleSelected>Shuttle selected</ShuttleSelected>
|
||||||
<ShuttleWarning>Most shuttles are not adequately equipped to deal with the dangers of the Europan depths. Are you sure you want to choose a shuttle as your vessel?</ShuttleWarning>
|
<ShuttleWarning>Most shuttles are not adequately equipped to deal with the dangers of the Europan depths. Are you sure you want to choose a shuttle as your vessel?</ShuttleWarning>
|
||||||
|
|
||||||
|
<ContentPackageMismatch>Mismatching content package</ContentPackageMismatch>
|
||||||
|
<ContentPackageMismatchWarning>The selected submarine has been saved using the content package "[subcontentpackage]". The submarine may not be compatible with the currently selected content package "[selectedcontentpackage]". Are you sure you want to choose the submarine?</ContentPackageMismatchWarning>
|
||||||
|
|
||||||
<!-- Campaign menu -->
|
<!-- Campaign menu -->
|
||||||
<Map>Map</Map>
|
<Map>Map</Map>
|
||||||
<Crew>Crew</Crew>
|
<Crew>Crew</Crew>
|
||||||
|
|||||||
@@ -88,6 +88,8 @@ namespace Barotrauma
|
|||||||
public int RecommendedCrewSizeMin = 1, RecommendedCrewSizeMax = 2;
|
public int RecommendedCrewSizeMin = 1, RecommendedCrewSizeMax = 2;
|
||||||
public string RecommendedCrewExperience;
|
public string RecommendedCrewExperience;
|
||||||
|
|
||||||
|
public string ContentPackage;
|
||||||
|
|
||||||
//properties ----------------------------------------------------
|
//properties ----------------------------------------------------
|
||||||
|
|
||||||
public string Name
|
public string Name
|
||||||
@@ -284,6 +286,7 @@ namespace Barotrauma
|
|||||||
RecommendedCrewSizeMin = doc.Root.GetAttributeInt("recommendedcrewsizemin", 0);
|
RecommendedCrewSizeMin = doc.Root.GetAttributeInt("recommendedcrewsizemin", 0);
|
||||||
RecommendedCrewSizeMax = doc.Root.GetAttributeInt("recommendedcrewsizemax", 0);
|
RecommendedCrewSizeMax = doc.Root.GetAttributeInt("recommendedcrewsizemax", 0);
|
||||||
RecommendedCrewExperience = doc.Root.GetAttributeString("recommendedcrewexperience", "Unknown");
|
RecommendedCrewExperience = doc.Root.GetAttributeString("recommendedcrewexperience", "Unknown");
|
||||||
|
ContentPackage = doc.Root.GetAttributeString("contentpackage", "Unknown");
|
||||||
|
|
||||||
#if CLIENT
|
#if CLIENT
|
||||||
string previewImageData = doc.Root.GetAttributeString("previewimage", "");
|
string previewImageData = doc.Root.GetAttributeString("previewimage", "");
|
||||||
@@ -1198,6 +1201,7 @@ namespace Barotrauma
|
|||||||
element.Add(new XAttribute("recommendedcrewsizemin", RecommendedCrewSizeMin));
|
element.Add(new XAttribute("recommendedcrewsizemin", RecommendedCrewSizeMin));
|
||||||
element.Add(new XAttribute("recommendedcrewsizemax", RecommendedCrewSizeMax));
|
element.Add(new XAttribute("recommendedcrewsizemax", RecommendedCrewSizeMax));
|
||||||
element.Add(new XAttribute("recommendedcrewexperience", RecommendedCrewExperience ?? ""));
|
element.Add(new XAttribute("recommendedcrewexperience", RecommendedCrewExperience ?? ""));
|
||||||
|
element.Add(new XAttribute("contentpackage", ContentPackage ?? ""));
|
||||||
|
|
||||||
foreach (MapEntity e in MapEntity.mapEntityList)
|
foreach (MapEntity e in MapEntity.mapEntityList)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user