/* Write by
* Ekkalak Leelasornchai 5830622421
* Burin Naowarat 5831034621
* Progmeth project
*/
package model;
import java.util.ArrayList;
import java.util.concurrent.CopyOnWriteArrayList;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
public class Transporter implements IDrawable,IPassengerDrawable{
protected double x,y;
protected int direction;
protected Color color;
protected static final int size=50;
protected int positionIndex;
protected static final int speed=5;
protected CopyOnWriteArrayList<Passenger> passengers = new CopyOnWriteArrayList<>();
public Transporter(double x,double y,Color color,int direction) {
// TODO Auto-generated constructor stub
setX(x);
setY(y);
setColor(color);
setDirection(direction);
}
@Override
public void draw(GraphicsContext gc) {
// TODO Auto-generated method stub
gc.setFill(color);
gc.fillOval(getX()-size/2, getY()-size/2, size, size);
gc.setStroke(Color.BLACK);
gc.setLineWidth(2);
gc.strokeOval(getX()-size/2, getY()-size/2, size, size);
gc.setGlobalAlpha(0.5);
gc.setFill(Color.WHITE);
gc.fillOval(getX()-size/2, getY()-size/2, size, size);
gc.setGlobalAlpha(1.0);
}
public void addPassenger(Passenger p){
p.setSize(1);
p.setColor(Color.DARKSLATEGRAY);
passengers.add(p);
}
public synchronized int getNumberOfPassengers(){
return passengers.size();
}
public void setDirection(int direction){
this.direction = direction;
}
public int getDirection(){
return this.direction;
}
public void setColor(Color color){
this.color = color;
}
public Color getColor(){
return this.color;
}
public synchronized void setX(double x){
this.x = x;
}
public synchronized void setY(double y){
this.y = y;
}
public double getX(){
return this.x;
}
public double getY(){
return this.y;
}
@Override
public void draw_passengers(GraphicsContext gc) {
// TODO Auto-generated method stub
int n = 0;
for(Passenger p : passengers){
p.setX(getX()-12+15*(n%2));
p.setY(getY()-12+15*(n/2));
n++;
p.draw(gc);
}
}
public boolean isAddPassenger(){
return false;
}
public synchronized boolean isFull(){
return passengers.size()>=4;
}
public synchronized void drop(int index){
passengers.remove(index);
}
public synchronized void transfer(int index, Station st){
Passenger p = passengers.remove(index);
System.out.println("In transport " + p.getType() + "size = " + passengers.size());
st.recievePeople(p);
}
}