summaryrefslogtreecommitdiff
path: root/asciifarm/client/gameclient.py
diff options
context:
space:
mode:
Diffstat (limited to 'asciifarm/client/gameclient.py')
-rw-r--r--asciifarm/client/gameclient.py51
1 files changed, 44 insertions, 7 deletions
diff --git a/asciifarm/client/gameclient.py b/asciifarm/client/gameclient.py
index 2bd5420..46c8553 100644
--- a/asciifarm/client/gameclient.py
+++ b/asciifarm/client/gameclient.py
@@ -1,4 +1,4 @@
-#! /usr/bin/python3
+
import os
import sys
@@ -10,13 +10,16 @@ import argparse
import string
from queue import Queue
+import ratuil.inputs
from .inputhandler import InputHandler
+from .listselector import ListSelector
+from .switchselector import SwitchSelector
class Client:
- def __init__(self, stdscr, display, name, connection, keybindings, logFile=None):
- self.stdscr = stdscr
+ def __init__(self, display, name, connection, keybindings, logFile=None):
+ #self.stdscr = stdscr
self.display = display
self.name = name
self.keepalive = True
@@ -24,6 +27,17 @@ class Client:
self.logFile = logFile
self.closeMessage = None
+ # temporary, until these have a better place
+ self.inventory = ListSelector(self.display.getWidget("inventory"))
+ self.equipment = ListSelector(self.display.getWidget("equipment"))
+ self.ground = ListSelector(self.display.getWidget("ground"))
+ self.switch = SwitchSelector(self.display.getWidget("switch"))
+ #self.switch.setItems([
+ #(self.inventory, None, "Inventory"),
+ #(self.equipment, None, "Equipment"),
+ #(self.ground, None, "Ground")
+ #])
+
self.inputHandler = InputHandler(self, keybindings["actions"])
self.controlsString = keybindings.get("help", "")
@@ -53,9 +67,13 @@ class Client:
self.queue.put(("error", error))
def getInput(self):
+ #try:
while True:
- key = self.stdscr.getch()
+ key = ratuil.inputs.get_key()
+ #key = self.stdscr.getch()
self.queue.put(("input", key))
+ #except Exception as e:
+ #self.queue.put(("error", e))
def close(self, msg=None):
self.keepalive = False
@@ -107,11 +125,23 @@ class Client:
if maxHealth is None:
self.log("You have died. Restart the client to respawn")
if msgType == "inventory":
- self.display.setInventory(msg[1])
+ self.inventory.setItems(msg[1])
+ #invbox = self.display.getWidget("inventory")
+ #invbox.setInventory(self.inventory.items)
+ #invbox.select(self.inventory.selector)
+ #self.display.setInventory(msg[1])
if msgType == "equipment":
- self.display.setEquipment(msg[1])
+ #self.display.setEquipment(msg[1])
+ self.equipment.setItems(msg[1])
+ #eqbox = self.display.getWidget("equipment")
+ #eqbox.setInventory(self.inventory.items)
+ #eqbox.select(self.equipment.selector)
if msgType == "ground":
- self.display.setGround(msg[1])
+ #self.display.setGround(msg[1])
+ self.ground.setItems(msg[1])
+ #grbox = self.display.getWidget("ground")
+ #grbox.setInventory(self.ground.items)
+ #grbox.select(self.ground.selector)
if msgType == "message":
self.log(*msg[1:])
if msgType == "options":
@@ -138,12 +168,19 @@ class Client:
if action[0] == "message":
self.update(action[1])
elif action[0] == "input":
+ if action[1] == "^C":
+ raise KeyboardInterrupt
self.inputHandler.onInput(action[1])
elif action[0] == "error":
raise action[1]
+ elif action[0] == "sigwinch":
+ self.display.update_size()
else:
raise Exception("invalid action in queue")
+ def onSigwinch(self, signum, frame):
+ self.queue.put(("sigwinch", (signum, frame)))
+