mine2d/Mine2d/game/frontend/renderer/WorldCursorRenderer.cs

29 lines
1.1 KiB
C#

using Mine2d.engine;
using Mine2d.game.core;
namespace Mine2d.game.frontend.renderer;
public class WorldCursorRenderer : IRenderer
{
public void Render()
{
var ctx = Context.Get();
var scale = ctx.FrontendGameState.Settings.GameScale;
var camera = ctx.FrontendGameState.Camera;
var absoluteMousePos = ctx.FrontendGameState.CursorPosition / ctx.FrontendGameState.Settings.GameScale + camera.Position;
if (PlayerEntity.GetSelf() == null || (absoluteMousePos - PlayerEntity.GetSelf().GetCenter()).LengthSquared() > Constants.BreakDistance * Constants.BreakDistance)
{
return;
}
var ts = Constants.TileSize;
var tilePos = new Vector2(absoluteMousePos.X - absoluteMousePos.X % ts, absoluteMousePos.Y - absoluteMousePos.Y % ts);
ctx.Renderer.SetColor(255, 255, 255);
ctx.Renderer.DrawOutline(
(int)tilePos.X * scale - (int)camera.Position.X * scale,
(int)tilePos.Y * scale - (int)camera.Position.Y * scale,
16 * scale,
16 * scale
);
}
}