From 2da46a44a46cef91468e00868c8715f46483c53e Mon Sep 17 00:00:00 2001 From: rr- Date: Sun, 13 Jan 2019 18:34:09 +0100 Subject: [PATCH] ui/curses: implement cheats --- pqcli/ui/curses/views/game_view/__init__.py | 18 +++++++++++++++++- .../views/game_view/character_sheet_window.py | 4 ++-- .../curses/views/game_view/equipment_window.py | 4 ++-- .../curses/views/game_view/inventory_window.py | 4 ++-- pqcli/ui/curses/views/game_view/plot_window.py | 4 ++-- .../views/game_view/quest_book_window.py | 4 ++-- .../views/game_view/spell_book_window.py | 4 ++-- .../views/game_view/task_progress_window.py | 7 +++++-- 8 files changed, 34 insertions(+), 15 deletions(-) diff --git a/pqcli/ui/curses/views/game_view/__init__.py b/pqcli/ui/curses/views/game_view/__init__.py index 20b1fb4..1fa4fbe 100644 --- a/pqcli/ui/curses/views/game_view/__init__.py +++ b/pqcli/ui/curses/views/game_view/__init__.py @@ -3,7 +3,7 @@ import curses import datetime import typing as T -from pqcli.mechanic import Player, Simulation +from pqcli.mechanic import Player, SignalMixin, Simulation from pqcli.roster import Roster from pqcli.ui.curses.event_handler import EventHandler from pqcli.ui.curses.util import KEYS_DOWN, KEYS_LEFT, KEYS_RIGHT, KEYS_UP @@ -87,6 +87,22 @@ class GameView(BaseView): elif focused == self._inventory_win: self.focus(self._quest_book_win) + elif self._args.cheats and key == ord("t"): + self._simulation.tick() + + elif self._args.cheats and key == ord("T"): + for _ in range(100): + self._simulation.tick() + + elif self._args.cheats and key == curses.ascii.DC4: # ^t + old = SignalMixin.emit + SignalMixin.emit = lambda *_: None + for _ in range(10000): + self._simulation.tick() + SignalMixin.emit = old + for child in self._children: + child.sync() + else: super().keypress(key) diff --git a/pqcli/ui/curses/views/game_view/character_sheet_window.py b/pqcli/ui/curses/views/game_view/character_sheet_window.py index 278b8c7..ebb1991 100644 --- a/pqcli/ui/curses/views/game_view/character_sheet_window.py +++ b/pqcli/ui/curses/views/game_view/character_sheet_window.py @@ -29,7 +29,7 @@ class CharacterSheetWindow(Focusable, DataTableProgressBarWindow): self._player.stats.connect("change", self._sync_traits) self._player.exp_bar.connect("change", self._sync_exp) - self._sync() + self.sync() def stop(self) -> None: super().stop() @@ -38,7 +38,7 @@ class CharacterSheetWindow(Focusable, DataTableProgressBarWindow): self._player.stats.disconnect("change", self._sync_traits) self._player.exp_bar.disconnect("change", self._sync_exp) - def _sync(self) -> None: + def sync(self) -> None: self._sync_traits() self._sync_exp() diff --git a/pqcli/ui/curses/views/game_view/equipment_window.py b/pqcli/ui/curses/views/game_view/equipment_window.py index e344c8e..2259fd8 100644 --- a/pqcli/ui/curses/views/game_view/equipment_window.py +++ b/pqcli/ui/curses/views/game_view/equipment_window.py @@ -18,7 +18,7 @@ class EquipmentWindow(Focusable, WindowWrapper): self._player = player self._player.equipment.connect("change", self.sync_equipment_change) - self._sync() + self.sync() def stop(self) -> None: super().stop() @@ -26,7 +26,7 @@ class EquipmentWindow(Focusable, WindowWrapper): self._player.equipment.disconnect("change", self.sync_equipment_change) - def _sync(self) -> None: + def sync(self) -> None: self._data_table.clear() for equipment_type in EquipmentType: self._data_table.add( diff --git a/pqcli/ui/curses/views/game_view/inventory_window.py b/pqcli/ui/curses/views/game_view/inventory_window.py index 9416a11..927202f 100644 --- a/pqcli/ui/curses/views/game_view/inventory_window.py +++ b/pqcli/ui/curses/views/game_view/inventory_window.py @@ -39,7 +39,7 @@ class InventoryWindow(Focusable, DataTableProgressBarWindow): "change", self._sync_encumbrance ) - self._sync() + self.sync() def stop(self) -> None: super().stop() @@ -63,7 +63,7 @@ class InventoryWindow(Focusable, DataTableProgressBarWindow): self._data_table.scroll_page_down() self._render() - def _sync(self) -> None: + def sync(self) -> None: self._sync_gold() self._sync_items() self._sync_encumbrance() diff --git a/pqcli/ui/curses/views/game_view/plot_window.py b/pqcli/ui/curses/views/game_view/plot_window.py index d28a173..f7438aa 100644 --- a/pqcli/ui/curses/views/game_view/plot_window.py +++ b/pqcli/ui/curses/views/game_view/plot_window.py @@ -22,7 +22,7 @@ class PlotWindow(Focusable, ListBoxProgressBarWindow): self._player.quest_book.connect("start_act", self._sync_act_add) self._player.quest_book.plot_bar.connect("change", self._sync_position) - self._sync() + self.sync() def stop(self) -> None: super().stop() @@ -41,7 +41,7 @@ class PlotWindow(Focusable, ListBoxProgressBarWindow): self._list_box.scroll_page_down() self._render() - def _sync(self) -> None: + def sync(self) -> None: self._sync_acts() self._sync_position() diff --git a/pqcli/ui/curses/views/game_view/quest_book_window.py b/pqcli/ui/curses/views/game_view/quest_book_window.py index 9022d48..e351f82 100644 --- a/pqcli/ui/curses/views/game_view/quest_book_window.py +++ b/pqcli/ui/curses/views/game_view/quest_book_window.py @@ -21,7 +21,7 @@ class QuestBookWindow(Focusable, ListBoxProgressBarWindow): "change", self._sync_position ) - self._sync() + self.sync() def stop(self) -> None: super().stop() @@ -40,7 +40,7 @@ class QuestBookWindow(Focusable, ListBoxProgressBarWindow): self._list_box.scroll_page_down() self._render() - def _sync(self) -> None: + def sync(self) -> None: self._sync_quests() self._sync_position() diff --git a/pqcli/ui/curses/views/game_view/spell_book_window.py b/pqcli/ui/curses/views/game_view/spell_book_window.py index a968191..db4275f 100644 --- a/pqcli/ui/curses/views/game_view/spell_book_window.py +++ b/pqcli/ui/curses/views/game_view/spell_book_window.py @@ -20,7 +20,7 @@ class SpellBookWindow(Focusable, WindowWrapper): self._player.spell_book.connect("add", self._sync_spell_add) self._player.spell_book.connect("change", self._sync_spell_change) - self._sync() + self.sync() def stop(self) -> None: super().stop() @@ -37,7 +37,7 @@ class SpellBookWindow(Focusable, WindowWrapper): self._data_table.scroll_page_down() self._render() - def _sync(self) -> None: + def sync(self) -> None: self._data_table.clear() for spell in self._player.spell_book: self._data_table.add(spell.name, to_roman(spell.level)) diff --git a/pqcli/ui/curses/views/game_view/task_progress_window.py b/pqcli/ui/curses/views/game_view/task_progress_window.py index 5c48d52..37af9ef 100644 --- a/pqcli/ui/curses/views/game_view/task_progress_window.py +++ b/pqcli/ui/curses/views/game_view/task_progress_window.py @@ -24,8 +24,7 @@ class TaskProgressWindow(Focusable, WindowWrapper): self._player.connect("new_task", self._sync_task_name) self._player.task_bar.connect("change", self._sync_position) - self._sync_task_name() - self._sync_position() + self.sync() def stop(self) -> None: super().stop() @@ -36,6 +35,10 @@ class TaskProgressWindow(Focusable, WindowWrapper): self._player.disconnect("new_task", self._sync_task_name) self._player.task_bar.disconnect("change", self._sync_position) + def sync(self) -> None: + self._sync_task_name() + self._sync_position() + def _sync_task_name(self) -> None: self._desc_win.set_text( f"{self._player.task.description}..." if self._player.task else "?"