(e42047dc1) Tester's build, January 30th 2020
This commit is contained in:
@@ -24,6 +24,12 @@ namespace Barotrauma
|
||||
public Action<Submarine, string, string> StartNewGame;
|
||||
public Action<string> LoadGame;
|
||||
|
||||
public GUIButton StartButton
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
private readonly bool isMultiplayer;
|
||||
|
||||
public CampaignSetupUI(bool isMultiplayer, GUIComponent newGameContainer, GUIComponent loadGameContainer, IEnumerable<Submarine> submarines, IEnumerable<string> saveFiles = null)
|
||||
@@ -35,7 +41,7 @@ namespace Barotrauma
|
||||
var columnContainer = new GUILayoutGroup(new RectTransform(Vector2.One, newGameContainer.RectTransform), isHorizontal: true)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = isMultiplayer ? 0.0f : 0.05f
|
||||
RelativeSpacing = isMultiplayer ? 0.0f : 0.02f
|
||||
};
|
||||
|
||||
var leftColumn = new GUILayoutGroup(new RectTransform(Vector2.One, columnContainer.RectTransform))
|
||||
@@ -53,18 +59,18 @@ namespace Barotrauma
|
||||
columnContainer.Recalculate();
|
||||
|
||||
// New game left side
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.02f), leftColumn.RectTransform) { MinSize = new Point(0, 20) }, TextManager.Get("SaveName"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.02f), leftColumn.RectTransform) { MinSize = new Point(0, 20) }, TextManager.Get("SaveName"), font: GUI.SubHeadingFont);
|
||||
saveNameBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform) { MinSize = new Point(0, 20) }, string.Empty)
|
||||
{
|
||||
textFilterFunction = (string str) => { return ToolBox.RemoveInvalidFileNameChars(str); }
|
||||
};
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.02f), leftColumn.RectTransform) { MinSize = new Point(0, 20) }, TextManager.Get("MapSeed"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.02f), leftColumn.RectTransform) { MinSize = new Point(0, 20) }, TextManager.Get("MapSeed"), font: GUI.SubHeadingFont);
|
||||
seedBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform) { MinSize = new Point(0, 20) }, ToolBox.RandomSeed(8));
|
||||
|
||||
if (!isMultiplayer)
|
||||
{
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.02f), leftColumn.RectTransform) { MinSize = new Point(0, 20) }, TextManager.Get("SelectedSub"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.02f), leftColumn.RectTransform) { MinSize = new Point(0, 20) }, TextManager.Get("SelectedSub"), font: GUI.SubHeadingFont);
|
||||
|
||||
var filterContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform), isHorizontal: true)
|
||||
{
|
||||
@@ -74,15 +80,10 @@ namespace Barotrauma
|
||||
subList = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.65f), leftColumn.RectTransform)) { ScrollBarVisible = true };
|
||||
|
||||
var searchTitle = new GUITextBlock(new RectTransform(new Vector2(0.001f, 1.0f), filterContainer.RectTransform), TextManager.Get("serverlog.filter"), textAlignment: Alignment.CenterLeft, font: GUI.Font);
|
||||
var searchBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 1.0f), filterContainer.RectTransform, Anchor.CenterRight), font: GUI.Font);
|
||||
var searchBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 1.0f), filterContainer.RectTransform, Anchor.CenterRight), font: GUI.Font, createClearButton: true);
|
||||
searchBox.OnSelected += (sender, userdata) => { searchTitle.Visible = false; };
|
||||
searchBox.OnDeselected += (sender, userdata) => { searchTitle.Visible = true; };
|
||||
|
||||
searchBox.OnTextChanged += (textBox, text) => { FilterSubs(subList, text); return true; };
|
||||
var clearButton = new GUIButton(new RectTransform(new Vector2(0.075f, 1.0f), filterContainer.RectTransform), "x")
|
||||
{
|
||||
OnClicked = (btn, userdata) => { searchBox.Text = ""; FilterSubs(subList, ""); searchBox.Flash(Color.White); return true; }
|
||||
};
|
||||
|
||||
subList.OnSelected = OnSubSelected;
|
||||
}
|
||||
@@ -93,15 +94,16 @@ namespace Barotrauma
|
||||
}
|
||||
|
||||
// New game right side
|
||||
subPreviewContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.8f), rightColumn.RectTransform))
|
||||
subPreviewContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), rightColumn.RectTransform))
|
||||
{
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
var buttonContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.13f),
|
||||
(isMultiplayer ? leftColumn : rightColumn).RectTransform) { MaxSize = new Point(int.MaxValue, 60) }, childAnchor: Anchor.TopRight);
|
||||
if (!isMultiplayer) { buttonContainer.IgnoreLayoutGroups = true; }
|
||||
|
||||
var startButton = new GUIButton(new RectTransform(isMultiplayer ? new Vector2(0.5f, 1.0f) : Vector2.One,
|
||||
StartButton = new GUIButton(new RectTransform(isMultiplayer ? new Vector2(0.5f, 1.0f) : Vector2.One,
|
||||
buttonContainer.RectTransform, Anchor.BottomRight) { MaxSize = new Point(350, 60) },
|
||||
TextManager.Get("StartCampaignButton"), style: "GUIButtonLarge")
|
||||
{
|
||||
@@ -109,7 +111,7 @@ namespace Barotrauma
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(saveNameBox.Text))
|
||||
{
|
||||
saveNameBox.Flash(Color.Red);
|
||||
saveNameBox.Flash(GUI.Style.Red);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -207,6 +209,7 @@ namespace Barotrauma
|
||||
disclaimerBtn.RectTransform.MaxSize = new Point((int)(30 * GUI.Scale));
|
||||
}
|
||||
|
||||
columnContainer.Recalculate();
|
||||
leftColumn.Recalculate();
|
||||
rightColumn.Recalculate();
|
||||
|
||||
@@ -232,7 +235,7 @@ namespace Barotrauma
|
||||
private bool OnSubSelected(GUIComponent component, object obj)
|
||||
{
|
||||
if (subPreviewContainer == null) { return false; }
|
||||
|
||||
(subPreviewContainer.Parent as GUILayoutGroup)?.Recalculate();
|
||||
subPreviewContainer.ClearChildren();
|
||||
|
||||
Submarine sub = obj as Submarine;
|
||||
@@ -389,10 +392,16 @@ namespace Barotrauma
|
||||
{
|
||||
nameText.Text = Path.GetFileNameWithoutExtension(saveFile);
|
||||
XDocument doc = SaveUtil.LoadGameSessionDoc(saveFile);
|
||||
if (doc.Root.GetChildElement("multiplayercampaign") != null)
|
||||
{
|
||||
//multiplayer campaign save in the wrong folder -> don't show the save
|
||||
saveList.Content.RemoveChild(saveFrame);
|
||||
continue;
|
||||
}
|
||||
if (doc?.Root == null)
|
||||
{
|
||||
DebugConsole.ThrowError("Error loading save file \"" + saveFile + "\". The file may be corrupted.");
|
||||
nameText.TextColor = Color.Red;
|
||||
nameText.TextColor = GUI.Style.Red;
|
||||
continue;
|
||||
}
|
||||
subName = doc.Root.GetAttributeString("submarine", "");
|
||||
@@ -421,7 +430,7 @@ namespace Barotrauma
|
||||
List<string> contentPackagePaths = contentPackageStr.Split('|').ToList();
|
||||
if (!GameSession.IsCompatibleWithSelectedContentPackages(contentPackagePaths, out string errorMsg))
|
||||
{
|
||||
nameText.TextColor = Color.Red;
|
||||
nameText.TextColor = GUI.Style.Red;
|
||||
saveFrame.ToolTip = string.Join("\n", errorMsg, TextManager.Get("campaignmode.contentpackagemismatchwarning"));
|
||||
}
|
||||
}
|
||||
@@ -466,7 +475,7 @@ namespace Barotrauma
|
||||
return file2WriteTime.CompareTo(file1WriteTime);
|
||||
});
|
||||
|
||||
loadGameButton = new GUIButton(new RectTransform(new Vector2(0.45f, 0.12f), loadGameContainer.RectTransform, Anchor.BottomRight), TextManager.Get("LoadButton"), style: "GUIButtonLarge")
|
||||
loadGameButton = new GUIButton(new RectTransform(new Vector2(0.45f, 0.12f), loadGameContainer.RectTransform, Anchor.BottomRight), TextManager.Get("LoadButton"))
|
||||
{
|
||||
OnClicked = (btn, obj) =>
|
||||
{
|
||||
@@ -480,7 +489,8 @@ namespace Barotrauma
|
||||
},
|
||||
Enabled = false
|
||||
};
|
||||
deleteMpSaveButton = new GUIButton(new RectTransform(new Vector2(0.45f, 0.12f), loadGameContainer.RectTransform, Anchor.BottomLeft), TextManager.Get("Delete"), style: "GUIButtonLarge")
|
||||
deleteMpSaveButton = new GUIButton(new RectTransform(new Vector2(0.45f, 0.12f), loadGameContainer.RectTransform, Anchor.BottomLeft),
|
||||
TextManager.Get("Delete"), style: "GUIButtonSmall")
|
||||
{
|
||||
OnClicked = DeleteSave,
|
||||
Visible = false
|
||||
@@ -550,7 +560,7 @@ namespace Barotrauma
|
||||
new GUIButton(new RectTransform(new Vector2(0.4f, 0.15f), saveFileFrame.RectTransform, Anchor.BottomCenter)
|
||||
{
|
||||
RelativeOffset = new Vector2(0, 0.1f)
|
||||
}, TextManager.Get("Delete"))
|
||||
}, TextManager.Get("Delete"), style: "GUIButtonSmall")
|
||||
{
|
||||
UserData = fileName,
|
||||
OnClicked = DeleteSave
|
||||
|
||||
@@ -207,16 +207,10 @@ namespace Barotrauma
|
||||
Stretch = true
|
||||
};
|
||||
var searchTitle = new GUITextBlock(new RectTransform(new Vector2(0.001f, 1.0f), filterContainer.RectTransform), TextManager.Get("serverlog.filter"), textAlignment: Alignment.CenterLeft, font: GUI.Font);
|
||||
searchBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 1.0f), filterContainer.RectTransform), font: GUI.Font);
|
||||
searchBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 1.0f), filterContainer.RectTransform), createClearButton: true);
|
||||
searchBox.OnSelected += (sender, userdata) => { searchTitle.Visible = false; };
|
||||
searchBox.OnDeselected += (sender, userdata) => { searchTitle.Visible = true; };
|
||||
|
||||
searchBox.OnTextChanged += (textBox, text) => { FilterStoreItems(null, text); return true; };
|
||||
var clearButton = new GUIButton(new RectTransform(new Vector2(0.1f, 1.0f), filterContainer.RectTransform), "x")
|
||||
{
|
||||
OnClicked = (btn, userdata) => { searchBox.Text = ""; FilterStoreItems(selectedItemCategory, ""); searchBox.Flash(Color.White); return true; }
|
||||
};
|
||||
|
||||
var storeItemLists = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.8f), storeContent.RectTransform), isHorizontal: true)
|
||||
{
|
||||
RelativeSpacing = 0.03f,
|
||||
@@ -307,12 +301,12 @@ namespace Barotrauma
|
||||
IgnoreLayoutGroups = true,
|
||||
CanBeFocused = false
|
||||
};
|
||||
var repairHullsLabel = new GUITextBlock(new RectTransform(new Vector2(0.7f, 0.3f), repairHullsHolder.RectTransform), TextManager.Get("RepairAllWalls"), textAlignment: Alignment.Right, font: GUI.LargeFont)
|
||||
var repairHullsLabel = new GUITextBlock(new RectTransform(new Vector2(0.7f, 0.3f), repairHullsHolder.RectTransform), TextManager.Get("RepairAllWalls"), textAlignment: Alignment.Right, font: GUI.SubHeadingFont)
|
||||
{
|
||||
ForceUpperCase = true
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), repairHullsHolder.RectTransform), CampaignMode.HullRepairCost.ToString(), textAlignment: Alignment.Right, font: GUI.LargeFont);
|
||||
repairHullsButton = new GUIButton(new RectTransform(new Vector2(0.4f, 0.3f), repairHullsHolder.RectTransform), TextManager.Get("Repair"), style: "GUIButtonLarge")
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), repairHullsHolder.RectTransform), CampaignMode.HullRepairCost.ToString(), textAlignment: Alignment.Right, font: GUI.SubHeadingFont);
|
||||
repairHullsButton = new GUIButton(new RectTransform(new Vector2(0.4f, 0.3f), repairHullsHolder.RectTransform), TextManager.Get("Repair"))
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
@@ -352,12 +346,12 @@ namespace Barotrauma
|
||||
IgnoreLayoutGroups = true,
|
||||
CanBeFocused = false
|
||||
};
|
||||
var repairItemsLabel = new GUITextBlock(new RectTransform(new Vector2(0.7f, 0.3f), repairItemsHolder.RectTransform), TextManager.Get("RepairAllItems"), textAlignment: Alignment.Right, font: GUI.LargeFont)
|
||||
var repairItemsLabel = new GUITextBlock(new RectTransform(new Vector2(0.7f, 0.3f), repairItemsHolder.RectTransform), TextManager.Get("RepairAllItems"), textAlignment: Alignment.Right, font: GUI.SubHeadingFont)
|
||||
{
|
||||
ForceUpperCase = true
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), repairItemsHolder.RectTransform), CampaignMode.ItemRepairCost.ToString(), textAlignment: Alignment.Right, font: GUI.LargeFont);
|
||||
repairItemsButton = new GUIButton(new RectTransform(new Vector2(0.4f, 0.3f), repairItemsHolder.RectTransform), TextManager.Get("Repair"), style: "GUIButtonLarge")
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), repairItemsHolder.RectTransform), CampaignMode.ItemRepairCost.ToString(), textAlignment: Alignment.Right, font: GUI.SubHeadingFont);
|
||||
repairItemsButton = new GUIButton(new RectTransform(new Vector2(0.4f, 0.3f), repairItemsHolder.RectTransform), TextManager.Get("Repair"))
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
@@ -401,8 +395,8 @@ namespace Barotrauma
|
||||
{
|
||||
ForceUpperCase = true
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), replaceShuttlesHolder.RectTransform), CampaignMode.ShuttleReplaceCost.ToString(), textAlignment: Alignment.Right, font: GUI.LargeFont);
|
||||
replaceShuttlesButton = new GUIButton(new RectTransform(new Vector2(0.4f, 0.3f), replaceShuttlesHolder.RectTransform), TextManager.Get("ReplaceShuttles"), style: "GUIButtonLarge")
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), replaceShuttlesHolder.RectTransform), CampaignMode.ShuttleReplaceCost.ToString(), textAlignment: Alignment.Right, font: GUI.SubHeadingFont);
|
||||
replaceShuttlesButton = new GUIButton(new RectTransform(new Vector2(0.4f, 0.3f), replaceShuttlesHolder.RectTransform), TextManager.Get("ReplaceShuttles"))
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
@@ -462,7 +456,7 @@ namespace Barotrauma
|
||||
UserData = "missionlabel",
|
||||
AutoScale = true
|
||||
};
|
||||
var missionPanelContent = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.9f), missionPanel.RectTransform, Anchor.Center))
|
||||
var missionPanelContent = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.95f), missionPanel.RectTransform, Anchor.Center))
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.05f
|
||||
@@ -473,7 +467,8 @@ namespace Barotrauma
|
||||
RelativeSpacing = 0.02f,
|
||||
Stretch = true
|
||||
};
|
||||
selectedMissionInfo = new GUIListBox(new RectTransform(new Vector2(0.9f, 0.25f), missionPanel.RectTransform, Anchor.BottomRight, Pivot.TopRight))
|
||||
selectedMissionInfo = new GUIListBox(new RectTransform(new Vector2(0.9f, 0.25f), missionPanel.RectTransform, Anchor.BottomRight, Pivot.TopRight)
|
||||
{ MinSize = new Point(0, (int)(250 * GUI.Scale)) })
|
||||
{
|
||||
Visible = false
|
||||
};
|
||||
@@ -683,13 +678,13 @@ namespace Barotrauma
|
||||
{
|
||||
AutoScale = true
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), container.RectTransform), location.Type.Name);
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), container.RectTransform), location.Type.Name, font: GUI.SubHeadingFont);
|
||||
|
||||
Sprite portrait = location.Type.GetPortrait(location.PortraitId);
|
||||
new GUIImage(new RectTransform(new Vector2(1.0f, 0.6f),
|
||||
container.RectTransform), portrait, scaleToFit: true);
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), container.RectTransform), TextManager.Get("SelectMission"), font: GUI.LargeFont)
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), container.RectTransform), TextManager.Get("SelectMission"), font: GUI.SubHeadingFont)
|
||||
{
|
||||
AutoScale = true
|
||||
};
|
||||
@@ -704,7 +699,6 @@ namespace Barotrauma
|
||||
SelectedLevel = connection?.Level;
|
||||
if (connection != null)
|
||||
{
|
||||
Point maxTickBoxSize = new Point(int.MaxValue, missionContent.Rect.Height / 4) ;
|
||||
List<Mission> availableMissions = Campaign.Map.CurrentLocation.GetMissionsInConnection(connection).ToList();
|
||||
if (!availableMissions.Contains(null)) { availableMissions.Add(null); }
|
||||
|
||||
@@ -719,7 +713,7 @@ namespace Barotrauma
|
||||
for (int i = 0; i < availableMissions.Count; i++)
|
||||
{
|
||||
var mission = availableMissions[i];
|
||||
var tickBox = new GUITickBox(new RectTransform(new Vector2(0.1f, 0.1f), missionContent.RectTransform) { MaxSize = maxTickBoxSize },
|
||||
var tickBox = new GUITickBox(new RectTransform(new Vector2(0.1f, 0.1f), missionContent.RectTransform),
|
||||
mission?.Name ?? TextManager.Get("NoMission"), style: "GUIRadioButton")
|
||||
{
|
||||
Enabled = GameMain.Client == null || GameMain.Client.HasPermission(Networking.ClientPermissions.ManageCampaign)
|
||||
@@ -728,6 +722,9 @@ namespace Barotrauma
|
||||
missionRadioButtonGroup.AddRadioButton(i, tickBox);
|
||||
}
|
||||
|
||||
missionFrame.RectTransform.MinSize =
|
||||
new Point(0, (int)(missionContent.RectTransform.Children.Sum(c => c.MinSize.Y * 1.02f) / missionContent.RectTransform.RelativeSize.Y));
|
||||
|
||||
if (GameMain.Client == null || GameMain.Client.HasPermission(Networking.ClientPermissions.ManageCampaign))
|
||||
{
|
||||
missionRadioButtonGroup.OnSelect = (rbg, missionInd) =>
|
||||
@@ -818,24 +815,26 @@ namespace Barotrauma
|
||||
|
||||
private GUIComponent CreateItemFrame(PurchasedItem pi, PriceInfo priceInfo, GUIListBox listBox)
|
||||
{
|
||||
GUIFrame frame = new GUIFrame(new RectTransform(new Point(listBox.Content.Rect.Width, (int)(GUI.Scale * 50)), listBox.Content.RectTransform), style: "ListBoxElement")
|
||||
GUIFrame frame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.05f), listBox.Content.RectTransform), style: "ListBoxElement")
|
||||
{
|
||||
UserData = pi,
|
||||
ToolTip = pi.ItemPrefab.Description
|
||||
};
|
||||
frame.RectTransform.MinSize = new Point(0, (int)(GUI.Scale * 50));
|
||||
|
||||
var content = new GUILayoutGroup(new RectTransform(Vector2.One, frame.RectTransform), isHorizontal: true)
|
||||
var content = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 1.0f), frame.RectTransform, Anchor.Center),
|
||||
isHorizontal: true, childAnchor: Anchor.CenterLeft)
|
||||
{
|
||||
RelativeSpacing = 0.02f,
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
ScalableFont font = listBox.Rect.Width < 280 ? GUI.SmallFont : GUI.Font;
|
||||
ScalableFont font = listBox.Content.Rect.Width < 280 ? GUI.SmallFont : GUI.Font;
|
||||
|
||||
Sprite itemIcon = pi.ItemPrefab.InventoryIcon ?? pi.ItemPrefab.sprite;
|
||||
if (itemIcon != null)
|
||||
{
|
||||
GUIImage img = new GUIImage(new RectTransform(new Point((int)(content.Rect.Height * 0.8f)), content.RectTransform, Anchor.CenterLeft), itemIcon, scaleToFit: true)
|
||||
GUIImage img = new GUIImage(new RectTransform(new Point((int)(content.Rect.Height * 0.8f)), content.RectTransform), itemIcon, scaleToFit: true)
|
||||
{
|
||||
Color = itemIcon == pi.ItemPrefab.InventoryIcon ? pi.ItemPrefab.InventoryIconColor : pi.ItemPrefab.SpriteColor
|
||||
};
|
||||
@@ -900,8 +899,8 @@ namespace Barotrauma
|
||||
content.RectTransform.RecalculateChildren(true, true);
|
||||
amountInput?.LayoutGroup.Recalculate();
|
||||
textBlock.Text = ToolBox.LimitString(textBlock.Text, textBlock.Font, textBlock.Rect.Width);
|
||||
content.RectTransform.IsFixedSize = true;
|
||||
content.RectTransform.Children.ForEach(c => c.IsFixedSize = true);
|
||||
/*content.RectTransform.IsFixedSize = true;
|
||||
content.RectTransform.Children.ForEach(c => c.IsFixedSize = true);*/
|
||||
|
||||
return frame;
|
||||
}
|
||||
@@ -950,6 +949,7 @@ namespace Barotrauma
|
||||
var priceInfo = pi.ItemPrefab.GetPrice(Campaign.Map.CurrentLocation);
|
||||
if (priceInfo == null) { continue; }
|
||||
itemFrame = CreateItemFrame(pi, priceInfo, myItemList);
|
||||
itemFrame.Flash(GUI.Style.Green);
|
||||
}
|
||||
itemFrame.GetChild(0).GetChild<GUINumberInput>().IntValue = pi.Quantity;
|
||||
existingItemFrames.Add(itemFrame);
|
||||
@@ -1094,8 +1094,9 @@ namespace Barotrauma
|
||||
{
|
||||
UserData = characterInfo
|
||||
};
|
||||
var characterPreviewContent = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.8f), characterPreviewFrame.RectTransform, Anchor.TopCenter) { RelativeOffset = new Vector2(0.0f, 0.02f) }, style: null);
|
||||
|
||||
characterInfo.CreateInfoFrame(characterPreviewFrame);
|
||||
characterInfo.CreateInfoFrame(characterPreviewContent);
|
||||
}
|
||||
|
||||
var currentCrew = GameMain.GameSession.CrewManager.GetCharacterInfos();
|
||||
@@ -1104,7 +1105,7 @@ namespace Barotrauma
|
||||
new GUIButton(new RectTransform(new Vector2(0.5f, 0.1f), characterPreviewFrame.RectTransform, Anchor.BottomCenter) { RelativeOffset = new Vector2(0.0f, 0.05f) },
|
||||
TextManager.Get("FireButton"))
|
||||
{
|
||||
Color = Color.Red,
|
||||
Color = GUI.Style.Red,
|
||||
UserData = characterInfo,
|
||||
Enabled = currentCrew.Count() > 1, //can't fire if there's only one character in the crew
|
||||
OnClicked = (btn, obj) =>
|
||||
|
||||
+102
-116
@@ -278,12 +278,8 @@ namespace Barotrauma.CharacterEditor
|
||||
#region Main methods
|
||||
public override void AddToGUIUpdateList()
|
||||
{
|
||||
fileEditPanel.AddToGUIUpdateList();
|
||||
modesPanel.AddToGUIUpdateList();
|
||||
minorModesPanel.AddToGUIUpdateList();
|
||||
buttonsPanel.AddToGUIUpdateList();
|
||||
optionsPanel.AddToGUIUpdateList();
|
||||
characterSelectionPanel.AddToGUIUpdateList();
|
||||
rightArea.AddToGUIUpdateList();
|
||||
leftArea.AddToGUIUpdateList();
|
||||
|
||||
Wizard.instance?.AddToGUIUpdateList();
|
||||
if (displayBackgroundColor)
|
||||
@@ -738,7 +734,7 @@ namespace Barotrauma.CharacterEditor
|
||||
}
|
||||
}
|
||||
}
|
||||
optionsToggle?.UpdateOpenState((float)deltaTime, new Vector2(optionsPanel.Rect.Width + rightArea.RectTransform.AbsoluteOffset.X, 0), optionsPanel.RectTransform);
|
||||
optionsToggle?.UpdateOpenState((float)deltaTime, new Vector2(-optionsPanel.Rect.Width - rightArea.RectTransform.AbsoluteOffset.X, 0), optionsPanel.RectTransform);
|
||||
fileEditToggle?.UpdateOpenState((float)deltaTime, new Vector2(-fileEditPanel.Rect.Width - rightArea.RectTransform.AbsoluteOffset.X, 0), fileEditPanel.RectTransform);
|
||||
characterPanelToggle?.UpdateOpenState((float)deltaTime, new Vector2(-characterSelectionPanel.Rect.Width - rightArea.RectTransform.AbsoluteOffset.X, 0), characterSelectionPanel.RectTransform);
|
||||
minorModesToggle?.UpdateOpenState((float)deltaTime, new Vector2(-minorModesPanel.Rect.Width - leftArea.RectTransform.AbsoluteOffset.X, 0), minorModesPanel.RectTransform);
|
||||
@@ -802,7 +798,7 @@ namespace Barotrauma.CharacterEditor
|
||||
else if (showColliders)
|
||||
{
|
||||
character.AnimController.Collider.DebugDraw(spriteBatch, Color.White, forceColor: true);
|
||||
character.AnimController.Limbs.ForEach(l => l.body.DebugDraw(spriteBatch, Color.LightGreen, forceColor: true));
|
||||
character.AnimController.Limbs.ForEach(l => l.body.DebugDraw(spriteBatch, GUI.Style.Green, forceColor: true));
|
||||
}
|
||||
spriteBatch.End();
|
||||
|
||||
@@ -867,8 +863,8 @@ namespace Barotrauma.CharacterEditor
|
||||
}
|
||||
if (jointEndLimb != null && jointEndLimb.ActiveSprite != null)
|
||||
{
|
||||
GUI.DrawRectangle(spriteBatch, GetLimbSpritesheetRect(jointEndLimb), Color.LightGreen, thickness: 3);
|
||||
GUI.DrawRectangle(spriteBatch, GetLimbPhysicRect(jointEndLimb), Color.LightGreen, thickness: 3);
|
||||
GUI.DrawRectangle(spriteBatch, GetLimbSpritesheetRect(jointEndLimb), GUI.Style.Green, thickness: 3);
|
||||
GUI.DrawRectangle(spriteBatch, GetLimbPhysicRect(jointEndLimb), GUI.Style.Green, thickness: 3);
|
||||
}
|
||||
if (spriteSheetRect.Contains(PlayerInput.MousePosition))
|
||||
{
|
||||
@@ -878,7 +874,7 @@ namespace Barotrauma.CharacterEditor
|
||||
var offset = anchor1Pos ?? Vector2.Zero;
|
||||
offset = -offset;
|
||||
startPos += offset;
|
||||
GUI.DrawLine(spriteBatch, startPos, PlayerInput.MousePosition, Color.LightGreen, width: 3);
|
||||
GUI.DrawLine(spriteBatch, startPos, PlayerInput.MousePosition, GUI.Style.Green, width: 3);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -888,7 +884,7 @@ namespace Barotrauma.CharacterEditor
|
||||
// TODO: there's something wrong here
|
||||
var offset = anchor1Pos.HasValue ? Vector2.Transform(ConvertUnits.ToSimUnits(anchor1Pos.Value), Matrix.CreateRotationZ(jointStartLimb.Rotation)) : Vector2.Zero;
|
||||
var startPos = SimToScreen(jointStartLimb.SimPosition + offset);
|
||||
GUI.DrawLine(spriteBatch, startPos, PlayerInput.MousePosition, Color.LightGreen, width: 3);
|
||||
GUI.DrawLine(spriteBatch, startPos, PlayerInput.MousePosition, GUI.Style.Green, width: 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -976,11 +972,11 @@ namespace Barotrauma.CharacterEditor
|
||||
var colliderDrawPos = SimToScreen(collider.SimPosition);
|
||||
Vector2 forward = Vector2.Transform(Vector2.UnitY, Matrix.CreateRotationZ(collider.Rotation));
|
||||
var endPos = SimToScreen(collider.SimPosition + forward * collider.radius);
|
||||
GUI.DrawLine(spriteBatch, colliderDrawPos, endPos, Color.LightGreen);
|
||||
GUI.DrawLine(spriteBatch, colliderDrawPos, endPos, GUI.Style.Green);
|
||||
GUI.DrawLine(spriteBatch, colliderDrawPos, SimToScreen(collider.SimPosition + forward * 0.25f), Color.Blue);
|
||||
Vector2 left = forward.Left();
|
||||
GUI.DrawLine(spriteBatch, colliderDrawPos, SimToScreen(collider.SimPosition + left * 0.25f), Color.Red);
|
||||
ShapeExtensions.DrawCircle(spriteBatch, colliderDrawPos, (endPos - colliderDrawPos).Length(), 40, Color.LightGreen);
|
||||
GUI.DrawLine(spriteBatch, colliderDrawPos, SimToScreen(collider.SimPosition + left * 0.25f), GUI.Style.Red);
|
||||
ShapeExtensions.DrawCircle(spriteBatch, colliderDrawPos, (endPos - colliderDrawPos).Length(), 40, GUI.Style.Green);
|
||||
GUI.DrawString(spriteBatch, new Vector2(GameMain.GraphicsWidth - 300, 0), $"Collider rotation: {MathHelper.ToDegrees(MathUtils.WrapAngleTwoPi(collider.Rotation))}", Color.White, font: GUI.SmallFont);
|
||||
}
|
||||
spriteBatch.End();
|
||||
@@ -1662,7 +1658,7 @@ namespace Barotrauma.CharacterEditor
|
||||
#if !DEBUG
|
||||
if (vanilla != null && contentPackage == vanilla)
|
||||
{
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CannotEditVanillaCharacters"), Color.Red, font: GUI.LargeFont);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CannotEditVanillaCharacters"), GUI.Style.Red, font: GUI.LargeFont);
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
@@ -1828,12 +1824,9 @@ namespace Barotrauma.CharacterEditor
|
||||
|
||||
#region GUI
|
||||
private static Point outerMargin = new Point(0, 0);
|
||||
private static Point innerMargin = new Point(40, 40);
|
||||
private static Color panelColor = new Color(20, 20, 20, 255);
|
||||
private static Color toggleButtonColor = new Color(0.4f, 0.4f, 0.4f, 1);
|
||||
private static Vector2 innerScale = new Vector2(0.95f, 0.95f);
|
||||
|
||||
private GUIFrame rightArea;
|
||||
private GUIFrame leftArea;
|
||||
private GUILayoutGroup rightArea, leftArea;
|
||||
private GUIFrame centerArea;
|
||||
|
||||
private GUIFrame characterSelectionPanel;
|
||||
@@ -1904,49 +1897,43 @@ namespace Barotrauma.CharacterEditor
|
||||
}
|
||||
|
||||
// Create the areas
|
||||
rightArea = new GUIFrame(new RectTransform(new Vector2(0.15f, 0.95f), parent: Frame.RectTransform, anchor: Anchor.CenterRight)
|
||||
rightArea = new GUILayoutGroup(new RectTransform(new Vector2(0.15f, 0.95f), parent: Frame.RectTransform, anchor: Anchor.CenterRight), childAnchor: Anchor.BottomRight)
|
||||
{
|
||||
AbsoluteOffset = new Point(outerMargin.X, 0)
|
||||
}, style: null) { CanBeFocused = false };
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
centerArea = new GUIFrame(new RectTransform(new Vector2(0.5f, 0.95f), parent: Frame.RectTransform, anchor: Anchor.TopRight)
|
||||
{
|
||||
AbsoluteOffset = new Point((int)(rightArea.RectTransform.ScaledSize.X + rightArea.RectTransform.RelativeOffset.X * rightArea.RectTransform.Parent.ScaledSize.X + 20), outerMargin.Y + 20)
|
||||
|
||||
}, style: null)
|
||||
{ CanBeFocused = false };
|
||||
leftArea = new GUIFrame(new RectTransform(new Vector2(0.2f, 0.95f), parent: Frame.RectTransform, anchor: Anchor.CenterLeft)
|
||||
leftArea = new GUILayoutGroup(new RectTransform(new Vector2(0.15f, 0.95f), parent: Frame.RectTransform, anchor: Anchor.CenterLeft), childAnchor: Anchor.BottomLeft)
|
||||
{
|
||||
AbsoluteOffset = new Point(outerMargin.X, 0)
|
||||
}, style: null)
|
||||
{
|
||||
CanBeFocused = false
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
|
||||
Vector2 buttonSize = new Vector2(1, 0.04f);
|
||||
Vector2 toggleSize = new Vector2(1.0f, 0.03f);
|
||||
|
||||
CreateCharacterSelectionPanel();
|
||||
CreateMinorModesPanel(toggleSize);
|
||||
CreateModesPanel(toggleSize);
|
||||
CreateButtonsPanel();
|
||||
CreateFileEditPanel();
|
||||
CreateOptionsPanel(toggleSize);
|
||||
CreateCharacterSelectionPanel();
|
||||
|
||||
CreateButtonsPanel();
|
||||
CreateModesPanel(toggleSize);
|
||||
CreateMinorModesPanel(toggleSize);
|
||||
|
||||
CreateContextualControls();
|
||||
}
|
||||
|
||||
private void CreateMinorModesPanel(Vector2 toggleSize)
|
||||
{
|
||||
minorModesPanel = new GUIFrame(new RectTransform(new Vector2(0.6f, 0.25f), leftArea.RectTransform, Anchor.BottomLeft)
|
||||
{
|
||||
RelativeOffset = new Vector2(0, 0.21f)
|
||||
}, style: null, color: panelColor);
|
||||
var layoutGroup = new GUILayoutGroup(new RectTransform(new Point(minorModesPanel.Rect.Width - innerMargin.X, minorModesPanel.Rect.Height - innerMargin.Y),
|
||||
minorModesPanel.RectTransform, Anchor.Center))
|
||||
minorModesPanel = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.25f), leftArea.RectTransform));
|
||||
var layoutGroup = new GUILayoutGroup(new RectTransform(innerScale, minorModesPanel.RectTransform, Anchor.Center))
|
||||
{
|
||||
AbsoluteSpacing = 2,
|
||||
Stretch = true
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.03f, 0.06f), layoutGroup.RectTransform), GetCharacterEditorTranslation("MinorModesTitle"), font: GUI.LargeFont);
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.03f, 0.0f), layoutGroup.RectTransform), GetCharacterEditorTranslation("MinorModesTitle"), font: GUI.LargeFont);
|
||||
paramsToggle = new GUITickBox(new RectTransform(toggleSize, layoutGroup.RectTransform), GetCharacterEditorTranslation("ShowParameters")) { Selected = showParamsEditor };
|
||||
paramsToggle.OnSelected = box =>
|
||||
{
|
||||
@@ -1992,19 +1979,19 @@ namespace Barotrauma.CharacterEditor
|
||||
drawDamageModifiers = box.Selected;
|
||||
return true;
|
||||
};
|
||||
minorModesToggle = new ToggleButton(new RectTransform(new Vector2(0.125f, 1), minorModesPanel.RectTransform, Anchor.CenterRight, Pivot.CenterLeft), Direction.Left);
|
||||
minorModesToggle = new ToggleButton(new RectTransform(new Vector2(0.08f, 1), minorModesPanel.RectTransform, Anchor.CenterRight, Pivot.CenterLeft), Direction.Left);
|
||||
minorModesPanel.RectTransform.MinSize = new Point(0, (int)(layoutGroup.RectTransform.Children.Sum(c => c.MinSize.Y + layoutGroup.AbsoluteSpacing) * 1.2f));
|
||||
}
|
||||
|
||||
private void CreateModesPanel(Vector2 toggleSize)
|
||||
{
|
||||
modesPanel = new GUIFrame(new RectTransform(new Vector2(0.6f, 0.2f), leftArea.RectTransform, Anchor.BottomLeft), style: null, color: panelColor);
|
||||
var layoutGroup = new GUILayoutGroup(new RectTransform(new Point(modesPanel.Rect.Width - innerMargin.X, modesPanel.Rect.Height - innerMargin.Y),
|
||||
modesPanel.RectTransform, Anchor.Center))
|
||||
modesPanel = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.2f), leftArea.RectTransform));
|
||||
var layoutGroup = new GUILayoutGroup(new RectTransform(innerScale, modesPanel.RectTransform, Anchor.Center))
|
||||
{
|
||||
AbsoluteSpacing = 2,
|
||||
Stretch = true
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.03f, 0.06f), layoutGroup.RectTransform), GetCharacterEditorTranslation("ModesPanel"), font: GUI.LargeFont);
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.03f, 0.0f), layoutGroup.RectTransform), GetCharacterEditorTranslation("ModesPanel"), font: GUI.LargeFont);
|
||||
characterInfoToggle = new GUITickBox(new RectTransform(toggleSize, layoutGroup.RectTransform), GetCharacterEditorTranslation("EditCharacter")) { Selected = editCharacterInfo };
|
||||
ragdollToggle = new GUITickBox(new RectTransform(toggleSize, layoutGroup.RectTransform), GetCharacterEditorTranslation("EditRagdoll")) { Selected = editRagdoll };
|
||||
limbsToggle = new GUITickBox(new RectTransform(toggleSize, layoutGroup.RectTransform), GetCharacterEditorTranslation("EditLimbs")) { Selected = editLimbs };
|
||||
@@ -2086,7 +2073,8 @@ namespace Barotrauma.CharacterEditor
|
||||
ResetParamsEditor();
|
||||
return true;
|
||||
};
|
||||
modesToggle = new ToggleButton(new RectTransform(new Vector2(0.125f, 1), modesPanel.RectTransform, Anchor.CenterRight, Pivot.CenterLeft), Direction.Left);
|
||||
modesToggle = new ToggleButton(new RectTransform(new Vector2(0.08f, 1), modesPanel.RectTransform, Anchor.CenterRight, Pivot.CenterLeft), Direction.Left);
|
||||
modesPanel.RectTransform.MinSize = new Point(0, (int)(layoutGroup.RectTransform.Children.Sum(c => c.MinSize.Y + layoutGroup.AbsoluteSpacing) * 1.2f));
|
||||
}
|
||||
|
||||
private void SetToggle(GUITickBox toggle, bool value)
|
||||
@@ -2095,11 +2083,11 @@ namespace Barotrauma.CharacterEditor
|
||||
{
|
||||
if (value)
|
||||
{
|
||||
toggle.Box.Flash(Color.LightGreen, useRectangleFlash: true);
|
||||
toggle.Box.Flash(GUI.Style.Green, useRectangleFlash: true);
|
||||
}
|
||||
else
|
||||
{
|
||||
toggle.Box.Flash(Color.Red, useRectangleFlash: true);
|
||||
toggle.Box.Flash(GUI.Style.Red, useRectangleFlash: true);
|
||||
}
|
||||
}
|
||||
toggle.Selected = value;
|
||||
@@ -2107,11 +2095,7 @@ namespace Barotrauma.CharacterEditor
|
||||
|
||||
private void CreateButtonsPanel()
|
||||
{
|
||||
buttonsPanel = new GUIFrame(new RectTransform(new Vector2(0.6f, 0.1f), leftArea.RectTransform, Anchor.BottomLeft)
|
||||
{
|
||||
MinSize = new Point(120, 60),
|
||||
RelativeOffset = new Vector2(0, 0.47f)
|
||||
}, style: null, color: panelColor);
|
||||
buttonsPanel = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.1f), leftArea.RectTransform));
|
||||
Vector2 buttonSize = new Vector2(1, 0.45f);
|
||||
var parent = new GUIFrame(new RectTransform(new Vector2(0.85f, 0.70f), buttonsPanel.RectTransform, Anchor.Center), style: null);
|
||||
var reloadTexturesButton = new GUIButton(new RectTransform(buttonSize, parent.RectTransform, Anchor.TopCenter), GetCharacterEditorTranslation("ReloadTextures"));
|
||||
@@ -2136,23 +2120,20 @@ namespace Barotrauma.CharacterEditor
|
||||
return true;
|
||||
}
|
||||
};
|
||||
buttonsPanelToggle = new ToggleButton(new RectTransform(new Vector2(0.125f, 1), buttonsPanel.RectTransform, Anchor.CenterRight, Pivot.CenterLeft), Direction.Left);
|
||||
buttonsPanelToggle = new ToggleButton(new RectTransform(new Vector2(0.08f, 1), buttonsPanel.RectTransform, Anchor.CenterRight, Pivot.CenterLeft), Direction.Left);
|
||||
buttonsPanel.RectTransform.MinSize = new Point(0, (int)(parent.RectTransform.Children.Sum(c => c.MinSize.Y) * 1.5f));
|
||||
}
|
||||
|
||||
|
||||
private void CreateOptionsPanel(Vector2 toggleSize)
|
||||
{
|
||||
optionsPanel = new GUIFrame(new RectTransform(new Vector2(1, 0.3f), rightArea.RectTransform, Anchor.Center)
|
||||
{
|
||||
RelativeOffset = new Vector2(0, -0.075f)
|
||||
}, style: null, color: panelColor);
|
||||
var layoutGroup = new GUILayoutGroup(new RectTransform(new Point(optionsPanel.Rect.Width - innerMargin.X, optionsPanel.Rect.Height - innerMargin.Y),
|
||||
optionsPanel.RectTransform, Anchor.Center))
|
||||
optionsPanel = new GUIFrame(new RectTransform(new Vector2(1, 0.3f), rightArea.RectTransform));
|
||||
var layoutGroup = new GUILayoutGroup(new RectTransform(innerScale, optionsPanel.RectTransform, Anchor.Center))
|
||||
{
|
||||
AbsoluteSpacing = 2,
|
||||
Stretch = true
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.03f, 0.06f), layoutGroup.RectTransform), GetCharacterEditorTranslation("OptionsPanel"), font: GUI.LargeFont);
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.03f, 0.0f), layoutGroup.RectTransform), GetCharacterEditorTranslation("OptionsPanel"), font: GUI.LargeFont);
|
||||
freezeToggle = new GUITickBox(new RectTransform(toggleSize, layoutGroup.RectTransform), GetCharacterEditorTranslation("Freeze"))
|
||||
{
|
||||
Selected = isFrozen,
|
||||
@@ -2218,7 +2199,8 @@ namespace Barotrauma.CharacterEditor
|
||||
return true;
|
||||
}
|
||||
};
|
||||
optionsToggle = new ToggleButton(new RectTransform(new Vector2(0.1f, 1), optionsPanel.RectTransform, Anchor.CenterLeft, Pivot.CenterRight), Direction.Right);
|
||||
optionsToggle = new ToggleButton(new RectTransform(new Vector2(0.08f, 1), optionsPanel.RectTransform, Anchor.CenterLeft, Pivot.CenterRight), Direction.Right);
|
||||
optionsPanel.RectTransform.MinSize = new Point(0, (int)(layoutGroup.RectTransform.Children.Sum(c => c.MinSize.Y + layoutGroup.AbsoluteSpacing) * 1.2f));
|
||||
}
|
||||
|
||||
private void CreateContextualControls()
|
||||
@@ -2266,12 +2248,12 @@ namespace Barotrauma.CharacterEditor
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
colorLabel.TextColor = Color.Red;
|
||||
colorLabel.TextColor = GUI.Style.Red;
|
||||
numberInput.IntValue = backgroundColor.R;
|
||||
numberInput.OnValueChanged += (numInput) => backgroundColor.R = (byte)numInput.IntValue;
|
||||
break;
|
||||
case 1:
|
||||
colorLabel.TextColor = Color.LightGreen;
|
||||
colorLabel.TextColor = GUI.Style.Green;
|
||||
numberInput.IntValue = backgroundColor.G;
|
||||
numberInput.OnValueChanged += (numInput) => backgroundColor.G = (byte)numInput.IntValue;
|
||||
break;
|
||||
@@ -2294,7 +2276,7 @@ namespace Barotrauma.CharacterEditor
|
||||
new GUITextBlock(new RectTransform(new Point(elementSize.X, textAreaHeight), layoutGroupSpriteSheet.RectTransform), GetCharacterEditorTranslation("SpriteSheetZoom") + ":", Color.White);
|
||||
var spriteSheetControlElement = new GUIFrame(new RectTransform(new Point(elementSize.X * 2, textAreaHeight), layoutGroupSpriteSheet.RectTransform), style: null);
|
||||
CalculateSpritesheetZoom();
|
||||
spriteSheetZoomBar = new GUIScrollBar(new RectTransform(new Vector2(0.75f, 1), spriteSheetControlElement.RectTransform), barSize: 0.2f)
|
||||
spriteSheetZoomBar = new GUIScrollBar(new RectTransform(new Vector2(0.75f, 1), spriteSheetControlElement.RectTransform, Anchor.CenterLeft), barSize: 0.2f)
|
||||
{
|
||||
BarScroll = MathHelper.Lerp(0, 1, MathUtils.InverseLerp(spriteSheetMinZoom, spriteSheetMaxZoom, spriteSheetZoom)),
|
||||
Step = 0.01f,
|
||||
@@ -2304,8 +2286,9 @@ namespace Barotrauma.CharacterEditor
|
||||
return true;
|
||||
}
|
||||
};
|
||||
new GUIButton(new RectTransform(new Vector2(0.3f, 1), spriteSheetControlElement.RectTransform, Anchor.TopRight), GetCharacterEditorTranslation("Reset"))
|
||||
{
|
||||
new GUIButton(new RectTransform(new Vector2(0.3f, 1), spriteSheetControlElement.RectTransform, Anchor.CenterLeft) { RelativeOffset = new Vector2(0.75f, 0.0f) },
|
||||
GetCharacterEditorTranslation("Reset"))
|
||||
{
|
||||
OnClicked = (box, data) =>
|
||||
{
|
||||
spriteSheetZoom = Math.Min(1, spriteSheetMaxZoom);
|
||||
@@ -2437,11 +2420,11 @@ namespace Barotrauma.CharacterEditor
|
||||
{
|
||||
ToolTip = GetCharacterEditorTranslation("CopyJointSettingsTooltip"),
|
||||
Selected = copyJointSettings,
|
||||
TextColor = copyJointSettings ? Color.Red : Color.White,
|
||||
TextColor = copyJointSettings ? GUI.Style.Red : Color.White,
|
||||
OnSelected = (GUITickBox box) =>
|
||||
{
|
||||
copyJointSettings = box.Selected;
|
||||
box.TextColor = copyJointSettings ? Color.Red : Color.White;
|
||||
box.TextColor = copyJointSettings ? GUI.Style.Red : Color.White;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -2523,7 +2506,7 @@ namespace Barotrauma.CharacterEditor
|
||||
return true;
|
||||
};
|
||||
|
||||
Point buttonSize = new Point(140, 30);
|
||||
Point buttonSize = new Point(180, 30);
|
||||
int innerMargin = 5;
|
||||
int outerMargin = 10;
|
||||
extraRagdollControls = new GUIFrame(new RectTransform(new Point(buttonSize.X + outerMargin * 2, buttonSize.Y * 4 + innerMargin * 3 + outerMargin * 2), centerArea.RectTransform, Anchor.BottomRight)
|
||||
@@ -2570,6 +2553,11 @@ namespace Barotrauma.CharacterEditor
|
||||
}
|
||||
};
|
||||
|
||||
extraRagdollLayout.RectTransform.Resize(
|
||||
new Point(extraRagdollLayout.Rect.Width, extraRagdollLayout.RectTransform.Children.Sum(c => c.MinSize.Y + extraRagdollLayout.AbsoluteSpacing)));
|
||||
extraRagdollControls.RectTransform.Resize(new Point(extraRagdollControls.Rect.Width, extraRagdollLayout.Rect.Height + outerMargin * 2));
|
||||
GUITextBlock.AutoScaleAndNormalize(extraRagdollLayout.Children.Where(c => c is GUIButton).Select(b => ((GUIButton)b).TextBlock));
|
||||
|
||||
// Animation
|
||||
animationControls = new GUIFrame(new RectTransform(Vector2.One, centerArea.RectTransform), style: null) { CanBeFocused = false };
|
||||
var layoutGroupAnimation = new GUILayoutGroup(new RectTransform(Vector2.One, animationControls.RectTransform), childAnchor: Anchor.TopLeft) { CanBeFocused = false };
|
||||
@@ -2647,25 +2635,20 @@ namespace Barotrauma.CharacterEditor
|
||||
|
||||
private void CreateCharacterSelectionPanel()
|
||||
{
|
||||
characterSelectionPanel = new GUIFrame(new RectTransform(new Vector2(1, 0.25f), rightArea.RectTransform, Anchor.TopRight), style: null, color: panelColor);
|
||||
var padding = new GUIFrame(new RectTransform(new Point(characterSelectionPanel.Rect.Width - innerMargin.X, characterSelectionPanel.Rect.Height - innerMargin.Y),
|
||||
characterSelectionPanel.RectTransform, Anchor.Center), style: null)
|
||||
characterSelectionPanel = new GUIFrame(new RectTransform(new Vector2(1, 0.2f), rightArea.RectTransform));
|
||||
var content = new GUILayoutGroup(new RectTransform(innerScale, characterSelectionPanel.RectTransform, Anchor.Center))
|
||||
{
|
||||
CanBeFocused = false
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
// Disclaimer
|
||||
var disclaimerBtnHolder = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.2f), padding.RectTransform), style: null);
|
||||
var disclaimerBtn = new GUIButton(new RectTransform(new Vector2(1.0f, 0.8f), disclaimerBtnHolder.RectTransform, Anchor.TopRight), style: "GUINotificationButton")
|
||||
// Character selection
|
||||
var characterLabel = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), content.RectTransform), GetCharacterEditorTranslation("CharacterPanel"), font: GUI.LargeFont);
|
||||
var disclaimerBtn = new GUIButton(new RectTransform(new Vector2(0.2f, 0.7f), characterLabel.RectTransform, Anchor.CenterRight), style: "GUINotificationButton")
|
||||
{
|
||||
OnClicked = (btn, userdata) => { GameMain.Instance.ShowEditorDisclaimer(); return true; }
|
||||
};
|
||||
disclaimerBtn.RectTransform.MaxSize = new Point(disclaimerBtn.Rect.Height);
|
||||
|
||||
// Character selection
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.5f, 0.2f), padding.RectTransform), GetCharacterEditorTranslation("CharacterPanel"), font: GUI.LargeFont);
|
||||
|
||||
var characterDropDown = new GUIDropDown(new RectTransform(new Vector2(1, 0.2f), padding.RectTransform)
|
||||
var characterDropDown = new GUIDropDown(new RectTransform(new Vector2(1, 0.2f), content.RectTransform)
|
||||
{
|
||||
RelativeOffset = new Vector2(0, 0.2f)
|
||||
}, elementCount: 8, style: null);
|
||||
@@ -2682,7 +2665,7 @@ namespace Barotrauma.CharacterEditor
|
||||
};
|
||||
if (currentCharacterConfig == CharacterPrefab.HumanConfigFile)
|
||||
{
|
||||
var jobDropDown = new GUIDropDown(new RectTransform(new Vector2(1, 0.15f), padding.RectTransform)
|
||||
var jobDropDown = new GUIDropDown(new RectTransform(new Vector2(1, 0.15f), content.RectTransform)
|
||||
{
|
||||
RelativeOffset = new Vector2(0, 0.45f)
|
||||
}, elementCount: 8, style: null);
|
||||
@@ -2701,7 +2684,7 @@ namespace Barotrauma.CharacterEditor
|
||||
return true;
|
||||
};
|
||||
}
|
||||
var charButtons = new GUIFrame(new RectTransform(new Vector2(1, 0.25f), parent: padding.RectTransform, anchor: Anchor.BottomLeft), style: null);
|
||||
var charButtons = new GUIFrame(new RectTransform(new Vector2(1, 0.25f), parent: content.RectTransform, anchor: Anchor.BottomLeft), style: null);
|
||||
var prevCharacterButton = new GUIButton(new RectTransform(new Vector2(0.5f, 1.0f), charButtons.RectTransform, Anchor.TopLeft), GetCharacterEditorTranslation("PreviousCharacter"));
|
||||
prevCharacterButton.TextBlock.AutoScale = true;
|
||||
prevCharacterButton.OnClicked += (b, obj) =>
|
||||
@@ -2716,33 +2699,34 @@ namespace Barotrauma.CharacterEditor
|
||||
SpawnCharacter(GetNextConfigFile());
|
||||
return true;
|
||||
};
|
||||
characterPanelToggle = new ToggleButton(new RectTransform(new Vector2(0.1f, 1), characterSelectionPanel.RectTransform, Anchor.CenterLeft, Pivot.CenterRight), Direction.Right);
|
||||
charButtons.RectTransform.MinSize = new Point(0, prevCharacterButton.RectTransform.MinSize.Y);
|
||||
characterPanelToggle = new ToggleButton(new RectTransform(new Vector2(0.08f, 1), characterSelectionPanel.RectTransform, Anchor.CenterLeft, Pivot.CenterRight), Direction.Right);
|
||||
characterSelectionPanel.RectTransform.MinSize = new Point(0, (int)(content.RectTransform.Children.Sum(c => c.MinSize.Y) * 1.2f));
|
||||
}
|
||||
|
||||
private void CreateFileEditPanel()
|
||||
{
|
||||
Vector2 buttonSize = new Vector2(1, 0.04f);
|
||||
|
||||
fileEditPanel = new GUIFrame(new RectTransform(new Vector2(1, 0.4f), rightArea.RectTransform, Anchor.BottomRight), style: null, color: panelColor);
|
||||
var layoutGroup = new GUILayoutGroup(new RectTransform(new Point(fileEditPanel.Rect.Width - innerMargin.X, fileEditPanel.Rect.Height - innerMargin.Y),
|
||||
fileEditPanel.RectTransform, Anchor.Center))
|
||||
fileEditPanel = new GUIFrame(new RectTransform(new Vector2(1, 0.4f), rightArea.RectTransform));
|
||||
var layoutGroup = new GUILayoutGroup(new RectTransform(innerScale, fileEditPanel.RectTransform, Anchor.Center))
|
||||
{
|
||||
AbsoluteSpacing = 1,
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.03f, 0.06f), layoutGroup.RectTransform), GetCharacterEditorTranslation("FileEditPanel"), font: GUI.LargeFont);
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.03f, 0.0f), layoutGroup.RectTransform), GetCharacterEditorTranslation("FileEditPanel"), font: GUI.LargeFont);
|
||||
|
||||
// Spacing
|
||||
new GUIFrame(new RectTransform(buttonSize / 2, layoutGroup.RectTransform), style: null) { CanBeFocused = false };
|
||||
var saveAllButton = new GUIButton(new RectTransform(buttonSize, layoutGroup.RectTransform), TextManager.Get("editor.saveall"));
|
||||
saveAllButton.Color = Color.LightGreen;
|
||||
saveAllButton.Color = GUI.Style.Green;
|
||||
saveAllButton.OnClicked += (button, userData) =>
|
||||
{
|
||||
#if !DEBUG
|
||||
if (VanillaCharacters != null && VanillaCharacters.Contains(currentCharacterConfig))
|
||||
{
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CannotEditVanillaCharacters"), Color.Red, font: GUI.LargeFont);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CannotEditVanillaCharacters"), GUI.Style.Red, font: GUI.LargeFont);
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
@@ -2754,9 +2738,9 @@ namespace Barotrauma.CharacterEditor
|
||||
else
|
||||
{
|
||||
character.Params.Save();
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CharacterSavedTo").Replace("[path]", CharacterParams.FullPath), Color.Green, font: GUI.Font, lifeTime: 5);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CharacterSavedTo").Replace("[path]", CharacterParams.FullPath), GUI.Style.Green, font: GUI.Font, lifeTime: 5);
|
||||
character.AnimController.SaveRagdoll();
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("RagdollSavedTo").Replace("[path]", RagdollParams.FullPath), Color.Green, font: GUI.Font, lifeTime: 5);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("RagdollSavedTo").Replace("[path]", RagdollParams.FullPath), GUI.Style.Green, font: GUI.Font, lifeTime: 5);
|
||||
AnimParams.ForEach(p => p.Save());
|
||||
}
|
||||
return true;
|
||||
@@ -2781,7 +2765,7 @@ namespace Barotrauma.CharacterEditor
|
||||
#if !DEBUG
|
||||
if (VanillaCharacters != null && VanillaCharacters.Contains(currentCharacterConfig))
|
||||
{
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CannotEditVanillaCharacters"), Color.Red, font: GUI.LargeFont);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CannotEditVanillaCharacters"), GUI.Style.Red, font: GUI.LargeFont);
|
||||
box.Close();
|
||||
return false;
|
||||
}
|
||||
@@ -2848,7 +2832,7 @@ namespace Barotrauma.CharacterEditor
|
||||
try
|
||||
{
|
||||
File.Delete(selectedFile);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("RagdollDeletedFrom").Replace("[file]", selectedFile), Color.Red, font: GUI.Font);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("RagdollDeletedFrom").Replace("[file]", selectedFile), GUI.Style.Red, font: GUI.Font);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -2916,7 +2900,7 @@ namespace Barotrauma.CharacterEditor
|
||||
#if !DEBUG
|
||||
if (VanillaCharacters != null && VanillaCharacters.Contains(currentCharacterConfig))
|
||||
{
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CannotEditVanillaCharacters"), Color.Red, font: GUI.LargeFont);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CannotEditVanillaCharacters"), GUI.Style.Red, font: GUI.LargeFont);
|
||||
box.Close();
|
||||
return false;
|
||||
}
|
||||
@@ -3005,7 +2989,7 @@ namespace Barotrauma.CharacterEditor
|
||||
try
|
||||
{
|
||||
File.Delete(selectedFile);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("AnimationOfTypeDeleted").Replace("[type]", selectedType.ToString()).Replace("[file]", selectedFile), Color.Red, font: GUI.Font);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("AnimationOfTypeDeleted").Replace("[type]", selectedType.ToString()).Replace("[file]", selectedFile), GUI.Style.Red, font: GUI.Font);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -3080,7 +3064,7 @@ namespace Barotrauma.CharacterEditor
|
||||
// Spacing
|
||||
new GUIFrame(new RectTransform(buttonSize / 2, layoutGroup.RectTransform), style: null) { CanBeFocused = false };
|
||||
var resetButton = new GUIButton(new RectTransform(buttonSize, layoutGroup.RectTransform), GetCharacterEditorTranslation("ResetButton"));
|
||||
resetButton.Color = Color.Red;
|
||||
resetButton.Color = GUI.Style.Red;
|
||||
resetButton.OnClicked += (button, userData) =>
|
||||
{
|
||||
CharacterParams.Reset(true);
|
||||
@@ -3121,7 +3105,7 @@ namespace Barotrauma.CharacterEditor
|
||||
}
|
||||
};
|
||||
|
||||
fileEditToggle = new ToggleButton(new RectTransform(new Vector2(0.1f, 1), fileEditPanel.RectTransform, Anchor.CenterLeft, Pivot.CenterRight), Direction.Right);
|
||||
fileEditToggle = new ToggleButton(new RectTransform(new Vector2(0.08f, 1), fileEditPanel.RectTransform, Anchor.CenterLeft, Pivot.CenterRight), Direction.Right);
|
||||
|
||||
void ResetView()
|
||||
{
|
||||
@@ -3135,6 +3119,8 @@ namespace Barotrauma.CharacterEditor
|
||||
skeletonToggle.Selected = false;
|
||||
damageModifiersToggle.Selected = false;
|
||||
}
|
||||
|
||||
fileEditPanel.RectTransform.MinSize = new Point(0, (int)(layoutGroup.RectTransform.Children.Sum(c => c.MinSize.Y + layoutGroup.AbsoluteSpacing) * 1.2f));
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -3165,9 +3151,9 @@ namespace Barotrauma.CharacterEditor
|
||||
|
||||
public ToggleButton(RectTransform rectT, Direction dir)
|
||||
{
|
||||
rectT.MaxSize = new Point(int.MaxValue, (int)(100 * GUI.Scale));
|
||||
toggleButton = new GUIButton(rectT, style: "UIToggleButton")
|
||||
{
|
||||
Color = toggleButtonColor,
|
||||
OnClicked = (button, data) =>
|
||||
{
|
||||
IsHidden = !IsHidden;
|
||||
@@ -3196,8 +3182,8 @@ namespace Barotrauma.CharacterEditor
|
||||
|
||||
public void UpdateOpenState(float deltaTime, Vector2 hiddenPos, RectTransform panel)
|
||||
{
|
||||
panel.AbsoluteOffset = Vector2.SmoothStep(hiddenPos, Vector2.Zero, OpenState).ToPoint();
|
||||
OpenState = isHidden ? Math.Max(OpenState - deltaTime * 2, 0) : Math.Min(OpenState + deltaTime * 2, 1);
|
||||
panel.AbsoluteOffset = new Vector2(MathHelper.SmoothStep(hiddenPos.X, 0.0f, OpenState), panel.AbsoluteOffset.Y).ToPoint();
|
||||
OpenState = isHidden ? Math.Max(OpenState - deltaTime * 5, 0) : Math.Min(OpenState + deltaTime * 5, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3354,7 +3340,7 @@ namespace Barotrauma.CharacterEditor
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
new GUIButton(new RectTransform(new Vector2(0.08f, 0.8f), parent.RectTransform, Anchor.BottomRight), "X", color: Color.Red)
|
||||
new GUIButton(new RectTransform(new Vector2(0.08f, 0.8f), parent.RectTransform, Anchor.BottomRight, scaleBasis: ScaleBasis.BothHeight), style: "GUICancelButton", color: GUI.Style.Red)
|
||||
{
|
||||
OnClicked = (button, data) =>
|
||||
{
|
||||
@@ -3832,7 +3818,7 @@ namespace Barotrauma.CharacterEditor
|
||||
DrawRadialWidget(spriteBatch, SimToScreen(head.SimPosition), animParams.HeadAngle, GetCharacterEditorTranslation("HeadAngle"), Color.White,
|
||||
angle => TryUpdateAnimParam("headangle", angle), circleRadius: 25, rotationOffset: collider.Rotation + MathHelper.Pi, clockWise: dir < 0, wrapAnglePi: true, holdPosition: true);
|
||||
// Head position and leaning
|
||||
Color color = Color.Red;
|
||||
Color color = GUI.Style.Red;
|
||||
if (animParams.IsGroundedAnimation)
|
||||
{
|
||||
if (humanGroundedParams != null && character.AnimController is HumanoidAnimController humanAnimController)
|
||||
@@ -4110,7 +4096,7 @@ namespace Barotrauma.CharacterEditor
|
||||
{
|
||||
if (hand != null || arm != null)
|
||||
{
|
||||
GetAnimationWidget("HandMoveAmount", Color.LightGreen, Color.Black, initMethod: w =>
|
||||
GetAnimationWidget("HandMoveAmount", GUI.Style.Green, Color.Black, initMethod: w =>
|
||||
{
|
||||
w.tooltip = GetCharacterEditorTranslation("HandMoveAmount");
|
||||
float offset = 0.1f;
|
||||
@@ -4131,7 +4117,7 @@ namespace Barotrauma.CharacterEditor
|
||||
{
|
||||
if (w.IsSelected)
|
||||
{
|
||||
GUI.DrawLine(sp, w.DrawPos, SimToScreen(collider.SimPosition + GetSimSpaceForward() * offset), Color.LightGreen);
|
||||
GUI.DrawLine(sp, w.DrawPos, SimToScreen(collider.SimPosition + GetSimSpaceForward() * offset), GUI.Style.Green);
|
||||
}
|
||||
};
|
||||
}).Draw(spriteBatch, deltaTime);
|
||||
@@ -4250,7 +4236,7 @@ namespace Barotrauma.CharacterEditor
|
||||
lengthWidget.Draw(spriteBatch, deltaTime);
|
||||
amplitudeWidget.Draw(spriteBatch, deltaTime);
|
||||
// Arms
|
||||
GetAnimationWidget("HandMoveAmount", Color.LightGreen, Color.Black, initMethod: w =>
|
||||
GetAnimationWidget("HandMoveAmount", GUI.Style.Green, Color.Black, initMethod: w =>
|
||||
{
|
||||
w.tooltip = GetCharacterEditorTranslation("HandMoveAmount");
|
||||
float offset = 0.4f;
|
||||
@@ -4273,7 +4259,7 @@ namespace Barotrauma.CharacterEditor
|
||||
{
|
||||
if (w.IsSelected)
|
||||
{
|
||||
GUI.DrawLine(sp, w.DrawPos, SimToScreen(collider.SimPosition + GetSimSpaceForward() * offset), Color.LightGreen);
|
||||
GUI.DrawLine(sp, w.DrawPos, SimToScreen(collider.SimPosition + GetSimSpaceForward() * offset), GUI.Style.Green);
|
||||
}
|
||||
};
|
||||
}).Draw(spriteBatch, deltaTime);
|
||||
@@ -4284,7 +4270,7 @@ namespace Barotrauma.CharacterEditor
|
||||
if (limb.type == LimbType.LeftFoot || limb.type == LimbType.RightFoot)
|
||||
{
|
||||
GUI.DrawRectangle(spriteBatch, SimToScreen(limb.DebugRefPos) - Vector2.One * 3, Vector2.One * 6, Color.White, isFilled: true);
|
||||
GUI.DrawRectangle(spriteBatch, SimToScreen(limb.DebugTargetPos) - Vector2.One * 3, Vector2.One * 6, Color.LightGreen, isFilled: true);
|
||||
GUI.DrawRectangle(spriteBatch, SimToScreen(limb.DebugTargetPos) - Vector2.One * 3, Vector2.One * 6, GUI.Style.Green, isFilled: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4379,7 +4365,7 @@ namespace Barotrauma.CharacterEditor
|
||||
{
|
||||
var pullJointWidgetSize = new Vector2(5, 5);
|
||||
Vector2 tformedPullPos = SimToScreen(limb.PullJointWorldAnchorA);
|
||||
GUI.DrawRectangle(spriteBatch, tformedPullPos - pullJointWidgetSize / 2, pullJointWidgetSize, Color.Red, true);
|
||||
GUI.DrawRectangle(spriteBatch, tformedPullPos - pullJointWidgetSize / 2, pullJointWidgetSize, GUI.Style.Red, true);
|
||||
DrawWidget(spriteBatch, tformedPullPos, WidgetType.Rectangle, 8, Color.Cyan, $"IK ({limb.Name})", () =>
|
||||
{
|
||||
if (!selectedLimbs.Contains(limb))
|
||||
@@ -4451,7 +4437,7 @@ namespace Barotrauma.CharacterEditor
|
||||
//GUI.DrawRectangle(spriteBatch, tformedJointPos - dotSize / 2, dotSize, color, true);
|
||||
//GUI.DrawLine(spriteBatch, tformedJointPos, tformedJointPos + up * 20, Color.White, width: 3);
|
||||
GUI.DrawLine(spriteBatch, limbScreenPos, tformedJointPos, Color.Yellow, width: 3);
|
||||
//GUI.DrawRectangle(spriteBatch, inputRect, Color.Red);
|
||||
//GUI.DrawRectangle(spriteBatch, inputRect, GUI.Style.Red);
|
||||
GUI.DrawString(spriteBatch, tformedJointPos + new Vector2(dotSize.X, -dotSize.Y) * 2, $"{joint.Params.Name} {jointPos.FormatZeroDecimal()}", Color.White, Color.Black * 0.5f);
|
||||
if (PlayerInput.PrimaryMouseButtonHeld())
|
||||
{
|
||||
@@ -4717,7 +4703,7 @@ namespace Barotrauma.CharacterEditor
|
||||
{
|
||||
if (isSelected || !onlyShowSourceRectForSelectedLimbs)
|
||||
{
|
||||
GUI.DrawRectangle(spriteBatch, rect, isSelected ? Color.Yellow : (isMouseOn ? Color.White : Color.Red));
|
||||
GUI.DrawRectangle(spriteBatch, rect, isSelected ? Color.Yellow : (isMouseOn ? Color.White : GUI.Style.Red));
|
||||
}
|
||||
}
|
||||
if (isSelected)
|
||||
@@ -5048,7 +5034,7 @@ namespace Barotrauma.CharacterEditor
|
||||
private void DrawJointLimitWidgets(SpriteBatch spriteBatch, Limb limb, LimbJoint joint, Vector2 drawPos, bool autoFreeze, bool allowPairEditing, bool holdPosition, float rotationOffset = 0)
|
||||
{
|
||||
rotationOffset -= limb.Params.GetSpriteOrientation();
|
||||
Color angleColor = joint.UpperLimit - joint.LowerLimit > 0 ? Color.LightGreen * 0.5f : Color.Red;
|
||||
Color angleColor = joint.UpperLimit - joint.LowerLimit > 0 ? GUI.Style.Green * 0.5f : GUI.Style.Red;
|
||||
DrawRadialWidget(spriteBatch, drawPos, MathHelper.ToDegrees(joint.UpperLimit), $"{joint.Params.Name}: {GetCharacterEditorTranslation("UpperLimit")}", Color.Cyan, angle =>
|
||||
{
|
||||
joint.UpperLimit = MathHelper.ToRadians(angle);
|
||||
@@ -5240,7 +5226,7 @@ namespace Barotrauma.CharacterEditor
|
||||
}
|
||||
onClick(angle);
|
||||
var zeroPos = drawPos + VectorExtensions.ForwardFlipped(rotationOffset, circleRadius);
|
||||
GUI.DrawLine(spriteBatch, drawPos, zeroPos, Color.Red, width: 3);
|
||||
GUI.DrawLine(spriteBatch, drawPos, zeroPos, GUI.Style.Red, width: 3);
|
||||
}, autoFreeze, holdPosition, onHovered: () =>
|
||||
{
|
||||
if (!PlayerInput.PrimaryMouseButtonHeld())
|
||||
@@ -5399,7 +5385,7 @@ namespace Barotrauma.CharacterEditor
|
||||
widget.refresh = () =>
|
||||
{
|
||||
widget.showTooltip = !selectedJoints.Contains(joint);
|
||||
widget.color = selectedJoints.Contains(joint) ? Color.Yellow : Color.Red;
|
||||
widget.color = selectedJoints.Contains(joint) ? Color.Yellow : GUI.Style.Red;
|
||||
};
|
||||
widget.refresh();
|
||||
widget.PreUpdate += dTime => widget.Enabled = editJoints;
|
||||
|
||||
@@ -110,7 +110,7 @@ namespace Barotrauma.CharacterEditor
|
||||
msgBox.Close();
|
||||
if (CharacterEditorScreen.Instance.CreateCharacter(name, Path.GetDirectoryName(xmlPath), isHumanoid, contentPackage, ragdollElement, characterElement, animations))
|
||||
{
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CharacterCreated").Replace("[name]", name), Color.Green, font: GUI.Font);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CharacterCreated").Replace("[name]", name), GUI.Style.Green, font: GUI.Font);
|
||||
}
|
||||
Wizard.Instance.SelectTab(Tab.None);
|
||||
return true;
|
||||
@@ -126,7 +126,7 @@ namespace Barotrauma.CharacterEditor
|
||||
{
|
||||
if (CharacterEditorScreen.Instance.CreateCharacter(name, Path.GetDirectoryName(xmlPath), isHumanoid, contentPackage, ragdollElement, characterElement, animations))
|
||||
{
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CharacterCreated").Replace("[name]", name), Color.Green, font: GUI.Font);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CharacterCreated").Replace("[name]", name), GUI.Style.Green, font: GUI.Font);
|
||||
}
|
||||
Wizard.Instance.SelectTab(Tab.None);
|
||||
}
|
||||
@@ -141,12 +141,12 @@ namespace Barotrauma.CharacterEditor
|
||||
|
||||
protected override GUIMessageBox Create()
|
||||
{
|
||||
var box = new GUIMessageBox(GetCharacterEditorTranslation("CreateNewCharacter"), string.Empty, new string[] { TextManager.Get("Cancel"), IsCopy ? TextManager.Get("Create") : TextManager.Get("Next") }, new Vector2(0.65f, 1f));
|
||||
var box = new GUIMessageBox(GetCharacterEditorTranslation("CreateNewCharacter"), string.Empty, new string[] { TextManager.Get("Cancel"), IsCopy ? TextManager.Get("Create") : TextManager.Get("Next") }, new Vector2(0.65f, 0.9f));
|
||||
box.Header.Font = GUI.LargeFont;
|
||||
box.Content.ChildAnchor = Anchor.TopCenter;
|
||||
box.Content.AbsoluteSpacing = 20;
|
||||
int elementSize = 30;
|
||||
var frame = new GUIFrame(new RectTransform(new Point(box.Content.Rect.Width - (int)(80 * GUI.xScale), box.Content.Rect.Height - (int)(100 * GUI.yScale)),
|
||||
var frame = new GUIFrame(new RectTransform(new Point(box.Content.Rect.Width - (int)(40 * GUI.xScale), box.Content.Rect.Height - (int)(50 * GUI.yScale)),
|
||||
box.Content.RectTransform, Anchor.Center), style: null, color: ParamsEditor.Color)
|
||||
{
|
||||
CanBeFocused = false
|
||||
@@ -174,13 +174,11 @@ namespace Barotrauma.CharacterEditor
|
||||
{
|
||||
var mainElement = new GUIFrame(new RectTransform(new Point(topGroup.RectTransform.Rect.Width, elementSize), topGroup.RectTransform), style: null, color: Color.Gray * 0.25f);
|
||||
fields.Add(mainElement);
|
||||
RectTransform leftElement = new RectTransform(new Vector2(0.3f, 1), mainElement.RectTransform, Anchor.TopLeft);
|
||||
RectTransform rightElement = new RectTransform(new Vector2(0.7f, 1), mainElement.RectTransform, Anchor.TopRight);
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
new GUITextBlock(leftElement, TextManager.Get("Name"));
|
||||
var nameField = new GUITextBox(rightElement, Name ?? GetCharacterEditorTranslation("DefaultName")) { CaretColor = Color.White };
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.3f, 1), mainElement.RectTransform, Anchor.CenterLeft), TextManager.Get("Name"));
|
||||
var nameField = new GUITextBox(new RectTransform(new Vector2(0.7f, 1), mainElement.RectTransform, Anchor.CenterRight), Name ?? GetCharacterEditorTranslation("DefaultName")) { CaretColor = Color.White };
|
||||
string ProcessText(string text) => text.RemoveWhitespace().CapitaliseFirstInvariant();
|
||||
Name = ProcessText(nameField.Text);
|
||||
nameField.OnTextChanged += (tb, text) =>
|
||||
@@ -191,8 +189,8 @@ namespace Barotrauma.CharacterEditor
|
||||
};
|
||||
break;
|
||||
case 1:
|
||||
var label = new GUITextBlock(leftElement, GetCharacterEditorTranslation("IsHumanoid"));
|
||||
var tickBox = new GUITickBox(rightElement, string.Empty)
|
||||
var label = new GUITextBlock(new RectTransform(new Vector2(0.3f, 1), mainElement.RectTransform, Anchor.CenterLeft), GetCharacterEditorTranslation("IsHumanoid"));
|
||||
var tickBox = new GUITickBox(new RectTransform(new Vector2(0.7f, 1), mainElement.RectTransform, Anchor.CenterRight), string.Empty)
|
||||
{
|
||||
Selected = IsHumanoid,
|
||||
Enabled = !IsCopy,
|
||||
@@ -204,8 +202,8 @@ namespace Barotrauma.CharacterEditor
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
var l = new GUITextBlock(leftElement, GetCharacterEditorTranslation("CanEnterSubmarines"));
|
||||
var t = new GUITickBox(rightElement, string.Empty)
|
||||
var l = new GUITextBlock(new RectTransform(new Vector2(0.3f, 1), mainElement.RectTransform, Anchor.CenterLeft), GetCharacterEditorTranslation("CanEnterSubmarines"));
|
||||
var t = new GUITickBox(new RectTransform(new Vector2(0.7f, 1), mainElement.RectTransform, Anchor.CenterRight), string.Empty)
|
||||
{
|
||||
Selected = CanEnterSubmarine,
|
||||
Enabled = !IsCopy,
|
||||
@@ -217,8 +215,8 @@ namespace Barotrauma.CharacterEditor
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
var lbl = new GUITextBlock(leftElement, GetCharacterEditorTranslation("CanWalk"));
|
||||
var txt = new GUITickBox(rightElement, string.Empty)
|
||||
var lbl = new GUITextBlock(new RectTransform(new Vector2(0.3f, 1), mainElement.RectTransform, Anchor.CenterLeft), GetCharacterEditorTranslation("CanWalk"));
|
||||
var txt = new GUITickBox(new RectTransform(new Vector2(0.7f, 1), mainElement.RectTransform, Anchor.CenterRight), string.Empty)
|
||||
{
|
||||
Selected = CanWalk,
|
||||
Enabled = !IsCopy,
|
||||
@@ -230,8 +228,8 @@ namespace Barotrauma.CharacterEditor
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
new GUITextBlock(leftElement, GetCharacterEditorTranslation("ConfigFileOutput"));
|
||||
xmlPathElement = new GUITextBox(rightElement, string.Empty)
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.3f, 1), mainElement.RectTransform, Anchor.CenterLeft), GetCharacterEditorTranslation("ConfigFileOutput"));
|
||||
xmlPathElement = new GUITextBox(new RectTransform(new Vector2(0.7f, 1), mainElement.RectTransform, Anchor.CenterRight), string.Empty)
|
||||
{
|
||||
Text = XMLPath,
|
||||
CaretColor = Color.White
|
||||
@@ -243,127 +241,138 @@ namespace Barotrauma.CharacterEditor
|
||||
};
|
||||
break;
|
||||
case 5:
|
||||
//new GUITextBlock(leftElement, GetCharacterEditorTranslation("TexturePath"));
|
||||
texturePathElement = new GUITextBox(rightElement, string.Empty)
|
||||
{
|
||||
Text = TexturePath,
|
||||
CaretColor = Color.White,
|
||||
};
|
||||
texturePathElement.OnTextChanged += (tb, text) =>
|
||||
{
|
||||
updateTexturePath = false;
|
||||
TexturePath = text;
|
||||
return true;
|
||||
};
|
||||
string title = GetCharacterEditorTranslation("SelectTexture");
|
||||
new GUIButton(leftElement, title)
|
||||
{
|
||||
OnClicked = (button, data) =>
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.3f, 1), mainElement.RectTransform, Anchor.CenterLeft), GetCharacterEditorTranslation("TexturePath"));
|
||||
var rightContainer = new GUIFrame(new RectTransform(new Vector2(0.7f, 1), mainElement.RectTransform, Anchor.CenterRight), style: null);
|
||||
texturePathElement = new GUITextBox(new RectTransform(new Vector2(0.7f, 1.0f), rightContainer.RectTransform, Anchor.CenterLeft), string.Empty)
|
||||
{
|
||||
FileSelection.OnFileSelected = (file) =>
|
||||
Text = TexturePath,
|
||||
CaretColor = Color.White,
|
||||
};
|
||||
texturePathElement.OnTextChanged += (tb, text) =>
|
||||
{
|
||||
updateTexturePath = false;
|
||||
TexturePath = text;
|
||||
return true;
|
||||
};
|
||||
string title = GetCharacterEditorTranslation("SelectTexture");
|
||||
new GUIButton(new RectTransform(new Vector2(0.3f / texturePathElement.RectTransform.RelativeSize.X, 1.0f), texturePathElement.RectTransform, Anchor.CenterRight, Pivot.CenterLeft), title, style: "GUIButtonSmall")
|
||||
{
|
||||
OnClicked = (button, data) =>
|
||||
{
|
||||
string relativePath = UpdaterUtil.GetRelativePath(Path.GetFullPath(file), Environment.CurrentDirectory);
|
||||
string destinationPath = relativePath;
|
||||
FileSelection.OnFileSelected = (file) =>
|
||||
{
|
||||
string relativePath = UpdaterUtil.GetRelativePath(Path.GetFullPath(file), Environment.CurrentDirectory);
|
||||
string destinationPath = relativePath;
|
||||
|
||||
//copy file to XML path if it's not located relative to the game's files
|
||||
if (relativePath.StartsWith("..") ||
|
||||
Path.GetPathRoot(Environment.CurrentDirectory) != Path.GetPathRoot(file))
|
||||
{
|
||||
destinationPath = Path.Combine(Path.GetDirectoryName(XMLPath), Path.GetFileName(file));
|
||||
|
||||
string destinationDir = Path.GetDirectoryName(destinationPath);
|
||||
if (!Directory.Exists(destinationDir))
|
||||
Path.GetPathRoot(Environment.CurrentDirectory) != Path.GetPathRoot(file))
|
||||
{
|
||||
Directory.CreateDirectory(destinationDir);
|
||||
destinationPath = Path.Combine(Path.GetDirectoryName(XMLPath), Path.GetFileName(file));
|
||||
|
||||
string destinationDir = Path.GetDirectoryName(destinationPath);
|
||||
if (!Directory.Exists(destinationDir))
|
||||
{
|
||||
Directory.CreateDirectory(destinationDir);
|
||||
}
|
||||
|
||||
if (!File.Exists(destinationPath))
|
||||
{
|
||||
File.Copy(file, Path.GetFullPath(destinationPath), overwrite: true);
|
||||
}
|
||||
}
|
||||
|
||||
if (!File.Exists(destinationPath))
|
||||
{
|
||||
File.Copy(file, Path.GetFullPath(destinationPath), overwrite: true);
|
||||
}
|
||||
}
|
||||
|
||||
isTextureSelected = true;
|
||||
texturePathElement.Text = destinationPath;
|
||||
};
|
||||
FileSelection.ClearFileTypeFilters();
|
||||
FileSelection.AddFileTypeFilter("PNG", "*.png");
|
||||
FileSelection.AddFileTypeFilter("JPEG", "*.jpg, *.jpeg");
|
||||
FileSelection.AddFileTypeFilter("All files", "*.*");
|
||||
FileSelection.SelectFileTypeFilter("*.png");
|
||||
FileSelection.Open = true;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
isTextureSelected = true;
|
||||
texturePathElement.Text = destinationPath;
|
||||
};
|
||||
FileSelection.ClearFileTypeFilters();
|
||||
FileSelection.AddFileTypeFilter("PNG", "*.png");
|
||||
FileSelection.AddFileTypeFilter("JPEG", "*.jpg, *.jpeg");
|
||||
FileSelection.AddFileTypeFilter("All files", "*.*");
|
||||
FileSelection.SelectFileTypeFilter("*.png");
|
||||
FileSelection.Open = true;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
mainElement.RectTransform.NonScaledSize = new Point(
|
||||
mainElement.RectTransform.NonScaledSize.X,
|
||||
mainElement.RectTransform.NonScaledSize.Y * 2);
|
||||
new GUITextBlock(leftElement, TextManager.Get("ContentPackage"));
|
||||
var rightContainer = new GUIFrame(rightElement, style: null);
|
||||
contentPackageDropDown = new GUIDropDown(new RectTransform(new Vector2(1.0f, 0.5f), rightContainer.RectTransform, Anchor.TopRight));
|
||||
foreach (ContentPackage cp in ContentPackage.List)
|
||||
{
|
||||
mainElement.RectTransform.NonScaledSize = new Point(
|
||||
mainElement.RectTransform.NonScaledSize.X,
|
||||
mainElement.RectTransform.NonScaledSize.Y * 2);
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.3f, 1), mainElement.RectTransform, Anchor.CenterLeft), TextManager.Get("ContentPackage"));
|
||||
var rightContainer = new GUIFrame(new RectTransform(new Vector2(0.7f, 1), mainElement.RectTransform, Anchor.CenterRight), style: null);
|
||||
contentPackageDropDown = new GUIDropDown(new RectTransform(new Vector2(1.0f, 0.5f), rightContainer.RectTransform, Anchor.TopRight));
|
||||
foreach (ContentPackage cp in ContentPackage.List)
|
||||
{
|
||||
#if !DEBUG
|
||||
if (cp == GameMain.VanillaContent) { continue; }
|
||||
#endif
|
||||
contentPackageDropDown.AddItem(cp.Name, userData: cp, toolTip: cp.Path);
|
||||
}
|
||||
contentPackageDropDown.OnSelected = (obj, userdata) =>
|
||||
{
|
||||
ContentPackage = userdata as ContentPackage;
|
||||
updateTexturePath = !isTextureSelected && !IsCopy;
|
||||
UpdatePaths();
|
||||
return true;
|
||||
};
|
||||
contentPackageDropDown.Select(0);
|
||||
var contentPackageNameElement = new GUITextBox(new RectTransform(new Vector2(0.7f, 0.5f), rightContainer.RectTransform, Anchor.BottomLeft),
|
||||
GetCharacterEditorTranslation("NewContentPackage"))
|
||||
{
|
||||
CaretColor = Color.White,
|
||||
};
|
||||
var createNewPackageButton = new GUIButton(new RectTransform(new Vector2(0.3f, 0.5f), rightContainer.RectTransform, Anchor.BottomRight), TextManager.Get("CreateNew"))
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
contentPackageDropDown.AddItem(cp.Name, userData: cp, toolTip: cp.Path);
|
||||
}
|
||||
contentPackageDropDown.OnSelected = (obj, userdata) =>
|
||||
{
|
||||
if (string.IsNullOrEmpty(contentPackageNameElement.Text))
|
||||
{
|
||||
contentPackageNameElement.Flash();
|
||||
return false;
|
||||
}
|
||||
if (ContentPackage.List.Any(cp => cp.Name.ToLower() == contentPackageNameElement.Text.ToLower()))
|
||||
{
|
||||
new GUIMessageBox("", TextManager.Get("charactereditor.contentpackagenameinuse", fallBackTag: "leveleditorlevelobjnametaken"));
|
||||
return false;
|
||||
}
|
||||
string modName = ToolBox.RemoveInvalidFileNameChars(contentPackageNameElement.Text);
|
||||
ContentPackage = ContentPackage.CreatePackage(contentPackageNameElement.Text, Path.Combine("Mods", modName, Steam.SteamManager.MetadataFileName), false);
|
||||
ContentPackage.List.Add(ContentPackage);
|
||||
GameMain.Config.SelectContentPackage(ContentPackage);
|
||||
contentPackageDropDown.AddItem(ContentPackage.Name, ContentPackage, ContentPackage.Path);
|
||||
contentPackageDropDown.SelectItem(ContentPackage);
|
||||
contentPackageNameElement.Text = "";
|
||||
ContentPackage = userdata as ContentPackage;
|
||||
updateTexturePath = !isTextureSelected && !IsCopy;
|
||||
UpdatePaths();
|
||||
return true;
|
||||
},
|
||||
Enabled = false
|
||||
};
|
||||
Color textColor = contentPackageNameElement.TextColor;
|
||||
contentPackageNameElement.TextColor *= 0.6f;
|
||||
contentPackageNameElement.OnSelected += (sender, key) =>
|
||||
{
|
||||
contentPackageNameElement.Text = "";
|
||||
};
|
||||
contentPackageNameElement.OnTextChanged += (textBox, text) =>
|
||||
{
|
||||
textBox.TextColor = textColor;
|
||||
createNewPackageButton.Enabled = !string.IsNullOrWhiteSpace(text);
|
||||
return true;
|
||||
};
|
||||
};
|
||||
contentPackageDropDown.Select(0);
|
||||
var contentPackageNameElement = new GUITextBox(new RectTransform(new Vector2(0.7f, 0.5f), rightContainer.RectTransform, Anchor.BottomLeft),
|
||||
GetCharacterEditorTranslation("NewContentPackage"))
|
||||
{
|
||||
CaretColor = Color.White,
|
||||
};
|
||||
var createNewPackageButton = new GUIButton(new RectTransform(new Vector2(0.3f / contentPackageNameElement.RectTransform.RelativeSize.X, 1.0f), contentPackageNameElement.RectTransform, Anchor.CenterRight, Pivot.CenterLeft), TextManager.Get("CreateNew"), style: "GUIButtonSmall")
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
if (string.IsNullOrEmpty(contentPackageNameElement.Text))
|
||||
{
|
||||
contentPackageNameElement.Flash();
|
||||
return false;
|
||||
}
|
||||
if (ContentPackage.List.Any(cp => cp.Name.ToLower() == contentPackageNameElement.Text.ToLower()))
|
||||
{
|
||||
new GUIMessageBox("", TextManager.Get("charactereditor.contentpackagenameinuse", fallBackTag: "leveleditorlevelobjnametaken"));
|
||||
return false;
|
||||
}
|
||||
string modName = ToolBox.RemoveInvalidFileNameChars(contentPackageNameElement.Text);
|
||||
ContentPackage = ContentPackage.CreatePackage(contentPackageNameElement.Text, Path.Combine("Mods", modName, Steam.SteamManager.MetadataFileName), false);
|
||||
ContentPackage.List.Add(ContentPackage);
|
||||
GameMain.Config.SelectContentPackage(ContentPackage);
|
||||
contentPackageDropDown.AddItem(ContentPackage.Name, ContentPackage, ContentPackage.Path);
|
||||
contentPackageDropDown.SelectItem(ContentPackage);
|
||||
contentPackageNameElement.Text = "";
|
||||
return true;
|
||||
},
|
||||
Enabled = false
|
||||
};
|
||||
Color textColor = contentPackageNameElement.TextColor;
|
||||
contentPackageNameElement.TextColor *= 0.6f;
|
||||
contentPackageNameElement.OnSelected += (sender, key) =>
|
||||
{
|
||||
contentPackageNameElement.Text = "";
|
||||
};
|
||||
contentPackageNameElement.OnTextChanged += (textBox, text) =>
|
||||
{
|
||||
textBox.TextColor = textColor;
|
||||
createNewPackageButton.Enabled = !string.IsNullOrWhiteSpace(text);
|
||||
return true;
|
||||
};
|
||||
rightContainer.RectTransform.MinSize = new Point(0,
|
||||
contentPackageDropDown.RectTransform.MinSize.Y + Math.Max(contentPackageNameElement.RectTransform.MinSize.Y, createNewPackageButton.RectTransform.MinSize.Y));
|
||||
}
|
||||
break;
|
||||
}
|
||||
int contentSize = mainElement.RectTransform.Children.Max(c => c.MinSize.Y) ;
|
||||
mainElement.RectTransform.Resize(new Point(mainElement.Rect.Width, Math.Max(mainElement.Rect.Height, contentSize)));
|
||||
}
|
||||
UpdatePaths();
|
||||
box.Buttons[0].Parent.RectTransform.SetAsLastChild();
|
||||
box.Buttons[1].RectTransform.SetAsLastChild();
|
||||
// Cancel
|
||||
box.Buttons[0].OnClicked += (b, d) =>
|
||||
{
|
||||
@@ -380,15 +389,15 @@ namespace Barotrauma.CharacterEditor
|
||||
}
|
||||
if (!File.Exists(TexturePath))
|
||||
{
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("TextureDoesNotExist"), Color.Red);
|
||||
texturePathElement.Flash(Color.Red);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("TextureDoesNotExist"), GUI.Style.Red);
|
||||
texturePathElement.Flash(GUI.Style.Red);
|
||||
return false;
|
||||
}
|
||||
var path = Path.GetFileName(TexturePath);
|
||||
if (!path.EndsWith(".png", StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
GUI.AddMessage(TextManager.Get("WrongFileType"), Color.Red);
|
||||
texturePathElement.Flash(Color.Red);
|
||||
GUI.AddMessage(TextManager.Get("WrongFileType"), GUI.Style.Red);
|
||||
texturePathElement.Flash(GUI.Style.Red);
|
||||
return false;
|
||||
}
|
||||
if (IsCopy)
|
||||
@@ -421,27 +430,32 @@ namespace Barotrauma.CharacterEditor
|
||||
var box = new GUIMessageBox(GetCharacterEditorTranslation("DefineRagdoll"), string.Empty, new string[] { TextManager.Get("Previous"), TextManager.Get("Create") }, new Vector2(0.65f, 1f));
|
||||
box.Header.Font = GUI.LargeFont;
|
||||
box.Content.ChildAnchor = Anchor.TopCenter;
|
||||
box.Content.AbsoluteSpacing = 20;
|
||||
int elementSize = 30;
|
||||
box.Content.AbsoluteSpacing = (int)(20 * GUI.Scale);
|
||||
int elementSize = (int)(30 * GUI.Scale);
|
||||
var frame = new GUIFrame(new RectTransform(new Point(box.Content.Rect.Width - (int)(80 * GUI.xScale), box.Content.Rect.Height - (int)(200 * GUI.yScale)),
|
||||
box.Content.RectTransform, Anchor.Center), style: null, color: ParamsEditor.Color)
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
var topGroup = new GUILayoutGroup(new RectTransform(new Vector2(1f, 0.05f), frame.RectTransform, Anchor.TopCenter), childAnchor: Anchor.TopCenter) { AbsoluteSpacing = 2 };
|
||||
var bottomGroup = new GUILayoutGroup(new RectTransform(new Vector2(1f, 0.9f), frame.RectTransform, Anchor.BottomCenter), childAnchor: Anchor.TopCenter) { AbsoluteSpacing = 10 };
|
||||
var content = new GUILayoutGroup(new RectTransform(new Vector2(1f, 0.9f), frame.RectTransform, Anchor.TopCenter), childAnchor: Anchor.TopCenter)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
// HTML
|
||||
GUIMessageBox htmlBox = null;
|
||||
var loadHtmlButton = new GUIButton(new RectTransform(new Point(topGroup.Rect.Width / 3, elementSize), topGroup.RectTransform), GetCharacterEditorTranslation("LoadFromHTML"));
|
||||
var loadHtmlButton = new GUIButton(new RectTransform(new Point(content.Rect.Width / 3, elementSize), content.RectTransform), GetCharacterEditorTranslation("LoadFromHTML"));
|
||||
// Limbs
|
||||
var limbsElement = new GUIFrame(new RectTransform(new Vector2(1, 0.05f), bottomGroup.RectTransform), style: null) { CanBeFocused = false };
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.2f, 1f), limbsElement.RectTransform), $"{GetCharacterEditorTranslation("Limbs")}: ");
|
||||
var limbButtonElement = new GUIFrame(new RectTransform(new Vector2(0.8f, 1f), limbsElement.RectTransform)
|
||||
{ RelativeOffset = new Vector2(0.1f, 0) }, style: null)
|
||||
{ CanBeFocused = false };
|
||||
var limbEditLayout = new GUILayoutGroup(new RectTransform(Vector2.One, limbButtonElement.RectTransform), isHorizontal: true) { AbsoluteSpacing = 10 };
|
||||
var limbsList = new GUIListBox(new RectTransform(new Vector2(1, 0.45f), bottomGroup.RectTransform));
|
||||
var removeLimbButton = new GUIButton(new RectTransform(new Point(limbButtonElement.Rect.Height, limbButtonElement.Rect.Height), limbEditLayout.RectTransform), "-")
|
||||
var limbsElement = new GUIFrame(new RectTransform(new Vector2(1, 0.05f), content.RectTransform), style: null) { CanBeFocused = false };
|
||||
|
||||
var limbEditLayout = new GUILayoutGroup(new RectTransform(Vector2.One, limbsElement.RectTransform), isHorizontal: true, childAnchor: Anchor.CenterLeft)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.2f, 1f), limbEditLayout.RectTransform), GetCharacterEditorTranslation("Limbs"), font: GUI.SubHeadingFont);
|
||||
var limbsList = new GUIListBox(new RectTransform(new Vector2(1, 0.45f), content.RectTransform));
|
||||
var removeLimbButton = new GUIButton(new RectTransform(new Vector2(0.05f, 1.0f), limbEditLayout.RectTransform, scaleBasis: ScaleBasis.BothHeight), style: "GUIMinusButton")
|
||||
{
|
||||
OnClicked = (b, d) =>
|
||||
{
|
||||
@@ -452,7 +466,7 @@ namespace Barotrauma.CharacterEditor
|
||||
return true;
|
||||
}
|
||||
};
|
||||
var addLimbButton = new GUIButton(new RectTransform(new Point(limbButtonElement.Rect.Height, limbButtonElement.Rect.Height), limbEditLayout.RectTransform), "+")
|
||||
var addLimbButton = new GUIButton(new RectTransform(new Vector2(0.05f, 1.0f), limbEditLayout.RectTransform, scaleBasis: ScaleBasis.BothHeight), style: "GUIPlusButton")
|
||||
{
|
||||
OnClicked = (b, d) =>
|
||||
{
|
||||
@@ -472,9 +486,7 @@ namespace Barotrauma.CharacterEditor
|
||||
};
|
||||
|
||||
int _x = 1, _y = 1, w = 100, h = 100;
|
||||
int otherElements = limbButtonElement.Rect.Width / 4 + 10 + limbButtonElement.Rect.Height * 2 + 10 + limbButtonElement.RectTransform.AbsoluteOffset.X;
|
||||
frame = new GUIFrame(new RectTransform(new Point(limbEditLayout.Rect.Width - otherElements, limbButtonElement.Rect.Height), limbEditLayout.RectTransform), color: Color.Transparent);
|
||||
var inputArea = new GUILayoutGroup(new RectTransform(Vector2.One, frame.RectTransform, Anchor.TopRight), isHorizontal: true, childAnchor: Anchor.CenterRight)
|
||||
var inputArea = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1.0f), limbEditLayout.RectTransform), isHorizontal: true)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.01f
|
||||
@@ -523,8 +535,9 @@ namespace Barotrauma.CharacterEditor
|
||||
}
|
||||
};
|
||||
}
|
||||
new GUIButton(new RectTransform(new Point(limbButtonElement.Rect.Width / 4, limbButtonElement.Rect.Height), limbEditLayout.RectTransform)
|
||||
, GetCharacterEditorTranslation("AddMultipleLimbsButton"))
|
||||
inputArea.Recalculate();
|
||||
new GUIButton(new RectTransform(new Vector2(0.15f, 1.0f), limbEditLayout.RectTransform),
|
||||
GetCharacterEditorTranslation("AddMultipleLimbsButton"))
|
||||
{
|
||||
OnClicked = (b, d) =>
|
||||
{
|
||||
@@ -532,6 +545,8 @@ namespace Barotrauma.CharacterEditor
|
||||
return true;
|
||||
}
|
||||
};
|
||||
limbsElement.RectTransform.MinSize = new Point(0, limbEditLayout.RectTransform.Children.Max(c => c.MinSize.Y));
|
||||
|
||||
// If no elements are defined, create some as default
|
||||
if (LimbGUIElements.None())
|
||||
{
|
||||
@@ -606,14 +621,14 @@ namespace Barotrauma.CharacterEditor
|
||||
}
|
||||
}
|
||||
// Joints
|
||||
new GUIFrame(new RectTransform(new Vector2(1, 0.05f), bottomGroup.RectTransform), style: null) { CanBeFocused = false };
|
||||
var jointsElement = new GUIFrame(new RectTransform(new Vector2(1, 0.05f), bottomGroup.RectTransform), style: null) { CanBeFocused = false };
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.2f, 1f), jointsElement.RectTransform), $"{GetCharacterEditorTranslation("Joints")}: ");
|
||||
new GUIFrame(new RectTransform(new Vector2(1, 0.05f), content.RectTransform), style: null) { CanBeFocused = false };
|
||||
var jointsElement = new GUIFrame(new RectTransform(new Vector2(1, 0.05f), content.RectTransform), style: null) { CanBeFocused = false };
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.2f, 1f), jointsElement.RectTransform), GetCharacterEditorTranslation("Joints"), font: GUI.SubHeadingFont);
|
||||
var jointButtonElement = new GUIFrame(new RectTransform(new Vector2(0.5f, 1f), jointsElement.RectTransform)
|
||||
{ RelativeOffset = new Vector2(0.1f, 0) }, style: null)
|
||||
{ RelativeOffset = new Vector2(0.15f, 0) }, style: null)
|
||||
{ CanBeFocused = false };
|
||||
var jointsList = new GUIListBox(new RectTransform(new Vector2(1, 0.45f), bottomGroup.RectTransform));
|
||||
var removeJointButton = new GUIButton(new RectTransform(new Point(jointButtonElement.Rect.Height, jointButtonElement.Rect.Height), jointButtonElement.RectTransform), "-")
|
||||
var jointsList = new GUIListBox(new RectTransform(new Vector2(1, 0.45f), content.RectTransform));
|
||||
var removeJointButton = new GUIButton(new RectTransform(new Point(jointButtonElement.Rect.Height, jointButtonElement.Rect.Height), jointButtonElement.RectTransform), style: "GUIMinusButton")
|
||||
{
|
||||
OnClicked = (b, d) =>
|
||||
{
|
||||
@@ -624,10 +639,10 @@ namespace Barotrauma.CharacterEditor
|
||||
return true;
|
||||
}
|
||||
};
|
||||
var addJointButton = new GUIButton(new RectTransform(new Point(jointButtonElement.Rect.Height, jointButtonElement.Rect.Height), jointButtonElement.RectTransform)
|
||||
var addJointButton = new GUIButton(new RectTransform(new Point(jointButtonElement.Rect.Height), jointButtonElement.RectTransform)
|
||||
{
|
||||
AbsoluteOffset = new Point(removeJointButton.Rect.Width + 10, 0)
|
||||
}, "+")
|
||||
}, style: "GUIPlusButton")
|
||||
{
|
||||
OnClicked = (b, d) =>
|
||||
{
|
||||
@@ -713,14 +728,14 @@ namespace Barotrauma.CharacterEditor
|
||||
LimbXElements.Values.Select(xe => xe.Attribute("type")).Where(a => a.Value.ToLowerInvariant() == "head").FirstOrDefault();
|
||||
if (main == null)
|
||||
{
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("MissingTorsoOrHead"), Color.Red);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("MissingTorsoOrHead"), GUI.Style.Red);
|
||||
return false;
|
||||
}
|
||||
if (IsHumanoid)
|
||||
{
|
||||
if (!IsValid(LimbXElements.Values, true, out string missingType))
|
||||
{
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("MissingLimbType").Replace("[limbtype]", missingType.FormatCamelCaseWithSpaces()), Color.Red);
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("MissingLimbType").Replace("[limbtype]", missingType.FormatCamelCaseWithSpaces()), GUI.Style.Red);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -810,7 +825,7 @@ namespace Barotrauma.CharacterEditor
|
||||
CanBeFocused = false
|
||||
};
|
||||
var group = new GUILayoutGroup(new RectTransform(Vector2.One, limbElement.RectTransform)) { AbsoluteSpacing = 2 };
|
||||
var label = new GUITextBlock(new RectTransform(new Point(group.Rect.Width, elementSize), group.RectTransform), name);
|
||||
var label = new GUITextBlock(new RectTransform(new Point(group.Rect.Width, elementSize), group.RectTransform), name, font: GUI.SubHeadingFont);
|
||||
var idField = new GUIFrame(new RectTransform(new Point(group.Rect.Width, elementSize), group.RectTransform), style: null);
|
||||
var nameField = new GUIFrame(new RectTransform(new Point(group.Rect.Width, elementSize), group.RectTransform), style: null);
|
||||
var limbTypeField = GUI.CreateEnumField(limbType, elementSize, GetCharacterEditorTranslation("LimbType"), group.RectTransform, font: GUI.Font);
|
||||
@@ -850,7 +865,7 @@ namespace Barotrauma.CharacterEditor
|
||||
CanBeFocused = false
|
||||
};
|
||||
var group = new GUILayoutGroup(new RectTransform(Vector2.One, jointElement.RectTransform)) { AbsoluteSpacing = 2 };
|
||||
var label = new GUITextBlock(new RectTransform(new Point(group.Rect.Width, elementSize), group.RectTransform), jointName);
|
||||
var label = new GUITextBlock(new RectTransform(new Point(group.Rect.Width, elementSize), group.RectTransform), jointName, font: GUI.SubHeadingFont);
|
||||
var nameField = new GUIFrame(new RectTransform(new Point(group.Rect.Width, elementSize), group.RectTransform), style: null);
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.5f, 1), nameField.RectTransform, Anchor.TopLeft), TextManager.Get("Name"));
|
||||
var nameInput = new GUITextBox(new RectTransform(new Vector2(0.5f, 1), nameField.RectTransform, Anchor.TopRight), jointName)
|
||||
@@ -991,7 +1006,7 @@ namespace Barotrauma.CharacterEditor
|
||||
string limbName = GetField(TextManager.Get("Name")).Parent.GetChild<GUITextBox>().Text;
|
||||
LimbType limbType = (LimbType)GetField(GetCharacterEditorTranslation("LimbType")).Parent.GetChild<GUIDropDown>().SelectedData;
|
||||
// Reverse, because the elements are created from right to left
|
||||
var rectInputs = GetField(GetCharacterEditorTranslation("SourceRectangle")).Parent.GetAllChildren().Where(c => c is GUINumberInput).Select(c => c as GUINumberInput).Reverse().ToArray();
|
||||
var rectInputs = GetField(GetCharacterEditorTranslation("SourceRectangle")).Parent.GetAllChildren<GUINumberInput>().Reverse().ToArray();
|
||||
int width = rectInputs[2].IntValue;
|
||||
int height = rectInputs[3].IntValue;
|
||||
var colliderAttributes = new List<XAttribute>();
|
||||
@@ -1042,8 +1057,8 @@ namespace Barotrauma.CharacterEditor
|
||||
int limb1ID = GetField(GetCharacterEditorTranslation("LimbWithIndex").Replace("[index]", "1")).Parent.GetChild<GUINumberInput>().IntValue;
|
||||
int limb2ID = GetField(GetCharacterEditorTranslation("LimbWithIndex").Replace("[index]", "2")).Parent.GetChild<GUINumberInput>().IntValue;
|
||||
// Reverse, because the elements are created from right to left
|
||||
var anchor1Inputs = GetField(GetCharacterEditorTranslation("LimbWithIndexAnchor").Replace("[index]", "1")).Parent.GetAllChildren().Where(c => c is GUINumberInput).Select(c => c as GUINumberInput).Reverse().ToArray();
|
||||
var anchor2Inputs = GetField(GetCharacterEditorTranslation("LimbWithIndexAnchor").Replace("[index]", "2")).Parent.GetAllChildren().Where(c => c is GUINumberInput).Select(c => c as GUINumberInput).Reverse().ToArray();
|
||||
var anchor1Inputs = GetField(GetCharacterEditorTranslation("LimbWithIndexAnchor").Replace("[index]", "1")).Parent.GetAllChildren<GUINumberInput>().Reverse().ToArray();
|
||||
var anchor2Inputs = GetField(GetCharacterEditorTranslation("LimbWithIndexAnchor").Replace("[index]", "2")).Parent.GetAllChildren<GUINumberInput>().Reverse().ToArray();
|
||||
JointXElements.Add(new XElement("joint",
|
||||
new XAttribute("name", jointName),
|
||||
new XAttribute("limb1", limb1ID),
|
||||
|
||||
@@ -17,15 +17,11 @@ namespace Barotrauma
|
||||
private RenderTarget2D renderTargetFinal;
|
||||
|
||||
private Effect damageEffect;
|
||||
private Effect postProcessEffect;
|
||||
|
||||
private Texture2D damageStencil;
|
||||
private Texture2D distortTexture;
|
||||
|
||||
public Effect PostProcessEffect
|
||||
{
|
||||
get { return postProcessEffect; }
|
||||
}
|
||||
public Effect PostProcessEffect { get; private set; }
|
||||
public Effect GradientEffect { get; private set; }
|
||||
|
||||
public GameScreen(GraphicsDevice graphics, ContentManager content)
|
||||
{
|
||||
@@ -41,11 +37,13 @@ namespace Barotrauma
|
||||
#if LINUX || OSX
|
||||
//var blurEffect = content.Load<Effect>("Effects/blurshader_opengl");
|
||||
damageEffect = content.Load<Effect>("Effects/damageshader_opengl");
|
||||
postProcessEffect = content.Load<Effect>("Effects/postprocess_opengl");
|
||||
PostProcessEffect = content.Load<Effect>("Effects/postprocess_opengl");
|
||||
GradientEffect = content.Load<Effect>("Effects/gradientshader_opengl");
|
||||
#else
|
||||
//var blurEffect = content.Load<Effect>("Effects/blurshader");
|
||||
damageEffect = content.Load<Effect>("Effects/damageshader");
|
||||
postProcessEffect = content.Load<Effect>("Effects/postprocess");
|
||||
PostProcessEffect = content.Load<Effect>("Effects/postprocess");
|
||||
GradientEffect = content.Load<Effect>("Effects/gradientshader");
|
||||
#endif
|
||||
|
||||
damageStencil = TextureLoader.FromFile("Content/Map/walldamage.png");
|
||||
@@ -54,7 +52,7 @@ namespace Barotrauma
|
||||
damageEffect.Parameters["cMultiplier"].SetValue(200.0f);
|
||||
|
||||
distortTexture = TextureLoader.FromFile("Content/Effects/distortnormals.png");
|
||||
postProcessEffect.Parameters["xDistortTexture"].SetValue(distortTexture);
|
||||
PostProcessEffect.Parameters["xDistortTexture"].SetValue(distortTexture);
|
||||
}
|
||||
|
||||
private void CreateRenderTargets(GraphicsDevice graphics)
|
||||
@@ -119,7 +117,7 @@ namespace Barotrauma
|
||||
if (Submarine.MainSubs[i] == null) continue;
|
||||
if (Level.Loaded != null && Submarine.MainSubs[i].WorldPosition.Y < Level.MaxEntityDepth) continue;
|
||||
|
||||
Color indicatorColor = i == 0 ? Color.LightBlue * 0.5f : Color.Red * 0.5f;
|
||||
Color indicatorColor = i == 0 ? Color.LightBlue * 0.5f : GUI.Style.Red * 0.5f;
|
||||
GUI.DrawIndicator(
|
||||
spriteBatch, Submarine.MainSubs[i].WorldPosition, cam,
|
||||
Math.Max(Submarine.MainSub.Borders.Width, Submarine.MainSub.Borders.Height),
|
||||
@@ -346,22 +344,22 @@ namespace Barotrauma
|
||||
if (BlurStrength > 0.0f)
|
||||
{
|
||||
postProcessTechnique += "Blur";
|
||||
postProcessEffect.Parameters["blurDistance"].SetValue(BlurStrength);
|
||||
PostProcessEffect.Parameters["blurDistance"].SetValue(BlurStrength);
|
||||
}
|
||||
if (chromaticAberrationStrength != Vector3.Zero)
|
||||
{
|
||||
postProcessTechnique += "ChromaticAberration";
|
||||
postProcessEffect.Parameters["chromaticAberrationStrength"].SetValue(chromaticAberrationStrength);
|
||||
PostProcessEffect.Parameters["chromaticAberrationStrength"].SetValue(chromaticAberrationStrength);
|
||||
}
|
||||
if (DistortStrength > 0.0f)
|
||||
{
|
||||
postProcessTechnique += "Distort";
|
||||
postProcessEffect.Parameters["distortScale"].SetValue(Vector2.One * DistortStrength);
|
||||
postProcessEffect.Parameters["distortUvOffset"].SetValue(WaterRenderer.Instance.WavePos * 0.001f);
|
||||
PostProcessEffect.Parameters["distortScale"].SetValue(Vector2.One * DistortStrength);
|
||||
PostProcessEffect.Parameters["distortUvOffset"].SetValue(WaterRenderer.Instance.WavePos * 0.001f);
|
||||
#if LINUX || OSX
|
||||
postProcessEffect.Parameters["xTexture"].SetValue(distortTexture);
|
||||
PostProcessEffect.Parameters["xTexture"].SetValue(distortTexture);
|
||||
#else
|
||||
postProcessEffect.Parameters["xTexture"].SetValue(renderTargetFinal);
|
||||
PostProcessEffect.Parameters["xTexture"].SetValue(renderTargetFinal);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -371,9 +369,9 @@ namespace Barotrauma
|
||||
}
|
||||
else
|
||||
{
|
||||
postProcessEffect.CurrentTechnique = postProcessEffect.Techniques[postProcessTechnique];
|
||||
postProcessEffect.CurrentTechnique.Passes[0].Apply();
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Opaque, SamplerState.PointClamp, DepthStencilState.None, effect: postProcessEffect);
|
||||
PostProcessEffect.CurrentTechnique = PostProcessEffect.Techniques[postProcessTechnique];
|
||||
PostProcessEffect.CurrentTechnique.Passes[0].Apply();
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Opaque, SamplerState.PointClamp, DepthStencilState.None, effect: PostProcessEffect);
|
||||
}
|
||||
#if LINUX || OSX
|
||||
spriteBatch.Draw(renderTargetFinal, new Rectangle(0, 0, GameMain.GraphicsWidth, GameMain.GraphicsHeight), Color.White);
|
||||
|
||||
@@ -44,8 +44,7 @@ namespace Barotrauma
|
||||
MaxZoom = 1.0f
|
||||
};
|
||||
|
||||
leftPanel = new GUIFrame(new RectTransform(new Vector2(0.125f, 0.8f), Frame.RectTransform) { MinSize = new Point(150, 0) },
|
||||
style: "GUIFrameLeft");
|
||||
leftPanel = new GUIFrame(new RectTransform(new Vector2(0.125f, 0.8f), Frame.RectTransform) { MinSize = new Point(150, 0) });
|
||||
var paddedLeftPanel = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.95f), leftPanel.RectTransform, Anchor.CenterLeft) { RelativeOffset = new Vector2(0.02f, 0.0f) })
|
||||
{
|
||||
Stretch = true,
|
||||
@@ -107,8 +106,7 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
|
||||
rightPanel = new GUIFrame(new RectTransform(new Vector2(0.25f, 1.0f), Frame.RectTransform, Anchor.TopRight) { MinSize = new Point(450, 0) },
|
||||
style: "GUIFrameRight");
|
||||
rightPanel = new GUIFrame(new RectTransform(new Vector2(0.25f, 1.0f), Frame.RectTransform, Anchor.TopRight) { MinSize = new Point(450, 0) });
|
||||
var paddedRightPanel = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.95f), rightPanel.RectTransform, Anchor.Center) { RelativeOffset = new Vector2(0.02f, 0.0f) })
|
||||
{
|
||||
Stretch = true,
|
||||
@@ -133,14 +131,14 @@ namespace Barotrauma
|
||||
cam.Position = new Vector2(Level.Loaded.Size.X / 2, Level.Loaded.Size.Y / 2);
|
||||
foreach (GUITextBlock param in paramsList.Content.Children)
|
||||
{
|
||||
param.TextColor = param.UserData == selectedParams ? Color.LightGreen : param.Style.textColor;
|
||||
param.TextColor = param.UserData == selectedParams ? GUI.Style.Green : param.Style.TextColor;
|
||||
}
|
||||
seedBox.Deselect();
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
bottomPanel = new GUIFrame(new RectTransform(new Vector2(0.75f, 0.2f), Frame.RectTransform, Anchor.BottomLeft)
|
||||
bottomPanel = new GUIFrame(new RectTransform(new Vector2(0.75f, 0.22f), Frame.RectTransform, Anchor.BottomLeft)
|
||||
{ MaxSize = new Point(GameMain.GraphicsWidth - rightPanel.Rect.Width, 1000) }, style: "GUIFrameBottom");
|
||||
|
||||
levelObjectList = new GUIListBox(new RectTransform(new Vector2(0.99f, 0.85f), bottomPanel.RectTransform, Anchor.Center))
|
||||
@@ -235,14 +233,14 @@ namespace Barotrauma
|
||||
editorContainer.ClearChildren();
|
||||
levelObjectList.Content.ClearChildren();
|
||||
|
||||
int objectsPerRow = (int)Math.Ceiling(levelObjectList.Content.Rect.Width / Math.Max(150 * GUI.Scale, 100));
|
||||
int objectsPerRow = (int)Math.Ceiling(levelObjectList.Content.Rect.Width / Math.Max(100 * GUI.Scale, 100));
|
||||
float relWidth = 1.0f / objectsPerRow;
|
||||
|
||||
foreach (LevelObjectPrefab levelObjPrefab in LevelObjectPrefab.List)
|
||||
{
|
||||
var frame = new GUIFrame(new RectTransform(
|
||||
new Vector2(relWidth, relWidth * ((float)levelObjectList.Content.Rect.Width / levelObjectList.Content.Rect.Height)),
|
||||
levelObjectList.Content.RectTransform) { MinSize = new Point(0, 60) }, style: "GUITextBox")
|
||||
levelObjectList.Content.RectTransform) { MinSize = new Point(0, 60) }, style: "ListBoxElementSquare")
|
||||
{
|
||||
UserData = levelObjPrefab
|
||||
};
|
||||
@@ -267,7 +265,7 @@ namespace Barotrauma
|
||||
{
|
||||
editorContainer.ClearChildren();
|
||||
|
||||
var editor = new SerializableEntityEditor(editorContainer.Content.RectTransform, levelObjectPrefab, false, true, elementHeight: 20);
|
||||
var editor = new SerializableEntityEditor(editorContainer.Content.RectTransform, levelObjectPrefab, false, true, elementHeight: 20, titleFont: GUI.LargeFont);
|
||||
|
||||
if (selectedParams != null)
|
||||
{
|
||||
@@ -319,7 +317,7 @@ namespace Barotrauma
|
||||
}
|
||||
//child object editing
|
||||
new GUITextBlock(new RectTransform(new Point(editor.Rect.Width, 40), editorContainer.Content.RectTransform),
|
||||
TextManager.Get("leveleditor.childobjects"), textAlignment: Alignment.BottomCenter);
|
||||
TextManager.Get("leveleditor.childobjects"), font: GUI.SubHeadingFont, textAlignment: Alignment.BottomCenter);
|
||||
foreach (LevelObjectPrefab.ChildObject childObj in levelObjectPrefab.ChildObjects)
|
||||
{
|
||||
var childObjFrame = new GUIFrame(new RectTransform(new Point(editor.Rect.Width, 30)));
|
||||
@@ -361,7 +359,7 @@ namespace Barotrauma
|
||||
}
|
||||
}.IntValue = childObj.MaxCount;
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(0.1f, 1.0f), paddedFrame.RectTransform), "X")
|
||||
new GUIButton(new RectTransform(new Vector2(0.1f, 1.0f), paddedFrame.RectTransform, scaleBasis: ScaleBasis.BothHeight), style: "GUICancelButton")
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
@@ -374,7 +372,8 @@ namespace Barotrauma
|
||||
childObjFrame.RectTransform.Parent = editorContainer.Content.RectTransform;
|
||||
}
|
||||
|
||||
new GUIButton(new RectTransform(new Point(editor.Rect.Width / 2, 20), editorContainer.Content.RectTransform),
|
||||
var buttonContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.01f), editorContainer.Content.RectTransform), style: null);
|
||||
new GUIButton(new RectTransform(new Point(editor.Rect.Width / 2, 20), buttonContainer.RectTransform, Anchor.Center),
|
||||
TextManager.Get("leveleditor.addchildobject"))
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
@@ -384,15 +383,17 @@ namespace Barotrauma
|
||||
return true;
|
||||
}
|
||||
};
|
||||
buttonContainer.RectTransform.MinSize = buttonContainer.RectTransform.Children.First().MinSize;
|
||||
|
||||
//light editing
|
||||
new GUITextBlock(new RectTransform(new Point(editor.Rect.Width, 40), editorContainer.Content.RectTransform),
|
||||
TextManager.Get("leveleditor.lightsources"), textAlignment: Alignment.BottomCenter);
|
||||
TextManager.Get("leveleditor.lightsources"), textAlignment: Alignment.BottomCenter, font: GUI.SubHeadingFont);
|
||||
foreach (LightSourceParams lightSourceParams in selectedLevelObject.LightSourceParams)
|
||||
{
|
||||
new SerializableEntityEditor(editorContainer.Content.RectTransform, lightSourceParams, inGame: false, showName: true);
|
||||
}
|
||||
new GUIButton(new RectTransform(new Point(editor.Rect.Width / 2, 20), editorContainer.Content.RectTransform),
|
||||
buttonContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.01f), editorContainer.Content.RectTransform), style: null);
|
||||
new GUIButton(new RectTransform(new Point(editor.Rect.Width / 2, 20), buttonContainer.RectTransform, Anchor.Center),
|
||||
TextManager.Get("leveleditor.addlightsource"))
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
@@ -403,6 +404,7 @@ namespace Barotrauma
|
||||
return true;
|
||||
}
|
||||
};
|
||||
buttonContainer.RectTransform.MinSize = buttonContainer.RectTransform.Children.First().MinSize;
|
||||
}
|
||||
|
||||
private void SortLevelObjectsList(LevelGenerationParams selectedParams)
|
||||
@@ -411,9 +413,16 @@ namespace Barotrauma
|
||||
foreach (GUIComponent levelObjFrame in levelObjectList.Content.Children)
|
||||
{
|
||||
var levelObj = levelObjFrame.UserData as LevelObjectPrefab;
|
||||
Color color = levelObj.GetCommonness(selectedParams.Name) > 0.0f ? Color.White : Color.White * 0.3f;
|
||||
levelObjFrame.Color = color;
|
||||
levelObjFrame.GetAnyChild<GUIImage>().Color = color;
|
||||
float commonness = levelObj.GetCommonness(selectedParams.Name);
|
||||
levelObjFrame.Color = commonness > 0.0f ? GUI.Style.Green * 0.4f : Color.Transparent;
|
||||
levelObjFrame.SelectedColor = commonness > 0.0f ? GUI.Style.Green * 0.6f : Color.White * 0.5f;
|
||||
levelObjFrame.HoverColor = commonness > 0.0f ? GUI.Style.Green * 0.7f : Color.White * 0.6f;
|
||||
|
||||
levelObjFrame.GetAnyChild<GUIImage>().Color = commonness > 0.0f ? Color.White : Color.DarkGray;
|
||||
if (commonness <= 0.0f)
|
||||
{
|
||||
levelObjFrame.GetAnyChild<GUITextBlock>().TextColor = Color.DarkGray;
|
||||
}
|
||||
}
|
||||
|
||||
//sort the levelobjects according to commonness in this level
|
||||
@@ -639,22 +648,22 @@ namespace Barotrauma
|
||||
{
|
||||
if (string.IsNullOrEmpty(nameBox.Text))
|
||||
{
|
||||
nameBox.Flash(Color.Red);
|
||||
GUI.AddMessage(TextManager.Get("leveleditor.levelobjnameempty"), Color.Red);
|
||||
nameBox.Flash(GUI.Style.Red);
|
||||
GUI.AddMessage(TextManager.Get("leveleditor.levelobjnameempty"), GUI.Style.Red);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (LevelObjectPrefab.List.Any(obj => obj.Name.ToLower() == nameBox.Text.ToLower()))
|
||||
{
|
||||
nameBox.Flash(Color.Red);
|
||||
GUI.AddMessage(TextManager.Get("leveleditor.levelobjnametaken"), Color.Red);
|
||||
nameBox.Flash(GUI.Style.Red);
|
||||
GUI.AddMessage(TextManager.Get("leveleditor.levelobjnametaken"), GUI.Style.Red);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!File.Exists(texturePathBox.Text))
|
||||
{
|
||||
texturePathBox.Flash(Color.Red);
|
||||
GUI.AddMessage(TextManager.Get("leveleditor.levelobjtexturenotfound"), Color.Red);
|
||||
texturePathBox.Flash(GUI.Style.Red);
|
||||
GUI.AddMessage(TextManager.Get("leveleditor.levelobjtexturenotfound"), GUI.Style.Red);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace Barotrauma
|
||||
|
||||
private readonly GUIFrame[] menuTabs;
|
||||
|
||||
private readonly CampaignSetupUI campaignSetupUI;
|
||||
private CampaignSetupUI campaignSetupUI;
|
||||
|
||||
private GUITextBox serverNameBox, /*portBox, queryPortBox,*/ passwordBox, maxPlayersBox;
|
||||
private GUITickBox isPublicBox, wrongPasswordBanBox, karmaEnabledBox;
|
||||
@@ -46,13 +46,24 @@ namespace Barotrauma
|
||||
|
||||
private readonly CreditsPlayer creditsPlayer;
|
||||
|
||||
#if OSX
|
||||
#if OSX
|
||||
private bool firstLoadOnMac = true;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#region Creation
|
||||
#region Creation
|
||||
public MainMenuScreen(GameMain game)
|
||||
{
|
||||
GameMain.Instance.OnResolutionChanged += () =>
|
||||
{
|
||||
if (Selected == this && selectedTab == Tab.Settings)
|
||||
{
|
||||
GameMain.Config.ResetSettingsFrame();
|
||||
SelectTab(Tab.Settings);
|
||||
}
|
||||
CreateHostServerFields();
|
||||
CreateCampaignSetupUI();
|
||||
};
|
||||
|
||||
backgroundVignette = new Sprite("Content/UI/MainMenuVignette.png", Vector2.Zero);
|
||||
|
||||
new GUIImage(new RectTransform(new Vector2(0.4f, 0.25f), Frame.RectTransform, Anchor.BottomRight)
|
||||
@@ -89,6 +100,8 @@ namespace Barotrauma
|
||||
FetchRemoteContent();
|
||||
#endif
|
||||
|
||||
float labelHeight = 0.18f;
|
||||
|
||||
|
||||
// === CAMPAIGN
|
||||
var campaignHolder = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 1.0f), parent: buttonsParent.RectTransform) { RelativeOffset = new Vector2(0.1f, 0.0f) }, isHorizontal: true);
|
||||
@@ -103,7 +116,7 @@ namespace Barotrauma
|
||||
|
||||
var campaignNavigation = new GUILayoutGroup(new RectTransform(new Vector2(0.75f, 0.75f), parent: campaignHolder.RectTransform) { RelativeOffset = new Vector2(0.0f, 0.25f) });
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.15f), campaignNavigation.RectTransform),
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, labelHeight), campaignNavigation.RectTransform),
|
||||
TextManager.Get("CampaignLabel"), textAlignment: Alignment.Left, font: GUI.LargeFont, textColor: Color.Black, style: "MainMenuGUITextBlock") { ForceUpperCase = true };
|
||||
|
||||
var campaignButtons = new GUIFrame(new RectTransform(new Vector2(1.0f, 1.0f), parent: campaignNavigation.RectTransform), style: "MainMenuGUIFrame");
|
||||
@@ -160,7 +173,7 @@ namespace Barotrauma
|
||||
|
||||
var multiplayerNavigation = new GUILayoutGroup(new RectTransform(new Vector2(0.75f, 0.75f), parent: multiplayerHolder.RectTransform) { RelativeOffset = new Vector2(0.0f, 0.25f) });
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.15f), multiplayerNavigation.RectTransform),
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, labelHeight), multiplayerNavigation.RectTransform),
|
||||
TextManager.Get("MultiplayerLabel"), textAlignment: Alignment.Left, font: GUI.LargeFont, textColor: Color.Black, style: "MainMenuGUITextBlock") { ForceUpperCase = true };
|
||||
|
||||
var multiplayerButtons = new GUIFrame(new RectTransform(new Vector2(1.0f, 1.0f), parent: multiplayerNavigation.RectTransform), style: "MainMenuGUIFrame");
|
||||
@@ -205,7 +218,7 @@ namespace Barotrauma
|
||||
|
||||
var customizeNavigation = new GUILayoutGroup(new RectTransform(new Vector2(0.75f, 0.75f), parent: customizeHolder.RectTransform) { RelativeOffset = new Vector2(0.0f, 0.25f) });
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.15f), customizeNavigation.RectTransform),
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, labelHeight), customizeNavigation.RectTransform),
|
||||
TextManager.Get("CustomizeLabel"), textAlignment: Alignment.Left, font: GUI.LargeFont, textColor: Color.Black, style: "MainMenuGUITextBlock") { ForceUpperCase = true };
|
||||
|
||||
var customizeButtons = new GUIFrame(new RectTransform(new Vector2(1.0f, 1.0f), parent: customizeNavigation.RectTransform), style: "MainMenuGUIFrame");
|
||||
@@ -289,7 +302,7 @@ namespace Barotrauma
|
||||
//debug button for quickly starting a new round
|
||||
#if DEBUG
|
||||
new GUIButton(new RectTransform(new Point(300, 30), Frame.RectTransform, Anchor.TopRight) { AbsoluteOffset = new Point(40, 80) },
|
||||
"Quickstart (dev)", style: "GUIButtonLarge", color: Color.Red)
|
||||
"Quickstart (dev)", style: "GUIButtonLarge", color: GUI.Style.Red)
|
||||
{
|
||||
IgnoreLayoutGroups = true,
|
||||
UserData = Tab.QuickStartDev,
|
||||
@@ -300,7 +313,7 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
new GUIButton(new RectTransform(new Point(300, 30), Frame.RectTransform, Anchor.TopRight) { AbsoluteOffset = new Point(40, 130) },
|
||||
"Profiling", style: "GUIButtonLarge", color: Color.Red)
|
||||
"Profiling", style: "GUIButtonLarge", color: GUI.Style.Red)
|
||||
{
|
||||
IgnoreLayoutGroups = true,
|
||||
UserData = Tab.ProfilingTestBench,
|
||||
@@ -328,19 +341,14 @@ namespace Barotrauma
|
||||
style: null);
|
||||
|
||||
menuTabs[(int)Tab.NewGame] = new GUIFrame(new RectTransform(relativeSize, GUI.Canvas, anchor, pivot, minSize, maxSize) { RelativeOffset = relativeSpacing });
|
||||
var paddedNewGame = new GUIFrame(new RectTransform(new Vector2(0.9f, 0.9f), menuTabs[(int)Tab.NewGame].RectTransform, Anchor.Center), style: null);
|
||||
menuTabs[(int)Tab.LoadGame] = new GUIFrame(new RectTransform(relativeSize, GUI.Canvas, anchor, pivot, minSize, maxSize) { RelativeOffset = relativeSpacing });
|
||||
var paddedLoadGame = new GUIFrame(new RectTransform(new Vector2(0.9f, 0.9f), menuTabs[(int)Tab.LoadGame].RectTransform, Anchor.Center), style: null);
|
||||
|
||||
campaignSetupUI = new CampaignSetupUI(false, paddedNewGame, paddedLoadGame, Submarine.SavedSubmarines)
|
||||
{
|
||||
LoadGame = LoadGame,
|
||||
StartNewGame = StartGame
|
||||
};
|
||||
|
||||
CreateCampaignSetupUI();
|
||||
|
||||
var hostServerScale = new Vector2(0.7f, 1.2f);
|
||||
menuTabs[(int)Tab.HostServer] = new GUIFrame(new RectTransform(
|
||||
Vector2.Multiply(relativeSize, hostServerScale), GUI.Canvas, anchor, pivot, minSize.Multiply(hostServerScale), maxSize.Multiply(hostServerScale)) { RelativeOffset = relativeSpacing });
|
||||
Vector2.Multiply(relativeSize, hostServerScale), GUI.Canvas, anchor, pivot, minSize.Multiply(hostServerScale), maxSize.Multiply(hostServerScale))
|
||||
{ RelativeOffset = relativeSpacing });
|
||||
|
||||
CreateHostServerFields();
|
||||
|
||||
@@ -350,8 +358,7 @@ namespace Barotrauma
|
||||
|
||||
//PLACEHOLDER
|
||||
var tutorialList = new GUIListBox(
|
||||
new RectTransform(new Vector2(0.95f, 0.85f), menuTabs[(int)Tab.Tutorials].RectTransform, Anchor.TopCenter) { RelativeOffset = new Vector2(0.0f, 0.1f) },
|
||||
false, null, "");
|
||||
new RectTransform(new Vector2(0.95f, 0.85f), menuTabs[(int)Tab.Tutorials].RectTransform, Anchor.TopCenter) { RelativeOffset = new Vector2(0.0f, 0.1f) });
|
||||
foreach (Tutorial tutorial in Tutorial.Tutorials)
|
||||
{
|
||||
var tutorialText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.15f), tutorialList.Content.RectTransform), tutorial.DisplayName, textAlignment: Alignment.Center, font: GUI.LargeFont)
|
||||
@@ -383,7 +390,7 @@ namespace Barotrauma
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Selection
|
||||
#region Selection
|
||||
public override void Select()
|
||||
{
|
||||
base.Select();
|
||||
@@ -520,7 +527,6 @@ namespace Barotrauma
|
||||
selectedTab = 0;
|
||||
return false;
|
||||
}
|
||||
SetServerPlayStyle(PlayStyle.Serious);
|
||||
if (GameMain.Config.ShowTutorialSkipWarning)
|
||||
{
|
||||
selectedTab = 0;
|
||||
@@ -617,7 +623,7 @@ namespace Barotrauma
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void QuickStart(bool fixedSeed = false)
|
||||
public void QuickStart(bool fixedSeed = false)
|
||||
{
|
||||
if (fixedSeed)
|
||||
{
|
||||
@@ -717,7 +723,7 @@ namespace Barotrauma
|
||||
{
|
||||
if (i < completedTutorials + 1)
|
||||
{
|
||||
(tutorialList.Content.GetChild(i) as GUITextBlock).TextColor = Color.LightGreen;
|
||||
(tutorialList.Content.GetChild(i) as GUITextBlock).TextColor = GUI.Style.Green;
|
||||
#if !DEBUG
|
||||
(tutorialList.Content.GetChild(i) as GUITextBlock).CanBeFocused = true;
|
||||
#endif
|
||||
@@ -1048,12 +1054,46 @@ namespace Barotrauma
|
||||
GameMain.LobbyScreen.Select();
|
||||
}
|
||||
|
||||
#region UI Methods
|
||||
#region UI Methods
|
||||
private void CreateCampaignSetupUI()
|
||||
{
|
||||
menuTabs[(int)Tab.NewGame].ClearChildren();
|
||||
menuTabs[(int)Tab.LoadGame].ClearChildren();
|
||||
|
||||
var innerNewGame = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.9f), menuTabs[(int)Tab.NewGame].RectTransform, Anchor.Center) { RelativeOffset = new Vector2(0.0f, 0.025f) })
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
var newGameContent = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.95f), innerNewGame.RectTransform, Anchor.Center),
|
||||
style: "InnerFrame");
|
||||
|
||||
var paddedNewGame = new GUIFrame(new RectTransform(new Vector2(0.95f), newGameContent.RectTransform, Anchor.Center), style: null);
|
||||
var paddedLoadGame = new GUIFrame(new RectTransform(new Vector2(0.9f, 0.9f), menuTabs[(int)Tab.LoadGame].RectTransform, Anchor.Center) { AbsoluteOffset = new Point(0, 10) },
|
||||
style: null);
|
||||
|
||||
campaignSetupUI = new CampaignSetupUI(false, paddedNewGame, paddedLoadGame, Submarine.SavedSubmarines)
|
||||
{
|
||||
LoadGame = LoadGame,
|
||||
StartNewGame = StartGame
|
||||
};
|
||||
|
||||
var startButtonContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.05f), innerNewGame.RectTransform, Anchor.Center), style: null);
|
||||
campaignSetupUI.StartButton.RectTransform.Parent = startButtonContainer.RectTransform;
|
||||
campaignSetupUI.StartButton.RectTransform.MinSize = new Point(
|
||||
(int)(campaignSetupUI.StartButton.TextBlock.TextSize.X * 1.5f),
|
||||
campaignSetupUI.StartButton.RectTransform.MinSize.Y);
|
||||
startButtonContainer.RectTransform.MinSize = new Point(0, campaignSetupUI.StartButton.RectTransform.MinSize.Y);
|
||||
}
|
||||
|
||||
private void CreateHostServerFields()
|
||||
{
|
||||
menuTabs[(int)Tab.HostServer].ClearChildren();
|
||||
|
||||
int port = NetConfig.DefaultPort;
|
||||
int queryPort = NetConfig.DefaultQueryPort;
|
||||
int maxPlayers = 8;
|
||||
PlayStyle selectedPlayStyle = PlayStyle.Casual;
|
||||
if (File.Exists(ServerSettings.SettingsFile))
|
||||
{
|
||||
XDocument settingsDoc = XMLExtensions.TryLoadXml(ServerSettings.SettingsFile);
|
||||
@@ -1062,6 +1102,8 @@ namespace Barotrauma
|
||||
port = settingsDoc.Root.GetAttributeInt("port", port);
|
||||
queryPort = settingsDoc.Root.GetAttributeInt("queryport", queryPort);
|
||||
maxPlayers = settingsDoc.Root.GetAttributeInt("maxplayers", maxPlayers);
|
||||
string playStyleStr = settingsDoc.Root.GetAttributeString("playstyle", "Casual");
|
||||
Enum.TryParse(playStyleStr, out selectedPlayStyle);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1069,25 +1111,35 @@ namespace Barotrauma
|
||||
Alignment textAlignment = Alignment.CenterLeft;
|
||||
Vector2 textFieldSize = new Vector2(0.5f, 1.0f);
|
||||
Vector2 tickBoxSize = new Vector2(0.4f, 0.07f);
|
||||
var paddedFrame = new GUILayoutGroup(new RectTransform(new Vector2(0.85f, 0.8f), menuTabs[(int)Tab.HostServer].RectTransform, Anchor.TopCenter) { RelativeOffset = new Vector2(0.0f, 0.05f) })
|
||||
var content = new GUILayoutGroup(new RectTransform(new Vector2(0.6f, 0.9f), menuTabs[(int)Tab.HostServer].RectTransform, Anchor.Center), childAnchor: Anchor.TopCenter)
|
||||
{
|
||||
RelativeSpacing = 0.02f,
|
||||
Stretch = true
|
||||
};
|
||||
GUIComponent parent = paddedFrame;
|
||||
};
|
||||
GUIComponent parent = content;
|
||||
|
||||
new GUITextBlock(new RectTransform(textLabelSize, parent.RectTransform), TextManager.Get("HostServerButton"), textAlignment: Alignment.Center, font: GUI.LargeFont) { ForceUpperCase = true };
|
||||
|
||||
//play style -----------------------------------------------------
|
||||
|
||||
var playstyleContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.5f), parent.RectTransform), isHorizontal: true, childAnchor: Anchor.CenterLeft)
|
||||
var playstyleContainer = new GUIFrame(new RectTransform(new Vector2(1.5f, 0.1f), parent.RectTransform), style: null, color: Color.Black);
|
||||
|
||||
playstyleBanner = new GUIImage(new RectTransform(new Vector2(1.0f, 0.1f), playstyleContainer.RectTransform),
|
||||
ServerListScreen.PlayStyleBanners[0], scaleToFit: true)
|
||||
{
|
||||
Stretch = true,
|
||||
Color = Color.Black
|
||||
//RelativeSpacing = 0.02f
|
||||
UserData = PlayStyle.Serious
|
||||
};
|
||||
float bannerAspectRatio = (float) playstyleBanner.Sprite.SourceRect.Width / playstyleBanner.Sprite.SourceRect.Height;
|
||||
playstyleBanner.RectTransform.NonScaledSize = new Point(playstyleBanner.Rect.Width, (int)(playstyleBanner.Rect.Width / bannerAspectRatio));
|
||||
playstyleBanner.RectTransform.IsFixedSize = true;
|
||||
new GUIFrame(new RectTransform(Vector2.One, playstyleBanner.RectTransform), "InnerGlow", color: Color.Black);
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.15f, 0.05f), playstyleBanner.RectTransform) { RelativeOffset = new Vector2(0.01f, 0.03f) },
|
||||
"playstyle name goes here", font: GUI.SmallFont, textAlignment: Alignment.Center, textColor: Color.White, style: "GUISlopedHeader");
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(0.05f, 1.0f), playstyleContainer.RectTransform), style: "UIToggleButton")
|
||||
new GUIButton(new RectTransform(new Vector2(0.05f, 1.0f), playstyleContainer.RectTransform, Anchor.CenterLeft)
|
||||
{ RelativeOffset = new Vector2(0.02f, 0.0f), MaxSize = new Point(int.MaxValue, (int)(150 * GUI.Scale)) },
|
||||
style: "UIToggleButton")
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
@@ -1098,14 +1150,9 @@ namespace Barotrauma
|
||||
}
|
||||
}.Children.ForEach(c => c.SpriteEffects = SpriteEffects.FlipHorizontally);
|
||||
|
||||
playstyleBanner = new GUIImage(new RectTransform(new Vector2(0.8f, 1.0f), playstyleContainer.RectTransform), style: null, scaleToFit: true)
|
||||
{
|
||||
UserData = PlayStyle.Serious
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.15f, 0.05f), playstyleBanner.RectTransform) { RelativeOffset = new Vector2(0.01f, 0.06f) },
|
||||
"playstyle name goes here", font: GUI.SmallFont, textAlignment: Alignment.Center, textColor: Color.White, style: "GUISlopedHeader");
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(0.05f, 1.0f), playstyleContainer.RectTransform), style: "UIToggleButton")
|
||||
new GUIButton(new RectTransform(new Vector2(0.05f, 1.0f), playstyleContainer.RectTransform, Anchor.CenterRight)
|
||||
{ RelativeOffset = new Vector2(0.02f, 0.0f), MaxSize = new Point(int.MaxValue, (int)(150 * GUI.Scale)) },
|
||||
style: "UIToggleButton")
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
@@ -1123,24 +1170,33 @@ namespace Barotrauma
|
||||
if (playStyleStr.Length > longestPlayStyleStr.Length) { longestPlayStyleStr = playStyleStr; }
|
||||
}
|
||||
|
||||
playstyleDescription = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), playstyleBanner.RectTransform, Anchor.BottomCenter),
|
||||
"playstyle description goes here", style: null, wrap: true)
|
||||
playstyleDescription = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), playstyleContainer.RectTransform, Anchor.BottomCenter),
|
||||
longestPlayStyleStr, style: null, wrap: true)
|
||||
{
|
||||
Color = Color.Black * 0.8f,
|
||||
TextColor = Color.White
|
||||
TextColor = GUI.Style.GetComponentStyle("GUITextBlock").TextColor
|
||||
};
|
||||
playstyleDescription.Padding = Vector4.One * 10.0f * GUI.Scale;
|
||||
playstyleDescription.CalculateHeightFromText(padding: (int)(15 * GUI.Scale));
|
||||
playstyleDescription.RectTransform.MinSize = new Point(0, playstyleDescription.Rect.Height);
|
||||
playstyleDescription.RectTransform.NonScaledSize = new Point(playstyleDescription.Rect.Width, playstyleDescription.Rect.Height);
|
||||
playstyleDescription.RectTransform.IsFixedSize = true;
|
||||
playstyleContainer.RectTransform.NonScaledSize = new Point(playstyleContainer.Rect.Width, playstyleBanner.Rect.Height + playstyleDescription.Rect.Height);
|
||||
playstyleContainer.RectTransform.IsFixedSize = true;
|
||||
|
||||
SetServerPlayStyle(selectedPlayStyle);
|
||||
|
||||
//other settings -----------------------------------------------------
|
||||
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.05f), content.RectTransform), style: null);
|
||||
|
||||
var label = new GUITextBlock(new RectTransform(textLabelSize, parent.RectTransform), TextManager.Get("ServerName"), textAlignment: textAlignment);
|
||||
serverNameBox = new GUITextBox(new RectTransform(textFieldSize, label.RectTransform, Anchor.CenterRight), textAlignment: textAlignment)
|
||||
{
|
||||
MaxTextLength = NetConfig.ServerNameMaxLength,
|
||||
OverflowClip = true
|
||||
};
|
||||
label.RectTransform.MaxSize = serverNameBox.RectTransform.MaxSize;
|
||||
|
||||
/* TODO: allow lidgren servers from client?
|
||||
label = new GUITextBlock(new RectTransform(textLabelSize, parent.RectTransform), TextManager.Get("ServerPort"), textAlignment: textAlignment);
|
||||
@@ -1166,29 +1222,29 @@ namespace Barotrauma
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.1f
|
||||
};
|
||||
new GUIButton(new RectTransform(new Vector2(0.2f, 1.0f), buttonContainer.RectTransform), "-", textAlignment: Alignment.Center)
|
||||
new GUIButton(new RectTransform(new Vector2(0.2f, 1.0f), buttonContainer.RectTransform, scaleBasis: ScaleBasis.BothHeight), style: "GUIMinusButton", textAlignment: Alignment.Center)
|
||||
{
|
||||
UserData = -1,
|
||||
OnClicked = ChangeMaxPlayers
|
||||
};
|
||||
|
||||
maxPlayersBox = new GUITextBox(new RectTransform(new Vector2(0.6f, 1.0f), buttonContainer.RectTransform), textAlignment: Alignment.Center)
|
||||
{
|
||||
Text = maxPlayers.ToString(),
|
||||
// ?
|
||||
// Enabled = false
|
||||
CanBeFocused = false
|
||||
};
|
||||
new GUIButton(new RectTransform(new Vector2(0.2f, 1.0f), buttonContainer.RectTransform), "+", textAlignment: Alignment.Center)
|
||||
new GUIButton(new RectTransform(new Vector2(0.2f, 1.0f), buttonContainer.RectTransform, scaleBasis: ScaleBasis.BothHeight), style: "GUIPlusButton", textAlignment: Alignment.Center)
|
||||
{
|
||||
UserData = 1,
|
||||
OnClicked = ChangeMaxPlayers
|
||||
};
|
||||
|
||||
maxPlayersLabel.RectTransform.MaxSize = maxPlayersBox.RectTransform.MaxSize;
|
||||
|
||||
label = new GUITextBlock(new RectTransform(textLabelSize, parent.RectTransform), TextManager.Get("Password"), textAlignment: textAlignment);
|
||||
passwordBox = new GUITextBox(new RectTransform(textFieldSize, label.RectTransform, Anchor.CenterRight), textAlignment: textAlignment)
|
||||
{
|
||||
Censor = true
|
||||
};
|
||||
label.RectTransform.MaxSize = passwordBox.RectTransform.MaxSize;
|
||||
|
||||
// tickbox upper ---------------
|
||||
|
||||
@@ -1201,6 +1257,8 @@ namespace Barotrauma
|
||||
|
||||
wrongPasswordBanBox = new GUITickBox(new RectTransform(new Vector2(0.5f, 1.0f), tickboxAreaUpper.RectTransform), TextManager.Get("ServerSettingsBanAfterWrongPassword"));
|
||||
|
||||
tickboxAreaUpper.RectTransform.MaxSize = isPublicBox.RectTransform.MaxSize;
|
||||
|
||||
// tickbox lower ---------------
|
||||
|
||||
var tickboxAreaLower = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, tickBoxSize.Y), parent.RectTransform), isHorizontal: true);
|
||||
@@ -1227,30 +1285,32 @@ namespace Barotrauma
|
||||
}
|
||||
if (karmaPresetDD.SelectedIndex == -1) { karmaPresetDD.Select(0); }
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(0.4f, 0.1f), menuTabs[(int)Tab.HostServer].RectTransform, Anchor.BottomRight)
|
||||
tickboxAreaLower.RectTransform.MaxSize = karmaEnabledBox.RectTransform.MaxSize;
|
||||
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.05f), content.RectTransform), style: null);
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(0.4f, 0.07f), content.RectTransform), TextManager.Get("StartServerButton"), style: "GUIButtonLarge")
|
||||
{
|
||||
RelativeOffset = new Vector2(0.05f, 0.05f)
|
||||
}, TextManager.Get("StartServerButton"), style: "GUIButtonLarge")
|
||||
{
|
||||
IgnoreLayoutGroups = true,
|
||||
OnClicked = HostServerClicked
|
||||
};
|
||||
}
|
||||
|
||||
private void SetServerPlayStyle(PlayStyle playStyle)
|
||||
{
|
||||
playstyleBanner.Sprite = GameMain.ServerListScreen.PlayStyleBanners[(int)playStyle];
|
||||
playstyleBanner.Sprite = ServerListScreen.PlayStyleBanners[(int)playStyle];
|
||||
playstyleBanner.UserData = playStyle;
|
||||
|
||||
var nameText = playstyleBanner.GetChild<GUITextBlock>();
|
||||
nameText.Text = TextManager.AddPunctuation(':', TextManager.Get("serverplaystyle"), TextManager.Get("servertag." + playStyle));
|
||||
nameText.Color = GameMain.ServerListScreen.PlayStyleColors[(int)playStyle];
|
||||
nameText.Color = ServerListScreen.PlayStyleColors[(int)playStyle];
|
||||
nameText.RectTransform.NonScaledSize = (nameText.Font.MeasureString(nameText.Text) + new Vector2(25, 10) * GUI.Scale).ToPoint();
|
||||
|
||||
playstyleDescription.Text = TextManager.Get("servertagdescription." + playStyle);
|
||||
playstyleDescription.CalculateHeightFromText(padding: (int)(15 * GUI.Scale));
|
||||
playstyleDescription.TextAlignment = playstyleDescription.WrappedText.Contains('\n') ?
|
||||
Alignment.CenterLeft : Alignment.Center;
|
||||
}
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
private void FetchRemoteContent()
|
||||
{
|
||||
|
||||
@@ -13,9 +13,10 @@ namespace Barotrauma
|
||||
partial class NetLobbyScreen : Screen
|
||||
{
|
||||
private readonly List<Sprite> characterSprites = new List<Sprite>();
|
||||
private readonly List<Sprite> jobPreferenceSprites = new List<Sprite>();
|
||||
//private readonly List<Sprite> jobPreferenceSprites = new List<Sprite>();
|
||||
|
||||
private GUIFrame infoFrame, modeFrame;
|
||||
private GUILayoutGroup infoFrameContent;
|
||||
private GUIFrame myCharacterFrame;
|
||||
|
||||
private GUIListBox subList, modeList;
|
||||
@@ -120,7 +121,7 @@ namespace Barotrauma
|
||||
(GameMain.Client != null && GameMain.Client.HasPermission(ClientPermissions.SelectSub));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public GUITextBox ServerName
|
||||
{
|
||||
get;
|
||||
@@ -334,25 +335,25 @@ namespace Barotrauma
|
||||
RelativeSpacing = panelSpacing
|
||||
};
|
||||
|
||||
GUILayoutGroup bottomBar = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), innerFrame.RectTransform))
|
||||
GUILayoutGroup bottomBar = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), innerFrame.RectTransform), childAnchor: Anchor.CenterLeft)
|
||||
{
|
||||
Stretch = true,
|
||||
IsHorizontal = true,
|
||||
RelativeSpacing = panelSpacing
|
||||
};
|
||||
GUILayoutGroup bottomBarLeft = new GUILayoutGroup(new RectTransform(new Vector2(0.3f, 1.0f), bottomBar.RectTransform))
|
||||
GUILayoutGroup bottomBarLeft = new GUILayoutGroup(new RectTransform(new Vector2(0.3f, 1.0f), bottomBar.RectTransform), childAnchor: Anchor.CenterLeft)
|
||||
{
|
||||
Stretch = true,
|
||||
IsHorizontal = true,
|
||||
RelativeSpacing = panelSpacing
|
||||
};
|
||||
GUILayoutGroup bottomBarMid = new GUILayoutGroup(new RectTransform(new Vector2(0.4f, 1.0f), bottomBar.RectTransform))
|
||||
GUILayoutGroup bottomBarMid = new GUILayoutGroup(new RectTransform(new Vector2(0.4f, 1.0f), bottomBar.RectTransform), childAnchor: Anchor.CenterLeft)
|
||||
{
|
||||
Stretch = true,
|
||||
IsHorizontal = true,
|
||||
RelativeSpacing = panelSpacing
|
||||
};
|
||||
GUILayoutGroup bottomBarRight = new GUILayoutGroup(new RectTransform(new Vector2(0.3f, 1.0f), bottomBar.RectTransform))
|
||||
GUILayoutGroup bottomBarRight = new GUILayoutGroup(new RectTransform(new Vector2(0.3f, 1.0f), bottomBar.RectTransform), childAnchor: Anchor.CenterLeft)
|
||||
{
|
||||
Stretch = true,
|
||||
IsHorizontal = true,
|
||||
@@ -362,7 +363,7 @@ namespace Barotrauma
|
||||
//server info panel ------------------------------------------------------------
|
||||
|
||||
infoFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.5f), panelHolder.RectTransform));
|
||||
var infoFrameContent = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.9f), infoFrame.RectTransform, Anchor.Center))
|
||||
infoFrameContent = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.9f), infoFrame.RectTransform, Anchor.Center))
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.025f
|
||||
@@ -383,7 +384,7 @@ namespace Barotrauma
|
||||
campaignViewButton = new GUIButton(new RectTransform(new Vector2(0.25f, 1.4f), gameModeTabButtonContainer.RectTransform),
|
||||
TextManager.Get("CampaignLabel"), style: "GUITabButton")
|
||||
{
|
||||
Visible = false,
|
||||
Enabled = false,
|
||||
OnClicked = (bt, userData) => { ToggleCampaignView(true); return true; }
|
||||
};
|
||||
|
||||
@@ -396,7 +397,7 @@ namespace Barotrauma
|
||||
|
||||
gameModeContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.9f), modeFrame.RectTransform, Anchor.Center))
|
||||
{
|
||||
RelativeSpacing = panelSpacing * 2.0f,
|
||||
RelativeSpacing = panelSpacing * 4.0f,
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
@@ -405,7 +406,7 @@ namespace Barotrauma
|
||||
Visible = false
|
||||
};
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(0.5f, 1.0f), bottomBarLeft.RectTransform), TextManager.Get("disconnect"), style: "GUIButtonLarge")
|
||||
new GUIButton(new RectTransform(new Vector2(0.5f, 1.0f), bottomBarLeft.RectTransform), TextManager.Get("disconnect"))
|
||||
{
|
||||
OnClicked = (bt, userdata) => { GameMain.QuitToMainMenu(save: false, showVerificationPrompt: true); return true; }
|
||||
};
|
||||
@@ -440,6 +441,7 @@ namespace Barotrauma
|
||||
|
||||
GUILayoutGroup sideBar = new GUILayoutGroup(new RectTransform(new Vector2(0.3f, 1.0f), panelContainer.RectTransform, maxSize: new Point(650, panelContainer.RectTransform.Rect.Height)))
|
||||
{
|
||||
RelativeSpacing = panelSpacing,
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
@@ -456,7 +458,7 @@ namespace Barotrauma
|
||||
myCharacterFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.5f), sideBar.RectTransform));
|
||||
playerInfoContainer = new GUIFrame(new RectTransform(new Vector2(0.9f, 0.9f), myCharacterFrame.RectTransform, Anchor.Center), style: null);
|
||||
|
||||
spectateBox = new GUITickBox(new RectTransform(new Vector2(0.06f, 0.06f), myCharacterFrame.RectTransform) { RelativeOffset = new Vector2(0.05f,0.05f) },
|
||||
spectateBox = new GUITickBox(new RectTransform(new Vector2(0.06f, 0.06f), myCharacterFrame.RectTransform) { RelativeOffset = new Vector2(0.05f, 0.05f) },
|
||||
TextManager.Get("spectatebutton"))
|
||||
{
|
||||
Selected = false,
|
||||
@@ -464,6 +466,9 @@ namespace Barotrauma
|
||||
UserData = "spectate"
|
||||
};
|
||||
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, gameModeTabButtonContainer.RectTransform.RelativeSize.Y), sideBar.RectTransform), style: null);
|
||||
|
||||
// Social area
|
||||
|
||||
GUIFrame logBackground = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.5f), sideBar.RectTransform));
|
||||
@@ -645,6 +650,9 @@ namespace Barotrauma
|
||||
};
|
||||
clientHiddenElements.Add(StartButton);
|
||||
|
||||
bottomBar.RectTransform.MinSize =
|
||||
new Point(0, (int)Math.Max(ReadyToStartBox.RectTransform.MinSize.Y / 0.75f, StartButton.RectTransform.MinSize.Y));
|
||||
|
||||
//autorestart ------------------------------------------------------------------
|
||||
|
||||
autoRestartText = new GUITextBlock(new RectTransform(Vector2.One, bottomBarMid.RectTransform), "", font: GUI.SmallFont, style: "TextFrame", textAlignment: Alignment.Center);
|
||||
@@ -666,8 +674,10 @@ namespace Barotrauma
|
||||
//server info ------------------------------------------------------------------
|
||||
|
||||
// Server Info Header
|
||||
GUILayoutGroup lobbyHeader = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.1f), infoFrameContent.RectTransform), isHorizontal: true)
|
||||
GUILayoutGroup lobbyHeader = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.1f), infoFrameContent.RectTransform),
|
||||
isHorizontal: true, childAnchor: Anchor.CenterLeft)
|
||||
{
|
||||
RelativeSpacing = 0.05f,
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
@@ -683,10 +693,12 @@ namespace Barotrauma
|
||||
clientDisabledElements.Add(ServerName);
|
||||
|
||||
SettingsButton = new GUIButton(new RectTransform(new Vector2(0.25f, 1.0f), lobbyHeader.RectTransform, Anchor.TopRight),
|
||||
TextManager.Get("ServerSettingsButton"), style: "GUIButtonLarge");
|
||||
TextManager.Get("ServerSettingsButton"));
|
||||
clientHiddenElements.Add(SettingsButton);
|
||||
|
||||
GUILayoutGroup lobbyContent = new GUILayoutGroup(new RectTransform(Vector2.One, infoFrameContent.RectTransform), isHorizontal: true)
|
||||
lobbyHeader.RectTransform.MinSize = new Point(0, Math.Max(ServerName.Rect.Height, SettingsButton.Rect.Height));
|
||||
|
||||
GUILayoutGroup lobbyContent = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.9f), infoFrameContent.RectTransform), isHorizontal: true)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.025f
|
||||
@@ -709,14 +721,14 @@ namespace Barotrauma
|
||||
};
|
||||
|
||||
var serverMessageContainer = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.75f), serverInfoHolder.RectTransform));
|
||||
ServerMessage = new GUITextBox(new RectTransform(Vector2.One, serverMessageContainer.Content.RectTransform))
|
||||
ServerMessage = new GUITextBox(new RectTransform(Vector2.One, serverMessageContainer.Content.RectTransform), style: "GUITextBoxNoBorder")
|
||||
{
|
||||
Wrap = true
|
||||
};
|
||||
ServerMessage.OnTextChanged += (textBox, text) =>
|
||||
{
|
||||
Vector2 textSize = textBox.Font.MeasureString(textBox.WrappedText);
|
||||
textBox.RectTransform.NonScaledSize = new Point(textBox.RectTransform.NonScaledSize.X, Math.Max(serverMessageContainer.Rect.Height, (int)textSize.Y + 10));
|
||||
textBox.RectTransform.NonScaledSize = new Point(textBox.RectTransform.NonScaledSize.X, Math.Max(serverMessageContainer.Content.Rect.Height, (int)textSize.Y + 10));
|
||||
serverMessageContainer.UpdateScrollBarSize();
|
||||
serverMessageContainer.BarScroll = 1.0f;
|
||||
return true;
|
||||
@@ -735,7 +747,7 @@ namespace Barotrauma
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
var subLabel = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.055f), subHolder.RectTransform) { MinSize = new Point(0, 25) }, TextManager.Get("Submarine"));
|
||||
var subLabel = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.055f), subHolder.RectTransform) { MinSize = new Point(0, 25) }, TextManager.Get("Submarine"), font: GUI.SubHeadingFont);
|
||||
subList = new GUIListBox(new RectTransform(Vector2.One, subHolder.RectTransform))
|
||||
{
|
||||
OnSelected = VotableClicked
|
||||
@@ -756,7 +768,7 @@ namespace Barotrauma
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
GUILayoutGroup shuttleHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), rightColumn.RectTransform) { MinSize = new Point(0, 25) }, isHorizontal: true)
|
||||
GUILayoutGroup shuttleHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), rightColumn.RectTransform), isHorizontal: true)
|
||||
{
|
||||
Stretch = true
|
||||
};
|
||||
@@ -790,26 +802,26 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
shuttleList.ListBox.RectTransform.MinSize = new Point(250, 0);
|
||||
shuttleHolder.RectTransform.MinSize = new Point(0, shuttleList.RectTransform.Children.Max(c => c.MinSize.Y));
|
||||
|
||||
subPreviewContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.9f), rightColumn.RectTransform), style: null);
|
||||
subPreviewContainer.RectTransform.SizeChanged += () =>
|
||||
{
|
||||
if (SelectedSub != null)
|
||||
{
|
||||
subPreviewContainer.ClearChildren();
|
||||
SelectedSub.CreatePreviewWindow(subPreviewContainer);
|
||||
}
|
||||
if (SelectedSub != null) { CreateSubPreview(SelectedSub); }
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Gamemode panel
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
GUILayoutGroup miscSettingsHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.075f), gameModeContainer.RectTransform), isHorizontal: true)
|
||||
GUILayoutGroup miscSettingsHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.1f), gameModeContainer.RectTransform),
|
||||
isHorizontal: true, childAnchor: Anchor.CenterLeft)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.01f
|
||||
};
|
||||
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.01f), gameModeContainer.RectTransform), style: "HorizontalLine");
|
||||
|
||||
miscSettingsHolder.RectTransform.SizeChanged += () =>
|
||||
{
|
||||
@@ -833,7 +845,7 @@ namespace Barotrauma
|
||||
|
||||
//seed ------------------------------------------------------------------
|
||||
|
||||
var seedLabel = new GUITextBlock(new RectTransform(Vector2.One, miscSettingsHolder.RectTransform), TextManager.Get("LevelSeed"));
|
||||
var seedLabel = new GUITextBlock(new RectTransform(Vector2.One, miscSettingsHolder.RectTransform), TextManager.Get("LevelSeed"), font: GUI.SubHeadingFont);
|
||||
seedLabel.RectTransform.MaxSize = new Point((int)(seedLabel.TextSize.X + 30 * GUI.Scale), int.MaxValue);
|
||||
SeedBox = new GUITextBox(new RectTransform(new Vector2(0.25f, 1.0f), miscSettingsHolder.RectTransform));
|
||||
SeedBox.OnDeselected += (textBox, key) =>
|
||||
@@ -845,11 +857,11 @@ namespace Barotrauma
|
||||
|
||||
//level difficulty ------------------------------------------------------------------
|
||||
|
||||
var difficultyLabel = new GUITextBlock(new RectTransform(Vector2.One, miscSettingsHolder.RectTransform), TextManager.Get("LevelDifficulty"))
|
||||
var difficultyLabel = new GUITextBlock(new RectTransform(Vector2.One, miscSettingsHolder.RectTransform), TextManager.Get("LevelDifficulty"), font: GUI.SubHeadingFont)
|
||||
{
|
||||
ToolTip = TextManager.Get("leveldifficultyexplanation")
|
||||
};
|
||||
levelDifficultyScrollBar = new GUIScrollBar(new RectTransform(new Vector2(0.25f, 1.0f), miscSettingsHolder.RectTransform), barSize: 0.2f)
|
||||
levelDifficultyScrollBar = new GUIScrollBar(new RectTransform(new Vector2(0.25f, 1.0f), miscSettingsHolder.RectTransform), style: "GUISlider", barSize: 0.2f)
|
||||
{
|
||||
Step = 0.05f,
|
||||
Range = new Vector2(0.0f, 100.0f),
|
||||
@@ -869,7 +881,7 @@ namespace Barotrauma
|
||||
{
|
||||
if (EventManagerSettings.List.Count == 0) { return true; }
|
||||
difficultyName.Text = EventManagerSettings.List[Math.Min((int)Math.Floor(value * EventManagerSettings.List.Count), EventManagerSettings.List.Count - 1)].Name;
|
||||
difficultyName.TextColor = Color.Lerp(ToolBox.GradientLerp(scrollbar.BarScroll, Color.LightGreen, Color.Orange, Color.Red), difficultyLabel.TextColor, 0.5f);
|
||||
difficultyName.TextColor = ToolBox.GradientLerp(scrollbar.BarScroll, GUI.Style.Green, GUI.Style.Orange, GUI.Style.Red);
|
||||
return true;
|
||||
};
|
||||
|
||||
@@ -888,7 +900,7 @@ namespace Barotrauma
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
var modeLabel = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.055f), gameModeHolder.RectTransform) { MinSize = new Point(0, 25) }, TextManager.Get("GameMode"));
|
||||
var modeLabel = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.055f), gameModeHolder.RectTransform) { MinSize = new Point(0, 25) }, TextManager.Get("GameMode"), font: GUI.SubHeadingFont);
|
||||
voteText = new GUITextBlock(new RectTransform(new Vector2(0.5f, 1.0f), modeLabel.RectTransform, Anchor.TopRight),
|
||||
TextManager.Get("Votes"), textAlignment: Alignment.CenterRight)
|
||||
{
|
||||
@@ -904,12 +916,31 @@ namespace Barotrauma
|
||||
{
|
||||
if (mode.IsSinglePlayer) { continue; }
|
||||
|
||||
GUITextBlock textBlock = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), modeList.Content.RectTransform) { MinSize = new Point(0, (int)(30 * GUI.Scale)) },
|
||||
mode.Name, style: "ListBoxElement", textAlignment: Alignment.CenterLeft)
|
||||
var modeFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.15f), modeList.Content.RectTransform), style: null)
|
||||
{
|
||||
UserData = mode,
|
||||
UserData = mode
|
||||
};
|
||||
|
||||
var modeContent = new GUILayoutGroup(new RectTransform(new Vector2(0.75f, 0.9f), modeFrame.RectTransform, Anchor.CenterRight) { RelativeOffset = new Vector2(0.02f, 0.0f) })
|
||||
{
|
||||
AbsoluteSpacing = (int)(5 * GUI.Scale),
|
||||
Stretch = true
|
||||
};
|
||||
textBlock.ToolTip = mode.Description;
|
||||
|
||||
var modeTitle = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), modeContent.RectTransform), mode.Name, font: GUI.SubHeadingFont);
|
||||
var modeDescription = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), modeContent.RectTransform), mode.Description, font: GUI.SmallFont, wrap: true);
|
||||
modeTitle.HoverColor = modeDescription.HoverColor = modeTitle.SelectedColor = modeDescription.SelectedColor = Color.Transparent;
|
||||
modeTitle.HoverTextColor = modeDescription.HoverTextColor = modeTitle.TextColor;
|
||||
modeTitle.TextColor = modeDescription.TextColor = modeTitle.TextColor * 0.5f;
|
||||
modeFrame.OnAddedToGUIUpdateList = (c) =>
|
||||
{
|
||||
modeTitle.State = modeDescription.State = c.State;
|
||||
};
|
||||
|
||||
new GUIImage(new RectTransform(new Vector2(0.2f, 0.8f), modeFrame.RectTransform, Anchor.CenterLeft) { RelativeOffset = new Vector2(0.02f, 0.0f) },
|
||||
style: "GameModeIcon." + mode.Identifier, scaleToFit: true);
|
||||
|
||||
modeFrame.RectTransform.MinSize = new Point(0, (int)(modeContent.Children.Sum(c => c.Rect.Height + modeContent.AbsoluteSpacing) / modeContent.RectTransform.RelativeSize.Y));
|
||||
}
|
||||
|
||||
var gameModeSpecificFrame = new GUIFrame(new RectTransform(new Vector2(0.333f, 1.0f), gameModeBackground.RectTransform), style: null);
|
||||
@@ -926,7 +957,8 @@ namespace Barotrauma
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.055f), missionHolder.RectTransform) { MinSize = new Point(0, 25) }, TextManager.Get("MissionType"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.055f), missionHolder.RectTransform) { MinSize = new Point(0, 25) },
|
||||
TextManager.Get("MissionType"), font: GUI.SubHeadingFont);
|
||||
missionTypeList = new GUIListBox(new RectTransform(Vector2.One, missionHolder.RectTransform))
|
||||
{
|
||||
OnSelected = (component, obj) =>
|
||||
@@ -958,6 +990,7 @@ namespace Barotrauma
|
||||
return true;
|
||||
}
|
||||
};
|
||||
frame.RectTransform.MinSize = missionTypeTickBoxes[index].RectTransform.MinSize;
|
||||
|
||||
index++;
|
||||
}
|
||||
@@ -972,22 +1005,19 @@ namespace Barotrauma
|
||||
};
|
||||
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.055f), settingsHolder.RectTransform) { MinSize = new Point(0, 25) }, style: null);
|
||||
var settingsContent = new GUILayoutGroup(new RectTransform(Vector2.One, settingsHolder.RectTransform))
|
||||
var settingsFrame = new GUIFrame(new RectTransform(Vector2.One, settingsHolder.RectTransform), style: "InnerFrame");
|
||||
var settingsContent = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.95f), settingsFrame.RectTransform, Anchor.Center))
|
||||
{
|
||||
RelativeSpacing = 0.025f
|
||||
};
|
||||
new GUIFrame(new RectTransform(Vector2.One, settingsContent.RectTransform), style: "InnerFrame")
|
||||
{
|
||||
IgnoreLayoutGroups = true
|
||||
};
|
||||
|
||||
var traitorsSettingHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.1f), settingsContent.RectTransform), isHorizontal: true) { Stretch = true };
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.7f, 1.0f), traitorsSettingHolder.RectTransform), TextManager.Get("Traitors"));
|
||||
|
||||
var traitorProbContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1.0f), traitorsSettingHolder.RectTransform), isHorizontal: true) { Stretch = true };
|
||||
var traitorProbContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1.0f), traitorsSettingHolder.RectTransform), isHorizontal: true, childAnchor: Anchor.CenterLeft) { RelativeSpacing = 0.05f, Stretch = true };
|
||||
traitorProbabilityButtons = new GUIButton[2];
|
||||
traitorProbabilityButtons[0] = new GUIButton(new RectTransform(new Vector2(0.15f, 1.0f), traitorProbContainer.RectTransform), "<")
|
||||
traitorProbabilityButtons[0] = new GUIButton(new RectTransform(new Vector2(0.15f, 1.0f), traitorProbContainer.RectTransform), style: "GUIButtonToggleLeft")
|
||||
{
|
||||
OnClicked = (button, obj) =>
|
||||
{
|
||||
@@ -997,8 +1027,9 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
|
||||
traitorProbabilityText = new GUITextBlock(new RectTransform(new Vector2(0.7f, 1.0f), traitorProbContainer.RectTransform), TextManager.Get("No"), textAlignment: Alignment.Center);
|
||||
traitorProbabilityButtons[1] = new GUIButton(new RectTransform(new Vector2(0.15f, 1.0f), traitorProbContainer.RectTransform), ">")
|
||||
traitorProbabilityText = new GUITextBlock(new RectTransform(new Vector2(0.7f, 1.0f), traitorProbContainer.RectTransform), TextManager.Get("No"),
|
||||
textAlignment: Alignment.Center, style: "GUITextBox");
|
||||
traitorProbabilityButtons[1] = new GUIButton(new RectTransform(new Vector2(0.15f, 1.0f), traitorProbContainer.RectTransform), style: "GUIButtonToggleRight")
|
||||
{
|
||||
OnClicked = (button, obj) =>
|
||||
{
|
||||
@@ -1015,9 +1046,9 @@ namespace Barotrauma
|
||||
var botCountSettingHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.1f), settingsContent.RectTransform), isHorizontal: true) { Stretch = true };
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.7f, 1.0f), botCountSettingHolder.RectTransform), TextManager.Get("BotCount"));
|
||||
var botCountContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1.0f), botCountSettingHolder.RectTransform), isHorizontal: true) { Stretch = true };
|
||||
var botCountContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1.0f), botCountSettingHolder.RectTransform), isHorizontal: true, childAnchor: Anchor.CenterLeft) { RelativeSpacing = 0.05f, Stretch = true };
|
||||
botCountButtons = new GUIButton[2];
|
||||
botCountButtons[0] = new GUIButton(new RectTransform(new Vector2(0.15f, 1.0f), botCountContainer.RectTransform), "<")
|
||||
botCountButtons[0] = new GUIButton(new RectTransform(new Vector2(0.15f, 1.0f), botCountContainer.RectTransform), style: "GUIButtonToggleLeft")
|
||||
{
|
||||
OnClicked = (button, obj) =>
|
||||
{
|
||||
@@ -1026,8 +1057,8 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
|
||||
botCountText = new GUITextBlock(new RectTransform(new Vector2(0.7f, 1.0f), botCountContainer.RectTransform), "0", textAlignment: Alignment.Center);
|
||||
botCountButtons[1] = new GUIButton(new RectTransform(new Vector2(0.15f, 1.0f), botCountContainer.RectTransform), ">")
|
||||
botCountText = new GUITextBlock(new RectTransform(new Vector2(0.7f, 1.0f), botCountContainer.RectTransform), "0", textAlignment: Alignment.Center, style: "GUITextBox");
|
||||
botCountButtons[1] = new GUIButton(new RectTransform(new Vector2(0.15f, 1.0f), botCountContainer.RectTransform), style: "GUIButtonToggleRight")
|
||||
{
|
||||
OnClicked = (button, obj) =>
|
||||
{
|
||||
@@ -1040,10 +1071,10 @@ namespace Barotrauma
|
||||
|
||||
var botSpawnModeSettingHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.1f), settingsContent.RectTransform), isHorizontal: true) { Stretch = true };
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.7f, 1.0f), botSpawnModeSettingHolder.RectTransform), TextManager.Get("BotSpawnMode"));
|
||||
var botSpawnModeContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1.0f), botSpawnModeSettingHolder.RectTransform), isHorizontal: true) { Stretch = true };
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.7f, 1.0f), botSpawnModeSettingHolder.RectTransform), TextManager.Get("BotSpawnMode"), wrap: true);
|
||||
var botSpawnModeContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1.0f), botSpawnModeSettingHolder.RectTransform), isHorizontal: true, childAnchor: Anchor.CenterLeft) { RelativeSpacing = 0.05f, Stretch = true };
|
||||
botSpawnModeButtons = new GUIButton[2];
|
||||
botSpawnModeButtons[0] = new GUIButton(new RectTransform(new Vector2(0.15f, 1.0f), botSpawnModeContainer.RectTransform), "<")
|
||||
botSpawnModeButtons[0] = new GUIButton(new RectTransform(new Vector2(0.15f, 1.0f), botSpawnModeContainer.RectTransform), style: "GUIButtonToggleLeft")
|
||||
{
|
||||
OnClicked = (button, obj) =>
|
||||
{
|
||||
@@ -1052,8 +1083,8 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
|
||||
botSpawnModeText = new GUITextBlock(new RectTransform(new Vector2(0.7f, 1.0f), botSpawnModeContainer.RectTransform), "", textAlignment: Alignment.Center);
|
||||
botSpawnModeButtons[1] = new GUIButton(new RectTransform(new Vector2(0.15f, 1.0f), botSpawnModeContainer.RectTransform), ">")
|
||||
botSpawnModeText = new GUITextBlock(new RectTransform(new Vector2(0.7f, 1.0f), botSpawnModeContainer.RectTransform), "", textAlignment: Alignment.Center, style: "GUITextBox");
|
||||
botSpawnModeButtons[1] = new GUIButton(new RectTransform(new Vector2(0.15f, 1.0f), botSpawnModeContainer.RectTransform), style: "GUIButtonToggleRight")
|
||||
{
|
||||
OnClicked = (button, obj) =>
|
||||
{
|
||||
@@ -1129,8 +1160,8 @@ namespace Barotrauma
|
||||
foreach (Sprite sprite in characterSprites) { sprite.Remove(); }
|
||||
characterSprites.Clear();
|
||||
|
||||
foreach (Sprite sprite in jobPreferenceSprites) { sprite.Remove(); }
|
||||
jobPreferenceSprites.Clear();
|
||||
/*foreach (Sprite sprite in jobPreferenceSprites) { sprite.Remove(); }
|
||||
jobPreferenceSprites.Clear();*/
|
||||
}
|
||||
|
||||
public override void Select()
|
||||
@@ -1140,6 +1171,8 @@ namespace Barotrauma
|
||||
if (HeadSelectionList != null) { HeadSelectionList.Visible = false; }
|
||||
if (JobSelectionFrame != null) { JobSelectionFrame.Visible = false; }
|
||||
|
||||
infoFrameContent.Recalculate();
|
||||
|
||||
Character.Controlled = null;
|
||||
GameMain.LightManager.LosEnabled = false;
|
||||
|
||||
@@ -1387,7 +1420,7 @@ namespace Barotrauma
|
||||
break;
|
||||
}
|
||||
|
||||
var slot = new GUIFrame(new RectTransform(new Vector2(0.333f, 1.0f), JobList.Content.RectTransform), style: "ListBoxElement")
|
||||
var slot = new GUIFrame(new RectTransform(new Vector2(0.333f, 1.0f), JobList.Content.RectTransform), style: "ListBoxElementSquare")
|
||||
{
|
||||
CanBeFocused = true,
|
||||
UserData = jobPrefab
|
||||
@@ -1404,7 +1437,11 @@ namespace Barotrauma
|
||||
}
|
||||
else
|
||||
{
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.15f), infoContainer.RectTransform), characterInfo.Job.Name, textAlignment: Alignment.Center, wrap: true);
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.15f), infoContainer.RectTransform), characterInfo.Job.Name, textAlignment: Alignment.Center, wrap: true)
|
||||
{
|
||||
HoverColor = Color.Transparent,
|
||||
SelectedColor = Color.Transparent
|
||||
};
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.1f), infoContainer.RectTransform), TextManager.Get("Skills"));
|
||||
foreach (Skill skill in characterInfo.Job.Skills)
|
||||
@@ -1546,16 +1583,6 @@ namespace Barotrauma
|
||||
{
|
||||
subTextBlock.TextColor = new Color(subTextBlock.TextColor, sub.HasTag(SubmarineTag.Shuttle) ? 1.0f : 0.6f);
|
||||
}
|
||||
|
||||
/*GUIButton infoButton = new GUIButton(new RectTransform(new Point(buttonSize, buttonSize), frame.RectTransform, Anchor.CenterLeft) { AbsoluteOffset = new Point((int)(buttonSize * 0.2f), 0) }, "?")
|
||||
{
|
||||
UserData = sub
|
||||
};
|
||||
infoButton.OnClicked += (component, userdata) =>
|
||||
{
|
||||
((Submarine)userdata).CreatePreviewWindow(new GUIMessageBox("", "", new Vector2(0.25f, 0.25f), new Point(500, 400)));
|
||||
return true;
|
||||
};*/
|
||||
}
|
||||
|
||||
if (!sub.RequiredContentPackagesInstalled)
|
||||
@@ -1622,8 +1649,7 @@ namespace Barotrauma
|
||||
}
|
||||
if (component.UserData is Submarine sub)
|
||||
{
|
||||
subPreviewContainer.ClearChildren();
|
||||
sub.CreatePreviewWindow(subPreviewContainer);
|
||||
CreateSubPreview(sub);
|
||||
}
|
||||
voteType = VoteType.Sub;
|
||||
}
|
||||
@@ -1814,7 +1840,7 @@ namespace Barotrauma
|
||||
playerFrame.UserData = selectedClient;
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), paddedPlayerFrame.RectTransform),
|
||||
TextManager.Get("Rank"));
|
||||
TextManager.Get("Rank"), font: GUI.SubHeadingFont);
|
||||
var rankDropDown = new GUIDropDown(new RectTransform(new Vector2(1.0f, 0.1f), paddedPlayerFrame.RectTransform),
|
||||
TextManager.Get("Rank"))
|
||||
{
|
||||
@@ -1847,13 +1873,14 @@ namespace Barotrauma
|
||||
return true;
|
||||
};
|
||||
|
||||
var permissionLabels = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), paddedPlayerFrame.RectTransform), isHorizontal: true)
|
||||
var permissionLabels = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.1f), paddedPlayerFrame.RectTransform), isHorizontal: true)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.05f
|
||||
};
|
||||
var permissionLabel = new GUITextBlock(new RectTransform(new Vector2(0.5f, 1.0f), permissionLabels.RectTransform), TextManager.Get("Permissions"));
|
||||
var consoleCommandLabel = new GUITextBlock(new RectTransform(new Vector2(0.5f, 1.0f), permissionLabels.RectTransform), TextManager.Get("PermittedConsoleCommands"));
|
||||
var permissionLabel = new GUITextBlock(new RectTransform(new Vector2(0.5f, 1.0f), permissionLabels.RectTransform), TextManager.Get("Permissions"), font: GUI.SubHeadingFont);
|
||||
var consoleCommandLabel = new GUITextBlock(new RectTransform(new Vector2(0.5f, 1.0f), permissionLabels.RectTransform),
|
||||
TextManager.Get("PermittedConsoleCommands"), wrap: true, font: GUI.SubHeadingFont);
|
||||
GUITextBlock.AutoScaleAndNormalize(permissionLabel, consoleCommandLabel);
|
||||
|
||||
var permissionContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.4f), paddedPlayerFrame.RectTransform), isHorizontal: true)
|
||||
@@ -1909,8 +1936,7 @@ namespace Barotrauma
|
||||
//reset rank to custom
|
||||
rankDropDown.SelectItem(null);
|
||||
|
||||
var client = playerFrame.UserData as Client;
|
||||
if (client == null) { return false; }
|
||||
if (!(playerFrame.UserData is Client client)) { return false; }
|
||||
|
||||
var thisPermission = (ClientPermissions)tickBox.UserData;
|
||||
if (tickBox.Selected)
|
||||
@@ -1944,8 +1970,7 @@ namespace Barotrauma
|
||||
//reset rank to custom
|
||||
rankDropDown.SelectItem(null);
|
||||
|
||||
var client = playerFrame.UserData as Client;
|
||||
if (client == null) { return false; }
|
||||
if (!(playerFrame.UserData is Client client)) { return false; }
|
||||
|
||||
foreach (GUIComponent child in tickbox.Parent.GetChild<GUIListBox>().Content.Children)
|
||||
{
|
||||
@@ -1977,9 +2002,8 @@ namespace Barotrauma
|
||||
//reset rank to custom
|
||||
rankDropDown.SelectItem(null);
|
||||
|
||||
Client client = playerFrame.UserData as Client;
|
||||
DebugConsole.Command selectedCommand = tickBox.UserData as DebugConsole.Command;
|
||||
if (client == null) return false;
|
||||
if (!(playerFrame.UserData is Client client)) { return false; }
|
||||
|
||||
if (!tickBox.Selected)
|
||||
{
|
||||
@@ -2057,12 +2081,20 @@ namespace Barotrauma
|
||||
}
|
||||
|
||||
var closeButton = new GUIButton(new RectTransform(new Vector2(0.3f, 1.0f), buttonAreaLower.RectTransform, Anchor.BottomRight),
|
||||
TextManager.Get("Close"), style: "GUIButtonLarge")
|
||||
TextManager.Get("Close"))
|
||||
{
|
||||
IgnoreLayoutGroups = true,
|
||||
OnClicked = ClosePlayerFrame
|
||||
};
|
||||
|
||||
buttonAreaLower.RectTransform.MinSize = new Point(0, buttonAreaLower.RectTransform.Children.Max(c => c.MinSize.Y));
|
||||
|
||||
if (buttonAreaTop != null)
|
||||
{
|
||||
buttonAreaTop.RectTransform.MinSize = buttonAreaLower.RectTransform.MinSize =
|
||||
new Point(0, Math.Max(buttonAreaLower.RectTransform.MinSize.Y, buttonAreaTop.RectTransform.Children.Max(c => c.MinSize.Y)));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2198,12 +2230,12 @@ namespace Barotrauma
|
||||
|
||||
PlayStyle playStyle = GameMain.NetworkMember.ServerSettings.PlayStyle;
|
||||
if ((int)playStyle < 0 ||
|
||||
(int)playStyle >= GameMain.ServerListScreen.PlayStyleBanners.Length)
|
||||
(int)playStyle >= ServerListScreen.PlayStyleBanners.Length)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Sprite sprite = GameMain.ServerListScreen.PlayStyleBanners[(int)playStyle];
|
||||
Sprite sprite = ServerListScreen.PlayStyleBanners[(int)playStyle];
|
||||
float scale = component.Rect.Width / sprite.size.X;
|
||||
sprite.Draw(spriteBatch, component.Center, scale: scale);
|
||||
|
||||
@@ -2211,7 +2243,7 @@ namespace Barotrauma
|
||||
{
|
||||
var nameText = component.GetChild<GUITextBlock>();
|
||||
nameText.Text = TextManager.Get("servertag." + playStyle);
|
||||
nameText.Color = GameMain.ServerListScreen.PlayStyleColors[(int)playStyle];
|
||||
nameText.Color = ServerListScreen.PlayStyleColors[(int)playStyle];
|
||||
nameText.RectTransform.NonScaledSize = (nameText.Font.MeasureString(nameText.Text) + new Vector2(25, 10) * GUI.Scale).ToPoint();
|
||||
prevPlayStyle = playStyle;
|
||||
|
||||
@@ -2278,24 +2310,19 @@ namespace Barotrauma
|
||||
|
||||
var info = GameMain.Client.CharacterInfo;
|
||||
|
||||
GUILayoutGroup columnLayout = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.9f), appearanceFrame.RectTransform, Anchor.Center), isHorizontal: true)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.05f
|
||||
};
|
||||
|
||||
//left column
|
||||
GUILayoutGroup leftColumn = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1.0f), columnLayout.RectTransform))
|
||||
GUILayoutGroup content = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.9f), appearanceFrame.RectTransform, Anchor.Center))
|
||||
{
|
||||
RelativeSpacing = 0.05f
|
||||
};
|
||||
|
||||
GUILayoutGroup genderContainer = new GUILayoutGroup(new RectTransform(new Vector2(2.0f, 0.2f), leftColumn.RectTransform), isHorizontal: true)
|
||||
Vector2 elementSize = new Vector2(1.0f, 0.18f);
|
||||
|
||||
GUILayoutGroup genderContainer = new GUILayoutGroup(new RectTransform(elementSize, content.RectTransform), isHorizontal: true)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.05f
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 1.0f), genderContainer.RectTransform), TextManager.Get("Gender"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 1.0f), genderContainer.RectTransform), TextManager.Get("Gender"), font: GUI.SubHeadingFont);
|
||||
maleButton = new GUIButton(new RectTransform(new Vector2(1.0f, 1.0f), genderContainer.RectTransform),
|
||||
TextManager.Get("Male"), style: "ListBoxElement")
|
||||
{
|
||||
@@ -2314,8 +2341,8 @@ namespace Barotrauma
|
||||
int hairCount = info.FilterByTypeAndHeadID(info.FilterElementsByGenderAndRace(info.Wearables), WearableType.Hair).Count();
|
||||
if (hairCount > 0)
|
||||
{
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.15f), leftColumn.RectTransform), TextManager.Get("FaceAttachment.Hair"));
|
||||
var hairSlider = new GUIScrollBar(new RectTransform(new Vector2(1.0f, 0.15f), leftColumn.RectTransform))
|
||||
var label = new GUITextBlock(new RectTransform(elementSize, content.RectTransform), TextManager.Get("FaceAttachment.Hair"), font: GUI.SubHeadingFont);
|
||||
var hairSlider = new GUIScrollBar(new RectTransform(new Vector2(0.4f, 1.0f), label.RectTransform, Anchor.CenterRight), style: "GUISlider")
|
||||
{
|
||||
Range = new Vector2(0, hairCount),
|
||||
StepValue = 1,
|
||||
@@ -2328,8 +2355,8 @@ namespace Barotrauma
|
||||
int beardCount = info.FilterByTypeAndHeadID(info.FilterElementsByGenderAndRace(info.Wearables), WearableType.Beard).Count();
|
||||
if (beardCount > 0)
|
||||
{
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.15f), leftColumn.RectTransform), TextManager.Get("FaceAttachment.Beard"));
|
||||
var beardSlider = new GUIScrollBar(new RectTransform(new Vector2(1.0f, 0.15f), leftColumn.RectTransform))
|
||||
var label = new GUITextBlock(new RectTransform(elementSize, content.RectTransform), TextManager.Get("FaceAttachment.Beard"), font: GUI.SubHeadingFont);
|
||||
var beardSlider = new GUIScrollBar(new RectTransform(new Vector2(0.4f, 1.0f), label.RectTransform, Anchor.CenterRight), style: "GUISlider")
|
||||
{
|
||||
Range = new Vector2(0, beardCount),
|
||||
StepValue = 1,
|
||||
@@ -2339,23 +2366,11 @@ namespace Barotrauma
|
||||
};
|
||||
}
|
||||
|
||||
//right column
|
||||
GUILayoutGroup rightColumn = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1.0f), columnLayout.RectTransform))
|
||||
{
|
||||
RelativeSpacing = 0.05f
|
||||
};
|
||||
|
||||
//spacing to account for the gender selection in the left column
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.2f), rightColumn.RectTransform), style: null)
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
|
||||
int moustacheCount = info.FilterByTypeAndHeadID(info.FilterElementsByGenderAndRace(info.Wearables), WearableType.Moustache).Count();
|
||||
if (moustacheCount > 0)
|
||||
{
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.15f), rightColumn.RectTransform), TextManager.Get("FaceAttachment.Moustache"));
|
||||
var moustacheSlider = new GUIScrollBar(new RectTransform(new Vector2(1.0f, 0.15f), rightColumn.RectTransform))
|
||||
var label = new GUITextBlock(new RectTransform(elementSize, content.RectTransform), TextManager.Get("FaceAttachment.Moustache"), font: GUI.SubHeadingFont);
|
||||
var moustacheSlider = new GUIScrollBar(new RectTransform(new Vector2(0.4f, 1.0f), label.RectTransform, Anchor.CenterRight), style: "GUISlider")
|
||||
{
|
||||
Range = new Vector2(0, moustacheCount),
|
||||
StepValue = 1,
|
||||
@@ -2368,8 +2383,8 @@ namespace Barotrauma
|
||||
int faceAttachmentCount = info.FilterByTypeAndHeadID(info.FilterElementsByGenderAndRace(info.Wearables), WearableType.FaceAttachment).Count();
|
||||
if (faceAttachmentCount > 0)
|
||||
{
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.15f), rightColumn.RectTransform), TextManager.Get("FaceAttachment.Accessories"));
|
||||
var faceAttachmentSlider = new GUIScrollBar(new RectTransform(new Vector2(1.0f, 0.15f), rightColumn.RectTransform))
|
||||
var label = new GUITextBlock(new RectTransform(elementSize, content.RectTransform), TextManager.Get("FaceAttachment.Accessories"), font: GUI.SubHeadingFont);
|
||||
var faceAttachmentSlider = new GUIScrollBar(new RectTransform(new Vector2(0.4f, 1.0f), label.RectTransform, Anchor.CenterRight), style: "GUISlider")
|
||||
{
|
||||
Range = new Vector2(0, faceAttachmentCount),
|
||||
StepValue = 1,
|
||||
@@ -2409,6 +2424,7 @@ namespace Barotrauma
|
||||
if (characterInfoFrame == null || HeadSelectionList?.RectTransform == null || button == null) { return; }
|
||||
HeadSelectionList.RectTransform.Resize(new Point(characterInfoFrame.Rect.Width, (characterInfoFrame.Rect.Bottom - button.Rect.Bottom) + characterInfoFrame.Rect.Height * 2));
|
||||
HeadSelectionList.RectTransform.AbsoluteOffset = new Point(characterInfoFrame.Rect.Right - characterInfoFrame.Rect.Width, button.Rect.Bottom);
|
||||
if (SelectedSub != null) { CreateSubPreview(SelectedSub); }
|
||||
};
|
||||
|
||||
new GUIFrame(new RectTransform(new Vector2(1.25f, 1.25f), HeadSelectionList.RectTransform, Anchor.Center), style: "OuterGlow", color: Color.Black)
|
||||
@@ -2458,7 +2474,7 @@ namespace Barotrauma
|
||||
itemsInRow = 0;
|
||||
}
|
||||
|
||||
var btn = new GUIButton(new RectTransform(new Vector2(0.25f, 1.0f), row.RectTransform), style: "ListBoxElement")
|
||||
var btn = new GUIButton(new RectTransform(new Vector2(0.25f, 1.0f), row.RectTransform), style: "ListBoxElementSquare")
|
||||
{
|
||||
OutlineColor = Color.White * 0.5f,
|
||||
PressedColor = Color.White * 0.5f,
|
||||
@@ -2578,10 +2594,8 @@ namespace Barotrauma
|
||||
itemsInRow = 0;
|
||||
}
|
||||
|
||||
jobButton = new GUIButton(new RectTransform(new Vector2(1.0f / 3.0f, 1.0f), row.RectTransform), style: "ListBoxElement")
|
||||
jobButton = new GUIButton(new RectTransform(new Vector2(1.0f / 3.0f, 1.0f), row.RectTransform), style: "ListBoxElementSquare")
|
||||
{
|
||||
PressedColor = Color.White,
|
||||
OutlineColor = Color.White * 0.5f,
|
||||
UserData = jobPrefab,
|
||||
OnClicked = (btn, usdt) =>
|
||||
{
|
||||
@@ -2591,15 +2605,7 @@ namespace Barotrauma
|
||||
};
|
||||
itemsInRow++;
|
||||
|
||||
var images = AddJobSpritesToGUIComponent(jobButton, jobPrefab.First);
|
||||
for (int variantIndex = 0; variantIndex < images.Length; variantIndex++)
|
||||
{
|
||||
foreach (GUIImage image in images[variantIndex])
|
||||
{
|
||||
characterSprites.Add(image.Sprite);
|
||||
}
|
||||
}
|
||||
|
||||
var images = AddJobSpritesToGUIComponent(jobButton, jobPrefab.First, selectedByPlayer: false);
|
||||
if (images != null && images.Length > 1)
|
||||
{
|
||||
jobPrefab.Second = Math.Min(jobPrefab.Second, images.Length);
|
||||
@@ -2646,39 +2652,19 @@ namespace Barotrauma
|
||||
return true;
|
||||
}
|
||||
|
||||
private GUIImage[][] AddJobSpritesToGUIComponent(GUIComponent parent, JobPrefab jobPrefab)
|
||||
private GUIImage[][] AddJobSpritesToGUIComponent(GUIComponent parent, JobPrefab jobPrefab, bool selectedByPlayer)
|
||||
{
|
||||
GUIFrame innerFrame = null;
|
||||
List<JobPrefab.OutfitPreview> outfitPreviews = jobPrefab.GetJobOutfitSprites(Gender.Male, out var maxDimensions);
|
||||
List<JobPrefab.OutfitPreview> outfitPreviews = jobPrefab.GetJobOutfitSprites(Gender.Male, useInventoryIcon: true, out var maxDimensions);
|
||||
|
||||
innerFrame = new GUIFrame(new RectTransform(Vector2.One * 0.8f, parent.RectTransform, Anchor.Center) { RelativeOffset = new Vector2(-0.07f, -0.06f) }, style: null)
|
||||
innerFrame = new GUIFrame(new RectTransform(Vector2.One * 0.8f, parent.RectTransform, Anchor.Center), style: null)
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
|
||||
void recalculateInnerFrame()
|
||||
{
|
||||
float buttonWidth = parent.Rect.Width;
|
||||
float buttonHeight = parent.Rect.Height;
|
||||
|
||||
Vector2 innerFrameSize;
|
||||
if (buttonWidth / maxDimensions.X > buttonHeight / maxDimensions.Y)
|
||||
{
|
||||
innerFrameSize = new Vector2((maxDimensions.X / maxDimensions.Y) * (buttonHeight / buttonWidth), 1.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
innerFrameSize = new Vector2(1.0f, (maxDimensions.Y / maxDimensions.X) * (buttonWidth / buttonHeight));
|
||||
}
|
||||
|
||||
innerFrame.RectTransform.RelativeSize = innerFrameSize * 0.8f;
|
||||
}
|
||||
|
||||
GUIImage[][] retVal = new GUIImage[0][];
|
||||
if (outfitPreviews != null && outfitPreviews.Any())
|
||||
{
|
||||
parent.RectTransform.SizeChanged += recalculateInnerFrame;
|
||||
|
||||
retVal = new GUIImage[outfitPreviews.Count][];
|
||||
for (int i = 0; i < outfitPreviews.Count; i++)
|
||||
{
|
||||
@@ -2687,23 +2673,25 @@ namespace Barotrauma
|
||||
for (int j = 0; j < outfitPreview.Sprites.Count; j++)
|
||||
{
|
||||
Pair<Sprite, Vector2> sprite = outfitPreview.Sprites[j];
|
||||
retVal[i][j] = new GUIImage(new RectTransform(sprite.First.SourceRect.Size.ToVector2() / outfitPreview.Dimensions, innerFrame.RectTransform, Anchor.Center) { RelativeOffset = sprite.Second / outfitPreview.Dimensions }, sprite.First, scaleToFit: true)
|
||||
float aspectRatio = outfitPreview.Dimensions.Y / outfitPreview.Dimensions.X;
|
||||
retVal[i][j] = new GUIImage(new RectTransform(new Vector2(0.7f / aspectRatio, 0.7f), innerFrame.RectTransform, Anchor.Center)
|
||||
{ RelativeOffset = sprite.Second / outfitPreview.Dimensions }, sprite.First, scaleToFit: true)
|
||||
{
|
||||
PressedColor = Color.White,
|
||||
CanBeFocused = false
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
recalculateInnerFrame();
|
||||
}
|
||||
|
||||
var textBlock = new GUITextBlock(
|
||||
innerFrame.CountChildren == 0 ?
|
||||
new RectTransform(Vector2.One, parent.RectTransform, Anchor.Center) :
|
||||
new RectTransform(new Vector2(1.0f, 0.2f), parent.RectTransform, Anchor.BottomCenter),
|
||||
jobPrefab.Name, textAlignment: Alignment.Center)
|
||||
new RectTransform(new Vector2(selectedByPlayer ? 0.75f : 0.95f, 0.25f), parent.RectTransform, Anchor.TopCenter),
|
||||
jobPrefab.Name, wrap: true, textAlignment: Alignment.Center)
|
||||
{
|
||||
HoverColor = Color.Transparent,
|
||||
SelectedColor = Color.Transparent,
|
||||
TextColor = jobPrefab.UIColor,
|
||||
CanBeFocused = false,
|
||||
AutoScale = true
|
||||
@@ -2829,7 +2817,7 @@ namespace Barotrauma
|
||||
shuttleList.Enabled = !enabled && GameMain.Client.HasPermission(ClientPermissions.SelectSub);
|
||||
StartButton.Visible = GameMain.Client.HasPermission(ClientPermissions.ManageRound) && !GameMain.Client.GameStarted && !enabled;
|
||||
|
||||
if (campaignViewButton != null) { campaignViewButton.Visible = enabled; }
|
||||
if (campaignViewButton != null) { campaignViewButton.Enabled = enabled; }
|
||||
|
||||
if (enabled)
|
||||
{
|
||||
@@ -2876,8 +2864,7 @@ namespace Barotrauma
|
||||
subPreviewContainer.ClearChildren();
|
||||
foreach (GUIComponent child in subList.Content.Children)
|
||||
{
|
||||
Submarine sub = child.UserData as Submarine;
|
||||
if (sub == null) { continue; }
|
||||
if (!(child.UserData is Submarine sub)) { continue; }
|
||||
//just check the name, even though the campaign sub may not be the exact same version
|
||||
//we're selecting the sub just for show, the selection is not actually used for anything
|
||||
if (sub.Name == name)
|
||||
@@ -2885,7 +2872,7 @@ namespace Barotrauma
|
||||
subList.Select(sub);
|
||||
if (Submarine.SavedSubmarines.Contains(sub))
|
||||
{
|
||||
sub.CreatePreviewWindow(subPreviewContainer);
|
||||
CreateSubPreview(sub);
|
||||
displayed = true;
|
||||
}
|
||||
break;
|
||||
@@ -2894,7 +2881,7 @@ namespace Barotrauma
|
||||
subList.OnSelected += VotableClicked;
|
||||
if (!displayed)
|
||||
{
|
||||
submarine.CreatePreviewWindow(subPreviewContainer);
|
||||
CreateSubPreview(submarine);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2921,8 +2908,8 @@ namespace Barotrauma
|
||||
|
||||
private void UpdateJobPreferences(GUIListBox listBox)
|
||||
{
|
||||
foreach (Sprite sprite in jobPreferenceSprites) { sprite.Remove(); }
|
||||
jobPreferenceSprites.Clear();
|
||||
/*foreach (Sprite sprite in jobPreferenceSprites) { sprite.Remove(); }
|
||||
jobPreferenceSprites.Clear();*/
|
||||
|
||||
List<Pair<string, int>> jobNamePreferences = new List<Pair<string, int>>();
|
||||
|
||||
@@ -2931,22 +2918,17 @@ namespace Barotrauma
|
||||
{
|
||||
GUIComponent slot = listBox.Content.GetChild(i);
|
||||
|
||||
slot.OutlineColor = Color.White * 0.4f;
|
||||
slot.Color = Color.Gray;
|
||||
slot.HoverColor = Color.White;
|
||||
slot.SelectedColor = Color.White;
|
||||
|
||||
slot.ClearChildren();
|
||||
|
||||
slot.CanBeFocused = !disableNext;
|
||||
if (slot.UserData is Pair<JobPrefab, int> jobPrefab)
|
||||
{
|
||||
var images = AddJobSpritesToGUIComponent(slot, jobPrefab.First);
|
||||
var images = AddJobSpritesToGUIComponent(slot, jobPrefab.First, selectedByPlayer: true);
|
||||
for (int variantIndex = 0; variantIndex < images.Length; variantIndex++)
|
||||
{
|
||||
foreach (GUIImage image in images[variantIndex])
|
||||
{
|
||||
jobPreferenceSprites.Add(image.Sprite);
|
||||
//jobPreferenceSprites.Add(image.Sprite);
|
||||
int selectedVariantIndex = Math.Min(jobPrefab.Second, images.Length);
|
||||
image.Visible = images.Length == 1 || selectedVariantIndex == variantIndex;
|
||||
}
|
||||
@@ -3023,16 +3005,12 @@ namespace Barotrauma
|
||||
|
||||
private GUIButton CreateJobVariantButton(Pair<JobPrefab, int> jobPrefab, int variantIndex, int variantCount, GUIComponent slot)
|
||||
{
|
||||
float relativeHeight = Math.Min(0.7f / variantCount, 0.2f);
|
||||
float relativeSize = 0.2f;
|
||||
|
||||
var btn = new GUIButton(new RectTransform(new Vector2(relativeHeight), slot.RectTransform, scaleBasis: ScaleBasis.BothHeight)
|
||||
{ RelativeOffset = new Vector2(0.05f, 0.25f + relativeHeight * 1.05f * variantIndex) },
|
||||
(variantIndex + 1).ToString(), style: null)
|
||||
var btn = new GUIButton(new RectTransform(new Vector2(relativeSize), slot.RectTransform, Anchor.BottomCenter, scaleBasis: ScaleBasis.BothHeight)
|
||||
{ RelativeOffset = new Vector2(relativeSize * 1.05f * (variantIndex - (variantCount - 1) / 2.0f), 0.02f) },
|
||||
(variantIndex + 1).ToString(), style: "JobVariantButton")
|
||||
{
|
||||
Color = new Color(50, 50, 50, 200),
|
||||
HoverColor = Color.Gray * 0.75f,
|
||||
PressedColor = Color.Black * 0.75f,
|
||||
SelectedColor = new Color(45, 70, 100, 200),
|
||||
Selected = jobPrefab.Second == variantIndex,
|
||||
UserData = new Pair<JobPrefab, int>(jobPrefab.First, variantIndex),
|
||||
};
|
||||
@@ -3061,8 +3039,7 @@ namespace Barotrauma
|
||||
{
|
||||
if (subList == this.subList)
|
||||
{
|
||||
subPreviewContainer.ClearChildren();
|
||||
sub.CreatePreviewWindow(subPreviewContainer);
|
||||
CreateSubPreview(sub);
|
||||
}
|
||||
if (subList.SelectedData is Submarine selectedSub && selectedSub.MD5Hash?.Hash == md5Hash && System.IO.File.Exists(sub.FilePath))
|
||||
{
|
||||
@@ -3121,7 +3098,7 @@ namespace Barotrauma
|
||||
{
|
||||
errorMsg = TextManager.GetWithVariable("SubLoadError", "[subname]", subName) + " ";
|
||||
GUITextBlock textBlock = subList.Content.GetChildByUserData(sub)?.GetChild<GUITextBlock>();
|
||||
if (textBlock != null) { textBlock.TextColor = Color.Red; }
|
||||
if (textBlock != null) { textBlock.TextColor = GUI.Style.Red; }
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3154,5 +3131,17 @@ namespace Barotrauma
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void CreateSubPreview(Submarine sub)
|
||||
{
|
||||
subPreviewContainer.ClearChildren();
|
||||
sub.CreatePreviewWindow(subPreviewContainer);
|
||||
var descriptionBox = subPreviewContainer.FindChild("descriptionbox", recursive: true);
|
||||
//if description box and character info box are roughly the same size, scale them to the same size
|
||||
if (characterInfoFrame != null && Math.Abs(descriptionBox.Rect.Height - characterInfoFrame.Rect.Height) < 80 * GUI.Scale)
|
||||
{
|
||||
descriptionBox.RectTransform.MaxSize = new Point(descriptionBox.Rect.Width, characterInfoFrame.Rect.Height);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,16 +61,14 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
private readonly GUIComponent rightPanel, leftPanel;
|
||||
private readonly GUIListBox prefabList;
|
||||
private readonly GUITextBox filterBox;
|
||||
private readonly GUITextBlock filterLabel;
|
||||
private GUIComponent rightPanel, leftPanel;
|
||||
private GUIListBox prefabList;
|
||||
private GUITextBox filterBox;
|
||||
private GUITextBlock filterLabel;
|
||||
|
||||
private ParticlePrefab selectedPrefab;
|
||||
|
||||
private SerializableEntityEditor particlePrefabEditor;
|
||||
|
||||
private readonly Emitter emitter;
|
||||
private Emitter emitter;
|
||||
|
||||
private readonly Camera cam;
|
||||
|
||||
@@ -85,6 +83,14 @@ namespace Barotrauma
|
||||
public ParticleEditorScreen()
|
||||
{
|
||||
cam = new Camera();
|
||||
GameMain.Instance.OnResolutionChanged += CreateUI;
|
||||
CreateUI();
|
||||
|
||||
}
|
||||
|
||||
private void CreateUI()
|
||||
{
|
||||
Frame.ClearChildren();
|
||||
|
||||
leftPanel = new GUIFrame(new RectTransform(new Vector2(0.125f, 1.0f), Frame.RectTransform) { MinSize = new Point(150, 0) },
|
||||
style: "GUIFrameLeft");
|
||||
@@ -94,9 +100,9 @@ namespace Barotrauma
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
rightPanel = new GUIFrame(new RectTransform(new Vector2(0.25f, 1.0f), Frame.RectTransform, Anchor.TopRight) { MinSize = new Point(450, 0) },
|
||||
rightPanel = new GUIFrame(new RectTransform(new Vector2(0.25f, 1.0f), Frame.RectTransform, Anchor.TopRight) { MinSize = new Point(350, 0) },
|
||||
style: "GUIFrameRight");
|
||||
var paddedRightPanel = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.95f), rightPanel.RectTransform, Anchor.Center) {RelativeOffset = new Vector2(0.02f, 0.0f) })
|
||||
var paddedRightPanel = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.95f), rightPanel.RectTransform, Anchor.Center) { RelativeOffset = new Vector2(0.02f, 0.0f) })
|
||||
{
|
||||
RelativeSpacing = 0.01f,
|
||||
Stretch = true
|
||||
@@ -124,7 +130,7 @@ namespace Barotrauma
|
||||
|
||||
emitter = new Emitter();
|
||||
var emitterEditorContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.25f), paddedRightPanel.RectTransform), style: null);
|
||||
var emitterEditor = new SerializableEntityEditor(emitterEditorContainer.RectTransform, emitter, false, true, elementHeight: 20);
|
||||
var emitterEditor = new SerializableEntityEditor(emitterEditorContainer.RectTransform, emitter, false, true, elementHeight: 20, titleFont: GUI.SubHeadingFont);
|
||||
emitterEditor.RectTransform.RelativeSize = Vector2.One;
|
||||
emitterEditorContainer.RectTransform.Resize(new Point(emitterEditorContainer.RectTransform.NonScaledSize.X, emitterEditor.ContentHeight), false);
|
||||
|
||||
@@ -139,7 +145,7 @@ namespace Barotrauma
|
||||
filterLabel = new GUITextBlock(new RectTransform(Vector2.One, filterArea.RectTransform), TextManager.Get("serverlog.filter"), font: GUI.Font) { IgnoreLayoutGroups = true };
|
||||
filterBox = new GUITextBox(new RectTransform(new Vector2(0.8f, 1.0f), filterArea.RectTransform), font: GUI.Font);
|
||||
filterBox.OnTextChanged += (textBox, text) => { FilterEmitters(text); return true; };
|
||||
new GUIButton(new RectTransform(new Vector2(0.05f, 1.0f), filterArea.RectTransform) { MinSize = new Point(20, 0) }, "x")
|
||||
new GUIButton(new RectTransform(new Vector2(0.05f, 1.0f), filterArea.RectTransform, scaleBasis: ScaleBasis.BothHeight), style: "GUICancelButton")
|
||||
{
|
||||
OnClicked = (btn, userdata) => { FilterEmitters(""); filterBox.Text = ""; filterBox.Flash(Color.White); return true; }
|
||||
};
|
||||
@@ -149,11 +155,13 @@ namespace Barotrauma
|
||||
{
|
||||
selectedPrefab = obj as ParticlePrefab;
|
||||
listBox.ClearChildren();
|
||||
particlePrefabEditor = new SerializableEntityEditor(listBox.Content.RectTransform, selectedPrefab, false, true, elementHeight: 20);
|
||||
new SerializableEntityEditor(listBox.Content.RectTransform, selectedPrefab, false, true, elementHeight: 20, titleFont: GUI.SubHeadingFont);
|
||||
//listBox.Content.RectTransform.NonScaledSize = particlePrefabEditor.RectTransform.NonScaledSize;
|
||||
//listBox.UpdateScrollBarSize();
|
||||
return true;
|
||||
};
|
||||
|
||||
if (GameMain.ParticleManager != null) { RefreshPrefabList(); }
|
||||
}
|
||||
|
||||
public override void Select()
|
||||
|
||||
@@ -23,16 +23,16 @@ namespace Barotrauma
|
||||
//how often the client is allowed to refresh servers
|
||||
private TimeSpan AllowedRefreshInterval = new TimeSpan(0, 0, 3);
|
||||
|
||||
private readonly GUIFrame menu;
|
||||
private GUIFrame menu;
|
||||
|
||||
private readonly GUIListBox serverList;
|
||||
private readonly GUIFrame serverPreview;
|
||||
private GUIListBox serverList;
|
||||
private GUIFrame serverPreview;
|
||||
|
||||
private readonly GUIButton joinButton;
|
||||
private GUIButton joinButton;
|
||||
private ServerInfo selectedServer;
|
||||
|
||||
//friends list
|
||||
private readonly GUILayoutGroup friendsButtonHolder;
|
||||
private GUILayoutGroup friendsButtonHolder;
|
||||
|
||||
private GUIButton friendsDropdownButton;
|
||||
private GUIListBox friendsDropdown;
|
||||
@@ -42,8 +42,9 @@ namespace Barotrauma
|
||||
public UInt64 SteamID;
|
||||
public string Name;
|
||||
public Sprite Sprite;
|
||||
public string Status;
|
||||
public string StatusText;
|
||||
public bool PlayingThisGame;
|
||||
public bool PlayingAnotherGame;
|
||||
public string ConnectName;
|
||||
public string ConnectEndpoint;
|
||||
public UInt64 ConnectLobby;
|
||||
@@ -52,7 +53,7 @@ namespace Barotrauma
|
||||
{
|
||||
get
|
||||
{
|
||||
return PlayingThisGame && !string.IsNullOrWhiteSpace(Status) && (!string.IsNullOrWhiteSpace(ConnectEndpoint) || ConnectLobby != 0);
|
||||
return PlayingThisGame && !string.IsNullOrWhiteSpace(StatusText) && (!string.IsNullOrWhiteSpace(ConnectEndpoint) || ConnectLobby != 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -93,23 +94,31 @@ namespace Barotrauma
|
||||
}
|
||||
private GUIButton[] tabButtons;
|
||||
|
||||
private static Sprite[] playStyleBanners;
|
||||
//server playstyle and tags
|
||||
public Sprite[] PlayStyleBanners
|
||||
public static Sprite[] PlayStyleBanners
|
||||
{
|
||||
get; private set;
|
||||
get
|
||||
{
|
||||
if (playStyleBanners == null)
|
||||
{
|
||||
LoadPlayStyleBanners();
|
||||
}
|
||||
return playStyleBanners;
|
||||
}
|
||||
}
|
||||
public Color[] PlayStyleColors
|
||||
public static Color[] PlayStyleColors
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
|
||||
public GUITextBox ClientNameBox { get; private set; }
|
||||
|
||||
public Dictionary<string, Sprite> PlayStyleIcons
|
||||
public static Dictionary<string, Sprite> PlayStyleIcons
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
public Dictionary<string, Color> PlayStyleIconColors
|
||||
public static Dictionary<string, Color> PlayStyleIconColors
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
@@ -120,28 +129,28 @@ namespace Barotrauma
|
||||
private readonly float[] columnRelativeWidth = new float[] { 0.1f, 0.1f, 0.7f, 0.12f, 0.08f, 0.08f };
|
||||
private readonly string[] columnLabel = new string[] { "ServerListCompatible", "ServerListHasPassword", "ServerListName", "ServerListRoundStarted", "ServerListPlayers", "ServerListPing" };
|
||||
|
||||
private readonly GUILayoutGroup labelHolder;
|
||||
private GUILayoutGroup labelHolder;
|
||||
private readonly List<GUITextBlock> labelTexts = new List<GUITextBlock>();
|
||||
|
||||
//filters
|
||||
private readonly GUITextBox searchBox;
|
||||
private readonly GUITickBox filterSameVersion;
|
||||
private readonly GUITickBox filterPassword;
|
||||
private readonly GUITickBox filterIncompatible;
|
||||
private readonly GUITickBox filterFull;
|
||||
private readonly GUITickBox filterEmpty;
|
||||
private readonly GUITickBox filterWhitelisted;
|
||||
private readonly GUITickBox filterFriendlyFire;
|
||||
private readonly GUITickBox filterKarma;
|
||||
private readonly GUITickBox filterTraitor;
|
||||
private readonly GUITickBox filterModded;
|
||||
private readonly GUITickBox filterVoip;
|
||||
private readonly List<GUITickBox> playStyleTickBoxes;
|
||||
private readonly List<GUITickBox> gameModeTickBoxes;
|
||||
private GUITextBox searchBox;
|
||||
private GUITickBox filterSameVersion;
|
||||
private GUITickBox filterPassword;
|
||||
private GUITickBox filterIncompatible;
|
||||
private GUITickBox filterFull;
|
||||
private GUITickBox filterEmpty;
|
||||
private GUITickBox filterWhitelisted;
|
||||
private GUITickBox filterFriendlyFire;
|
||||
private GUITickBox filterKarma;
|
||||
private GUITickBox filterTraitor;
|
||||
private GUITickBox filterModded;
|
||||
private GUITickBox filterVoip;
|
||||
private List<GUITickBox> playStyleTickBoxes;
|
||||
private List<GUITickBox> gameModeTickBoxes;
|
||||
|
||||
private string sortedBy;
|
||||
|
||||
private readonly GUIButton serverPreviewToggleButton;
|
||||
private GUIButton serverPreviewToggleButton;
|
||||
|
||||
//a timer for preventing the client from spamming the refresh button faster than AllowedRefreshInterval
|
||||
private DateTime refreshDisableTimer;
|
||||
@@ -152,11 +161,15 @@ namespace Barotrauma
|
||||
private const float sidebarWidth = 0.2f;
|
||||
public ServerListScreen()
|
||||
{
|
||||
GameMain.Instance.OnResolutionChanged += OnResolutionChanged;
|
||||
GameMain.Instance.OnResolutionChanged += CreateUI;
|
||||
CreateUI();
|
||||
}
|
||||
|
||||
private void CreateUI()
|
||||
{
|
||||
menu = new GUIFrame(new RectTransform(new Vector2(0.95f, 0.85f), GUI.Canvas, Anchor.Center) { MinSize = new Point(GameMain.GraphicsHeight, 0) });
|
||||
|
||||
var paddedFrame = new GUILayoutGroup(new RectTransform(new Vector2(0.97f, 0.95f), menu.RectTransform, Anchor.Center))
|
||||
var paddedFrame = new GUILayoutGroup(new RectTransform(new Vector2(0.98f, 0.98f), menu.RectTransform, Anchor.Center))
|
||||
{
|
||||
RelativeSpacing = 0.02f,
|
||||
Stretch = true
|
||||
@@ -175,11 +188,11 @@ namespace Barotrauma
|
||||
AutoScale = true
|
||||
};
|
||||
|
||||
var infoHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.33f), topRow.RectTransform), isHorizontal: true) { RelativeSpacing = 0.05f, Stretch = false };
|
||||
var infoHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.33f), topRow.RectTransform), isHorizontal: true, Anchor.BottomLeft) { RelativeSpacing = 0.01f, Stretch = false };
|
||||
|
||||
var clientNameHolder = new GUILayoutGroup(new RectTransform(new Vector2(sidebarWidth, 1.0f), infoHolder.RectTransform)) { RelativeSpacing = 0.05f };
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), clientNameHolder.RectTransform), TextManager.Get("YourName"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), clientNameHolder.RectTransform), TextManager.Get("YourName"), font: GUI.SubHeadingFont);
|
||||
ClientNameBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.5f), clientNameHolder.RectTransform), "")
|
||||
{
|
||||
Text = GameMain.Config.PlayerName,
|
||||
@@ -197,18 +210,14 @@ namespace Barotrauma
|
||||
return true;
|
||||
};
|
||||
|
||||
var tabButtonHolder = new GUIFrame(new RectTransform(new Vector2(1.0f - (sidebarWidth*2.0f), 1.25f), infoHolder.RectTransform), style: null);
|
||||
var tabButtonHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f - sidebarWidth - infoHolder.RelativeSpacing, 0.5f), infoHolder.RectTransform), isHorizontal: true);
|
||||
|
||||
var tabVals = Enum.GetValues(typeof(ServerListTab));
|
||||
tabButtons = new GUIButton[tabVals.Length];
|
||||
int ind = 0;
|
||||
foreach (ServerListTab tab in tabVals)
|
||||
{
|
||||
tabButtons[(int)tab] = new GUIButton(new RectTransform(new Vector2(0.25f, 0.5f), tabButtonHolder.RectTransform)
|
||||
{
|
||||
RelativeOffset = new Vector2(-0.06f + 0.22f * ind, 0.5f)
|
||||
},
|
||||
TextManager.Get("ServerListTab."+tab.ToString()), style: "GUIButtonServerListTab"+(ind==0 ? "Left" : "Middle"))
|
||||
tabButtons[(int)tab] = new GUIButton(new RectTransform(new Vector2(0.2f, 1.0f), tabButtonHolder.RectTransform),
|
||||
TextManager.Get("ServerListTab." + tab.ToString()), style: "GUITabButton")
|
||||
{
|
||||
OnClicked = (btn, usrdat) =>
|
||||
{
|
||||
@@ -216,11 +225,14 @@ namespace Barotrauma
|
||||
return false;
|
||||
}
|
||||
};
|
||||
ind++;
|
||||
}
|
||||
|
||||
var friendsButtonFrame = new GUIFrame(new RectTransform(new Vector2(0.31f, 0.5f), tabButtonHolder.RectTransform) { RelativeOffset = new Vector2(0.60f, 0.5f) }, style: "GUIFrameServerListTabRight");
|
||||
friendsButtonHolder = new GUILayoutGroup(new RectTransform(new Vector2(0.81f, 1.0f), friendsButtonFrame.RectTransform, Anchor.TopLeft) { RelativeOffset = new Vector2(0.19f, 0.0f) }, childAnchor: Anchor.TopLeft) { RelativeSpacing = 0.01f, IsHorizontal = true };
|
||||
var friendsButtonFrame = new GUIFrame(new RectTransform(new Vector2(0.31f, 2.0f), tabButtonHolder.RectTransform, Anchor.BottomRight), style: "InnerFrame")
|
||||
{
|
||||
IgnoreLayoutGroups = true
|
||||
};
|
||||
|
||||
friendsButtonHolder = new GUILayoutGroup(new RectTransform(new Vector2(0.98f, 0.9f), friendsButtonFrame.RectTransform, Anchor.Center), childAnchor: Anchor.TopLeft) { RelativeSpacing = 0.01f, IsHorizontal = true };
|
||||
friendsList = new List<FriendInfo>();
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
@@ -233,7 +245,7 @@ namespace Barotrauma
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
var serverListHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), bottomRow.RectTransform), isHorizontal: true)
|
||||
var serverListHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), bottomRow.RectTransform), isHorizontal: true, childAnchor: Anchor.CenterLeft)
|
||||
{
|
||||
OutlineColor = Color.Black
|
||||
};
|
||||
@@ -263,12 +275,31 @@ namespace Barotrauma
|
||||
OutlineColor = Color.Black
|
||||
};
|
||||
|
||||
var filters = new GUIListBox(new RectTransform(new Vector2(0.98f, 1.0f), filtersHolder.RectTransform, Anchor.CenterRight), style: null)
|
||||
float elementHeight = 0.05f;
|
||||
var filterTitle = new GUITextBlock(new RectTransform(new Vector2(1.0f, elementHeight), filtersHolder.RectTransform), TextManager.Get("FilterServers"), font: GUI.SubHeadingFont)
|
||||
{
|
||||
ScrollBarVisible = true
|
||||
Padding = Vector4.Zero,
|
||||
AutoScale = true,
|
||||
CanBeFocused = false
|
||||
};
|
||||
|
||||
filterToggle = new GUIButton(new RectTransform(new Vector2(0.01f, 1.0f), serverListHolder.RectTransform, Anchor.CenterRight) { MinSize = new Point(20, 0) }, style: "UIToggleButton")
|
||||
var searchHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, elementHeight), filtersHolder.RectTransform) { RelativeOffset = new Vector2(0.0f, elementHeight) }, isHorizontal: true) { Stretch = true };
|
||||
|
||||
var searchTitle = new GUITextBlock(new RectTransform(new Vector2(0.001f, 1.0f), searchHolder.RectTransform), TextManager.Get("Search") + "...");
|
||||
searchBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 1.0f), searchHolder.RectTransform), "");
|
||||
searchBox.OnSelected += (sender, userdata) => { searchTitle.Visible = false; };
|
||||
searchBox.OnDeselected += (sender, userdata) => { searchTitle.Visible = true; };
|
||||
searchBox.OnTextChanged += (txtBox, txt) => { FilterServers(); return true; };
|
||||
|
||||
var filters = new GUIListBox(new RectTransform(new Vector2(0.98f, 1.0f - elementHeight * 2), filtersHolder.RectTransform, Anchor.BottomLeft))
|
||||
{
|
||||
ScrollBarVisible = true,
|
||||
Spacing = (int)(5 * GUI.Scale)
|
||||
};
|
||||
|
||||
filterToggle = new GUIButton(new RectTransform(new Vector2(0.01f, 1.0f), serverListHolder.RectTransform)
|
||||
{ MinSize = new Point(20, 0), MaxSize = new Point(int.MaxValue, (int)(150 * GUI.Scale)) },
|
||||
style: "UIToggleButton")
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
@@ -284,31 +315,6 @@ namespace Barotrauma
|
||||
};
|
||||
filterToggle.Children.ForEach(c => c.SpriteEffects = SpriteEffects.FlipHorizontally);
|
||||
|
||||
/*var filterContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.99f), filters.Content.RectTransform, Anchor.Center))
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.015f
|
||||
};*/
|
||||
|
||||
var filterTitle = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), filters.Content.RectTransform), TextManager.Get("FilterServers"), font: GUI.LargeFont)
|
||||
{
|
||||
Padding = Vector4.Zero,
|
||||
AutoScale = true,
|
||||
CanBeFocused = false
|
||||
};
|
||||
|
||||
float elementHeight = 0.05f;
|
||||
|
||||
var searchHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, elementHeight), filters.Content.RectTransform), isHorizontal: true) { Stretch = true };
|
||||
|
||||
var searchTitle = new GUITextBlock(new RectTransform(new Vector2(0.001f, 1.0f), searchHolder.RectTransform), TextManager.Get("Search") + "...");
|
||||
searchBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 1.0f), searchHolder.RectTransform), "");
|
||||
searchBox.OnSelected += (sender, userdata) => { searchTitle.Visible = false; };
|
||||
searchBox.OnDeselected += (sender, userdata) => { searchTitle.Visible = true; };
|
||||
searchBox.OnTextChanged += (txtBox, txt) => { FilterServers(); return true; };
|
||||
|
||||
//var filterHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), filters.Content.RectTransform)) { RelativeSpacing = 0.005f };
|
||||
|
||||
List<GUITextBlock> filterTextList = new List<GUITextBlock>();
|
||||
|
||||
filterSameVersion = new GUITickBox(new RectTransform(new Vector2(1.0f, elementHeight), filters.Content.RectTransform), TextManager.Get("FilterSameVersion"))
|
||||
@@ -355,7 +361,7 @@ namespace Barotrauma
|
||||
filterTextList.Add(filterWhitelisted.TextBlock);
|
||||
|
||||
// Filter Tags
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), filters.Content.RectTransform), TextManager.Get("servertags"))
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), filters.Content.RectTransform), TextManager.Get("servertags"), font: GUI.SubHeadingFont)
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
@@ -387,7 +393,6 @@ namespace Barotrauma
|
||||
OnSelected = (tickBox) => { FilterServers(); return true; }
|
||||
};
|
||||
filterTextList.Add(filterVoip.TextBlock);
|
||||
|
||||
|
||||
filterModded = new GUITickBox(new RectTransform(new Vector2(1.0f, elementHeight), filters.Content.RectTransform), TextManager.Get("servertag.modded.true"))
|
||||
{
|
||||
@@ -397,7 +402,7 @@ namespace Barotrauma
|
||||
filterTextList.Add(filterModded.TextBlock);
|
||||
|
||||
// Play Style Selection
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), filters.Content.RectTransform), TextManager.Get("ServerSettingsPlayStyle"))
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), filters.Content.RectTransform), TextManager.Get("ServerSettingsPlayStyle"), font: GUI.SubHeadingFont)
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
@@ -452,7 +457,7 @@ namespace Barotrauma
|
||||
serverListContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), serverListHolder.RectTransform)) { Stretch = true };
|
||||
|
||||
labelHolder = new GUILayoutGroup(new RectTransform(new Vector2(0.99f, 0.05f), serverListContainer.RectTransform) { MinSize = new Point(0, 15) },
|
||||
isHorizontal: true)
|
||||
isHorizontal: true, childAnchor: Anchor.BottomLeft)
|
||||
{
|
||||
Stretch = true
|
||||
};
|
||||
@@ -460,18 +465,14 @@ namespace Barotrauma
|
||||
for (int i = 0; i < columnRelativeWidth.Length; i++)
|
||||
{
|
||||
var btn = new GUIButton(new RectTransform(new Vector2(columnRelativeWidth[i], 1.0f), labelHolder.RectTransform),
|
||||
text: TextManager.Get(columnLabel[i]), textAlignment: Alignment.Center, style: null)
|
||||
text: TextManager.Get(columnLabel[i]), textAlignment: Alignment.Center, style: "GUIButtonSmall")
|
||||
{
|
||||
Color = new Color(12, 14, 15, 255) * 0.5f,
|
||||
HoverColor = new Color(12, 14, 15, 255) * 2.5f,
|
||||
SelectedColor = Color.Gray * 0.7f,
|
||||
PressedColor = Color.Gray * 0.7f,
|
||||
OutlineColor = Color.Black,
|
||||
ToolTip = TextManager.Get(columnLabel[i]),
|
||||
ForceUpperCase = true,
|
||||
UserData = columnLabel[i],
|
||||
OnClicked = SortList
|
||||
};
|
||||
btn.Color *= 0.5f;
|
||||
labelTexts.Add(btn.TextBlock);
|
||||
|
||||
new GUIImage(new RectTransform(new Vector2(0.5f, 0.3f), btn.RectTransform, Anchor.BottomCenter, scaleBasis: ScaleBasis.BothHeight), style: "GUIButtonVerticalArrow", scaleToFit: true)
|
||||
@@ -516,7 +517,9 @@ namespace Barotrauma
|
||||
|
||||
//server preview panel --------------------------------------------------
|
||||
|
||||
serverPreviewToggleButton = new GUIButton(new RectTransform(new Vector2(0.01f, 1.0f), serverListHolder.RectTransform, Anchor.CenterRight) { MinSize = new Point(20, 0) }, style: "UIToggleButton")
|
||||
serverPreviewToggleButton = new GUIButton(new RectTransform(new Vector2(0.01f, 1.0f), serverListHolder.RectTransform)
|
||||
{ MinSize = new Point(20, 0), MaxSize = new Point(int.MaxValue, (int)(150 * GUI.Scale)) },
|
||||
style: "UIToggleButton")
|
||||
{
|
||||
Visible = false,
|
||||
OnClicked = (btn, userdata) =>
|
||||
@@ -550,25 +553,25 @@ namespace Barotrauma
|
||||
};
|
||||
|
||||
GUIButton button = new GUIButton(new RectTransform(new Vector2(0.25f, 0.9f), buttonContainer.RectTransform),
|
||||
TextManager.Get("Back"), style: "GUIButtonLarge")
|
||||
TextManager.Get("Back"))
|
||||
{
|
||||
OnClicked = GameMain.MainMenuScreen.ReturnToMainMenu
|
||||
};
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(0.25f, 0.9f), buttonContainer.RectTransform),
|
||||
TextManager.Get("ServerListRefresh"), style: "GUIButtonLarge")
|
||||
TextManager.Get("ServerListRefresh"))
|
||||
{
|
||||
OnClicked = (btn, userdata) => { RefreshServers(); return true; }
|
||||
};
|
||||
|
||||
var directJoinButton = new GUIButton(new RectTransform(new Vector2(0.25f, 0.9f), buttonContainer.RectTransform),
|
||||
TextManager.Get("serverlistdirectjoin"), style: "GUIButtonLarge")
|
||||
TextManager.Get("serverlistdirectjoin"))
|
||||
{
|
||||
OnClicked = (btn, userdata) => { ShowDirectJoinPrompt(); return true; }
|
||||
};
|
||||
|
||||
joinButton = new GUIButton(new RectTransform(new Vector2(0.25f, 0.9f), buttonContainer.RectTransform),
|
||||
TextManager.Get("ServerListJoin"), style: "GUIButtonLarge")
|
||||
TextManager.Get("ServerListJoin"))
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
@@ -593,6 +596,8 @@ namespace Barotrauma
|
||||
Enabled = false
|
||||
};
|
||||
|
||||
buttonContainer.RectTransform.MinSize = new Point(0, (int)(buttonContainer.RectTransform.Children.Max(c => c.MinSize.Y) * 1.2f));
|
||||
|
||||
//--------------------------------------------------------
|
||||
|
||||
bottomRow.Recalculate();
|
||||
@@ -614,9 +619,24 @@ namespace Barotrauma
|
||||
|
||||
button.SelectedColor = button.Color;
|
||||
refreshDisableTimer = DateTime.Now;
|
||||
|
||||
//recent and favorite servers
|
||||
ReadServerMemFromFile(recentServersFile, ref recentServers);
|
||||
ReadServerMemFromFile(favoriteServersFile, ref favoriteServers);
|
||||
recentServers.ForEach(s => s.Recent = true);
|
||||
favoriteServers.ForEach(s => s.Favorite = true);
|
||||
|
||||
SelectedTab = ServerListTab.All;
|
||||
tabButtons[(int)selectedTab].Selected = true;
|
||||
|
||||
RecalculateHolder();
|
||||
}
|
||||
|
||||
|
||||
private static void LoadPlayStyleBanners()
|
||||
{
|
||||
//playstyle banners
|
||||
PlayStyleBanners = new Sprite[Enum.GetValues(typeof(PlayStyle)).Length];
|
||||
playStyleBanners = new Sprite[Enum.GetValues(typeof(PlayStyle)).Length];
|
||||
PlayStyleColors = new Color[Enum.GetValues(typeof(PlayStyle)).Length];
|
||||
PlayStyleIcons = new Dictionary<string, Sprite>();
|
||||
PlayStyleIconColors = new Dictionary<string, Color>();
|
||||
@@ -643,17 +663,6 @@ namespace Barotrauma
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//recent and favorite servers
|
||||
ReadServerMemFromFile(recentServersFile, ref recentServers);
|
||||
ReadServerMemFromFile(favoriteServersFile, ref favoriteServers);
|
||||
recentServers.ForEach(s => s.Recent = true);
|
||||
favoriteServers.ForEach(s => s.Favorite = true);
|
||||
|
||||
SelectedTab = ServerListTab.All;
|
||||
tabButtons[(int)selectedTab].Selected = true;
|
||||
|
||||
RecalculateHolder();
|
||||
}
|
||||
|
||||
private void ReadServerMemFromFile(string file, ref List<ServerInfo> servers)
|
||||
@@ -800,16 +809,6 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
private void OnResolutionChanged()
|
||||
{
|
||||
menu.RectTransform.MinSize = new Point(GameMain.GraphicsHeight, 0);
|
||||
labelHolder.RectTransform.MaxSize = new Point(serverList.Content.Rect.Width, int.MaxValue);
|
||||
foreach (GUITextBlock labelText in labelTexts)
|
||||
{
|
||||
labelText.Text = ToolBox.LimitString(labelText.ToolTip, labelText.Font, labelText.Rect.Width);
|
||||
}
|
||||
}
|
||||
|
||||
private bool SortList(GUIButton button, object obj)
|
||||
{
|
||||
if (!(obj is string sortBy)) { return false; }
|
||||
@@ -1019,18 +1018,24 @@ namespace Barotrauma
|
||||
|
||||
private void ShowDirectJoinPrompt()
|
||||
{
|
||||
var msgBox = new GUIMessageBox(TextManager.Get("ServerListDirectJoin"), "", new string[] { TextManager.Get("ServerListJoin"), TextManager.Get("Cancel") },
|
||||
var msgBox = new GUIMessageBox(TextManager.Get("ServerListDirectJoin"), "",
|
||||
new string[] { TextManager.Get("ServerListJoin"), TextManager.Get("AddToFavorites"), TextManager.Get("Cancel") },
|
||||
relativeSize: new Vector2(0.25f, 0.2f), minSize: new Point(400, 150));
|
||||
msgBox.Content.ChildAnchor = Anchor.TopCenter;
|
||||
|
||||
var content = new GUILayoutGroup(new RectTransform(new Vector2(0.8f, 0.5f), msgBox.InnerFrame.RectTransform, Anchor.Center) { MinSize = new Point(0, 50) })
|
||||
var content = new GUILayoutGroup(new RectTransform(new Vector2(0.8f, 0.5f), msgBox.Content.RectTransform), childAnchor: Anchor.TopCenter)
|
||||
{
|
||||
IgnoreLayoutGroups = true,
|
||||
IgnoreLayoutGroups = false,
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.05f
|
||||
};
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.33f), content.RectTransform), TextManager.Get("ServerEndpoint"));
|
||||
var endpointBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.33f), content.RectTransform));
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.5f), content.RectTransform), TextManager.Get("ServerEndpoint"), textAlignment: Alignment.Center);
|
||||
var endpointBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.5f), content.RectTransform));
|
||||
|
||||
content.RectTransform.NonScaledSize = new Point(content.Rect.Width, (int)(content.RectTransform.Children.Sum(c => c.Rect.Height)));
|
||||
content.RectTransform.IsFixedSize = true;
|
||||
msgBox.InnerFrame.RectTransform.MinSize = new Point(0, (int)((content.RectTransform.NonScaledSize.Y + msgBox.Content.RectTransform.Children.Sum(c => c.NonScaledSize.Y + msgBox.Content.AbsoluteSpacing)) * 1.1f));
|
||||
|
||||
var okButton = msgBox.Buttons[0];
|
||||
okButton.Enabled = false;
|
||||
@@ -1041,21 +1046,9 @@ namespace Barotrauma
|
||||
return true;
|
||||
};
|
||||
|
||||
var cancelButton = msgBox.Buttons[1];
|
||||
cancelButton.OnClicked = msgBox.Close;
|
||||
|
||||
endpointBox.OnTextChanged += (textBox, text) =>
|
||||
{
|
||||
okButton.Enabled = !string.IsNullOrEmpty(text);
|
||||
return true;
|
||||
};
|
||||
|
||||
var spacingLayoutGroup = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.33f), content.RectTransform), true);
|
||||
|
||||
new GUIFrame(new RectTransform(new Vector2(0.5f, 1.0f), spacingLayoutGroup.RectTransform), null);
|
||||
|
||||
var addToFavoritesButton = new GUIButton(new RectTransform(new Vector2(0.5f, 1.0f), spacingLayoutGroup.RectTransform), TextManager.Get("AddToFavorites"));
|
||||
addToFavoritesButton.OnClicked = (button, userdata) =>
|
||||
var favoriteButton = msgBox.Buttons[1];
|
||||
favoriteButton.Enabled = false;
|
||||
favoriteButton.OnClicked = (button, userdata) =>
|
||||
{
|
||||
UInt64 steamId = SteamManager.SteamIDStringToUInt64(endpointBox.Text);
|
||||
string ip = ""; int port = 0;
|
||||
@@ -1115,6 +1108,15 @@ namespace Barotrauma
|
||||
msgBox.Close();
|
||||
return false;
|
||||
};
|
||||
|
||||
var cancelButton = msgBox.Buttons[2];
|
||||
cancelButton.OnClicked = msgBox.Close;
|
||||
|
||||
endpointBox.OnTextChanged += (textBox, text) =>
|
||||
{
|
||||
okButton.Enabled = favoriteButton.Enabled = !string.IsNullOrEmpty(text);
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
private bool JoinFriend(GUIButton button, object userdata)
|
||||
@@ -1182,7 +1184,8 @@ namespace Barotrauma
|
||||
|
||||
float prevDropdownScroll = friendsDropdown?.ScrollBar.BarScrollValue ?? 0.0f;
|
||||
|
||||
if (friendsDropdown == null) {
|
||||
if (friendsDropdown == null)
|
||||
{
|
||||
friendsDropdown = new GUIListBox(new RectTransform(Vector2.One, GUI.Canvas))
|
||||
{
|
||||
OutlineColor = Color.Black,
|
||||
@@ -1286,17 +1289,17 @@ namespace Barotrauma
|
||||
info.ConnectLobby = 0;
|
||||
|
||||
info.PlayingThisGame = friend.IsPlayingThisGame;
|
||||
info.PlayingAnotherGame = friend.GameInfo.HasValue;
|
||||
|
||||
if (friend.IsPlayingThisGame)
|
||||
{
|
||||
info.Status = friend.GetRichPresence("status") ?? "";
|
||||
info.StatusText = friend.GetRichPresence("status") ?? "";
|
||||
string connectCommand = friend.GetRichPresence("connect") ?? "";
|
||||
|
||||
ToolBox.ParseConnectCommand(connectCommand.Split(' '), out info.ConnectName, out info.ConnectEndpoint, out info.ConnectLobby);
|
||||
}
|
||||
else
|
||||
{
|
||||
info.Status = TextManager.Get(friend.GameInfo.HasValue ? "FriendPlayingAnotherGame" : "FriendNotPlaying");
|
||||
info.StatusText = TextManager.Get(info.PlayingAnotherGame ? "FriendPlayingAnotherGame" : "FriendNotPlaying");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1319,10 +1322,8 @@ namespace Barotrauma
|
||||
OnClicked = (button, udt) =>
|
||||
{
|
||||
friendsDropdown.RectTransform.NonScaledSize = new Point(friendsButtonHolder.Rect.Height * 5 * 166 / 100, friendsButtonHolder.Rect.Height * 4 * 166 / 100);
|
||||
friendsDropdown.RectTransform.RelativeOffset = new Vector2(0.295f, 0.235f);
|
||||
friendsDropdown.RectTransform.AbsoluteOffset = new Point(friendsButtonHolder.Rect.X, friendsButtonHolder.Rect.Bottom);
|
||||
friendsDropdown.RectTransform.RecalculateChildren(true);
|
||||
friendsDropdown.RectTransform.SetPosition(Anchor.TopRight);
|
||||
|
||||
friendsDropdown.Visible = !friendsDropdown.Visible;
|
||||
return false;
|
||||
}
|
||||
@@ -1358,11 +1359,11 @@ namespace Barotrauma
|
||||
UserData = friend,
|
||||
OnClicked = OpenFriendPopup
|
||||
};
|
||||
guiButton.ToolTip = friend.Name + "\n" + friend.Status;
|
||||
guiButton.ToolTip = friend.Name + "\n" + friend.StatusText;
|
||||
|
||||
if (friend.Sprite != null)
|
||||
{
|
||||
Color BrightenColor(Color color)
|
||||
static Color BrightenColor(Color color)
|
||||
{
|
||||
Vector3 hls = ToolBox.RgbToHLS(color);
|
||||
hls.Y = hls.Y * 0.3f + 0.7f;
|
||||
@@ -1398,10 +1399,12 @@ namespace Barotrauma
|
||||
var friendFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.167f), friendsDropdown.Content.RectTransform), style: "GUIFrameFriendsDropdown");
|
||||
var guiImage2TheSequel = new GUIImage(new RectTransform(Vector2.One * 0.9f, friendFrame.RectTransform, Anchor.CenterLeft, scaleBasis: ScaleBasis.BothHeight) { RelativeOffset = new Vector2(0.02f, 0.02f) } , friend.Sprite, null, true);
|
||||
|
||||
var textBlock = new GUITextBlock(new RectTransform(Vector2.One * 0.8f, friendFrame.RectTransform, Anchor.CenterLeft, scaleBasis: ScaleBasis.BothHeight) { RelativeOffset = new Vector2(1.0f / 7.7f, 0.0f) }, friend.Name + "\n" + friend.Status)
|
||||
var textBlock = new GUITextBlock(new RectTransform(Vector2.One * 0.8f, friendFrame.RectTransform, Anchor.CenterLeft, scaleBasis: ScaleBasis.BothHeight) { RelativeOffset = new Vector2(1.0f / 7.7f, 0.0f) }, friend.Name + "\n" + friend.StatusText)
|
||||
{
|
||||
Font = GUI.SmallFont
|
||||
};
|
||||
if (friend.PlayingThisGame) { textBlock.TextColor = GUI.Style.Green; }
|
||||
if (friend.PlayingAnotherGame) { textBlock.TextColor = GUI.Style.Blue; }
|
||||
|
||||
if (friend.InServer)
|
||||
{
|
||||
@@ -1414,9 +1417,8 @@ namespace Barotrauma
|
||||
}
|
||||
|
||||
friendsDropdown.RectTransform.NonScaledSize = new Point(friendsButtonHolder.Rect.Height * 5 * 166 / 100, friendsButtonHolder.Rect.Height * 4 * 166 / 100);
|
||||
friendsDropdown.RectTransform.RelativeOffset = new Vector2(0.295f, 0.235f);
|
||||
friendsDropdown.RectTransform.AbsoluteOffset = new Point(friendsButtonHolder.Rect.X, friendsButtonHolder.Rect.Bottom);
|
||||
friendsDropdown.RectTransform.RecalculateChildren(true);
|
||||
friendsDropdown.RectTransform.SetPosition(Anchor.TopRight);
|
||||
|
||||
friendsDropdown.ScrollBar.BarScrollValue = prevDropdownScroll;
|
||||
}
|
||||
@@ -1577,7 +1579,7 @@ namespace Barotrauma
|
||||
if (serverFrame == null)
|
||||
{
|
||||
serverFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.06f), serverList.Content.RectTransform) { MinSize = new Point(0, 35) },
|
||||
style: "InnerFrame", color: Color.White * 0.5f)
|
||||
style: "ListBoxElement")
|
||||
{
|
||||
UserData = serverInfo
|
||||
};
|
||||
@@ -1716,7 +1718,7 @@ namespace Barotrauma
|
||||
else if (string.IsNullOrEmpty(serverInfo.GameVersion) || !serverInfo.ContentPackageHashes.Any())
|
||||
{
|
||||
compatibleBox.Selected = false;
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.8f, 0.8f), compatibleBox.Box.RectTransform, Anchor.Center), " ? ", Color.Yellow * 0.85f, textAlignment: Alignment.Center)
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.8f, 0.8f), compatibleBox.Box.RectTransform, Anchor.Center), " ? ", GUI.Style.Orange * 0.85f, textAlignment: Alignment.Center)
|
||||
{
|
||||
ToolTip = TextManager.Get(string.IsNullOrEmpty(serverInfo.GameVersion) ?
|
||||
"ServerListUnknownVersion" :
|
||||
@@ -1941,7 +1943,7 @@ namespace Barotrauma
|
||||
private Color GetPingTextColor(int ping)
|
||||
{
|
||||
if (ping < 0) { return Color.DarkRed; }
|
||||
return ToolBox.GradientLerp(ping / 200.0f, Color.LightGreen, Color.Yellow * 0.8f, Color.Red * 0.75f);
|
||||
return ToolBox.GradientLerp(ping / 200.0f, GUI.Style.Green, GUI.Style.Orange, GUI.Style.Red);
|
||||
}
|
||||
|
||||
public async Task<int> PingServerAsync(string ip, int timeOut)
|
||||
|
||||
@@ -60,20 +60,21 @@ namespace Barotrauma
|
||||
public SpriteEditorScreen()
|
||||
{
|
||||
cam = new Camera();
|
||||
CreateGUIElements();
|
||||
GameMain.Instance.OnResolutionChanged += CreateUI;
|
||||
CreateUI();
|
||||
}
|
||||
|
||||
#region Initialization
|
||||
private void CreateGUIElements()
|
||||
private void CreateUI()
|
||||
{
|
||||
originLabel = TextManager.Get("charactereditor.origin") + ": ";
|
||||
originLabel = TextManager.Get("charactereditor.origin");
|
||||
positionLabel = TextManager.GetWithVariable("charactereditor.position", "[coordinates]", string.Empty);
|
||||
sizeLabel = TextManager.Get("charactereditor.origin") + ": ";
|
||||
sizeLabel = TextManager.Get("charactereditor.size");
|
||||
|
||||
topPanel = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.1f), Frame.RectTransform) { MinSize = new Point(0, 60) }, "GUIFrameTop");
|
||||
topPanel = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.15f), Frame.RectTransform) { MinSize = new Point(0, 60) }, "GUIFrameTop");
|
||||
topPanelContents = new GUIFrame(new RectTransform(new Vector2(0.95f, 0.8f), topPanel.RectTransform, Anchor.Center), style: null);
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(0.12f, 0.4f), topPanelContents.RectTransform, Anchor.TopLeft)
|
||||
new GUIButton(new RectTransform(new Vector2(0.14f, 0.4f), topPanelContents.RectTransform, Anchor.TopLeft)
|
||||
{
|
||||
RelativeOffset = new Vector2(0, 0.1f)
|
||||
}, TextManager.Get("spriteeditor.reloadtexture"))
|
||||
@@ -88,11 +89,11 @@ namespace Barotrauma
|
||||
textureList.Select(firstSelected.Texture, autoScroll: false);
|
||||
selected.ForEachMod(s => spriteList.Select(s, autoScroll: false));
|
||||
texturePathText.Text = TextManager.GetWithVariable("spriteeditor.texturesreloaded", "[filepath]", firstSelected.FilePath);
|
||||
texturePathText.TextColor = Color.LightGreen;
|
||||
texturePathText.TextColor = GUI.Style.Green;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
new GUIButton(new RectTransform(new Vector2(0.12f, 0.4f), topPanelContents.RectTransform, Anchor.BottomLeft)
|
||||
new GUIButton(new RectTransform(new Vector2(0.14f, 0.4f), topPanelContents.RectTransform, Anchor.BottomLeft)
|
||||
{
|
||||
RelativeOffset = new Vector2(0, 0.1f)
|
||||
}, TextManager.Get("spriteeditor.resetchanges"))
|
||||
@@ -111,11 +112,11 @@ namespace Barotrauma
|
||||
}
|
||||
ResetWidgets();
|
||||
xmlPathText.Text = TextManager.Get("spriteeditor.resetsuccessful");
|
||||
xmlPathText.TextColor = Color.LightGreen;
|
||||
xmlPathText.TextColor = GUI.Style.Green;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
new GUIButton(new RectTransform(new Vector2(0.12f, 0.4f), topPanelContents.RectTransform, Anchor.TopLeft)
|
||||
new GUIButton(new RectTransform(new Vector2(0.14f, 0.4f), topPanelContents.RectTransform, Anchor.TopLeft)
|
||||
{
|
||||
RelativeOffset = new Vector2(0.15f, 0.1f)
|
||||
}, TextManager.Get("spriteeditor.saveselectedsprites"))
|
||||
@@ -125,7 +126,7 @@ namespace Barotrauma
|
||||
return SaveSprites(selectedSprites);
|
||||
}
|
||||
};
|
||||
new GUIButton(new RectTransform(new Vector2(0.12f, 0.4f), topPanelContents.RectTransform, Anchor.BottomLeft)
|
||||
new GUIButton(new RectTransform(new Vector2(0.14f, 0.4f), topPanelContents.RectTransform, Anchor.BottomLeft)
|
||||
{
|
||||
RelativeOffset = new Vector2(0.15f, 0.1f)
|
||||
}, TextManager.Get("spriteeditor.saveallsprites"))
|
||||
@@ -135,11 +136,14 @@ namespace Barotrauma
|
||||
return SaveSprites(loadedSprites);
|
||||
}
|
||||
};
|
||||
|
||||
GUITextBlock.AutoScaleAndNormalize(topPanelContents.Children.Where(c => c is GUIButton).Select(c => ((GUIButton)c).TextBlock));
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.2f, 0.2f), topPanelContents.RectTransform, Anchor.TopCenter, Pivot.CenterRight) { RelativeOffset = new Vector2(0, 0.3f) }, TextManager.Get("spriteeditor.zoom"));
|
||||
zoomBar = new GUIScrollBar(new RectTransform(new Vector2(0.2f, 0.35f), topPanelContents.RectTransform, Anchor.TopCenter, Pivot.CenterRight)
|
||||
{
|
||||
RelativeOffset = new Vector2(0.05f, 0.3f)
|
||||
}, barSize: 0.1f)
|
||||
}, style: "GUISlider", barSize: 0.1f)
|
||||
{
|
||||
BarScroll = GetBarScrollValue(),
|
||||
Step = 0.01f,
|
||||
@@ -184,8 +188,7 @@ namespace Barotrauma
|
||||
|
||||
leftPanel = new GUIFrame(new RectTransform(new Vector2(0.25f, 1.0f - topPanel.RectTransform.RelativeSize.Y), Frame.RectTransform, Anchor.BottomLeft)
|
||||
{ MinSize = new Point(150, 0) }, style: "GUIFrameLeft");
|
||||
var paddedLeftPanel = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.95f), leftPanel.RectTransform, Anchor.CenterLeft)
|
||||
{ RelativeOffset = new Vector2(0.02f, 0.0f) })
|
||||
var paddedLeftPanel = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.95f), leftPanel.RectTransform, Anchor.Center))
|
||||
{ RelativeSpacing = 0.01f, Stretch = true };
|
||||
|
||||
var filterArea = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.03f), paddedLeftPanel.RectTransform) { MinSize = new Point(0, 20) }, isHorizontal: true)
|
||||
@@ -194,12 +197,8 @@ namespace Barotrauma
|
||||
UserData = "filterarea"
|
||||
};
|
||||
filterTexturesLabel = new GUITextBlock(new RectTransform(Vector2.One, filterArea.RectTransform), TextManager.Get("serverlog.filter"), font: GUI.Font) { IgnoreLayoutGroups = true }; ;
|
||||
filterTexturesBox = new GUITextBox(new RectTransform(new Vector2(0.8f, 1.0f), filterArea.RectTransform), font: GUI.Font);
|
||||
filterTexturesBox = new GUITextBox(new RectTransform(new Vector2(0.8f, 1.0f), filterArea.RectTransform), font: GUI.Font, createClearButton: true);
|
||||
filterTexturesBox.OnTextChanged += (textBox, text) => { FilterTextures(text); return true; };
|
||||
new GUIButton(new RectTransform(new Vector2(0.05f, 1.0f), filterArea.RectTransform) { MinSize = new Point(20, 0) }, "x")
|
||||
{
|
||||
OnClicked = (btn, userdata) => { FilterTextures(""); filterTexturesBox.Text = ""; filterTexturesBox.Flash(Color.White); return true; }
|
||||
};
|
||||
|
||||
textureList = new GUIListBox(new RectTransform(new Vector2(1.0f, 1.0f), paddedLeftPanel.RectTransform))
|
||||
{
|
||||
@@ -230,7 +229,7 @@ namespace Barotrauma
|
||||
};
|
||||
|
||||
rightPanel = new GUIFrame(new RectTransform(new Vector2(0.25f, 1.0f - topPanel.RectTransform.RelativeSize.Y), Frame.RectTransform, Anchor.BottomRight) { MinSize = new Point(150, 0) }, style: "GUIFrameRight");
|
||||
var paddedRightPanel = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.95f), rightPanel.RectTransform, Anchor.Center) { RelativeOffset = new Vector2(0.02f, 0.0f) })
|
||||
var paddedRightPanel = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.95f), rightPanel.RectTransform, Anchor.Center))
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.01f
|
||||
@@ -242,12 +241,8 @@ namespace Barotrauma
|
||||
UserData = "filterarea"
|
||||
};
|
||||
filterSpritesLabel = new GUITextBlock(new RectTransform(Vector2.One, filterArea.RectTransform), TextManager.Get("serverlog.filter"), font: GUI.Font) { IgnoreLayoutGroups = true };
|
||||
filterSpritesBox = new GUITextBox(new RectTransform(new Vector2(0.8f, 1.0f), filterArea.RectTransform), font: GUI.Font);
|
||||
filterSpritesBox = new GUITextBox(new RectTransform(new Vector2(0.8f, 1.0f), filterArea.RectTransform), font: GUI.Font, createClearButton: true);
|
||||
filterSpritesBox.OnTextChanged += (textBox, text) => { FilterSprites(text); return true; };
|
||||
new GUIButton(new RectTransform(new Vector2(0.05f, 1.0f), filterArea.RectTransform) { MinSize = new Point(20, 0) }, "x")
|
||||
{
|
||||
OnClicked = (btn, userdata) => { FilterSprites(""); filterSpritesBox.Text = ""; filterSpritesBox.Flash(Color.White); return true; }
|
||||
};
|
||||
|
||||
spriteList = new GUIListBox(new RectTransform(new Vector2(1.0f, 1.0f), paddedRightPanel.RectTransform))
|
||||
{
|
||||
@@ -301,12 +296,12 @@ namespace Barotrauma
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
colorLabel.TextColor = Color.Red;
|
||||
colorLabel.TextColor = GUI.Style.Red;
|
||||
numberInput.IntValue = backgroundColor.R;
|
||||
numberInput.OnValueChanged += (numInput) => backgroundColor.R = (byte)(numInput.IntValue);
|
||||
break;
|
||||
case 1:
|
||||
colorLabel.TextColor = Color.LightGreen;
|
||||
colorLabel.TextColor = GUI.Style.Green;
|
||||
numberInput.IntValue = backgroundColor.G;
|
||||
numberInput.OnValueChanged += (numInput) => backgroundColor.G = (byte)(numInput.IntValue);
|
||||
break;
|
||||
@@ -401,6 +396,16 @@ namespace Barotrauma
|
||||
if (element == null) { continue; }
|
||||
element.SetAttributeValue("sourcerect", XMLExtensions.RectToString(sprite.SourceRect));
|
||||
element.SetAttributeValue("origin", XMLExtensions.Vector2ToString(sprite.RelativeOrigin));
|
||||
|
||||
/*if (element.Attribute("slice") != null)
|
||||
{
|
||||
Rectangle slice = new Rectangle(
|
||||
sprite.SourceRect.X + 5,
|
||||
sprite.SourceRect.Y + 5,
|
||||
sprite.SourceRect.Right - 5,
|
||||
sprite.SourceRect.Bottom - 5);
|
||||
element.SetAttributeValue("slice", XMLExtensions.RectToString(slice));
|
||||
}*/
|
||||
docsToSave.Add(element.Document);
|
||||
}
|
||||
xmlPathText.Text = TextManager.Get("spriteeditor.allchangessavedto");
|
||||
@@ -410,7 +415,7 @@ namespace Barotrauma
|
||||
xmlPathText.Text += "\n" + xmlPath;
|
||||
doc.Save(xmlPath);
|
||||
}
|
||||
xmlPathText.TextColor = Color.LightGreen;
|
||||
xmlPathText.TextColor = GUI.Style.Green;
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
@@ -436,7 +441,7 @@ namespace Barotrauma
|
||||
// Select rects with the mouse
|
||||
if (Widget.selectedWidgets.None() || Widget.EnableMultiSelect)
|
||||
{
|
||||
if (selectedTexture != null)
|
||||
if (selectedTexture != null && GUI.MouseOn == null)
|
||||
{
|
||||
foreach (Sprite sprite in loadedSprites)
|
||||
{
|
||||
@@ -449,6 +454,8 @@ namespace Barotrauma
|
||||
spriteList.Select(sprite, autoScroll: false);
|
||||
UpdateScrollBar(spriteList);
|
||||
UpdateScrollBar(textureList);
|
||||
// Release the keyboard so that we can nudge the source rects
|
||||
GUI.KeyboardDispatcher.Subscriber = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -471,21 +478,128 @@ namespace Barotrauma
|
||||
}
|
||||
if (GUI.KeyboardDispatcher.Subscriber == null)
|
||||
{
|
||||
Point moveAmount = Point.Zero;
|
||||
if (PlayerInput.KeyHit(Keys.Left)) { moveAmount.X--; }
|
||||
if (PlayerInput.KeyHit(Keys.Right)) { moveAmount.X++; }
|
||||
if (PlayerInput.KeyHit(Keys.Up)) { moveAmount.Y--; }
|
||||
if (PlayerInput.KeyHit(Keys.Down)) { moveAmount.Y++; }
|
||||
if (moveAmount != Point.Zero)
|
||||
if (PlayerInput.KeyHit(Keys.Left))
|
||||
{
|
||||
Nudge(Keys.Left);
|
||||
}
|
||||
if (PlayerInput.KeyHit(Keys.Right))
|
||||
{
|
||||
Nudge(Keys.Right);
|
||||
}
|
||||
if (PlayerInput.KeyHit(Keys.Down))
|
||||
{
|
||||
Nudge(Keys.Down);
|
||||
}
|
||||
if (PlayerInput.KeyHit(Keys.Up))
|
||||
{
|
||||
Nudge(Keys.Up);
|
||||
}
|
||||
if (PlayerInput.KeyDown(Keys.Left))
|
||||
{
|
||||
holdTimer += deltaTime;
|
||||
if (holdTimer > holdTime)
|
||||
{
|
||||
Nudge(Keys.Left);
|
||||
}
|
||||
}
|
||||
else if (PlayerInput.KeyDown(Keys.Right))
|
||||
{
|
||||
holdTimer += deltaTime;
|
||||
if (holdTimer > holdTime)
|
||||
{
|
||||
Nudge(Keys.Right);
|
||||
}
|
||||
}
|
||||
else if (PlayerInput.KeyDown(Keys.Down))
|
||||
{
|
||||
holdTimer += deltaTime;
|
||||
if (holdTimer > holdTime)
|
||||
{
|
||||
Nudge(Keys.Down);
|
||||
}
|
||||
}
|
||||
else if (PlayerInput.KeyDown(Keys.Up))
|
||||
{
|
||||
holdTimer += deltaTime;
|
||||
if (holdTimer > holdTime)
|
||||
{
|
||||
Nudge(Keys.Up);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
holdTimer = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private double holdTimer;
|
||||
private readonly float holdTime = 0.2f;
|
||||
private void Nudge(Keys key)
|
||||
{
|
||||
switch (key)
|
||||
{
|
||||
case Keys.Left:
|
||||
foreach (var sprite in selectedSprites)
|
||||
{
|
||||
var newRect = sprite.SourceRect;
|
||||
newRect.Location += moveAmount;
|
||||
if (PlayerInput.KeyDown(Keys.LeftControl))
|
||||
{
|
||||
newRect.Width--;
|
||||
}
|
||||
else
|
||||
{
|
||||
newRect.X--;
|
||||
}
|
||||
UpdateSourceRect(sprite, newRect);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Keys.Right:
|
||||
foreach (var sprite in selectedSprites)
|
||||
{
|
||||
var newRect = sprite.SourceRect;
|
||||
if (PlayerInput.KeyDown(Keys.LeftControl))
|
||||
{
|
||||
newRect.Width++;
|
||||
}
|
||||
else
|
||||
{
|
||||
newRect.X++;
|
||||
}
|
||||
UpdateSourceRect(sprite, newRect);
|
||||
}
|
||||
break;
|
||||
case Keys.Down:
|
||||
foreach (var sprite in selectedSprites)
|
||||
{
|
||||
var newRect = sprite.SourceRect;
|
||||
if (PlayerInput.KeyDown(Keys.LeftControl))
|
||||
{
|
||||
newRect.Height++;
|
||||
}
|
||||
else
|
||||
{
|
||||
newRect.Y++;
|
||||
}
|
||||
UpdateSourceRect(sprite, newRect);
|
||||
}
|
||||
break;
|
||||
case Keys.Up:
|
||||
foreach (var sprite in selectedSprites)
|
||||
{
|
||||
var newRect = sprite.SourceRect;
|
||||
if (PlayerInput.KeyDown(Keys.LeftControl))
|
||||
{
|
||||
newRect.Height--;
|
||||
}
|
||||
else
|
||||
{
|
||||
newRect.Y--;
|
||||
}
|
||||
UpdateSourceRect(sprite, newRect);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Draw(double deltaTime, GraphicsDevice graphics, SpriteBatch spriteBatch)
|
||||
@@ -535,7 +649,7 @@ namespace Barotrauma
|
||||
(int)(sprite.SourceRect.Height * zoom));
|
||||
|
||||
bool isSelected = selectedSprites.Contains(sprite);
|
||||
GUI.DrawRectangle(spriteBatch, sourceRect, isSelected ? Color.Yellow : Color.Red * 0.5f, thickness: isSelected ? 2 : 1);
|
||||
GUI.DrawRectangle(spriteBatch, sourceRect, isSelected ? GUI.Style.Orange : GUI.Style.Red * 0.5f, thickness: isSelected ? 2 : 1);
|
||||
|
||||
string id = sprite.ID;
|
||||
if (!string.IsNullOrEmpty(id))
|
||||
@@ -546,12 +660,12 @@ namespace Barotrauma
|
||||
Vector2 GetBottomRight() => new Vector2(GetTopRight().X, GetTopRight().Y + sprite.SourceRect.Height);
|
||||
var originWidget = GetWidget($"{id}_origin", sprite, widgetSize, Widget.Shape.Cross, initMethod: w =>
|
||||
{
|
||||
w.tooltip = originLabel + sprite.RelativeOrigin.FormatDoubleDecimal();
|
||||
w.tooltip = TextManager.AddPunctuation(':', originLabel, sprite.RelativeOrigin.FormatDoubleDecimal());
|
||||
w.MouseHeld += dTime =>
|
||||
{
|
||||
w.DrawPos = PlayerInput.MousePosition.Clamp(textureRect.Location.ToVector2() + GetTopLeft() * zoom, textureRect.Location.ToVector2() + GetBottomRight() * zoom);
|
||||
sprite.Origin = (w.DrawPos - textureRect.Location.ToVector2() - sprite.SourceRect.Location.ToVector2() * zoom) / zoom;
|
||||
w.tooltip = originLabel + sprite.RelativeOrigin.FormatDoubleDecimal();
|
||||
w.tooltip = TextManager.AddPunctuation(':', originLabel, sprite.RelativeOrigin.FormatDoubleDecimal());
|
||||
};
|
||||
w.refresh = () =>
|
||||
w.DrawPos = (textureRect.Location.ToVector2() + (sprite.Origin + sprite.SourceRect.Location.ToVector2()) * zoom)
|
||||
@@ -578,7 +692,7 @@ namespace Barotrauma
|
||||
});
|
||||
var sizeWidget = GetWidget($"{id}_size", sprite, widgetSize, Widget.Shape.Rectangle, initMethod: w =>
|
||||
{
|
||||
w.tooltip = sizeLabel + sprite.SourceRect.Size;
|
||||
w.tooltip = TextManager.AddPunctuation(':', sizeLabel, sprite.SourceRect.Size.ToString());
|
||||
w.MouseHeld += dTime =>
|
||||
{
|
||||
w.DrawPos = (drawGrid && snapToGrid) ?
|
||||
@@ -593,10 +707,13 @@ namespace Barotrauma
|
||||
// TODO: cache the sprite name?
|
||||
textBox.Text = GetSpriteName(sprite) + " " + sprite.SourceRect;
|
||||
}
|
||||
w.tooltip = sizeLabel + sprite.SourceRect.Size;
|
||||
w.tooltip = TextManager.AddPunctuation(':', sizeLabel, sprite.SourceRect.Size.ToString());
|
||||
};
|
||||
w.refresh = () => w.DrawPos = textureRect.Location.ToVector2() + new Vector2(sprite.SourceRect.Right, sprite.SourceRect.Bottom) * zoom;
|
||||
});
|
||||
originWidget.MouseDown += () => GUI.KeyboardDispatcher.Subscriber = null;
|
||||
positionWidget.MouseDown += () => GUI.KeyboardDispatcher.Subscriber = null;
|
||||
sizeWidget.MouseDown += () => GUI.KeyboardDispatcher.Subscriber = null;
|
||||
if (isSelected)
|
||||
{
|
||||
positionWidget.Draw(spriteBatch, (float)deltaTime);
|
||||
@@ -822,7 +939,6 @@ namespace Barotrauma
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), textureList.Content.RectTransform) { MinSize = new Point(0, 20) },
|
||||
Path.GetFileName(sprite.FilePath))
|
||||
{
|
||||
Padding = Vector4.Zero,
|
||||
ToolTip = sprite.FilePath,
|
||||
UserData = sprite.Texture
|
||||
};
|
||||
@@ -834,9 +950,9 @@ namespace Barotrauma
|
||||
//foreach (Sprite sprite in loadedSprites.OrderBy(s => GetSpriteName(s)))
|
||||
foreach (Sprite sprite in loadedSprites.OrderBy(s => s.SourceElement.GetAttributeString("texture", string.Empty)))
|
||||
{
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), spriteList.Content.RectTransform) { MinSize = new Point(0, 20) }, GetSpriteName(sprite) + " " + sprite.SourceRect)
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), spriteList.Content.RectTransform) { MinSize = new Point(0, 20) },
|
||||
GetSpriteName(sprite) + " (" + sprite.SourceRect.X + ", " + sprite.SourceRect.Y + ", " + sprite.SourceRect.Width + ", " + sprite.SourceRect.Height + ")")
|
||||
{
|
||||
Padding = Vector4.Zero,
|
||||
UserData = sprite
|
||||
};
|
||||
}
|
||||
|
||||
@@ -26,12 +26,10 @@ namespace Barotrauma
|
||||
//listbox that shows the files included in the item being created
|
||||
private GUIListBox createItemFileList;
|
||||
|
||||
private GUIComponent buttonContainer;
|
||||
|
||||
private List<GUIButton> tabButtons = new List<GUIButton>();
|
||||
private readonly List<GUIButton> tabButtons = new List<GUIButton>();
|
||||
|
||||
private readonly HashSet<string> pendingPreviewImageDownloads = new HashSet<string>();
|
||||
private Dictionary<string, Sprite> itemPreviewSprites = new Dictionary<string, Sprite>();
|
||||
private readonly Dictionary<string, Sprite> itemPreviewSprites = new Dictionary<string, Sprite>();
|
||||
|
||||
private enum Tab
|
||||
{
|
||||
@@ -40,7 +38,7 @@ namespace Barotrauma
|
||||
Publish
|
||||
}
|
||||
|
||||
private GUIFrame[] tabs;
|
||||
private GUIComponent[] tabs;
|
||||
|
||||
private ContentPackage itemContentPackage;
|
||||
private Steamworks.Ugc.Editor? itemEditor;
|
||||
@@ -54,50 +52,63 @@ namespace Barotrauma
|
||||
|
||||
public SteamWorkshopScreen()
|
||||
{
|
||||
GameMain.Instance.OnResolutionChanged += OnResolutionChanged;
|
||||
|
||||
tabs = new GUIFrame[Enum.GetValues(typeof(Tab)).Length];
|
||||
|
||||
menu = new GUIFrame(new RectTransform(new Vector2(0.85f, 0.85f), GUI.Canvas, Anchor.Center) { MinSize = new Point(GameMain.GraphicsHeight, 0) });
|
||||
|
||||
var container = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.85f), menu.RectTransform, Anchor.Center) { RelativeOffset = new Vector2(0.0f, 0.05f) }) { Stretch = true };
|
||||
|
||||
var tabContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.7f), container.RectTransform), style: "InnerFrame");
|
||||
|
||||
var tabButtonHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.1f), tabContainer.RectTransform, Anchor.TopRight, Pivot.BottomRight),
|
||||
isHorizontal: true)
|
||||
{
|
||||
RelativeSpacing = 0.01f,
|
||||
Stretch = true
|
||||
};
|
||||
GameMain.Instance.OnResolutionChanged += CreateUI;
|
||||
CreateUI();
|
||||
}
|
||||
|
||||
private void CreateUI()
|
||||
{
|
||||
tabs = new GUIComponent[Enum.GetValues(typeof(Tab)).Length];
|
||||
menu = new GUIFrame(new RectTransform(new Vector2(0.9f, 0.9f), GUI.Canvas, Anchor.Center) { MinSize = new Point(GameMain.GraphicsHeight, 0) });
|
||||
|
||||
var container = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.95f), menu.RectTransform, Anchor.Center)) { Stretch = true };
|
||||
var topButtonContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.03f), container.RectTransform), isHorizontal: true);
|
||||
|
||||
foreach (Tab tab in Enum.GetValues(typeof(Tab)))
|
||||
{
|
||||
GUIButton tabButton = new GUIButton(new RectTransform(new Vector2(0.05f, 1.0f), tabButtonHolder.RectTransform),
|
||||
GUIButton tabButton = new GUIButton(new RectTransform(new Vector2(0.2f, 1.0f), topButtonContainer.RectTransform),
|
||||
TextManager.Get(tab.ToString() + "Tab"), style: "GUITabButton")
|
||||
{
|
||||
UserData = tab,
|
||||
OnClicked = (btn, userData) =>
|
||||
OnClicked = (btn, userData) =>
|
||||
{
|
||||
SelectTab((Tab)userData); return true;
|
||||
}
|
||||
};
|
||||
tabButtons.Add(tabButton);
|
||||
}
|
||||
topButtonContainer.RectTransform.MinSize = new Point(0, topButtonContainer.RectTransform.Children.Max(c => c.MinSize.Y));
|
||||
topButtonContainer.RectTransform.MaxSize = new Point(int.MaxValue, topButtonContainer.RectTransform.MinSize.Y);
|
||||
|
||||
var tabContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.7f), container.RectTransform), style: "InnerFrame");
|
||||
|
||||
var bottomButtonContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), container.RectTransform), isHorizontal: true);
|
||||
GUIButton backButton = new GUIButton(new RectTransform(new Vector2(0.1f, 0.9f), bottomButtonContainer.RectTransform) { MinSize = new Point(150, 0) },
|
||||
TextManager.Get("Back"))
|
||||
{
|
||||
OnClicked = GameMain.MainMenuScreen.ReturnToMainMenu
|
||||
};
|
||||
backButton.SelectedColor = backButton.Color;
|
||||
topButtonContainer.RectTransform.MinSize = new Point(0, backButton.RectTransform.MinSize.Y);
|
||||
topButtonContainer.RectTransform.MaxSize = new Point(int.MaxValue, backButton.RectTransform.MinSize.Y);
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
//Subscribed Mods tab
|
||||
//-------------------------------------------------------------------------------
|
||||
|
||||
tabs[(int)Tab.Mods] = new GUIFrame(new RectTransform(Vector2.One, tabContainer.RectTransform, Anchor.Center), style: null);
|
||||
|
||||
var modsContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1.0f), tabs[(int)Tab.Mods].RectTransform))
|
||||
tabs[(int)Tab.Mods] = new GUILayoutGroup(new RectTransform(new Vector2(0.98f, 0.95f), tabContainer.RectTransform, Anchor.Center), isHorizontal: true)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
|
||||
subscribedItemList = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.7f), modsContainer.RectTransform))
|
||||
var modsContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.4f, 1.0f), tabs[(int)Tab.Mods].RectTransform))
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
|
||||
subscribedItemList = new GUIListBox(new RectTransform(new Vector2(1.0f, 1.0f), modsContainer.RectTransform))
|
||||
{
|
||||
ScrollBarVisible = true,
|
||||
OnSelected = (GUIComponent component, object userdata) =>
|
||||
@@ -108,21 +119,25 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
|
||||
modsPreviewFrame = new GUIFrame(new RectTransform(new Vector2(0.5f, 1.0f), tabs[(int)Tab.Mods].RectTransform, Anchor.TopRight), style: "InnerFrame");
|
||||
modsPreviewFrame = new GUIFrame(new RectTransform(new Vector2(0.6f, 1.0f), tabs[(int)Tab.Mods].RectTransform, Anchor.TopRight), style: null);
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
//Popular Mods tab
|
||||
//-------------------------------------------------------------------------------
|
||||
|
||||
tabs[(int)Tab.Browse] = new GUIFrame(new RectTransform(Vector2.One, tabContainer.RectTransform, Anchor.Center), style: null);
|
||||
|
||||
var listContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1.0f), tabs[(int)Tab.Browse].RectTransform))
|
||||
tabs[(int)Tab.Browse] = new GUILayoutGroup(new RectTransform(new Vector2(0.98f, 0.95f), tabContainer.RectTransform, Anchor.Center), isHorizontal: true)
|
||||
{
|
||||
RelativeSpacing = 0.01f,
|
||||
Stretch = true
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
|
||||
topItemList = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.3f), listContainer.RectTransform))
|
||||
var listContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.4f, 1.0f), tabs[(int)Tab.Browse].RectTransform), childAnchor: Anchor.TopCenter)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
|
||||
topItemList = new GUIListBox(new RectTransform(new Vector2(1.0f, 1.9f), listContainer.RectTransform))
|
||||
{
|
||||
ScrollBarVisible = true,
|
||||
OnSelected = (GUIComponent component, object userdata) =>
|
||||
@@ -132,13 +147,8 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
|
||||
var findModsButtonContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.02f), listContainer.RectTransform), style: null);
|
||||
new GUIButton(new RectTransform(new Vector2(1.0f, 0.9f), findModsButtonContainer.RectTransform, Anchor.Center), TextManager.Get("FindModsButton"), style: null)
|
||||
new GUIButton(new RectTransform(new Vector2(1.0f, 0.02f), listContainer.RectTransform), TextManager.Get("FindModsButton"), style: "GUIButtonSmall")
|
||||
{
|
||||
Color = new Color(38, 86, 38, 75),
|
||||
HoverColor = new Color(85, 203, 99, 50),
|
||||
TextColor = Color.White,
|
||||
OutlineColor = new Color(72, 124, 77, 255),
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
SteamManager.OverlayCustomURL("steam://url/SteamWorkshopPage/" + SteamManager.AppID);
|
||||
@@ -146,13 +156,17 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
|
||||
browsePreviewFrame = new GUIFrame(new RectTransform(new Vector2(0.5f, 1.0f), tabs[(int)Tab.Browse].RectTransform, Anchor.TopRight), style: "InnerFrame");
|
||||
browsePreviewFrame = new GUIFrame(new RectTransform(new Vector2(0.6f, 1.0f), tabs[(int)Tab.Browse].RectTransform, Anchor.TopRight), style: null);
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
//Publish tab
|
||||
//-------------------------------------------------------------------------------
|
||||
|
||||
tabs[(int)Tab.Publish] = new GUIFrame(new RectTransform(Vector2.One, tabContainer.RectTransform, Anchor.Center), style: null);
|
||||
tabs[(int)Tab.Publish] = new GUILayoutGroup(new RectTransform(new Vector2(0.98f, 0.95f), tabContainer.RectTransform, Anchor.Center), isHorizontal: true)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
|
||||
var leftColumn = new GUILayoutGroup(new RectTransform(new Vector2(0.4f, 1.0f), tabs[(int)Tab.Publish].RectTransform))
|
||||
{
|
||||
@@ -160,7 +174,7 @@ namespace Barotrauma
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform), TextManager.Get("PublishedWorkshopItems"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform), TextManager.Get("PublishedWorkshopItems"), font: GUI.SubHeadingFont);
|
||||
publishedItemList = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.4f), leftColumn.RectTransform))
|
||||
{
|
||||
OnSelected = (component, userdata) =>
|
||||
@@ -178,7 +192,7 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform), TextManager.Get("YourWorkshopItems"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform), TextManager.Get("YourWorkshopItems"), font: GUI.SubHeadingFont);
|
||||
myItemList = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.4f), leftColumn.RectTransform))
|
||||
{
|
||||
OnSelected = (component, userdata) =>
|
||||
@@ -198,25 +212,11 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
|
||||
createItemFrame = new GUIFrame(new RectTransform(new Vector2(0.58f, 1.0f), tabs[(int)Tab.Publish].RectTransform, Anchor.TopRight), style: "InnerFrame");
|
||||
|
||||
buttonContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.08f), container.RectTransform), childAnchor: Anchor.CenterLeft);
|
||||
|
||||
GUIButton backButton = new GUIButton(new RectTransform(new Vector2(0.15f, 0.9f), buttonContainer.RectTransform) { MinSize = new Point(150, 0) },
|
||||
TextManager.Get("Back"), style: "GUIButtonLarge")
|
||||
{
|
||||
OnClicked = GameMain.MainMenuScreen.ReturnToMainMenu
|
||||
};
|
||||
backButton.SelectedColor = backButton.Color;
|
||||
createItemFrame = new GUIFrame(new RectTransform(new Vector2(0.58f, 1.0f), tabs[(int)Tab.Publish].RectTransform, Anchor.TopRight), style: null);
|
||||
|
||||
SelectTab(Tab.Mods);
|
||||
}
|
||||
|
||||
private void OnResolutionChanged()
|
||||
{
|
||||
menu.RectTransform.MinSize = new Point(GameMain.GraphicsHeight, 0);
|
||||
}
|
||||
|
||||
public override void Select()
|
||||
{
|
||||
base.Select();
|
||||
@@ -307,7 +307,8 @@ namespace Barotrauma
|
||||
private void RefreshMyItemList()
|
||||
{
|
||||
myItemList.ClearChildren();
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.2f), myItemList.Content.RectTransform), TextManager.Get("WorkshopLabelSubmarines"), textAlignment: Alignment.Center, font: GUI.LargeFont)
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.2f), myItemList.Content.RectTransform), TextManager.Get("WorkshopLabelSubmarines"),
|
||||
textAlignment: Alignment.CenterLeft, font: GUI.SubHeadingFont)
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
@@ -339,7 +340,8 @@ namespace Barotrauma
|
||||
CreateMyItemFrame(sub, myItemList);
|
||||
}
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.2f), myItemList.Content.RectTransform), TextManager.Get("WorkshopLabelContentPackages"), textAlignment: Alignment.Center, font: GUI.LargeFont)
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.2f), myItemList.Content.RectTransform), TextManager.Get("WorkshopLabelContentPackages"),
|
||||
textAlignment: Alignment.CenterLeft, font: GUI.SubHeadingFont)
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
@@ -495,7 +497,7 @@ namespace Barotrauma
|
||||
if (compatible.HasValue && !compatible.Value)
|
||||
{
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.5f, 0.3f), rightColumn.RectTransform),
|
||||
TextManager.Get("WorkshopItemIncompatible"), textColor: Color.Red)
|
||||
TextManager.Get("WorkshopItemIncompatible"), textColor: GUI.Style.Red)
|
||||
{
|
||||
ToolTip = TextManager.Get("WorkshopItemIncompatibleTooltip")
|
||||
};
|
||||
@@ -515,10 +517,10 @@ namespace Barotrauma
|
||||
{
|
||||
if (enabledTickBox != null) { enabledTickBox.Enabled = false; }
|
||||
itemFrame.ToolTip = e.Message;
|
||||
itemFrame.Color = Color.Red;
|
||||
itemFrame.HoverColor = Color.Red;
|
||||
itemFrame.SelectedColor = Color.Red;
|
||||
titleText.TextColor = Color.Red;
|
||||
itemFrame.Color = GUI.Style.Red;
|
||||
itemFrame.HoverColor = GUI.Style.Red;
|
||||
itemFrame.SelectedColor = GUI.Style.Red;
|
||||
titleText.TextColor = GUI.Style.Red;
|
||||
|
||||
if (item?.IsSubscribed ?? false)
|
||||
{
|
||||
@@ -568,13 +570,8 @@ namespace Barotrauma
|
||||
}
|
||||
else
|
||||
{
|
||||
var downloadBtn = new GUIButton(new RectTransform(new Point((int)(32 * GUI.Scale)), rightColumn.RectTransform), "+", style: null)
|
||||
var downloadBtn = new GUIButton(new RectTransform(new Point((int)(32 * GUI.Scale)), rightColumn.RectTransform), "", style: "GUIPlusButton")
|
||||
{
|
||||
Font = GUI.LargeFont,
|
||||
Color = new Color(38, 65, 86, 255),
|
||||
HoverColor = new Color(85, 160, 203, 255),
|
||||
TextColor = Color.White,
|
||||
OutlineColor = new Color(72, 103, 124, 255),
|
||||
ToolTip = TextManager.Get("DownloadButton"),
|
||||
ForceUpperCase = true,
|
||||
UserData = item
|
||||
@@ -675,9 +672,7 @@ namespace Barotrauma
|
||||
itemPreviewSprites.Add(item?.PreviewImageUrl, newSprite);
|
||||
}
|
||||
|
||||
|
||||
var previewImage = listBox.Content.FindChild(item)?.GetChildByUserData("previewimage") as GUIImage;
|
||||
if (previewImage != null)
|
||||
if (listBox.Content.FindChild(item)?.GetChildByUserData("previewimage") is GUIImage previewImage)
|
||||
{
|
||||
previewImage.Sprite = newSprite;
|
||||
}
|
||||
@@ -714,11 +709,11 @@ namespace Barotrauma
|
||||
if (SteamManager.EnableWorkShopItem(item, false, out _))
|
||||
{
|
||||
textBlock.Text = TextManager.Get("workshopiteminstalled");
|
||||
frame.Flash(Color.LightGreen);
|
||||
frame.Flash(GUI.Style.Green);
|
||||
}
|
||||
else
|
||||
{
|
||||
frame.Flash(Color.Red);
|
||||
frame.Flash(GUI.Style.Red);
|
||||
}
|
||||
RefreshSubscribedItems();
|
||||
});
|
||||
@@ -738,14 +733,14 @@ namespace Barotrauma
|
||||
|
||||
var updateButton = tickBox.Parent.FindChild("updatebutton");
|
||||
|
||||
string errorMsg = "";
|
||||
string errorMsg;
|
||||
if (tickBox.Selected)
|
||||
{
|
||||
if (!SteamManager.EnableWorkShopItem(item, false, out errorMsg))
|
||||
{
|
||||
tickBox.Visible = false;
|
||||
tickBox.Selected = false;
|
||||
if (tickBox.Parent.GetChildByUserData("titletext") is GUITextBlock titleText) { titleText.TextColor = Color.Red; }
|
||||
if (tickBox.Parent.GetChildByUserData("titletext") is GUITextBlock titleText) { titleText.TextColor = GUI.Style.Red; }
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -773,35 +768,26 @@ namespace Barotrauma
|
||||
{
|
||||
itemPreviewFrame.ClearChildren();
|
||||
|
||||
if (item == null) return;
|
||||
if (item == null) { return; }
|
||||
|
||||
var content = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), itemPreviewFrame.RectTransform, Anchor.Center))
|
||||
{
|
||||
Stretch = true,
|
||||
UserData = item,
|
||||
RelativeSpacing = 0.015f
|
||||
UserData = item
|
||||
};
|
||||
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.005f), content.RectTransform), style: null);
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), content.RectTransform), item?.Title, textAlignment: Alignment.TopLeft, font: GUI.LargeFont, wrap: true);
|
||||
|
||||
var creatorHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), content.RectTransform)) { IsHorizontal = true, Stretch = true };
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.3f, 0.0f), creatorHolder.RectTransform),
|
||||
TextManager.Get("WorkshopItemCreator"), textAlignment: Alignment.TopLeft, wrap: true);
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.3f, 0.0f), creatorHolder.RectTransform),
|
||||
item?.Owner.Name, textAlignment: Alignment.TopRight, wrap: true);
|
||||
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(0.3f, 1.0f), creatorHolder.RectTransform, Anchor.BottomRight), TextManager.Get("WorkshopShowItemInSteam"), style: null)
|
||||
var headerArea = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.1f), content.RectTransform))
|
||||
{
|
||||
Color = new Color(38, 86, 38, 75),
|
||||
HoverColor = new Color(85, 203, 99, 50),
|
||||
TextColor = Color.White,
|
||||
OutlineColor = new Color(72, 124, 77, 255),
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), headerArea.RectTransform), item?.Title, textAlignment: Alignment.CenterLeft, font: GUI.LargeFont, wrap: true);
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.3f, 0.0f), headerArea.RectTransform), item?.Owner.Name, textAlignment: Alignment.CenterLeft, font: GUI.SubHeadingFont);
|
||||
|
||||
var btn = new GUIButton(new RectTransform(new Vector2(0.2f, 1.0f), headerArea.RectTransform, Anchor.CenterRight), TextManager.Get("WorkshopShowItemInSteam"), style: "GUIButtonSmall")
|
||||
{
|
||||
IgnoreLayoutGroups = true,
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
SteamManager.OverlayCustomURL("steam://url/CommunityFilePage/" + item?.Id);
|
||||
@@ -809,11 +795,20 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.05f), content.RectTransform), style: null);
|
||||
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.005f), content.RectTransform), style: "HorizontalLine");
|
||||
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.05f), content.RectTransform), style: null);
|
||||
|
||||
//---------------
|
||||
|
||||
var centerArea = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.5f), content.RectTransform), isHorizontal: true)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.01f,
|
||||
Color = Color.Black * 0.9f
|
||||
RelativeSpacing = 0.01f
|
||||
};
|
||||
|
||||
if (itemPreviewSprites.ContainsKey(item?.PreviewImageUrl))
|
||||
@@ -824,43 +819,33 @@ namespace Barotrauma
|
||||
{
|
||||
new GUIImage(new RectTransform(new Vector2(0.5f, 0.0f), centerArea.RectTransform), SteamManager.DefaultPreviewImage, scaleToFit: true);
|
||||
}
|
||||
|
||||
var descriptionContainer = new GUIListBox(new RectTransform(new Vector2(0.5f, 1.0f), centerArea.RectTransform)) { ScrollBarVisible = true };
|
||||
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.0f), descriptionContainer.Content.RectTransform) { MinSize = new Point(0, 5) }, style: null);
|
||||
|
||||
string description = item?.Description;
|
||||
description = ToolBox.RemoveBBCodeTags(description);
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), descriptionContainer.Content.RectTransform), description, wrap: true)
|
||||
var statsFrame = new GUIFrame(new RectTransform(new Vector2(0.5f, 1.0f), centerArea.RectTransform), style: "GUIFrameListBox");
|
||||
var statsContent = new GUILayoutGroup(new RectTransform(new Vector2(0.95f), statsFrame.RectTransform, Anchor.Center))
|
||||
{
|
||||
CanBeFocused = false
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.01f
|
||||
};
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.0f), descriptionContainer.Content.RectTransform) { MinSize = new Point(0, 5) }, style: null);
|
||||
|
||||
|
||||
//score -------------------------------------
|
||||
var scoreContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), content.RectTransform), isHorizontal: true, childAnchor: Anchor.CenterLeft)
|
||||
var scoreContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), statsContent.RectTransform), isHorizontal: true, childAnchor: Anchor.CenterLeft)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.2f, 0.0f), scoreContainer.RectTransform), TextManager.Get("WorkshopItemScore"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.2f, 0.0f), scoreContainer.RectTransform), TextManager.Get("WorkshopItemScore"), font: GUI.SubHeadingFont);
|
||||
int starCount = (int)Math.Round((item?.Score ?? 0.0f) * 5);
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
new GUIImage(new RectTransform(new Point(scoreContainer.Rect.Height), scoreContainer.RectTransform),
|
||||
i < starCount ? "GUIStarIconBright" : "GUIStarIconDark");
|
||||
}
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.2f, 0.0f), scoreContainer.RectTransform), TextManager.GetWithVariable("WorkshopItemVotes", "[votecount]", (item.Value.VotesUp + item.Value.VotesDown).ToString()));
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.2f, 0.0f), scoreContainer.RectTransform),
|
||||
TextManager.GetWithVariable("WorkshopItemVotes", "[votecount]", (item.Value.VotesUp + item.Value.VotesDown).ToString()),
|
||||
textAlignment: Alignment.CenterRight);
|
||||
|
||||
//tags ------------------------------------
|
||||
var tagContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), content.RectTransform), isHorizontal: true, childAnchor: Anchor.CenterLeft)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.05f
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.2f, 1.0f), tagContainer.RectTransform), TextManager.Get("WorkshopItemTags"));
|
||||
//tags ------------------------------------
|
||||
|
||||
List<string> tags = new List<string>();
|
||||
for (int i = 0; i < item?.Tags.Length && i < 5; i++)
|
||||
{
|
||||
@@ -871,31 +856,37 @@ namespace Barotrauma
|
||||
}
|
||||
if (tags.Count > 0)
|
||||
{
|
||||
if (tags.Count == 1)
|
||||
var tagContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), statsContent.RectTransform), isHorizontal: true, childAnchor: Anchor.CenterLeft)
|
||||
{
|
||||
tagContainer.RectTransform.RelativeSize = new Vector2(0.7f, tagContainer.RectTransform.RelativeSize.Y);
|
||||
}
|
||||
new GUITextBlock(new RectTransform(new Vector2(tags.Count == 1 ? 0.5f : 0.8f, 1.0f), tagContainer.RectTransform, Anchor.TopRight), string.Join(", ", tags))
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.05f,
|
||||
CanBeFocused = true
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.2f, 1.0f), tagContainer.RectTransform), TextManager.Get("WorkshopItemTags"), font: GUI.SubHeadingFont);
|
||||
|
||||
var t = new GUITextBlock(new RectTransform(new Vector2(0.8f, 1.0f), tagContainer.RectTransform, Anchor.TopRight), string.Join(", ", tags), textAlignment: Alignment.CenterRight);
|
||||
t.RectTransform.SizeChanged += () =>
|
||||
{
|
||||
AutoScale = true
|
||||
t.TextScale = 1.0f;
|
||||
t.AutoScale = true;
|
||||
};
|
||||
}
|
||||
|
||||
var fileSize = new GUITextBlock(new RectTransform(new Vector2(0.7f, 0.0f), content.RectTransform), TextManager.Get("WorkshopItemFileSize"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.5f, 0.0f), fileSize.RectTransform, Anchor.TopRight), MathUtils.GetBytesReadable(item?.IsInstalled ?? false ? (long)item.Value.SizeBytes : item.Value.DownloadBytesDownloaded), textAlignment: Alignment.TopRight);
|
||||
var fileSize = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), statsContent.RectTransform), TextManager.Get("WorkshopItemFileSize"), font: GUI.SubHeadingFont);
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.5f, 0.0f), fileSize.RectTransform, Anchor.TopRight), MathUtils.GetBytesReadable(item?.IsInstalled ?? false ? (long)item.Value.SizeBytes : item.Value.DownloadBytesDownloaded), textAlignment: Alignment.CenterRight);
|
||||
|
||||
//var dateContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.0f), content.RectTransform), isHorizontal: true);
|
||||
|
||||
var creationDate = new GUITextBlock(new RectTransform(new Vector2(0.7f, 0.0f), content.RectTransform), TextManager.Get("WorkshopItemCreationDate"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.5f, 0.0f), creationDate.RectTransform, Anchor.CenterRight), item?.Created.ToString("dd.MM.yyyy"), textAlignment: Alignment.TopRight);
|
||||
var creationDate = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), statsContent.RectTransform), TextManager.Get("WorkshopItemCreationDate"), font: GUI.SubHeadingFont);
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.5f, 0.0f), creationDate.RectTransform, Anchor.CenterRight), item?.Created.ToString("dd.MM.yyyy"), textAlignment: Alignment.CenterRight);
|
||||
|
||||
var modificationDate = new GUITextBlock(new RectTransform(new Vector2(0.7f, 0.0f), content.RectTransform), TextManager.Get("WorkshopItemModificationDate"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.5f, 0.0f), modificationDate.RectTransform, Anchor.CenterRight), item?.Updated.ToString("dd.MM.yyyy"), textAlignment: Alignment.TopRight);
|
||||
var modificationDate = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), statsContent.RectTransform), TextManager.Get("WorkshopItemModificationDate"), font: GUI.SubHeadingFont);
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.5f, 0.0f), modificationDate.RectTransform, Anchor.CenterRight), item?.Updated.ToString("dd.MM.yyyy"), textAlignment: Alignment.CenterRight);
|
||||
|
||||
if (item?.IsSubscribed ?? false)
|
||||
{
|
||||
var buttonContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), content.RectTransform) { MinSize = new Point(0, 25) }, isHorizontal: true);
|
||||
new GUIButton(new RectTransform(new Vector2(0.5f, 0.95f), buttonContainer.RectTransform), TextManager.Get("WorkshopItemUnsubscribe"))
|
||||
var buttonContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.05f), statsContent.RectTransform), style: null);
|
||||
var unsubscribeButton = new GUIButton(new RectTransform(new Vector2(0.5f, 0.95f), buttonContainer.RectTransform, Anchor.Center), TextManager.Get("WorkshopItemUnsubscribe"), style: "GUIButtonSmall")
|
||||
{
|
||||
UserData = item,
|
||||
OnClicked = (btn, userdata) =>
|
||||
@@ -907,7 +898,26 @@ namespace Barotrauma
|
||||
return true;
|
||||
}
|
||||
};
|
||||
buttonContainer.RectTransform.MinSize = unsubscribeButton.RectTransform.MinSize;
|
||||
statsContent.Recalculate();
|
||||
}
|
||||
|
||||
//------------------
|
||||
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.05f), content.RectTransform), style: null);
|
||||
|
||||
var descriptionContainer = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.5f), content.RectTransform)) { ScrollBarVisible = true };
|
||||
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.0f), descriptionContainer.Content.RectTransform) { MinSize = new Point(0, 5) }, style: null);
|
||||
|
||||
string description = item?.Description;
|
||||
description = ToolBox.RemoveBBCodeTags(description);
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), descriptionContainer.Content.RectTransform), description, wrap: true)
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
}
|
||||
|
||||
private void CreateWorkshopItem(Submarine sub)
|
||||
@@ -1021,7 +1031,7 @@ namespace Barotrauma
|
||||
return;
|
||||
}
|
||||
|
||||
var createItemContent = new GUILayoutGroup(new RectTransform(new Vector2(0.92f, 0.92f), createItemFrame.RectTransform, Anchor.Center))
|
||||
var createItemContent = new GUILayoutGroup(new RectTransform(new Vector2(0.98f, 0.98f), createItemFrame.RectTransform, Anchor.Center))
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.02f
|
||||
@@ -1030,15 +1040,15 @@ namespace Barotrauma
|
||||
var topPanel = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.4f), createItemContent.RectTransform), isHorizontal: true)
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.05f
|
||||
RelativeSpacing = 0.01f
|
||||
};
|
||||
|
||||
var topLeftColumn = new GUILayoutGroup(new RectTransform(new Vector2(0.25f, 1.0f), topPanel.RectTransform))
|
||||
var topLeftColumn = new GUILayoutGroup(new RectTransform(new Vector2(0.3f, 1.0f), topPanel.RectTransform))
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
var topRightColumn = new GUILayoutGroup(new RectTransform(new Vector2(0.75f, 1.0f), topPanel.RectTransform))
|
||||
var topRightColumn = new GUILayoutGroup(new RectTransform(new Vector2(0.6f, 1.0f), topPanel.RectTransform))
|
||||
{
|
||||
Stretch = true,
|
||||
RelativeSpacing = 0.02f
|
||||
@@ -1046,17 +1056,18 @@ namespace Barotrauma
|
||||
|
||||
// top right column --------------------------------------------------------------------------------------
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), topRightColumn.RectTransform), TextManager.Get("WorkshopItemTitle"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), topRightColumn.RectTransform), TextManager.Get("WorkshopItemTitle"), font: GUI.SubHeadingFont);
|
||||
var titleBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.15f), topRightColumn.RectTransform), itemEditor?.Title);
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), topRightColumn.RectTransform), TextManager.Get("WorkshopItemDescription"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), topRightColumn.RectTransform), TextManager.Get("WorkshopItemDescription"), font: GUI.SubHeadingFont);
|
||||
|
||||
var descriptionContainer = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.4f), topRightColumn.RectTransform));
|
||||
var descriptionBox = new GUITextBox(new RectTransform(Vector2.One, descriptionContainer.Content.RectTransform), itemEditor?.Description, textAlignment: Alignment.TopLeft, font: GUI.SmallFont, wrap: true);
|
||||
var descriptionBox = new GUITextBox(new RectTransform(Vector2.One, descriptionContainer.Content.RectTransform), itemEditor?.Description,
|
||||
textAlignment: Alignment.TopLeft, style: "GUITextBoxNoBorder", font: GUI.SmallFont, wrap: true);
|
||||
descriptionBox.OnTextChanged += (textBox, text) =>
|
||||
{
|
||||
Vector2 textSize = textBox.Font.MeasureString(descriptionBox.WrappedText);
|
||||
textBox.RectTransform.NonScaledSize = new Point(textBox.RectTransform.NonScaledSize.X, Math.Max(descriptionContainer.Rect.Height, (int)textSize.Y + 10));
|
||||
textBox.RectTransform.NonScaledSize = new Point(textBox.RectTransform.NonScaledSize.X, Math.Max(descriptionContainer.Content.Rect.Height, (int)textSize.Y + 10));
|
||||
descriptionContainer.UpdateScrollBarSize();
|
||||
descriptionContainer.BarScroll = 1.0f;
|
||||
itemEditor = itemEditor?.WithDescription(text);
|
||||
@@ -1064,7 +1075,7 @@ namespace Barotrauma
|
||||
};
|
||||
descriptionContainer.RectTransform.SizeChanged += () => { descriptionBox.Text = descriptionBox.Text; };
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), topRightColumn.RectTransform), TextManager.Get("WorkshopItemTags"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), topRightColumn.RectTransform), TextManager.Get("WorkshopItemTags"), font: GUI.SubHeadingFont);
|
||||
var tagHolder = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.17f), topRightColumn.RectTransform) { MinSize = new Point(0, 50) }, isHorizontal: true)
|
||||
{
|
||||
Spacing = 5
|
||||
@@ -1083,15 +1094,13 @@ namespace Barotrauma
|
||||
|
||||
foreach (string tag in availableTags)
|
||||
{
|
||||
var tagBtn = new GUIButton(new RectTransform(new Vector2(0.25f, 0.8f), tagHolder.Content.RectTransform, anchor: Anchor.CenterLeft), tag.CapitaliseFirstInvariant());
|
||||
var tagBtn = new GUIButton(new RectTransform(new Vector2(0.25f, 1.0f), tagHolder.Content.RectTransform, anchor: Anchor.CenterLeft),
|
||||
tag.CapitaliseFirstInvariant(), style: "GUIButtonRound");
|
||||
tagBtn.TextBlock.AutoScale = true;
|
||||
tagBtn.Color *= 0.5f;
|
||||
tagBtn.SelectedColor = Color.LightGreen;
|
||||
tagBtn.HoverColor = Color.Lerp(tagBtn.HoverColor, Color.LightGreen, 0.5f);
|
||||
tagBtn.Selected = itemEditor?.Tags?.Any(t => t.ToLowerInvariant() == tag) ?? false;
|
||||
|
||||
Color defaultTextColor = tagBtn.TextColor;
|
||||
tagBtn.TextColor = tagBtn.Selected ? Color.LightGreen : defaultTextColor;
|
||||
tagBtn.TextColor = tagBtn.Selected ? GUI.Style.Green : defaultTextColor;
|
||||
|
||||
tagBtn.OnClicked = (btn, userdata) =>
|
||||
{
|
||||
@@ -1099,7 +1108,7 @@ namespace Barotrauma
|
||||
{
|
||||
if (!(itemEditor?.Tags?.Any(t => t.ToLowerInvariant() == tag) ?? false)) { itemEditor = itemEditor?.WithTag(tagBtn.Text); }
|
||||
tagBtn.Selected = true;
|
||||
tagBtn.TextColor = Color.LightGreen;
|
||||
tagBtn.TextColor = GUI.Style.Green;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1114,10 +1123,10 @@ namespace Barotrauma
|
||||
|
||||
// top left column --------------------------------------------------------------------------------------
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), topLeftColumn.RectTransform), TextManager.Get("WorkshopItemPreviewImage"));
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), topLeftColumn.RectTransform), TextManager.Get("WorkshopItemPreviewImage"), font: GUI.SubHeadingFont);
|
||||
|
||||
var previewIcon = new GUIImage(new RectTransform(new Vector2(1.0f, 0.7f), topLeftColumn.RectTransform), SteamManager.DefaultPreviewImage, scaleToFit: true);
|
||||
new GUIButton(new RectTransform(new Vector2(1.0f, 0.2f), topLeftColumn.RectTransform), TextManager.Get("WorkshopItemBrowse"))
|
||||
new GUIButton(new RectTransform(new Vector2(1.0f, 0.2f), topLeftColumn.RectTransform), TextManager.Get("WorkshopItemBrowse"), style: "GUIButtonSmall")
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
@@ -1190,8 +1199,8 @@ namespace Barotrauma
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.02f), createItemContent.RectTransform), style: null);
|
||||
|
||||
var fileListTitle = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), createItemContent.RectTransform), TextManager.Get("WorkshopItemFiles"));
|
||||
new GUIButton(new RectTransform(new Vector2(0.3f, 1.0f), fileListTitle.RectTransform, Anchor.CenterRight), TextManager.Get("WorkshopItemShowFolder"))
|
||||
var fileListTitle = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), createItemContent.RectTransform), TextManager.Get("WorkshopItemFiles"), font: GUI.SubHeadingFont);
|
||||
new GUIButton(new RectTransform(new Vector2(0.3f, 1.0f), fileListTitle.RectTransform, Anchor.CenterRight), TextManager.Get("WorkshopItemShowFolder"), style: "GUIButtonSmall")
|
||||
{
|
||||
IgnoreLayoutGroups = true,
|
||||
OnClicked = (btn, userdata) => { ToolBox.OpenFileWithShell(Path.GetFullPath(Path.GetDirectoryName(itemContentPackage.Path))); return true; }
|
||||
@@ -1201,10 +1210,10 @@ namespace Barotrauma
|
||||
|
||||
var buttonContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), createItemContent.RectTransform), isHorizontal: true)
|
||||
{
|
||||
RelativeSpacing = 0.05f
|
||||
RelativeSpacing = 0.02f
|
||||
};
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(0.4f, 1.0f), buttonContainer.RectTransform, Anchor.TopRight), TextManager.Get("WorkshopItemRefreshFileList"))
|
||||
new GUIButton(new RectTransform(new Vector2(0.3f, 1.0f), buttonContainer.RectTransform, Anchor.TopRight), TextManager.Get("WorkshopItemRefreshFileList"), style: "GUIButtonSmall")
|
||||
{
|
||||
ToolTip = TextManager.Get("WorkshopItemRefreshFileListTooltip"),
|
||||
OnClicked = (btn, userdata) =>
|
||||
@@ -1214,7 +1223,7 @@ namespace Barotrauma
|
||||
return true;
|
||||
}
|
||||
};
|
||||
new GUIButton(new RectTransform(new Vector2(0.4f, 1.0f), buttonContainer.RectTransform, Anchor.TopRight), TextManager.Get("WorkshopItemAddFiles"))
|
||||
new GUIButton(new RectTransform(new Vector2(0.3f, 1.0f), buttonContainer.RectTransform, Anchor.TopRight), TextManager.Get("WorkshopItemAddFiles"), style: "GUIButtonSmall")
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
@@ -1236,58 +1245,56 @@ namespace Barotrauma
|
||||
}
|
||||
};
|
||||
|
||||
var bottomRow = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.25f), createItemContent.RectTransform), isHorizontal: true);
|
||||
//the item has been already published if it has a non-zero ID -> allow adding a changenote
|
||||
if ((itemEditor?.FileId ?? 0) > 0)
|
||||
{
|
||||
var bottomRow = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.25f), createItemContent.RectTransform), isHorizontal: true);
|
||||
var changeNoteLayout = new GUILayoutGroup(new RectTransform(new Vector2(0.7f, 1.0f), bottomRow.RectTransform));
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.25f), changeNoteLayout.RectTransform), TextManager.Get("WorkshopItemChangenote"))
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.25f), changeNoteLayout.RectTransform), TextManager.Get("WorkshopItemChangenote"), font: GUI.SubHeadingFont)
|
||||
{
|
||||
ToolTip = TextManager.Get("WorkshopItemChangenoteTooltip")
|
||||
};
|
||||
|
||||
|
||||
var changenoteContainer = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.75f), changeNoteLayout.RectTransform));
|
||||
var changenoteBox = new GUITextBox(new RectTransform(Vector2.One, changenoteContainer.Content.RectTransform), "", textAlignment: Alignment.TopLeft, wrap: true)
|
||||
var changenoteBox = new GUITextBox(new RectTransform(Vector2.One, changenoteContainer.Content.RectTransform), "",
|
||||
textAlignment: Alignment.TopLeft, style: "GUITextBoxNoBorder", wrap: true)
|
||||
{
|
||||
ToolTip = TextManager.Get("WorkshopItemChangenoteTooltip")
|
||||
};
|
||||
changenoteBox.OnTextChanged += (textBox, text) =>
|
||||
{
|
||||
Vector2 textSize = textBox.Font.MeasureString(changenoteBox.WrappedText);
|
||||
textBox.RectTransform.NonScaledSize = new Point(textBox.RectTransform.NonScaledSize.X, Math.Max(changenoteContainer.Rect.Height, (int)textSize.Y + 10));
|
||||
textBox.RectTransform.NonScaledSize = new Point(textBox.RectTransform.NonScaledSize.X, Math.Max(changenoteContainer.Content.Rect.Height, (int)textSize.Y + 10));
|
||||
changenoteContainer.UpdateScrollBarSize();
|
||||
changenoteContainer.BarScroll = 1.0f;
|
||||
itemEditor = itemEditor?.WithChangeLog(text);
|
||||
return true;
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(0.7f, 1.0f), bottomRow.RectTransform), style: null);
|
||||
}
|
||||
|
||||
var visibilityLayout = new GUILayoutGroup(new RectTransform(new Vector2(0.3f, 1.0f), bottomRow.RectTransform));
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.25f), visibilityLayout.RectTransform), TextManager.Get("WorkshopItemVisibility"))
|
||||
var bottomButtonContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.08f), createItemContent.RectTransform),
|
||||
isHorizontal: true, childAnchor: Anchor.CenterLeft)
|
||||
{
|
||||
RelativeSpacing = 0.03f
|
||||
};
|
||||
|
||||
var visibilityLabel = new GUITextBlock(new RectTransform(new Vector2(0.15f, 1.0f), bottomButtonContainer.RectTransform), TextManager.Get("WorkshopItemVisibility"),
|
||||
textAlignment: Alignment.CenterLeft, font: GUI.SubHeadingFont)
|
||||
{
|
||||
ToolTip = TextManager.Get("WorkshopItemVisibilityTooltip")
|
||||
};
|
||||
visibilityLabel.RectTransform.MaxSize = new Point((int)(visibilityLabel.TextSize.X * 1.1f), 0);
|
||||
|
||||
var visibilityListBox = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.75f), visibilityLayout.RectTransform));
|
||||
var visibilityDropDown = new GUIDropDown(new RectTransform(new Vector2(0.2f, 1.0f), bottomButtonContainer.RectTransform));
|
||||
foreach (VisibilityType visibilityType in Enum.GetValues(typeof(VisibilityType)))
|
||||
{
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.25f), visibilityListBox.Content.RectTransform), TextManager.Get("WorkshopItemVisibility."+visibilityType.ToString()))
|
||||
{
|
||||
UserData = visibilityType
|
||||
};
|
||||
visibilityDropDown.AddItem(TextManager.Get("WorkshopItemVisibility." + visibilityType), visibilityType);
|
||||
}
|
||||
visibilityListBox.Select(itemEditor.Value.IsPublic ? VisibilityType.Public :
|
||||
itemEditor.Value.IsFriendsOnly ? VisibilityType.FriendsOnly :
|
||||
VisibilityType.Private);
|
||||
visibilityListBox.OnSelected = (lb, ud) =>
|
||||
visibilityDropDown.SelectItem(itemEditor.Value.IsPublic ? VisibilityType.Public :
|
||||
itemEditor.Value.IsFriendsOnly ? VisibilityType.FriendsOnly :
|
||||
VisibilityType.Private);
|
||||
visibilityDropDown.OnSelected = (c, ud) =>
|
||||
{
|
||||
if (!(ud is VisibilityType visibilityType)) { return false; }
|
||||
switch (visibilityType)
|
||||
@@ -1306,18 +1313,13 @@ namespace Barotrauma
|
||||
return true;
|
||||
};
|
||||
|
||||
var bottomButtonContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.08f), createItemContent.RectTransform), isHorizontal: true)
|
||||
{
|
||||
RelativeSpacing = 0.05f
|
||||
};
|
||||
|
||||
if ((itemEditor?.FileId ?? 0) > 0)
|
||||
{
|
||||
new GUIButton(new RectTransform(new Vector2(0.3f, 1.0f), bottomButtonContainer.RectTransform),
|
||||
TextManager.Get("WorkshopItemDelete"), style: "GUIButtonLarge")
|
||||
new GUIButton(new RectTransform(new Vector2(0.2f, 1.0f), bottomButtonContainer.RectTransform),
|
||||
TextManager.Get("WorkshopItemDelete"), style: "GUIButtonSmall")
|
||||
{
|
||||
ToolTip = TextManager.Get("WorkshopItemDeleteTooltip"),
|
||||
TextColor = Color.Red,
|
||||
TextColor = GUI.Style.Red,
|
||||
OnClicked = (btn, userData) =>
|
||||
{
|
||||
if (itemEditor == null) { return false; }
|
||||
@@ -1350,7 +1352,7 @@ namespace Barotrauma
|
||||
};
|
||||
}
|
||||
var publishBtn = new GUIButton(new RectTransform(new Vector2(0.3f, 1.0f), bottomButtonContainer.RectTransform, Anchor.CenterRight),
|
||||
TextManager.Get((itemEditor?.FileId ?? 0) > 0 ? "WorkshopItemUpdate" : "WorkshopItemPublish"), style: "GUIButtonLarge")
|
||||
TextManager.Get((itemEditor?.FileId ?? 0) > 0 ? "WorkshopItemUpdate" : "WorkshopItemPublish"))
|
||||
{
|
||||
IgnoreLayoutGroups = true,
|
||||
ToolTip = TextManager.Get("WorkshopItemPublishTooltip"),
|
||||
@@ -1360,17 +1362,17 @@ namespace Barotrauma
|
||||
itemEditor = itemEditor?.WithDescription(descriptionBox.Text);
|
||||
if (string.IsNullOrWhiteSpace(itemEditor?.Title))
|
||||
{
|
||||
titleBox.Flash(Color.Red);
|
||||
titleBox.Flash(GUI.Style.Red);
|
||||
return false;
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(itemEditor?.Description))
|
||||
{
|
||||
descriptionBox.Flash(Color.Red);
|
||||
descriptionBox.Flash(GUI.Style.Red);
|
||||
return false;
|
||||
}
|
||||
if (createItemFileList.Content.CountChildren == 0)
|
||||
{
|
||||
createItemFileList.Flash(Color.Red);
|
||||
createItemFileList.Flash(GUI.Style.Red);
|
||||
}
|
||||
|
||||
if (!itemContentPackage.CheckErrors(out List<string> errorMessages))
|
||||
@@ -1472,6 +1474,7 @@ namespace Barotrauma
|
||||
var fileFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.12f), createItemFileList.Content.RectTransform) { MinSize = new Point(0, 20) },
|
||||
style: "ListBoxElement")
|
||||
{
|
||||
CanBeFocused = false,
|
||||
UserData = contentFile
|
||||
};
|
||||
|
||||
@@ -1494,12 +1497,12 @@ namespace Barotrauma
|
||||
};
|
||||
if (!fileExists)
|
||||
{
|
||||
nameText.TextColor = Color.Red;
|
||||
nameText.TextColor = GUI.Style.Red;
|
||||
tickBox.ToolTip = TextManager.Get("WorkshopItemFileNotFound");
|
||||
}
|
||||
else if (illegalPath && !ContentPackage.List.Any(cp => cp.Files.Any(f => Path.GetFullPath(f.Path) == Path.GetFullPath(contentFile.Path))))
|
||||
{
|
||||
nameText.TextColor = Color.Red;
|
||||
nameText.TextColor = GUI.Style.Red;
|
||||
tickBox.ToolTip = TextManager.Get("WorkshopItemIllegalPath");
|
||||
}
|
||||
|
||||
@@ -1521,7 +1524,7 @@ namespace Barotrauma
|
||||
return true;
|
||||
};
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(0.2f, 1.0f), content.RectTransform), TextManager.Get("Delete"))
|
||||
new GUIButton(new RectTransform(new Vector2(0.2f, 1.0f), content.RectTransform), TextManager.Get("Delete"), style: "GUIButtonSmall")
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
@@ -1534,7 +1537,8 @@ namespace Barotrauma
|
||||
};
|
||||
|
||||
content.Recalculate();
|
||||
tickBox.RectTransform.NonScaledSize = new Point(content.Rect.Height);
|
||||
fileFrame.RectTransform.MinSize =
|
||||
new Point(0, (int)(content.RectTransform.Children.Max(c => c.MinSize.Y) / content.RectTransform.RelativeSize.Y));
|
||||
nameText.Text = ToolBox.LimitString(nameText.Text, nameText.Font, maxWidth: nameText.Rect.Width);
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user