diff --git a/hashengine.py b/hashengine.py index 0e6707f..8272aeb 100644 --- a/hashengine.py +++ b/hashengine.py @@ -4,13 +4,8 @@ class game(): import sys import subprocess import pkg_resources - import os print("initializing hashengine and installing dependencies if missing") - self.linecount = 0 - if os.name == 'nt': - required = {'sounddevice', 'soundfile', 'windows-curses'} - else: - required = {'sounddevice', 'soundfile'} + required = {'keyboard', 'sounddevice', 'soundfile'} installed = {pkg.key for pkg in pkg_resources.working_set} missing = required - installed @@ -21,13 +16,21 @@ class game(): print(i) subprocess.check_call([python, '-m', 'pip', 'install', i], stdout=sys.stdout) print("done") + import os + import ctypes import string + def isAdmin(): + try: + is_admin = (os.getuid() == 0) + except AttributeError: + is_admin = ctypes.windll.shell32.IsUserAnAdmin() != 0 + return is_admin + if not isAdmin(): + print("error: hashengine needs to be run as an admin") + input("enter to continue...") + exit() self.osmodule = __import__("os") - import curses - self.screen = curses.initscr() - self.screen.nodelay(1) - curses.noecho() - curses.endwin() + self.keyboard = __import__("keyboard") try: self.sounddevice = __import__("sounddevice") except OSError: @@ -51,7 +54,7 @@ class game(): self.map["{}:{}".format(i, f)] = " " self.objects = [] - + def round2(self, target): from decimal import localcontext, Decimal, ROUND_HALF_UP with localcontext() as ctx: @@ -59,17 +62,11 @@ class game(): return Decimal(target).to_integral_value() def update(self): - import curses - curses.noecho() - curses.endwin() - temp = self.screen.getch() - #temp = "" for i in self.pressedkeys: - if temp == ord(i): + if self.keyboard.is_pressed(i): self.pressedkeys[i] = True else: self.pressedkeys[i] = False - curses.flushinp() self.futuremap = self.map.copy() for i in self.objects: