protected void Draw(SpriteBatch spriteBatch, SpriteFont spriteFont, DrawData dd, PositionComponent cameraPosition) { // if the drawable is not visible continue if (!dd.Drawable.Visible) { return; } if (dd.Drawable.Static) { dd.Drawable.Draw(Graphics, spriteBatch, spriteFont, (int)dd.Position.X, (int)dd.Position.Y); } else { dd.Drawable.Draw(Graphics, spriteBatch, spriteFont, (int)(dd.Position.X - cameraPosition.X), (int)(dd.Position.Y - cameraPosition.Y)); } }
protected virtual void DrawOverlay(string layer, SpriteBatch spriteBatch, SpriteFont spriteFont, PositionComponent camera, List <DrawData> layerData) { // if the drawable is a building draw the foundation placeholder, otherwise just draw it if (layer.Equals("Foundation")) { foreach (var space in World.Foundations.SpaceTaken) { Entity e = World.Entities.Get(space.Value); DrawData dd = layerData.Find(delegate(DrawData d) { return(d.Entity.ID == e.ID); }); if (e == null) { continue; } if (IsEntityValid(e)) { Vector2 p = World.Map.GetPositionFromIndex(space.Key.X, space.Key.Y); p.X -= cameraPosition.X; p.Y -= cameraPosition.Y; spriteBatch.Draw(Textures.Instance.Get(spriteSheet), p, Textures.Instance.GetSource(spriteSheet, source), Color.White); } else { if (dd.Drawable != null) { Draw(spriteBatch, spriteFont, dd, camera); } } } } else { foreach (DrawData dd in layerData) { if (!IsEntityValid(dd.Entity)) { Draw(spriteBatch, spriteFont, dd, camera); } } } }
protected int SortDrawables(DrawData a, DrawData b) { return(a.Position.Y.CompareTo(b.Position.Y)); }