X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Bdeck_id%7D%7D/cards/%7B%7Bcard_id%7D%7D/static/gitweb.css?a=blobdiff_plain;f=plomrogue%2Fcommands.py;h=df4b7e204a26b353c8e46db71281e7b9d345717e;hb=1ae4633dc3322876c494f710de67dfdbb0a2a5ba;hp=8ea4ff34a738615c53b65f9349f905e483d39169;hpb=71ffa4676857da80edebbbfca6e2910d929ee3a5;p=plomrogue2 diff --git a/plomrogue/commands.py b/plomrogue/commands.py index 8ea4ff3..df4b7e2 100644 --- a/plomrogue/commands.py +++ b/plomrogue/commands.py @@ -1,5 +1,6 @@ from plomrogue.misc import quote from plomrogue.errors import GameError, ArgError +from plomrogue.misc import Terrain @@ -16,11 +17,17 @@ def cmd_THING_TYPES(game, connection_id): cmd_THING_TYPES.argtypes = '' def cmd_TERRAINS(game, connection_id): - for t in game.terrains.keys(): - game.io.send('TERRAIN %s %s' % (quote(t), quote(game.terrains[t])), - connection_id) + for t in game.terrains.values(): + game.io.send('TERRAIN %s %s' % (quote(t.character), + quote(t.description)), connection_id) cmd_TERRAINS.argtypes = '' +def cmd_TERRAIN(game, character, description, + blocks_light, blocks_sound, blocks_movement): + game.terrains[character] = Terrain(character, description, blocks_light, + blocks_sound, blocks_movement) +cmd_TERRAIN.argtypes = 'char string bool bool bool' + def cmd_ALL(game, msg, connection_id): speaker = game.get_player(connection_id) if not speaker: @@ -226,6 +233,7 @@ def cmd_MAP(game, geometry, size): if geometry == 'Hex': map_geometry_class = MapGeometryHex game.new_world(map_geometry_class(size)) + game.terrains = {} cmd_MAP.argtypes = 'string:map_geometry yx_tuple:pos' def cmd_MAP_CONTROL_LINE(game, big_yx, y, line): @@ -252,7 +260,13 @@ def cmd_THING_NAME(game, thing_id, name, pw, connection_id): raise GameError('thing of ID %s not found' % thing_id) if not game.can_do_thing_with_pw(t, pw): raise GameError('wrong password for thing') - t.name = name + if name == ' ': + if hasattr(t.__class__, 'name'): + raise GameError('cannot un-name things of this type') + if hasattr(t, 'name'): + del t.name + else: + t.name = name game.changed = True # FIXME: pseudo-FOV-change actually game.record_fov_change(t.position)