diff --git a/Code/Game/GameClient/DanBiasGame_Impl.cpp b/Code/Game/GameClient/DanBiasGame_Impl.cpp index b0107a17..2a46b8d6 100644 --- a/Code/Game/GameClient/DanBiasGame_Impl.cpp +++ b/Code/Game/GameClient/DanBiasGame_Impl.cpp @@ -166,6 +166,7 @@ namespace DanBias DanBiasGame::Result DanBiasGame::Update(float deltaTime) { { // updating mouse input + // TODO: Is obosolete when Dennis's input system is wired in POINT mousePos; GetCursorPos( &mousePos ); @@ -179,7 +180,7 @@ namespace DanBias mouseNormalisedY /= (float)(windowVertex.bottom - windowVertex.top); data.inputObj.Update( mouseNormalisedX, mouseNormalisedY ); - } + } if( data.serverOwner ) { diff --git a/Code/Misc/Input/Include/ApplicationKeyboard.h b/Code/Misc/Input/Include/ApplicationKeyboard.h new file mode 100644 index 00000000..d28140b3 --- /dev/null +++ b/Code/Misc/Input/Include/ApplicationKeyboard.h @@ -0,0 +1,35 @@ +///////////////////////////////////////////////////////////////////// +// Created by [Dan Andersson] [2014] +///////////////////////////////////////////////////////////////////// +#ifndef INPUT_APPLICATION_KEBOARD_H +#define INPUT_APPLICATION_KEBOARD_H + +#include "InputObject.h" +#include + +namespace Input +{ + class ApplicationKeyboard : public InputObject + { + public: + bool IsActive() const; + + void Activate(); + void Deactivate(); + + void BindTextTarget( ::std::wstring *field ); + void ReleaseTextTarget(); + + protected: + ::std::wstring *textTarget; + ::std::wstring::size_type writePos; + + ApplicationKeyboard(); + ~ApplicationKeyboard(); + + private: + bool active; + }; +} + +#endif // !INPUT_KEBOARD_H diff --git a/Code/Misc/Input/Include/Common.h b/Code/Misc/Input/Include/Common.h index a82ad47b..eed90eb7 100644 --- a/Code/Misc/Input/Include/Common.h +++ b/Code/Misc/Input/Include/Common.h @@ -21,7 +21,7 @@ namespace Input { SAIType_Keyboard, SAIType_Mouse, - SAIType_ApplicationKeyboard, + //SAIType_ApplicationKeyboard, SAIType_futureExample1, SAIType_futureExample2, SAIType_futureExample3, diff --git a/Code/Misc/Input/Include/Win32/Win32ApplicationKeyboard.h b/Code/Misc/Input/Include/Win32/Win32ApplicationKeyboard.h new file mode 100644 index 00000000..98bcc0e9 --- /dev/null +++ b/Code/Misc/Input/Include/Win32/Win32ApplicationKeyboard.h @@ -0,0 +1,23 @@ +///////////////////////////////////////////////////////////////////// +// Created by [Dan Andersson] [2014] +///////////////////////////////////////////////////////////////////// +#ifndef INPUT_WIN32_APPLICATION_KEBOARD_H +#define INPUT_WIN32_APPLICATION_KEBOARD_H + +#define NOMINMAX +#include +#include "..\ApplicationKeyboard.h" + +namespace Input +{ + class Win32ApplicationKeyboard : public ApplicationKeyboard + { + public: + Win32ApplicationKeyboard(); + ~Win32ApplicationKeyboard(); + + void CaptureText( UINT msg, WPARAM param ); + }; +} + +#endif // !INPUT_WIN32_APPLICATION_KEBOARD_H diff --git a/Code/Misc/Input/Include/Win32/Win32Input.h b/Code/Misc/Input/Include/Win32/Win32Input.h index 1d2605cf..e8306400 100644 --- a/Code/Misc/Input/Include/Win32/Win32Input.h +++ b/Code/Misc/Input/Include/Win32/Win32Input.h @@ -8,6 +8,7 @@ #include "..\InputManager.h" #include "Win32Keyboard.h" #include "Win32Mouse.h" +#include "Win32ApplicationKeyboard.h" #include #define NOMINMAX #include diff --git a/Code/Misc/Input/Input.vcxproj b/Code/Misc/Input/Input.vcxproj index 9378c5f6..d8aeb72d 100644 --- a/Code/Misc/Input/Input.vcxproj +++ b/Code/Misc/Input/Input.vcxproj @@ -20,7 +20,6 @@ - @@ -36,41 +35,37 @@ + - - - {35aea3c0-e0a7-4e1e-88cd-514aa5a442b1} - - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B} Input - Application + StaticLibrary true v110 Unicode - Application + StaticLibrary true v110 Unicode - Application + StaticLibrary false v110 true Unicode - Application + StaticLibrary false v110 true @@ -96,28 +91,32 @@ $(SolutionDir)..\External\Lib\$(ProjectName)\ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D + $(IncludePath) $(SolutionDir)..\External\Lib\$(ProjectName)\ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName) + $(IncludePath) $(SolutionDir)..\External\Lib\$(ProjectName)\ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D + $(IncludePath) $(SolutionDir)..\External\Lib\$(ProjectName)\ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName) + $(IncludePath) Level3 Disabled true - %(AdditionalIncludeDirectories) + $(SolutionDir)Misc\Utilities;%(AdditionalIncludeDirectories) true diff --git a/Code/Misc/Input/Source/ApplicationKeyboard.cpp b/Code/Misc/Input/Source/ApplicationKeyboard.cpp new file mode 100644 index 00000000..66ddb042 --- /dev/null +++ b/Code/Misc/Input/Source/ApplicationKeyboard.cpp @@ -0,0 +1,44 @@ +#include "../Include/ApplicationKeyboard.h" + +using namespace ::Input; + +ApplicationKeyboard::ApplicationKeyboard() : + InputObject( Enum::SAIType_ApplicationKeyboard ) +{ + this->textTarget = nullptr; + this->writePos = 0; + this->isEnabled = true; +} + +ApplicationKeyboard::~ApplicationKeyboard() +{ /* DO nothing */ } + +bool ApplicationKeyboard::IsActive() const +{ + return this->isEnabled; +} + +void ApplicationKeyboard::Activate() +{ + this->isEnabled = true; +} + +void ApplicationKeyboard::Deactivate() +{ + this->isEnabled = false; +} + +void ApplicationKeyboard::BindTextTarget( ::std::wstring *field ) +{ + this->textTarget = field; + + if( field ) + { + this->writePos = field->size(); + } +} + +void ApplicationKeyboard::ReleaseTextTarget( ) +{ + this->BindTextTarget( nullptr ); +} \ No newline at end of file diff --git a/Code/Misc/Input/Source/Win32/Win32ApplicationKeyboard.cpp b/Code/Misc/Input/Source/Win32/Win32ApplicationKeyboard.cpp new file mode 100644 index 00000000..3b58a032 --- /dev/null +++ b/Code/Misc/Input/Source/Win32/Win32ApplicationKeyboard.cpp @@ -0,0 +1,51 @@ +#include "../../Include/Win32/Win32ApplicationKeyboard.h" +#include "Utilities.h" + +using namespace ::Input; +using namespace ::Utility::Value; +using ::std::wstring; + +Win32ApplicationKeyboard::Win32ApplicationKeyboard() : ApplicationKeyboard() { /* DO nothing */ } + +Win32ApplicationKeyboard::~Win32ApplicationKeyboard() { /* DO nothing */ } + +void Win32ApplicationKeyboard::CaptureText( UINT msg, WPARAM param ) +{ + if( !this->textTarget | !this->isEnabled ) + return; + + switch( msg ) + { + case WM_CHAR: + this->textTarget->insert( this->writePos, 1, (wchar_t)param ); + ++this->writePos; + break; + case WM_KEYDOWN: + { + switch( param ) + { + case VK_BACK: + if( this->writePos > 0 ) + { + --this->writePos; + this->textTarget->erase( this->writePos, 1 ); + } + break; + case VK_DELETE: + if( this->writePos < this->textTarget->size() ) + { + this->textTarget->erase( this->writePos, 1 ); + } + break; + case VK_LEFT: + this->writePos = Max( this->writePos - 1, (wstring::size_type)0 ); + break; + case VK_RIGHT: + this->writePos = Min( this->writePos + 1, this->textTarget->size() ); + break; + default: break; + } + } + default: break; + } +} diff --git a/Code/Misc/Input/Source/Win32/Win32Input.cpp b/Code/Misc/Input/Source/Win32/Win32Input.cpp index 118e32ea..d3ff2a0a 100644 --- a/Code/Misc/Input/Source/Win32/Win32Input.cpp +++ b/Code/Misc/Input/Source/Win32/Win32Input.cpp @@ -196,6 +196,10 @@ InputObject* Win32Input::CreateDevice(const SAIType inputType, Typedefs::WindowH } } break; + + //case SAIType_ApplicationKeyboard: + // //val = new Win32ApplicationKeyboard(); + // break; } return val;