1 import objectdraw.FilledRect; 2 import objectdraw.FramedRect; 3 import objectdraw.Location; 4 import objectdraw.DrawingCanvas; 5 import java.awt.Color; 6 7 public class Elevator{ 8 9 private FilledRect inside; 10 private FramedRect insideFrame; 11 private FilledRect leftDoor; 12 private FilledRect rightDoor; 13 private FramedRect leftDoorFrame; 14 private FramedRect rightDoorFrame; 15 16 private int levelOn; 17 private final double levelIncrement; 18 19 20 public Elevator(Location loc, double pixelsBetweenLevels, DrawingCanvas canvas) 21 { 22 levelIncrement = pixelsBetweenLevels; 23 inside = new FilledRect(loc, 20, 30, canvas); 24 inside.setColor(Color.blue); 25 insideFrame = new FramedRect(loc, 20, 30, canvas); 26 27 leftDoor = new FilledRect(loc, 10, 30, canvas); 28 rightDoor = new FilledRect(loc.getX()+10, loc.getY(), 10, 30, canvas); 29 leftDoorFrame = new FramedRect(loc, 10, 30, canvas); 30 rightDoorFrame = new FramedRect(loc.getX()+10, loc.getY(), 10, 30, canvas); 31 leftDoor.setColor(Color.gray); 32 rightDoor.setColor(Color.gray); 33 34 levelOn = 1; 35 } 36 37 public void openDoors() 38 { 39 leftDoor.hide(); 40 rightDoor.hide(); 41 leftDoorFrame.hide(); 42 rightDoorFrame.hide(); 43 } 44 45 public void closeDoors() 46 { 47 leftDoor.show(); 48 rightDoor.show(); 49 leftDoorFrame.show(); 50 rightDoorFrame.show(); 51 } 52 53 public void moveToLevel(int level) 54 { 55 closeDoors(); 56 double dy = (levelOn - level) * levelIncrement; 57 move(0, dy); 58 levelOn = level; 59 } 60 61 private void move(double dx, double dy) 62 { 63 inside.move(dx, dy); 64 insideFrame.move(dx, dy); 65 leftDoor.move(dx, dy); 66 rightDoor.move(dx, dy); 67 leftDoorFrame.move(dx, dy); 68 rightDoorFrame.move(dx, dy); 69 } 70 71 public int level() 72 { 73 return levelOn; 74 } 75 76 public String getDirection(int fromLevel, int toLevel) 77 { 78 String direction = "Idle"; 79 if(fromLevel - toLevel < 0){ 80 direction = "Going Up"; 81 } 82 else if(fromLevel - toLevel > 0){ 83 direction = "Going Down"; 84 } 85 else{ 86 direction = "Idle"; 87 } 88 return direction; 89 } 90 } 91