v1.0.13.1 (first post-1.0 patch)
This commit is contained in:
@@ -1,16 +1,16 @@
|
||||
using Barotrauma.Extensions;
|
||||
using Barotrauma.IO;
|
||||
using Barotrauma.Items.Components;
|
||||
using Barotrauma.Steam;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Xml.Linq;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
using Barotrauma.IO;
|
||||
using Barotrauma.Steam;
|
||||
|
||||
namespace Barotrauma
|
||||
{
|
||||
@@ -3546,10 +3546,45 @@ namespace Barotrauma
|
||||
TextManager.Get("LoadingVanillaSubmarineHeader"),
|
||||
TextManager.Get("LoadingVanillaSubmarineDesc"));
|
||||
|
||||
public void LoadSub(SubmarineInfo info)
|
||||
public void LoadSub(SubmarineInfo info, bool checkIdConflicts = true)
|
||||
{
|
||||
Submarine.Unload();
|
||||
Submarine selectedSub = null;
|
||||
|
||||
if (checkIdConflicts)
|
||||
{
|
||||
Dictionary<int, Identifier> entities = new Dictionary<int, Identifier>();
|
||||
foreach (var subElement in info.SubmarineElement.Elements())
|
||||
{
|
||||
int id = subElement.GetAttributeInt("ID", -1);
|
||||
Identifier identifier = subElement.GetAttributeIdentifier("identifier", string.Empty);
|
||||
if (entities.TryGetValue(id, out Identifier duplicateEntity))
|
||||
{
|
||||
var errorMsg = new GUIMessageBox(
|
||||
TextManager.Get("error"),
|
||||
TextManager.GetWithVariables("subeditor.duplicateiderror",
|
||||
("[entity1]", $"{duplicateEntity} ({id})"),
|
||||
("[entity2]", $"{identifier} ({id})")),
|
||||
new LocalizedString[] { TextManager.Get("Yes"), TextManager.Get("No") });
|
||||
errorMsg.Buttons[0].OnClicked = (bnt, userdata) =>
|
||||
{
|
||||
subElement.Remove();
|
||||
LoadSub(info, checkIdConflicts: false);
|
||||
errorMsg.Close();
|
||||
return true;
|
||||
};
|
||||
errorMsg.Buttons[1].OnClicked = (bnt, userdata) =>
|
||||
{
|
||||
LoadSub(info, checkIdConflicts: false);
|
||||
errorMsg.Close();
|
||||
return true;
|
||||
};
|
||||
return;
|
||||
}
|
||||
entities.Add(id, identifier);
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
selectedSub = new Submarine(info);
|
||||
@@ -5263,7 +5298,7 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
if (PlayerInput.KeyHit(Keys.E) && mode == Mode.Default)
|
||||
if (PlayerInput.KeyHit(InputType.Use) && mode == Mode.Default)
|
||||
{
|
||||
if (dummyCharacter != null)
|
||||
{
|
||||
@@ -5354,6 +5389,16 @@ namespace Barotrauma
|
||||
else
|
||||
{
|
||||
var selectables = MapEntity.mapEntityList.Where(entity => entity.SelectableInEditor).ToList();
|
||||
foreach (var item in Item.ItemList)
|
||||
{
|
||||
//attached wires are not normally selectable (by clicking),
|
||||
//but let's select them manually when selecting all
|
||||
var wire = item.GetComponent<Wire>();
|
||||
if (wire != null && wire.Connections.None(c => c == null) && !selectables.Contains(item))
|
||||
{
|
||||
selectables.Add(item);
|
||||
}
|
||||
}
|
||||
lock (selectables)
|
||||
{
|
||||
selectables.ForEach(MapEntity.AddSelection);
|
||||
|
||||
Reference in New Issue
Block a user