From e567f2d75bdbf99c7e6bc468ec3094050d66b728 Mon Sep 17 00:00:00 2001 From: whiteline Date: Thu, 29 Feb 2024 17:10:48 +0100 Subject: [PATCH] log --- rougelike.py | 45 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/rougelike.py b/rougelike.py index 5305a9b..328dda7 100755 --- a/rougelike.py +++ b/rougelike.py @@ -32,7 +32,7 @@ class World(Grid): self.bodies = [] self.behavior = [] -class Spirit(): +class Behaviour(): def __init__(self, name): self.name = name self.body = None @@ -52,15 +52,16 @@ class Spirit(): def message(self, msg): pass -class Player(Spirit): +class Player(Behaviour): def __init__(self, name): super().__init__(name) self.msgbuffer = cl.deque([], 200) self.messaged = False + self.messaged_last = False def message(self, msg): - if len(self.msgbuffer) > 0 and msg == self.msgbuffer[0][1]: - self.msgbuffer.appendleft((self.msgbuffer.pop()[0] + 1, msg)) + if len(self.msgbuffer) > 0 and msg == self.msgbuffer[0][1] and self.messaged_last: + self.msgbuffer.appendleft((self.msgbuffer.popleft()[0] + 1, msg)) else: self.msgbuffer.appendleft((1, msg)) self.messaged = True @@ -73,7 +74,7 @@ class Player(Spirit): self.world.window.erase() - # draw interface + # draw interface you for x in range(0, self.world.width): for y in range(0, self.world.height): if visibility.get(x, y): @@ -81,12 +82,15 @@ class Player(Spirit): for body in self.world.bodies: if visibility.get(body.x, body.y): body.draw() - if not len(self.msgbuffer) == 0 and self.messaged: + if self.messaged: if self.msgbuffer[0][0] == 1: self.world.window.addstr(self.world.height + 1, 0, self.msgbuffer[0][1]) else: self.world.window.addstr(self.world.height + 1, 0, self.msgbuffer[0][1] + " (x" + str(self.msgbuffer[0][0]) + ")") self.messaged = False + self.messaged_last = True + else: + self.messaged_last = False self.world.window.refresh() @@ -119,7 +123,7 @@ class Player(Spirit): self.world.run = False # case _: self.world.message(key) -class Drunkard(Spirit): +class Drunkard(Behaviour): def behave(self): while True: @@ -190,6 +194,33 @@ class Body(): def draw(self): 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") pb = Body("yourself", '@', "an unremarkable person", c.COLOR_WHITE)