SDXFrameWork 0.05 SDXFrameWork

- メインページ
- 関連ページ
- クラス

全て クラス ネームスペース 関数 変数 列挙型 列挙型の値 ページ
Framework/Module.h
1 #pragma once
2 #include <memory>
3 #include <functional>
4
5 namespace SDX
6 {
8 class IModule
10 {
11 public:
12 virtual void Update() = 0;
13 };
14
16 class PartTimeModule : public IModule
18 {
19 private:
20 std::list< std::shared_ptr<IModule> > modules;
21 std::function<bool()> judge;
22 public:
23 PartTimeModule(IModule *module , std::function<bool()> judge) :
24 judge(judge)
25 {
26 this->Add( module );
27 }
28
29 void Update()
30 {
31 if( !judge() ) return;
32
33 for( auto &it : modules )
34 {
35 it->Update();
36 }
37 };
38
39 void Add( IModule *module )
40 {
41 this->modules.push_back( std::shared_ptr<IModule>(module) );
42 }
43 };
44
46 class FuncModule : public IModule
48 {
49 private:
50 std::function<void()> func;
51 public:
52 FuncModule( std::function<void()> func):
53 func(func)
54 {}
55
56 void Update()
57 {
58 func();
59 }
60 };
61
62 }