#include "Casello.h" #include "Veicolo.h" #include Casello::Casello( bool ic, bool iv, bool it, Sincronizzatore * s ): Compito( s ), incassoContanti( ic ), incassoViaCard( iv ), incassoTelePass( it ) { } bool Casello::svolgiCompito() { cout << tempoProssimoEvento() << ") evento: *** smaltimento casello ***" << endl; if( coda.empty() ) return false; delete coda.front(); coda.pop(); cout << "Uscito veicolo" << endl; return ( ! coda.empty() ); } void Casello::aggiungiVeicolo( Veicolo* v ) { bool inattivo = coda.empty(); coda.push( v ); cout << " casello inattivo abilitato" << endl; if ( inattivo ) abilita(); } double Casello::deltaT() const { if ( coda.empty() ) { cout << " casello vuoto" << endl; return 0; } double attesa; Veicolo * v = coda.front(); cout << " in coda veicolo con"; if ( v->contanti() ) { cout << " contanti"; if ( contanti() ) cout << "(ok)"; } if ( v->viaCard() ) { cout << " viacard"; if ( viaCard() ) cout << "(ok)"; } if ( v->telePass() ) { cout << " telepass"; if ( telePass() ) cout << "(ok)"; } cout << endl; if ( v->contanti() && contanti() ) attesa = 25; else if( v->viaCard() && viaCard() ) attesa = 10; else if( v->telePass() && telePass() ) attesa = 3; else attesa = -1; cout << " attesa al casello: " << attesa << "s " << endl; return attesa; } bool Casello:: contanti() const { return incassoContanti; } bool Casello::viaCard() const { return incassoViaCard; } bool Casello::telePass() const { return incassoTelePass; } double Casello::attesa() const { return coda.size(); }