adapt: adapt LeviLamina v0.12.1

This commit is contained in:
Tsubasa6848
2024-04-29 07:04:48 +08:00
Unverified
parent 63586f62cb
commit 8321181be5
18 changed files with 341 additions and 405 deletions
+45 -54
View File
@@ -1,60 +1,49 @@
#include "Cleaner.h"
namespace ConfigFile {
bool mConsoleLog = true;
bool mAnnounce = true;
bool mSendToast = true;
std::vector<std::string> mIgnoreTags = {};
} // namespace ConfigFile
namespace Cleaner {
static std::shared_ptr<ll::schedule::task::Task<ll::chrono::ServerClock>> mAutoCleanTask = nullptr;
static std::shared_ptr<ll::schedule::task::Task<ll::chrono::ServerClock>> mCleanTaskCount = nullptr;
static std::shared_ptr<ll::schedule::task::Task<ll::chrono::ServerClock>> mCleanTaskTPS = nullptr;
ServerTimeScheduler scheduler;
bool auto_clean_triggerred = false;
void CleanTask() {
auto time = Config->getValue<int>({"Basic", "Notice1"}, 20);
auto announce_time = Config->getValue<int>({"Basic", "Notice2"}, 5);
auto time_1 = std::chrono::seconds::duration(time);
auto time_2 = std::chrono::seconds::duration(time - announce_time);
if (ConfigFile::mConsoleLog) {
logger.info(tr("cleaner.output.count1", {S(time_1.count())}));
auto& config = Cleaner::Entry::getInstance().getConfig();
auto time = config.Basic.Notice1;
auto announce_time = config.Basic.Notice2;
auto time_1 = std::chrono::seconds::duration(time);
auto time_2 = std::chrono::seconds::duration(time - announce_time);
if (config.Basic.ConsoleLog) {
logger.info(I18nAPI::get("cleaner.output.count1", {S(time_1.count())}));
}
if (ConfigFile::mAnnounce) {
Helper::broadcastMessage(tr("cleaner.output.count1", {S(time_1.count())}));
if (config.Basic.SendBroadcast) {
Helper::broadcastMessage(I18nAPI::get("cleaner.output.count1", {S(time_1.count())}));
}
if (ConfigFile::mSendToast) {
Helper::broadcastToast(tr("cleaner.output.count2", {S(announce_time)}));
if (config.Basic.SendToast) {
Helper::broadcastToast(I18nAPI::get("cleaner.output.count2", {S(announce_time)}));
}
scheduler.add<DelayTask>(time_2, [announce_time] {
if (ConfigFile::mConsoleLog) {
logger.info(tr("cleaner.output.count2", {S(announce_time)}));
Cleaner::Entry::getInstance().getScheduler().add<DelayTask>(time_2, [announce_time, &config] {
if (config.Basic.ConsoleLog) {
logger.info(I18nAPI::get("cleaner.output.count2", {S(announce_time)}));
}
if (ConfigFile::mAnnounce) {
Helper::broadcastMessage(tr("cleaner.output.count2", {S(announce_time)}));
if (config.Basic.SendBroadcast) {
Helper::broadcastMessage(I18nAPI::get("cleaner.output.count2", {S(announce_time)}));
}
if (ConfigFile::mSendToast) {
Helper::broadcastToast(tr("cleaner.output.count2", {S(announce_time)}));
if (config.Basic.SendToast) {
Helper::broadcastToast(I18nAPI::get("cleaner.output.count2", {S(announce_time)}));
}
});
scheduler.add<DelayTask>(time_1, [] {
Cleaner::Entry::getInstance().getScheduler().add<DelayTask>(time_1, [&config] {
auto count = ExecuteClean();
if (ConfigFile::mConsoleLog) {
logger.info(tr("cleaner.output.finish", {S(count)}));
if (config.Basic.ConsoleLog) {
logger.info(I18nAPI::get("cleaner.output.finish", {S(count)}));
}
if (ConfigFile::mAnnounce) {
Helper::broadcastMessage(tr("cleaner.output.finish", {S(count)}));
if (config.Basic.SendBroadcast) {
Helper::broadcastMessage(I18nAPI::get("cleaner.output.finish", {S(count)}));
}
if (ConfigFile::mSendToast) {
Helper::broadcastToast(tr("cleaner.output.finish", {S(count)}));
if (config.Basic.SendToast) {
Helper::broadcastToast(I18nAPI::get("cleaner.output.finish", {S(count)}));
}
auto_clean_triggerred = false;
});
@@ -62,23 +51,24 @@ void CleanTask() {
void AutoCleanTask(int seconds) {
auto time = std::chrono::seconds::duration(seconds);
mAutoCleanTask = scheduler.add<RepeatTask>(time, [] { CleanTask(); });
mAutoCleanTask = Cleaner::Entry::getInstance().getScheduler().add<RepeatTask>(time, [] { CleanTask(); });
}
void CleanTaskCount(int max_entities) {
mCleanTaskCount = scheduler.add<RepeatTask>(10s, [max_entities] {
auto& config = Cleaner::Entry::getInstance().getConfig();
mCleanTaskCount = Cleaner::Entry::getInstance().getScheduler().add<RepeatTask>(10s, [max_entities, &config] {
auto count = CountEntities();
if (auto_clean_triggerred == false) {
if (count >= max_entities) {
auto_clean_triggerred = true;
if (ConfigFile::mConsoleLog) {
logger.warn(tr("cleaner.output.triggerAutoCleanCount", {S(count)}));
if (config.Basic.ConsoleLog) {
logger.warn(I18nAPI::get("cleaner.output.triggerAutoCleanCount", {S(count)}));
}
if (ConfigFile::mAnnounce) {
Helper::broadcastMessage(tr("cleaner.output.triggerAutoCleanCount", {S(count)}));
if (config.Basic.SendBroadcast) {
Helper::broadcastMessage(I18nAPI::get("cleaner.output.triggerAutoCleanCount", {S(count)}));
}
if (ConfigFile::mSendToast) {
Helper::broadcastToast(tr("cleaner.output.triggerAutoCleanCount", {S(count)}));
if (config.Basic.SendToast) {
Helper::broadcastToast(I18nAPI::get("cleaner.output.triggerAutoCleanCount", {S(count)}));
}
CleanTask();
}
@@ -87,19 +77,20 @@ void CleanTaskCount(int max_entities) {
}
void CleanTaskTPS(float min_tps) {
mCleanTaskTPS = scheduler.add<RepeatTask>(10s, [min_tps] {
auto& config = Cleaner::Entry::getInstance().getConfig();
mCleanTaskTPS = Cleaner::Entry::getInstance().getScheduler().add<RepeatTask>(10s, [min_tps, &config] {
if (auto_clean_triggerred == false) {
if (GMLIB_Level::getLevel()->getServerAverageTps() <= min_tps) {
auto_clean_triggerred = true;
auto mspt = S(GMLIB_Level::getLevel()->getServerAverageTps());
if (ConfigFile::mConsoleLog) {
logger.warn(tr("cleaner.output.triggerAutoCleanTps", {mspt}));
if (config.Basic.ConsoleLog) {
logger.warn(I18nAPI::get("cleaner.output.triggerAutoCleanTps", {mspt}));
}
if (ConfigFile::mAnnounce) {
Helper::broadcastMessage(tr("cleaner.output.triggerAutoCleanTps", {mspt}));
if (config.Basic.SendBroadcast) {
Helper::broadcastMessage(I18nAPI::get("cleaner.output.triggerAutoCleanTps", {mspt}));
}
if (ConfigFile::mSendToast) {
Helper::broadcastToast(tr("cleaner.output.triggerAutoCleanTps", {mspt}));
if (config.Basic.SendToast) {
Helper::broadcastToast(I18nAPI::get("cleaner.output.triggerAutoCleanTps", {mspt}));
}
CleanTask();
}
@@ -110,15 +101,15 @@ void CleanTaskTPS(float min_tps) {
void stopAllTasks() {
if (!mCleanTaskCount) {
mCleanTaskTPS->cancel();
scheduler.remove(mCleanTaskTPS);
Cleaner::Entry::getInstance().getScheduler().remove(mCleanTaskTPS);
}
if (mCleanTaskCount) {
mCleanTaskCount->cancel();
scheduler.remove(mCleanTaskCount);
Cleaner::Entry::getInstance().getScheduler().remove(mCleanTaskCount);
}
if (mAutoCleanTask) {
mAutoCleanTask->cancel();
scheduler.remove(mAutoCleanTask);
Cleaner::Entry::getInstance().getScheduler().remove(mAutoCleanTask);
}
}
} // namespace Cleaner