Esempio n. 1
0
    def __init__(self):
        self.controller = SimulatorController()
        self.server_factory = ServerProtocolFactory(self.on_connection, self.on_received)

        reactor.listenTCP(1079, self.server_factory)

        logging.getLogger().setLevel(logging.INFO)
Esempio n. 2
0
class SimulatorServer:
    def __init__(self):
        self.controller = SimulatorController()
        self.server_factory = ServerProtocolFactory(self.on_connection, self.on_received)

        reactor.listenTCP(1079, self.server_factory)

        logging.getLogger().setLevel(logging.INFO)

    def start(self):
        reactor.run()

    def on_connection(self, connection):
        print "New Connection", connection.transport.getPeer()
        game_data = self._get_game_data()
        connection.sendString(game_data)

    def on_received(self, data):
        data = pickle.loads(data)
        if isinstance(data, PlayBuildingCard):
            self.controller.play_building_card(data.card.name, data.player_id, data.slot)
        elif isinstance(data, PlaySpellCard):
            self.controller.play_spell_card(data.card.name, data.player_id, data.slot)
        elif isinstance(data, PlayUnitCard):
            self.controller.play_unit_card(data.card.name, data.player_id, data.location)
        elif isinstance(data, Reset):
            self.controller.clear()
        elif isinstance(data, Next):
            self.controller.next()

        self.broadcast_game()

    def broadcast_game(self):
        game_data = self._get_game_data()
        self.server_factory.broadcast(game_data)

    def _get_game_data(self):
        game = self.controller.game
        pickled_game = pickle.dumps(game)
        return pickled_game