OSDN Git Service

Boost.MSMでメニュー部分を実装
[shooting3/shootinggame.git] / ShootingGame / GameMain.h
index bab94ba..ecbb374 100644 (file)
 #include "AutoThrottle.h"
 #include "BasicSprites.h"
 #include "BasicLoader.h"
-#include "SoundManager.h"
 #include "GameStateMachine.h"
+#include "SoundManager.h"
 
 namespace ShootingGame {
-struct CharacterData
-{
-  float2 pos;
-  float2 vel;
-  float rot;
-  float rotVel;
-  float scale;
-};
-
-ref class GameMain : public DirectXBase
-{
-internal:
-  GameMain();
-  ~GameMain();
-  virtual void CreateDeviceIndependentResources() override;
-  virtual void CreateDeviceResources() override;
-  virtual void CreateWindowSizeDependentResources() override;
-  virtual void Render() override;
-
-  void Initialize(
-    _In_ Windows::UI::Core::CoreWindow^ window,
-    _In_ Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ swapChainPanel,
-    _In_ float dpi
-    ) ;
-
-  void Update(float timeTotal, float timeDelta);
-
-  static const float BACKBUFFER_WIDTH;
-  static const float BACKBUFFER_HEIGHT;
-
-  sf::SoundManager& GameMain::SoundManager()
-  {
-    return *soundManager_;
-  }
+  
 
-  sf::SoundDriver& GameMain::SoundDriver()
+  struct CharacterData
   {
-    return *soundDriver_;
-  }
+    float2 pos;
+    float2 vel;
+    float rot;
+    float rotVel;
+    float scale;
+  };
 
-  BasicSprites::SpriteBatch^ GameMain::SpriteBatch()
+//  ref class MainPage;
+  
+  ref class GameMain : public DirectXBase
   {
-    return spriteBatch_;
-  }
-
-  ::AutoThrottle^ GameMain::AutoThrottle() {return autoThrottle_;}
-  ::SampleOverlay^ GameMain::SampleOverlay() {return sampleOverlay_;}
-
-//  void InitSound();
-  float RandFloat(float min, float max);
-  void StartSound();
-  void StopSound();
-  void ClearScreen();
-  void RenderScreen();
-
-  void LoadTexture(const std::wstring& filename,ID3D11Texture2D** texPtrAddr);
-private:
-  GameStateMachine state_;
-  void ExecuteSoundThread();
-  ::SampleOverlay^ sampleOverlay_;
-  ::AutoThrottle^ autoThrottle_;
-  BasicSprites::SpriteBatch^ spriteBatch_;
-  Microsoft::WRL::ComPtr<ID3D11Texture2D> backBuffer_;
-  Microsoft::WRL::ComPtr<ID3D11RenderTargetView>  backBufferRenderTargetView_;
-  //  Microsoft::WRL::ComPtr<ID3D11DepthStencilView>  backBufferDepthStencilView_;
-  //   Microsoft::WRL::ComPtr<ID3D11DepthStencilState> backBufferDepthStencilState_;
-  float scale_;
-  CD3D11_VIEWPORT backBufferViewPort_;
-  CD3D11_VIEWPORT swapChainViewPort_;
-  std::vector<CharacterData> characters_;
-  bool isDestroy_;
-  Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ panel_;
-  std::unique_ptr<sf::SoundManager> soundManager_;
-  std::unique_ptr<sf::SoundDriver> soundDriver_;
-  //std::thread soundThread_;
-  concurrency::task<void> soundTask_;
-};
+  internal:
+    
+    delegate void SubFrameFuncDelegate(Windows::UI::Xaml::Controls::Page^ p);
+    delegate void IsBackButtonEnabledDelgate(bool v);
+
+    explicit GameMain();
+    ~GameMain();
+    virtual void CreateDeviceIndependentResources() override;
+    virtual void CreateDeviceResources() override;
+    virtual void CreateWindowSizeDependentResources() override;
+    virtual void Render() override;
+
+    void Initialize(
+      _In_ Windows::UI::Core::CoreWindow^ window,
+      _In_ Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ swapChainPanel,
+      _In_ float dpi
+      ) ;
+
+    void Update(float timeTotal, float timeDelta);
+
+    static const float BACKBUFFER_WIDTH;
+    static const float BACKBUFFER_HEIGHT;
+
+    sf::SoundManager& GameMain::SoundManager()
+    {
+      return *soundManager_;
+    }
+
+    sf::SoundDriver& GameMain::SoundDriver()
+    {
+      return *soundDriver_;
+    }
+
+    BasicSprites::SpriteBatch^ GameMain::SpriteBatch()
+    {
+      return spriteBatch_;
+    }
+
+    ::AutoThrottle^ GameMain::AutoThrottle() {return autoThrottle_;}
+    ::SampleOverlay^ GameMain::SampleOverlay() {return sampleOverlay_;}
+
+    //  void InitSound();
+    float RandFloat(float min, float max);
+    void StartSound();
+    void StopSound();
+    void ClearScreen();
+    void RenderScreen();
+
+    void LoadTexture(const std::wstring& filename,ID3D11Texture2D** texPtrAddr);
+
+    void Subframe(Windows::UI::Xaml::Controls::Page^ p)
+    {
+      subFrameFunction_(p);
+    }
+
+    void SetSubFrameFunc(SubFrameFuncDelegate^ func)
+    {
+        subFrameFunction_ = func;
+    }
+
+    ShootingGame::GameStateMachine&  GameMain::GameStateMachine()
+    {
+      return state_;
+    }
+
+    void SetIsBackButtonEnabledDelgate(IsBackButtonEnabledDelgate^ d)
+    {
+      isBackButtonEnabledDelgate_ = d;
+    }
+
+    void IsBackButtonEnabled(bool v)
+    {
+      isBackButtonEnabledDelgate_(v);
+    }
+
+  private:
+//    std::function<void(Windows::UI::Xaml::Controls::Page^ p)> subFrameFunction_;
+    SubFrameFuncDelegate^ subFrameFunction_;
+    IsBackButtonEnabledDelgate^ isBackButtonEnabledDelgate_;
+    ShootingGame::GameStateMachine state_;
+    void ExecuteSoundThread();
+    ::SampleOverlay^ sampleOverlay_;
+    ::AutoThrottle^ autoThrottle_;
+    BasicSprites::SpriteBatch^ spriteBatch_;
+    Microsoft::WRL::ComPtr<ID3D11Texture2D> backBuffer_;
+    Microsoft::WRL::ComPtr<ID3D11RenderTargetView>  backBufferRenderTargetView_;
+    //  Microsoft::WRL::ComPtr<ID3D11DepthStencilView>  backBufferDepthStencilView_;
+    // Microsoft::WRL::ComPtr<ID3D11DepthStencilState> backBufferDepthStencilState_;
+    float scale_;
+    CD3D11_VIEWPORT backBufferViewPort_;
+    CD3D11_VIEWPORT swapChainViewPort_;
+    std::vector<CharacterData> characters_;
+    bool isDestroy_;
+    Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ panel_;
+    std::unique_ptr<sf::SoundManager> soundManager_;
+    std::unique_ptr<sf::SoundDriver> soundDriver_;
+    concurrency::task<void> soundTask_;
+    sf::handle_holder eventHolder_;
+  };
 }