def create_simple_player(savable): colorama_init() print() player_input = KeyboardInputGetter() player_input.start() output = ImmediateStreamOutput() player = Player(player_input, output, savable) return player, [output], lambda: None
def create_fancy_player(stdscr, savable): from textprint.input import InputLineUpdater from textprint.section import Section from textprint.textprinter import TextPrinter curses_init() std_init(stdscr) colorama_init() input_section = Section(None, fill_up_left_over=False) # we want to allow it to go for as many lines it needs temp_section = Section(None, fill_up_left_over=False) print_section = Section(None, fake_line=(Color.BLUE >> "~")) title_section = Section(1) printer = TextPrinter([input_section, temp_section, print_section, title_section], print_from_top=False, stdscr=stdscr) printer.update_dimensions() # print_section.fake_line = Color.RED + Color.BOLD + "|" + (" " * (printer.dimensions[1] - 3)) + "|" updater = InputLineUpdater(printer, input_section.println(printer, "", flush=True), stdscr) player_input = TextPrinterInputGetter(updater) # input_manager = InputLineUpdaterManager(updater) # calls updater's update output = OutputNotifierSender(TextPrinterOutput(printer, print_section), lambda: temp_output.section.clear_lines(printer, flush=True)) temp_output = TextPrinterOutput(printer, temp_section) player = Player(player_input, output, savable) def interrupt_handler(): if updater.current_line().is_clear(): temp_output.send_message(Message(Color.YELLOW >> "Press CTRL+D to exit", message_type=MessageType.IMMEDIATE)) print_section.update_lines(printer, flush=True, force_reprint=True) else: updater.current_line().clear() add_interrupt_handler(interrupt_handler) # clear line when CTRL+C is pressed title_manager = LocationTitleBarManager(player, printer, title_section.println(printer, "")) return player, [player_input, output, temp_output, title_manager], lambda: curses_end()