Compare commits

...

6 Commits

@ -90,16 +90,6 @@ namespace CEFInject
nlohmann::basic_json<> InjectJs(std::string_view tab_name, std::string_view debug_url, std::wstring_view js, uint16_t port) nlohmann::basic_json<> InjectJs(std::string_view tab_name, std::string_view debug_url, std::wstring_view js, uint16_t port)
{ {
#ifdef _WIN32
INT rc;
WSADATA wsaData;
rc = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (rc) {
printf("WSAStartup Failed.\n");
return nullptr;
}
#endif
std::shared_ptr<easywsclient::WebSocket> ws{ std::shared_ptr<easywsclient::WebSocket> ws{
easywsclient::WebSocket::from_url(debug_url.data()) easywsclient::WebSocket::from_url(debug_url.data())
@ -145,20 +135,15 @@ namespace CEFInject
return res; return res;
} }
} }
} catch (...) { }
catch (...) {
spdlog::error( spdlog::error(
"CEFInject: Error injecting JS into tab: {}, {}", "CEFInject: Error injecting JS into tab: {}, {}",
std::string(tab_name.data()), std::string(tab_name.data()),
std::string(debug_url.data())); std::string(debug_url.data()));
} }
#ifdef _WIN32
WSACleanup();
#endif
return res; return res;
} }
#ifdef _WIN32
WSACleanup();
#endif
return nullptr; return nullptr;
} }
@ -178,6 +163,28 @@ namespace CEFInject
return nullptr; return nullptr;
} }
WSAStartupWrap::WSAStartupWrap()
{
#ifdef _WIN32
WSADATA wsa_data;
if (const INT rc = WSAStartup(MAKEWORD(2, 2), &wsa_data)) {
spdlog::error("WSAStartup Failed.");
return;
}
wsa_startup_succeeded_ = true;
#endif
}
WSAStartupWrap::~WSAStartupWrap()
{
#ifdef _WIN32
if (wsa_startup_succeeded_)
{
WSACleanup();
}
#endif
}
bool SteamTweaks::injectGlosSITweaks(std::string_view tab_name, uint16_t port) bool SteamTweaks::injectGlosSITweaks(std::string_view tab_name, uint16_t port)
{ {
@ -292,7 +299,7 @@ namespace CEFInject
for (auto& f : futures) for (auto& f : futures)
{ {
if (f.valid()){ if (f.valid()) {
f.wait(); f.wait();
} }
} }
@ -339,19 +346,19 @@ namespace CEFInject
} }
glossi_tweaks_injected_map_[tab["id"].get<std::string>()] = true; glossi_tweaks_injected_map_[tab["id"].get<std::string>()] = true;
futures.push_back(std::async([this, &tab]() futures.push_back(std::async([this, &tab]()
{ {
InjectJs(tab["title"].get<std::string>(), tab["webSocketDebuggerUrl"].get<std::string>(), glossi_tweaks_js_); InjectJs(tab["title"].get<std::string>(), tab["webSocketDebuggerUrl"].get<std::string>(), glossi_tweaks_js_);
for (auto& [path, js] : js_tweaks_cache_) { for (auto& [path, js] : js_tweaks_cache_) {
const auto dir_name = path.parent_path().filename(); const auto dir_name = path.parent_path().filename();
if (path_tab_map_.contains(dir_name.wstring())) { if (path_tab_map_.contains(dir_name.wstring())) {
if (tab["title"].get<std::string>().find(path_tab_map_.at(dir_name.wstring())) != std::string::npos) { if (tab["title"].get<std::string>().find(path_tab_map_.at(dir_name.wstring())) != std::string::npos) {
InjectJs(tab["title"].get<std::string>(), tab["webSocketDebuggerUrl"].get<std::string>(), js); InjectJs(tab["title"].get<std::string>(), tab["webSocketDebuggerUrl"].get<std::string>(), js);
}
}
} }
}
}
})); }));
} }
for (auto& f : futures) for (auto& f : futures)
@ -445,6 +452,13 @@ namespace CEFInject
}; };
find_tweak_files(tweaks_path.wstring(), find_tweak_files); find_tweak_files(tweaks_path.wstring(), find_tweak_files);
for (const auto& tweak : js_tweaks_cache_ | std::views::keys) {
spdlog::debug(
"CEFInject: Found {} tweak: {}",
builtin ? "builtin" : "user",
tweak.string()
);
}
} }
} }

@ -36,6 +36,15 @@ namespace CEFInject
nlohmann::basic_json<> InjectJs(std::string_view tab_name, std::string_view debug_url, std::wstring_view js, uint16_t port = internal::port_); nlohmann::basic_json<> InjectJs(std::string_view tab_name, std::string_view debug_url, std::wstring_view js, uint16_t port = internal::port_);
nlohmann::basic_json<> InjectJsByName(std::wstring_view tabname, std::wstring_view js, uint16_t port = internal::port_); nlohmann::basic_json<> InjectJsByName(std::wstring_view tabname, std::wstring_view js, uint16_t port = internal::port_);
class WSAStartupWrap
{
public:
explicit WSAStartupWrap();
~WSAStartupWrap();
private:
bool wsa_startup_succeeded_ = false;
};
class SteamTweaks class SteamTweaks
{ {
public: public:
@ -88,4 +97,8 @@ namespace CEFInject
)"; )";
}; };
namespace internal {
static WSAStartupWrap wsa_startup_wrap{};
}
} }

