private void DrawUnits(SpriteBatch spriteBatch, Renderer renderer) { // Since we are generating these every time anyway, // we clear it so we don't have any label boxes belonging to deleted armies. _labelClickableBoundaries.Clear(); // All realm id's the player is at war with. var playerEnemies = _wars.GetAllEnemies(Realms.PlayerID); foreach (var pair in _units.Armies) { AABB box = _labelBoxes[pair.Value.Location]; AABB screenBox = new AABB(renderer.RenderState.WorldToScreenCoordinates(box.BottomRight), renderer.RenderState.WorldToScreenCoordinates(box.TopLeft)); string text = pair.Value.NUnits.ToString(); Vector2 dim = _unitsFont.MeasureString(text); Vector2 center = screenBox.Center - dim / 2; Vector2 p1 = (center - 5 * Vector2.UnitX); AABB snugBox = new AABB(p1, p1 + (dim + 10 * Vector2.UnitX)); Color borderColor; if (_unitsSelection.Set.Contains(pair.Key)) { borderColor = Color.AliceBlue; } else if (playerEnemies.Contains(pair.Value.Owner)) { borderColor = Color.Red; } else { borderColor = Color.Black; } spriteBatch.Draw(snugBox.Borders(1), borderColor); spriteBatch.Draw(snugBox, Color.Black); spriteBatch.DrawString(_unitsFont, text, center.Floor(), Color.White); _labelClickableBoundaries[pair.Key] = snugBox; } }
public void Draw(SpriteBatch spriteBatch, Renderer renderer) { // Renders provinces renderer.DrawToScreen(_standardInstrs.SelectMany(x => x)); // if (renderer.RenderState.Camera.Zoom < 1.4f) // { DrawUnits(spriteBatch, renderer); // } // Selection box AABB selectionRect = new AABB(_selectionBoxP1, _selectionBoxP2); AABB[] borders = selectionRect.Borders(1); spriteBatch.Draw(selectionRect, new Color(Color.Black, 0.4f)); spriteBatch.Draw(borders, Color.CadetBlue); }