extra features
parent
769c9067d2
commit
309f93461a
|
@ -195,25 +195,6 @@ class camera(obj):
|
|||
if self.mode == cammode.follow and self.subject:
|
||||
self.position = self.subject.position
|
||||
|
||||
def COBS(target: str, offset=vector2(), ignore=[" ",]):
|
||||
target = target.split("\n")
|
||||
out = []
|
||||
for i in range(len(target)):
|
||||
y = i
|
||||
i = target[i]
|
||||
for f in range(len(i)):
|
||||
x = f
|
||||
f = i[x]
|
||||
if f in ignore:
|
||||
continue
|
||||
temp = obj()
|
||||
temp.char = f
|
||||
temp.position = vector2(x, y)+offset
|
||||
temp.anchored = True
|
||||
temp.collide = True
|
||||
out.append(temp)
|
||||
return out
|
||||
|
||||
class game:
|
||||
def __init__(self, size=[10, 10], renderer=stdrend, sounddir=""):
|
||||
if renderer == None: raise TypeError("Renderer class needed!")
|
||||
|
|
|
@ -29,4 +29,6 @@
|
|||
"building": "Bauen",
|
||||
"build": "Bauen",
|
||||
"sound": "Sound",
|
||||
"IPS": "Python Skript importieren",
|
||||
"COBS": "Objekte durch String erstellen",
|
||||
}
|
|
@ -29,4 +29,6 @@
|
|||
"building": "Building",
|
||||
"build": "Build",
|
||||
"sound": "Sound",
|
||||
"IPS": "Import python script",
|
||||
"COBS": "Create objects by string",
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
Log file start!
|
||||
Preparing API...
|
||||
Done!
|
||||
main game initalised!
|
||||
copying sounds...
|
||||
objects transferred!
|
||||
game test started!!!
|
||||
---------------------
|
|
@ -1,8 +0,0 @@
|
|||
Log file start!
|
||||
Preparing API...
|
||||
Done!
|
||||
main game initalised!
|
||||
copying sounds...
|
||||
objects transferred!
|
||||
game test started!!!
|
||||
---------------------
|
67
main.py
67
main.py
|
@ -39,6 +39,8 @@ import multiprocessing
|
|||
|
||||
global gamedata
|
||||
global cooldown
|
||||
global version
|
||||
version = "HE2.2-Hashengine V2.2"
|
||||
cooldown = False
|
||||
gamedata = {}
|
||||
|
||||
|
@ -82,13 +84,16 @@ class script:
|
|||
def __init__(self):
|
||||
self.code = ""
|
||||
|
||||
def execute(self, API):
|
||||
def execute(self, API, log):
|
||||
#old code for PCPL code execution, replaced with python code execution
|
||||
"""
|
||||
PCPL.resetvar()
|
||||
PCPL.LIS("HASHBASE")
|
||||
PCPL.run(self.code)"""
|
||||
exec(self.code, API)
|
||||
try:
|
||||
exec(self.code, API)
|
||||
except Exception as e:
|
||||
log(f"[GAME] Exception occured in script: {e}")
|
||||
|
||||
class previewrend:
|
||||
def __init__(self, size, cam, container, offset):
|
||||
|
@ -291,9 +296,12 @@ def updatribute(event):
|
|||
for i in gamedata[target]["args"]:
|
||||
if i in ignoreat: continue
|
||||
|
||||
if i in valtypes:
|
||||
|
||||
if i in valtypes and not i in DCTE:
|
||||
val = gamedata[target]["args"][i]
|
||||
atritree.insert("", tk.END, text=i, values=(val))
|
||||
elif i in valtypes and i in DCTE:
|
||||
atritree.insert("", tk.END, text=i, values=("<DCTE>"))
|
||||
else:
|
||||
root = atritree.insert("", tk.END, text=i)
|
||||
temp = getattributes(gamedata[target]["args"][i])
|
||||
|
@ -311,12 +319,14 @@ def halatribute(event):
|
|||
if "ID" in gamedata[currentat]["args"]:
|
||||
temp = preview.getobjbyid(gamedata[currentat]["args"]["ID"])
|
||||
setattr(temp, name, new)
|
||||
atritree.item(target, values=(new))
|
||||
if not name in DCTE: atritree.item(target, values=(new))
|
||||
if name in DCTE: atritree.item(target, values=("<DCTE>"))
|
||||
else:
|
||||
parent = atritree.item(parent, "text")
|
||||
new = valtypes[name](getattr(gamedata[currentat]["args"][parent], name))
|
||||
setattr(gamedata[currentat]["args"][parent], name, new)
|
||||
atritree.item(target, values=(new))
|
||||
if not name in DCTE: atritree.item(target, values=(new))
|
||||
if name in DCTE: atritree.item(target, values=("<DCTE>"))
|
||||
preview.render()
|
||||
|
||||
def updatepreviewcam(char):
|
||||
|
@ -329,7 +339,7 @@ def updatepreviewcam(char):
|
|||
if char == "s": preview.camera.position -= hashengine.vector2(y=1)
|
||||
if char == "d": preview.camera.position -= hashengine.vector2(x=1)
|
||||
preview.render()
|
||||
time.sleep(0)
|
||||
time.sleep(.0)
|
||||
cooldown = False
|
||||
|
||||
def save():
|
||||
|
@ -450,6 +460,8 @@ def run():
|
|||
logfile = logfile + "S" + str(i)
|
||||
print("done")
|
||||
log("Log file start!")
|
||||
log(f"date: year: {temp[0]} month: {temp[1]} day: {temp[2]} hour: {temp[3]} min.: {temp[4]}, sec.: {temp[5]}")
|
||||
log(f"Version: {version}")
|
||||
log("Preparing API...")
|
||||
API = {"print": log, "HASHBASE": hashengine}
|
||||
log("Done!")
|
||||
|
@ -487,11 +499,11 @@ while True:
|
|||
"""
|
||||
gameloopsc = script()
|
||||
gameloopsc.code = gamescript
|
||||
maingame.startscript(lambda: gameloopsc.execute(API))
|
||||
maingame.startscript(lambda: gameloopsc.execute(API, log))
|
||||
log("game test started!!!")
|
||||
log("---------------------")
|
||||
for i in scripts:
|
||||
maingame.startscript(lambda: i.execute(API))
|
||||
maingame.startscript(lambda: i.execute(API, log))
|
||||
window.mainloop()
|
||||
|
||||
def muladd(target):
|
||||
|
@ -532,6 +544,35 @@ player.execgame(file)
|
|||
print("done.")
|
||||
print("building finished!")
|
||||
|
||||
def importPS():
|
||||
target = filedialog.askopenfile()
|
||||
if target:
|
||||
temp = add("script")
|
||||
gamedata[temp]["args"]["code"] = str(target.read())
|
||||
target.close()
|
||||
|
||||
def COBS(target: str, offset=hashengine.vector2(), ignore=[" ",]):
|
||||
target = target.split("\n")
|
||||
for i in range(len(target)):
|
||||
y = i
|
||||
i = target[i]
|
||||
for f in range(len(i)):
|
||||
x = f
|
||||
f = i[x]
|
||||
if f in ignore:
|
||||
continue
|
||||
temp = add("obj")
|
||||
#gamedata[temp]["args"]["ID"]
|
||||
gamedata[temp]["args"]["char"] = f
|
||||
setattr(preview.getobjbyid(gamedata[temp]["args"]["ID"]), "char", f)
|
||||
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)
|
||||
preview.render()
|
||||
|
||||
def GUIinit():
|
||||
global container
|
||||
global objtree
|
||||
|
@ -590,6 +631,9 @@ def GUIinit():
|
|||
addmenu.add_command(label=LH.string("obj"), command=lambda: add("obj"))
|
||||
addmenu.add_command(label=LH.string("script"), command=lambda: add("script"))
|
||||
addmenu.add_command(label=LH.string("sound"), command=lambda: add("sound"))
|
||||
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("obj"), command=lambda: muladd("obj"))
|
||||
|
||||
testmenu = tk.Menu(menu)
|
||||
|
@ -637,10 +681,7 @@ def anum(old):
|
|||
|
||||
def abool(old):
|
||||
out = easygui.boolbox(LH.string("newval"), LH.string("newval"), (LH.string("true"), LH.string("false")))
|
||||
if out:
|
||||
return out
|
||||
else:
|
||||
return old
|
||||
return out
|
||||
|
||||
def acode(old):
|
||||
out = easygui.textbox(LH.string("newval"), LH.string("newval"), old)
|
||||
|
@ -684,9 +725,11 @@ global valtypes
|
|||
global extypes
|
||||
global attypes
|
||||
global crucial
|
||||
global DCTE
|
||||
crucial = ["obj"]
|
||||
types = hashengine.enum({"obj": hashengine.obj, "script": script, "rawsound": rsound, "sound": lambda: sound(apath("", [("Wave files", ".wave .wav")]))})
|
||||
ignoreat = ["ID", "execute", "sdata"]
|
||||
DCTE = ["code"]
|
||||
"""self.position = vector2()
|
||||
self.char = " "
|
||||
self.ID = 0
|
||||
|
|
Loading…
Reference in New Issue