1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 03:28:20 +02:00

DirectInput support

This commit is contained in:
Brian Fiete 2020-11-27 06:25:54 -08:00
parent b9f84d328e
commit 98c35f4a87
6 changed files with 64 additions and 1 deletions

View file

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

View file

@ -9,6 +9,7 @@
#include "img/BFIData.h"
#include "util/Vector.h"
#include "util/PerfTimer.h"
#include "util/TLSingleton.h"
#include "util/AllocDebug.h"
@ -22,7 +23,7 @@ USING_NS_BF;
#pragma warning(disable:4996)
static String gTempString;
static UTF16String gTempUTF16String;
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()
{
return gBFApp->GetSoundManager();
@ -725,6 +737,17 @@ BF_EXPORT ShaderParam* BF_CALLTYPE Gfx_GetShaderParam(Shader* shader, const char
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()
{
return (int) BFTickCount();

View file

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

View file

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

View file

@ -4,6 +4,7 @@
#include <signal.h>
#include "../../util/BeefPerf.h"
#include "DSoundManager.h"
#include "DInputManager.h"
#include <dwmapi.h>
#pragma comment(lib, "dwmapi.lib")
@ -1137,12 +1138,14 @@ WinBFApp::WinBFApp()
mDataDir = mInstallDir;
mInMsgProc = false;
mDSoundManager = NULL;
mDInputManager = NULL;
}
WinBFApp::~WinBFApp()
{
delete mRenderDevice;
delete mDSoundManager;
delete mDInputManager;
}
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)
{
if (clientSized)

View file

@ -10,6 +10,7 @@ NS_BF_BEGIN;
class RenderDevice;
class DSoundManager;
class DInputManager;
typedef Dictionary<void*, HGLOBAL> PtrToHGlobalMap;
typedef Dictionary<String, uint32> StringToUIntMap;
@ -90,6 +91,7 @@ public:
bool mInMsgProc;
StringToUIntMap mClipboardFormatMap;
DSoundManager* mDSoundManager;
DInputManager* mDInputManager;
protected:
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 RehupMouse() override;
virtual String EnumerateInputDevices() override;
virtual BFInputDevice* CreateInputDevice(const StringImpl& guid) override;
virtual BFSysBitmap* LoadSysBitmap(const WCHAR* fileName) override;
virtual BFSoundManager* GetSoundManager() override;