@ -57,6 +57,8 @@ int SteamTarget::run()
run_ = true; run_ = true;
server_.run();
if (!overlay_.expired()) if (!overlay_.expired())
overlay_.lock()->setEnabled(false); overlay_.lock()->setEnabled(false);
@ -149,9 +151,7 @@ int SteamTarget::run()
} }
const auto tray = createTrayMenu(); const auto tray = createTrayMenu();
server_.run();
bool delayed_full_init_1_frame = false; bool delayed_full_init_1_frame = false;
sf::Clock frame_time_clock; sf::Clock frame_time_clock;
@ -323,6 +323,12 @@ void SteamTarget::init_FuckingRenameMe()
steamwindow = FindWindow(L"Steam Big Picture Mode", nullptr); steamwindow = FindWindow(L"Steam Big Picture Mode", nullptr);
Sleep(50); Sleep(50);
} }
if (cef_tweaks_enabled_) {
steam_tweaks_.setAutoInject(true);
steam_tweaks_.update(999);
}
Sleep(6000); // DIRTY HACK to wait until BPM (GamepadUI) is initialized Sleep(6000); // DIRTY HACK to wait until BPM (GamepadUI) is initialized
// TODO: find way to force BPM even if BPM is not active // TODO: find way to force BPM even if BPM is not active
LoadLibrary((steam_path_ / "GameOverlayRenderer64.dll").wstring().c_str()); LoadLibrary((steam_path_ / "GameOverlayRenderer64.dll").wstring().c_str());

@ -1,11 +1,11 @@
import { SteamUiMode } from '../../common/Steam';
import { initTweak } from '../../common/tweakApi'; import { initTweak } from '../../common/tweakApi';
initTweak('MinimizeSteamGamepadUI', async () => { initTweak('MinimizeSteamGamepadUI', async () => {
const [isGamepadUI, minimizeGPUI] = await Promise.all([ const [isGamepadUI, minimizeGPUI] = await Promise.all([
(async () => (await SteamClient.UI.GetUiMode()) === SteamUiMode.GamepadUI)(), // (async () => (await SteamClient.UI.GetUiMode()) === SteamUiMode.GamepadUI)(),
true, // Steam is always GamepadUI if injected into GamepadUI, duh!
(async () => (await GlosSIApi.SteamTarget.getGlosSISettings()).minimizeSteamGamepadUI)() (async () => (await GlosSIApi.SteamTarget.getGlosSISettings()).minimizeSteamGamepadUI)()
]); ]);
if (isGamepadUI && minimizeGPUI) { if (isGamepadUI && minimizeGPUI) {

@ -83,7 +83,7 @@ namespace Settings
std::wstring globalModeGameId; /* = L"12605636929694728192"; */ std::wstring globalModeGameId; /* = L"12605636929694728192"; */
bool globalModeUseGamepadUI = false; bool globalModeUseGamepadUI = false;
bool allowGlobalMode = true; bool allowGlobalMode = true;
bool minimizeSteam = true; bool minimizeSteamGamepadUI = true;
} common; } common;
inline const std::map<std::wstring, std::function<void()>> cmd_args = { inline const std::map<std::wstring, std::function<void()>> cmd_args = {
@ -236,7 +236,7 @@ namespace Settings
safeParseValue(json, "globalModeGameId", common.globalModeGameId); safeParseValue(json, "globalModeGameId", common.globalModeGameId);
safeParseValue(json, "globalModeUseGamepadUI", common.globalModeUseGamepadUI); safeParseValue(json, "globalModeUseGamepadUI", common.globalModeUseGamepadUI);
safeParseValue(json, "minimizeSteam", common.minimizeSteam); safeParseValue(json, "minimizeSteamGamepadUI", common.minimizeSteamGamepadUI);
} }
catch (const nlohmann::json::exception &e) catch (const nlohmann::json::exception &e)
{ {
@ -338,6 +338,16 @@ namespace Settings
json["controller"]["allowDesktopConfig"] = controller.allowDesktopConfig; json["controller"]["allowDesktopConfig"] = controller.allowDesktopConfig;
json["controller"]["emulateDS4"] = controller.emulateDS4; json["controller"]["emulateDS4"] = controller.emulateDS4;
json["globalModeGameId"] = common.globalModeGameId;;
json["globalModeUseGamepadUI"] = common.globalModeUseGamepadUI;
json["minimizeSteamGamepadUI"] = common.minimizeSteamGamepadUI;
// json["steamgridApiKey"] = common.steamgridApiKey;
json["steamPath"] = common.steamPath;
json["steamUserId"] = common.steamUserId;
json["extendedLogging"] = common.extendedLogging; json["extendedLogging"] = common.extendedLogging;
json["name"] = common.name; json["name"] = common.name;
json["icon"] = common.icon; json["icon"] = common.icon;

Loading…
Cancel
Save