Advertisement
Guest User

RenPy persistent editor

a guest
Jan 9th, 2014
2,315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env python2
  2. # -*- coding: utf-8 -*-
  3.  
  4. # python2 — for renpy
  5.  
  6. # Created by Anonymous
  7. # WTFPL http://wtfpl.org/
  8.  
  9. def import_renpy(renpypath):
  10.     """Let it loads its modules"""
  11.     import sys
  12.     sys.path.append(renpypath)
  13.     import renpy
  14.     import renpy.object
  15.     import renpy.game
  16.     import renpy.preferences
  17.  
  18.  
  19. def load():
  20.     global persname
  21.     global pers
  22.     import cPickle as pickle
  23.     with open(persname, "rb") as pfl:
  24.         s = pfl.read().decode("zlib")
  25.         pers = pickle.loads(s)
  26.     print("Loaded persistent data into pers variable")
  27.  
  28. def save():
  29.     global persname
  30.     global pers
  31.     import cPickle as pickle
  32.     with open(persname, "w+") as pfl:
  33.         pdata = pickle.dumps(pers)
  34.         pfl.write(pdata.encode("zlib"))
  35.         pfl.flush()
  36.     print("Saved persistent data from pers variable")
  37.  
  38. def getargs():
  39.     import argparse
  40.     parser = argparse.ArgumentParser(description="RenPy pers shell")
  41.     parser.add_argument('-ren', '--renpy-file', required = True, help = "RenPy persistent file")
  42.     parser.add_argument('-gdr', '--game-dir', required = True, help = "Game dir with RenPy subfolder")
  43.  
  44.     return parser.parse_args()
  45.  
  46. def runipython(*kvargs, **kwargs):
  47.     import inspect
  48.     for (k,v) in kwargs.items():
  49.         inspect.stack()[0][0].f_locals[k] = v
  50.     from IPython import embed
  51.     embed()
  52.  
  53. def main():
  54.     global pers
  55.     global persname
  56.     pers = None
  57.  
  58.     args = getargs()
  59.     gdr = args.game_dir
  60.     persname = args.renpy_file
  61.  
  62.     import_renpy(gdr)
  63.     load()
  64.     runipython(pers = pers, load = load, save = save)
  65.  
  66. if __name__ == '__main__':
  67.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement