Potency sprite scaling (#7100)

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
This commit is contained in:
mirrorcult
2022-03-13 03:11:03 -07:00
committed by GitHub
parent c1c8b8ffc0
commit e87ab94810
6 changed files with 53 additions and 1 deletions

View File

@@ -0,0 +1,11 @@
namespace Content.Client.Botany;
[RegisterComponent]
public sealed class PotencyVisualsComponent : Component
{
[DataField("minimumScale")]
public float MinimumScale = 0.5f;
[DataField("maximumScale")]
public float MaximumScale = 1.5f;
}

View File

@@ -0,0 +1,21 @@
using Content.Shared.Botany;
using Robust.Client.GameObjects;
namespace Content.Client.Botany;
public sealed class PotencyVisualsSystem : VisualizerSystem<PotencyVisualsComponent>
{
protected override void OnAppearanceChange(EntityUid uid, PotencyVisualsComponent component, ref AppearanceChangeEvent args)
{
base.OnAppearanceChange(uid, component, ref args);
if (!TryComp<SpriteComponent>(uid, out var sprite))
return;
if (args.Component.TryGetData(ProduceVisuals.Potency, out float potency))
{
var scale = MathHelper.Lerp(component.MinimumScale, component.MaximumScale, potency / 100);
sprite.Scale = new Vector2(scale, scale);
}
}
}

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using Content.Server.Botany.Components;
using Content.Server.Kitchen.Components;
using Content.Shared.Botany;
using Content.Shared.Examine;
using Content.Shared.Random.Helpers;
using Content.Shared.Tag;
@@ -124,6 +125,11 @@ public sealed partial class BotanySystem
produce.SeedName = proto.ID;
ProduceGrown(entity, produce);
if (TryComp<AppearanceComponent>(entity, out var appearance))
{
appearance.SetData(ProduceVisuals.Potency, proto.Potency);
}
if (proto.Mysterious)
{
var metaData = MetaData(entity);

View File

@@ -17,7 +17,8 @@ namespace Content.Server.Entry
"ClientEntitySpawner",
"CharacterInfo",
"ItemCabinetVisuals",
"HandheldGPS"
"HandheldGPS",
"PotencyVisuals"
};
}
}

View File

@@ -0,0 +1,9 @@
using Robust.Shared.Serialization;
namespace Content.Shared.Botany;
[Serializable, NetSerializable]
public enum ProduceVisuals : byte
{
Potency
}

View File

@@ -10,6 +10,8 @@
netsync: false
state: produce
- type: Produce
- type: PotencyVisuals
- type: Appearance
- type: Extractable
grindableSolutionName: food
@@ -25,6 +27,8 @@
netsync: false
state: produce
- type: Produce
- type: PotencyVisuals
- type: Appearance
- type: Extractable
grindableSolutionName: food