- def cmd_TERRAIN(self, terrain_map):
- """Reset self.terrain_map from terrain_map."""
- lines = terrain_map.split('\n')
- if len(lines) != self.map_size[0]:
- raise ArgError('wrong map height')
- for line in lines:
- if len(line) != self.map_size[1]:
- raise ArgError('wrong map width')
- self.terrain_map = terrain_map
- cmd_TERRAIN.argtypes = 'string'
+ def cmd_TERRAIN_LINE(self, y, terrain_line):
+ width_map = self.map_size[1]
+ if y >= self.map_size[0]:
+ raise ArgError('too large row number %s' % y)
+ width_line = len(terrain_line)
+ if width_line > width_map:
+ raise ArgError('too large map line width %s' % width_line)
+ self.terrain_map = self.terrain_map[:y * width_map] + \
+ terrain_line + self.terrain_map[(y + 1) * width_map:]
+ cmd_TERRAIN_LINE.argtypes = 'int:nonneg string'