[Prototype("alertLevels")]
public sealed partial class AlertLevelPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
/// <summary>
/// Dictionary of alert levels. Keyed by string - the string key is the most important
/// Difficulty is checked over all sets, but each set has its own probability and pick count.
/// </summary>
[DataRecord]
-public record struct AntagObjectiveSet()
+public partial record struct AntagObjectiveSet()
{
/// <summary>
/// The grouping used by the objective system to pick random objectives.
[Prototype("seed")]
public sealed partial class SeedPrototype : SeedData, IPrototype
{
- [IdDataField] public string ID { get; private init; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
}
public enum HarvestType : byte
/// If the condition doesn't match, the next condition is checked.
/// </summary>
[Prototype("playerConnectionWhitelist")]
-public sealed class PlayerConnectionWhitelistPrototype : IPrototype
+public sealed partial class PlayerConnectionWhitelistPrototype : IPrototype
{
[IdDataField]
- public string ID { get; } = default!;
+ public string ID { get; private set; } = default!;
/// <summary>
/// Minimum number of players required for this whitelist to be active.
/// If there are less players than this, the whitelist will be ignored and the next one in the list will be used.
/// </summary>
[DataField]
- public int MinimumPlayers { get; } = 0;
+ public int MinimumPlayers = 0;
/// <summary>
/// Maximum number of players allowed for this whitelist to be active.
/// If there are more players than this, the whitelist will be ignored and the next one in the list will be used.
/// </summary>
[DataField]
- public int MaximumPlayers { get; } = int.MaxValue;
+ public int MaximumPlayers = int.MaxValue;
[DataField]
- public WhitelistCondition[] Conditions { get; } = default!;
+ public WhitelistCondition[] Conditions = default!;
}
/// Allows getting a <see cref="IGhostRoleRaffleDecider"/> as prototype.
/// </summary>
[Prototype("ghostRoleRaffleDecider")]
-public sealed class GhostRoleRaffleDeciderPrototype : IPrototype
+public sealed partial class GhostRoleRaffleDeciderPrototype : IPrototype
{
/// <inheritdoc />
[IdDataField]
[Prototype("htnCompound")]
public sealed partial class HTNCompoundPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = string.Empty;
+ [IdDataField] public string ID { get; private set; } = string.Empty;
[DataField("branches", required: true)]
public List<HTNBranch> Branches = new();
[Prototype("utilityCurvePreset")]
public sealed partial class UtilityCurvePresetPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = string.Empty;
+ [IdDataField] public string ID { get; private set; } = string.Empty;
[DataField("curve", required: true)] public IUtilityCurve Curve = default!;
}
}
[DataRecord]
-public sealed class DungeonSpawnGroup : IGridSpawnGroup
+public sealed partial class DungeonSpawnGroup : IGridSpawnGroup
{
/// <summary>
/// Prototypes we can choose from to spawn.
}
[DataRecord]
-public sealed class GridSpawnGroup : IGridSpawnGroup
+public sealed partial class GridSpawnGroup : IGridSpawnGroup
{
public List<ResPath> Paths = new();
public string[]? Parents { get; private set; }
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
/// <summary>
/// How many wires in this layout will do
{
/// <inheritdoc />
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<EntityPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
/// <inheritdoc />
[NeverPushInheritance]
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
/// <inheritdoc />
[IdDataField]
/// </summary>
[DataField("chunkComponents")]
[AlwaysPushInheritance]
- public ComponentRegistry ChunkComponents { get; } = new();
+ public ComponentRegistry ChunkComponents = new();
//TODO: Get someone to make this a method on componentregistry that does it Correctly.
/// <summary>
{
/// <inheritdoc />
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<EntityPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
/// <inheritdoc />
[NeverPushInheritance]
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
/// <inheritdoc />
[IdDataField]
{
/// <inheritdoc/>
[IdDataField]
- public string ID { get; } = default!;
+ public string ID { get; private set; } = default!;
}
[Prototype("ambientMusic")]
public sealed partial class AmbientMusicPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = string.Empty;
+ [IdDataField] public string ID { get; private set; } = string.Empty;
/// <summary>
/// Traditionally you'd prioritise most rules to least as priority but in our case we'll just be explicit.
public sealed partial class JukeboxPrototype : IPrototype
{
[IdDataField]
- public string ID { get; } = string.Empty;
+ public string ID { get; private set; } = string.Empty;
/// <summary>
/// User friendly name to use in UI.
[Prototype("body")]
public sealed partial class BodyPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
[DataField("name")]
public string Name { get; private set; } = "";
}
[DataRecord]
-public sealed record BodyPrototypeSlot(EntProtoId? Part, HashSet<string> Connections, Dictionary<string, string> Organs);
+public sealed partial record BodyPrototypeSlot(EntProtoId? Part, HashSet<string> Connections, Dictionary<string, string> Organs);
{
/// <inheritdoc />
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<CargoProductPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
/// <inheritdoc />
[NeverPushInheritance]
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
[DataField("name")] private string _name = string.Empty;
}
[Serializable, NetSerializable, DataRecord]
-public sealed class PulledAccessLog
+public sealed partial class PulledAccessLog
{
public readonly TimeSpan Time;
public readonly string Accessor;
}
[Serializable, NetSerializable, DataRecord]
-public sealed class ProbedNetworkDevice
+public sealed partial class ProbedNetworkDevice
{
public readonly string Name;
public readonly string Address;
/// Different entities may use different sounds collections.
/// </summary>
[Prototype("emoteSounds"), Serializable, NetSerializable]
-public sealed class EmoteSoundsPrototype : IPrototype
+public sealed partial class EmoteSoundsPrototype : IPrototype
{
[IdDataField]
public string ID { get; private set; } = default!;
public List<string> Inventory = new();
[ViewVariables, IdDataField]
- public string ID { get; } = default!;
+ public string ID { get; private set; } = default!;
}
}
{
/// <inheritdoc/>
[IdDataField]
- public string ID { get; } = default!;
+ public string ID { get; private set; } = default!;
/// <summary>
/// A locale string used in the guidebook to describe this mixing category.
{
/// <inheritdoc/>
[IdDataField]
- public string ID { get; } = default!;
+ public string ID { get; private set; } = default!;
/// <summary>
/// Text shown for this severity level when the contraband is examined.
/// Can be viewed and edited in a criminal records console by security.
/// </summary>
[Serializable, NetSerializable, DataRecord]
-public sealed record CriminalRecord
+public sealed partial record CriminalRecord
{
/// <summary>
/// Status of the person (None, Wanted, Detained).
[Serializable, NetSerializable]
public sealed partial class DamageGroupPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
[DataField(required: true)]
private LocId Name { get; set; }
[Prototype("palette")]
public sealed partial class ColorPalettePrototype : IPrototype
{
- [IdDataField] public string ID { get; } = null!;
+ [IdDataField] public string ID { get; private set; } = null!;
[DataField("name")] public string Name { get; private set; } = null!;
[DataField("colors")] public Dictionary<string, Color> Colors { get; private set; } = null!;
}
}
[DataRecord, Serializable, NetSerializable]
- public record DecalGridChunkCollection(Dictionary<Vector2i, DecalChunk> ChunkCollection)
+ public partial record DecalGridChunkCollection(Dictionary<Vector2i, DecalChunk> ChunkCollection)
{
public uint NextDecalId;
}
[Prototype("decal")]
public sealed partial class DecalPrototype : IPrototype, IInheritingPrototype
{
- [IdDataField] public string ID { get; } = null!;
+ [IdDataField] public string ID { get; private set; } = null!;
[DataField("sprite")] public SpriteSpecifier Sprite { get; private set; } = SpriteSpecifier.Invalid;
[DataField("tags")] public List<string> Tags = new();
[DataField("showMenu")] public bool ShowMenu = true;
public bool DefaultSnap = true;
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<DecalPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
[NeverPushInheritance]
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
}
}
{
/// <inheritdoc/>
[IdDataField]
- public string ID { get; } = default!;
+ public string ID { get; private set; } = default!;
[DataField(required: true)]
public EntityTableSelector Table = default!;
/// Allows specifying the settings for a ghost role raffle as a prototype.
/// </summary>
[Prototype("ghostRoleRaffleSettings")]
-public sealed class GhostRoleRaffleSettingsPrototype : IPrototype
+public sealed partial class GhostRoleRaffleSettingsPrototype : IPrototype
{
/// <inheritdoc />
[IdDataField]
[Prototype("preloadedGrid")]
public sealed partial class PreloadedGridPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = string.Empty;
+ [IdDataField] public string ID { get; private set; } = string.Empty;
[DataField(required: true)]
public ResPath Path;
[Prototype("markingPoints")]
public sealed partial class MarkingPointsPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
/// <summary>
/// If the user of this marking point set is only allowed to
[Prototype("randomHumanoidSettings")]
public sealed partial class RandomHumanoidSettingsPrototype : IPrototype, IInheritingPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
[ParentDataField(typeof(PrototypeIdArraySerializer<RandomHumanoidSettingsPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
[AbstractDataField]
[NeverPushInheritance]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
/// <summary>
/// Whether the humanoid's name should take from the randomized profile or not.
[Prototype("inventoryTemplate")]
public sealed partial class InventoryTemplatePrototype : IPrototype
{
- [IdDataField] public string ID { get; } = string.Empty;
+ [IdDataField] public string ID { get; private set; } = string.Empty;
[DataField("slots")] public SlotDefinition[] Slots { get; private set; } = Array.Empty<SlotDefinition>();
}
{
/// <inheritdoc/>
[IdDataField]
- public string ID { get; } = default!;
+ public string ID { get; private set; } = default!;
/// <summary>
/// The amount of space in a bag an item of this size takes.
/// </summary>
[DataField]
- public readonly int Weight = 1;
+ public int Weight = 1;
/// <summary>
/// A player-facing name used to describe this size.
/// </summary>
[DataField]
- public readonly LocId Name;
+ public LocId Name;
/// <summary>
/// The default inventory shape associated with this item size.
{
/// <inheritdoc/>
[IdDataField]
- public string ID { get; } = default!;
+ public string ID { get; private set; } = default!;
/// <summary>
/// A localized string used in the UI
public string ID { get; private set; } = default!;
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<LatheRecipePackPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
[NeverPushInheritance]
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
/// <summary>
/// The lathe recipes contained by this pack.
[AbstractDataFieldAttribute]
public bool Abstract { get; private set; }
- [IdDataField] public string ID { get; } = string.Empty;
+ [IdDataField] public string ID { get; private set; } = string.Empty;
public ushort TileId { get; private set; }
{
[ViewVariables]
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<MaterialPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
[ViewVariables]
[AbstractDataField]
- public bool Abstract { get; } = false;
+ public bool Abstract { get; private set; } = false;
[ViewVariables]
[IdDataField]
/// The core properties of Role Types
/// </summary>
[Prototype, Serializable]
-public sealed class RoleTypePrototype : IPrototype
+public sealed partial class RoleTypePrototype : IPrototype
{
[IdDataField]
public string ID { get; private set; } = default!;
/// An ability that adds components to the user when the gloves are enabled.
/// </summary>
[DataRecord]
-public record struct NinjaGloveAbility()
+public partial record struct NinjaGloveAbility()
{
/// <summary>
/// If not null, checks if an objective with this prototype has been completed.
/// Stores all the necessary information for rendering the FoodSequence element
/// </summary>
[DataRecord, Serializable, NetSerializable]
-public record struct FoodSequenceVisualLayer
+public partial record struct FoodSequenceVisualLayer
{
/// <summary>
/// reference to the original prototype of the layer. Used to edit visual layers.
[Prototype("biomeTemplate")]
public sealed partial class BiomeTemplatePrototype : IPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
[DataField("layers")]
public List<IBiomeLayer> Layers = new();
/// Spawns entities inside of the specified area with the minimum specified radius.
/// </summary>
[Prototype("biomeMarkerLayer")]
-public sealed class BiomeMarkerLayerPrototype : IBiomeMarkerLayer
+public sealed partial class BiomeMarkerLayerPrototype : IBiomeMarkerLayer
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
/// <summary>
/// Checks for the relevant entity for the tile before spawning. Useful for substituting walls with ore veins for example.
/// Default prototype to spawn. If null will fall back to entity mask.
/// </summary>
[DataField]
- public string? Prototype { get; }
+ public string? Prototype { get; private set; }
/// <summary>
/// Minimum radius between 2 points
[Prototype("playTimeTracker")]
public sealed partial class PlayTimeTrackerPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
}
public sealed partial class LoadoutEffectGroupPrototype : IPrototype
{
[IdDataField]
- public string ID { get; } = string.Empty;
+ public string ID { get; private set; } = string.Empty;
[DataField(required: true)]
public List<LoadoutEffect> Effects = new();
public sealed partial class LoadoutGroupPrototype : IPrototype
{
[IdDataField]
- public string ID { get; } = string.Empty;
+ public string ID { get; private set; } = string.Empty;
/// <summary>
/// User-friendly name for the group.
public sealed partial class LoadoutPrototype : IPrototype, IEquipmentLoadout
{
[IdDataField]
- public string ID { get; } = string.Empty;
+ public string ID { get; private set; } = string.Empty;
/*
* You can either use an existing StartingGearPrototype or specify it inline to avoid bloating yaml.
*/
[IdDataField]
- public string ID { get; } = string.Empty;
+ public string ID { get; private set; } = string.Empty;
/// <summary>
/// Can the user edit their entity name for this role loadout?
}
[Prototype]
-public sealed class DungeonConfigPrototype : DungeonConfig, IPrototype
+public sealed partial class DungeonConfigPrototype : DungeonConfig, IPrototype
{
[IdDataField]
public string ID { get; private set; } = default!;
/// This lets us share data between different dungeon configs without having to repeat entire configs.
/// </remarks>
[DataRecord]
-public sealed class DungeonData
+public sealed partial class DungeonData
{
// I hate this but it also significantly reduces yaml bloat if we add like 10 variations on the same set of layers
// e.g. science rooms, engi rooms, cargo rooms all under PlanetBase for example.
}
[DataRecord]
-public record struct NoiseDunGenLayer
+public partial record struct NoiseDunGenLayer
{
/// <summary>
/// If the noise value is above this then it gets output.
}
[DataRecord]
-public record struct ReplaceTileLayer
+public partial record struct ReplaceTileLayer
{
public ProtoId<ContentTileDefinition> Tile;
[Prototype("dungeonPreset")]
public sealed partial class DungeonPresetPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
/// <summary>
/// The room pack bounds we need to fill.
[Prototype("dungeonRoom")]
public sealed partial class DungeonRoomPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = string.Empty;
+ [IdDataField] public string ID { get; private set; } = string.Empty;
[ViewVariables(VVAccess.ReadWrite), DataField]
public List<ProtoId<TagPrototype>> Tags = new();
[Prototype("salvageLoot")]
public sealed partial class SalvageLootPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
/// <summary>
/// Should this loot always spawn if possible. Used for stuff such as ore.
[Prototype("salvageDifficulty")]
public sealed partial class SalvageDifficultyPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = string.Empty;
+ [IdDataField] public string ID { get; private set; } = string.Empty;
/// <summary>
/// Color to be used in UI.
public Color Color { get; private set; } = Color.Lime;
[IdDataField, ViewVariables]
- public string ID { get; } = default!;
+ public string ID { get; private set; } = default!;
/// <summary>
/// If channel is long range it doesn't require telecommunication server
[Prototype("RandomPlantMutationList")]
public sealed partial class RandomPlantMutationListPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
/// <summary>
/// List of RandomFills that can be picked from.
[Prototype("rules")]
public sealed partial class RulesPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = string.Empty;
+ [IdDataField] public string ID { get; private set; } = string.Empty;
[DataField("rules", required: true)]
public List<RulesRule> Rules = new();
/// Linter-friendly version of weightedRandom for Entity prototypes.
/// </summary>
[Prototype("weightedRandomEntity")]
-public sealed class WeightedRandomEntityPrototype : IWeightedRandomPrototype
+public sealed partial class WeightedRandomEntityPrototype : IWeightedRandomPrototype
{
[IdDataField]
public string ID { get; private set; } = default!;
[Prototype("weightedRandomFillSolution")]
public sealed partial class WeightedRandomFillSolutionPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
/// <summary>
/// List of RandomFills that can be picked from.
/// Linter-friendly version of weightedRandom for Ore prototypes.
/// </summary>
[Prototype("weightedRandomOre")]
-public sealed class WeightedRandomOrePrototype : IWeightedRandomPrototype
+public sealed partial class WeightedRandomOrePrototype : IWeightedRandomPrototype
{
[IdDataField]
public string ID { get; private set; } = default!;
/// Generic random weighting dataset to use.
/// </summary>
[Prototype("weightedRandom")]
-public sealed class WeightedRandomPrototype : IWeightedRandomPrototype
+public sealed partial class WeightedRandomPrototype : IWeightedRandomPrototype
{
[IdDataField]
public string ID { get; private set; } = default!;
/// Linter-friendly version of weightedRandom for Species prototypes.
/// </summary>
[Prototype("weightedRandomSpecies")]
-public sealed class WeightedRandomSpeciesPrototype : IWeightedRandomPrototype
+public sealed partial class WeightedRandomSpeciesPrototype : IWeightedRandomPrototype
{
[IdDataField]
public string ID { get; private set; } = default!;
/// <inheritdoc/>
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<LatheRecipePrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
/// <inheritdoc />
[NeverPushInheritance]
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
/// <summary>
/// Name displayed in the lathe GUI.
/// Created by <c>BorgTransponderComponent</c> and sent to clients by <c>RoboticsConsoleComponent</c>.
/// </summary>
[DataRecord, Serializable, NetSerializable]
-public record struct CyborgControlData
+public partial record struct CyborgControlData
{
/// <summary>
/// Texture of the borg chassis.
public sealed partial class DepartmentPrototype : IPrototype
{
[IdDataField]
- public string ID { get; } = string.Empty;
+ public string ID { get; private set; } = string.Empty;
/// <summary>
/// The name LocId of the department that will be displayed in the various menus.
/// <inheritdoc/>
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
/// <inheritdoc />
[DataField]
[Prototype("salvageBiomeMod")]
public sealed partial class SalvageBiomeModPrototype : IPrototype, ISalvageMod
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
[DataField("desc")] public LocId Description { get; private set; } = string.Empty;
[Prototype("salvageDungeonMod")]
public sealed partial class SalvageDungeonModPrototype : IPrototype, IBiomeSpecificMod
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
[DataField("desc")] public LocId Description { get; private set; } = string.Empty;
[Prototype("salvageLightMod")]
public sealed partial class SalvageLightMod : IPrototype, IBiomeSpecificMod
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
[DataField("desc")] public LocId Description { get; private set; } = string.Empty;
[Prototype("salvageMod")]
public sealed partial class SalvageMod : IPrototype, ISalvageMod
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
[DataField("desc")] public LocId Description { get; private set; } = string.Empty;
[Prototype("salvageTemperatureMod")]
public sealed partial class SalvageTemperatureMod : IPrototype, IBiomeSpecificMod
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
[DataField("desc")] public LocId Description { get; private set; } = string.Empty;
[Prototype("salvageWeatherMod")]
public sealed partial class SalvageWeatherMod : IPrototype, IBiomeSpecificMod
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
[DataField("desc")] public LocId Description { get; private set; } = string.Empty;
[Prototype("salvageFaction")]
public sealed partial class SalvageFactionPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
[DataField("desc")] public LocId Description { get; private set; } = string.Empty;
[Prototype]
public sealed partial class SalvageMapPrototype : IPrototype
{
- [ViewVariables] [IdDataField] public string ID { get; } = default!;
+ [ViewVariables] [IdDataField] public string ID { get; private set; } = default!;
/// <summary>
/// Relative directory path to the given map, i.e. `Maps/Salvage/template.yml`
private static readonly ProtoId<SoundCollectionPrototype> DefaultFootsteps = new("FootstepBorg");
[IdDataField]
- public required string ID { get; init; }
+ public required string ID { get; set; }
//
// Description info (name/desc) is configured via localization strings directly.
/// The prototype displayed in the selection menu for this type.
/// </summary>
[DataField]
- public required EntProtoId DummyPrototype { get; init; }
+ public required EntProtoId DummyPrototype;
//
// Functional information
[Prototype("speechVerb")]
public sealed partial class SpeechVerbPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
/// <summary>
/// Loc strings to be passed to the chat wrapper. 'says', 'states', etc.
[Prototype("edgeSpreader")]
public sealed partial class EdgeSpreaderPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = string.Empty;
+ [IdDataField] public string ID { get; private set; } = string.Empty;
[DataField(required:true)] public int UpdatesPerSecond;
/// <summary>
{
/// <inheritdoc />
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<JobIconPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
/// <inheritdoc />
[NeverPushInheritance]
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
/// <summary>
/// Name of the icon used for menu tooltips.
{
/// <inheritdoc />
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<HealthIconPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
/// <inheritdoc />
[NeverPushInheritance]
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
}
/// <summary>
{
/// <inheritdoc />
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<SatiationIconPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
/// <inheritdoc />
[NeverPushInheritance]
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
}
/// <summary>
{
/// <inheritdoc />
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<SecurityIconPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
/// <inheritdoc />
[NeverPushInheritance]
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
}
/// <summary>
{
/// <inheritdoc />
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<FactionIconPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
/// <inheritdoc />
[NeverPushInheritance]
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
}
/// <summary>
{
/// <inheritdoc />
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<DebugIconPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
/// <inheritdoc />
[NeverPushInheritance]
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
}
/// <summary>
{
/// <inheritdoc />
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<SsdIconPrototype>))]
- public string[]? Parents { get; }
+ public string[]? Parents { get; private set; }
/// <inheritdoc />
[NeverPushInheritance]
[AbstractDataField]
- public bool Abstract { get; }
+ public bool Abstract { get; private set; }
}
[Serializable, NetSerializable]
/// Prototype wrapper around <see cref="EntitySpawnEntry"/>
/// </summary>
[Prototype]
-public sealed class EntitySpawnEntryPrototype : IPrototype
+public sealed partial class EntitySpawnEntryPrototype : IPrototype
{
[IdDataField]
- public string ID { get; } = string.Empty;
+ public string ID { get; private set; } = string.Empty;
[DataField]
public List<EntitySpawnEntry> Entries = new();
/// Localization ID of the Fluent string that forms the structure of this story.
/// </summary>
[DataField(required: true)]
- public LocId LocId { get; } = default!;
+ public LocId LocId;
/// <summary>
/// Dictionary containing the name of each variable to pass to the template and the ID of the
/// dataset which can then be used in the template by <c>{$name}</c>.
/// </summary>
[DataField]
- public Dictionary<string, ProtoId<LocalizedDatasetPrototype>> Variables { get; } = default!;
+ public Dictionary<string, ProtoId<LocalizedDatasetPrototype>> Variables = [];
}
public sealed partial class TagPrototype : IPrototype
{
[IdDataField, ViewVariables]
- public string ID { get; } = string.Empty;
+ public string ID { get; private set; } = string.Empty;
}
[Prototype("weather")]
public sealed partial class WeatherPrototype : IPrototype
{
- [IdDataField] public string ID { get; } = default!;
+ [IdDataField] public string ID { get; private set; } = default!;
[ViewVariables(VVAccess.ReadWrite), DataField("sprite", required: true)]
public SpriteSpecifier Sprite = default!;