Allow remote mode to load from client-side story files

(cherry picked from commit a1345263df)
This commit is contained in:
henk717
2021-11-05 02:30:20 +01:00
committed by Gnome Ann
parent 9513240dfb
commit bc0f9c8032
3 changed files with 34 additions and 11 deletions

View File

@ -645,6 +645,8 @@ def get_message(msg):
savetofile()
elif(not vars.remote and msg['cmd'] == 'loadfromfile'):
loadfromfile()
elif(msg['cmd'] == 'loadfromstring'):
loadRequest(json.loads(msg['data']), filename=msg['filename'])
elif(not vars.remote and msg['cmd'] == 'import'):
importRequest()
elif(msg['cmd'] == 'newgame'):
@ -2094,14 +2096,21 @@ def loadfromfile():
#==================================================================#
# Load a stored story from a file
#==================================================================#
def loadRequest(loadpath):
def loadRequest(loadpath, filename=None):
if(loadpath):
# Leave Edit/Memory mode before continuing
exitModes()
# Read file contents into JSON object
file = open(loadpath, "r")
js = json.load(file)
if(isinstance(loadpath, str)):
with open(loadpath, "r") as file:
js = json.load(file)
if(filename is None):
filename = path.basename(loadpath)
else:
js = loadpath
if(filename is None):
filename = "untitled.json"
# Copy file contents to vars
vars.gamestarted = js["gamestarted"]
@ -2147,8 +2156,6 @@ def loadRequest(loadpath):
})
num += 1
file.close()
# Save path for save button
vars.savedir = loadpath
@ -2156,10 +2163,10 @@ def loadRequest(loadpath):
vars.loadselect = ""
# Refresh game screen
filename = path.basename(loadpath)
_filename = filename
if(filename.endswith('.json')):
filename = filename[:-5]
vars.laststory = filename
_filename = filename[:-5]
vars.laststory = _filename
emit('from_server', {'cmd': 'setstoryname', 'data': vars.laststory}, broadcast=True)
sendwi()
emit('from_server', {'cmd': 'setmemory', 'data': vars.memory}, broadcast=True)
@ -2167,7 +2174,7 @@ def loadRequest(loadpath):
refresh_story()
emit('from_server', {'cmd': 'setgamestate', 'data': 'ready'}, broadcast=True)
emit('from_server', {'cmd': 'hidegenseqs', 'data': ''}, broadcast=True)
print("{0}Story loaded from {1}!{2}".format(colors.GREEN, path.basename(loadpath), colors.END))
print("{0}Story loaded from {1}!{2}".format(colors.GREEN, filename, colors.END))
#==================================================================#
# Import an AIDungon game exported with Mimi's tool