예제 #1
0
        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));
            }
        }
예제 #2
0
        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);
                    }
                }
            }
        }
예제 #3
0
 protected int SortDrawables(DrawData a, DrawData b)
 {
     return(a.Position.Y.CompareTo(b.Position.Y));
 }