summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortroido <troido@hotmail.com>2017-10-28 12:31:42 +0200
committertroido <troido@hotmail.com>2017-10-28 12:31:42 +0200
commita8fd6fc77a3c5af06727a68684e61c63553679a8 (patch)
treecde31f96a13907b3b5889d630667084e8dfdbcec
parent4fe76206a7b183eaf46268e9dc03916de093f3b9 (diff)
better use of __main__ and __init__
-rwxr-xr-x[-rw-r--r--]asciifarm/client/__init__.py84
-rw-r--r--[-rwxr-xr-x]asciifarm/client/__main__.py75
-rw-r--r--asciifarm/client/gameclient.py (renamed from asciifarm/client/client.py)0
-rw-r--r--asciifarm/client/start.py41
4 files changed, 102 insertions, 98 deletions
diff --git a/asciifarm/client/__init__.py b/asciifarm/client/__init__.py
index f2814d7..92e1648 100644..100755
--- a/asciifarm/client/__init__.py
+++ b/asciifarm/client/__init__.py
@@ -1,12 +1,22 @@
+#! /usr/bin/python3
-import curses
+
+import argparse
+import getpass
import json
import os
-import getpass
-import sys
-from .connection import Connection
-from .client import Client
-from .display import Display
+import os.path
+
+from .start import main as clientmain
+
+thisPath = os.path.dirname(__file__)
+farmsPath = os.path.join(thisPath, "..")
+charMapPath = os.path.join(farmsPath, "charmaps")
+keybindingsPath = os.path.join(farmsPath, "keybindings")
+
+standardCharFiles = [name[:-5] for name in os.listdir(charMapPath) if name[-5:] == ".json"]
+standardKeyFiles = [name[:-5] for name in os.listdir(keybindingsPath) if name[-5:] == ".json"]
+
defaultAdresses = {
"abstract": "asciifarm",
@@ -14,28 +24,50 @@ defaultAdresses = {
"inet": "localhost:9021",
}
-def main(name, socketType, address, keybindings, characters, colours=False):
+def main():
+
+ parser = argparse.ArgumentParser(description="The client to AsciiFarm. Run this to connect to to the server.", epilog="""
+ Gameplay information:
+ Walk around and explore the rooms.
+ Kill the goblins and plant the seeds.
+
+ ~troido""", formatter_class=argparse.RawDescriptionHelpFormatter)
+ parser.add_argument('-n', '--name', help='Your player name (must be unique!). Defaults to username', default=getpass.getuser())
+ parser.add_argument("-a", "--address", help="The address of the socket. When the socket type is 'abstract' this is just a name. When it is 'unix' this is a filename. When it is 'inet' is should be in the format 'address:port', eg 'localhost:8080'. Defaults depends on the socket type")
+ parser.add_argument("-s", "--socket", help="the socket type. 'unix' is unix domain sockets, 'abstract' is abstract unix domain sockets and 'inet' is inet sockets. ", choices=["abstract", "unix", "inet"], default="abstract")
+ parser.add_argument('-k', '--keybindings', help='The file with the keybindings. If it is either of these names: {} it will be loaded from the keybindings directory.'.format(standardKeyFiles), default="default")
+ parser.add_argument('-c', '--characters', help='The file with the character mappings for the graphics. If it is either of these names: {} it will be loaded from the charmaps directory.'.format(standardCharFiles), default="default")
- connection = Connection(socketType)
- try:
- connection.connect(address)
- except ConnectionRefusedError:
- print("ERROR: Could not connect to server.\nAre you sure that the server is running and that you're connecting to the right address?", file=sys.stderr)
- return
+ colourGroup = parser.add_mutually_exclusive_group()
+ colourGroup.add_argument('-l', '--colours', '--colors', help='enable colours! :)', action="store_true")
+ colourGroup.add_argument('-b', '--nocolours', '--nocolors', help='disable colours! :)', action="store_true")
+ args = parser.parse_args()
- caught_ctrl_c = False
+ charFile = args.characters
+ if charFile in standardCharFiles:
+ charFile = os.path.join(charMapPath, charFile + ".json")
+ with open(charFile, 'r') as cf:
+ charMap = json.load(cf)
+ keyFile = args.keybindings
+ if keyFile in standardKeyFiles:
+ keyFile = os.path.join(keybindingsPath, keyFile + ".json")
+ with open(keyFile, 'r') as kf:
+ keybindings = json.load(kf)
- def start(stdscr):
- display = Display(stdscr, characters, colours)
- client = Client(stdscr, display, name, connection, keybindings)
- nonlocal caught_ctrl_c
- try:
- client.start()
- except KeyboardInterrupt:
- caught_ctrl_c = True
- client.keepAlive = False
+ address = args.address
+ if address == None:
+ address = defaultAdresses[args.socket]
+ if args.socket == "abstract":
+ address = '\0' + address
+ elif args.socket == "inet":
+ hostname, sep, port = address.partition(':')
+ address = (hostname, int(port))
- curses.wrapper(start)
+ colours = True
+ if args.colours:
+ colours = True
+ elif args.nocolours:
+ colours = False
- if caught_ctrl_c:
- print('^C caught, goodbye!')
+ clientmain(args.name, args.socket, address, keybindings, charMap, colours)
+
diff --git a/asciifarm/client/__main__.py b/asciifarm/client/__main__.py
index 197f212..ccc3f91 100755..100644
--- a/asciifarm/client/__main__.py
+++ b/asciifarm/client/__main__.py
@@ -1,79 +1,10 @@
-#! /usr/bin/python3
+
import sys
+import client
if sys.version_info[0] < 3:
print("This game is written in python 3.\nRun 'python3 "+sys.argv[0]+"' or './"+sys.argv[0]+"'")
sys.exit(-1)
-import argparse
-import getpass
-import json
-import os
-import os.path
-
-import client
-
-thisPath = os.path.dirname(__file__)
-farmsPath = os.path.join(thisPath, "..")
-charMapPath = os.path.join(farmsPath, "charmaps")
-keybindingsPath = os.path.join(farmsPath, "keybindings")
-
-standardCharFiles = [name[:-5] for name in os.listdir(charMapPath) if name[-5:] == ".json"]
-standardKeyFiles = [name[:-5] for name in os.listdir(keybindingsPath) if name[-5:] == ".json"]
-
-
-defaultAdresses = {
- "abstract": "asciifarm",
- "unix": "asciifarm.socket",
- "inet": "localhost:9021",
- }
-
-def main():
-
- parser = argparse.ArgumentParser(description="The client to AsciiFarm. Run this to connect to to the server.", epilog="""
- Gameplay information:
- Walk around and explore the rooms.
- Kill the goblins and plant the seeds.
-
- ~troido""", formatter_class=argparse.RawDescriptionHelpFormatter)
- parser.add_argument('-n', '--name', help='Your player name (must be unique!). Defaults to username', default=getpass.getuser())
- parser.add_argument("-a", "--address", help="The address of the socket. When the socket type is 'abstract' this is just a name. When it is 'unix' this is a filename. When it is 'inet' is should be in the format 'address:port', eg 'localhost:8080'. Defaults depends on the socket type")
- parser.add_argument("-s", "--socket", help="the socket type. 'unix' is unix domain sockets, 'abstract' is abstract unix domain sockets and 'inet' is inet sockets. ", choices=["abstract", "unix", "inet"], default="abstract")
- parser.add_argument('-k', '--keybindings', help='The file with the keybindings. If it is either of these names: {} it will be loaded from the keybindings directory.'.format(standardKeyFiles), default="default")
- parser.add_argument('-c', '--characters', help='The file with the character mappings for the graphics. If it is either of these names: {} it will be loaded from the charmaps directory.'.format(standardCharFiles), default="default")
-
- colourGroup = parser.add_mutually_exclusive_group()
- colourGroup.add_argument('-l', '--colours', '--colors', help='enable colours! :)', action="store_true")
- colourGroup.add_argument('-b', '--nocolours', '--nocolors', help='disable colours! :)', action="store_true")
- args = parser.parse_args()
-
- charFile = args.characters
- if charFile in standardCharFiles:
- charFile = os.path.join(charMapPath, charFile + ".json")
- with open(charFile, 'r') as cf:
- charMap = json.load(cf)
- keyFile = args.keybindings
- if keyFile in standardKeyFiles:
- keyFile = os.path.join(keybindingsPath, keyFile + ".json")
- with open(keyFile, 'r') as kf:
- keybindings = json.load(kf)
-
- address = args.address
- if address == None:
- address = defaultAdresses[args.socket]
- if args.socket == "abstract":
- address = '\0' + address
- elif args.socket == "inet":
- hostname, sep, port = address.partition(':')
- address = (hostname, int(port))
-
- colours = True
- if args.colours:
- colours = True
- elif args.nocolours:
- colours = False
-
- client.main(args.name, args.socket, address, keybindings, charMap, colours)
-
-main()
+client.main()
diff --git a/asciifarm/client/client.py b/asciifarm/client/gameclient.py
index d6e2595..d6e2595 100644
--- a/asciifarm/client/client.py
+++ b/asciifarm/client/gameclient.py
diff --git a/asciifarm/client/start.py b/asciifarm/client/start.py
new file mode 100644
index 0000000..4084f7f
--- /dev/null
+++ b/asciifarm/client/start.py
@@ -0,0 +1,41 @@
+
+import curses
+import json
+import os
+import getpass
+import sys
+from .connection import Connection
+from .gameclient import Client
+from .display import Display
+
+defaultAdresses = {
+ "abstract": "asciifarm",
+ "unix": "asciifarm.socket",
+ "inet": "localhost:9021",
+ }
+
+def main(name, socketType, address, keybindings, characters, colours=False):
+
+ connection = Connection(socketType)
+ try:
+ connection.connect(address)
+ except ConnectionRefusedError:
+ print("ERROR: Could not connect to server.\nAre you sure that the server is running and that you're connecting to the right address?", file=sys.stderr)
+ return
+
+ caught_ctrl_c = False
+
+ def start(stdscr):
+ display = Display(stdscr, characters, colours)
+ client = Client(stdscr, display, name, connection, keybindings)
+ nonlocal caught_ctrl_c
+ try:
+ client.start()
+ except KeyboardInterrupt:
+ caught_ctrl_c = True
+ client.keepAlive = False
+
+ curses.wrapper(start)
+
+ if caught_ctrl_c:
+ print('^C caught, goodbye!')