Merge branch 'master' of https://github.com/Regalis11/Barotrauma.git
This commit is contained in:
@@ -149,7 +149,7 @@ namespace Barotrauma
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Campaign.Wallet.TryDeduct(CampaignMode.HullRepairCost))
|
||||
if (Campaign.TryPurchase(null, CampaignMode.HullRepairCost))
|
||||
{
|
||||
GameAnalyticsManager.AddMoneySpentEvent(CampaignMode.HullRepairCost, GameAnalyticsManager.MoneySink.Service, "hullrepairs");
|
||||
Campaign.PurchasedHullRepairs = true;
|
||||
@@ -194,7 +194,7 @@ namespace Barotrauma
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Campaign.Wallet.TryDeduct(CampaignMode.ItemRepairCost))
|
||||
if (Campaign.TryPurchase(null, CampaignMode.ItemRepairCost))
|
||||
{
|
||||
GameAnalyticsManager.AddMoneySpentEvent(CampaignMode.ItemRepairCost, GameAnalyticsManager.MoneySink.Service, "devicerepairs");
|
||||
Campaign.PurchasedItemRepairs = true;
|
||||
@@ -246,7 +246,7 @@ namespace Barotrauma
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Campaign.Wallet.TryDeduct(CampaignMode.ShuttleReplaceCost))
|
||||
if (Campaign.TryPurchase(null, CampaignMode.ShuttleReplaceCost))
|
||||
{
|
||||
GameAnalyticsManager.AddMoneySpentEvent(CampaignMode.ShuttleReplaceCost, GameAnalyticsManager.MoneySink.Service, "retrieveshuttle");
|
||||
Campaign.PurchasedLostShuttles = true;
|
||||
@@ -736,12 +736,115 @@ namespace Barotrauma
|
||||
|
||||
public static LocalizedString GetMoney()
|
||||
{
|
||||
return TextManager.GetWithVariable("PlayerCredits", "[credits]", (GameMain.GameSession?.Campaign == null) ? "0" : string.Format(CultureInfo.InvariantCulture, "{0:N0}", GameMain.GameSession.Campaign.Wallet.Balance));
|
||||
return TextManager.GetWithVariable("PlayerCredits", "[credits]", (GameMain.GameSession?.Campaign == null) ? "0" : string.Format(CultureInfo.InvariantCulture, "{0:N0}", GameMain.GameSession.Campaign.GetBalance()));
|
||||
}
|
||||
|
||||
public static LocalizedString GetTotalBalance()
|
||||
{
|
||||
return TextManager.FormatCurrency(GameMain.GameSession?.Campaign is { } campaign ? campaign.GetBalance() : 0);
|
||||
}
|
||||
|
||||
public static LocalizedString GetBankBalance()
|
||||
{
|
||||
return TextManager.FormatCurrency(GameMain.GameSession?.Campaign is { } campaign ? campaign.Bank.Balance : 0);
|
||||
}
|
||||
|
||||
public static LocalizedString GetWalletBalance()
|
||||
{
|
||||
return TextManager.FormatCurrency(GameMain.GameSession?.Campaign is { } campaign ? campaign.Wallet.Balance : 0);
|
||||
}
|
||||
|
||||
private void UpdateMaxMissions(Location location)
|
||||
{
|
||||
hasMaxMissions = Campaign.NumberOfMissionsAtLocation(location) >= Campaign.Settings.TotalMaxMissionCount;
|
||||
}
|
||||
|
||||
public readonly struct PlayerBalanceElement
|
||||
{
|
||||
public readonly bool DisplaySeparateBalances;
|
||||
public readonly GUILayoutGroup ParentComponent;
|
||||
public readonly GUILayoutGroup TotalBalanceContainer;
|
||||
public readonly GUILayoutGroup BankBalanceContainer;
|
||||
|
||||
public PlayerBalanceElement(bool displaySeparateBalances, GUILayoutGroup parentComponent, GUILayoutGroup totalBalanceContainer, GUILayoutGroup bankBalanceContainer)
|
||||
{
|
||||
DisplaySeparateBalances = displaySeparateBalances;
|
||||
ParentComponent = parentComponent;
|
||||
TotalBalanceContainer = totalBalanceContainer;
|
||||
BankBalanceContainer = bankBalanceContainer;
|
||||
}
|
||||
|
||||
public PlayerBalanceElement(PlayerBalanceElement element, bool displaySeparateBalances)
|
||||
{
|
||||
DisplaySeparateBalances = displaySeparateBalances;
|
||||
ParentComponent = element.ParentComponent;
|
||||
TotalBalanceContainer = element.TotalBalanceContainer;
|
||||
BankBalanceContainer = element.BankBalanceContainer;
|
||||
}
|
||||
}
|
||||
|
||||
public static PlayerBalanceElement? AddBalanceElement(GUIComponent elementParent, Vector2 relativeSize)
|
||||
{
|
||||
var parent = new GUILayoutGroup(new RectTransform(relativeSize, elementParent.RectTransform), isHorizontal: true, childAnchor: Anchor.TopRight);
|
||||
if (GameMain.IsSingleplayer)
|
||||
{
|
||||
AddBalance(parent, true, TextManager.Get("campaignstore.balance"), GetTotalBalance);
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
bool displaySeparateBalances = CampaignMode.AllowedToManageWallets();
|
||||
var totalBalanceContainer = AddBalance(parent, displaySeparateBalances, TextManager.Get("campaignstore.total"), GetTotalBalance);
|
||||
var bankBalanceContainer = AddBalance(parent, displaySeparateBalances, TextManager.Get("crewwallet.bank"), GetBankBalance);
|
||||
AddBalance(parent, true, TextManager.Get("crewwallet.wallet"), GetWalletBalance);
|
||||
var playerBalanceElement = new PlayerBalanceElement(displaySeparateBalances, parent, totalBalanceContainer, bankBalanceContainer);
|
||||
parent.Recalculate();
|
||||
return playerBalanceElement;
|
||||
}
|
||||
|
||||
static GUILayoutGroup AddBalance(GUIComponent parent, bool visible, LocalizedString text, GUITextBlock.TextGetterHandler textGetter)
|
||||
{
|
||||
float balanceContainerWidth = GameMain.IsSingleplayer ? 1 : 1 / 3f;
|
||||
var rt = new RectTransform(new Vector2(balanceContainerWidth, 1.0f), parent.RectTransform)
|
||||
{
|
||||
MaxSize = new Point(GUI.IntScale(GUI.AdjustForTextScale(120)), int.MaxValue)
|
||||
};
|
||||
var balanceContainer = new GUILayoutGroup(rt, childAnchor: Anchor.TopRight)
|
||||
{
|
||||
RelativeSpacing = 0.005f,
|
||||
Visible = visible
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.5f), balanceContainer.RectTransform), text,
|
||||
font: GUIStyle.Font, textAlignment: Alignment.BottomRight)
|
||||
{
|
||||
AutoScaleVertical = true,
|
||||
ForceUpperCase = ForceUpperCase.Yes
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.5f), balanceContainer.RectTransform), "",
|
||||
textColor: Color.White, font: GUIStyle.SubHeadingFont, textAlignment: Alignment.TopRight)
|
||||
{
|
||||
AutoScaleVertical = true,
|
||||
TextScale = 1.1f,
|
||||
TextGetter = textGetter
|
||||
};
|
||||
return balanceContainer;
|
||||
}
|
||||
}
|
||||
|
||||
public static PlayerBalanceElement? UpdateBalanceElement(PlayerBalanceElement? playerBalanceElement)
|
||||
{
|
||||
if (playerBalanceElement is { } balanceElement)
|
||||
{
|
||||
bool displaySeparateBalances = CampaignMode.AllowedToManageWallets();
|
||||
if (displaySeparateBalances != balanceElement.DisplaySeparateBalances)
|
||||
{
|
||||
balanceElement.TotalBalanceContainer.Visible = displaySeparateBalances;
|
||||
balanceElement.BankBalanceContainer.Visible = displaySeparateBalances;
|
||||
playerBalanceElement = new PlayerBalanceElement(balanceElement, displaySeparateBalances);
|
||||
balanceElement.ParentComponent.Recalculate();
|
||||
}
|
||||
}
|
||||
return playerBalanceElement;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -966,7 +966,15 @@ namespace Barotrauma
|
||||
{
|
||||
OnClicked = (_, __) =>
|
||||
{
|
||||
GameMain.Client?.RequestSelectMode(ModeList.Content.GetChildIndex(ModeList.Content.GetChildByUserData(GameModePreset.Sandbox)));
|
||||
if (GameMain.Client == null) { return false; }
|
||||
if (GameMain.Client.GameStarted)
|
||||
{
|
||||
GameMain.Client.RequestRoundEnd(save: false);
|
||||
}
|
||||
else
|
||||
{
|
||||
GameMain.Client.RequestSelectMode(ModeList.Content.GetChildIndex(ModeList.Content.GetChildByUserData(GameModePreset.Sandbox)));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -1344,9 +1352,9 @@ namespace Barotrauma
|
||||
shuttleTickBox.Enabled = GameMain.Client.HasPermission(ClientPermissions.ManageSettings) && !GameMain.Client.GameStarted;
|
||||
SubList.Enabled = !CampaignFrame.Visible && (GameMain.Client.ServerSettings.AllowSubVoting || GameMain.Client.HasPermission(ClientPermissions.SelectSub));
|
||||
ShuttleList.Enabled = ShuttleList.ButtonEnabled = GameMain.Client.HasPermission(ClientPermissions.SelectSub) && !GameMain.Client.GameStarted;
|
||||
ModeList.Enabled = GameMain.Client.ServerSettings.AllowModeVoting || GameMain.Client.HasPermission(ClientPermissions.SelectMode);
|
||||
ModeList.Enabled = !GameMain.Client.GameStarted && (GameMain.Client.ServerSettings.AllowModeVoting || GameMain.Client.HasPermission(ClientPermissions.SelectMode));
|
||||
LogButtons.Visible = GameMain.Client.HasPermission(ClientPermissions.ServerLog);
|
||||
GameMain.Client.ShowLogButton.Visible = GameMain.Client.HasPermission(ClientPermissions.ServerLog);
|
||||
GameMain.Client.UpdateLogButtonPermissions();
|
||||
roundControlsHolder.Children.ForEach(c => c.IgnoreLayoutGroups = !c.Visible);
|
||||
roundControlsHolder.Children.ForEach(c => c.RectTransform.RelativeSize = Vector2.One);
|
||||
roundControlsHolder.Recalculate();
|
||||
@@ -1559,7 +1567,7 @@ namespace Barotrauma
|
||||
};
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), infoContainer.RectTransform), TextManager.Get("Skills"), font: GUIStyle.SubHeadingFont);
|
||||
foreach (Skill skill in characterInfo.Job.Skills)
|
||||
foreach (Skill skill in characterInfo.Job.GetSkills())
|
||||
{
|
||||
Color textColor = Color.White * (0.5f + skill.Level / 200.0f);
|
||||
var skillText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), infoContainer.RectTransform),
|
||||
@@ -2190,17 +2198,17 @@ namespace Barotrauma
|
||||
canKick = canBan = canPromo = false;
|
||||
}
|
||||
|
||||
List<ContextMenuOption> options = new List<ContextMenuOption>();
|
||||
|
||||
options.Add(new ContextMenuOption("ViewSteamProfile", isEnabled: hasSteam, onSelected: delegate
|
||||
{
|
||||
Steamworks.SteamFriends.OpenWebOverlay($"https://steamcommunity.com/profiles/{client.SteamID}");
|
||||
}));
|
||||
|
||||
options.Add(new ContextMenuOption("ModerationMenu.ManagePlayer", isEnabled: true, onSelected: delegate
|
||||
List<ContextMenuOption> options = new List<ContextMenuOption>
|
||||
{
|
||||
GameMain.NetLobbyScreen?.SelectPlayer(client);
|
||||
}));
|
||||
new ContextMenuOption("ViewSteamProfile", isEnabled: hasSteam, onSelected: delegate
|
||||
{
|
||||
Steamworks.SteamFriends.OpenWebOverlay($"https://steamcommunity.com/profiles/{client.SteamID}");
|
||||
}),
|
||||
new ContextMenuOption("ModerationMenu.ManagePlayer", isEnabled: true, onSelected: delegate
|
||||
{
|
||||
GameMain.NetLobbyScreen?.SelectPlayer(client);
|
||||
})
|
||||
};
|
||||
|
||||
// Creates sub context menu options for all the ranks
|
||||
List<ContextMenuOption> rankOptions = new List<ContextMenuOption>();
|
||||
|
||||
@@ -1170,6 +1170,9 @@ namespace Barotrauma
|
||||
#endif
|
||||
CreateEntityElement(ep, entitiesPerRow, allEntityList.Content);
|
||||
}
|
||||
allEntityList.Content.RectTransform.SortChildren((i1, i2) =>
|
||||
string.Compare(((MapEntityPrefab)i1.GUIComponent.UserData)?.Name.Value, (i2.GUIComponent.UserData as MapEntityPrefab)?.Name.Value, StringComparison.Ordinal));
|
||||
|
||||
}
|
||||
|
||||
private void CreateEntityElement(MapEntityPrefab ep, int entitiesPerRow, GUIComponent parent)
|
||||
@@ -1911,6 +1914,7 @@ namespace Barotrauma
|
||||
}
|
||||
SubmarineInfo.RefreshSavedSub(savePath);
|
||||
if (prevSavePath != null && prevSavePath != savePath) { SubmarineInfo.RefreshSavedSub(prevSavePath); }
|
||||
MainSub.Info.PreviewImage = SubmarineInfo.SavedSubmarines.FirstOrDefault(s => s.FilePath == savePath)?.PreviewImage;
|
||||
|
||||
string downloadFolder = Path.GetFullPath(SaveUtil.SubmarineDownloadFolder);
|
||||
linkedSubBox.ClearChildren();
|
||||
|
||||
Reference in New Issue
Block a user