fixed model loading saving

main
Justus Jan Nico Wolff 2024-05-24 11:25:10 +02:00
parent 9aaad92c96
commit a8810fbb63
4 changed files with 82 additions and 24 deletions

View File

@ -36,4 +36,5 @@
"COP": "Position aendern",
"export": "Exportieren",
"import": "Importieren",
"clog": "Logs erstellen",
}

View File

@ -36,4 +36,5 @@
"COP": "Change position",
"export": "Export",
"import": "Import",
"clog": "Create logs",
}

103
main.py
View File

@ -61,7 +61,9 @@ def prepgamedata():
ptext = tk.Label(tempwin, text="NONE")
ptext.place()
count = 1
modellist = {}
for i in gamedata:
id = i
i = gamedata[i]
ptext.config(text=i["name"])
bar.step(count/len(gamedata))
@ -84,10 +86,15 @@ def prepgamedata():
temp2 = getattributes(arg)
temp2.update({"ARGID": arg._type})
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
out.append(temp)
tempwin.destroy()
return out
return [out, modellist]
def prepspecified(target):
out = []
@ -97,7 +104,9 @@ def prepspecified(target):
ptext = tk.Label(tempwin, text="NONE")
ptext.place()
count = 1
modellist = {}
for i in target:
id = i
i = gamedata[i]
ptext.config(text=i["name"])
bar.step(count/len(gamedata))
@ -120,10 +129,15 @@ def prepspecified(target):
temp2 = getattributes(arg)
temp2.update({"ARGID": arg._type})
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
out.append(temp)
tempwin.destroy()
return out
return [out, modellist]
class script:
def __init__(self):
@ -483,9 +497,13 @@ def importobj(target):
for i in outargs:
setattr(preview.getobjbyid(gamedata[oid]["args"]["ID"]), i, outargs[i])
id["args"].update(outargs)
return oid
def load(cleargame=True):
file = filedialog.askopenfile()
def load(cleargame=True, GUI=True, path=""):
if GUI == True:
file = filedialog.askopenfile()
else:
file = open(path, 'r')
tempwin = tk.Tk()
ptext = tk.Label(tempwin, text="NONE")
ptext.place(y=30)
@ -496,18 +514,45 @@ def load(cleargame=True):
target = ast.literal_eval(target)
if cleargame:
clear()
count = 1
bar = tkk.Progressbar(tempwin, maximum=len(target))
bar.place(width=200)
for i in target:
ptext.config(text="Current: "+i["name"])
bar.step()
stat.config(text=f"Object {count}/{len(target)}")
tempwin.update()
importobj(i)
count += 1
tempwin.destroy()
preview.render()
if len(target) == 0: return
if not isinstance(target[0], list):
#old save file
count = 1
bar = tkk.Progressbar(tempwin, maximum=len(target))
bar.place(width=200)
for i in target:
ptext.config(text="Current: "+i["name"])
bar.step()
stat.config(text=f"Object {count}/{len(target)}")
tempwin.update()
importobj(i)
count += 1
tempwin.destroy()
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():
temp = objtree.selection()
@ -526,11 +571,13 @@ def export():
def log(text, end="\n", flush=False):
global logfile
if not os.path.exists("logs"):
os.mkdir("logs")
file = open("logs/"+logfile+".txt", 'a')
file.write(str(text)+end)
file.close()
global clog
if clog:
if not os.path.exists("logs"):
os.mkdir("logs")
file = open("logs/"+logfile+".txt", 'a')
file.write(str(text)+end)
file.close()
def NULL():
pass
@ -558,12 +605,13 @@ class gsound:
def testing():
global testproc
global running
global clog
try:
if running == True: return
except:
pass
running = True
testproc = multiprocessing.Process(target=execgame, args=(prepgamedata(),))
testproc = multiprocessing.Process(target=execgame, args=(prepgamedata(), clog.get()))
testproc.start()
def run():
@ -735,6 +783,7 @@ def GUIinit():
global currentat
global preview
global GUIe
global clog
GUIe = True
container = tk.Tk()
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("save"), command=save)
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("import"), command=lambda: load(False))
filemenu.add_separator()
@ -915,13 +968,15 @@ def aposy(old):
return old
return tempvar
def execgame(gametree):
def execgame(gametree, shouldlog=True):
global GUIe
global preview
global clog
preview = hashengine.game(renderer=nullrend, sounddir="/")
GUIe = False
for i in gametree:
for i in gametree[0]:
importobj(i)
clog = shouldlog
run()
class rsound:

View File

@ -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]}]