Introduced Abstract Base Classes

Introduced Abstract Base Classes to ease the process of adding another platform.

Also some minor documentation.
This commit is contained in:
Martysh12 2021-12-19 21:01:11 +02:00
parent bfcb0650e6
commit 6e5dd7eab4
1 changed files with 27 additions and 5 deletions

32
main.py
View File

@ -2,33 +2,55 @@
"""Main asteroid-automator script.""" """Main asteroid-automator script."""
import platform import platform
from abc import ABC, abstractmethod
import pyautogui
PLATFORM_SYS = platform.system() PLATFORM_SYS = platform.system()
if PLATFORM_SYS == "Windows": if PLATFORM_SYS == "Windows":
import d3dshot import d3dshot
elif PLATFORM_SYS == "Linux":
import pyautogui
class AutomatableGame: class AbstractAutomatableGame(ABC):
"""Base class for each platform.""" """Base class for each platform."""
@abstractmethod
def __init__(self): def __init__(self):
"""Initializes components needed for the I/O to operate."""
self.loc = pyautogui.locateOnScreen("images/app.png") self.loc = pyautogui.locateOnScreen("images/app.png")
@abstractmethod
def fetch_sshot(self): def fetch_sshot(self):
"""Creates a screenshot, and returns it in Pillow format.""" """Creates a screenshot, and returns it in Pillow format."""
return pyautogui.screenshot(region=self.loc) return pyautogui.screenshot(region=self.loc)
def send_key(self, key): @abstractmethod
def send_key(self, key: str):
"""Presses a key on a virtual keyboard."""
pass pass
class AutomatableGame__Windows(AutomatableGame): class AutomatableGame__Windows(AbstractAutomatableGame):
def __init__(self): def __init__(self):
super().__init__(self) super().__init__(self)
self.d = d3dshot.create() self.d = d3dshot.create()
def fetch_sshot(self): def fetch_sshot(self):
return self.d.screenshot() # TODO: Cut this to self.loc(x, y, w, h) return self.d.screenshot() # TODO: Cut this to self.loc(x, y, w, h)
def send_key(self, key: str):
pass # TODO: Add send_key method
class AutomatableGame__Linux(AbstractAutomatableGame):
"""Base class for each platform."""
def __init__(self):
super().__init__(self)
def fetch_sshot(self):
return pyautogui.screenshot(region=self.loc)
def send_key(self, key: str):
pass # TODO: Add send_key method