<commit_before>/// <reference path = "../../dependencias/pilasweb.d.ts"/>
/// <reference path = "ActorAnimado.ts"/>
/// <reference path = "Cuadricula.ts"/>

/**
 * @class Casilla
 * Este actor no puede funcionar sólo. Siempre funciona y es creado desde
 * el actor Cuadricula. Todo su comportamiento depende de ella.
 */

class Casilla extends ActorAnimado {
    cuadricula;
    nroFila;
    nroColumna;
    actores;

    constructor(nroF, nroC, cuadricula) {
        this.cuadricula = cuadricula;
        this.nroFila = nroF;
        this.nroColumna = nroC;
        this.actores = [];

        super(0, 0, cuadricula.getOpcionesCasilla());

        this.reubicate();
    }

    reubicate() {
        this.actualizarAncho();
        this.actualizarAlto();
        this.reubicarEnX();
        this.reubicarEnY();
    }

    reubicarEnX() {
        this.x =
            this.cuadricula.izquierda +
            (this.ancho / 2) +
            (this.nroColumna * (this.ancho + this.cuadricula.separacion()));
    }

    reubicarEnY() {
        this.y =
            this.cuadricula.arriba -
            (this.alto / 2) -
            (this.nroFila * (this.alto + this.cuadricula.separacion()));
    }

    actualizarAncho() {
        this.ancho = this.cuadricula.anchoCasilla();
    }

    actualizarAlto() {
        this.alto = this.cuadricula.altoCasilla();
    }

    casillaASuDerecha() {
        return this.cuadricula.casilla(this.nroFila, this.nroColumna + 1);
    }
    casillaASuIzquierda() {
        return this.cuadricula.casilla(this.nroFila, this.nroColumna - 1);
    }
    casillaDeArriba() {
        return this.cuadricula.casilla(this.nroFila - 1, this.nroColumna);
    }
    casillaDeAbajo() {
        return this.cuadricula.casilla(this.nroFila + 1, this.nroColumna);
    }
    sos(nroF, nroC) {
        return nroF == this.nroFila && nroC == this.nroColumna;
    }

    esEsquina(){
        return this.sos(0, 0) ||
            this.sos(0, this.cuadricula.cantColumnas - 1) ||
            this.sos(this.cuadricula.cantFilas - 1, 0) ||
            this.sos(this.cuadricula.cantFilas - 1, this.cuadricula.cantColumnas - 1);
    }

    esFin(){
        return this.cuadricula.esFin(this);
    }

    esInicio(){
        return this.cuadricula.esInicio(this);
    }

    // Este método sólo genera una referencia entre la casilla y el actor.
    // Si quiero generar la relación bidireccional no debo usar este, sino actor.setCasillaActual(c).
    agregarActor(unActor){
      this.actores.push(unActor);
    }

    eliminarActor(unActor){
      this.actores.splice(this.actores.indexOf(unActor),1);
    }

    tieneActorConEtiqueta(unaEtq){
      return this.actores.any( actor => actor.tiene_etiqueta(unaEtq))
    }

    cambiarImagen(nombre, cantFilas = 1, cantColumnas = 1){ // TODO: FEOOOOOOO bugfix setter imagen del actor
        // PARCHEEEEE
        this.renacer(nombre, cantFilas, cantColumnas);
    }

