Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaClient/ClientSource/Events/Missions/CargoMission.cs
2024-04-24 18:09:05 +03:00

61 lines
2.8 KiB
C#

using Barotrauma.Networking;
using System.Globalization;
namespace Barotrauma
{
partial class CargoMission : Mission
{
public override bool DisplayAsCompleted => false;
public override bool DisplayAsFailed => false;
public override RichString GetMissionRewardText(Submarine sub)
{
LocalizedString rewardText = GetRewardAmountText(sub);
LocalizedString retVal;
if (rewardPerCrate.HasValue) // If every crate has the same value
{
LocalizedString rewardPerCrateText = TextManager.GetWithVariable("currencyformat", "[credits]", string.Format(CultureInfo.InvariantCulture, "{0:N0}", rewardPerCrate.Value));
retVal = TextManager.GetWithVariables("missionrewardcargopercrate",
("[rewardpercrate]", rewardPerCrateText),
("[itemcount]", itemsToSpawn.Count.ToString()),
("[maxitemcount]", maxItemCount.ToString()),
("[totalreward]", $"‖color:gui.orange‖{rewardText}‖end‖"));
}
else // Crates have differing values, so only show the total value
{
retVal = TextManager.GetWithVariables("missionrewardcargo",
("[totalreward]", $"‖color:gui.orange‖{rewardText}‖end‖"),
("[itemcount]", itemsToSpawn.Count.ToString()),
("[maxitemcount]", maxItemCount.ToString()));
}
return RichString.Rich(retVal);
}
public override void ClientReadInitial(IReadMessage msg)
{
base.ClientReadInitial(msg);
items.Clear();
ushort itemCount = msg.ReadUInt16();
for (int i = 0; i < itemCount; i++)
{
items.Add(Item.ReadSpawnData(msg));
}
if (items.Contains(null))
{
throw new System.Exception("Error in CargoMission.ClientReadInitial: item list contains null (mission: " + Prefab.Identifier + ")");
}
if (items.Count != itemCount)
{
throw new System.Exception("Error in CargoMission.ClientReadInitial: item count does not match the server count (" + itemCount + " != " + items.Count + ", mission: " + Prefab.Identifier + ")");
}
if (requiredDeliveryAmount == 0) { requiredDeliveryAmount = items.Count; }
if (requiredDeliveryAmount > items.Count)
{
DebugConsole.AddWarning($"Error in mission \"{Prefab.Identifier}\". Required delivery amount is {requiredDeliveryAmount} but there's only {items.Count} items to deliver.",
contentPackage: Prefab.ContentPackage);
requiredDeliveryAmount = items.Count;
}
}
}
}