diff --git a/cli/game.py b/cli/game.py index a0e8dcc..7d973cb 100644 --- a/cli/game.py +++ b/cli/game.py @@ -1,3 +1,4 @@ +from observable import Observable from FlippR_Networking import Networking output_server_address = '' @@ -24,11 +25,68 @@ class LeftFlapEventHandler(EventHandler): # do stuff... pass +class Bank(Target): + def __init__(self, targets): + self.targets = targets + self.__register_targets__() + + def __target_hit__(self, target): + if all(target.is_hit for target in self.targets): + self.__all_targets_hit__() + + def __all_targets_hit__(self): + self.__reset_all_targets__() + super.hit() + pass + + def __reset_all_targets__(self): + for target in self.targets: + target.reset() + + def __register_targets__(self): + for target in self.targets: + target.on(target.hit_key, self.__target_hit__) + +class Target(Observable):#is observable + def __init__(self, points, name): + self.points = points + self.name = name + self.hit_key = "hit" + + def hit(self): + #notify Observers + #notify Gamestate + self.trigger(self.hit_key, self) + +class BankTarget(Target): + def __init__(self, points): + super(points) + self.is_hit = False + + def hit(self): + self.is_hit = True + super.hit() + #notify Bank + + def reset(self): + self.is_hit = False + + +class GameState: + def __init__(self, targets): + self.score = 0 + self.targets = targets + for target in self.targets: + target.on(target.hit_key, self.__target_hit__) + + def __target_hit__(self, target): + pass + def snake_to_camel(word): return ''.join(x.capitalize() or '' for x in word.split('_')) handler = EventHandler(network) -# handler.handle(snake_to_camel('left_flap') + 'EventHandler') +handler.handle(snake_to_camel('left_flap') + 'EventHandler') # while True: # event_name = snake_to_camel(network.getInputEvent())