def yesno(self, player, desc): pl = self.players[player] old_parser = pl.connection.parser def r(caller): if caller.text.lower().startswith('y'): self.set_responsei(1) reactor.callLater(0, process_duel, self) elif caller.text.lower().startswith('n'): self.set_responsei(0) reactor.callLater(0, process_duel, self) else: pl.notify(opt) pl.notify(DuelReader, r, restore_parser=old_parser) if desc > 10000: code = desc >> 4 card = Card(code) opt = card.get_strings(pl)[desc & 0xF] if opt == "": opt = pl._("Unknown question from %s. Yes or no?") % ( card.get_name(pl)) else: opt = "String %d" % desc opt = pl.strings["system"].get(desc, opt) pl.notify(opt) pl.notify(DuelReader, r, restore_parser=old_parser)
def select_option(self, player, options): pl = self.players[player] def r(caller): idx = int(caller.text) opt = options[idx] for p in self.players + self.watchers: if opt > 10000: string = card.get_strings(p)[opt & 0xF] else: string = p._("Unknown option %d" % opt) string = p.strings["system"].get(opt, string) if p is pl: p.notify( p._("You selected option {0}: {1}").format( idx + 1, string)) else: p.notify( p._("{0} selected option {1}: {2}").format( pl.nickname, idx + 1, string)) self.set_responsei(idx) reactor.callLater(0, process_duel, self) card = None opts = [] for opt in options: if opt > 10000: code = opt >> 4 card = Card(code) string = card.get_strings(pl)[opt & 0xF] else: string = pl._("Unknown option %d" % opt) string = pl.strings["system"].get(opt, string) opts.append(string) pl.notify( pl._("Select option:"), no_abort=pl._("Invalid option."), prompt=pl._("Select option:"), persistent=True, restore_parser=DuelParser, ) for idx, opt in enumerate(opts): pl.notify(str(idx) + ": " + str(opt)) pl.notify(DuelReader, r, no_abort=pl._("Invalid command"), restore_parser=DuelParser)
def yesno(self, player, desc): pl = self.players[player] old_parser = pl.connection.parser def yes(caller): self.set_responsei(1) reactor.callLater(0, process_duel, self) def no(caller): self.set_responsei(0) reactor.callLater(0, process_duel, self) if desc > 10000: code = desc >> 4 card = Card(code) opt = card.get_strings(pl)[desc & 0xf] if opt == '': opt = pl._('Unknown question from %s. Yes or no?') % ( card.get_name(pl)) else: opt = "String %d" % desc opt = pl.strings['system'].get(desc, opt) pl.notify(yes_or_no_parser, opt, yes, no=no, restore_parser=old_parser)