This commit is contained in:
whiteline 2024-02-29 17:10:48 +01:00
parent d5d80345fc
commit e567f2d75b

View File

@ -32,7 +32,7 @@ class World(Grid):
self.bodies = [] self.bodies = []
self.behavior = [] self.behavior = []
class Spirit(): class Behaviour():
def __init__(self, name): def __init__(self, name):
self.name = name self.name = name
self.body = None self.body = None
@ -52,15 +52,16 @@ class Spirit():
def message(self, msg): def message(self, msg):
pass pass
class Player(Spirit): class Player(Behaviour):
def __init__(self, name): def __init__(self, name):
super().__init__(name) super().__init__(name)
self.msgbuffer = cl.deque([], 200) self.msgbuffer = cl.deque([], 200)
self.messaged = False self.messaged = False
self.messaged_last = False
def message(self, msg): def message(self, msg):
if len(self.msgbuffer) > 0 and msg == self.msgbuffer[0][1]: if len(self.msgbuffer) > 0 and msg == self.msgbuffer[0][1] and self.messaged_last:
self.msgbuffer.appendleft((self.msgbuffer.pop()[0] + 1, msg)) self.msgbuffer.appendleft((self.msgbuffer.popleft()[0] + 1, msg))
else: else:
self.msgbuffer.appendleft((1, msg)) self.msgbuffer.appendleft((1, msg))
self.messaged = True self.messaged = True
@ -73,7 +74,7 @@ class Player(Spirit):
self.world.window.erase() self.world.window.erase()
# draw interface # draw interface you
for x in range(0, self.world.width): for x in range(0, self.world.width):
for y in range(0, self.world.height): for y in range(0, self.world.height):
if visibility.get(x, y): if visibility.get(x, y):
@ -81,12 +82,15 @@ class Player(Spirit):
for body in self.world.bodies: for body in self.world.bodies:
if visibility.get(body.x, body.y): if visibility.get(body.x, body.y):
body.draw() body.draw()
if not len(self.msgbuffer) == 0 and self.messaged: if self.messaged:
if self.msgbuffer[0][0] == 1: if self.msgbuffer[0][0] == 1:
self.world.window.addstr(self.world.height + 1, 0, self.msgbuffer[0][1]) self.world.window.addstr(self.world.height + 1, 0, self.msgbuffer[0][1])
else: else:
self.world.window.addstr(self.world.height + 1, 0, self.msgbuffer[0][1] + " (x" + str(self.msgbuffer[0][0]) + ")") self.world.window.addstr(self.world.height + 1, 0, self.msgbuffer[0][1] + " (x" + str(self.msgbuffer[0][0]) + ")")
self.messaged = False self.messaged = False
self.messaged_last = True
else:
self.messaged_last = False
self.world.window.refresh() self.world.window.refresh()
@ -119,7 +123,7 @@ class Player(Spirit):
self.world.run = False self.world.run = False
# case _: self.world.message(key) # case _: self.world.message(key)
class Drunkard(Spirit): class Drunkard(Behaviour):
def behave(self): def behave(self):
while True: while True:
@ -190,6 +194,33 @@ class Body():
def draw(self): def draw(self):
self.world.window.addch(self.y, self.x, self.appearence) self.world.window.addch(self.y, self.x, self.appearence)
class Conversation(list):
def __init__(self, title, description):
self.title = title
self.description = description
def run(self):
# rendering code goes here
pass
class Response():
def __init__(self, name, text, target=None, prerequisite=None, function=None):
self.name = name
self.text = text
self.target = target
self.function = function
def respond(self, title, description):
# rendering code goes here
if function:
function()
if target:
target.run()
bum_conversation = Conversation("Conversing With a Drunkard", "A foul-smelling drunkard waves to and fro, trying to form words. His tattered clothes are brown with filth.")
bum_conversation.append(Response("Hello? Is everything all right?", "Hargl... hurgl...", target=bum_conversation))
bum_conversation.append(Response("I will take my leave, good sir.", "..."))
p = Player("you") p = Player("you")
pb = Body("yourself", '@', "an unremarkable person", c.COLOR_WHITE) pb = Body("yourself", '@', "an unremarkable person", c.COLOR_WHITE)