From e3784691ff5369873f0b82c9bcfa8b0a735de754 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Thu, 21 May 2009 07:03:58 +0200 Subject: * host/simu/robots/aquajim: - added elevator puck slots. - added lost puck display. --- host/simu/robots/aquajim/model/sorter.py | 16 ++++++++++++++-- host/simu/robots/aquajim/view/elevator.py | 12 ++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/host/simu/robots/aquajim/model/sorter.py b/host/simu/robots/aquajim/model/sorter.py index 61ecdf71..41f7712f 100644 --- a/host/simu/robots/aquajim/model/sorter.py +++ b/host/simu/robots/aquajim/model/sorter.py @@ -38,6 +38,7 @@ class Sorter (Observable): self.into = into or () self.arm_slot = [ None, None, None ] self.bridge_slot = [ None, None ] + self.elevator_slot = [ ] self.lost = [ ] self.arm_motor_link = arm_motor_link self.arm_motor_link.register (self.__arm_motor_notified) @@ -115,8 +116,8 @@ class Sorter (Observable): if (self.bridge_door_servo_value > 0.9 and self.bridge_finger_servo_value > 0.5 and self.bridge_slot[1] is not None): - # Drop until elevator is fully implemented. - self.lost.append (self.bridge_slot[1]) + # Pass to elevator. + self.elevator_slot.append (self.bridge_slot[1]) self.bridge_slot[1] = None self.__bridge_puck_update () self.notify () @@ -134,7 +135,18 @@ class Sorter (Observable): self.notify () def __elevator_door_notified (self): + # Contact. self.elevator_door_contact.state = (self.elevator_door.angle != self.elevator_door.max_stop) self.elevator_door_contact.notify () + # Puck exit. + if (self.elevator_door.angle == self.elevator_door.max_stop + and self.elevator_slot): + exit_pos = self.__transform ((-150, 0)) + if exit_pos is not None: + for i in range (len (self.elevator_slot)): + self.elevator_slot[i].pos = exit_pos + self.elevator_slot[i].notify () + exit_pos = (exit_pos[0] + 2, exit_pos[1] + 2) + self.elevator_slot = [ ] diff --git a/host/simu/robots/aquajim/view/elevator.py b/host/simu/robots/aquajim/view/elevator.py index 8c83ac5e..7c27d4d3 100644 --- a/host/simu/robots/aquajim/view/elevator.py +++ b/host/simu/robots/aquajim/view/elevator.py @@ -24,6 +24,8 @@ """AquaJim elevator.""" from simu.inter.drawable import Drawable +from simu.view.table_eurobot2009 import puck_attr + class Elevator (Drawable): width = 320 / 1.2 @@ -56,6 +58,11 @@ class Elevator (Drawable): self.reset () self.trans_translate ((-35, -150)) self.draw_line ((-10, 300), (-10, 0), (70, 0), fill = '#808080') + i = 15 + for puck in self.model.lost: + self.draw_circle ((-40, i), 15, + **puck_attr[puck.color]) + i += 15 if self.height is not None: self.trans_translate ((0, self.height)) self.draw_line ((0, 150), (0, 0), (70, 0)) @@ -63,4 +70,9 @@ class Elevator (Drawable): self.trans_translate ((5 + self.door_value * 70, 0)) self.draw_line ((0, 120), (0, 0), fill = self.door_limit and 'red' or 'black') + i = 0 + for puck in self.model.elevator_slot: + self.draw_rectangle ((0, i), (70, i + 30), + **puck_attr[puck.color]) + i += 30 -- cgit v1.2.3