From 3cd8036e3b49958eb53cb19df4423c1e75e2f44b Mon Sep 17 00:00:00 2001 From: troido Date: Wed, 18 Sep 2019 12:19:15 +0200 Subject: changed directory structure --- asciifarm/client/display.py | 166 ++++++++++++++++++++++++++++++++ asciifarm/client/layout.xml | 40 ++++++++ asciifarm/client/main.py | 2 +- asciifarm/client/newdisplay/__init__.py | 0 asciifarm/client/newdisplay/display.py | 166 -------------------------------- asciifarm/client/newdisplay/layout.xml | 40 -------- 6 files changed, 207 insertions(+), 207 deletions(-) create mode 100644 asciifarm/client/display.py create mode 100644 asciifarm/client/layout.xml delete mode 100644 asciifarm/client/newdisplay/__init__.py delete mode 100644 asciifarm/client/newdisplay/display.py delete mode 100644 asciifarm/client/newdisplay/layout.xml diff --git a/asciifarm/client/display.py b/asciifarm/client/display.py new file mode 100644 index 0000000..13e4f6a --- /dev/null +++ b/asciifarm/client/display.py @@ -0,0 +1,166 @@ + + + +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/layout.xml b/asciifarm/client/layout.xml new file mode 100644 index 0000000..78337dc --- /dev/null +++ b/asciifarm/client/layout.xml @@ -0,0 +1,40 @@ + + + + + + + + Inventory: + + milk + eggs + bread + + + + Equipment: + + cotton underwear + cotton shirt + jeans + friendship bracelet + + + + Ground: + + concrete + + + + + + + hello + + Welcome to asciifarm + + + + diff --git a/asciifarm/client/main.py b/asciifarm/client/main.py index 58db26f..d720477 100644 --- a/asciifarm/client/main.py +++ b/asciifarm/client/main.py @@ -10,7 +10,7 @@ import signal from .connection import Connection from .gameclient import Client -from .newdisplay.display import Display +from .display import Display from .parseargs import parse_args from ratuil.screen import Screen diff --git a/asciifarm/client/newdisplay/__init__.py b/asciifarm/client/newdisplay/__init__.py deleted file mode 100644 index e69de29..0000000 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 @@ - - - - - - - - Inventory: - - milk - eggs - bread - - - - Equipment: - - cotton underwear - cotton shirt - jeans - friendship bracelet - - - - Ground: - - concrete - - - - - - - hello - - Welcome to asciifarm - - - - -- cgit