Files
flippr-code/cli/game.py
2019-09-20 09:38:48 +02:00

97 lines
2.5 KiB
Python

from observable import Observable
from FlippR_Networking import Networking
output_server_address = ''
input_server_address = ''
#network = Networking(output_server_address, input_server_address)
network = ''
class EventHandler():
def __init__(self, network):
# brace yourselves, python incoming
self.subclasses = {subcls.__name__: subcls for subcls in self.__class__.__subclasses__()}
self.network = network
def handle(self, name):
self.subclasses[name](network)
class LeftFlapEventHandler(EventHandler):
def __init__(self, network):
print('Left Flap Event gets handled')
self.handle()
def handle(self):
# 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')
# while True:
# event_name = snake_to_camel(network.getInputEvent())
# handler.handle(event_name + 'EventHandler')