diff options
Diffstat (limited to 'asciifarm/client/newdisplay')
| -rw-r--r-- | asciifarm/client/newdisplay/__init__.py | 0 | ||||
| -rw-r--r-- | asciifarm/client/newdisplay/display.py | 166 | ||||
| -rw-r--r-- | asciifarm/client/newdisplay/layout.xml | 40 |
3 files changed, 0 insertions, 206 deletions
diff --git a/asciifarm/client/newdisplay/__init__.py b/asciifarm/client/newdisplay/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/asciifarm/client/newdisplay/__init__.py +++ /dev/null diff --git a/asciifarm/client/newdisplay/display.py b/asciifarm/client/newdisplay/display.py deleted file mode 100644 index 8a578fa..0000000 --- a/asciifarm/client/newdisplay/display.py +++ /dev/null @@ -1,166 +0,0 @@ - - - -import os -from ratuil.layout import Layout -from ratuil.bufferedscreen import BufferedScreen as Screen -#from ratuil.screen import Screen -from ratuil.textstyle import TextStyle -from asciifarm.common.utils import get -from ..listselector import ListSelector - - -SIDEWIDTH = 20 - -ALPHABET = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" - -class Display: - - def __init__(self, charMap): - - self.characters = {} - - def parseSprite(sprite): - if isinstance(sprite, str): - return (sprite, None, None) - char = get(sprite, 0, " ") - fg = get(sprite, 1) - bg = get(sprite, 2) - return (char, fg, bg) - for name, sprite in charMap["mapping"].items(): - vals = parseSprite(sprite) - if vals: - self.characters[name] = vals - - for name, colours in charMap.get("writable", {}).items(): - fg = get(colours, 0) - bg = get(colours, 1) - for i in range(min(len(ALPHABET), len(charMap.get("alphabet", [])))): - self.characters[name + '-' + ALPHABET[i]] = (charMap["alphabet"][i], fg, bg) - - self.defaultChar = parseSprite(charMap.get("default", "?")) - - self.messageColours = charMap.get("msgcolours", {}) - - fname = os.path.join(os.path.dirname(__file__), "layout.xml") - with open(fname) as f: - layouttext = f.read() - - self.layout = Layout(layouttext) - self.layout.get("field").set_char_size(charMap.get("charwidth", 1)) - - self.screen = Screen() - self.screen.clear() - - self.layout.set_target(self.screen) - self.layout.update() - - - - # temporary, until these have a better place - self.inventory = ListSelector(self.getWidget("inventory")) - self.equipment = ListSelector(self.getWidget("equipment")) - self.ground = ListSelector(self.getWidget("ground")) - self.switch = ListSelector(self.getWidget("switchtitles")) - - self.switch.setItems(["inventory", "equipment", "ground"]) - self.menus = { - "inventory": self.inventory, - "equipment": self.equipment, - "ground": self.ground - } - - self.layout.get("switch").select(0) - - - def getWidget(self, name): - return self.layout.get(name) - - def resizeField(self, size): - self.getWidget("field").set_size(*size) - - def drawFieldCells(self, cells): - field = self.getWidget("field") - for cell in cells: - (x, y), spriteNames = cell - if not len(spriteNames): - char, fg, bg = self.getChar(' ') - else: - char, fg, bg = self.getChar(spriteNames[0]) - for spriteName in spriteNames[1:]: - if bg is not None: - break - _char, _fg, bg = self.getChar(spriteName) - field.change_cell(x, y, char, TextStyle(fg, bg)) - - - def setFieldCenter(self, pos): - self.getWidget("field").set_center(*pos) - - def setHealth(self, health, maxHealth): - if health is None: - health = 0 - if maxHealth is None: - maxHealth = 0 - self.getWidget("health").set_total(maxHealth) - self.getWidget("health").set_filled(health) - - - def showInfo(self, infostring): - self.getWidget("info").set_text(infostring) - - def selectMenu(self, *args, **kwargs): - self.switch.select(*args, **kwargs) - self.layout.get("switch").select(self.getSelectedMenu()) - - def getSelectedMenu(self): - return self.switch.getSelectedItem() - - def getSelectedItem(self, menu=None): - return self._getMenu(menu).getSelected() - - def selectItem(self, menu=None, *args, **kwargs): - self._getMenu(menu).select(*args, **kwargs) - - def _getMenu(self, name=None): - if name is None: - name = self.getSelectedMenu() - name = name.casefold() - return self.menus[name] - - def setInventory(self, items): - self.getWidget("inventory").set_items(items) - - - def setEquipment(self, slots): - self.getWidget("equipment").set_items( - sorted([ - slot + ": " + (item if item else "") - for slot, item in slots.items() - ]) - ) - - def setGround(self, items): - self.getWidget("ground").set_items(items) - - - def addMessage(self, message, type): - self.getWidget("msg").add_message(message, TextStyle(*self.messageColours.get(type, (7,0)))) - - def scrollBack(self, amount, relative=True): - self.getWidget("msg").scroll(amount, relative) - - def setInputString(self, string, cursor): - self.getWidget("textinput").set_text(string, cursor) - - def update(self): - self.layout.update() - self.screen.update() - - def getChar(self, sprite): - """This returns the character belonging to some spritename. This does not read a character""" - return self.characters.get(sprite, self.defaultChar) - - def update_size(self): - self.screen.reset() - diff --git a/asciifarm/client/newdisplay/layout.xml b/asciifarm/client/newdisplay/layout.xml deleted file mode 100644 index 78337dc..0000000 --- a/asciifarm/client/newdisplay/layout.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0"?> -<hbox> - <vbox width="20" align="right"> - <bar id="health" height="2" full-char="#" empty-char="_" full-style="fg:2; bg:2" empty-style="fg:1; bg: 1;"></bar> - <listing id="switchtitles" height="0"></listing> - <switchbox id="switch" height="50%"> - <vbox key="inventory"> - <textbox height="1">Inventory:</textbox> - <listing id="inventory"> - milk - eggs - bread - </listing> - </vbox> - <vbox key="equipment"> - <textbox height="1">Equipment:</textbox> - <listing id="equipment"> - cotton underwear - cotton shirt - jeans - friendship bracelet - </listing> - </vbox> - <vbox key="ground"> - <textbox height="1">Ground:</textbox> - <listing id="ground"> - concrete - </listing> - </vbox> - </switchbox> - <textbox id="info"></textbox> - </vbox> - <vbox> - <textinput id="textinput" align="bottom" height="1">hello</textinput> - <log id="msg" align="bottom" height="20%%"> - Welcome to asciifarm - </log> - <field id="field" char-size="1"></field> - </vbox> -</hbox> |
