public RenderState Prepare(bool drawHint) { Coordinates focusedTile = _gameState.Camera.FocusedTile; Point dist = new Point((_gameState.Camera.GetWidth() / 2 / Game.Unit) + 1, _gameState.Camera.GetHeight() / 2 / Game.Unit); Point renderBegin = new Point(Math.Max(0, focusedTile.X - dist.X), Math.Max(0, focusedTile.Y - dist.Y - 1)); Point renderEnd = new Point(Math.Min(Width, focusedTile.X + dist.X + 1), Math.Min(Height, focusedTile.Y + dist.Y + 6)); EntityColection onScreenEntities = new EntityColection(); EntityColection aliveEntities = new EntityColection(); for (int x = renderBegin.X; x < renderEnd.X; x++) { for (int y = renderBegin.Y; y < renderEnd.Y; y++) { onScreenEntities.AddRange(GetEntitiesAt(x, y)); } } if (drawHint) { onScreenEntities.SortForRender(); } // TODO: For now the alives entities is equal to on screen entities, // BUT: in the futur this will depend on the field of view of all the player connected on the server. aliveEntities.AddRange(onScreenEntities); return(new RenderState(renderBegin, renderEnd, onScreenEntities, aliveEntities)); }
public RenderState(Point renderBegin, Point renderEnd, EntityColection onScreenEntities, EntityColection aliveEntities) { RenderBegin = renderBegin; RenderEnd = renderEnd; OnScreenEntities = onScreenEntities; AliveEntities = aliveEntities; }