Files
Workspace/Assets/Demos/Demo2/ECS/Demo2Components.cs
T
2026-08-18 02:03:34 +08:00

128 lines
3.6 KiB
C#

#nullable enable
using Demo2.Domain;
using Unity.Collections;
using Unity.Entities;
namespace Demo2.ECS
{
public struct Demo2SimulationState : IComponentData
{
public long Tick;
public ulong Seed;
public Demo2Phase Phase;
public int Cycle;
public int NextStableId;
public int RuleAppliedCycle;
public ulong StateHash;
public int SpeedMultiplier;
}
public struct Demo2EconomyState : IComponentData
{
public long Money;
public long Payload;
public long MultiplierMilli;
public long Energy;
public long ExcessFirepower;
}
public struct Demo2StableId : IComponentData { public int Value; }
public struct Demo2GridPosition : IComponentData { public short X; public short Y; }
public struct Demo2MachineState : IComponentData
{
public Demo2MachineKind Kind;
public byte Rotation;
public byte Enabled;
public int RecipeId;
public int ProgressTicks;
public int ProcessTicks;
public int StoredInput;
public int Capacity;
public int PendingOutputs;
public int Faults;
}
public struct Demo2RecipeState : IComponentData
{
public Demo2MaterialKind InputA;
public Demo2MaterialKind InputB;
public Demo2MaterialKind Output;
public int InputCountA;
public int InputCountB;
public int OutputCount;
}
public struct Demo2ConveyorState : IComponentData
{
public byte Direction;
public int Occupancy;
public int Capacity;
}
public struct Demo2MaterialState : IComponentData
{
public Demo2MaterialKind Kind;
public int Quantity;
public int SubCellProgress;
public byte Direction;
}
public struct Demo2TurretAmmo : IComponentData { public long Value; }
public struct Demo2CoreHealth : IComponentData { public int Value; }
public struct Demo2CycleStats : IComponentData
{
public long Extracted;
public long Transported;
public long Processed;
public long AmmoProduced;
public int CompletedSameRecipeStreak;
public int LastRecipeId;
public int Faults;
public int BeltOccupancy;
public int BeltCapacity;
public byte IronFuelAdjacent;
public byte FirstBatch;
public int DuplicateNextOutputs;
}
[InternalBufferCapacity(32)]
public struct Demo2BuildCommandElement : IBufferElementData
{
public long Sequence;
public FixedString64Bytes IdempotencyToken;
public FixedString32Bytes PlayerId;
public Demo2MachineKind Kind;
public short X;
public short Y;
public byte Rotation;
public int RecipeId;
public byte Remove;
}
[InternalBufferCapacity(64)]
public struct Demo2ProcessedCommandToken : IBufferElementData { public FixedString64Bytes Value; }
[InternalBufferCapacity(32)]
public struct Demo2RuleInstruction : IBufferElementData
{
public Demo2RuleOpcode Opcode;
public Demo2RuleCondition Condition;
public long Operand;
public int Slot;
}
public struct Demo2RuleInstructionBlob
{
public Demo2RuleOpcode Opcode;
public Demo2RuleCondition Condition;
public long Operand;
public int Slot;
}
public struct Demo2RuleProgramBlob { public BlobArray<Demo2RuleInstructionBlob> Instructions; }
public struct Demo2RuleProgram : IComponentData { public BlobAssetReference<Demo2RuleProgramBlob> Value; }
}