package cap9.prenderelasciare;

import cap6.labirinto.Risultato;

public class Stanza extends ContenitoreImpl
{ public enum Direzioni
  {NORD, SUD, EST, OVEST;
  }
  protected String descr;
  protected Porta[] porte = new Porta[4];
  public Stanza(String descr)
  { this.descr = descr;
  }
  public void collega(Direzioni dir, Porta porta)
  { porte[dir.ordinal()] = porta;
  }
  public Risultato vai(Giocatore giocatore, Direzioni dir)
  { if (porte[dir.ordinal()] == null)
      return new Risultato(
        false, "Non puoi andare in quella direzione");
    else
      return porte[dir.ordinal()].attraversa(giocatore);
  }
  public String descrivi()
  { return descr;
  }
  public Direzioni[] direzioni()
  { int num = 0;
    for (Direzioni d : Direzioni.values())
      if (porte[d.ordinal()] != null)
        num++;
    Direzioni[] dir = new Direzioni[num];
    int i = 0;
    for (Direzioni d : Direzioni.values())
      if (porte[d.ordinal()] != null)
      { dir[i] = d;
        i++;
      }
    return dir;
  }
}
