This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
YimMenu/src/script_mgr.hpp

41 lines
699 B
C++
Raw Normal View History

2019-03-21 20:18:31 +01:00
#pragma once
#include "common.hpp"
#include "script.hpp"
namespace big
{
using script_list = std::vector<std::unique_ptr<script>>;
2019-03-21 20:18:31 +01:00
class script_mgr
{
public:
explicit script_mgr() = default;
~script_mgr() = default;
2019-03-21 20:18:31 +01:00
script* add_script(std::unique_ptr<script> script);
void remove_script(script* script);
2019-03-21 20:18:31 +01:00
void remove_all_scripts();
inline void for_each_script(auto func)
{
std::lock_guard lock(m_mutex);
for (const auto& script : m_scripts)
{
func(script);
}
}
2019-03-21 20:18:31 +01:00
void tick();
2019-03-21 20:18:31 +01:00
private:
void tick_internal();
2019-03-21 20:18:31 +01:00
private:
std::recursive_mutex m_mutex;
script_list m_scripts;
script_list m_scripts_to_add;
2019-03-21 20:18:31 +01:00
};
inline script_mgr g_script_mgr;
}