From 096fd913788cae8e9f6884497c768c84d4641926 Mon Sep 17 00:00:00 2001 From: whiteline Date: Thu, 29 Feb 2024 18:08:47 +0100 Subject: [PATCH] realtime --- rougelike.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/rougelike.py b/rougelike.py index 328dda7..74210b0 100755 --- a/rougelike.py +++ b/rougelike.py @@ -3,6 +3,7 @@ import collections as cl import networkx as nx import curses as c import random +from time import sleep from grid import Grid, bresenhams from fov import fieldOfView @@ -58,6 +59,7 @@ class Player(Behaviour): self.msgbuffer = cl.deque([], 200) self.messaged = False self.messaged_last = False + self.realtime = False def message(self, msg): if len(self.msgbuffer) > 0 and msg == self.msgbuffer[0][1] and self.messaged_last: @@ -95,7 +97,15 @@ class Player(Behaviour): self.world.window.refresh() # this is the one gameplay input point. - key = self.world.window.getkey() + if self.realtime: + sleep(0.2) + try: + key = self.world.window.getkey() + except c.error: + key = "" + c.flushinp() + else: + key = self.world.window.getkey() match key: case 'w': if not self.body.move((0, -1)): @@ -121,6 +131,13 @@ class Player(Behaviour): self.message("You see nothing here to close.") case 'q': self.world.run = False + case 'r': + if self.realtime: + self.realtime = False + self.world.window.nodelay(False) + else: + self.realtime = True + self.world.window.nodelay(True) # case _: self.world.message(key) class Drunkard(Behaviour): @@ -236,6 +253,7 @@ door_open = Tile(',', "open door", "an unremarkable door", solid=False, transpar w = c.initscr() c.curs_set(0) c.raw() +c.echo(False) wld = World(w, 80, 23, floor)