added Create objects by image

main
Justus Jan Nico Wolff 2024-06-15 19:37:40 +02:00
parent 7c8e354103
commit b42baa211a
4 changed files with 66 additions and 7 deletions

View File

@ -43,4 +43,5 @@
"gamey": "Spiel y Groesse", "gamey": "Spiel y Groesse",
"modelobjs": "Ausgewaehlte Objekte zu Model machen", "modelobjs": "Ausgewaehlte Objekte zu Model machen",
"demodelobjs": "Ausgewaehltes Model zu Objekte machen", "demodelobjs": "Ausgewaehltes Model zu Objekte machen",
"COBI": "Objekte durch Bild erstellen",
} }

View File

@ -43,4 +43,5 @@
"gamey": "Game y size", "gamey": "Game y size",
"modelobjs": "Turn selected objects into Model", "modelobjs": "Turn selected objects into Model",
"demodelobjs": "Turn selected model into objects", "demodelobjs": "Turn selected model into objects",
"COBI": "Create objects by picture",
} }

69
main.py
View File

@ -36,6 +36,7 @@ from tkinter import ttk as tkk
from tkinter import messagebox from tkinter import messagebox
from tkinter import filedialog from tkinter import filedialog
import copy import copy
from PIL import Image
import hashengine import hashengine
def norms(): def norms():
global LH global LH
@ -915,6 +916,56 @@ def COBS(target: str, offset=hashengine.vector2(), ignore=[" ",]):
updselect(None) updselect(None)
tempwin.destroy() tempwin.destroy()
def COBI(target, offset=hashengine.vector2()):
target = Image.open(target)
target = target.resize(preview._size)
tempid = genid()
tempwin = tk.Tk()
stat = tk.Label(tempwin, text="NONE")
stat.grid()
speed = tk.Label(tempwin, text="NONE")
speed.grid()
tempwin.update()
if GUIe == True: objtree.insert("", tk.END, text=LH.string("IOM"), image=icons["model"], iid=tempid, tags=("HASHMODEL",))
count = 1
fpscount = 0
timestamp = time.time()
fps = 0
for y in range(preview._size[1]):
y
for x in range(preview._size[0]):
stat.config(text=f"{count}/{preview._size[0]*preview._size[1]}")
speed.config(text=f"{fps}/s")
tempwin.update()
count += 1
fpscount += 1
if time.time()-timestamp > 0.1:
fps = fpscount*10
fpscount = 0
timestamp = time.time()
temp = add("obj", tempid, False)
objtree.item(temp, text=f"{x}:{y}")
#gamedata[temp]["args"]["ID"]
gamedata[temp]["args"]["char"] = " "
gamedata[temp]["name"] = f"{x}:{y}"
setattr(preview.getobjbyid(gamedata[temp]["args"]["ID"]), "char", " ")
gamedata[temp]["args"]["position"] = hashengine.vector2(x, y)+offset
setattr(preview.getobjbyid(gamedata[temp]["args"]["ID"]), "position", hashengine.vector2(x, y)+offset)
gamedata[temp]["args"]["anchored"] = True
setattr(preview.getobjbyid(gamedata[temp]["args"]["ID"]), "anchored", True)
gamedata[temp]["args"]["collide"] = True
setattr(preview.getobjbyid(gamedata[temp]["args"]["ID"]), "collide", True)
color = target.getpixel((x, y))
fcolor = hashengine.color3(color[0], color[1], color[2])
bcolor = hashengine.color3(color[0], color[1], color[2])
gamedata[temp]["args"]["fcolor"] = fcolor
gamedata[temp]["args"]["bcolor"] = bcolor
setattr(preview.getobjbyid(gamedata[temp]["args"]["ID"]), "fcolor", fcolor)
setattr(preview.getobjbyid(gamedata[temp]["args"]["ID"]), "bcolor", bcolor)
#preview.render()
updselect(None)
tempwin.destroy()
def updselect(event): def updselect(event):
preview.render() preview.render()
selection = objtree.selection() selection = objtree.selection()
@ -1066,6 +1117,7 @@ def GUIinit():
addmenu.add_separator() addmenu.add_separator()
addmenu.add_command(label=LH.string("IPS"), command=importPS) addmenu.add_command(label=LH.string("IPS"), command=importPS)
addmenu.add_command(label=LH.string("COBS"), command=lambda: COBS(acode(" "))) addmenu.add_command(label=LH.string("COBS"), command=lambda: COBS(acode(" ")))
addmenu.add_command(label=LH.string("COBI"), command=lambda: COBI(filedialog.askopenfilename()))
#addmenu.add_command(label=LH.string("obj"), command=lambda: muladd("obj")) #addmenu.add_command(label=LH.string("obj"), command=lambda: muladd("obj"))
testmenu = tk.Menu(menu) testmenu = tk.Menu(menu)
@ -1218,13 +1270,19 @@ def execcmd(target):
except Exception as e: except Exception as e:
return e return e
def execlist(target):
for i in target:
print(f"> {i}")
execcmd(i)
def cmd(): def cmd():
print(f"hashengine version: {version}") print(f"hashengine version: {version}")
print("CMD") print("CMD")
autoexecute = ["loadplugins()"] print("running autoexecute commands...")
for i in autoexecute: execlist(["threading.Thread(target=GUIinit).start()", "loadplugins()"])
print(f"> {i}") if os.path.exists("autoexec"):
execcmd(i) print("running custom autoexecute...")
execlist(["temp = open('autoexec', 'r')", "temp = temp.readlines()", "execlist(temp)"])
while True: while True:
cmd = input("> ") cmd = input("> ")
print(execcmd(cmd)) print(execcmd(cmd))
@ -1293,6 +1351,5 @@ attypes = {
"color3": hashengine.color3, "color3": hashengine.color3,
} }
if __name__ == "__main__": if __name__ == "__main__":
threading.Thread(target=cmd).start() cmd()
GUIinit()
stderrfile.close() stderrfile.close()

View File

@ -1 +1 @@
{"easygui", "simpleaudio"} {"easygui", "simpleaudio", "pillow"}