The Flatpacker 1001 can now make flatpacks for computers. (#23471)

* moved ComputerBoardComponent to Content.Shared

* made flatpacker accept computer boards

* made flatpack system and ui function with computer boards

* fixed it so that flatpacks of computers are correctly coloured to fit their computer board colour

* unhardcoded the computer flatpack assembly cost

* Combined GetFlatpackCreationCost(...) with GetflatpackCreationCostForComputer(...)

* removed code duplication in SharedFlatpackSystem

* removed code duplication from FlatpackCreatorMenu.xaml.cs

* remove code duplication from FlatpackSystem (on the server)

* fixed indentation error
This commit is contained in:
SpeltIncorrectyl
2024-01-04 04:23:47 +00:00
committed by GitHub
parent f533a1a543
commit 082bde40ca
7 changed files with 97 additions and 35 deletions

View File

@@ -5,6 +5,7 @@ using Content.Shared.Construction;
using Content.Shared.Construction.Components;
using Content.Shared.Containers.ItemSlots;
using Robust.Shared.Timing;
using YamlDotNet.Serialization.NodeTypeResolvers;
namespace Content.Server.Construction;
@@ -33,10 +34,16 @@ public sealed class FlatpackSystem : SharedFlatpackSystem
if (!_itemSlots.TryGetSlot(uid, comp.SlotId, out var itemSlot) || itemSlot.Item is not { } machineBoard)
return;
if (!TryComp<MachineBoardComponent>(machineBoard, out var boardComp))
Dictionary<string, int>? cost = null;
if (TryComp<MachineBoardComponent>(machineBoard, out var machineBoardComponent))
cost = GetFlatpackCreationCost(ent, (machineBoard, machineBoardComponent));
if (TryComp<ComputerBoardComponent>(machineBoard, out var computerBoardComponent))
cost = GetFlatpackCreationCost(ent);
if (cost is null)
return;
if (!MaterialStorage.CanChangeMaterialAmount(uid, GetFlatpackCreationCost(ent, (machineBoard, boardComp))))
if (!MaterialStorage.CanChangeMaterialAmount(uid, cost))
return;
comp.Packing = true;
@@ -68,15 +75,20 @@ public sealed class FlatpackSystem : SharedFlatpackSystem
if (!_itemSlots.TryGetSlot(uid, comp.SlotId, out var itemSlot) || itemSlot.Item is not { } machineBoard)
return;
if (!TryComp<MachineBoardComponent>(machineBoard, out var boardComp))
Dictionary<string, int>? cost = null;
if (TryComp<MachineBoardComponent>(machineBoard, out var machineBoardComponent))
cost = GetFlatpackCreationCost(ent, (machineBoard, machineBoardComponent));
if (TryComp<ComputerBoardComponent>(machineBoard, out var computerBoardComponent))
cost = GetFlatpackCreationCost(ent);
if (cost is null)
return;
var materialCost = GetFlatpackCreationCost(ent, (machineBoard, boardComp));
if (!MaterialStorage.TryChangeMaterialAmount((ent, null), materialCost))
if (!MaterialStorage.TryChangeMaterialAmount((ent, null), cost))
return;
var flatpack = Spawn(comp.BaseFlatpackPrototype, Transform(ent).Coordinates);
SetupFlatpack(flatpack, (machineBoard, boardComp));
SetupFlatpack(flatpack, machineBoard);
}
public override void Update(float frameTime)