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)
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")))
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))
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 = []
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])
def actOnError(self, node: wmlparser.TagNode): self.main.log.warn("on error %s", node.debug())
def actOnObserverQuit(self, node: wmlparser.TagNode): self.main.log.debug("on observer_quit %s", node.debug())
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))