made scrolling of chat log possible
This commit is contained in:
parent
f17b4e2f86
commit
4750ef3270
|
@ -121,6 +121,9 @@ class Display:
|
||||||
def addMessage(self, message):
|
def addMessage(self, message):
|
||||||
self.getWidget("msg").addMessage(message)
|
self.getWidget("msg").addMessage(message)
|
||||||
|
|
||||||
|
def scrollBack(self, amount, relative=True):
|
||||||
|
self.getWidget("msg").scroll(amount, relative)
|
||||||
|
|
||||||
def getChar(self, sprite):
|
def getChar(self, sprite):
|
||||||
"""This returns the character belonging to some spritename. This does not read a character"""
|
"""This returns the character belonging to some spritename. This does not read a character"""
|
||||||
return self.characters.get(sprite, self.defaultChar)
|
return self.characters.get(sprite, self.defaultChar)
|
||||||
|
|
|
@ -8,24 +8,50 @@ class MessagePad():
|
||||||
self.changed = False
|
self.changed = False
|
||||||
self.messages = []
|
self.messages = []
|
||||||
self.widget = None
|
self.widget = None
|
||||||
|
self.scrolledBack = 0
|
||||||
|
|
||||||
def setWidget(self, widget):
|
def setWidget(self, widget):
|
||||||
self.widget = widget
|
self.widget = widget
|
||||||
|
|
||||||
def addMessage(self, message):
|
def addMessage(self, message):
|
||||||
self.messages.append(message)
|
self.messages.append(message)
|
||||||
|
if self.scrolledBack:
|
||||||
|
self.scrolledBack += 1
|
||||||
self.widget.change()
|
self.widget.change()
|
||||||
|
|
||||||
|
def scroll(self, amount, relative=True):
|
||||||
|
if relative:
|
||||||
|
self.scrolledBack += amount
|
||||||
|
else:
|
||||||
|
self.scrolledBack = amount
|
||||||
|
self.scrolledBack = max(self.scrolledBack, 0)
|
||||||
|
self.widget.update()
|
||||||
|
self.widget.doUpdate()
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
win = self.widget.getWin()
|
win = self.widget.getWin()
|
||||||
width, height = win.getSize()
|
width, height = win.getSize()
|
||||||
if height < 1:
|
if height < 1:
|
||||||
return
|
return
|
||||||
lines = []
|
lines = []
|
||||||
for message in self.messages:
|
messages = self.messages
|
||||||
|
for message in messages:
|
||||||
lines += textwrap.wrap(message, width)
|
lines += textwrap.wrap(message, width)
|
||||||
|
self.scrolledBack = max(min(self.scrolledBack, len(lines)-height), 0)
|
||||||
|
moreDown = False
|
||||||
|
if self.scrolledBack > 0:
|
||||||
|
lines = lines[:-self.scrolledBack]
|
||||||
|
moreDown = True
|
||||||
|
moreUp = False
|
||||||
if len(lines) > height:
|
if len(lines) > height:
|
||||||
|
moreUp = True
|
||||||
lines = lines[len(lines)-height:]
|
lines = lines[len(lines)-height:]
|
||||||
|
elif len(lines) < height:
|
||||||
|
lines = (height-len(lines)) * [""] + lines
|
||||||
win.erase()
|
win.erase()
|
||||||
win.addLine((0,0),'\n'.join(lines))
|
win.addLine((0,0),'\n'.join(lines))
|
||||||
|
if moreUp:
|
||||||
|
win.addLine((width-1, 0), '-')
|
||||||
|
if moreDown:
|
||||||
|
win.addLine((width-1, height-1), '+')
|
||||||
win.noutrefresh()
|
win.noutrefresh()
|
||||||
|
|
|
@ -14,3 +14,6 @@
|
||||||
|
|
||||||
(defmacro selectorvalue [name]
|
(defmacro selectorvalue [name]
|
||||||
`(.getValue (selector ~name)))
|
`(.getValue (selector ~name)))
|
||||||
|
|
||||||
|
(defmacro log [text]
|
||||||
|
`(self.client.log ~text))
|
||||||
|
|
|
@ -7,6 +7,10 @@
|
||||||
"KEY_DOWN" (inp ["move" "south"])
|
"KEY_DOWN" (inp ["move" "south"])
|
||||||
"KEY_RIGHT" (inp ["move" "east"])
|
"KEY_RIGHT" (inp ["move" "east"])
|
||||||
"KEY_LEFT" (inp ["move" "west"])
|
"KEY_LEFT" (inp ["move" "west"])
|
||||||
|
"k" (inp ["move" "north"])
|
||||||
|
"j" (inp ["move" "south"])
|
||||||
|
"l" (inp ["move" "east"])
|
||||||
|
"h" (inp ["move" "west"])
|
||||||
"e" (inp ["take" (selectorvalue "ground")])
|
"e" (inp ["take" (selectorvalue "ground")])
|
||||||
"q" (inp ["drop" (selectorvalue "inventory")])
|
"q" (inp ["drop" (selectorvalue "inventory")])
|
||||||
"E" (inp ["use" (selectorvalue "inventory")])
|
"E" (inp ["use" (selectorvalue "inventory")])
|
||||||
|
@ -23,6 +27,8 @@
|
||||||
(inp ["attack" "west"])])
|
(inp ["attack" "west"])])
|
||||||
"t" (self.parseMessage (self.display.getString))
|
"t" (self.parseMessage (self.display.getString))
|
||||||
"KEY_ENTER" (self.parseMessage (self.display.getString))
|
"KEY_ENTER" (self.parseMessage (self.display.getString))
|
||||||
|
"KEY_PPAGE" (self.display.scrollBack 1)
|
||||||
|
"KEY_NPAGE" (self.display.scrollBack -1)
|
||||||
"help" "\
|
"help" "\
|
||||||
Controls:
|
Controls:
|
||||||
wasd or arrows:
|
wasd or arrows:
|
||||||
|
|
Loading…
Reference in New Issue