Brian Fiete преди 4 години
родител
ревизия
98c35f4a87

+ 10 - 0
BeefySysLib/BFApp.h

@@ -40,6 +40,13 @@ class BFSysBitmap
 public:
 public:
 };
 };
 
 
+class BFInputDevice
+{
+public:
+	virtual ~BFInputDevice() {}
+	virtual String GetState() = 0;
+};
+
 class BFApp
 class BFApp
 {
 {
 public:
 public:
@@ -99,6 +106,9 @@ public:
 	virtual void			SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) = 0;
 	virtual void			SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) = 0;
 	virtual void			RehupMouse() {}
 	virtual void			RehupMouse() {}
 
 
+	virtual String			EnumerateInputDevices() { return ""; }
+	virtual BFInputDevice*	CreateInputDevice(const StringImpl& guid) { return NULL; }
+
 	virtual BFSysBitmap*	LoadSysBitmap(const wchar_t* fileName) = 0;
 	virtual BFSysBitmap*	LoadSysBitmap(const wchar_t* fileName) = 0;
 
 
 	virtual FileStream*		OpenBinaryFile(const StringImpl& fileName);
 	virtual FileStream*		OpenBinaryFile(const StringImpl& fileName);

+ 24 - 1
BeefySysLib/BeefySysLib.cpp

@@ -9,6 +9,7 @@
 #include "img/BFIData.h"
 #include "img/BFIData.h"
 #include "util/Vector.h"
 #include "util/Vector.h"
 #include "util/PerfTimer.h"
 #include "util/PerfTimer.h"
+#include "util/TLSingleton.h"
 
 
 #include "util/AllocDebug.h"
 #include "util/AllocDebug.h"
 
 
@@ -22,7 +23,7 @@ USING_NS_BF;
 
 
 #pragma warning(disable:4996)
 #pragma warning(disable:4996)
 
 
-
+static String gTempString;
 static UTF16String gTempUTF16String;
 static UTF16String gTempUTF16String;
 int gPixelsDrawn = 0;
 int gPixelsDrawn = 0;
 
 
@@ -260,6 +261,17 @@ BF_EXPORT void BF_CALLTYPE BFApp_RehupMouse()
 
 
 }
 }
 
 
+BF_EXPORT const char* BF_CALLTYPE BFApp_EnumerateInputDevices()
+{	
+	gTempString = gBFApp->EnumerateInputDevices();
+	return gTempString.c_str();
+}
+
+BF_EXPORT BFInputDevice* BFApp_CreateInputDevice(const char* guid)
+{
+	return gBFApp->CreateInputDevice(guid);
+}
+
 BF_EXPORT BFSoundManager* BF_CALLTYPE BFApp_GetSoundManager()
 BF_EXPORT BFSoundManager* BF_CALLTYPE BFApp_GetSoundManager()
 {
 {
 	return gBFApp->GetSoundManager();
 	return gBFApp->GetSoundManager();
@@ -725,6 +737,17 @@ BF_EXPORT ShaderParam* BF_CALLTYPE Gfx_GetShaderParam(Shader* shader, const char
 	return shader->GetShaderParam(shaderName);
 	return shader->GetShaderParam(shaderName);
 }
 }
 
 
+BF_EXPORT void BF_CALLTYPE BFInput_Destroy(BFInputDevice* inputDevice)
+{
+	delete inputDevice;
+}
+
+BF_EXPORT const char* BF_CALLTYPE BFInput_GetState(BFInputDevice* inputDevice)
+{
+	gTempString = inputDevice->GetState();
+	return gTempString.c_str();
+}
+
 BF_EXPORT int BF_CALLTYPE BF_TickCount()
 BF_EXPORT int BF_CALLTYPE BF_TickCount()
 {
 {
 	return (int) BFTickCount();
 	return (int) BFTickCount();

+ 2 - 0
BeefySysLib/BeefySysLib.vcxproj

@@ -489,6 +489,7 @@ copy /y "$(OutDir)$(TargetName).lib" "$(SolutionDir)\BeefLibs\Beefy2D\dist\"</Co
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
     </ClCompile>
     </ClCompile>
     <ClCompile Include="platform\win\CrashCatcher.cpp" />
     <ClCompile Include="platform\win\CrashCatcher.cpp" />
+    <ClCompile Include="platform\win\DInputManager.cpp" />
     <ClCompile Include="platform\win\DSoundInstance.cpp" />
     <ClCompile Include="platform\win\DSoundInstance.cpp" />
     <ClCompile Include="platform\win\DSoundManager.cpp" />
     <ClCompile Include="platform\win\DSoundManager.cpp" />
     <ClCompile Include="platform\win\WinBFApp.cpp">
     <ClCompile Include="platform\win\WinBFApp.cpp">
@@ -1996,6 +1997,7 @@ copy /y "$(OutDir)$(TargetName).lib" "$(SolutionDir)\BeefLibs\Beefy2D\dist\"</Co
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
     </ClInclude>
     </ClInclude>
     <ClInclude Include="platform\win\CrashCatcher.h" />
     <ClInclude Include="platform\win\CrashCatcher.h" />
+    <ClInclude Include="platform\win\DInputManager.h" />
     <ClInclude Include="platform\win\DSoundInstance.h" />
     <ClInclude Include="platform\win\DSoundInstance.h" />
     <ClInclude Include="platform\win\DSoundManager.h" />
     <ClInclude Include="platform\win\DSoundManager.h" />
     <ClInclude Include="platform\win\PlatformApp.h" />
     <ClInclude Include="platform\win\PlatformApp.h" />

+ 6 - 0
BeefySysLib/BeefySysLib.vcxproj.filters

@@ -701,6 +701,9 @@
     <ClCompile Include="HeadlessApp.cpp">
     <ClCompile Include="HeadlessApp.cpp">
       <Filter>src</Filter>
       <Filter>src</Filter>
     </ClCompile>
     </ClCompile>
+    <ClCompile Include="platform\win\DInputManager.cpp">
+      <Filter>src\platform\win</Filter>
+    </ClCompile>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <ClInclude Include="Common.h">
     <ClInclude Include="Common.h">
@@ -1063,6 +1066,9 @@
     <ClInclude Include="util\BinaryHeap.h">
     <ClInclude Include="util\BinaryHeap.h">
       <Filter>src\util</Filter>
       <Filter>src\util</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="platform\win\DInputManager.h">
+      <Filter>src\platform\win</Filter>
+    </ClInclude>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <CustomBuild Include="third_party\libffi\i686-pc-cygwin\src\x86\win32.asm">
     <CustomBuild Include="third_party\libffi\i686-pc-cygwin\src\x86\win32.asm">

+ 17 - 0
BeefySysLib/platform/win/WinBFApp.cpp

@@ -4,6 +4,7 @@
 #include <signal.h>
 #include <signal.h>
 #include "../../util/BeefPerf.h"
 #include "../../util/BeefPerf.h"
 #include "DSoundManager.h"
 #include "DSoundManager.h"
+#include "DInputManager.h"
 
 
 #include <dwmapi.h>
 #include <dwmapi.h>
 #pragma comment(lib, "dwmapi.lib")
 #pragma comment(lib, "dwmapi.lib")
@@ -1137,12 +1138,14 @@ WinBFApp::WinBFApp()
 	mDataDir = mInstallDir;
 	mDataDir = mInstallDir;
 	mInMsgProc = false;
 	mInMsgProc = false;
 	mDSoundManager = NULL;
 	mDSoundManager = NULL;
+	mDInputManager = NULL;
 }
 }
 
 
 WinBFApp::~WinBFApp()
 WinBFApp::~WinBFApp()
 {	
 {	
 	delete mRenderDevice;
 	delete mRenderDevice;
 	delete mDSoundManager;
 	delete mDSoundManager;
+	delete mDInputManager;
 }
 }
 
 
 void WinBFApp::Init()
 void WinBFApp::Init()
@@ -1269,6 +1272,20 @@ void WinBFApp::RehupMouse()
 	}
 	}
 }
 }
 
 
