diff --git a/.gitignore b/.gitignore index 704ad01..0b5ff62 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ *.idea* cmake-build-debug -.idea/* -*__pycache__/* +*__pycache__* diff --git a/FlippR-Driver/networking/output/OutputRequestHandler.cpp b/FlippR-Driver/networking/output/OutputRequestHandler.cpp index f75866a..301bdbf 100644 --- a/FlippR-Driver/networking/output/OutputRequestHandler.cpp +++ b/FlippR-Driver/networking/output/OutputRequestHandler.cpp @@ -77,7 +77,7 @@ void OutputRequestHandler::handleRequest(HTTPServerRequest &request, try { boost::optional json_response = parseRequest(item_type, item_name, action, score); - json_response->stringify(std::cerr); + if(json_response) { std::ostream& ostr = response.send(); diff --git a/cli/FlippR_Networking.py b/cli/FlippR_Networking.py index 3c56a45..d028376 100644 --- a/cli/FlippR_Networking.py +++ b/cli/FlippR_Networking.py @@ -46,4 +46,4 @@ class Networking: self.get("/displays" + display + "/write_score/" + str(score)) def getInputEvent(self): - pass + return '' diff --git a/cli/game.py b/cli/game.py new file mode 100644 index 0000000..7d973cb --- /dev/null +++ b/cli/game.py @@ -0,0 +1,96 @@ +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') + + +