def do(self):
self.thing.carrying.full = False
self.thing.carrying.empty()
- for c_id in self.thing.game.sessions:
- if self.thing.game.sessions[c_id]['thing_id'] == self.thing.id_:
- self.thing.game.io.send('RANDOM_COLORS', c_id)
- self.thing.game.io.send('CHAT "You are drunk now."', c_id)
- break
+ self.thing.send_msg('RANDOM_COLORS')
+ self.thing.send_msg('CHAT "You are drunk now."')
self.thing.drunk = 10000
def do(self):
from plomrogue.misc import quote
- reply = self.thing.carrying.interpret(self.args[0])
- for c_id in self.thing.game.sessions:
- if self.thing.game.sessions[c_id]['thing_id'] == self.thing.id_:
- self.thing.game.io.send('REPLY ' + quote(reply), c_id)
+ reply_lines = self.thing.carrying.interpret(self.args[0])
+ for line in reply_lines:
+ self.thing.send_msg('REPLY ' + quote(line))
self.game.changed = True
def interpret(self, command):
+ msg_lines = []
if command == 'HELP':
- msg = 'available commands:\n'
- msg += 'HELP – show this help\n'
- msg += 'PLAY – toggle playback on/off\n'
- msg += 'REWIND – return to start of playlist\n'
- msg += 'LIST – list programmed songs, durations\n'
- msg += 'SKIP – to skip to next song\n'
- msg += 'REPEAT – toggle playlist repeat on/off\n'
- msg += 'ADD LENGTH SONG – add SONG to playlist, with LENGTH in format "minutes:seconds", i.e. something like "0:47" or "11:02"'
- return msg
+ msg_lines += ['available commands:']
+ msg_lines += ['HELP – show this help']
+ msg_lines += ['PLAY – toggle playback on/off']
+ msg_lines += ['REWIND – return to start of playlist']
+ msg_lines += ['LIST – list programmed songs, durations']
+ msg_lines += ['SKIP – to skip to next song']
+ msg_lines += ['REPEAT – toggle playlist repeat on/off']
+ msg_lines += ['ADD LENGTH SONG – add SONG to playlist, with LENGTH in format "minutes:seconds", i.e. something like "0:47" or "11:02"']
+ return msg_lines
elif command == 'LIST':
- msg = 'playlist:'
+ msg_lines += ['playlist:']
i = 0
for entry in self.playlist:
- msg += '\n'
minutes = entry[1] // 60
seconds = entry[1] % 60
if seconds < 10:
seconds = '0%s' % seconds
selector = 'next:' if i == self.playlist_index else ' '
- msg += '%s %s:%s – %s' % (selector, minutes, seconds, entry[0])
+ msg_lines += ['%s %s:%s – %s' % (selector, minutes, seconds, entry[0])]
i += 1
- return msg
+ return msg_lines
elif command == 'PLAY':
self.playing = False if self.playing else True
self.game.changed = True
if self.playing:
- return 'playing'
+ return ['playing']
else:
- return 'paused'
+ return ['paused']
elif command == 'REWIND':
self.playlist_index = 0
self.next_song_start = datetime.datetime.now()
self.game.changed = True
- return 'back at start of playlist'
+ return ['back at start of playlist']
elif command == 'SKIP':
self.next_song_start = datetime.datetime.now()
self.game.changed = True
- return 'skipped'
+ return ['skipped']
elif command == 'REPEAT':
self.repeat = False if self.repeat else True
self.game.changed = True
if self.repeat:
- return 'playlist repeat turned on'
+ return ['playlist repeat turned on']
else:
- return 'playlist repeat turned off'
+ return ['playlist repeat turned off']
elif command.startswith('ADD '):
tokens = command.split(' ', 2)
if len(tokens) != 3:
- return 'wrong syntax, see HELP'
+ return ['wrong syntax, see HELP']
length = tokens[1].split(':')
if len(length) != 2:
- return 'wrong syntax, see HELP'
+ return ['wrong syntax, see HELP']
try:
minutes = int(length[0])
seconds = int(length[1])
except ValueError:
- return 'wrong syntax, see HELP'
+ return ['wrong syntax, see HELP']
self.playlist += [(tokens[2], minutes * 60 + seconds)]
self.game.changed = True
- return 'added'
+ return ['added']
else:
- return 'cannot understand command'
+ return ['cannot understand command']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.carrying = None
+
+ def send_msg(self, msg):
+ for c_id in self.game.sessions:
+ if self.game.sessions[c_id]['thing_id'] == self.id_:
+ self.game.io.send(msg, c_id)
+ break