replaced d3dshot with mss

This commit is contained in:
Adam Saudagar 2023-02-12 02:50:43 +05:30
parent cd32b8926d
commit ebbce458cf
2 changed files with 11 additions and 7 deletions

View File

@ -3,12 +3,15 @@ import math
from enum import Enum from enum import Enum
from threading import Thread from threading import Thread
import d3dshot import numpy as np
import pywintypes import pywintypes
import win32api import win32api
import win32gui import win32gui
from ctypes import windll from ctypes import windll
from mss import mss
from mss.base import MSSBase
from fishy.helper.helper import print_exc from fishy.helper.helper import print_exc
@ -26,7 +29,7 @@ class WindowServer:
windowOffset = None windowOffset = None
hwnd = None hwnd = None
status = Status.STOPPED status = Status.STOPPED
d3: d3dshot.D3DShot = d3dshot.create(capture_output="numpy") sct: MSSBase = None
monitor_top_left = None monitor_top_left = None
@ -46,8 +49,7 @@ def init():
client_rect = win32gui.GetClientRect(WindowServer.hwnd) client_rect = win32gui.GetClientRect(WindowServer.hwnd)
WindowServer.windowOffset = math.floor(((rect[2] - rect[0]) - client_rect[2]) / 2) WindowServer.windowOffset = math.floor(((rect[2] - rect[0]) - client_rect[2]) / 2)
WindowServer.status = Status.RUNNING WindowServer.status = Status.RUNNING
WindowServer.sct = mss()
WindowServer.d3.display = next((m for m in WindowServer.d3.displays if m.hmonitor == monitor_id), None)
except pywintypes.error: except pywintypes.error:
logging.error("Game window not found") logging.error("Game window not found")
@ -60,12 +62,14 @@ def loop():
finds the game window location and captures it finds the game window location and captures it
""" """
temp_screen = WindowServer.d3.screenshot() sct_img = WindowServer.sct.grab(WindowServer.sct.monitors[1])
# noinspection PyTypeChecker
temp_screen = np.array(sct_img)
rect = win32gui.GetWindowRect(WindowServer.hwnd) rect = win32gui.GetWindowRect(WindowServer.hwnd)
client_rect = win32gui.GetClientRect(WindowServer.hwnd) client_rect = win32gui.GetClientRect(WindowServer.hwnd)
fullscreen = WindowServer.d3.display.resolution[1] == (rect[3] - rect[1]) fullscreen = sct_img.size.height == (rect[3] - rect[1])
title_offset = ((rect[3] - rect[1]) - client_rect[3]) - WindowServer.windowOffset if not fullscreen else 0 title_offset = ((rect[3] - rect[1]) - client_rect[3]) - WindowServer.windowOffset if not fullscreen else 0
crop = ( crop = (
rect[0] + WindowServer.windowOffset - WindowServer.monitor_top_left[0], rect[0] + WindowServer.windowOffset - WindowServer.monitor_top_left[0],

View File

@ -14,4 +14,4 @@ keyboard
playsound playsound
event-scheduler event-scheduler
mouse mouse
d3dshot @ git+https://github.com/fauskanger/D3DShot#egg=D3DShot mss