import socket
import threading
from plomrogue.parser import ArgError, Parser
-from plomrogue.commands import cmd_MAP, cmd_THING_TYPE, cmd_THING_POS
-from plomrogue.game import Game, WorldBase, ThingBase
+from plomrogue.commands import cmd_MAP, cmd_THING_POS
+from plomrogue.game import Game, WorldBase
from plomrogue.mapping import MapBase
from plomrogue.io import PlomSocket
+from plomrogue.things import ThingBase
import types
self.to_update['turn'] = True
self.to_update['map'] = True
+def cmd_THING_TYPE(game, i, type_):
+ t = game.world.get_thing(i)
+ t.type_ = type_
+cmd_THING_TYPE.argtypes = 'int:nonneg string'
+
class Game:
symbol = '@'
elif type_ == 'monster':
symbol = 'm'
+ elif type_ == 'item':
+ symbol = 'i'
return symbol
terrain_as_list = list(self.tui.game.world.map_.terrain[:])
for t in self.tui.game.world.things:
pos_i = self.tui.game.world.map_.get_position_index(t.position)
- terrain_as_list[pos_i] = self.tui.game.symbol_for_type(t.type_)
+ symbol = self.tui.game.symbol_for_type(t.type_)
+ if symbol in {'i'} and terrain_as_list[pos_i] in {'@', 'm'}:
+ continue
+ terrain_as_list[pos_i] = symbol
return ''.join(terrain_as_list)
def pad_or_cut_x(lines):
for c in ''.join(lines):
if c in {'@', 'm'}:
chars_with_attrs += [(c, curses.color_pair(1))]
+ elif c == 'i':
+ chars_with_attrs += [(c, curses.color_pair(4))]
elif c == '.':
chars_with_attrs += [(c, curses.color_pair(2))]
elif c in {'x', 'X', '#'}:
curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_RED)
curses.init_pair(2, curses.COLOR_BLACK, curses.COLOR_GREEN)
curses.init_pair(3, curses.COLOR_BLACK, curses.COLOR_BLUE)
+ curses.init_pair(4, curses.COLOR_BLACK, curses.COLOR_YELLOW)
curses.curs_set(False) # hide cursor
self.to_send = []
self.edit = EditWidget(self, (0, 6), (1, 14), check_tui = ['edit'])