SlotGrid
Dessine les fonds de slots Apocaly (fond SLOT_BG + bordure SUB_BORDER 1 px) pour les slots d'un AbstractContainerMenu. Utilisé exclusivement dans ApocalyContainerScreen.
package ca.tawess123.apocalyinterface.api.widget;
SlotGrid ne gère pas les items — il dessine uniquement les fonds visuels. Les items sont rendus par vanilla AbstractContainerScreen après renderBg(). SlotGrid doit être appelé dans buildLayout pour que ses fonds apparaissent sous les items vanilla.
Builder
SlotGrid grid = SlotGrid.builder()
.slots(List<Slot> slots) // slots du menu (requis)
.screenOrigin(int leftPos, int topPos) // position du panneau (requis)
.visibleIf(boolean visible) // visibilité conditionnelle
.build();
Options du builder
| Option | Type | Défaut | Description |
|---|---|---|---|
.slots(List<Slot>) | List<Slot> | — | Liste des slots du menu. Généralement this.menu.slots. Requis. |
.screenOrigin(int, int) | int, int | — | Position X et Y du coin supérieur gauche du panneau dans l'écran. Utiliser this.leftPos, this.topPos. Requis. |
.visibleIf(boolean) | boolean | true | Masque la grille si false. |
Hauteur calculée
hauteur = maxY(slots) - minY(slots) + 18 px (hauteur d'un slot)
Calculée à partir des positions déclarées dans le AbstractContainerMenu.
Exemple
// Dans ApocalyContainerScreen.buildLayout(Row root) :
root.add(SlotGrid.builder()
.slots(this.menu.slots)
.screenOrigin(this.leftPos, this.topPos)
.build());
Pour que cela fonctionne, les slots doivent avoir des positions correctes dans le menu. Voir la recette marchand à slots pour un exemple complet avec AbstractContainerMenu et DeferredRegister<MenuType>.
Positionnement des slots dans le menu
Les positions slot.x et slot.y sont relatives au coin supérieur gauche du panneau (leftPos, topPos). SlotGrid les lit et dessine les fonds à (leftPos + slot.x - 1, topPos + slot.y - 1).
// Dans AbstractContainerMenu — positions relatives au panneau
static final int SLOT_ORIGIN_X = 11; // PANEL_MARGIN(10) + 1
static final int SLOT_ORIGIN_Y = 32; // après header + divider + gap
static final int SLOT_STRIDE = 20; // 18 px slot + 2 px marge
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 3; col++) {
addSlot(new Slot(container,
row * 3 + col,
SLOT_ORIGIN_X + col * SLOT_STRIDE,
SLOT_ORIGIN_Y + row * SLOT_STRIDE));
}
}
Voir aussi
- Référence ApocalyContainerScreen
- Guide : Screen vs ContainerScreen
- Recette : Marchand à slots — exemple complet avec DeferredRegister