完全搞定除了皮肤

This commit is contained in:
Huoji's
2023-10-06 05:08:40 +08:00
parent 40fc60e481
commit 9232d1c390
30 changed files with 3076 additions and 852 deletions

View File

@@ -4,15 +4,15 @@ extern auto TimerCallBack(_GameTimer* timer) -> void;
extern auto RunTickCallBack(_GameTickRunTime* timer) -> void;
}; // namespace ScriptApis
namespace GameTimer {
std::shared_mutex mutex_timerList;
std::recursive_mutex mutex_timerList;
std::vector<_GameTimer*> timerList;
auto AddTimer(_GameTimer* timer) -> int {
std::unique_lock<std::shared_mutex> lock(mutex_timerList);
std::unique_lock<std::recursive_mutex> lock(mutex_timerList);
timerList.push_back(timer);
return timerList.size() - 1;
};
auto CleanUpTimers() -> void {
std::unique_lock<std::shared_mutex> lock(mutex_timerList);
std::unique_lock<std::recursive_mutex> lock(mutex_timerList);
for (auto it = timerList.begin(); it != timerList.end();) {
if ((*it)->m_bPreserveMapChange) {
++it;
@@ -23,7 +23,7 @@ auto CleanUpTimers() -> void {
}
};
auto ExcuteTimers() -> void {
std::shared_lock<std::shared_mutex> lock(mutex_timerList);
std::unique_lock<std::recursive_mutex> lock(mutex_timerList);
for (auto it = timerList.begin(); it != timerList.end();) {
if ((*it)->m_flLastExecute == -1) {
(*it)->m_flLastExecute = global::m_flUniversalTime;
@@ -44,21 +44,21 @@ auto ExcuteTimers() -> void {
}
}; // namespace GameTimer
namespace GameTickRunTime {
std::shared_mutex mutex_tickRunList;
std::recursive_mutex mutex_tickRunList;
std::vector<_GameTickRunTime*> tickRunList;
auto AddTickFunction(_GameTickRunTime* timer) -> void {
std::unique_lock<std::shared_mutex> lock(mutex_tickRunList);
std::unique_lock<std::recursive_mutex> lock(mutex_tickRunList);
tickRunList.push_back(timer);
};
auto CleanUpTickFunctions() -> void {
std::unique_lock<std::shared_mutex> lock(mutex_tickRunList);
std::unique_lock<std::recursive_mutex> lock(mutex_tickRunList);
for (auto it = tickRunList.begin(); it != tickRunList.end();) {
delete (*it);
it = tickRunList.erase(it);
}
};
auto ExcuteTickFunctions() -> void {
std::shared_lock<std::shared_mutex> lock(mutex_tickRunList);
std::unique_lock<std::recursive_mutex> lock(mutex_tickRunList);
for (auto it = tickRunList.begin(); it != tickRunList.end();) {
ScriptApis::RunTickCallBack(*it);
delete (*it);