//Called when an item is dragged and released public void setNewIndex(InventoryItem i) { Vector2 itemCenter = i.getCenter(); for (int x = 0; x < items.GetLength(0); x++) { for (int y = 0; y < items.GetLength(1); y++) { //int itemX = (int)(itemCenter.X + 0.5); //int itemY = (int)(itemCenter.Y + 0.5); //Blame merle. He'll fix this later. if (itemRectangles[x, y].Contains(itemCenter) && (items[x, y] == null || (items[x, y] != null && !items[x, y].Equals(i)))) { if (items[x, y] == null) { removeItem(i); items[x, y] = i; i.setX(itemRectangles[x, y].X); i.setY(itemRectangles[x, y].Y); } else { if (items[x, y].combineItems(i)) { removeItem(i); } else { returnItemToSlot(i); } } return; } } } if (itemCenter.X > 0 && itemCenter.X < inventoryGraphic.Width && itemCenter.Y > 0 && itemCenter.Y < inventoryGraphic.Height) { returnItemToSlot(i); } else { Player p = (Player)(Game1.creatures[0]); Rectangle rect = p.getHitBox(); foreach (Platform plat in Game1.platforms) { if (p.getX() == plat.getX() && p.getY() == plat.getY()) { bool added = plat.addItemToPlatform(i); if (added) { removeItem(i); return; } } } returnItemToSlot(i); } }
internal void itemCollision(Item i) { if (player.getHitBox().Intersects(i.getHitBox())) { player.pickUp(i); items.Remove(i); } }
public void checkCollisions() { foreach (Creature c in creatures) { Rectangle hitBox = c.getHitBox(); foreach (Creature d in creatures) { if (!c.Equals(d)) { Rectangle hitBoxOther = d.getHitBox(); if (c.getHitBox().Intersects(d.getHitBox())) { c.reportCollision(d); } } } foreach (Tile t in collidableTiles) { Rectangle hitBoxOther = t.getHitBox(); if (c.getHitBox().Intersects(t.getHitBox())) { c.reportCollision(t); } } } for (int ii = items.Count - 1; ii >= 0; ii--) { Rectangle hitBox = ((Item)items[ii]).getHitBox(); if (player.getHitBox().Intersects(hitBox)) { //If inventory is not full player.reportCollision((Item)items[ii]); items.RemoveAt(ii); } } }