35 lines
1.2 KiB
C#
35 lines
1.2 KiB
C#
namespace VoxelEngine.World.Blocks;
|
|
|
|
public sealed class BlockRegistry
|
|
{
|
|
private readonly IBlock[] _byId;
|
|
|
|
public AirBlock Air { get; } = new();
|
|
public StoneBlock Stone { get; } = new();
|
|
public DirtBlock Dirt { get; } = new();
|
|
public GrassBlock Grass { get; } = new();
|
|
public SandBlock Sand { get; } = new();
|
|
public SnowBlock Snow { get; } = new();
|
|
public WaterBlock Water { get; } = new();
|
|
public CoalOreBlock CoalOre { get; } = new();
|
|
public IronOreBlock IronOre { get; } = new();
|
|
public GoldOreBlock GoldOre { get; } = new();
|
|
public DiamondOreBlock DiamondOre { get; } = new();
|
|
|
|
public BlockRegistry()
|
|
{
|
|
IBlock[] blocks = new IBlock[]
|
|
{
|
|
this.Air, this.Stone, this.Dirt, this.Grass, this.Sand, this.Snow, this.Water,
|
|
this.CoalOre, this.IronOre, this.GoldOre, this.DiamondOre,
|
|
};
|
|
this._byId = new IBlock[blocks.Length];
|
|
foreach (IBlock block in blocks)
|
|
{
|
|
this._byId[block.Id] = block;
|
|
}
|
|
}
|
|
|
|
public IBlock Get(ushort id) => this._byId[id];
|
|
}
|