Я создаю свой первый инвентарь и хочу, чтобы он работал как любой другой базовый инвентарь, а именно:
- Когда вы что-то подбираете, это добавляется в ваш инвентарь, который вы позже сможете экипировать.
- Он будет выглядеть и работать так же, как инвентарь Царства безумного бога.
Я сделал некоторые из основных вещей, таких как:
- Отрисовка слотов инвентаря и при наведении на них курсора они меняют текстуру.
- Перемещайте предмет/объект с помощью мыши.
и это все.
Итак, теперь я застрял в части, связанной с обработкой элементов. Я знаю, что есть несколько способов обработки элементов, но я не знаю, как проще всего это сделать в текущем коде, который я использую.
Если бы кто-нибудь мог указать мне правильное направление, я был бы очень благодарен, и это сэкономило бы мне много времени!
Вот код между прочим:
class InventorySlots
{
Texture2D box;
Texture2D blackbox;
Texture2D empty;
const int offSet = 100;
Rectangle[,] Inventoryslots = new Rectangle[6, 4];
Rectangle testrect; // Rect for moving item
bool isMoving;
public void LoadContent(ContentManager Content)
{
box = Content.Load<Texture2D>("Box");
blackbox = Content.Load<Texture2D>("boxselected");
testrect = new Rectangle(10, 20, box.Width, box.Height);//Set up my test rect
empty = box;
for (int x = 0; x < 6; x++)
{
for (int y = 0; y < 4; y++)
{
Inventoryslots[x, y] = new Rectangle((x * box.Width) + offSet, // Setup my inventory slots
(y * box.Height) + offSet, box.Width, box.Height);
}
}
}
public void Update(GameTime gameTime)
{
if ((ButtonState.Pressed == Mouse.GetState().LeftButton))
{
if (testrect.Intersects(new Rectangle(Game1.mousePosition.X, Game1.mousePosition.Y, 0, 0)))
{
isMoving = true;
}
}
else
{
isMoving = false;
}
if (isMoving)
{
testrect = new Rectangle(Game1.mousePosition.X - testrect.Width / 2, Game1.mousePosition.Y - testrect.Height / 2, testrect.Width, testrect.Height);
}
}
public void Draw(SpriteBatch spriteBatch)
{
for (int x = 0; x < 6; x++)
{
for (int y = 0; y < 4; y++)
{
if (Inventoryslots[x, y].Contains(Game1.mousePosition))
{
empty = box;
}
else if (!Inventoryslots[x, y].Contains(Game1.mousePosition))
empty = blackbox;
spriteBatch.Draw(empty, Inventoryslots[x, y], Color.White);
}
}
spriteBatch.Draw(box, testrect, Color.White);//Draw my test item that i can move around
}
}