SDXFrameWork  0.05
SDXFrameWork
 全て クラス ネームスペース 関数 変数 列挙型 列挙型の値 ページ
Utility/Module.h
1 #pragma once
2 #include <memory>
3 #include <functional>
4 
5 namespace SDX
6 {
9 class IModule
10 {
11  public:
12  virtual void Update() = 0;
13 };
14 
17 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()> 実行する条件式) :
24  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 
47 class FuncModule : public IModule
48 {
49  private:
50  std::function<void()> func;
51  public:
52  FuncModule( std::function<void()> 関数オブジェクト):
53  func(関数オブジェクト)
54  {}
55 
56  void Update()
57  {
58  func();
59  }
60 };
61 
62 }