Inventory Manager
Tipo: Branch (In → Changed / Idle)
Categoría: PLAYER
Gestiona hasta 10 slots de inventario de armas. Lee los eventos de Player Input (_pi_fire, _pi_reload, _pi_slot_changed) y los procesa para actualizar el estado de munición y el slot activo.
Ramifica a Changed cuando ocurre un evento (disparo, recarga, cambio de slot) o a Idle en caso contrario.
Propiedades
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
| Slot Count | Int (1–10) | 10 |
Número de slots activos |
| Slot [n] — Enable | Bool | False |
Activa el slot n |
| Slot [n] — Type | String | "" |
Identificador de tipo de arma (ej: PISTOL, RIFLE) |
| Slot [n] — Melee | Bool | False |
Arma cuerpo a cuerpo (sin munición) |
| Slot [n] — Ammo | Int | 30 |
Balas iniciales en el cargador |
| Slot [n] — Mag Size | Int | 30 |
Capacidad máxima del cargador |
| Slot [n] — Magazines | Int | 5 |
Cargadores de reserva |
| Slot [n] — Max Mags | Int | 5 |
Máximo de cargadores de reserva |
| Debug | Bool | False |
Imprime el estado del inventario en la consola en cada evento |
Sockets
| Socket | Dirección | Tipo |
|---|---|---|
| In | Entrada | Exec |
| Changed | Salida | Exec |
| Idle | Salida | Exec |
Eventos y último evento (_inv_last_evt)
| Evento | Condición | Valor de _inv_last_evt |
|---|---|---|
| Slot Changed | _pi_slot_changed |
"SLOT_CHANGE" |
| Disparó | _pi_fire y hay balas |
"FIRED" |
| Cargador vacío | _pi_fire y sin balas |
"EMPTY" |
| Recargó | _pi_reload y hay cargadores |
"RELOADED" |
| Sin munición | _pi_reload y sin cargadores |
"NO_AMMO" |
| Sin evento | — | "NONE" |
Estado publicado (_inv_*)
| Variable | Tipo | Descripción |
|---|---|---|
_inv_slots |
list[dict] | Lista de diccionarios con el estado de cada slot |
_inv_active |
int | Índice del slot activo (0–9) |
_inv_last_evt |
string | Último evento ocurrido este frame |
_inv_changed |
bool | True si hubo algún evento este frame |
Cada dict en _inv_slots contiene: exists, type, melee, ammo_in_mag, ammo_max, magazines, mag_max.
Integración con guardado
En el primer frame intenta restaurar munición y tipo de arma activa desde las propiedades BGE _sl_inventory y _sl_weapon_state del objeto.
Grafo de ejemplo
[Player Input] → [Weapon Fire Executor] → [Inventory Manager]
├── Changed ──► [Weapon State Publisher] → ...
└── Idle ──► (continúa)
!!! warning "Requiere Player Input en el mismo objeto"
Lee _pi_fire, _pi_reload y _pi_slot_changed directamente.