Package cross

Source Code of cross.Cross

package cross;

import game_timer.TimerNotify;

import java.util.ArrayList;
import java.util.List;

import map.Map;
import misc.carType;
import route.Route;
import vehicles.Vehicle;
import _main.Game;
/**
* Cross oszt�ly:
*Ez egy olyan absztrakt keresztez�d�s oszt�ly,
*amib�l �r�k�lnek m�s oszt�lyok (Bank, StopCross, stb.).
*Kezeli a keresztez�d�sben l�v� bemen� �s kimen� utakat, a
*rajtuk l�v� j�rm�veket. Egyszerre csak egy j�rm� lehet a keresztez�d�sben.
*Az oszt�ly implement�lja a TimerNotify interface-t.
*/ 
public abstract class Cross implements TimerNotify {

  protected Map m;
  protected ArrayList<Route> inroutes = new ArrayList<Route>();
  protected ArrayList<Route> outroutes = new ArrayList<Route>();
  protected ArrayList<Vehicle> vehiclesAtCross = new ArrayList<Vehicle>();
  protected Vehicle vehicleInCross = null;
 
  /**
   * Friss�ti a vehiclesAtCross-t a keresztez�d�s bemen� �tjain tal�lhat� aut�kr�l
   */ 
  public void updateVehiclesAtCross() {
    //az ososztalybeli update vehicle at cross ertelmetlen, ugyis sajat szabalyok szerint fog mukodni
    throw new UnsupportedOperationException();
  }

  /**
   * �tk�z�s figyel�se; ha vannak a keresztez�d�sben �s j�n a bankrabl� befel�,
   * akinek nagyobb a sebess�ge 0-n�l, akkor �tk�z�s lesz
   */
 
  public void collisionDetect() {
    //TODO: [PROG] ez igy baromsag
    if(vehicleInCross != null){
      Game.getInstance().finishGame();
    }   
  }

  /**
   *
   * a keresztez�d�sben l�v� aut�t kil�pteti
   */
  public void vehicleOut() {
    try{
      if(vehicleInCross != null){
        ArrayList<Route> al_selectableRoutes = new ArrayList<Route>();
        if(vehicleInCross.getCarType() == carType.Robbery){
          for(Route r : inroutes){
            //if(r != fromRoute)
              al_selectableRoutes.add(r);
          }
          for(Route r : outroutes){
            //if(r != fromRoute)
              al_selectableRoutes.add(r);
          }
         
          Route selectedOutRoute = vehicleInCross.selectRoute(al_selectableRoutes);
          selectedOutRoute.addVehicle(vehicleInCross);
        } else {
          Route selectedOutRoute = vehicleInCross.selectRoute(outroutes);
          selectedOutRoute.addVehicle(vehicleInCross)
        }
        vehicleInCross = null;     
      }
    } catch(Exception e){
      e.printStackTrace();
    }
  }

  /**
   *
   * egy �tr�l bel�ptet egy j�rm�t a keresztez�d�sbe (a megadott szab�lyok alapj�n,
   * mely a keresztez�d�s t�pus�t�l f�gg
   */
  public void stepIntoCross(Route r) {
    if(r != null){
       Vehicle car = r.getAndRemoveLastCar();
      if(vehicleInCross == null){
        vehicleInCross = car;
      } else {
        if(vehicleInCross.getCarType() == carType.Robbery){
          //ha nem ures a cross(a bankrablo van benne)
          Game.getInstance().finishGame();
        } else{
          //ket masfajta auto utkozott - nem teszt esetek ez nem lehetseges, mivel utkozeselkerulok.
          //dobjuk el azt az autot, amelyik jott.
          car = null;
        }
      }   
    }
   
  }

  /**
   *
   * az id�l�ptet� f�ggv�ny; megh�vja a megfelel� f�ggv�nyeket adott id�k�z�nk�nt
   */
  public void onTick() {
    throw new UnsupportedOperationException();
  }

  /**
   * az inroutes t�mbh�z hozz�ad egy bemen� utat
   * @param r bemen� �t hozz�ad�sa
   */
  public void addInRoutes(Route r) {
    inroutes.add(r);
  }

  /**
   * az outroutes t�mbh�z hozz�ad egy bemen� utat
   * @param r kimen� �t hozz�ad�sa
   */
  public void addOutRoutes(Route r) {
    outroutes.add(r);
  }

  /**
   * Aut�t tesz a keresztez�d�sbe(ami a robbery lesz) es egybol ki is lepteti
   * @param v a keresztez�d�sbe teend� aut�
   */
  public void addVehicleToCross(Vehicle v) {
    if(vehicleInCross == null){
      vehicleInCross = v;
      vehicleOut();
    }
    else {
      System.out.println("A keresztezodesben mar van auto, igy nem sikerult azt betenni!");
    }
  }
 
  public Vehicle getVehicleFromCross(){
    return vehicleInCross;
  }
 
  public List<Route> getInRoutes(){
    return inroutes;
  }
 
  public List<Route> getOutRoutes(){
    return outroutes;
  }
}
TOP

Related Classes of cross.Cross

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.