package cross;
import game_timer.GameTimer;
import misc.carType;
import route.Route;
import vehicles.Vehicle;
import _main.Game;
/**
* A stopt�bl�s t�pus� keresztez�d�sekn�l l�v� szab�lyokat le�r� oszt�ly.
*
*/
public class StopCross extends Cross {
//[DOC] nincs primary meg secondary route-ja... 0. primary 1. secondary az Inroutes-ban
/**
* Lampcross konstruktor.
*/
public StopCross(){
GameTimer.getInstance().registObserver(this);
}
//TODO: [DOC] szekvencia diagramon modositani... az update vehiclein cross hivja a stepintocross-t
/**
* Feluldefinialjuk az ososztaly metodusat, mivel minden mas tipusu keresztezodesnek, mas szabalyai vannak
*/
@Override
public void updateVehiclesAtCross() {
try{
Route primaryRoute = inroutes.get(0);
Route secondaryRoute = inroutes.get(1);
//egy gyors vizsgalat az utkozesre
if(primaryRoute.getLastCar() != null && secondaryRoute.getLastCar() != null && secondaryRoute.getLastCar().getCarType() == carType.Robbery){
Game.getInstance().finishGame();
}
//bepakoljuk a keresztezodesnel varakozo
if(primaryRoute.getLastCar() != null){
stepIntoCross(primaryRoute);
}
if(primaryRoute.getLastCar() == null && secondaryRoute.getLastCar() != null && vehicleInCross == null){
//beleptetjuk a masodlagos utrol, ha az elsodlegesen nem voltak es ures a keresztezodes
stepIntoCross(secondaryRoute);
}
} catch(Exception e){
e.printStackTrace();
}
}
/**
* Beallithato vele a keresztezodes fo utszakasza.
* @param r Az az ut, ami elsobbseget fog elvezni a keresztezodesben.
*/
public void setPrimaryRoute(Route r){
if(inroutes.size() > 0)
inroutes.set(0, r);
else
inroutes.add(0, r);
}
/**
* Beallithato vele a keresztezodes masodlagos(stop tablas) utszakasza.
* @param r Az az ut, amelyen a stop tabla fog elhelyezkedni.
*/
public void setSecondaryRoute(Route r){
if(inroutes.size() > 1)
//ha mar be van allitva, akkor felulirjuk a regit
inroutes.set(1, r);
else
//ha meg nincs beallitva, akkor csak addjuk hozza, az adott helyre
inroutes.add(1, r);
}
@Override
public void addInRoutes(Route r) {
System.out.println("Nem tamogatott fuggveny: StopCross.addInRoutes(). Helyette hasznald: addPrimaryRoute, addSecondaryRoute !");
}
@Override
public void onTick() {
updateVehiclesAtCross();
vehicleOut();
}
@Override
public void addVehicleToCross(Vehicle v) {
if(vehicleInCross != null && v.getCarType() == carType.Robbery)
Game.getInstance().finishGame();
else
vehicleInCross = v;
}
}