33import java .util .ArrayList ;
44import java .util .List ;
55
6+ import jwarrior .observadores .ObservadorDeUnidades ;
67import jwarrior .piezas .Puerta ;
78import jwarrior .piezas .Salida ;
89import jwarrior .piezas .unidades .Guerrero ;
1112
1213public class ConstructorDeNiveles {
1314
14- public List <Posicion > construirPosiciones (final String plano , final Guerrero guerrero ) {
15+ public List <Posicion > construirPosiciones (final String plano ,
16+ final ObservadorDeUnidades observadorDeUnidades ,
17+ final Guerrero guerrero ) {
1518 List <Posicion > posiciones = new ArrayList <Posicion >();
1619
1720 for (char c : plano .toCharArray ()) {
18- posiciones .add (new PosicionCodificada (c ).construirPosicion (guerrero ));
21+ posiciones .add (new PosicionCodificada (c , observadorDeUnidades ).construirPosicion (guerrero ));
1922 }
2023 return posiciones ;
2124 }
@@ -24,9 +27,11 @@ public List<Posicion> construirPosiciones(final String plano, final Guerrero gue
2427
2528class PosicionCodificada {
2629 private final char codigo ;
30+ private final ObservadorDeUnidades observadorDeUnidades ;
2731
28- public PosicionCodificada (final char codigo ) {
32+ public PosicionCodificada (final char codigo , final ObservadorDeUnidades observadorDeUnidades ) {
2933 this .codigo = codigo ;
34+ this .observadorDeUnidades = observadorDeUnidades ;
3035 }
3136
3237 public Posicion construirPosicion (final Guerrero guerrero ) {
@@ -35,13 +40,16 @@ public Posicion construirPosicion(final Guerrero guerrero) {
3540 retorno = new Puerta ();
3641 }
3742 if (esGuerrero ()) {
43+ guerrero .agregarObservador (this .observadorDeUnidades );
3844 retorno = new Posicion (guerrero );
3945 }
4046 if (esSalida ()) {
4147 retorno = new Salida ();
4248 }
4349 if (esOrco ()) {
44- retorno = new Posicion (new Orco ());
50+ Orco orco = new Orco ();
51+ orco .agregarObservador (this .observadorDeUnidades );
52+ retorno = new Posicion (orco );
4553 }
4654 return retorno ;
4755 }
0 commit comments