Closed salluzziluca closed 1 year ago
Si bien funciona, hay dos "problemas":
1) No corresponde al patrón Observer ya que el BuilderEscenaInicio
sabe exactamente a quién le está mandando el mensaje (a Juego
).
2) Hay una dependencia cíclica: en Juego
hay un import BuilderEscenaInicio
y en BuilderEscenaInicio
hay un import Juego
.
Lo correcto sería que haya una interfaz en el medio:
class BuilderEscenaInicio {
interface ObservadorNombreYMazo {
void recibirNombreYMazo(...);
}
// puede ser uno solo en lugar de una lista si no es necesario soportar múltiples observadores
List<ObservadorNombreYMazo> observadores;
public void suscribir(ObservadorNombreYMazo o) { observadores.add(o); }
public Scene crearEscena() {
...
botonContinuar.setOnAction(e -> {
for (var o : observadores) {
o.recibirNombreYMazo(...);
}
});
...
}
}
Excelente, se entendio perfecto, gracias
Actualmente, el observer funciona asi. Cuando se toca el boton, la escena le pasa al controlador nombre y mazo elegido https://github.com/salluzziluca/TP1-Algo3/blob/3a55aa3e7864e4fd05bae9c25848611581a81aaa/src/main/java/view/BuilderEscenaInicio.java#L32-L37 Luego, el controlador los recibe y los asigna, cuando se llega a 2 jugadores, se cambia de escena. https://github.com/salluzziluca/TP1-Algo3/blob/3a55aa3e7864e4fd05bae9c25848611581a81aaa/src/main/java/controller/Juego.java#L45-L63 Teniamos miedo de estar haciendo cualquiera, asi que queria chequear que esto sea "correcto", gracias!