Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upstream sync #2317

Merged
merged 102 commits into from
Jun 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
9b5219a
Fix double label on chem jugs (#29137)
Tayrtahn Jun 17, 2024
e04492e
Automatic changelog update
PJBot Jun 17, 2024
0cf56b9
Fix DresserFilled storagefill rarely causing an error (#29135)
Tayrtahn Jun 17, 2024
82c4db6
Fix female reptilians not having gasp sounds (#29143)
Dutch-VanDerLinde Jun 18, 2024
a1e66cf
clean up weather systems (#28792)
TheShuEd Jun 18, 2024
e5ef2a3
Implement vital chef's hat functionality (#25950)
Tayrtahn Jun 18, 2024
af7e599
Automatic changelog update
PJBot Jun 18, 2024
bd0631c
Add cvar to disable round end pvs overrides (#29151)
DrSmugleaf Jun 18, 2024
47653f3
Update submodule to 226.1.0 (#29159)
metalgearsloth Jun 18, 2024
65821c9
Fix conveyor mispredicts (#28157)
metalgearsloth Jun 18, 2024
92159ed
Automatic changelog update
PJBot Jun 18, 2024
b0b76a1
Replace StationRandomTransform (#29149)
metalgearsloth Jun 18, 2024
e49a0eb
Add warning cones to engivend (#29085)
lzk228 Jun 18, 2024
cffa356
Automatic changelog update
PJBot Jun 18, 2024
d60829f
arachnid inventory layout fix (#29165)
Errant-4 Jun 18, 2024
db30b5e
Automatic changelog update
PJBot Jun 18, 2024
ee2c115
Turn interaction related attempt events into structs (#29168)
ElectroJr Jun 18, 2024
801d405
Add the most anticipated gun in the game. Foam Force. (#29103)
IProduceWidgets Jun 18, 2024
3358aef
Automatic changelog update
PJBot Jun 18, 2024
dabf3d1
Fix material storage going BRRT (#29167)
metalgearsloth Jun 18, 2024
0b98ce8
Automatic changelog update
PJBot Jun 18, 2024
707f1f4
Fix air alarms (#29172)
osjarw Jun 19, 2024
baa6836
Automatic changelog update
PJBot Jun 19, 2024
9b2f9ce
Hidden loadout groups (#29170)
Errant-4 Jun 19, 2024
8113664
Upgrade rsi-diff's changed files action | Make it only return rsi and…
VasilisThePikachu Jun 19, 2024
0910983
unhardcode thief MaxSelectedSets (#29175)
deltanedas Jun 19, 2024
c8de4ec
PullingController cooldown change (#29177)
Sarahon Jun 19, 2024
f9ddccb
Decrease meteor frequency (#29194)
EmoGarbage404 Jun 19, 2024
bb62151
Automatic changelog update
PJBot Jun 19, 2024
4cf60f8
Security Resprite (#29082)
Flareguy Jun 19, 2024
1149641
Automatic changelog update
PJBot Jun 19, 2024
198f028
Make Hamlet a valid chef's hat pilot (#29191)
Tayrtahn Jun 19, 2024
69afba6
Fix Underwing wings (#29092)
UbaserB Jun 19, 2024
bde0f43
Add some happier medibot messages! (#29147)
beck-thompson Jun 19, 2024
3901cda
Automatic changelog update
PJBot Jun 19, 2024
f7db648
shorten short raffle (#28685)
HolySSSS Jun 19, 2024
8d52c1a
Automatic changelog update
PJBot Jun 19, 2024
9cd08b8
Fix some lathe recipe textures showing up blank (#28683)
Plykiya Jun 19, 2024
6c81000
Grammar fix to medibot! (#29197)
beck-thompson Jun 19, 2024
c966db4
Restore default panic bunker and tweak baby jail (#29198)
Chief-Engineer Jun 19, 2024
fc40cd7
Fixed cartridges installing more than once (#29187)
Truoizys Jun 19, 2024
37120c1
Automatic changelog update
PJBot Jun 19, 2024
2b88527
Musician's skirt (#29203)
lzk228 Jun 19, 2024
28ce298
Automatic changelog update
PJBot Jun 19, 2024
7c01ac9
hos cap resprite (#29208)
Flareguy Jun 19, 2024
8a4ce13
Automatic changelog update
PJBot Jun 19, 2024
20544b0
Rejig device link sink & source startup & shutdown (#29035)
ElectroJr Jun 19, 2024
024521b
Add prediction for Tech Disks, cleanup (#29061)
Tayrtahn Jun 19, 2024
e33f034
Code cleanup: radio jammer (#29052)
Tayrtahn Jun 19, 2024
fa3c89a
Partial buckling refactor (#29031)
ElectroJr Jun 19, 2024
39ccab6
Fix documentation typo (#29209)
TsjipTsjip Jun 19, 2024
9499546
Emergency toolbox fill rework (#29202)
Flareguy Jun 19, 2024
912091e
Add wet floor sign & warning cone to autolathe (#29205)
lzk228 Jun 19, 2024
674409d
Automatic changelog update
PJBot Jun 19, 2024
9759747
Tools batch files (#29179)
VasilisThePikachu Jun 19, 2024
67cc089
Fix terrible portable scrubber unlit layers (#29232)
PJB3005 Jun 19, 2024
2b92ec7
Prevent fly-by fixture from powering containment field generator (#29…
arimah Jun 19, 2024
a8ad09e
Automatic changelog update
PJBot Jun 19, 2024
872e927
Hide moth antenna and lizard frills with hardsuit helmets, fix lizard…
Dutch-VanDerLinde Jun 20, 2024
625fef0
Automatic changelog update
PJBot Jun 20, 2024
40bcf66
Fix and enable TestEmptyLoadout (#29228)
Tayrtahn Jun 20, 2024
d438925
Fix entities getting stuck red (#28981)
metalgearsloth Jun 20, 2024
f2c0991
Automatic changelog update
PJBot Jun 20, 2024
c1948d8
Update submodule to 226.2.0 (#29247)
metalgearsloth Jun 20, 2024
4bf6d9e
add a type specifier where one was forgor (#29250)
IProduceWidgets Jun 20, 2024
ad89444
Make winter coat hood hide certain markings (#29238)
Dutch-VanDerLinde Jun 20, 2024
8c9fcd4
Fix ERT becoming sleeper agents and add sleeper agent preferences (#2…
Dutch-VanDerLinde Jun 20, 2024
4ccdc90
Automatic changelog update
PJBot Jun 20, 2024
9bf4a28
fixed Syndicate smokes pack being half-filled (#28371)
neutrino-laser Jun 20, 2024
9fbcec1
Automatic changelog update
PJBot Jun 20, 2024
4fe5235
Buff cube boxes (#29251)
lzk228 Jun 20, 2024
0ac1b31
Automatic changelog update
PJBot Jun 20, 2024
a74ca54
moves explosive tech to T1 (#29227)
Boaz1111 Jun 20, 2024
514e760
Automatic changelog update
PJBot Jun 20, 2024
68c414e
made cup ramen eatable with anything with the fork component (#27826)
Redfire1331 Jun 20, 2024
7994175
Automatic changelog update
PJBot Jun 20, 2024
d15eafe
Survival Box Loadouts, Nitrogen Emergency tanks (#29131)
Errant-4 Jun 20, 2024
cf374ac
You can now pry multiple tiles at once (#29231)
PJB3005 Jun 20, 2024
c91789a
Automatic changelog update
PJBot Jun 20, 2024
50146d4
Fix prying speed & log (#29210)
MilenVolf Jun 20, 2024
0a3b221
Automatic changelog update
PJBot Jun 20, 2024
b90c6ac
golden plunger (#29043)
Ghagliiarghii Jun 20, 2024
c336445
Rate limit ahelps (#29219)
PJB3005 Jun 20, 2024
a3ffe22
return empty string for invalid identity (#29274)
deltanedas Jun 20, 2024
831d962
Make Loadout MinLimit not count failed attempts (#29264)
Tayrtahn Jun 21, 2024
0b34592
Add logging to SharedStorageSystem prototype indexing failure (#29273)
Tayrtahn Jun 21, 2024
afc8002
Fix null exceptions in SurveillanceCameraMonitorSystem (#29275)
Tayrtahn Jun 21, 2024
9cd2705
Make stasis bed power toggleable (#29268)
MilenVolf Jun 21, 2024
f94d663
Automatic changelog update
PJBot Jun 21, 2024
880fef5
Replace BlockSolutionAccessComponent with an attempt event (#26988)
Tayrtahn Jun 21, 2024
d62dddc
fix initial infected icons and add a briefing to the character menu (…
slarticodefast Jun 21, 2024
7ef1002
Automatic changelog update
PJBot Jun 21, 2024
711aced
feat: update cyborg parts naming for them to be ordered consistently,…
diraven Jun 21, 2024
949a837
Ghostrole rule updates (#29249)
TsjipTsjip Jun 21, 2024
3843999
Automatic changelog update
PJBot Jun 21, 2024
70a40b6
Fix some buckle interactions (#29293)
ElectroJr Jun 21, 2024
6b13f5f
Automatic changelog update
PJBot Jun 21, 2024
76a65c8
Implement BlacklistedRange exempt flag (#29258)
nikthechampiongr Jun 21, 2024
730a4d2
Automatic changelog update
PJBot Jun 21, 2024
bffaecf
Merge remote-tracking branch 'refs/remotes/upstream/master' into upst…
Morb0 Jun 21, 2024
fc70ff1
Update locale
Morb0 Jun 21, 2024
c3221e3
Fix locale
Morb0 Jun 21, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 4 additions & 1 deletion .github/workflows/rsi-diff.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,12 @@ jobs:

- name: Get changed files
id: files
uses: Ana06/get-changed-files@v1.2
uses: Ana06/get-changed-files@v2.3.0
with:
format: 'space-delimited'
filter: |
**.rsi
**.png

- name: Diff changed RSIs
id: diff
Expand Down
66 changes: 45 additions & 21 deletions Content.Client/Buckle/BuckleSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Content.Shared.Buckle.Components;
using Content.Shared.Rotation;
using Robust.Client.GameObjects;
using Robust.Shared.GameStates;

namespace Content.Client.Buckle;

Expand All @@ -14,40 +15,63 @@ public override void Initialize()
{
base.Initialize();

SubscribeLocalEvent<BuckleComponent, AfterAutoHandleStateEvent>(OnBuckleAfterAutoHandleState);
SubscribeLocalEvent<BuckleComponent, ComponentHandleState>(OnHandleState);
SubscribeLocalEvent<BuckleComponent, AppearanceChangeEvent>(OnAppearanceChange);
SubscribeLocalEvent<StrapComponent, MoveEvent>(OnStrapMoveEvent);
}

private void OnBuckleAfterAutoHandleState(EntityUid uid, BuckleComponent component, ref AfterAutoHandleStateEvent args)
private void OnStrapMoveEvent(EntityUid uid, StrapComponent component, ref MoveEvent args)
{
ActionBlocker.UpdateCanMove(uid);
// I'm moving this to the client-side system, but for the sake of posterity let's keep this comment:
// > This is mega cursed. Please somebody save me from Mr Buckle's wild ride

if (!TryComp<SpriteComponent>(uid, out var ownerSprite))
// The nice thing is its still true, this is quite cursed, though maybe not omega cursed anymore.
// This code is garbage, it doesn't work with rotated viewports. I need to finally get around to reworking
// sprite rendering for entity layers & direction dependent sorting.

if (args.NewRotation == args.OldRotation)
return;

// Adjust draw depth when the chair faces north so that the seat back is drawn over the player.
// Reset the draw depth when rotated in any other direction.
// TODO when ECSing, make this a visualizer
// This code was written before rotatable viewports were introduced, so hard-coding Direction.North
// and comparing it against LocalRotation now breaks this in other rotations. This is a FIXME, but
// better to get it working for most people before we look at a more permanent solution.
if (component is { Buckled: true, LastEntityBuckledTo: { } } &&
Transform(component.LastEntityBuckledTo.Value).LocalRotation.GetCardinalDir() == Direction.North &&
TryComp<SpriteComponent>(component.LastEntityBuckledTo, out var buckledSprite))
{
component.OriginalDrawDepth ??= ownerSprite.DrawDepth;
ownerSprite.DrawDepth = buckledSprite.DrawDepth - 1;
if (!TryComp<SpriteComponent>(uid, out var strapSprite))
return;
}

// If here, we're not turning north and should restore the saved draw depth.
if (component.OriginalDrawDepth.HasValue)
var isNorth = Transform(uid).LocalRotation.GetCardinalDir() == Direction.North;
foreach (var buckledEntity in component.BuckledEntities)
{
ownerSprite.DrawDepth = component.OriginalDrawDepth.Value;
component.OriginalDrawDepth = null;
if (!TryComp<BuckleComponent>(buckledEntity, out var buckle))
continue;

if (!TryComp<SpriteComponent>(buckledEntity, out var buckledSprite))
continue;

if (isNorth)
{
buckle.OriginalDrawDepth ??= buckledSprite.DrawDepth;
buckledSprite.DrawDepth = strapSprite.DrawDepth - 1;
}
else if (buckle.OriginalDrawDepth.HasValue)
{
buckledSprite.DrawDepth = buckle.OriginalDrawDepth.Value;
buckle.OriginalDrawDepth = null;
}
}
}

private void OnHandleState(Entity<BuckleComponent> ent, ref ComponentHandleState args)
{
if (args.Current is not BuckleState state)
return;

ent.Comp.DontCollide = state.DontCollide;
ent.Comp.BuckleTime = state.BuckleTime;
var strapUid = EnsureEntity<BuckleComponent>(state.BuckledTo, ent);

SetBuckledTo(ent, strapUid == null ? null : new (strapUid.Value, null));

var (uid, component) = ent;

}

private void OnAppearanceChange(EntityUid uid, BuckleComponent component, ref AppearanceChangeEvent args)
{
if (!TryComp<RotationVisualsComponent>(uid, out var rotVisuals))
Expand Down
19 changes: 19 additions & 0 deletions Content.Client/Clothing/Systems/PilotedByClothingSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using Content.Shared.Clothing.Components;
using Robust.Client.Physics;

namespace Content.Client.Clothing.Systems;

public sealed partial class PilotedByClothingSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();

SubscribeLocalEvent<PilotedByClothingComponent, UpdateIsPredictedEvent>(OnUpdatePredicted);
}

private void OnUpdatePredicted(Entity<PilotedByClothingComponent> entity, ref UpdateIsPredictedEvent args)
{
args.BlockPrediction = true;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
using Content.Shared.DeviceNetwork.Systems;

namespace Content.Client.DeviceNetwork.Systems;

/// <inheritdoc/>
public sealed class DeviceNetworkJammerSystem : SharedDeviceNetworkJammerSystem;
68 changes: 35 additions & 33 deletions Content.Client/Effects/ColorFlashEffectSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,24 @@
using Robust.Client.Animations;
using Robust.Client.GameObjects;
using Robust.Shared.Animations;
using Robust.Shared.Collections;
using Robust.Shared.Player;
using Robust.Shared.Timing;
using Robust.Shared.Utility;

namespace Content.Client.Effects;

public sealed class ColorFlashEffectSystem : SharedColorFlashEffectSystem
{
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly AnimationPlayerSystem _animation = default!;
[Dependency] private readonly IComponentFactory _factory = default!;

/// <summary>
/// It's a little on the long side but given we use multiple colours denoting what happened it makes it easier to register.
/// </summary>
private const float AnimationLength = 0.30f;
private const string AnimationKey = "color-flash-effect";
private ValueList<EntityUid> _toRemove = new();

public override void Initialize()
{
Expand All @@ -44,8 +46,28 @@ private void OnEffectAnimationCompleted(EntityUid uid, ColorFlashEffectComponent
{
sprite.Color = component.Color;
}
}

public override void Update(float frameTime)
{
base.Update(frameTime);

var query = AllEntityQuery<ColorFlashEffectComponent>();
_toRemove.Clear();

// Can't use deferred removal on animation completion or it will cause issues.
while (query.MoveNext(out var uid, out _))
{
if (_animation.HasRunningAnimation(uid, AnimationKey))
continue;

RemCompDeferred<ColorFlashEffectComponent>(uid);
_toRemove.Add(uid);
}

foreach (var ent in _toRemove)
{
RemComp<ColorFlashEffectComponent>(ent);
}
}

private Animation? GetDamageAnimation(EntityUid uid, Color color, SpriteComponent? sprite = null)
Expand Down Expand Up @@ -82,51 +104,31 @@ private void OnColorFlashEffect(ColorFlashEffectEvent ev)
{
var ent = GetEntity(nent);

if (Deleted(ent))
if (Deleted(ent) || !TryComp(ent, out SpriteComponent? sprite))
{
continue;
}

if (!TryComp(ent, out AnimationPlayerComponent? player))
{
player = (AnimationPlayerComponent) _factory.GetComponent(typeof(AnimationPlayerComponent));
player.Owner = ent;
player.NetSyncEnabled = false;
AddComp(ent, player);
}

// Need to stop the existing animation first to ensure the sprite color is fixed.
// Otherwise we might lerp to a red colour instead.
if (_animation.HasRunningAnimation(ent, player, AnimationKey))
{
_animation.Stop(ent, player, AnimationKey);
}

if (!TryComp<SpriteComponent>(ent, out var sprite))
{
continue;
}

if (TryComp<ColorFlashEffectComponent>(ent, out var effect))
if (!TryComp(ent, out ColorFlashEffectComponent? comp))
{
sprite.Color = effect.Color;
#if DEBUG
DebugTools.Assert(!_animation.HasRunningAnimation(ent, AnimationKey));
#endif
}

_animation.Stop(ent, AnimationKey);
var animation = GetDamageAnimation(ent, color, sprite);

if (animation == null)
continue;

if (!TryComp(ent, out ColorFlashEffectComponent? comp))
{
comp = (ColorFlashEffectComponent) _factory.GetComponent(typeof(ColorFlashEffectComponent));
comp.Owner = ent;
comp.NetSyncEnabled = false;
AddComp(ent, comp);
continue;
}

EnsureComp<ColorFlashEffectComponent>(ent, out comp);
comp.NetSyncEnabled = false;
comp.Color = sprite.Color;
_animation.Play((ent, player), animation, AnimationKey);

_animation.Play(ent, animation, AnimationKey);
}
}
}
2 changes: 1 addition & 1 deletion Content.Client/Gravity/FloatingVisualizerSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,6 @@ private void OnAnimationCompleted(EntityUid uid, FloatingVisualsComponent compon
if (args.Key != component.AnimationKey)
return;

FloatAnimation(uid, component.Offset, component.AnimationKey, component.AnimationTime, !component.CanFloat);
FloatAnimation(uid, component.Offset, component.AnimationKey, component.AnimationTime, stop: !component.CanFloat);
}
}
2 changes: 1 addition & 1 deletion Content.Client/Interaction/DragDropSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,7 @@ private void RemoveHighlights()
// CanInteract() doesn't support checking a second "target" entity.
// Doing so manually:
var ev = new GettingInteractedWithAttemptEvent(user, dragged);
RaiseLocalEvent(dragged, ev, true);
RaiseLocalEvent(dragged, ref ev);

if (ev.Cancelled)
return false;
Expand Down
26 changes: 14 additions & 12 deletions Content.Client/Lathe/UI/LatheMenu.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -100,12 +100,11 @@
Margin="5 0 0 0"
Text="{Loc 'lathe-menu-fabricating-message'}">
</Label>
<TextureRect
Name="Icon"
HorizontalExpand="True"
SizeFlagsStretchRatio="2"
Margin="100 0 0 0">
</TextureRect>
<EntityPrototypeView
Name="FabricatingEntityProto"
HorizontalAlignment="Left"
Margin="100 0 0 0"
/>
<Label
Name="NameLabel"
RectClipContent="True"
Expand All @@ -114,12 +113,15 @@
</Label>
</PanelContainer>
</BoxContainer>
<ItemList
Name="QueueList"
VerticalExpand="True"
SizeFlagsStretchRatio="3"
SelectMode="None">
</ItemList>
<ScrollContainer VerticalExpand="True" HScrollEnabled="False">
<BoxContainer
Name="QueueList"
Orientation="Vertical"
HorizontalExpand="True"
VerticalExpand="True"
RectClipContent="True">
</BoxContainer>
</ScrollContainer>
</BoxContainer>
<BoxContainer
VerticalExpand="True"
Expand Down
43 changes: 21 additions & 22 deletions Content.Client/Lathe/UI/LatheMenu.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,6 @@ public LatheMenu(LatheBoundUserInterface owner)
/// </summary>
public void PopulateRecipes()
{
if (!_entityManager.TryGetComponent<LatheComponent>(_owner, out var component))
return;

var recipesToShow = new List<LatheRecipePrototype>();
foreach (var recipe in Recipes)
{
Expand Down Expand Up @@ -108,21 +105,13 @@ public void PopulateRecipes()
RecipeList.Children.Clear();
foreach (var prototype in sortedRecipesToShow)
{
List<Texture> textures;
EntityPrototype? recipeProto = null;
if (_prototypeManager.TryIndex(prototype.Result, out EntityPrototype? entityProto) && entityProto != null)
{
textures = SpriteComponent.GetPrototypeTextures(entityProto, _resources).Select(o => o.Default).ToList();
}
else
{
textures = prototype.Icon == null
? new List<Texture> { _spriteSystem.GetPrototypeIcon(prototype.Result).Default }
: new List<Texture> { _spriteSystem.Frame0(prototype.Icon) };
}
recipeProto = entityProto;

var canProduce = _lathe.CanProduce(_owner, prototype, quantity);

var control = new RecipeControl(prototype, () => GenerateTooltipText(prototype), canProduce, textures);
var control = new RecipeControl(prototype, () => GenerateTooltipText(prototype), canProduce, recipeProto);
control.OnButtonPressed += s =>
{
if (!int.TryParse(AmountLineEdit.Text, out var amount) || amount <= 0)
Expand Down Expand Up @@ -219,14 +208,23 @@ public void UpdateCategories()
/// <param name="queue"></param>
public void PopulateQueueList(List<LatheRecipePrototype> queue)
{
QueueList.Clear();
QueueList.DisposeAllChildren();

var idx = 1;
foreach (var recipe in queue)
{
var icon = recipe.Icon == null
? _spriteSystem.GetPrototypeIcon(recipe.Result).Default
: _spriteSystem.Frame0(recipe.Icon);
QueueList.AddItem($"{idx}. {recipe.Name}", icon);
var queuedRecipeBox = new BoxContainer();
queuedRecipeBox.Orientation = BoxContainer.LayoutOrientation.Horizontal;

var queuedRecipeProto = new EntityPrototypeView();
if (_prototypeManager.TryIndex(recipe.Result, out EntityPrototype? entityProto) && entityProto != null)
queuedRecipeProto.SetPrototype(entityProto);

var queuedRecipeLabel = new Label();
queuedRecipeLabel.Text = $"{idx}. {recipe.Name}";
queuedRecipeBox.AddChild(queuedRecipeProto);
queuedRecipeBox.AddChild(queuedRecipeLabel);
QueueList.AddChild(queuedRecipeBox);
idx++;
}
}
Expand All @@ -236,9 +234,10 @@ public void SetQueueInfo(LatheRecipePrototype? recipe)
FabricatingContainer.Visible = recipe != null;
if (recipe == null)
return;
Icon.Texture = recipe.Icon == null
? _spriteSystem.GetPrototypeIcon(recipe.Result).Default
: _spriteSystem.Frame0(recipe.Icon);

if (_prototypeManager.TryIndex(recipe.Result, out EntityPrototype? entityProto) && entityProto != null)
FabricatingEntityProto.SetPrototype(entityProto);

NameLabel.Text = $"{recipe.Name}";
}

Expand Down
Loading
Loading