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:
parent
bfcb0650e6
commit
6e5dd7eab4
32
main.py
32
main.py
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue