diff --git a/hashengine.py b/hashengine.py index 39ea7ab..3442382 100644 --- a/hashengine.py +++ b/hashengine.py @@ -1,9 +1,6 @@ import tkinter as tk import string import random -from colorama import Fore, Back, Style -from colorama import just_fix_windows_console -just_fix_windows_console() class stdrend: def __init__(self, size): @@ -17,9 +14,18 @@ class stdrend: self._win.update() self._grid[f"{x}:{y}"] = temp - def pix(self, x, y, text): + def coltohex(self, target): + colors = [] + for i in target: + colors.append(("0"*(2-len(hex(i)[2:])))+hex(i)[2:]) + out = "" + for i in colors: + out = out + i + return "#"+out + + def pix(self, x, y, text, bcolor, fcolor): if f"{x}:{y}" in self._grid: - self._grid[f"{x}:{y}"].config(text=text) + self._grid[f"{x}:{y}"].config(text=text, bg=self.coltohex(bcolor), fg=self.coltohex(fcolor)) self._win.update() class vector2: @@ -28,27 +34,21 @@ class vector2: self.y = y def __add__(self, v): - if not type(v) != vector2: raise ValueError("Must be vector2!") return vector2(self.x+v.x, self.y+v.y) def __sub__(self, v): - if not type(v) != vector2: raise ValueError("Must be vector2!") return vector2(self.x-v.x, self.y-v.y) def __mul__(self, v): - if not type(v) != vector2: raise ValueError("Must be vector2!") return vector2(self.x*v.x, self.y*v.y) def __iadd__(self, v): - if not type(v) != vector2: raise ValueError("Must be vector2!") return vector2(self.x+v.x, self.y+v.y) def __isub__(self, v): - if not type(v) != vector2: raise ValueError("Must be vector2!") return vector2(self.x-v.x, self.y-v.y) def __imul__(self, v): - if not type(v) != vector2: raise ValueError("Must be vector2!") return vector2(self.x*v.x, self.y*v.y) class NULL: @@ -64,11 +64,6 @@ class enum: def getposssel(self): return list(self._sel.keys()) -_fcolors = {"norm": Fore.RESET, "red": Fore.RED, "green": Fore.GREEN, "blue": Fore.BLUE, "white": Fore.WHITE, "cyan": Fore.CYAN, "black": Fore.BLACK, "magenta": Fore.MAGENTA, "yellow": Fore.YELLOW} -_bcolors = {"norm": Back.RESET, "red": Back.RED, "green": Back.GREEN, "blue": Back.BLUE, "white": Back.WHITE, "cyan": Back.CYAN, "black": Back.BLACK, "magenta": Back.MAGENTA, "yellow": Back.YELLOW} - -backcolors = enum(_bcolors) -forecolors = enum(_fcolors) cammode = enum({"editable": 0, "follow": 1}) class obj: @@ -84,8 +79,8 @@ class obj: self.collide = True self.touch = True self.anchored = False - self.bcolor = backcolors.norm - self.fcolor = forecolors.norm + self.bcolor = (255, 255, 255) + self.fcolor = (0, 0, 0) class camera(obj): def __init__(self): @@ -101,11 +96,12 @@ class camera(obj): self.position = self.subject.position class game: - def __init__(self, size=[20, 20], renderer=stdrend): + def __init__(self, size=[10, 10], renderer=stdrend): if renderer == None: raise TypeError("Renderer class needed!") self._size = size self._renderer = renderer(size) self._objects = {} + self.camera = camera() def addobj(self, obj): id = "" @@ -121,14 +117,23 @@ class game: def removeobjbyid(self, id): self._objects.pop(id).ID = NULL() + def between(self, min, max, target): + if min < target < max: return True + return False + def render(self): - for i in self._objects: - + for i in list(self._objects.values()): + pos = i.position + self.camera.position + if not self.between(-1, self._size[0], pos.x) or not self.between(-1, self._size[1], pos.y): continue + self._renderer.pix(pos.x, pos.y, i.char, i.bcolor, i.fcolor) if __name__ == "__main__": testgame = game() object = obj() + object.char = "#" testgame.addobj(object) + testgame.render() print(object.ID) + input("enter to exit") diff --git a/main.py b/main.py index 16880d3..4a65a0e 100644 --- a/main.py +++ b/main.py @@ -1,9 +1,11 @@ import mtTkinter as tk +from tkinter import ttk as tkk import PCPL import langsys import time import subprocess import sys +import hashengine global LH LH = langsys.langhandler() @@ -22,6 +24,12 @@ def selectlang(new): def GUIinit(): global container container = tk.Tk() + + #tree init + objtree = tkk.Treeview(container) + objtree.grid() + + #menu init menu = tk.Menu(container) container.config(menu=menu) filemenu = tk.Menu(menu)