Exemplo n.º 1
0
        private void ChangeSelection(IEnumerable <Entity> entities)
        {
            int sel = -1;

            foreach (Entity e in entities)
            {
                int width  = 0;
                int height = 0;

                AnimatedTexture2D anim = db.GetAnimation(e.texName);
                if (anim == null)
                {
                    Texture2D tex = db.Get(e.texName);
                    width  = tex.Width;
                    height = tex.Height;
                }
                else
                {
                    Rectangle rect = anim.GetWindow(e.index);
                    width  = rect.Width;
                    height = rect.Height;
                }

                Vector2   p = c.GetRenderPosition(new Point((int)e.x, (int)e.y), new Vector2(width, height));
                Rectangle r = new Rectangle((int)p.X, (int)p.Y, width, height);

                if (r.Contains(newSel))
                {
                    sel = e.id;
                }
            }

            onSelect(sel);
        }
Exemplo n.º 2
0
        public void Draw(GameTime gameTime, SpriteBatch batch, State state)
        {
            int delta = 10;

            c.Pan(xPan * delta, yPan * delta);

            IEnumerable <Entity> entities = state.GetAllEntities();

            batch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend);

            foreach (Entity e in entities)
            {
                Point             pos  = new Point((int)e.x, (int)e.y);
                AnimatedTexture2D anim = db.GetAnimation(e.texName);

                Texture2D tex;
                Vector2   size;
                Rectangle source;
                if (anim == null)
                {
                    tex    = db.Get(e.texName);
                    size   = new Vector2(tex.Width, tex.Height);
                    source = new Rectangle(0, 0, tex.Width, tex.Height);
                }
                else
                {
                    tex    = anim.GetSheet();
                    size   = new Vector2(anim.GetWidth(), anim.GetHeight());
                    source = anim.GetWindow(e.index);
                }

                batch.Draw(tex, c.GetRenderPosition(pos, size), source, Color.White, 0.0f,
                           Vector2.Zero, 1.0f, SpriteEffects.None, (float)(e.x + e.y + .0001f) / 1200);
            }

            batch.End();
        }