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 .idea
cmake-build-*/ 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} add_executable(${gui_name}
plip-sdl/main.cpp plip-sdl/main.cpp
plip-sdl/SdlEvent.cpp
plip-sdl/SdlWindow.cpp plip-sdl/SdlWindow.cpp
) )

14
libplip/PlipInput.cpp

@ -6,15 +6,25 @@
#include "PlipInput.h" #include "PlipInput.h"
namespace Plip { 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)); 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()); m_coreInput.insert(inputList.begin(), inputList.end());
} }
void PlipInput::ClearInput() { void PlipInput::ClearInput() {
m_coreInput.clear(); 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 #pragma once
#include <map> #include <unordered_map>
#include <string> #include <string>
#include "PlipInputDefinition.h" #include "PlipInputDefinition.h"
@ -13,14 +13,16 @@
namespace Plip { namespace Plip {
class PlipInput { class PlipInput {
public: public:
void AddInput(int id, const PlipInputDefinition &input); virtual void AddInput(int id, const PlipInputDefinition &input, const PlipInputData &initialData) final;
void AddInput(std::map<int, PlipInputDefinition> inputList); virtual void AddInput(std::unordered_map<int, PlipInputDefinition> inputList) final;
void ClearInput(); virtual void ClearInput() final;
virtual PlipInputData GetInput(int id) final;
virtual void UpdateInput(int id, PlipInputData data) final;
protected: protected:
PlipInput() = default; PlipInput() = default;
private: 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; m_description = description;
} }
PlipInputData PlipInputDefinition::GetData() const {
return m_data;
}
std::string PlipInputDefinition::GetDescription() const { std::string PlipInputDefinition::GetDescription() const {
return m_description; return m_description;
} }
@ -18,4 +22,8 @@ namespace Plip {
PlipInputType PlipInputDefinition::GetType() const { PlipInputType PlipInputDefinition::GetType() const {
return m_type; return m_type;
} }
void PlipInputDefinition::SetData(PlipInputData data) {
m_data = data;
}
} }

9
libplip/PlipInputDefinition.h

@ -16,17 +16,18 @@ namespace Plip {
Digital Digital
}; };
class PlipInputDefinition { class PlipInputDefinition final {
public: public:
PlipInputDefinition(PlipInputType type, const std::string &description); PlipInputDefinition(PlipInputType type, const std::string &description);
PlipInputData GetData() const;
std::string GetDescription() const; std::string GetDescription() const;
PlipInputType GetType() const; PlipInputType GetType() const;
void SetData(PlipInputData data);
PlipInputData data;
private: private:
PlipInputType m_type; PlipInputData m_data;
std::string m_description; 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 "cxxopts.hpp"
#include "Plip.h" #include "Plip.h"
#include "SdlEvent.h"
#include "SdlWindow.h" #include "SdlWindow.h"
cxxopts::ParseResult parseCmdLine(int argc, char **argv) { 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 wnd = new PlipSdl::SdlWindow(opts["scale"].as<int>(), version);
auto event = new PlipSdl::SdlEvent();
return 0; return 0;
} }

Loading…
Cancel
Save