fixed model loading saving
parent
9aaad92c96
commit
a8810fbb63
|
@ -36,4 +36,5 @@
|
||||||
"COP": "Position aendern",
|
"COP": "Position aendern",
|
||||||
"export": "Exportieren",
|
"export": "Exportieren",
|
||||||
"import": "Importieren",
|
"import": "Importieren",
|
||||||
|
"clog": "Logs erstellen",
|
||||||
}
|
}
|
|
@ -36,4 +36,5 @@
|
||||||
"COP": "Change position",
|
"COP": "Change position",
|
||||||
"export": "Export",
|
"export": "Export",
|
||||||
"import": "Import",
|
"import": "Import",
|
||||||
|
"clog": "Create logs",
|
||||||
}
|
}
|
67
main.py
67
main.py
|
@ -61,7 +61,9 @@ def prepgamedata():
|
||||||
ptext = tk.Label(tempwin, text="NONE")
|
ptext = tk.Label(tempwin, text="NONE")
|
||||||
ptext.place()
|
ptext.place()
|
||||||
count = 1
|
count = 1
|
||||||
|
modellist = {}
|
||||||
for i in gamedata:
|
for i in gamedata:
|
||||||
|
id = i
|
||||||
i = gamedata[i]
|
i = gamedata[i]
|
||||||
ptext.config(text=i["name"])
|
ptext.config(text=i["name"])
|
||||||
bar.step(count/len(gamedata))
|
bar.step(count/len(gamedata))
|
||||||
|
@ -84,10 +86,15 @@ def prepgamedata():
|
||||||
temp2 = getattributes(arg)
|
temp2 = getattributes(arg)
|
||||||
temp2.update({"ARGID": arg._type})
|
temp2.update({"ARGID": arg._type})
|
||||||
tempargs[argname] = temp2
|
tempargs[argname] = temp2
|
||||||
|
if objtree.parent(id) != "":
|
||||||
|
modelname = objtree.item(objtree.parent(id), "text")
|
||||||
|
if not modelname in list(modellist.keys()):
|
||||||
|
modellist[modelname] = []
|
||||||
|
modellist[modelname].append(count-2)
|
||||||
temp["args"] = tempargs
|
temp["args"] = tempargs
|
||||||
out.append(temp)
|
out.append(temp)
|
||||||
tempwin.destroy()
|
tempwin.destroy()
|
||||||
return out
|
return [out, modellist]
|
||||||
|
|
||||||
def prepspecified(target):
|
def prepspecified(target):
|
||||||
out = []
|
out = []
|
||||||
|
@ -97,7 +104,9 @@ def prepspecified(target):
|
||||||
ptext = tk.Label(tempwin, text="NONE")
|
ptext = tk.Label(tempwin, text="NONE")
|
||||||
ptext.place()
|
ptext.place()
|
||||||
count = 1
|
count = 1
|
||||||
|
modellist = {}
|
||||||
for i in target:
|
for i in target:
|
||||||
|
id = i
|
||||||
i = gamedata[i]
|
i = gamedata[i]
|
||||||
ptext.config(text=i["name"])
|
ptext.config(text=i["name"])
|
||||||
bar.step(count/len(gamedata))
|
bar.step(count/len(gamedata))
|
||||||
|
@ -120,10 +129,15 @@ def prepspecified(target):
|
||||||
temp2 = getattributes(arg)
|
temp2 = getattributes(arg)
|
||||||
temp2.update({"ARGID": arg._type})
|
temp2.update({"ARGID": arg._type})
|
||||||
tempargs[argname] = temp2
|
tempargs[argname] = temp2
|
||||||
|
if objtree.parent(id) != "":
|
||||||
|
modelname = objtree.item(objtree.parent(id), "text")
|
||||||
|
if not modelname in list(modellist.keys()):
|
||||||
|
modellist[modelname] = []
|
||||||
|
modellist[modelname].append(count-2)
|
||||||
temp["args"] = tempargs
|
temp["args"] = tempargs
|
||||||
out.append(temp)
|
out.append(temp)
|
||||||
tempwin.destroy()
|
tempwin.destroy()
|
||||||
return out
|
return [out, modellist]
|
||||||
|
|
||||||
class script:
|
class script:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -483,9 +497,13 @@ def importobj(target):
|
||||||
for i in outargs:
|
for i in outargs:
|
||||||
setattr(preview.getobjbyid(gamedata[oid]["args"]["ID"]), i, outargs[i])
|
setattr(preview.getobjbyid(gamedata[oid]["args"]["ID"]), i, outargs[i])
|
||||||
id["args"].update(outargs)
|
id["args"].update(outargs)
|
||||||
|
return oid
|
||||||
|
|
||||||
def load(cleargame=True):
|
def load(cleargame=True, GUI=True, path=""):
|
||||||
|
if GUI == True:
|
||||||
file = filedialog.askopenfile()
|
file = filedialog.askopenfile()
|
||||||
|
else:
|
||||||
|
file = open(path, 'r')
|
||||||
tempwin = tk.Tk()
|
tempwin = tk.Tk()
|
||||||
ptext = tk.Label(tempwin, text="NONE")
|
ptext = tk.Label(tempwin, text="NONE")
|
||||||
ptext.place(y=30)
|
ptext.place(y=30)
|
||||||
|
@ -496,6 +514,9 @@ def load(cleargame=True):
|
||||||
target = ast.literal_eval(target)
|
target = ast.literal_eval(target)
|
||||||
if cleargame:
|
if cleargame:
|
||||||
clear()
|
clear()
|
||||||
|
if len(target) == 0: return
|
||||||
|
if not isinstance(target[0], list):
|
||||||
|
#old save file
|
||||||
count = 1
|
count = 1
|
||||||
bar = tkk.Progressbar(tempwin, maximum=len(target))
|
bar = tkk.Progressbar(tempwin, maximum=len(target))
|
||||||
bar.place(width=200)
|
bar.place(width=200)
|
||||||
|
@ -508,6 +529,30 @@ def load(cleargame=True):
|
||||||
count += 1
|
count += 1
|
||||||
tempwin.destroy()
|
tempwin.destroy()
|
||||||
preview.render()
|
preview.render()
|
||||||
|
else:
|
||||||
|
#new save file
|
||||||
|
count = 1
|
||||||
|
bar = tkk.Progressbar(tempwin, maximum=len(target))
|
||||||
|
bar.place(width=200)
|
||||||
|
ids = {}
|
||||||
|
for i in target[0]:
|
||||||
|
ptext.config(text="Current: "+i["name"])
|
||||||
|
bar.step()
|
||||||
|
stat.config(text=f"Object {count}/{len(target)}")
|
||||||
|
tempwin.update()
|
||||||
|
id = importobj(i)
|
||||||
|
if id:
|
||||||
|
ids[count-1] = id
|
||||||
|
count += 1
|
||||||
|
if GUIe == True:
|
||||||
|
for i in target[1]:
|
||||||
|
tempid = genid()
|
||||||
|
objtree.insert("", tk.END, text=i, image=icons["model"], iid=tempid, tags=("HASHMODEL",))
|
||||||
|
for f in target[1][i]:
|
||||||
|
objtree.detach(ids[f])
|
||||||
|
objtree.move(ids[f], tempid, "end")
|
||||||
|
tempwin.destroy()
|
||||||
|
preview.render()
|
||||||
|
|
||||||
def export():
|
def export():
|
||||||
temp = objtree.selection()
|
temp = objtree.selection()
|
||||||
|
@ -526,6 +571,8 @@ def export():
|
||||||
|
|
||||||
def log(text, end="\n", flush=False):
|
def log(text, end="\n", flush=False):
|
||||||
global logfile
|
global logfile
|
||||||
|
global clog
|
||||||
|
if clog:
|
||||||
if not os.path.exists("logs"):
|
if not os.path.exists("logs"):
|
||||||
os.mkdir("logs")
|
os.mkdir("logs")
|
||||||
file = open("logs/"+logfile+".txt", 'a')
|
file = open("logs/"+logfile+".txt", 'a')
|
||||||
|
@ -558,12 +605,13 @@ class gsound:
|
||||||
def testing():
|
def testing():
|
||||||
global testproc
|
global testproc
|
||||||
global running
|
global running
|
||||||
|
global clog
|
||||||
try:
|
try:
|
||||||
if running == True: return
|
if running == True: return
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
running = True
|
running = True
|
||||||
testproc = multiprocessing.Process(target=execgame, args=(prepgamedata(),))
|
testproc = multiprocessing.Process(target=execgame, args=(prepgamedata(), clog.get()))
|
||||||
testproc.start()
|
testproc.start()
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
|
@ -735,6 +783,7 @@ def GUIinit():
|
||||||
global currentat
|
global currentat
|
||||||
global preview
|
global preview
|
||||||
global GUIe
|
global GUIe
|
||||||
|
global clog
|
||||||
GUIe = True
|
GUIe = True
|
||||||
container = tk.Tk()
|
container = tk.Tk()
|
||||||
container.bind("<KeyPress>", updatepreviewcam, add="+")
|
container.bind("<KeyPress>", updatepreviewcam, add="+")
|
||||||
|
@ -780,6 +829,10 @@ def GUIinit():
|
||||||
filemenu.add_command(label=LH.string("open"), command=load)
|
filemenu.add_command(label=LH.string("open"), command=load)
|
||||||
filemenu.add_command(label=LH.string("save"), command=save)
|
filemenu.add_command(label=LH.string("save"), command=save)
|
||||||
filemenu.add_separator()
|
filemenu.add_separator()
|
||||||
|
#create logs var
|
||||||
|
clog = tk.BooleanVar()
|
||||||
|
filemenu.add_checkbutton(label=LH.string("clog"), onvalue=1, offvalue=0, variable=clog)
|
||||||
|
filemenu.add_separator()
|
||||||
filemenu.add_command(label=LH.string("export"), command=export)
|
filemenu.add_command(label=LH.string("export"), command=export)
|
||||||
filemenu.add_command(label=LH.string("import"), command=lambda: load(False))
|
filemenu.add_command(label=LH.string("import"), command=lambda: load(False))
|
||||||
filemenu.add_separator()
|
filemenu.add_separator()
|
||||||
|
@ -915,13 +968,15 @@ def aposy(old):
|
||||||
return old
|
return old
|
||||||
return tempvar
|
return tempvar
|
||||||
|
|
||||||
def execgame(gametree):
|
def execgame(gametree, shouldlog=True):
|
||||||
global GUIe
|
global GUIe
|
||||||
global preview
|
global preview
|
||||||
|
global clog
|
||||||
preview = hashengine.game(renderer=nullrend, sounddir="/")
|
preview = hashengine.game(renderer=nullrend, sounddir="/")
|
||||||
GUIe = False
|
GUIe = False
|
||||||
for i in gametree:
|
for i in gametree[0]:
|
||||||
importobj(i)
|
importobj(i)
|
||||||
|
clog = shouldlog
|
||||||
run()
|
run()
|
||||||
|
|
||||||
class rsound:
|
class rsound:
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
[[{'id': 'obj', 'name': 'Objekt', 'args': {'anchored': True, 'char': '#', 'collide': True, 'friction': 0, 'gravity': 0, 'acceleration': {'x': 0, 'y': 0, 'ARGID': 'vector2'}, 'bcolor': {'b': 255, 'g': 255, 'r': 255, 'ARGID': 'color3'}, 'fcolor': {'b': 0, 'g': 0, 'r': 0, 'ARGID': 'color3'}, 'position': {'x': 0, 'y': 0, 'ARGID': 'vector2'}, 'velocity': {'x': 0, 'y': 0, 'ARGID': 'vector2'}}}, {'id': 'obj', 'name': 'Objekt', 'args': {'anchored': True, 'char': '#', 'collide': True, 'friction': 0, 'gravity': 0, 'acceleration': {'x': 0, 'y': 0, 'ARGID': 'vector2'}, 'bcolor': {'b': 255, 'g': 255, 'r': 255, 'ARGID': 'color3'}, 'fcolor': {'b': 0, 'g': 0, 'r': 0, 'ARGID': 'color3'}, 'position': {'x': 1, 'y': 0, 'ARGID': 'vector2'}, 'velocity': {'x': 0, 'y': 0, 'ARGID': 'vector2'}}}, {'id': 'obj', 'name': 'Objekt', 'args': {'anchored': True, 'char': '#', 'collide': True, 'friction': 0, 'gravity': 0, 'acceleration': {'x': 0, 'y': 0, 'ARGID': 'vector2'}, 'bcolor': {'b': 255, 'g': 255, 'r': 255, 'ARGID': 'color3'}, 'fcolor': {'b': 0, 'g': 0, 'r': 0, 'ARGID': 'color3'}, 'position': {'x': 2, 'y': 0, 'ARGID': 'vector2'}, 'velocity': {'x': 0, 'y': 0, 'ARGID': 'vector2'}}}], {'test': [0, 1, 2]}]
|
Loading…
Reference in New Issue