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); }
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(); }