* LOCKED THE FUCK IN * Forgot this little fella * Crying * All entity effects ported, needs cleanup still * Commit * HEHEHEHAW * Shelve for now * fixe * Big * First big chunk of changes * Big if true * Commit * IT BUILDS!!! * Fix LINTER fails * Cleanup * Scale working, cut down on some evil code * Delete old Entity Effects * Accidentally breaking shit by fixing bugs * Fix a bunch of effects not working * Fix reagent thresholds * Update damage * Wait don't change the gas metabolisms A * Cleanup * more fixes * Eh * Misc fixes and jank * Remove two things, add bullshit, change condition to inverted * Remove unused "Shared" system structure * Namespace fix * merge conflicts/cleanup * More fixes * Guidebook text begins * Shelve * Push * More shit to push * Fix * Fix merg conflicts * BLOOD FOR THE BLOOD GOD!!! * Mild cleanup and lists * Fix localization and comments * Shuffle localization around a bit. * All done? * Nearly everything * Is this the end? * Whoops forgot to remove that TODO * Get rid of some warnings for good measure... * It's done * Should make those virtual in case we want to override them tbqh... * Update Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantDestroySeeds.cs Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com> * Fix test fails real * Add to codeowners * Documentation to everything * Forgot to push whoops * Standardize Condition names * Fix up metabolism a little as a treat * review * add IsServer checks --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com>
71 lines
2.3 KiB
C#
71 lines
2.3 KiB
C#
using System.IO;
|
|
using System.Linq;
|
|
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
using Content.Shared.Chemistry.Reaction;
|
|
using Content.Shared.Chemistry.Reagent;
|
|
using Content.Shared.Damage;
|
|
using Content.Shared.EntityConditions;
|
|
using Content.Shared.EntityEffects;
|
|
using Content.Shared.FixedPoint;
|
|
using Robust.Shared.Prototypes;
|
|
|
|
namespace Content.Server.GuideGenerator;
|
|
|
|
public sealed class ChemistryJsonGenerator
|
|
{
|
|
public static void PublishJson(StreamWriter file)
|
|
{
|
|
var prototype = IoCManager.Resolve<IPrototypeManager>();
|
|
var prototypes =
|
|
prototype
|
|
.EnumeratePrototypes<ReagentPrototype>()
|
|
.Where(x => !x.Abstract)
|
|
.Select(x => new ReagentEntry(x))
|
|
.ToDictionary(x => x.Id, x => x);
|
|
|
|
var reactions =
|
|
prototype
|
|
.EnumeratePrototypes<ReactionPrototype>()
|
|
.Where(x => x.Products.Count != 0);
|
|
|
|
foreach (var reaction in reactions)
|
|
{
|
|
foreach (var product in reaction.Products.Keys)
|
|
{
|
|
prototypes[product].Recipes.Add(reaction.ID);
|
|
}
|
|
}
|
|
|
|
var serializeOptions = new JsonSerializerOptions
|
|
{
|
|
WriteIndented = true,
|
|
Converters =
|
|
{
|
|
new UniversalJsonConverter<EntityEffect>(),
|
|
new UniversalJsonConverter<EntityCondition>(),
|
|
new UniversalJsonConverter<ReagentEffectsEntry>(),
|
|
new UniversalJsonConverter<DamageSpecifier>(),
|
|
new FixedPointJsonConverter()
|
|
}
|
|
};
|
|
|
|
file.Write(JsonSerializer.Serialize(prototypes, serializeOptions));
|
|
}
|
|
|
|
public sealed class FixedPointJsonConverter : JsonConverter<FixedPoint2>
|
|
{
|
|
public override void Write(Utf8JsonWriter writer, FixedPoint2 value, JsonSerializerOptions options)
|
|
{
|
|
writer.WriteNumberValue(value.Float());
|
|
}
|
|
|
|
public override FixedPoint2 Read(ref Utf8JsonReader reader, Type objectType, JsonSerializerOptions options)
|
|
{
|
|
// Throwing a NotSupportedException here allows the error
|
|
// message to provide path information.
|
|
throw new NotSupportedException();
|
|
}
|
|
}
|
|
}
|