Merge branch 'master' of ctpug.org.za:koperkapel
authorSimon Cross <hodgestar@gmail.com>
Sat, 5 Mar 2016 11:07:43 +0000 (13:07 +0200)
committerSimon Cross <hodgestar@gmail.com>
Sat, 5 Mar 2016 11:07:43 +0000 (13:07 +0200)
koperkapel/vehicles/base.py
koperkapel/world.py

index fb4640dd73be2a47e217bd0c1f66ac27565188ec..1b2f3ed279ff471ff9d151d9c5a4ca93e7e3ba24 100644 (file)
@@ -18,8 +18,19 @@ class Vehicle:
     def init_seats(self):
         raise NotImplementedError("Vehicles should specify a list of seats")
 
+    def assign_seats(self, seating):
+        for roach_name, seat in zip(seating, self.seats):
+            seat.roach = roach_name
+
     _vehicle_types = {}
 
+    @classmethod
+    def current(cls, world):
+        vehicle = cls.by_type(world.vehicles.current)
+        vehicle.assign_seats(
+            world.vehicles[vehicle.vehicle_type].seating)
+        return vehicle
+
     @classmethod
     def by_type(cls, vehicle_type):
         return cls._vehicle_types.get(vehicle_type)()
index 2272a7a3f01c1df2a695552e109fc6123c1c2888..d68294949f46a7d520275a19532737cdc02db7c5 100644 (file)
@@ -124,6 +124,12 @@ class WorldDictProxy(WorldBaseProxy):
         value = self._state.get(name)
         return _maybe_subproxy(self, name, value)
 
+    def __setitem__(self, name, value):
+        return self.__setattr__(name, value)
+
+    def __getitem__(self, name):
+        return self.__getattr__(name)
+
 
 class WorldListProxy(WorldBaseProxy):
     """ World list proxy that records changes and produces events. """