public class Autobus {

	// dati

	private String targa;
	private String modello;
	private int manutenzione;
	private Autorimessa posizione;

	public Autobus(String targa, String modello, int manutenzione, Autorimessa rimessa) {
		this.targa = targa;
		this.modello = modello;
		this.manutenzione = manutenzione;
		this.posizione = rimessa;
	}

	public String getTarga() {
		return this.targa;
	}

	public String getModello() {
		return this.modello;
	}

	public int getManutenzione() {
		return this.manutenzione;
	}

	public void setManutenzione(int manutenzione) {
		this.manutenzione = manutenzione;
	}

	public Autorimessa getPosizione() {
		return this.posizione;
	}

	public void setPosizione(Autorimessa rimessa) {
		this.posizione = rimessa;
	}



	// comportamento

	static enum Stato {INAUTORIMESSA, INSERVIZIO, ROTTURA};
	Stato stato = Stato.INAUTORIMESSA;

	Autista precedente;

	public void uscitaautorimessa(Autista mittente) {
		// Autista precedente;		// non qui!
		if (this.stato == Stato.INAUTORIMESSA) {
			if (mittente.getAutorimesse().contains(this.posizione)) {
				this.posizione = null;
				this.precedente = mittente;
				stato = Stato.INSERVIZIO;
			}
		}
	}

	public void entraautorimessa(Autista mittente, Autorimessa rimessa) {
		if (this.stato == Stato.INSERVIZIO) {
			if (mittente.equals(this.precedente))
				this.posizione = rimessa;
				this.precedente.entrata(this);
				// finche' non termina, non si prosegue!
				// e quindi non si invia l'evento successivo
				this.posizione.entrata(this);
				stato = Stato.INAUTORIMESSA;
		}
	}
}

