v1.5.7.0 (Summer Update)

This commit is contained in:
Regalis11
2024-06-18 16:49:51 +03:00
parent 4a63dacbce
commit 230d1b6e78
263 changed files with 7792 additions and 2845 deletions
@@ -320,7 +320,61 @@ namespace Barotrauma
var reputationButton = createTabButton(InfoFrameTab.Reputation, "reputation");
var balanceFrame = new GUIFrame(new RectTransform(new Point(innerLayoutGroup.Rect.Width, innerLayoutGroup.Rect.Height - infoFrameHolderHeight), parent: innerLayoutGroup.RectTransform), style: "InnerFrame");
GUITextBlock balanceText = new GUITextBlock(new RectTransform(Vector2.One, balanceFrame.RectTransform), string.Empty, textAlignment: Alignment.Right);
GUILayoutGroup salaryFrame = new GUILayoutGroup(new RectTransform(new Vector2(0.66f, 1f), balanceFrame.RectTransform), isHorizontal: true, childAnchor: Anchor.CenterLeft);
GUIScrollBar salaryScrollBar = null;
GUITextBlock salaryPercentage = null;
if (GameMain.GameSession?.GameMode is MultiPlayerCampaign)
{
float value = campaignMode.Bank.RewardDistribution;
GUITextBlock salaryText = new GUITextBlock(new RectTransform(new Vector2(0.25f, 1f), salaryFrame.RectTransform), TextManager.Get("defaultsalary"), textAlignment: Alignment.Center)
{
AutoScaleHorizontal = true
};
salaryScrollBar = new GUIScrollBar(new RectTransform(new Vector2(0.4f, 1f), salaryFrame.RectTransform), barSize: 0.1f, style: "GUISlider")
{
Range = new Vector2(0, 1),
BarScrollValue = value / 100f,
Step = 0.01f,
BarSize = 0.1f,
};
salaryPercentage = new GUITextBlock(new RectTransform(new Vector2(0.15f, 1f), salaryFrame.RectTransform), "0", textAlignment: Alignment.Center)
{
Text = ValueToPercentage(RoundRewardDistribution(salaryScrollBar.BarScroll, salaryScrollBar.Step))
};
salaryScrollBar.OnMoved = (scrollBar, value) =>
{
salaryPercentage.Text = ValueToPercentage(RoundRewardDistribution(value, scrollBar.Step));
return true;
};
salaryScrollBar.OnReleased = (bar, scroll) =>
{
int newRewardDistribution = RoundRewardDistribution(scroll, bar.Step);
SetRewardDistribution(Option.None, newRewardDistribution);
return true;
};
var resetButton = new GUIButton(new RectTransform(new Vector2(0.2f, 1f), salaryFrame.RectTransform), TextManager.Get("ResetSalaries"), style: "GUIButtonSmall")
{
TextBlock = { AutoScaleHorizontal = true },
ToolTip = TextManager.Get("resetsalaries.tooltip"),
OnClicked = (button, userData) =>
{
GUI.AskForConfirmation(TextManager.Get("ResetSalaries"), TextManager.Get("ResetSalaries.Warning"), onConfirm: ResetRewardDistributions);
return true;
}
};
void UpdateSliderEnabled()
=> salaryScrollBar.Enabled = resetButton.Enabled = CampaignMode.AllowedToManageWallets();
UpdateSliderEnabled();
Identifier defaultSalaryEventIdentifier = "DefaultSalarySlider".ToIdentifier();
GameMain.Client?.OnPermissionChanged?.RegisterOverwriteExisting(defaultSalaryEventIdentifier, _ => UpdateSliderEnabled());
}
GUITextBlock balanceText = new GUITextBlock(new RectTransform(new Vector2(0.33f, 1f), balanceFrame.RectTransform, Anchor.TopRight), string.Empty, textAlignment: Alignment.Right);
if (GameMain.IsMultiplayer)
{
balanceText.ToolTip = TextManager.Get("bankdescription");
@@ -343,6 +397,13 @@ namespace Barotrauma
{
if (!e.Owner.IsNone()) { return; }
SetBalanceText(balanceText, e.Wallet.Balance);
if (salaryPercentage is not null && salaryScrollBar is not null)
{
float rewardDistribution = e.Wallet.RewardDistribution;
salaryScrollBar.BarScrollValue = rewardDistribution / 100f;
salaryPercentage.Text = ValueToPercentage(rewardDistribution);
}
});
registeredEvents.Add(eventIdentifier);
@@ -350,6 +411,9 @@ namespace Barotrauma
{
text.Text = TextManager.GetWithVariable("bankbalanceformat", "[money]", string.Format(CultureInfo.InvariantCulture, "{0:N0}", balance));
}
LocalizedString ValueToPercentage(float value)
=> TextManager.GetWithVariable("percentageformat", "[value]", $"{(int)MathF.Round(value)}");
}
var submarineButton = createTabButton(InfoFrameTab.Submarine, "submarine");
@@ -1037,11 +1101,10 @@ namespace Barotrauma
{
int newRewardDistribution = RoundRewardDistribution(scroll, bar.Step);
if (newRewardDistribution == targetWallet.RewardDistribution) { return false; }
SetRewardDistribution(character, newRewardDistribution);
SetRewardDistribution(Option.Some(character), newRewardDistribution);
return true;
}
};
int RoundRewardDistribution(float scroll, float step) => (int)MathUtils.RoundTowardsClosest(scroll * 100, step * 100);
SetRewardText(targetWallet.RewardDistribution, rewardBlock);
@@ -1201,6 +1264,7 @@ namespace Barotrauma
{
moneyBlock.Text = TextManager.FormatCurrency(e.Info.Balance);
salarySlider.BarScrollValue = e.Info.RewardDistribution / 100f;
SetRewardText(e.Info.RewardDistribution, rewardBlock);
}
UpdateAllInputs();
@@ -1311,20 +1375,29 @@ namespace Barotrauma
transfer.Write(msg);
GameMain.Client?.ClientPeer?.Send(msg, DeliveryMethod.Reliable);
}
static void SetRewardDistribution(Character character, int newValue)
{
INetSerializableStruct transfer = new NetWalletSetSalaryUpdate
{
Target = character.ID,
NewRewardDistribution = newValue
};
IWriteMessage msg = new WriteOnlyMessage().WithHeader(ClientPacketHeader.REWARD_DISTRIBUTION);
transfer.Write(msg);
GameMain.Client?.ClientPeer?.Send(msg, DeliveryMethod.Reliable);
}
}
static void SetRewardDistribution(Option<Character> character, int newValue)
{
INetSerializableStruct transfer = new NetWalletSetSalaryUpdate
{
Target = character.Select(c => c.ID),
NewRewardDistribution = newValue
};
IWriteMessage msg = new WriteOnlyMessage().WithHeader(ClientPacketHeader.REWARD_DISTRIBUTION);
transfer.Write(msg);
GameMain.Client?.ClientPeer?.Send(msg, DeliveryMethod.Reliable);
}
static void ResetRewardDistributions()
{
IWriteMessage msg = new WriteOnlyMessage().WithHeader(ClientPacketHeader.RESET_REWARD_DISTRIBUTION);
GameMain.Client?.ClientPeer?.Send(msg, DeliveryMethod.Reliable);
}
static int RoundRewardDistribution(float scroll, float step)
=> (int)MathUtils.RoundTowardsClosest(scroll * 100, step * 100);
private GUIComponent CreateClientInfoFrame(GUIFrame frame, Client client, Sprite permissionIcon = null)
{
GUIComponent paddedFrame;