diff options
| author | troido <troido@protonmail.com> | 2020-03-06 11:26:59 +0100 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-03-06 11:26:59 +0100 |
| commit | dd07ff4d686f07cdc9736627dd0ef099ef5e4e4f (patch) | |
| tree | f43310b3779a95efd74a40ba8139cf146ad49051 /asciifarm/client/display.py | |
| parent | c9366616079240cd7ee3d243c9f6897d40b4267d (diff) | |
new directory structure for the separate client repo
Diffstat (limited to 'asciifarm/client/display.py')
| -rw-r--r-- | asciifarm/client/display.py | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/asciifarm/client/display.py b/asciifarm/client/display.py deleted file mode 100644 index edd5acb..0000000 --- a/asciifarm/client/display.py +++ /dev/null @@ -1,174 +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") - self.layout = Layout.from_xml_file(fname) - 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.inventory._debug_name = "inventory" - self.equipment = ListSelector(self.getWidget("equipment")) - self.equipment._debug_name = "equipment" - self.ground = ListSelector(self.getWidget("ground")) - self.ground._debug_name = "ground" - self.switch = ListSelector(self.getWidget("switchtitles")) - self.switch._debug_name = "switch" - - 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) - self.getWidget("fieldbackground").change() - - 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) - self.getWidget("healthtitle").format({"filled": health, "total":maxHealth}) - - - 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.inventory.setItems(items) - - - def setEquipment(self, slots): - self.equipment.setItems([ - slot + ": " + (item if item else "") - for slot, item in slots - ]) - - def setGround(self, items): - self.ground.setItems(items) - - - def addMessage(self, message, msgtype=None): - if msgtype is not None: - style = TextStyle(*self.messageColours.get(msgtype, (7,0))) - else: - style = None - self.getWidget("msg").add_message(message, style) - - def log(self, message): - self.addMessage(str(message)) - - 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() - |
