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",
"modelobjs": "Ausgewaehlte Objekte zu Model machen",
"demodelobjs": "Ausgewaehltes Model zu Objekte machen",
"COBI": "Objekte durch Bild erstellen",
}

View File

@ -43,4 +43,5 @@
"gamey": "Game y size",
"modelobjs": "Turn selected objects into Model",
"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 filedialog
import copy
from PIL import Image
import hashengine
def norms():
global LH
@ -915,6 +916,56 @@ def COBS(target: str, offset=hashengine.vector2(), ignore=[" ",]):
updselect(None)
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):
preview.render()
selection = objtree.selection()
@ -1066,6 +1117,7 @@ def GUIinit():
addmenu.add_separator()
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("COBI"), command=lambda: COBI(filedialog.askopenfilename()))
#addmenu.add_command(label=LH.string("obj"), command=lambda: muladd("obj"))
testmenu = tk.Menu(menu)
@ -1218,13 +1270,19 @@ def execcmd(target):
except Exception as e:
return e
def execlist(target):
for i in target:
print(f"> {i}")
execcmd(i)
def cmd():
print(f"hashengine version: {version}")
print("CMD")
autoexecute = ["loadplugins()"]
for i in autoexecute:
print(f"> {i}")
execcmd(i)
print("running autoexecute commands...")
execlist(["threading.Thread(target=GUIinit).start()", "loadplugins()"])
if os.path.exists("autoexec"):
print("running custom autoexecute...")
execlist(["temp = open('autoexec', 'r')", "temp = temp.readlines()", "execlist(temp)"])
while True:
cmd = input("> ")
print(execcmd(cmd))
@ -1293,6 +1351,5 @@ attypes = {
"color3": hashengine.color3,
}
if __name__ == "__main__":
threading.Thread(target=cmd).start()
GUIinit()
cmd()
stderrfile.close()

View File

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