Skip to content

Commit

Permalink
meta final
Browse files Browse the repository at this point in the history
  • Loading branch information
dlopezalvas committed Oct 6, 2023
1 parent 7d519ea commit ce085bb
Show file tree
Hide file tree
Showing 10 changed files with 61 additions and 1 deletion.
8 changes: 8 additions & 0 deletions src/actores/segundoCiclo/MetaFinal.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/// <reference path="../ActorAnimado.ts"/>

class MetaFinal extends ActorAnimado {

constructor(automata: string) {
super(0, 0, { grilla: `marcador-${automata}.png`, cantColumnas: 1, cantFilas: 1 });
}
}
10 changes: 10 additions & 0 deletions src/escenas/EscenaActividad.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ class EscenaActividad extends Base {
automata : ActorAnimado;
cuadricula : Cuadricula;
fondo;
xFinal: number;
yFinal: number;

/**
* Devuelve todos los nombres de archivo de imagen necesarios para
Expand Down Expand Up @@ -99,6 +101,14 @@ class EscenaActividad extends Base {
return this.obtenerActoresConEtiqueta(actor).every(o => o.nombreAnimacionActual() == estado);
}

estaEnPosicionFinalSiLaTiene(): boolean {
return !this.tienePosicionFinal() || this.automata.casillaActual().sos(this.yFinal, this.xFinal);
}

tienePosicionFinal(): boolean {
return this.xFinal !== undefined
}

/**
* Computa un multiplicador que crece según la cantidad de filas y columnas de la cuadrícula.
* El multiplicador es 1 si la cuadrícula es de 1x1, y crece acotado por maxRatio.
Expand Down
4 changes: 4 additions & 0 deletions src/escenas/libroPrimaria/EscenaCapy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ class EscenaCapy extends EscenaDesdeMapa {
return Casilla.imagenesPara('capy').concat(Obstaculo.imagenesPara('capy'));
}

nombreAutomata(): string {
return 'capy'
}

constructor(especificacion: Spec, opciones?: opcionesMapaAleatorio) {
super();
this.initDesdeUnaOVariasDescripciones(especificacion, opciones);
Expand Down
4 changes: 4 additions & 0 deletions src/escenas/libroPrimaria/EscenaChuy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ class EscenaChuy extends EscenaDesdeMapa {
return Casilla.imagenesPara('chuy').concat(Obstaculo.imagenesPara('chuy'));
}

nombreAutomata(): string {
return 'chuy'
}

constructor(especificacion: Spec, opciones?: opcionesMapaAleatorio, posFinal?: [number, number]) {
super();
this.initDesdeUnaOVariasDescripciones(especificacion, opciones);
Expand Down
16 changes: 15 additions & 1 deletion src/escenas/libroPrimaria/EscenaDesdeMapa.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,15 @@ abstract class EscenaDesdeMapa extends EscenaActividad {
cuadricula.forEachCasilla(casilla => this.llenarCasilla(cuadricula, casilla, mapa));
return cuadricula;
}


agregarCasilleroFinalSiLoTiene(): void {
if(this.tienePosicionFinal()){
const actor = new MetaFinal(this.nombreAutomata())
const casilla = this.cuadricula.casilla(this.yFinal, this.xFinal)
this.cuadricula.agregarActorEnCasilla(actor, casilla, true)
}
}

llenarCasilla(cuadricula : Cuadricula, casilla : Casilla, mapa : MapaEscena) : void {
let nroFila : number = casilla.nroFila;
let nroColumna : number = casilla.nroColumna;
Expand All @@ -101,6 +109,7 @@ abstract class EscenaDesdeMapa extends EscenaActividad {
cuadricula.agregarActorEnCasilla(actor, casilla, true);
}
})
this.agregarCasilleroFinalSiLoTiene();
}

/**
Expand All @@ -115,6 +124,11 @@ abstract class EscenaDesdeMapa extends EscenaActividad {
*/
abstract obtenerAutomata() : ActorAnimado;

/**
* Devuelve el nombre del automata, usado para las metas finales y obstaculos
*/
abstract nombreAutomata(): string;

/**
* Recibe un identificador y crea y devuelve el actor que le corresponde.
* Importante: el actor debe crearse AL LLAMAR A ESA FUNCION, y no antes.
Expand Down
4 changes: 4 additions & 0 deletions src/escenas/libroPrimaria/EscenaDuba.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ class EscenaDuba extends EscenaDesdeMapa {
return Casilla.imagenesPara('duba').concat(Obstaculo.imagenesPara('duba'));
} //TODO: Usar flatMap (lodash)

nombreAutomata(): string {
return 'duba'
}

constructor(especificacion: Spec, opciones?: opcionesMapaAleatorio, posFinal?: [number, number]) {
super();
this.initDesdeUnaOVariasDescripciones(especificacion, opciones);
Expand Down
4 changes: 4 additions & 0 deletions src/escenas/libroPrimaria/EscenaLita.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ class EscenaLita extends EscenaDesdeMapa {
return Casilla.imagenesPara('lita').concat(Obstaculo.imagenesPara('lita'));
} //TODO: Usar flatMap (lodash)

nombreAutomata(): string {
return 'lita'
}

constructor(especificacion: Spec, opciones?: opcionesMapaAleatorio, posFinal?: [number, number]) {
super();
this.initDesdeUnaOVariasDescripciones(especificacion, opciones);
Expand Down
4 changes: 4 additions & 0 deletions src/escenas/libroPrimaria/EscenaManic.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ class EscenaManic extends EscenaDesdeMapa {
return Casilla.imagenesPara('manic').concat(Obstaculo.imagenesPara('manic'));
}

nombreAutomata(): string {
return 'manic'
}

constructor(especificacion: Spec, opciones?: opcionesMapaAleatorio, posFinal?: [number, number]) {
super();
this.initDesdeUnaOVariasDescripciones(especificacion, opciones);
Expand Down
4 changes: 4 additions & 0 deletions src/escenas/libroPrimaria/EscenaToto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ abstract class EscenaToto extends EscenaDesdeMapa {
return []
}

nombreAutomata(): string {
return 'toto'
}

/**
* @param mapaEscena Matriz bidimensional de strings a partir de la cual se crea la escena.
* Toto se representa con una 'A' mayúscula. Las letras a leer van en minúscula
Expand Down
4 changes: 4 additions & 0 deletions src/escenas/libroPrimaria/EscenaYvoty.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ class EscenaYvoty extends EscenaDesdeMapa {
return Casilla.imagenesPara('yvoty').concat(Obstaculo.imagenesPara('yvoty'));
}

nombreAutomata(): string {
return 'yvoty'
}

constructor(especificacion: Spec, opciones?: opcionesMapaAleatorio) {
super();
this.initDesdeUnaOVariasDescripciones(especificacion, opciones);
Expand Down

0 comments on commit ce085bb

Please sign in to comment.