Puddles & spreader refactor (#15191)

This commit is contained in:
metalgearsloth
2023-04-10 15:37:03 +10:00
committed by GitHub
parent 3178ab83f6
commit 317a4013eb
141 changed files with 3046 additions and 3201 deletions

View File

@@ -5,6 +5,7 @@ using Content.Shared.Chemistry.Components;
using Content.Shared.Chemistry.Reaction;
using Content.Shared.Database;
using Content.Shared.FixedPoint;
using Robust.Shared.Audio;
using Robust.Shared.Map;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
@@ -73,6 +74,12 @@ namespace Content.Shared.Chemistry.Reagent
[DataField("metamorphicSprite")]
public SpriteSpecifier? MetamorphicSprite { get; } = null;
/// <summary>
/// If this reagent is part of a puddle is it slippery.
/// </summary>
[DataField("slippery")]
public bool Slippery = false;
[DataField("metabolisms", serverOnly: true, customTypeSerializer: typeof(PrototypeIdDictionarySerializer<ReagentEffectsEntry, MetabolismGroupPrototype>))]
public Dictionary<string, ReagentEffectsEntry>? Metabolisms = null;
@@ -85,26 +92,11 @@ namespace Content.Shared.Chemistry.Reagent
[DataField("plantMetabolism", serverOnly: true)]
public readonly List<ReagentEffect> PlantMetabolisms = new(0);
[DataField("pricePerUnit")]
public float PricePerUnit { get; }
[DataField("pricePerUnit")] public float PricePerUnit;
/// <summary>
/// If the substance color is too dark we user a lighter version to make the text color readable when the user examines a solution.
/// </summary>
public Color GetSubstanceTextColor()
{
var highestValue = MathF.Max(SubstanceColor.R, MathF.Max(SubstanceColor.G, SubstanceColor.B));
var difference = 0.5f - highestValue;
if (difference > 0f)
{
return new Color(SubstanceColor.R + difference,
SubstanceColor.G + difference,
SubstanceColor.B + difference);
}
return SubstanceColor;
}
// TODO: Pick the highest reagent for sounds and add sticky to cola, juice, etc.
[DataField("footstepSound")]
public SoundSpecifier FootstepSound = new SoundCollectionSpecifier("FootstepWater");
public FixedPoint2 ReactionTile(TileRef tile, FixedPoint2 reactVolume)
{