summaryrefslogtreecommitdiff
path: root/asciifarmclient
diff options
context:
space:
mode:
Diffstat (limited to 'asciifarmclient')
-rw-r--r--asciifarmclient/display.py11
-rw-r--r--asciifarmclient/main.py26
-rw-r--r--asciifarmclient/parseargs.py3
3 files changed, 19 insertions, 21 deletions
diff --git a/asciifarmclient/display.py b/asciifarmclient/display.py
index 05b4733..2b42142 100644
--- a/asciifarmclient/display.py
+++ b/asciifarmclient/display.py
@@ -2,10 +2,8 @@
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 ratuil.layout import Layout
from .listselector import ListSelector
@@ -15,18 +13,17 @@ ALPHABET = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ab
class Display:
- def __init__(self, charmap, ratuil_args={}):
+ def __init__(self, screen, charmap, ratuil_args={}):
+ self.screen = screen
self.charmap = charmap
fname = os.path.join(os.path.dirname(__file__), "layout.xml")
- self.layout = Layout.from_xml_file(fname)
+ self.layout = Layout.from_xml_file(screen, fname)
self.layout.get("field").set_char_size(self.charmap.character_width)
- self.screen = Screen(**ratuil_args)
self.screen.clear()
- self.layout.set_target(self.screen)
self.layout.update()
# temporary, until these have a better place
diff --git a/asciifarmclient/main.py b/asciifarmclient/main.py
index e8cd793..38d4934 100644
--- a/asciifarmclient/main.py
+++ b/asciifarmclient/main.py
@@ -3,8 +3,6 @@
import json
import sys
-import termios
-import tty
import signal
import getpass
import hashlib
@@ -14,13 +12,20 @@ from .connection import Connection
from .gameclient import Client
from .display import Display
from .parseargs import parse_args
-from ratuil.screen import Screen
from asciifarmclient.common import messages
def main(argv=None):
- (name, socketType, address, keybindings, characters, colours, logfile, ratuil_args) = parse_args(argv)
+ (name, socketType, address, keybindings, characters, colours, logfile, ratuil_screen, ratuil_args) = parse_args(argv)
+ if ratuil_screen == "ansibuffered":
+ from ratuil.bufferedscreen import Screen
+ elif ratuil_screen == "ansi":
+ from ratuil.ansiscreen import Screen
+ elif ratuil_screen == "curses":
+ from ratuil.cursedscreen import Screen
+ else:
+ raise ValueError("Invalid ratuil screen selected")
connection = Connection(socketType)
try:
@@ -35,16 +40,12 @@ def main(argv=None):
closeMessage = None
#os.environ.setdefault("ESCDELAY", "25")
-
- fd = sys.stdin.fileno()
- oldterm = termios.tcgetattr(fd)
+ screen = Screen(**ratuil_args)
try:
-
- tty.setraw(sys.stdin)
- Screen.default.hide_cursor()
+ screen.initialize_terminal()
- display = Display(characters, ratuil_args)
+ display = Display(screen, characters, ratuil_args)
client = Client(display, name, connection, keybindings, logfile)
signal.signal(signal.SIGWINCH, client.onSigwinch)
try:
@@ -58,8 +59,7 @@ def main(argv=None):
closeMessage = client.closeMessage
finally:
## Set everything back to normal
- termios.tcsetattr(fd, termios.TCSADRAIN, oldterm)
- Screen.default.finalize()
+ screen.finalize_terminal()
if error is not None:
diff --git a/asciifarmclient/parseargs.py b/asciifarmclient/parseargs.py
index 2ab56ab..133c477 100644
--- a/asciifarmclient/parseargs.py
+++ b/asciifarmclient/parseargs.py
@@ -31,6 +31,7 @@ def parse_args(argv):
parser.add_argument('-o', '--logfile', help='All game messages will be written to this file.', default=None)
parser.add_argument('--reset-style', help='Reset the style when it changes. Useful on some terminals', action="store_true")
parser.add_argument('--blink-bright-background', help='Use blink attribute to make background brighter. Useful for terminals that don\'t have bright backgrounds usually. Implies --reset-style', action="store_true")
+ parser.add_argument('--ratuil-screen', help='The drawing backend that ratuil uses', choices=["curses", "ansi", "ansibuffered"], default="curses")
colourGroup = parser.add_mutually_exclusive_group()
colourGroup.add_argument('-l', '--colours', '--colors', help='enable colours! :)', action="store_true")
@@ -65,4 +66,4 @@ def parse_args(argv):
else:
name = username
- return (name, args.socket, address, keybindings, charmap, colours, args.logfile, {"always_reset": args.reset_style, "blink_bright_background": args.blink_bright_background})
+ return (name, args.socket, address, keybindings, charmap, colours, args.logfile, args.ratuil_screen, {"always_reset": args.reset_style, "blink_bright_background": args.blink_bright_background})