From b43f05e0864e2c67c19adb639761e1b7c0cb2375 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sat, 19 Nov 2022 21:36:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E5=99=A8=E4=B8=8A=E7=AB=96=E5=B1=8F=E6=97=B6?= =?UTF-8?q?minitouch=E5=9D=90=E6=A0=87=E4=B8=8D=E8=83=BD=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/Controller.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/MeoAssistant/Controller.cpp b/src/MeoAssistant/Controller.cpp index 3a3129fde5..c740cfd02e 100644 --- a/src/MeoAssistant/Controller.cpp +++ b/src/MeoAssistant/Controller.cpp @@ -538,13 +538,19 @@ bool asst::Controller::call_and_hup_minitouch(const std::string& cmd) } std::string key_info = pipe_str.substr(s_pos + 1, e_pos - s_pos - 1); Log.info("minitouch key props", key_info); + int size_1 = 0, size_2 = 0; std::stringstream ss; ss << key_info; ss >> m_minitouch_props.max_contacts; - ss >> m_minitouch_props.max_x; - ss >> m_minitouch_props.max_y; + ss >> size_1; + ss >> size_2; ss >> m_minitouch_props.max_pressure; + // 有些模拟器在竖屏分辨率时,这里的输出是反过来的 + // 考虑到应该没人竖屏玩明日方舟,所以取较大值为 x,较小值为 y + m_minitouch_props.max_x = std::max(size_1, size_2); + m_minitouch_props.max_y = std::min(size_1, size_2); + m_minitouch_props.x_scaling = static_cast(m_minitouch_props.max_x) / m_width; m_minitouch_props.y_scaling = static_cast(m_minitouch_props.max_y) / m_height; @@ -554,7 +560,7 @@ bool asst::Controller::call_and_hup_minitouch(const std::string& cmd) bool asst::Controller::input_to_minitouch(const std::string& cmd) { - // Log.info("Input to minitouch", Logger::separator::newline, cmd); + Log.info("Input to minitouch", Logger::separator::newline, cmd); #ifdef _WIN32 DWORD written = 0; @@ -750,8 +756,8 @@ std::optional asst::Controller::init_socket(const std::string& l socklen_t addrlen = sizeof(m_server_sock_addr); int getname_ret = ::getsockname(m_server_sock, reinterpret_cast(&m_server_sock_addr), &addrlen); int listen_ret = ::listen(m_server_sock, 3); - struct timeval timeout = {6,0}; - int timeout_ret = ::setsockopt(m_server_sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(struct timeval)); + struct timeval timeout = { 6, 0 }; + int timeout_ret = ::setsockopt(m_server_sock, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(struct timeval)); server_start = bind_ret == 0 && getname_ret == 0 && listen_ret == 0 && timeout_ret == 0; #endif