+String WinBFApp::EnumerateInputDevices()
+{
+	if (mDInputManager == NULL)
+		mDInputManager = new DInputManager();
+	return mDInputManager->EnumerateDevices();
+}
+
+BFInputDevice* WinBFApp::CreateInputDevice(const StringImpl& guid)
+{
+	if (mDInputManager == NULL)
+		mDInputManager = new DInputManager();
+	return mDInputManager->CreateInputDevice(guid);
+}
+
 void WinBFWindow::SetMinimumSize(int minWidth, int minHeight, bool clientSized)
 void WinBFWindow::SetMinimumSize(int minWidth, int minHeight, bool clientSized)
 {
 {
 	if (clientSized)
 	if (clientSized)

+ 5 - 0
BeefySysLib/platform/win/WinBFApp.h

@@ -10,6 +10,7 @@ NS_BF_BEGIN;
 
 
 class RenderDevice;
 class RenderDevice;
 class DSoundManager;
 class DSoundManager;
+class DInputManager;
 
 
 typedef Dictionary<void*, HGLOBAL> PtrToHGlobalMap;
 typedef Dictionary<void*, HGLOBAL> PtrToHGlobalMap;
 typedef Dictionary<String, uint32> StringToUIntMap;
 typedef Dictionary<String, uint32> StringToUIntMap;
@@ -90,6 +91,7 @@ public:
 	bool					mInMsgProc;
 	bool					mInMsgProc;
 	StringToUIntMap			mClipboardFormatMap;
 	StringToUIntMap			mClipboardFormatMap;
 	DSoundManager*			mDSoundManager;
 	DSoundManager*			mDSoundManager;
+	DInputManager*			mDInputManager;
 	
 	
 protected:
 protected:
 	virtual void			Draw() override;	
 	virtual void			Draw() override;	
@@ -115,6 +117,9 @@ public:
 	virtual void			SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) override;
 	virtual void			SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) override;
 	virtual void			RehupMouse() override;
 	virtual void			RehupMouse() override;
 
 
+	virtual String			EnumerateInputDevices() override;
+	virtual BFInputDevice*	CreateInputDevice(const StringImpl& guid) override;
+
 	virtual BFSysBitmap*	LoadSysBitmap(const WCHAR* fileName) override;
 	virtual BFSysBitmap*	LoadSysBitmap(const WCHAR* fileName) override;
 
 
 	virtual BFSoundManager* GetSoundManager() override;
 	virtual BFSoundManager* GetSoundManager() override;