OSDN Git Service

354b5d99e7328ca57f9e8ceb3628683aeda0baca
[shooting3/shootinggame.git] / ShootingGame / GameStateMachine.h
1 #pragma once
2 namespace ShootingGame 
3 {
4
5   namespace Event 
6   {
7     struct Init{};
8     struct PushStart {};
9     struct PushSoundEdit {};
10     struct TimeOut {};
11     struct Update {};
12     struct Render {};
13     struct Escape {};
14   }
15   
16   ref class GameMain; 
17   
18   struct GameStateMachine {
19   private:
20     struct impl;
21   public:
22
23     explicit  GameStateMachine(GameMain^ main);
24     template <class Event> void ProcessEvent(Event const& e);
25     void Start();
26     void Stop();
27     ~GameStateMachine();
28   private:
29     std::unique_ptr<impl> impl_;
30   };
31
32 }
33