    renacer(nombreImagen, cantFilas = 1, cantColumnas = 1) { // TODO: FEOOOOOOO bugfix setter imagen del actor
        // POR FAVOR YO FUTURO PERDONAME
        this.eliminar();

        var opsCasilla = {
            grilla: this.cuadricula.opcionesCasilla.grilla,
            cantFilas: this.cuadricula.opcionesCasilla.cantFilas,
            cantColumnas: this.cuadricula.opcionesCasilla.cantColumnas,
        };

        this.cuadricula.opcionesCasilla.grilla = nombreImagen;
        this.cuadricula.opcionesCasilla.cantFilas = cantFilas;
        this.cuadricula.opcionesCasilla.cantColumnas = cantColumnas;

        var nuevoYo = new Casilla(this.nroFila,this.nroColumna,this.cuadricula);

        this.cuadricula.opcionesCasilla.grilla = opsCasilla.grilla;<commit_msg>Cambiando Array.any por Array.some, ya que Array.any no lo soporta phantomjs.<commit_after>/// <reference path = "../../dependencias/pilasweb.d.ts"/>
/// <reference path = "ActorAnimado.ts"/>
/// <reference path = "Cuadricula.ts"/>

/**
 * @class Casilla
 * Este actor no puede funcionar sólo. Siempre funciona y es creado desde
 * el actor Cuadricula. Todo su comportamiento depende de ella.
 */

class Casilla extends ActorAnimado {
    cuadricula;
    nroFila;
    nroColumna;
    actores;

    constructor(nroF, nroC, cuadricula) {
        this.cuadricula = cuadricula;
        this.nroFila = nroF;
        this.nroColumna = nroC;
        this.actores = [];

        super(0, 0, cuadricula.getOpcionesCasilla());

        this.reubicate();
    }

    reubicate() {
        this.actualizarAncho();
        this.actualizarAlto();
        this.reubicarEnX();
        this.reubicarEnY();
    }

    reubicarEnX() {
        this.x =
            this.cuadricula.izquierda +
            (this.ancho / 2) +
            (this.nroColumna * (this.ancho + this.cuadricula.separacion()));
    }

    reubicarEnY() {
        this.y =
            this.cuadricula.arriba -
            (this.alto / 2) -
            (this.nroFila * (this.alto + this.cuadricula.separacion()));
    }

    actualizarAncho() {
        this.ancho = this.cuadricula.anchoCasilla();
    }

    actualizarAlto() {
        this.alto = this.cuadricula.altoCasilla();
    }

    casillaASuDerecha() {
        return this.cuadricula.casilla(this.nroFila, this.nroColumna + 1);
    }
    casillaASuIzquierda() {
        return this.cuadricula.casilla(this.nroFila, this.nroColumna - 1);
    }
    casillaDeArriba() {
        return this.cuadricula.casilla(this.nroFila - 1, this.nroColumna);
    }
    casillaDeAbajo() {
        return this.cuadricula.casilla(this.nroFila + 1, this.nroColumna);
    }
    sos(nroF, nroC) {
        return nroF == this.nroFila && nroC == this.nroColumna;
    }

    esEsquina(){
        return this.sos(0, 0) ||
            this.sos(0, this.cuadricula.cantColumnas - 1) ||
            this.sos(this.cuadricula.cantFilas - 1, 0) ||
            this.sos(this.cuadricula.cantFilas - 1, this.cuadricula.cantColumnas - 1);
    }

    esFin(){
        return this.cuadricula.esFin(this);
    }

    esInicio(){
        return this.cuadricula.esInicio(this);
    }

    // Este método sólo genera una referencia entre la casilla y el actor.
    // Si quiero generar la relación bidireccional no debo usar este, sino actor.setCasillaActual(c).
    agregarActor(unActor){
      this.actores.push(unActor);
    }

    eliminarActor(unActor){
      this.actores.splice(this.actores.indexOf(unActor),1);
    }

    tieneActorConEtiqueta(unaEtq){
      return this.actores.some( actor => actor.tiene_etiqueta(unaEtq))
    }

    cambiarImagen(nombre, cantFilas = 1, cantColumnas = 1){ // TODO: FEOOOOOOO bugfix setter imagen del actor
        // PARCHEEEEE
        this.renacer(nombre, cantFilas, cantColumnas);
    }

    renacer(nombreImagen, cantFilas = 1, cantColumnas = 1) { // TODO: FEOOOOOOO bugfix setter imagen del actor
        // POR FAVOR YO FUTURO PERDONAME
        this.eliminar();

        var opsCasilla = {
            grilla: this.cuadricula.opcionesCasilla.grilla,
            cantFilas: this.cuadricula.opcionesCasilla.cantFilas,
            cantColumnas: this.cuadricula.opcionesCasilla.cantColumnas,
        };

        this.cuadricula.opcionesCasilla.grilla = nombreImagen;
        this.cuadricula.opcionesCasilla.cantFilas = cantFilas;
        this.cuadricula.opcionesCasilla.cantColumnas = cantColumnas;

        var nuevoYo = new Casilla(this.nroFila,this.nroColumna,this.cuadricula);

        this.cuadricula.opcionesCasilla.grilla = opsCasilla.grilla;
{'fraction_non_alphanumeric': 0.11850758287478191, 'fraction_numerical': 0.00563682727150718, 'mean_word_length': 2.401186672752168, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 4, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4923752', 'n_tokens_mistral': 2848, 'n_tokens_neox': 2725, 'n_words': 441}