|
2 | 2 | // Ported with help by Firee |
3 | 3 | // Mod made by Jouca & Firee |
4 | 4 |
|
| 5 | +#include "modules/events/DailyChest.hpp" |
5 | 6 | $execute { |
6 | | - // Loader::get()->queueInMainThread([]{ |
7 | | - // CCScheduler::get()->scheduleSelector(schedule_selector(EventHandler::check), EventHandler::create(), 1.0F, false); |
8 | | - // //CCScheduler::get()->scheduleUpdateForTarget(EventHandler::create(), Priority::Last, false); |
9 | | - // }); |
10 | 7 | // listenForSettingChanges("activate-background", [](bool value) { |
11 | 8 | // log::info("Activate Background changed to {}", value); |
12 | 9 | // toggleSpriteHooks(value); |
|
24 | 21 |
|
25 | 22 | bool g_socket_server_ran = false; |
26 | 23 |
|
| 24 | +$execute { |
| 25 | + if (Mod::get()->getSettingValue<bool>("server-notification")) { |
| 26 | + GDUtils::Events::OnServerConnect().listen([](bool const& connected) { |
| 27 | + Loader::get()->queueInMainThread([connected]() { |
| 28 | + if (connected) { |
| 29 | + Notification::create("Connected to Rate Server!", NotificationIcon::Success)->show(); |
| 30 | + } |
| 31 | + }); |
| 32 | + return ListenerResult::Stop; |
| 33 | + }).leak(); |
| 34 | + } |
| 35 | + auto [tx, rx] = arc::mpsc::channel<std::string>(1024); // i mean why would robtop ever rate that many levels |
| 36 | + auto [etx, erx] = arc::mpsc::channel<EventData>(1024); // ditto |
| 37 | + auto [ctx, crx] = arc::mpsc::channel<bool>(64); |
| 38 | + AMQT::setTx(std::move(tx)); |
| 39 | + EventsPush::setTx(std::move(ctx)); |
| 40 | + //auto interval = arc::interval(Duration::fromMillis(250)); |
| 41 | + async::runtime().spawn([rx = std::move(rx), crx = std::move(crx), erx = std::move(erx)]() mutable -> arc::Future<> { |
| 42 | + bool running = true; |
| 43 | + while (running) { |
| 44 | + co_await arc::select( |
| 45 | + arc::selectee(rx.recv(), [&](auto req) { |
| 46 | + if (req) { |
| 47 | + std::string msg = std::move(req).unwrap(); |
| 48 | + Loader::get()->queueInMainThread([m = std::move(msg)]() mutable { |
| 49 | + auto director = CCDirector::sharedDirector(); |
| 50 | + if (!director) return; |
| 51 | + auto scene = CCDirector::sharedDirector()->getRunningScene(); |
| 52 | + if (!scene) return; |
| 53 | + if (scene->getChildrenCount() == 0) return; |
| 54 | + if (EventsPush::canSendEvent(scene)) { |
| 55 | + EventsPush::pushRateLevel(scene, m); |
| 56 | + } |
| 57 | + }); |
| 58 | + } |
| 59 | + }), |
| 60 | + arc::selectee(crx.recv(), [&](auto req) { |
| 61 | + if (req) { |
| 62 | + bool b = std::move(req).unwrap(); |
| 63 | + log::debug("Cancelled (Code = {})", b); |
| 64 | + } else { |
| 65 | + log::debug("Cancelled (Code = Unknown)"); |
| 66 | + } |
| 67 | + Loader::get()->queueInMainThread([]() { |
| 68 | + if (auto scene = CCScene::get()) { |
| 69 | + EventsPush::eventCompletedCallback(scene); |
| 70 | + } |
| 71 | + }); |
| 72 | + }) |
| 73 | + ); |
| 74 | + } |
| 75 | + }); |
| 76 | +} |
| 77 | + |
27 | 78 | $on_game(Loaded) { |
28 | 79 | if (g_socket_server_ran) return; |
29 | 80 | if (geode::Mod::get()->getSettingValue<bool>("socketServer")) { |
@@ -61,46 +112,6 @@ bool g_socket_server_ran = false; |
61 | 112 | Notification::create("Couldn't connect to server, invalid Client ID", NotificationIcon::Error)->show(); |
62 | 113 | return; |
63 | 114 | } |
64 | | - auto [tx, rx] = arc::mpsc::channel<std::string>(1024); // i mean why would robtop ever rate that many levels |
65 | | - auto [etx, erx] = arc::mpsc::channel<EventData>(1024); // ditto |
66 | | - auto [ctx, crx] = arc::mpsc::channel<bool>(64); |
67 | | - AMQT::setTx(std::move(tx)); |
68 | | - EventsPush::setTx(std::move(ctx)); |
69 | | - async::runtime().spawn([rx = std::move(rx), crx = std::move(crx), erx = std::move(erx)]() mutable -> arc::Future<> { |
70 | | - bool running = true; |
71 | | - while (running) { |
72 | | - co_await arc::select( |
73 | | - arc::selectee(rx.recv(), [&](auto req) { |
74 | | - if (req) { |
75 | | - std::string msg = std::move(req).unwrap(); |
76 | | - Loader::get()->queueInMainThread([m = std::move(msg)]() mutable { |
77 | | - auto director = CCDirector::sharedDirector(); |
78 | | - if (!director) return; |
79 | | - auto scene = CCDirector::sharedDirector()->getRunningScene(); |
80 | | - if (!scene) return; |
81 | | - if (scene->getChildrenCount() == 0) return; |
82 | | - if (EventsPush::canSendEvent(scene)) { |
83 | | - EventsPush::pushRateLevel(scene, m); |
84 | | - } |
85 | | - }); |
86 | | - } |
87 | | - }), |
88 | | - arc::selectee(crx.recv(), [&](auto req) { |
89 | | - if (req) { |
90 | | - bool b = std::move(req).unwrap(); |
91 | | - log::debug("Cancelled (Code = {})", b); |
92 | | - } else { |
93 | | - log::debug("Cancelled (Code = Unknown)"); |
94 | | - } |
95 | | - Loader::get()->queueInMainThread([]() { |
96 | | - if (auto scene = CCScene::get()) { |
97 | | - EventsPush::eventCompletedCallback(scene); |
98 | | - } |
99 | | - }); |
100 | | - }) |
101 | | - ); |
102 | | - } |
103 | | - }); |
104 | 115 | std::thread hThread([]() mutable { |
105 | 116 | AMQT handler(Mod::get()->getSavedValue<std::string>("clientId")); |
106 | 117 | handler.connect(); |
|
0 commit comments