mine2d/src/frontend/renderer/WorldRenderer.cs

29 lines
947 B
C#

class WorldRenderer : IRenderer
{
public void Render()
{
var ctx = Context.Get();
var world = ctx.GameState.World;
var tileRegistry = ctx.TileRegistry;
foreach (var (_, chunk) in world.Chunks)
{
for (var y = 0; y < Constants.ChunkSize; y++)
{
for (var x = 0; x < Constants.ChunkSize; x++)
{
var stile = chunk.GetTile(x, y);
if (stile.Id == 0)
{
continue;
}
var tile = tileRegistry.GetTile(stile.Id);
var chunkOffsetX = chunk.X * Constants.TileSize * Constants.ChunkSize;
var chunkOffsetY = chunk.Y * Constants.TileSize * Constants.ChunkSize;
tile.Render(x * 16 + chunkOffsetX, y * 16 + chunkOffsetY, stile);
}
}
}
}
}