This commit is contained in:
nastys
2019-07-30 13:48:28 +02:00
parent 25f819bdfb
commit 998f4274a5
157 changed files with 0 additions and 0 deletions
@@ -0,0 +1,91 @@
#include "Binding.h"
namespace TLAC::Input
{
Binding::Binding()
{
}
Binding::~Binding()
{
for (auto& binding : InputBindings)
delete binding;
}
void Binding::AddBinding(IInputBinding* inputBinding)
{
InputBindings.push_back(inputBinding);
}
bool Binding::AnyDown()
{
for (const auto& binding : InputBindings)
{
if (binding->IsDown())
return true;
}
return false;
}
bool Binding::AnyTapped()
{
for (const auto& binding : InputBindings)
{
if (binding->IsTapped())
return true;
}
return false;
}
bool Binding::AnyReleased()
{
for (const auto& binding : InputBindings)
{
if (binding->IsReleased())
return true;
}
return false;
}
int Binding::GetDownCount()
{
int count = 0;
for (const auto& binding : InputBindings)
{
if (binding->IsDown())
count++;
}
return count;
}
int Binding::GetTappedCount()
{
int count = 0;
for (const auto& binding : InputBindings)
{
if (binding->IsTapped())
count++;
}
return count;
}
int Binding::GetReleasedCount()
{
int count = 0;
for (const auto& binding : InputBindings)
{
if (binding->IsReleased())
count++;
}
return count;
}
}
@@ -0,0 +1,26 @@
#pragma once
#include <vector>
#include "IInputBinding.h"
namespace TLAC::Input
{
class Binding
{
public:
std::vector<IInputBinding*> InputBindings;
Binding();
~Binding();
void AddBinding(IInputBinding* inputBinding);
bool AnyDown();
bool AnyTapped();
bool AnyReleased();
int GetDownCount();
int GetTappedCount();
int GetReleasedCount();
};
}
@@ -0,0 +1,29 @@
#include "Ds4Binding.h"
namespace TLAC::Input
{
#define Ds4InstanceCheckDefault(checkFunc) (DualShock4::InstanceInitialized() ? DualShock4::GetInstance()->checkFunc : false)
Ds4Binding::Ds4Binding(Ds4Button button) : Button(button)
{
}
Ds4Binding::~Ds4Binding()
{
}
bool Ds4Binding::IsDown()
{
return Ds4InstanceCheckDefault(IsDown(Button));
}
bool Ds4Binding::IsTapped()
{
return Ds4InstanceCheckDefault(IsTapped(Button));
}
bool Ds4Binding::IsReleased()
{
return Ds4InstanceCheckDefault(IsReleased(Button));
}
}
@@ -0,0 +1,19 @@
#pragma once
#include "IInputBinding.h"
#include "../DirectInput/Ds4/DualShock4.h"
namespace TLAC::Input
{
class Ds4Binding : public IInputBinding
{
public:
Ds4Button Button;
Ds4Binding(Ds4Button button);
~Ds4Binding();
bool IsDown() override;
bool IsTapped() override;
bool IsReleased() override;
};
}
@@ -0,0 +1,12 @@
#pragma once
namespace TLAC::Input
{
class IInputBinding
{
public:
virtual bool IsDown() = 0;
virtual bool IsTapped() = 0;
virtual bool IsReleased() = 0;
};
}
@@ -0,0 +1,27 @@
#include "KeyboardBinding.h"
namespace TLAC::Input
{
KeyboardBinding::KeyboardBinding(BYTE keycode) : Keycode(keycode)
{
}
KeyboardBinding::~KeyboardBinding()
{
}
bool KeyboardBinding::IsDown()
{
return Keyboard::GetInstance()->IsDown(Keycode);
}
bool KeyboardBinding::IsTapped()
{
return Keyboard::GetInstance()->IsTapped(Keycode);
}
bool KeyboardBinding::IsReleased()
{
return Keyboard::GetInstance()->IsReleased(Keycode);
}
}
@@ -0,0 +1,19 @@
#pragma once
#include "IInputBinding.h"
#include "../Keyboard/Keyboard.h"
namespace TLAC::Input
{
class KeyboardBinding : public IInputBinding
{
public:
BYTE Keycode;
KeyboardBinding(BYTE keycode);
~KeyboardBinding();
bool IsDown() override;
bool IsTapped() override;
bool IsReleased() override;
};
}
@@ -0,0 +1,70 @@
#include "MouseBinding.h"
#include "../Keyboard/Keyboard.h"
namespace TLAC::Input
{
MouseBinding::MouseBinding(MouseAction action) : Action(action)
{
}
MouseBinding::~MouseBinding()
{
}
bool MouseBinding::IsDown()
{
switch (Action)
{
case MouseAction_LeftButton:
return Keyboard::GetInstance()->IsDown(MK_LBUTTON);
case MouseAction_RightButton:
return Keyboard::GetInstance()->IsDown(MK_RBUTTON);
case MouseAction_MiddleButton:
return Keyboard::GetInstance()->IsDown(MK_MBUTTON);
case MouseAction_ScrollUp:
return Mouse::GetInstance()->GetIsScrolledUp();
case MouseAction_ScrollDown:
return Mouse::GetInstance()->GetIsScrolledDown();
default:
return false;
}
}
bool MouseBinding::IsTapped()
{
switch (Action)
{
case MouseAction_LeftButton:
return Keyboard::GetInstance()->IsTapped(MK_LBUTTON);
case MouseAction_RightButton:
return Keyboard::GetInstance()->IsTapped(MK_RBUTTON);
case MouseAction_MiddleButton:
return Keyboard::GetInstance()->IsTapped(MK_MBUTTON);
case MouseAction_ScrollUp:
return Mouse::GetInstance()->GetIsScrolledUp();
case MouseAction_ScrollDown:
return Mouse::GetInstance()->GetIsScrolledDown();
default:
return false;
}
}
bool MouseBinding::IsReleased()
{
switch (Action)
{
case MouseAction_LeftButton:
return Keyboard::GetInstance()->IsReleased(MK_LBUTTON);
case MouseAction_RightButton:
return Keyboard::GetInstance()->IsReleased(MK_RBUTTON);
case MouseAction_MiddleButton:
return Keyboard::GetInstance()->IsReleased(MK_MBUTTON);
case MouseAction_ScrollUp:
return Mouse::GetInstance()->GetWasScrolledUp();
case MouseAction_ScrollDown:
return Mouse::GetInstance()->GetWasScrolledDown();
default:
return false;
}
}
}
@@ -0,0 +1,28 @@
#pragma once
#include "IInputBinding.h"
#include "../Mouse/Mouse.h"
namespace TLAC::Input
{
enum MouseAction
{
MouseAction_LeftButton,
MouseAction_RightButton,
MouseAction_MiddleButton,
MouseAction_ScrollUp,
MouseAction_ScrollDown,
};
class MouseBinding : public IInputBinding
{
public:
MouseAction Action;
MouseBinding(MouseAction action);
~MouseBinding();
bool IsDown() override;
bool IsTapped() override;
bool IsReleased() override;
};
}
@@ -0,0 +1,33 @@
#include "XinputBinding.h"
#include "..\Xinput\Xinput.h"
namespace TLAC::Input
{
XinputBinding::XinputBinding(BYTE keycode) : Keycode(keycode)
{
}
XinputBinding::~XinputBinding()
{
}
bool XinputBinding::IsDown()
{
return Xinput::GetInstance()->IsDown(Keycode);
}
bool XinputBinding::IsTapped()
{
return Xinput::GetInstance()->IsTapped(Keycode);
}
bool XinputBinding::IsReleased()
{
return Xinput::GetInstance()->IsReleased(Keycode);
}
bool XinputBinding::IsDoubleTapped()
{
return Xinput::GetInstance()->IsDoubleTapped(Keycode);
}
}
@@ -0,0 +1,21 @@
#pragma once
#include "IInputBinding.h"
#include <windows.h>
#include <vector>
namespace TLAC::Input
{
class XinputBinding : public IInputBinding
{
public:
BYTE Keycode;
XinputBinding(BYTE keycode);
~XinputBinding();
bool IsDown() override;
bool IsTapped() override;
bool IsReleased() override;
bool IsDoubleTapped();
};
}