added Create objects by image
parent
7c8e354103
commit
b42baa211a
|
@ -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",
|
||||||
}
|
}
|
|
@ -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
69
main.py
|
@ -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()
|
|
@ -1 +1 @@
|
||||||
{"easygui", "simpleaudio"}
|
{"easygui", "simpleaudio", "pillow"}
|
Loading…
Reference in New Issue