realtime
This commit is contained in:
parent
e567f2d75b
commit
096fd91378
20
rougelike.py
20
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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user