Ejemplo n.º 1
0
 def actOnWhisper(self, node: wmlparser.TagNode):
     # self.main.log.debug("on whisper %s", node.debug())
     sender = node.get_text_val("sender")
     message = node.get_text_val("message")
     # self.main.log.debug("%s %s %s", sender, "~", message)
     whisper = True
     self.cmd.onWesMessage(message, sender, self.main.lobby.users.isRegistered(sender), whisper)
Ejemplo n.º 2
0
    def actOnUser(self, node: wmlparser.TagNode):
        # self.main.log.error("actOnUser should not be called currently")  # it should, when first joining lobby
        self.main.log.log(2, "on user %s", node.debug())
        # for att in node.get_all(att=""):
        # print("user attr",att.get_name(), att.get_text())

        # maybe should update some stuff?
        # should happen when first connecting
        self.main.lobby.users.addInitialUser(User(node))

        self.main.log.log(2, self.main.lobby.users.get(node.get_text_val("name")))
Ejemplo n.º 3
0
 def actOnMessage(self, node: wmlparser.TagNode):
     # self.main.log.debug("on message %s", node.debug())
     sender = node.get_text_val("sender")
     message = node.get_text_val("message")
     if sender == "server":
         self.cmd.onServerMessage(message, False)  # TODO is private?
         return
     if not sender or not message:
         self.main.log.error("sender or message is None in actOnMessage")
         return
     # self.main.log.debug("%s %s %s", sender, ">", message)
     self.cmd.onWesMessage(message, sender, self.main.lobby.users.isRegistered(sender))
Ejemplo n.º 4
0
 def actOnGamelist(self, node: wmlparser.TagNode):
     # when first connecting to lobby
     self.main.log.log(2, "on gamelist")
     # self.main.log.debug("on gamelist %s", node.debug()[:self.log_cutoff_len])
     # save them to games
     for game in node.get_all(tag="game"):
         self.main.lobby.games.addInitialGame(Game(game))
 def __init__(self, node: wmlparser.TagNode):
     self.node = node
     self.available = node.get_text_val("available")
     self.game_id = node.get_text_val("game_id")
     self.location = node.get_text_val("location")
     self.name = node.get_text_val("name")
     self.registered = node.get_text_val("registered") == "yes"
     self.status = node.get_text_val("status")
 def __init__(self, node: wmlparser.TagNode):
     self.node = node
     self.id = node.get_text_val("id")
     self.name = node.get_text_val("name")
     self.mp_scenario = node.get_text_val("mp_scenario")
     self.mp_era = node.get_text_val("mp_era")
     self.mp_use_map_settings = node.get_text_val("mp_use_map_settings")
     self.observer = node.get_text_val("observer") == "yes"
     # self.human_sides = node.get_text_val("human_sides") # TODO find why I had human_sides there
     # TODO use [slot_data], [slot_data]\nmax="2"\nvacant="0"\n[/slot_data]
     self.users = []
Ejemplo n.º 7
0
    def actOnGamelistDiff(self, node: wmlparser.TagNode):
        self.main.log.log(2, "in actOnGamelistDiff with %s", node.get_name())
        usersToRemove = set()
        usersToAdd = set()
        for child in node.get_all(tag="delete_child"):
            index = int(child.get_text_val("index"))
            if len(child.get_all(tag="user")) == 1:
                self.main.log.log(5, "user %s should be removed" % index)
                usersToRemove.add(self.main.lobby.users.getI(index).name)

        for child in node.get_all(tag="insert_child"):
            index = int(child.get_text_val("index"))
            self.main.log.log(3, "%s %s", child.get_name(), index)
            for child in child.get_all(tag="user"):
                u = User(child)
                self.main.log.log(5, "user %s should be inserted to %s", u.name, index)
                usersToAdd.add(u.name)
                if u.name in usersToRemove:
                    self.main.lobby.users.insertUser(u, index, None)
                else:
                    self.main.lobby.users.insertUser(u, index)
            for child in child.get_all(tag="game"):
                g = Game(child)
                self.main.log.log(5, "game %s(%s) should be inserted to %s", g.name, g.id, index)
                self.main.lobby.games.insertGame(g, index)

        for child in node.get_all(tag="delete_child"):
            index = int(child.get_text_val("index"))
            self.main.log.log(3, "%s %s", child.get_name(), index)
            if len(child.get_all(tag="user")) == 1:
                self.main.log.log(5, "user %s should be removed" % index)
                if self.main.lobby.users.getI(index).name in usersToAdd:
                    self.main.lobby.users.deleteI(index, None)
                else:
                    self.main.lobby.users.deleteI(index)
            elif len(child.get_all(tag="game")) == 1:
                self.main.log.log(5, "game %s should be removed" % index)
                self.main.lobby.games.removeGame(index)
            else:
                self.main.log.error("actOnGamelistDiff with %s users and %s games",
                                    len(child.get_all(tag="user")),
                                    len(child.get_all(tag="game")))
        for child in node.get_all(tag="change_child"):
            if int(child.get_text_val("index")) != 0:
                raise WesException("[gamelist_diff][change_child]index={}, 0 expected"
                                   .format(node.get_text_val("index")))
            # This has subtags like delete_child, instead of initial uncondition addition
            gamelists = child.get_all(tag="gamelist")
            assert len(gamelists) == 1
            self.actOnGamelistDiff(gamelists[0])
Ejemplo n.º 8
0
 def actOnError(self, node: wmlparser.TagNode):
     self.main.log.warn("on error %s", node.debug())
Ejemplo n.º 9
0
 def actOnObserverQuit(self, node: wmlparser.TagNode):
     self.main.log.debug("on observer_quit %s", node.debug())
Ejemplo n.º 10
0
 def actOnSpeak(self, node: wmlparser.TagNode):
     self.main.log.debug("on speak %s", node.debug())
     sender = node.get_text_val("id")
     message = node.get_text_val("message")
     self.main.log.debug("%s %s %s", sender, ">", message)
     self.cmd.onWesMessage(message, sender, self.main.lobby.users.isRegistered(sender))