Merge branch 'master' of https://github.com/Regalis11/Barotrauma into develop
This commit is contained in:
@@ -247,30 +247,33 @@ namespace Barotrauma
|
||||
UpdateCrew();
|
||||
}
|
||||
|
||||
public void UpdateHireables()
|
||||
{
|
||||
UpdateHireables(campaign?.CurrentLocation);
|
||||
}
|
||||
|
||||
private void UpdateHireables(Location location)
|
||||
{
|
||||
if (hireableList != null)
|
||||
if (hireableList == null) { return; }
|
||||
hireableList.Content.Children.ToList().ForEach(c => hireableList.RemoveChild(c));
|
||||
var hireableCharacters = location.GetHireableCharacters();
|
||||
if (hireableCharacters.None())
|
||||
{
|
||||
hireableList.Content.Children.ToList().ForEach(c => hireableList.RemoveChild(c));
|
||||
var hireableCharacters = location.GetHireableCharacters();
|
||||
if (hireableCharacters.None())
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.2f), hireableList.Content.RectTransform), TextManager.Get("HireUnavailable"), textAlignment: Alignment.Center)
|
||||
{
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.2f), hireableList.Content.RectTransform), TextManager.Get("HireUnavailable"), textAlignment: Alignment.Center)
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (CharacterInfo c in hireableCharacters)
|
||||
{
|
||||
if (c == null) { continue; }
|
||||
CreateCharacterFrame(c, hireableList);
|
||||
}
|
||||
}
|
||||
sortingDropDown.SelectItem(SortingMethod.JobAsc);
|
||||
hireableList.UpdateScrollBarSize();
|
||||
CanBeFocused = false
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (CharacterInfo c in hireableCharacters)
|
||||
{
|
||||
if (c == null) { continue; }
|
||||
CreateCharacterFrame(c, hireableList);
|
||||
}
|
||||
}
|
||||
sortingDropDown.SelectItem(SortingMethod.JobAsc);
|
||||
hireableList.UpdateScrollBarSize();
|
||||
}
|
||||
|
||||
public void SetHireables(Location location, List<CharacterInfo> availableHires)
|
||||
@@ -434,7 +437,7 @@ namespace Barotrauma
|
||||
if (listBox != crewList)
|
||||
{
|
||||
new GUITextBlock(new RectTransform(new Vector2(width, 1.0f), mainGroup.RectTransform),
|
||||
TextManager.FormatCurrency(characterInfo.Salary),
|
||||
TextManager.FormatCurrency(HireManager.GetSalaryFor(characterInfo)),
|
||||
textAlignment: Alignment.Center)
|
||||
{
|
||||
CanBeFocused = false
|
||||
@@ -692,11 +695,8 @@ namespace Barotrauma
|
||||
private void SetTotalHireCost()
|
||||
{
|
||||
if (pendingList == null || totalBlock == null || validateHiresButton == null) { return; }
|
||||
int total = 0;
|
||||
pendingList.Content.Children.ForEach(c =>
|
||||
{
|
||||
total += ((InfoSkill)c.UserData).CharacterInfo.Salary;
|
||||
});
|
||||
var infos = pendingList.Content.Children.Select(static c => ((InfoSkill)c.UserData).CharacterInfo).ToArray();
|
||||
int total = HireManager.GetSalaryFor(infos);
|
||||
totalBlock.Text = TextManager.FormatCurrency(total);
|
||||
bool enoughMoney = campaign == null || campaign.CanAfford(total);
|
||||
totalBlock.TextColor = enoughMoney ? Color.White : Color.Red;
|
||||
@@ -718,14 +718,14 @@ namespace Barotrauma
|
||||
|
||||
if (nonDuplicateHires.None()) { return false; }
|
||||
|
||||
int total = nonDuplicateHires.Aggregate(0, (total, info) => total + info.Salary);
|
||||
int total = HireManager.GetSalaryFor(nonDuplicateHires);
|
||||
|
||||
if (!campaign.CanAfford(total)) { return false; }
|
||||
|
||||
bool atLeastOneHired = false;
|
||||
foreach (CharacterInfo ci in nonDuplicateHires)
|
||||
{
|
||||
if (campaign.TryHireCharacter(campaign.Map.CurrentLocation, ci))
|
||||
if (campaign.TryHireCharacter(campaign.Map.CurrentLocation, ci, Character.Controlled))
|
||||
{
|
||||
atLeastOneHired = true;
|
||||
}
|
||||
@@ -741,7 +741,7 @@ namespace Barotrauma
|
||||
SelectCharacter(null, null, null);
|
||||
var dialog = new GUIMessageBox(
|
||||
TextManager.Get("newcrewmembers"),
|
||||
TextManager.GetWithVariable("crewhiredmessage", "[location]", campaignUI?.Campaign?.Map?.CurrentLocation?.Name),
|
||||
TextManager.GetWithVariable("crewhiredmessage", "[location]", campaignUI?.Campaign?.Map?.CurrentLocation?.DisplayName),
|
||||
new LocalizedString[] { TextManager.Get("Ok") });
|
||||
dialog.Buttons[0].OnClicked += dialog.Close;
|
||||
}
|
||||
|
||||
@@ -512,10 +512,18 @@ namespace Barotrauma
|
||||
soundStr += " (stopped)";
|
||||
clr *= 0.5f;
|
||||
}
|
||||
else if (playingSoundChannel.Muffled)
|
||||
else
|
||||
{
|
||||
soundStr += " (muffled)";
|
||||
clr = Color.Lerp(clr, Color.LightGray, 0.5f);
|
||||
if (playingSoundChannel.Muffled)
|
||||
{
|
||||
soundStr += " (muffled)";
|
||||
clr = Color.Lerp(clr, Color.LightGray, 0.5f);
|
||||
}
|
||||
if (playingSoundChannel.FadingOutAndDisposing)
|
||||
{
|
||||
soundStr += ". Fading out...";
|
||||
clr = Color.Lerp(clr, Color.Black, 0.15f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2163,10 +2171,10 @@ namespace Barotrauma
|
||||
};
|
||||
}
|
||||
|
||||
public static GUIMessageBox AskForConfirmation(LocalizedString header, LocalizedString body, Action onConfirm, Action onDeny = null)
|
||||
public static GUIMessageBox AskForConfirmation(LocalizedString header, LocalizedString body, Action onConfirm, Action onDeny = null, Vector2? relativeSize = null, Point? minSize = null)
|
||||
{
|
||||
LocalizedString[] buttons = { TextManager.Get("Ok"), TextManager.Get("Cancel") };
|
||||
GUIMessageBox msgBox = new GUIMessageBox(header, body, buttons, new Vector2(0.2f, 0.175f), minSize: new Point(300, 175));
|
||||
GUIMessageBox msgBox = new GUIMessageBox(header, body, buttons, relativeSize: relativeSize ?? new Vector2(0.2f, 0.175f), minSize: minSize ?? new Point(300, 175));
|
||||
|
||||
// Cancel button
|
||||
msgBox.Buttons[1].OnClicked = delegate
|
||||
|
||||
@@ -775,23 +775,30 @@ namespace Barotrauma
|
||||
toolTipBlock.UserData = toolTip;
|
||||
}
|
||||
|
||||
toolTipBlock.RectTransform.AbsoluteOffset =
|
||||
RectTransform.CalculateAnchorPoint(anchor, targetElement) +
|
||||
RectTransform.CalculatePivotOffset(pivot, toolTipBlock.RectTransform.NonScaledSize);
|
||||
CalculateOffset();
|
||||
|
||||
if (toolTipBlock.Rect.Right > GameMain.GraphicsWidth - 10)
|
||||
{
|
||||
toolTipBlock.RectTransform.AbsoluteOffset -= new Point(toolTipBlock.Rect.Width + targetElement.Width, 0);
|
||||
anchor = RectTransform.MoveAnchorLeft(anchor);
|
||||
pivot = (Pivot)RectTransform.MoveAnchorRight((Anchor)pivot);
|
||||
CalculateOffset();
|
||||
}
|
||||
if (toolTipBlock.Rect.Bottom > GameMain.GraphicsHeight - 10)
|
||||
{
|
||||
toolTipBlock.RectTransform.AbsoluteOffset -= new Point(
|
||||
0,
|
||||
toolTipBlock.Rect.Bottom - (GameMain.GraphicsHeight - 10));
|
||||
anchor = RectTransform.MoveAnchorTop(anchor);
|
||||
pivot = (Pivot)RectTransform.MoveAnchorBottom((Anchor)pivot);
|
||||
CalculateOffset();
|
||||
}
|
||||
toolTipBlock.SetTextPos();
|
||||
|
||||
toolTipBlock.DrawManually(spriteBatch);
|
||||
|
||||
void CalculateOffset()
|
||||
{
|
||||
toolTipBlock.RectTransform.AbsoluteOffset =
|
||||
RectTransform.CalculateAnchorPoint(anchor, targetElement) +
|
||||
RectTransform.CalculatePivotOffset(pivot, toolTipBlock.RectTransform.NonScaledSize);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Barotrauma.Extensions;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
|
||||
namespace Barotrauma
|
||||
{
|
||||
@@ -81,6 +82,8 @@ namespace Barotrauma
|
||||
|
||||
public bool FlashOnAutoCloseCondition { get; set; }
|
||||
|
||||
public Action OnEnterPressed { get; set; }
|
||||
|
||||
public Type MessageBoxType => type;
|
||||
|
||||
public static GUIComponent VisibleBox => MessageBoxes.LastOrDefault();
|
||||
@@ -89,6 +92,10 @@ namespace Barotrauma
|
||||
: this(headerText, text, new LocalizedString[] { "OK" }, relativeSize, minSize, type: type)
|
||||
{
|
||||
this.Buttons[0].OnClicked = Close;
|
||||
OnEnterPressed = () =>
|
||||
{
|
||||
Buttons[0].OnClicked(Buttons[0], Buttons[0].UserData);
|
||||
};
|
||||
}
|
||||
|
||||
public GUIMessageBox(RichString headerText, RichString text, LocalizedString[] buttons,
|
||||
@@ -516,6 +523,11 @@ namespace Barotrauma
|
||||
|
||||
protected override void Update(float deltaTime)
|
||||
{
|
||||
if (PlayerInput.KeyHit(Keys.Enter))
|
||||
{
|
||||
OnEnterPressed?.Invoke();
|
||||
}
|
||||
|
||||
if (Draggable)
|
||||
{
|
||||
GUIComponent parent = GUI.MouseOn?.Parent?.Parent;
|
||||
|
||||
@@ -18,6 +18,20 @@ namespace Barotrauma
|
||||
public GUIButton PlusButton { get; private set; }
|
||||
public GUIButton MinusButton { get; private set; }
|
||||
|
||||
private void UpdatePlusMinusButtonVisibility()
|
||||
{
|
||||
if (ForceShowPlusMinusButtons
|
||||
|| inputType == NumberType.Int
|
||||
|| (inputType == NumberType.Float && MinValueFloat > float.MinValue && MaxValueFloat < float.MaxValue))
|
||||
{
|
||||
ShowPlusMinusButtons();
|
||||
}
|
||||
else
|
||||
{
|
||||
HidePlusMinusButtons();
|
||||
}
|
||||
}
|
||||
|
||||
private NumberType inputType;
|
||||
public NumberType InputType
|
||||
{
|
||||
@@ -26,15 +40,7 @@ namespace Barotrauma
|
||||
{
|
||||
if (inputType == value) { return; }
|
||||
inputType = value;
|
||||
if (inputType == NumberType.Int ||
|
||||
(inputType == NumberType.Float && MinValueFloat > float.MinValue && MaxValueFloat < float.MaxValue))
|
||||
{
|
||||
ShowPlusMinusButtons();
|
||||
}
|
||||
else
|
||||
{
|
||||
HidePlusMinusButtons();
|
||||
}
|
||||
UpdatePlusMinusButtonVisibility();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,15 +52,7 @@ namespace Barotrauma
|
||||
{
|
||||
minValueFloat = value;
|
||||
ClampFloatValue();
|
||||
if (inputType == NumberType.Int ||
|
||||
(inputType == NumberType.Float && MinValueFloat > float.MinValue && MaxValueFloat < float.MaxValue))
|
||||
{
|
||||
ShowPlusMinusButtons();
|
||||
}
|
||||
else
|
||||
{
|
||||
HidePlusMinusButtons();
|
||||
}
|
||||
UpdatePlusMinusButtonVisibility();
|
||||
}
|
||||
}
|
||||
public float? MaxValueFloat
|
||||
@@ -64,15 +62,7 @@ namespace Barotrauma
|
||||
{
|
||||
maxValueFloat = value;
|
||||
ClampFloatValue();
|
||||
if (inputType == NumberType.Int ||
|
||||
(inputType == NumberType.Float && MinValueFloat > float.MinValue && MaxValueFloat < float.MaxValue))
|
||||
{
|
||||
ShowPlusMinusButtons();
|
||||
}
|
||||
else
|
||||
{
|
||||
HidePlusMinusButtons();
|
||||
}
|
||||
UpdatePlusMinusButtonVisibility();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,6 +86,19 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
private bool forceShowPlusMinusButtons;
|
||||
|
||||
public bool ForceShowPlusMinusButtons
|
||||
{
|
||||
get { return forceShowPlusMinusButtons; }
|
||||
set
|
||||
{
|
||||
if (forceShowPlusMinusButtons == value) { return; }
|
||||
forceShowPlusMinusButtons = value;
|
||||
UpdatePlusMinusButtonVisibility();
|
||||
}
|
||||
}
|
||||
|
||||
private int decimalsToDisplay = 1;
|
||||
public int DecimalsToDisplay
|
||||
{
|
||||
@@ -184,7 +187,7 @@ namespace Barotrauma
|
||||
/// </summary>
|
||||
public bool WrapAround;
|
||||
|
||||
public float valueStep;
|
||||
public float ValueStep;
|
||||
|
||||
private float pressedTimer;
|
||||
private readonly float pressedDelay = 0.5f;
|
||||
@@ -339,12 +342,12 @@ namespace Barotrauma
|
||||
{
|
||||
if (inputType == NumberType.Int)
|
||||
{
|
||||
IntValue -= valueStep > 0 ? (int)valueStep : 1;
|
||||
IntValue -= ValueStep > 0 ? (int)ValueStep : 1;
|
||||
ClampIntValue();
|
||||
}
|
||||
else if (maxValueFloat.HasValue && minValueFloat.HasValue)
|
||||
{
|
||||
FloatValue -= valueStep > 0 ? valueStep : Round();
|
||||
FloatValue -= ValueStep > 0 ? ValueStep : Round();
|
||||
ClampFloatValue();
|
||||
}
|
||||
}
|
||||
@@ -353,12 +356,12 @@ namespace Barotrauma
|
||||
{
|
||||
if (inputType == NumberType.Int)
|
||||
{
|
||||
IntValue += valueStep > 0 ? (int)valueStep : 1;
|
||||
IntValue += ValueStep > 0 ? (int)ValueStep : 1;
|
||||
ClampIntValue();
|
||||
}
|
||||
else if (inputType == NumberType.Float)
|
||||
{
|
||||
FloatValue += valueStep > 0 ? valueStep : Round();
|
||||
FloatValue += ValueStep > 0 ? ValueStep : Round();
|
||||
ClampFloatValue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -313,13 +313,18 @@ namespace Barotrauma
|
||||
|
||||
public class GUIColor : GUISelector<GUIColorPrefab>
|
||||
{
|
||||
public GUIColor(string identifier) : base(identifier) { }
|
||||
private readonly Color fallbackColor;
|
||||
|
||||
public GUIColor(string identifier, Color fallbackColor) : base(identifier)
|
||||
{
|
||||
this.fallbackColor = fallbackColor;
|
||||
}
|
||||
|
||||
public Color Value
|
||||
{
|
||||
get
|
||||
{
|
||||
return Prefabs.ActivePrefab.Color;
|
||||
return Prefabs?.ActivePrefab?.Color ?? fallbackColor;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -75,72 +75,72 @@ namespace Barotrauma
|
||||
/// <summary>
|
||||
/// General green color used for elements whose colors are set from code
|
||||
/// </summary>
|
||||
public readonly static GUIColor Green = new GUIColor("Green");
|
||||
public readonly static GUIColor Green = new GUIColor("Green", new Color(154, 213, 163, 255));
|
||||
|
||||
/// <summary>
|
||||
/// General red color used for elements whose colors are set from code
|
||||
/// </summary>
|
||||
public readonly static GUIColor Orange = new GUIColor("Orange");
|
||||
public readonly static GUIColor Orange = new GUIColor("Orange", new Color(243, 162, 50, 255));
|
||||
|
||||
/// <summary>
|
||||
/// General red color used for elements whose colors are set from code
|
||||
/// </summary>
|
||||
public readonly static GUIColor Red = new GUIColor("Red");
|
||||
public readonly static GUIColor Red = new GUIColor("Red", new Color(245, 105, 105, 255));
|
||||
|
||||
/// <summary>
|
||||
/// General blue color used for elements whose colors are set from code
|
||||
/// </summary>
|
||||
public readonly static GUIColor Blue = new GUIColor("Blue");
|
||||
public readonly static GUIColor Blue = new GUIColor("Blue", new Color(126, 211, 224, 255));
|
||||
|
||||
/// <summary>
|
||||
/// General yellow color used for elements whose colors are set from code
|
||||
/// </summary>
|
||||
public readonly static GUIColor Yellow = new GUIColor("Yellow");
|
||||
public readonly static GUIColor Yellow = new GUIColor("Yellow", new Color(255, 255, 0, 255));
|
||||
|
||||
/// <summary>
|
||||
/// Color to display the name of modded servers in the server list.
|
||||
/// </summary>
|
||||
public readonly static GUIColor ModdedServerColor = new GUIColor("ModdedServerColor");
|
||||
public readonly static GUIColor ModdedServerColor = new GUIColor("ModdedServerColor", new Color(154, 185, 160, 255));
|
||||
|
||||
public readonly static GUIColor ColorInventoryEmpty = new GUIColor("ColorInventoryEmpty");
|
||||
public readonly static GUIColor ColorInventoryHalf = new GUIColor("ColorInventoryHalf");
|
||||
public readonly static GUIColor ColorInventoryFull = new GUIColor("ColorInventoryFull");
|
||||
public readonly static GUIColor ColorInventoryBackground = new GUIColor("ColorInventoryBackground");
|
||||
public readonly static GUIColor ColorInventoryEmptyOverlay = new GUIColor("ColorInventoryEmptyOverlay");
|
||||
public readonly static GUIColor ColorInventoryEmpty = new GUIColor("ColorInventoryEmpty", new Color(245, 105, 105, 255));
|
||||
public readonly static GUIColor ColorInventoryHalf = new GUIColor("ColorInventoryHalf", new Color(243, 162, 50, 255));
|
||||
public readonly static GUIColor ColorInventoryFull = new GUIColor("ColorInventoryFull", new Color(96, 222, 146, 255));
|
||||
public readonly static GUIColor ColorInventoryBackground = new GUIColor("ColorInventoryBackground", new Color(56, 56, 56, 255));
|
||||
public readonly static GUIColor ColorInventoryEmptyOverlay = new GUIColor("ColorInventoryEmptyOverlay", new Color(125, 125, 125, 255));
|
||||
|
||||
public readonly static GUIColor TextColorNormal = new GUIColor("TextColorNormal");
|
||||
public readonly static GUIColor TextColorBright = new GUIColor("TextColorBright");
|
||||
public readonly static GUIColor TextColorDark = new GUIColor("TextColorDark");
|
||||
public readonly static GUIColor TextColorDim = new GUIColor("TextColorDim");
|
||||
public readonly static GUIColor TextColorNormal = new GUIColor("TextColorNormal", new Color(228, 217, 167, 255));
|
||||
public readonly static GUIColor TextColorBright = new GUIColor("TextColorBright", new Color(255, 255, 255, 255));
|
||||
public readonly static GUIColor TextColorDark = new GUIColor("TextColorDark", new Color(0, 0, 0, 230));
|
||||
public readonly static GUIColor TextColorDim = new GUIColor("TextColorDim", new Color(153, 153, 153, 153));
|
||||
|
||||
public readonly static GUIColor ItemQualityColorPoor = new GUIColor("ItemQualityColorPoor");
|
||||
public readonly static GUIColor ItemQualityColorNormal = new GUIColor("ItemQualityColorNormal");
|
||||
public readonly static GUIColor ItemQualityColorGood = new GUIColor("ItemQualityColorGood");
|
||||
public readonly static GUIColor ItemQualityColorExcellent = new GUIColor("ItemQualityColorExcellent");
|
||||
public readonly static GUIColor ItemQualityColorMasterwork = new GUIColor("ItemQualityColorMasterwork");
|
||||
public readonly static GUIColor ItemQualityColorPoor = new GUIColor("ItemQualityColorPoor", new Color(128, 128, 128, 255));
|
||||
public readonly static GUIColor ItemQualityColorNormal = new GUIColor("ItemQualityColorNormal", new Color(255, 255, 255, 255));
|
||||
public readonly static GUIColor ItemQualityColorGood = new GUIColor("ItemQualityColorGood", new Color(144, 238, 144, 255));
|
||||
public readonly static GUIColor ItemQualityColorExcellent = new GUIColor("ItemQualityColorExcellent", new Color(173, 216, 230, 255));
|
||||
public readonly static GUIColor ItemQualityColorMasterwork = new GUIColor("ItemQualityColorMasterwork", new Color(147, 112, 219, 255));
|
||||
|
||||
public readonly static GUIColor ColorReputationVeryLow = new GUIColor("ColorReputationVeryLow");
|
||||
public readonly static GUIColor ColorReputationLow = new GUIColor("ColorReputationLow");
|
||||
public readonly static GUIColor ColorReputationNeutral = new GUIColor("ColorReputationNeutral");
|
||||
public readonly static GUIColor ColorReputationHigh = new GUIColor("ColorReputationHigh");
|
||||
public readonly static GUIColor ColorReputationVeryHigh = new GUIColor("ColorReputationVeryHigh");
|
||||
public readonly static GUIColor ColorReputationVeryLow = new GUIColor("ColorReputationVeryLow", new Color(192, 60, 60, 255));
|
||||
public readonly static GUIColor ColorReputationLow = new GUIColor("ColorReputationLow", new Color(203, 145, 23, 255));
|
||||
public readonly static GUIColor ColorReputationNeutral = new GUIColor("ColorReputationNeutral", new Color(228, 217, 167, 255));
|
||||
public readonly static GUIColor ColorReputationHigh = new GUIColor("ColorReputationHigh", new Color(51, 152, 64, 255));
|
||||
public readonly static GUIColor ColorReputationVeryHigh = new GUIColor("ColorReputationVeryHigh", new Color(71, 160, 164, 255));
|
||||
|
||||
// Inventory
|
||||
public readonly static GUIColor EquipmentSlotIconColor = new GUIColor("EquipmentSlotIconColor");
|
||||
public readonly static GUIColor EquipmentSlotIconColor = new GUIColor("EquipmentSlotIconColor", new Color(99, 70, 64, 255));
|
||||
|
||||
// Health HUD
|
||||
public readonly static GUIColor BuffColorLow = new GUIColor("BuffColorLow");
|
||||
public readonly static GUIColor BuffColorMedium = new GUIColor("BuffColorMedium");
|
||||
public readonly static GUIColor BuffColorHigh = new GUIColor("BuffColorHigh");
|
||||
public readonly static GUIColor BuffColorLow = new GUIColor("BuffColorLow", new Color(66, 170, 73, 255));
|
||||
public readonly static GUIColor BuffColorMedium = new GUIColor("BuffColorMedium", new Color(110, 168, 118, 255));
|
||||
public readonly static GUIColor BuffColorHigh = new GUIColor("BuffColorHigh", new Color(154, 213, 163, 255));
|
||||
|
||||
public readonly static GUIColor DebuffColorLow = new GUIColor("DebuffColorLow");
|
||||
public readonly static GUIColor DebuffColorMedium = new GUIColor("DebuffColorMedium");
|
||||
public readonly static GUIColor DebuffColorHigh = new GUIColor("DebuffColorHigh");
|
||||
public readonly static GUIColor DebuffColorLow = new GUIColor("DebuffColorLow", new Color(243, 162, 50, 255));
|
||||
public readonly static GUIColor DebuffColorMedium = new GUIColor("DebuffColorMedium", new Color(155, 55, 55, 255));
|
||||
public readonly static GUIColor DebuffColorHigh = new GUIColor("DebuffColorHigh", new Color(228, 27, 27, 255));
|
||||
|
||||
public readonly static GUIColor HealthBarColorLow = new GUIColor("HealthBarColorLow");
|
||||
public readonly static GUIColor HealthBarColorMedium = new GUIColor("HealthBarColorMedium");
|
||||
public readonly static GUIColor HealthBarColorHigh = new GUIColor("HealthBarColorHigh");
|
||||
public readonly static GUIColor HealthBarColorPoisoned = new GUIColor("HealthBarColorPoisoned");
|
||||
public readonly static GUIColor HealthBarColorLow = new GUIColor("HealthBarColorLow", new Color(255, 0, 0, 255));
|
||||
public readonly static GUIColor HealthBarColorMedium = new GUIColor("HealthBarColorMedium", new Color(255, 165, 0, 255));
|
||||
public readonly static GUIColor HealthBarColorHigh = new GUIColor("HealthBarColorHigh", new Color(78, 114, 88));
|
||||
public readonly static GUIColor HealthBarColorPoisoned = new GUIColor("HealthBarColorPoisoned", new Color(100, 150, 0, 255));
|
||||
|
||||
private readonly static Point defaultItemFrameMargin = new Point(50, 56);
|
||||
|
||||
|
||||
@@ -461,14 +461,16 @@ namespace Barotrauma
|
||||
}
|
||||
|
||||
private ImmutableArray<Vector2> cachedCaretPositions = ImmutableArray<Vector2>.Empty;
|
||||
|
||||
//which text were the cached caret positions calculated for?
|
||||
private string cachedCaretPositionsText;
|
||||
public ImmutableArray<Vector2> GetAllCaretPositions()
|
||||
{
|
||||
if (cachedCaretPositions.Any())
|
||||
string textDrawn = Censor ? CensoredText : Text.SanitizedValue;
|
||||
if (cachedCaretPositions.Any() &&
|
||||
textDrawn == cachedCaretPositionsText)
|
||||
{
|
||||
return cachedCaretPositions;
|
||||
}
|
||||
string textDrawn = Censor ? CensoredText : Text.SanitizedValue;
|
||||
float w = Wrap
|
||||
? (Rect.Width - Padding.X - Padding.Z) / TextScale
|
||||
: float.PositiveInfinity;
|
||||
@@ -482,6 +484,7 @@ namespace Barotrauma
|
||||
.Select(p => p - new Vector2(alignmentXDiff, 0))
|
||||
.Select(p => p * TextScale + TextPos - Origin * TextScale)
|
||||
.ToImmutableArray();
|
||||
cachedCaretPositionsText = textDrawn;
|
||||
return cachedCaretPositions;
|
||||
}
|
||||
|
||||
|
||||
@@ -363,6 +363,10 @@ namespace Barotrauma
|
||||
{
|
||||
CaretIndex = Math.Clamp(CaretIndex, 0, textBlock.Text.Length);
|
||||
var caretPositions = textBlock.GetAllCaretPositions();
|
||||
if (CaretIndex >= caretPositions.Length)
|
||||
{
|
||||
throw new Exception($"Caret index was outside the bounds of the calculated caret positions. Index: {CaretIndex}, caret positions: {caretPositions.Length}, text: {textBlock.Text}");
|
||||
}
|
||||
caretPos = caretPositions[CaretIndex];
|
||||
caretPosDirty = false;
|
||||
}
|
||||
|
||||
@@ -784,11 +784,95 @@ namespace Barotrauma
|
||||
#region Static methods
|
||||
public static Pivot MatchPivotToAnchor(Anchor anchor)
|
||||
{
|
||||
if (!Enum.TryParse(anchor.ToString(), out Pivot pivot))
|
||||
return (Pivot)anchor;
|
||||
}
|
||||
public static Anchor MatchAnchorToPivot(Pivot pivot)
|
||||
{
|
||||
return (Anchor)pivot;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Moves the anchor to the left, keeping the vertical position unchanged (e.g. CenterRight -> CenterLeft)
|
||||
/// </summary>
|
||||
public static Anchor MoveAnchorLeft(Anchor anchor)
|
||||
{
|
||||
switch (anchor)
|
||||
{
|
||||
throw new Exception($"[RectTransform] Cannot match pivot to anchor {anchor}");
|
||||
case Anchor.TopCenter:
|
||||
case Anchor.TopRight:
|
||||
return Anchor.TopLeft;
|
||||
case Anchor.Center:
|
||||
case Anchor.CenterRight:
|
||||
return Anchor.CenterLeft;
|
||||
case Anchor.BottomCenter:
|
||||
case Anchor.BottomRight:
|
||||
return Anchor.BottomLeft;
|
||||
default:
|
||||
return anchor;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Moves the anchor to the right, keeping the vertical position unchanged (e.g. CenterLeft -> CenterRight)
|
||||
/// </summary>
|
||||
public static Anchor MoveAnchorRight(Anchor anchor)
|
||||
{
|
||||
switch (anchor)
|
||||
{
|
||||
case Anchor.TopCenter:
|
||||
case Anchor.TopLeft:
|
||||
return Anchor.TopRight;
|
||||
case Anchor.Center:
|
||||
case Anchor.CenterLeft:
|
||||
return Anchor.CenterRight;
|
||||
case Anchor.BottomCenter:
|
||||
case Anchor.BottomLeft:
|
||||
return Anchor.BottomRight;
|
||||
default:
|
||||
return anchor;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Moves the anchor to the top, keeping the horizontal position unchanged (e.g. BottomCenter -> TopCenter)
|
||||
/// </summary>
|
||||
public static Anchor MoveAnchorTop(Anchor anchor)
|
||||
{
|
||||
switch (anchor)
|
||||
{
|
||||
case Anchor.CenterLeft:
|
||||
case Anchor.BottomLeft:
|
||||
return Anchor.TopLeft;
|
||||
case Anchor.Center:
|
||||
case Anchor.BottomCenter:
|
||||
return Anchor.TopCenter;
|
||||
case Anchor.CenterRight:
|
||||
case Anchor.BottomRight:
|
||||
return Anchor.TopRight;
|
||||
default:
|
||||
return anchor;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Moves the anchor to the bottom, keeping the horizontal position unchanged (e.g. TopCenter -> BottomCenter)
|
||||
/// </summary>
|
||||
public static Anchor MoveAnchorBottom(Anchor anchor)
|
||||
{
|
||||
switch (anchor)
|
||||
{
|
||||
case Anchor.CenterLeft:
|
||||
case Anchor.TopLeft:
|
||||
return Anchor.BottomLeft;
|
||||
case Anchor.Center:
|
||||
case Anchor.TopCenter:
|
||||
return Anchor.BottomCenter;
|
||||
case Anchor.CenterRight:
|
||||
case Anchor.TopRight:
|
||||
return Anchor.BottomRight;
|
||||
default:
|
||||
return anchor;
|
||||
}
|
||||
return pivot;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -811,11 +895,11 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
public static Point CalculatePivotOffset(Pivot pivot, Point size)
|
||||
public static Point CalculatePivotOffset(Pivot anchor, Point size)
|
||||
{
|
||||
int width = size.X;
|
||||
int height = size.Y;
|
||||
switch (pivot)
|
||||
switch (anchor)
|
||||
{
|
||||
case Pivot.TopLeft:
|
||||
return Point.Zero;
|
||||
@@ -836,7 +920,7 @@ namespace Barotrauma
|
||||
case Pivot.BottomRight:
|
||||
return new Point(-width, -height);
|
||||
default:
|
||||
throw new NotImplementedException(pivot.ToString());
|
||||
throw new NotImplementedException(anchor.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@ namespace Barotrauma
|
||||
private readonly List<PurchasedItem> itemsToSell = new List<PurchasedItem>();
|
||||
private readonly List<PurchasedItem> itemsToSellFromSub = new List<PurchasedItem>();
|
||||
|
||||
private GUIMessageBox deliveryPrompt;
|
||||
|
||||
private StoreTab activeTab = StoreTab.Buy;
|
||||
private MapEntityCategory? selectedItemCategory;
|
||||
private bool suppressBuySell;
|
||||
@@ -341,9 +343,9 @@ namespace Barotrauma
|
||||
};
|
||||
|
||||
var panelMaxWidth = (int)(GUI.xScale * (GUI.HorizontalAspectRatio < 1.4f ? 650 : 560));
|
||||
var storeContent = new GUILayoutGroup(new RectTransform(new Vector2(0.45f, 1.0f), campaignUI.GetTabContainer(CampaignMode.InteractionType.Store).RectTransform)
|
||||
var storeContent = new GUILayoutGroup(new RectTransform(new Vector2(0.45f, 1.0f), campaignUI.GetTabContainer(CampaignMode.InteractionType.Store).RectTransform, Anchor.BottomLeft)
|
||||
{
|
||||
MaxSize = new Point(panelMaxWidth, campaignUI.GetTabContainer(CampaignMode.InteractionType.Store).Rect.Height)
|
||||
MaxSize = new Point(panelMaxWidth, campaignUI.GetTabContainer(CampaignMode.InteractionType.Store).Rect.Height - HUDLayoutSettings.ButtonAreaTop.Bottom)
|
||||
})
|
||||
{
|
||||
Stretch = true,
|
||||
@@ -583,9 +585,9 @@ namespace Barotrauma
|
||||
|
||||
// Shopping Crate ------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
var shoppingCrateContent = new GUILayoutGroup(new RectTransform(new Vector2(0.45f, 1.0f), campaignUI.GetTabContainer(CampaignMode.InteractionType.Store).RectTransform, anchor: Anchor.TopRight)
|
||||
var shoppingCrateContent = new GUILayoutGroup(new RectTransform(new Vector2(0.45f, 1.0f), campaignUI.GetTabContainer(CampaignMode.InteractionType.Store).RectTransform, anchor: Anchor.BottomRight)
|
||||
{
|
||||
MaxSize = new Point(panelMaxWidth, campaignUI.GetTabContainer(CampaignMode.InteractionType.Store).Rect.Height)
|
||||
MaxSize = new Point(panelMaxWidth, campaignUI.GetTabContainer(CampaignMode.InteractionType.Store).Rect.Height - HUDLayoutSettings.ButtonAreaTop.Bottom)
|
||||
})
|
||||
{
|
||||
Stretch = true,
|
||||
@@ -922,15 +924,12 @@ namespace Barotrauma
|
||||
{
|
||||
if (itemPrefab.CanBeBoughtFrom(ActiveStore, out PriceInfo priceInfo) && itemPrefab.CanCharacterBuy())
|
||||
{
|
||||
|
||||
bool isDailySpecial = ActiveStore.DailySpecials.Contains(itemPrefab);
|
||||
var itemFrame = isDailySpecial ?
|
||||
storeDailySpecialsGroup.FindChild(c => c.UserData is PurchasedItem pi && pi.ItemPrefab == itemPrefab) :
|
||||
storeBuyList.Content.FindChild(c => c.UserData is PurchasedItem pi && pi.ItemPrefab == itemPrefab);
|
||||
if (CargoManager.GetPurchasedItem(ActiveStore, itemPrefab) is { } purchasedItem)
|
||||
{
|
||||
quantity = Math.Max(quantity - purchasedItem.Quantity, 0);
|
||||
}
|
||||
|
||||
quantity = Math.Max(quantity - CargoManager.GetPurchasedItemCount(ActiveStore, itemPrefab), 0);
|
||||
if (CargoManager.GetBuyCrateItem(ActiveStore, itemPrefab) is { } buyCrateItem)
|
||||
{
|
||||
quantity = Math.Max(quantity - buyCrateItem.Quantity, 0);
|
||||
@@ -1245,9 +1244,9 @@ namespace Barotrauma
|
||||
int totalPrice = 0;
|
||||
if (ActiveStore != null)
|
||||
{
|
||||
foreach (PurchasedItem item in items)
|
||||
foreach (PurchasedItem item in items.ToList())
|
||||
{
|
||||
if (!(item.ItemPrefab.GetPriceInfo(ActiveStore) is { } priceInfo)) { continue; }
|
||||
if (item.ItemPrefab.GetPriceInfo(ActiveStore) is not { } priceInfo) { continue; }
|
||||
GUINumberInput numInput = null;
|
||||
if (!(listBox.Content.FindChild(c => c.UserData is PurchasedItem pi && pi.ItemPrefab.Identifier == item.ItemPrefab.Identifier) is { } itemFrame))
|
||||
{
|
||||
@@ -1749,7 +1748,7 @@ namespace Barotrauma
|
||||
}
|
||||
|
||||
// Add items already purchased
|
||||
CargoManager?.GetPurchasedItems(ActiveStore).ForEach(pi => AddNonEmptyOwnedItems(pi));
|
||||
CargoManager?.GetPurchasedItems(ActiveStore).Where(pi => !pi.DeliverImmediately).ForEach(pi => AddNonEmptyOwnedItems(pi));
|
||||
|
||||
ownedItemsUpdateTimer = 0.0f;
|
||||
|
||||
@@ -1959,14 +1958,13 @@ namespace Barotrauma
|
||||
}
|
||||
catch (NotImplementedException e)
|
||||
{
|
||||
DebugConsole.LogError($"Error getting item availability: Uknown store tab type. {e.StackTrace.CleanupStackTrace()}");
|
||||
DebugConsole.LogError($"Error getting item availability: Unknown store tab type. {e.StackTrace.CleanupStackTrace()}");
|
||||
}
|
||||
if (list != null && list.Find(i => i.ItemPrefab == itemPrefab) is PurchasedItem item)
|
||||
{
|
||||
if (mode == StoreTab.Buy)
|
||||
{
|
||||
var purchasedItem = CargoManager.GetPurchasedItem(ActiveStore, item.ItemPrefab);
|
||||
if (purchasedItem != null) { return Math.Max(item.Quantity - purchasedItem.Quantity, 0); }
|
||||
return Math.Max(item.Quantity - CargoManager.GetPurchasedItemCount(ActiveStore, item.ItemPrefab), 0);
|
||||
}
|
||||
return item.Quantity;
|
||||
}
|
||||
@@ -2093,16 +2091,57 @@ namespace Barotrauma
|
||||
}
|
||||
itemsToRemove.ForEach(i => itemsToPurchase.Remove(i));
|
||||
if (itemsToPurchase.None() || Balance < totalPrice) { return false; }
|
||||
CargoManager.PurchaseItems(ActiveStore.Identifier, itemsToPurchase, true);
|
||||
GameMain.Client?.SendCampaignState();
|
||||
var dialog = new GUIMessageBox(
|
||||
TextManager.Get("newsupplies"),
|
||||
TextManager.GetWithVariable("suppliespurchasedmessage", "[location]", campaignUI?.Campaign?.Map?.CurrentLocation?.Name),
|
||||
new LocalizedString[] { TextManager.Get("Ok") });
|
||||
dialog.Buttons[0].OnClicked += dialog.Close;
|
||||
|
||||
if (CampaignMode.AllowImmediateItemDelivery())
|
||||
{
|
||||
deliveryPrompt = new GUIMessageBox(
|
||||
TextManager.Get("newsupplies"),
|
||||
TextManager.Get("suppliespurchased.deliverymethod"),
|
||||
new LocalizedString[]
|
||||
{
|
||||
TextManager.Get("suppliespurchased.deliverymethod.deliverimmediately"),
|
||||
TextManager.Get("suppliespurchased.deliverymethod.delivertosub")
|
||||
});
|
||||
deliveryPrompt.Buttons[0].OnClicked = (btn, userdata) =>
|
||||
{
|
||||
ConfirmPurchase(deliverImmediately: true);
|
||||
deliveryPrompt.Close();
|
||||
return true;
|
||||
};
|
||||
deliveryPrompt.Buttons[1].OnClicked = (btn, userdata) =>
|
||||
{
|
||||
ConfirmPurchase(deliverImmediately: false);
|
||||
deliveryPrompt.Close();
|
||||
return true;
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
ConfirmPurchase(deliverImmediately: false);
|
||||
}
|
||||
|
||||
void ConfirmPurchase(bool deliverImmediately)
|
||||
{
|
||||
itemsToPurchase.ForEach(it => it.DeliverImmediately = deliverImmediately);
|
||||
CargoManager.PurchaseItems(ActiveStore.Identifier, itemsToPurchase, removeFromCrate: true);
|
||||
GameMain.Client?.SendCampaignState();
|
||||
if (!deliverImmediately)
|
||||
{
|
||||
var dialog = new GUIMessageBox(
|
||||
TextManager.Get("newsupplies"),
|
||||
TextManager.GetWithVariable("suppliespurchasedmessage", "[location]", campaignUI?.Campaign?.Map?.CurrentLocation?.DisplayName));
|
||||
dialog.Buttons[0].OnClicked += dialog.Close;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void OnDeselected()
|
||||
{
|
||||
deliveryPrompt?.Close();
|
||||
deliveryPrompt = null;
|
||||
}
|
||||
|
||||
private bool SellItems()
|
||||
{
|
||||
if (!HasActiveTabPermissions()) { return false; }
|
||||
@@ -2118,7 +2157,7 @@ namespace Barotrauma
|
||||
}
|
||||
catch (NotImplementedException e)
|
||||
{
|
||||
DebugConsole.LogError($"Error confirming the store transaction: Uknown store tab type. {e.StackTrace.CleanupStackTrace()}");
|
||||
DebugConsole.LogError($"Error confirming the store transaction: Unknown store tab type. {e.StackTrace.CleanupStackTrace()}");
|
||||
return false;
|
||||
}
|
||||
var itemsToRemove = new List<PurchasedItem>();
|
||||
|
||||
@@ -130,7 +130,7 @@ namespace Barotrauma
|
||||
};
|
||||
|
||||
content = new GUILayoutGroup(new RectTransform(new Point(background.Rect.Width - HUDLayoutSettings.Padding * 4, background.Rect.Height - HUDLayoutSettings.Padding * 4), background.RectTransform, Anchor.Center)) { AbsoluteSpacing = (int)(HUDLayoutSettings.Padding * 1.5f) };
|
||||
GUITextBlock header = new GUITextBlock(new RectTransform(new Vector2(1f, 0.0f), content.RectTransform), transferService ? TextManager.Get("switchsubmarineheader") : TextManager.GetWithVariable("outpostshipyard", "[location]", GameMain.GameSession.Map.CurrentLocation.Name), font: GUIStyle.LargeFont);
|
||||
GUITextBlock header = new GUITextBlock(new RectTransform(new Vector2(1f, 0.0f), content.RectTransform), transferService ? TextManager.Get("switchsubmarineheader") : TextManager.GetWithVariable("outpostshipyard", "[location]", GameMain.GameSession.Map.CurrentLocation.DisplayName), font: GUIStyle.LargeFont);
|
||||
header.CalculateHeightFromText(0, true);
|
||||
playerBalanceElement = CampaignUI.AddBalanceElement(header, new Vector2(1.0f, 1.5f));
|
||||
|
||||
|
||||
@@ -165,6 +165,11 @@ namespace Barotrauma
|
||||
public TabMenu()
|
||||
{
|
||||
if (!initialized) { Initialize(); }
|
||||
if (Level.Loaded == null)
|
||||
{
|
||||
//make sure we're not trying to view e.g. mission or reputation info if the tab menu is opened in the test mode
|
||||
SelectedTab = InfoFrameTab.Crew;
|
||||
}
|
||||
CreateInfoFrame(SelectedTab);
|
||||
SelectInfoFrameTab(SelectedTab);
|
||||
}
|
||||
@@ -303,7 +308,7 @@ namespace Barotrauma
|
||||
{
|
||||
var missionBtn = createTabButton(InfoFrameTab.Mission, "mission");
|
||||
eventLogNotification = GameSession.CreateNotificationIcon(missionBtn);
|
||||
eventLogNotification.Visible = GameMain.GameSession.EventManager?.EventLog?.UnreadEntries ?? false;
|
||||
eventLogNotification.Visible = GameMain.GameSession?.EventManager?.EventLog?.UnreadEntries ?? false;
|
||||
if (eventLogNotification.Visible)
|
||||
{
|
||||
eventLogNotification.Pulsate(Vector2.One, Vector2.One * 2, 1.0f);
|
||||
@@ -1508,7 +1513,7 @@ namespace Barotrauma
|
||||
portraitImage.RectTransform.NonScaledSize = new Point(Math.Min((int)(portraitImage.Rect.Size.Y * portraitAspectRatio), portraitImage.Rect.Width), portraitImage.Rect.Size.Y);
|
||||
}
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), locationInfoContainer.RectTransform), location.Name, font: GUIStyle.LargeFont);
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), locationInfoContainer.RectTransform), location.DisplayName, font: GUIStyle.LargeFont);
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), locationInfoContainer.RectTransform), location.Type.Name, font: GUIStyle.SubHeadingFont);
|
||||
|
||||
if (location.Faction?.Prefab != null)
|
||||
|
||||
@@ -163,7 +163,7 @@ namespace Barotrauma
|
||||
else if (Tile)
|
||||
{
|
||||
Vector2 startPos = new Vector2(rect.X, rect.Y);
|
||||
Sprite.DrawTiled(spriteBatch, startPos, new Vector2(rect.Width, rect.Height), color, startOffset: uvOffset);
|
||||
Sprite.DrawTiled(spriteBatch, startPos, new Vector2(rect.Width, rect.Height), color: color, startOffset: uvOffset);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1110,7 +1110,7 @@ namespace Barotrauma
|
||||
|
||||
public static UpgradeFrame CreateUpgradeFrame(UpgradePrefab prefab, UpgradeCategory category, CampaignMode campaign, RectTransform rectTransform, bool addBuyButton = true)
|
||||
{
|
||||
int price = prefab.Price.GetBuyPrice(campaign.UpgradeManager.GetUpgradeLevel(prefab, category), campaign.Map?.CurrentLocation, characterList);
|
||||
int price = prefab.Price.GetBuyPrice(prefab, campaign.UpgradeManager.GetUpgradeLevel(prefab, category), campaign.Map?.CurrentLocation, characterList);
|
||||
return CreateUpgradeEntry(rectTransform, prefab.Sprite, prefab.Name, prefab.Description, price, new CategoryData(category, prefab), addBuyButton, upgradePrefab: prefab, currentLevel: campaign.UpgradeManager.GetUpgradeLevel(prefab, category));
|
||||
}
|
||||
|
||||
@@ -1267,7 +1267,7 @@ namespace Barotrauma
|
||||
{
|
||||
LocalizedString promptBody = TextManager.GetWithVariables("Upgrades.PurchasePromptBody",
|
||||
("[upgradename]", prefab.Name),
|
||||
("[amount]", prefab.Price.GetBuyPrice(Campaign.UpgradeManager.GetUpgradeLevel(prefab, category), Campaign.Map?.CurrentLocation, characterList).ToString()));
|
||||
("[amount]", prefab.Price.GetBuyPrice(prefab, Campaign.UpgradeManager.GetUpgradeLevel(prefab, category), Campaign.Map?.CurrentLocation, characterList).ToString()));
|
||||
currectConfirmation = EventEditorScreen.AskForConfirmation(TextManager.Get("Upgrades.PurchasePromptTitle"), promptBody, () =>
|
||||
{
|
||||
if (GameMain.NetworkMember != null)
|
||||
@@ -1682,7 +1682,7 @@ namespace Barotrauma
|
||||
|
||||
GUITextBlock priceLabel = (GUITextBlock)buttonParent.FindChild(UpgradeStoreUserData.PriceLabel, recursive: true);
|
||||
priceLabel.Visible = true;
|
||||
int price = prefab.Price.GetBuyPrice(campaign.UpgradeManager.GetUpgradeLevel(prefab, category), campaign.Map?.CurrentLocation, characterList);
|
||||
int price = prefab.Price.GetBuyPrice(prefab, campaign.UpgradeManager.GetUpgradeLevel(prefab, category), campaign.Map?.CurrentLocation, characterList);
|
||||
|
||||
if (!WaitForServerUpdate)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user