feat: initialisation complète de la bibliothèque betterMcGuis (Fluent DSL, ItemBuilder, PaginatedGui, TabbedGui, AnimatedGui, Patterns ASCII, Moteur d'événements, Sécurité anti-glitch et documentation)
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
package fr.luc.bettermcguis.pattern;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Représente un masque de sélection de slots basé sur des lignes de caractères binaires (0 et 1 ou caractères au choix).
|
||||
*/
|
||||
public class GuiMask {
|
||||
|
||||
private final List<String> lines = new ArrayList<>();
|
||||
private final char activeChar;
|
||||
|
||||
/**
|
||||
* Crée un masque avec '1' comme caractère actif par défaut.
|
||||
*/
|
||||
public GuiMask(String... lines) {
|
||||
this('1', lines);
|
||||
}
|
||||
|
||||
/**
|
||||
* Crée un masque en précisant le caractère actif.
|
||||
*
|
||||
* @param activeChar Le caractère représentant un slot sélectionné.
|
||||
* @param lines Les lignes du masque.
|
||||
*/
|
||||
public GuiMask(char activeChar, String... lines) {
|
||||
this.activeChar = activeChar;
|
||||
if (lines != null) {
|
||||
this.lines.addAll(Arrays.asList(lines));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Résout la liste des slots sélectionnés par ce masque pour des dimensions données.
|
||||
*
|
||||
* @param rows Le nombre de lignes.
|
||||
* @param cols Le nombre de colonnes (ex: 9).
|
||||
* @return La liste des slots actifs (0-indexés).
|
||||
*/
|
||||
public List<Integer> resolveSlots(int rows, int cols) {
|
||||
List<Integer> slots = new ArrayList<>();
|
||||
for (int r = 0; r < Math.min(lines.size(), rows); r++) {
|
||||
String line = lines.get(r);
|
||||
for (int c = 0; c < Math.min(line.length(), cols); c++) {
|
||||
if (line.charAt(c) == activeChar) {
|
||||
slots.add(r * cols + c);
|
||||
}
|
||||
}
|
||||
}
|
||||
return Collections.unmodifiableList(slots);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user