#---------------------------------------------------------------------- # poodirect.py JJS 8/15/97 # # This module serves as a main program for poo.py, # and connects the engine directly to the terminal. #---------------------------------------------------------------------- #---------------------------------------------------------------------- import poo import sys import string term = sys.stdout def AskYesNo(prompt, default='Y'): while 1: ans = raw_input(prompt + ' [' + default + '] ') if len(ans) > 1: ans = ans[0] if ans == '': ans = default if ans == 'y' or ans == 'Y': return 1 if ans == 'n' or ans == 'N': return 0 print ("Please enter Y or N.") def startup(): # check for poo.dat try: file = open('poo.dat', 'r') file.close() good = 1 except: good = 0 if good: print "Loading database..." poo.initialize() # load file else: print "Cannot open data file 'poo.dat'." if not AskYesNo("Create new database from scratch?"): return 0 poo.initialize(1) return 1 def login(name): matches = filter(lambda x,a=name: x.__isuser and x.name==a, \ poo.gObjlist.values()) if not matches: print "User", name, "not found." return 0 user = matches[0] user.Login(term) return user def play(): # show login message try: f = open('connect.txt','r') for line in f.readlines(): print line[:-1] except: pass name = raw_input("Name: ") print "Password: (not needed in direct mode)" user = login(name) if not user: return done = 0 while not done: sys.stdout = term cmd = raw_input('\n') print if cmd == "quit" or cmd == "@quit": done = 1 elif cmd == "savedb": poo.gSave() else: user.handleMsg(cmd) for i in range(0,10): poo.gUpdate() try: user.Logout() except: print "Problem calling user.Logout()" sys.stdout = term if AskYesNo("Save database?"): poo.gSave() def readFile(): name = raw_input("Login Name: ") user = login(name) if not user: return fname = raw_input("Filename: ") file = open(fname, 'r') lines = file.readlines() for i in range(0,len(lines)): print fname + ">" + lines[i] user.handleMsg(string.rstrip(lines[i])) for i in range(0,5): poo.gUpdate() try: user.Logout() except: print "Problem calling user.Logout()" sys.stdout = term if AskYesNo("Save database?"): poo.gSave() def editHelp(): import poohelp poohelp.hLoad() poohelp.popDB() if AskYesNo("Save help database?"): poohelp.hSave() def setTreasury(): instr = raw_input("Enter Treasury amount [" \ + str(poo.gTreasury) + "]: ") if instr: poo.gTreasury = string.atoi(instr) if AskYesNo("Save database?"): poo.gSave() def menu(): done = 0 while not done: print print "1. Enter POO" print "2. Edit help database" print "3. Read commands from a file" print "4. Set the treasury amount" print "0. Quit" print choice = input(">") if choice == 1: play() elif choice == 2: editHelp() elif choice == 3: readFile() elif choice == 4: setTreasury() elif choice == 0: done=1 if startup(): menu()