package graphics;
import java.awt.*;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import _main.Game;
import vehicles.*;
import route.Route;
import cross.*;
public class GraphicsRobberyCar extends AbstractGraphicsObject {
int xp;
int yp;
int rotation;
Draw draw;
RobberyCar ord;
private Icon image;
private Icon image1;
private Icon image2;
private Icon image3;
private Icon image4;
private Icon image5;
private Icon image6;
private Icon image7;
private Icon image8;
Point desiredRoute1;
Point desiredRoute2;
/**
* GraphicsRobberyCar konstruktora, beolvassuk a felhasznalt kepeket a megfelelo attributumokba
* a kesobbi felhasznalas celjabol
*/
public GraphicsRobberyCar(){
try {
image = new ImageIcon("images/ordinarycar1.gif","ordinary car"); //egy ilyen imageIcont kell letrehozni
image1 = new ImageIcon("images/rablo1.gif","ordinary car"); //egy ilyen imageIcont kell letrehozni
image2 = new ImageIcon("images/rablo2.gif","ordinary car"); //egy ilyen imageIcont kell letrehozni
image3 = new ImageIcon("images/rablo3.gif","ordinary car"); //egy ilyen imageIcont kell letrehozni
image4 = new ImageIcon("images/rablo4.gif","ordinary car"); //egy ilyen imageIcont kell letrehozni
image5 = new ImageIcon("images/rablo5.gif","ordinary car"); //egy ilyen imageIcont kell letrehozni
image6 = new ImageIcon("images/rablo6.gif","ordinary car"); //egy ilyen imageIcont kell letrehozni
image7 = new ImageIcon("images/rablo7.gif","ordinary car"); //egy ilyen imageIcont kell letrehozni
image8 = new ImageIcon("images/rablo8.gif","ordinary car"); //egy ilyen imageIcont kell letrehozni
}
catch (Exception e) {
e.printStackTrace();
}
}
/**
* beallitjuk az adott bankrablot
* @param o RobberyCar
*/
public void setRobberyCar(RobberyCar o){
ord = o;
}
/**
* elkerjuk a bankrablo koordinatait
* @return Point: koordinata
*/
public Point getPosition(){
return new Point(xp,yp);
}
public Icon getImage(){return image;}
/**
* Beallitjuk az adott draw-t
* @param d Draw
*/
public void setDraw(Draw d){
draw = d;
}
/**
* kiszamoljuk a megjeleniteshez szukseges valtozok ertekeit
*/
public void calcGraphics(){
MainGraphics gr = Game.getInstance().getMap().getGraphics();
Route r = ord.getRoute();
//ha nem keresztezodesben van az auto
if (r!=null || ord.getCross()!=null )
{
// ket csompont koordinatainak lekerese
Cross cr1 = r.getStartCross();
Point cr1p = gr.getGraphicsFromObject(cr1).getPosition();
Cross cr2 = r.getEndCross();
Point cr2p = gr.getGraphicsFromObject(cr2).getPosition();
// konkret pozicio kiszamolasa
xp = (cr2p.x-cr1p.x)*ord.getPosition()/r.getLength()+cr1p.x;;
yp = (cr2p.y-cr1p.y)*ord.getPosition()/r.getLength()+cr1p.y;;
System.out.println(xp+","+yp);
Route showRoute; // melyik utat mutassuk
Cross c;
// lek�rj�k melyik a pillanatnyi kijel�lt tov�bbi �t
if (ord.getCurrentSpeed()<0 )
{
//ha szembe megyunk a forgalommal a StartCross kell
c = ord.getRoute().getStartCross();
}
else {
// ha normalisan megyunk
c = ord.getRoute().getEndCross();
}
int dir = ord.getDesiredDirection();
int in_db = c.getInRoutes().size();
int out_db =c.getOutRoutes().size();
System.out.println("dir:"+dir+" in_db:"+in_db+" out_db:"+out_db);
//ha tul nagy a kivalasztott ut szama, lejjebb visszuk
if (dir>=in_db+out_db)
{
dir=0;
ord.setDesiredDirection(dir);
}
//ha a dir kisebb mint a bemeno utak szama, akkor a bemeno utlistabol jelolunk ki
if (dir<in_db)
showRoute = c.getInRoutes().get(dir);
//kulonben mar a kimeno utlistabol kell kivalasztanunk a kijelolt utat
else showRoute = c.getOutRoutes().get(dir-in_db);
// megvan a kimen� utunk showRoute szem�ly�ben
// ennek k�rj�k le a k�t koordin�t�j�t
Cross r1 = showRoute.getStartCross();
desiredRoute1 = gr.getGraphicsFromObject(r1).getPosition();
Cross r2 = showRoute.getEndCross();
desiredRoute2 = gr.getGraphicsFromObject(r2).getPosition();
// be�llitja forgat�s szerint a k�pet, figyelni kell, hogy ford�tva megy-e
rotation = calcRotation(cr1p,cr2p);
if (ord.getCurrentSpeed()<0){
rotation+=4;
if (rotation>8) rotation-=8;
}
setRotateImage(rotation);
}
// ha keresztezodesben van az auto
else{
Point crp = gr.getGraphicsFromObject(ord.getCross()).getPosition();
xp = crp.x;
yp = crp.y;
}
draw.drawing((Object)this,gr.getGraphic());
}
/**
* lekerjuk a bankrablo altal kivalasztott ut kezdo csomopontjanak koordinatait
* @return Point koordinata
*/
public Point getDesiredRoute1(){
return desiredRoute1;
}
/**
* lekerjuk a bankrablo altal kivalasztott ut vegcsomopontjanak koordinatait
* @return Point koordinata
*/
public Point getDesiredRoute2(){
return desiredRoute2;
}
/**
* beallitja az autonal melyik forgatott kepet mutassa
* @param n 1..8-ig az autok kepei
*/
public void setRotateImage(int n){
switch(n){
case 1: image = image1;break;
case 2: image = image2;break;
case 3: image = image3;break;
case 4: image = image4;break;
case 5: image = image5;break;
case 6: image = image6;break;
case 7: image = image7;break;
case 8: image = image8;break;
}
}
}