X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;ds=sidebyside;f=rogue_chat_curses.py;h=127c98921b7f501dca310c03709642aca4200e5f;hb=7faae7c97770388f0067c541d27e21573008115d;hp=f715018cc85ef339591c7cfbf119bff5f73d041e;hpb=6cb3a857a09ae974bf0f510dfa94fb19fba2ce31;p=plomrogue2 diff --git a/rogue_chat_curses.py b/rogue_chat_curses.py index f715018..127c989 100755 --- a/rogue_chat_curses.py +++ b/rogue_chat_curses.py @@ -1,4 +1,4 @@ -e!/usr/bin/env python3 +#!/usr/bin/env python3 import curses import queue import threading @@ -268,6 +268,14 @@ def cmd_PONG(game): pass cmd_PONG.argtypes = '' +def cmd_DEFAULT_COLORS(game): + game.tui.set_default_colors() +cmd_DEFAULT_COLORS.argtypes = '' + +def cmd_RANDOM_COLORS(game): + game.tui.set_random_colors() +cmd_RANDOM_COLORS.argtypes = '' + class Game(GameBase): turn_complete = False tasks = {} @@ -297,6 +305,8 @@ class Game(GameBase): self.register_command(cmd_PLAY_ERROR) self.register_command(cmd_TASKS) self.register_command(cmd_FOV) + self.register_command(cmd_DEFAULT_COLORS) + self.register_command(cmd_RANDOM_COLORS) self.map_content = '' self.player_id = -1 self.info_db = {} @@ -383,7 +393,7 @@ class TUI: import json self.mode_play.available_modes = ["chat", "study", "edit", "admin_enter"] self.mode_play.available_actions = ["move", "take_thing", "drop_thing", - "teleport", "door"] + "teleport", "door", "consume"] self.mode_study.available_modes = ["chat", "play", "admin_enter", "edit"] self.mode_study.available_actions = ["toggle_map_mode", "move_explorer"] self.mode_admin.available_modes = ["admin_thing_protect", "control_pw_type", @@ -427,6 +437,7 @@ class TUI: 'take_thing': 'z', 'drop_thing': 'u', 'teleport': 'p', + 'consume': 'C', 'door': 'D', 'help': 'h', 'toggle_map_mode': 'L', @@ -596,19 +607,34 @@ class TUI: self.input_ = "" self.restore_input_values() + def set_default_colors(self): + curses.init_color(1, 1000, 1000, 1000) + curses.init_color(2, 0, 0, 0) + self.do_refresh = True + + def set_random_colors(self): + + def rand(offset): + import random + return int(offset + random.random()*375) + + curses.init_color(1, rand(625), rand(625), rand(625)) + curses.init_color(2, rand(0), rand(0), rand(0)) + self.do_refresh = True + def loop(self, stdscr): import datetime def safe_addstr(y, x, line): if y < self.size.y - 1 or x + len(line) < self.size.x: - stdscr.addstr(y, x, line) + stdscr.addstr(y, x, line, curses.color_pair(1)) else: # workaround to cut_i = self.size.x - x - 1 cut = line[:cut_i] last_char = line[cut_i] - stdscr.addstr(y, self.size.x - 2, last_char) + stdscr.addstr(y, self.size.x - 2, last_char, curses.color_pair(1)) stdscr.insstr(y, self.size.x - 2, ' ') - stdscr.addstr(y, x, cut) + stdscr.addstr(y, x, cut, curses.color_pair(1)) def handle_input(msg): command, args = self.parser.parse(msg) @@ -836,6 +862,7 @@ class TUI: def draw_screen(): stdscr.clear() + stdscr.bkgd(' ', curses.color_pair(1)) recalc_input_lines() if self.mode.has_input_prompt: draw_input() @@ -859,6 +886,7 @@ class TUI: 'toggle_map_mode': 'toggle map view', 'toggle_tile_draw': 'toggle protection character drawing', 'door': 'open/close', + 'consume': 'consume', } action_tasks = { @@ -867,10 +895,13 @@ class TUI: 'drop_thing': 'DROP', 'door': 'DOOR', 'move': 'MOVE', + 'consume': 'INTOXICATE', } curses.curs_set(False) # hide cursor - curses.use_default_colors() + curses.start_color() + self.set_default_colors() + curses.init_pair(1, 1, 2) stdscr.timeout(10) reset_screen_size() self.explorer = YX(0, 0) @@ -1021,6 +1052,8 @@ class TUI: self.send('TASK:DROP') elif key == self.keys['door'] and task_action_on('door'): self.send('TASK:DOOR') + elif key == self.keys['consume'] and task_action_on('consume'): + self.send('TASK:INTOXICATE') elif key == self.keys['teleport']: player = self.game.get_thing(self.game.player_id) if player.position in self.game.portals: