Browse Source

Finished core input support.

* Added a stub SDL2 event handler class.
    * Changed gitignore entry from version.h to PlipVersion.h.
    * Switched to using unordered_map to track inputs.
master
Ian Burgmyer 4 years ago
parent
commit
30fd97edcb
  1. 2
      .gitignore
  2. 1
      CMakeLists.txt
  3. 14
      libplip/PlipInput.cpp
  4. 12
      libplip/PlipInput.h
  5. 8
      libplip/PlipInputDefinition.cpp
  6. 9
      libplip/PlipInputDefinition.h
  7. 9
      libplip/PlipVersion.h
  8. 9
      plip-sdl/SdlEvent.cpp
  9. 15
      plip-sdl/SdlEvent.h
  10. 2
      plip-sdl/main.cpp

2
.gitignore vendored

@ -1,4 +1,4 @@
.idea
cmake-build-*/
version.h
libplip/PlipVersion.h

1
CMakeLists.txt

@ -38,6 +38,7 @@ add_dependencies(${lib_name} GENERATE_LIB_VERSION_HEADER)
########
add_executable(${gui_name}
plip-sdl/main.cpp
plip-sdl/SdlEvent.cpp
plip-sdl/SdlWindow.cpp
)

14
libplip/PlipInput.cpp

@ -6,15 +6,25 @@
#include "PlipInput.h"
namespace Plip {
void PlipInput::AddInput(int id, const PlipInputDefinition& input) {
void PlipInput::AddInput(int id, const PlipInputDefinition &input, const PlipInputData &initialData) {
m_coreInput.insert(std::pair<int, PlipInputDefinition>(id, input));
UpdateInput(id, initialData);
}
void PlipInput::AddInput(std::map<int, PlipInputDefinition> inputList) {
void PlipInput::AddInput(std::unordered_map<int, PlipInputDefinition> inputList) {
m_coreInput.insert(inputList.begin(), inputList.end());
}
void PlipInput::ClearInput() {
m_coreInput.clear();
}
PlipInputData PlipInput::GetInput(int id) {
return m_coreInput.find(id)->second.GetData();
}
void PlipInput::UpdateInput(int id, PlipInputData data) {
if(m_coreInput.find(id) == m_coreInput.end()) return;
m_coreInput.find(id)->second.SetData(data);
}
}

12
libplip/PlipInput.h

@ -5,7 +5,7 @@
#pragma once
#include <map>
#include <unordered_map>
#include <string>
#include "PlipInputDefinition.h"
@ -13,14 +13,16 @@
namespace Plip {
class PlipInput {
public:
void AddInput(int id, const PlipInputDefinition &input);
void AddInput(std::map<int, PlipInputDefinition> inputList);
void ClearInput();
virtual void AddInput(int id, const PlipInputDefinition &input, const PlipInputData &initialData) final;
virtual void AddInput(std::unordered_map<int, PlipInputDefinition> inputList) final;
virtual void ClearInput() final;
virtual PlipInputData GetInput(int id) final;
virtual void UpdateInput(int id, PlipInputData data) final;
protected:
PlipInput() = default;
private:
std::map<int, PlipInputDefinition> m_coreInput;
std::unordered_map<int, PlipInputDefinition> m_coreInput;
};
}

8
libplip/PlipInputDefinition.cpp

@ -11,6 +11,10 @@ namespace Plip {
m_description = description;
}
PlipInputData PlipInputDefinition::GetData() const {
return m_data;
}
std::string PlipInputDefinition::GetDescription() const {
return m_description;
}
@ -18,4 +22,8 @@ namespace Plip {
PlipInputType PlipInputDefinition::GetType() const {
return m_type;
}
void PlipInputDefinition::SetData(PlipInputData data) {
m_data = data;
}
}

9
libplip/PlipInputDefinition.h

@ -16,17 +16,18 @@ namespace Plip {
Digital
};
class PlipInputDefinition {
class PlipInputDefinition final {
public:
PlipInputDefinition(PlipInputType type, const std::string &description);
PlipInputData GetData() const;
std::string GetDescription() const;
PlipInputType GetType() const;
PlipInputData data;
void SetData(PlipInputData data);
private:
PlipInputType m_type;
PlipInputData m_data;
std::string m_description;
PlipInputType m_type;
};
}

9
libplip/PlipVersion.h

@ -1,9 +0,0 @@
#pragma once
#define PRODUCT_NAME "Plip"
#define BIN_NAME "plip"
#define GIT_FOUND
#define GIT_BRANCH "master"
#define GIT_REVISION "e43f14f"
/* #undef GIT_TAG */

9
plip-sdl/SdlEvent.cpp

@ -0,0 +1,9 @@
/* SdlEvent.cpp
*
* An SDL2 event handler.
*/
#include "SdlEvent.h"
namespace PlipSdl {
}

15
plip-sdl/SdlEvent.h

@ -0,0 +1,15 @@
/* SdlEvent.h
*
* An SDL2 event handler.
*/
#pragma once
#include "PlipInput.h"
namespace PlipSdl {
class SdlEvent : protected Plip::PlipInput {
public:
SdlEvent() = default;
};
}

2
plip-sdl/main.cpp

@ -8,6 +8,7 @@
#include "cxxopts.hpp"
#include "Plip.h"
#include "SdlEvent.h"
#include "SdlWindow.h"
cxxopts::ParseResult parseCmdLine(int argc, char **argv) {
@ -69,6 +70,7 @@ int main(int argc, char **argv) {
}
auto wnd = new PlipSdl::SdlWindow(opts["scale"].as<int>(), version);
auto event = new PlipSdl::SdlEvent();
return 0;
}

Loading…
Cancel
Save