示例#1
0
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)
示例#2
0
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)
示例#3
0
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)