Me encuentro con un problema al tratar de implementar un sistema de inventario dentro de XNA (realmente no importa, podría ser cualquier plataforma), pero hasta ahora. Aquí está el problema que estoy tratando de entender:
¿Cómo puedo obtener un objeto del mundo (piensa que cuando matas a un monstruo deja caer una armadura) y lo pongo en el inventario de mi jugador?
Si un inventario es solo una lista de artículos, técnicamente, ¿cómo podría llevar Steel Sword del mundo al inventario de mi jugador sin que una clase haga más de una cosa?
Actualmente tengo una estructura de elementos, que contiene un valor hexadecimal único, un recuento de cuántos elementos hay (para apilables, como flechas) y una textura para representar dentro del inventario, y algunas otras propiedades sin importancia (nombre, descripción, etc.) .
Sería un mal diseño si tuviera que modificar mi clase de elemento existente para albergar una posición mundial, junto con la detección de colisión (no quiero que el elemento caiga a través de la tierra).
Gracias por cualquier consideración!
WorldItem
que sea separado para tiInventoryItem
? (Tal vezWorldItem
tiene unaInventoryItem
plantilla que se coloca en el inventario del jugador cuando se recoge).Inventory
que tome unWorldItem
y lo agregue comoInventoryItem
. Para que también pueda manejar casos donde los elementos necesitan apilarse (por ejemplo, flechas).Respuestas:
El enfoque que seguiría es tener 2 estructuras (o clases) diferentes.
WorldItem
yInventoryItem
.A continuación, puede agregar un
InventoryItem
como una propiedad / campo de suWorldItem
que es lo que se coloca en el inventario del jugador cuando se recoge el elemento del mundo.Desearía un método en algún lugar (en la clase de jugador, o en cualquier clase de elemento) que maneje agregar un elemento de inventario al inventario del jugador, para tratar de apilar elementos similares.
fuente
Como se mencionó antes, dividir en múltiples clases o matrices sería su mejor apuesta. Crearía 3 clases, Mundo, Jugador y Objeto. La clase mundial tendría una Lista de Artículos del Mundo, al igual que la clase Jugador, pero llamada Inventario de Lista. Cuando un jugador recoge un artículo, lo mueve de la lista en el Mundo. clase a la lista en la clase Player.
En el ciclo de dibujar de su juego, puede hacer un ciclo que dibuje todos los elementos en la lista de WorldItems a la pantalla, pero por supuesto ignora la lista de inventario en el objeto del jugador.
fuente