Add presets

This commit is contained in:
Juhani Krekelä 2019-05-06 14:29:34 +03:00
parent 55e27fd94e
commit 2f33f431e2
2 changed files with 57 additions and 15 deletions

View File

@ -129,8 +129,12 @@ def parse_command(message, nick, irc):
send_event((events.status,))
elif c == '!start':
if args(0) is not None:
send_event((events.start, nick))
arg = args([0, 1])
if arg is not None:
if len(arg) == 0:
send_event((events.start, nick))
else:
send_event((events.start, nick, arg[0]))
elif c == '!ready':
if args(0) is not None:
@ -239,8 +243,10 @@ def parse_command(message, nick, irc):
send('!status !start !ready !unready !kill !join !leave !players !deck !limit !card !cards')
elif len(arg) == 1:
if arg[0] in ('status', 'start', 'ready', 'unready', 'kill', 'join', 'leave', 'players', 'cards'):
if arg[0] in ('status', 'ready', 'unready', 'kill', 'join', 'leave', 'players', 'cards'):
send('Usage: !%s' % (arg[0]))
elif arg[0] == 'start':
send('Usage: !start [preset]')
elif arg[0] == 'card':
send('Usage: [!card] <number> ...')
elif arg[0] == 'deck':

View File

@ -201,6 +201,25 @@ def game(send, notice, get_event):
responses
))
def deck_add_handler(code):
nonlocal decks
if code not in decks:
errwrapper('Failure adding deck: %s (%%s)' % code, add_deck, code)
else:
send('Deck already added')
def deck_add_random_handler():
nonlocal decks
# Let's hope this never bites us in the butt
while True:
code = errwrapper('Failure getting random code for a deck. (%s)', get_random_deck_code)
if code is Error: return
if code not in decks: break
send('That was weird, got %s randomly but it was already added' % code)
errwrapper('Failure adding deck: %s (%%s)' % code, add_deck, code)
def common_handler(event, args):
nonlocal players, decks, limit
@ -237,19 +256,10 @@ def game(send, notice, get_event):
elif event == events.deck_add:
code, = args
if code not in decks:
errwrapper('Failure adding deck: %s (%%s)' % code, add_deck, code)
else:
send('Deck already added')
deck_add_handler(code)
elif event == events.deck_add_random:
# Let's hope this never bites us in the butt
while True:
code = errwrapper('Failure getting random code for a deck. (%s)', get_random_deck_code)
if code is Error: return
if code not in decks: break
send('That was weird, got %s randomly but it was already added' % code)
errwrapper('Failure adding deck: %s (%%s)' % code, add_deck, code)
deck_add_random_handler()
elif event == events.deck_remove:
code, = args
@ -300,11 +310,37 @@ def game(send, notice, get_event):
send('Idle')
elif event == events.start:
nick, = args
nick, *rest = args
add_player(nick)
send('%s started a game, !join to join!' % nick)
expert = False
if len(rest) == 0 or rest[0] == 'default':
send('Adding the default CAH deck (A5DCM)')
deck_add_handler('A5DCM')
elif rest[0] == 'offtopia':
send('Adding the default CAH deck (A5DCM), offtopia injoke deck (PXWKC), and three random decks')
deck_add_handler('A5DCM')
deck_add_handler('PXWKC')
deck_add_random_handler()
deck_add_random_handler()
deck_add_random_handler()
elif rest[0] == 'expert':
expert = True
else:
send('Unknown preset %s' % rest[0])
if not expert:
send('Once you are ready to start the game, everyone send !ready')
return game_setup
elif event == events.quit: