From fa341a962e351de9efba3cd6d3dccb582b625721 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan <tullivan99@gmail.com> Date: Sun, 22 Jan 2017 12:03:22 -0500 Subject: windows --- include/bmpimage.hpp | 4 ++++ include/components.hpp | 16 ++++++++-------- include/engine.hpp | 2 +- include/thread.hpp | 36 ++++++++++++++++++++++++++++++++++++ include/world.hpp | 2 +- 5 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 include/thread.hpp (limited to 'include') diff --git a/include/bmpimage.hpp b/include/bmpimage.hpp index 69b78ac..5e056fe 100644 --- a/include/bmpimage.hpp +++ b/include/bmpimage.hpp @@ -1,3 +1,5 @@ +#ifndef __WIN32__ + #ifndef BMP_IMAGE_HPP #define BMP_IMAGE_HPP @@ -32,3 +34,5 @@ typedef struct { } __attribute__((packed)) BITMAPINFOHEADER; #endif // BMP_IMAGE_HPP + +#endif // __WIN32__ \ No newline at end of file diff --git a/include/components.hpp b/include/components.hpp index 5292fb2..14cff81 100644 --- a/include/components.hpp +++ b/include/components.hpp @@ -319,11 +319,11 @@ struct Limb { float updateRate; /**< How often we will change each frame. */ float updateCurrent; /**< How much has been updated in the current frame. */ - uint updateType; /**< What the updateRate will base it's updates off of. + unsigned int updateType; /**< What the updateRate will base it's updates off of. ie: Movement, attacking, jumping. */ - uint limbID; /**< The id of the limb we will be updating */ + unsigned int limbID; /**< The id of the limb we will be updating */ - uint index = 0; /**< The current sprite being used for the limb. */ + unsigned int index = 0; /**< The current sprite being used for the limb. */ std::vector<Frame> frame; /**< The multiple frames of each limb. */ }; @@ -333,7 +333,7 @@ struct Animate { // COMMENT std::vector<Limb> limb; // COMMENT - uint index; + unsigned int index; Animate(){ index = 0; @@ -341,8 +341,8 @@ struct Animate { // COMMENT - void firstFrame(uint updateType, Frame &sprite) { - uint upid = updateType; //^see todo + void firstFrame(unsigned int updateType, Frame &sprite) { + unsigned int upid = updateType; //^see todo for (auto &l : limb) { if (l.updateType == upid) { l.firstFrame(sprite); @@ -350,8 +350,8 @@ struct Animate { } } //TODO make updateType an enum - void updateAnimation(uint updateType, Frame& sprite, float dt) { - uint upid = updateType; //^see todo + void updateAnimation(unsigned int updateType, Frame& sprite, float dt) { + unsigned int upid = updateType; //^see todo for (auto &l : limb) { if (l.updateType == upid) { l.nextFrame(sprite, dt); diff --git a/include/engine.hpp b/include/engine.hpp index fda9980..112fd3c 100644 --- a/include/engine.hpp +++ b/include/engine.hpp @@ -8,7 +8,7 @@ #include <atomic> #include <chrono> -#include <thread> +#include <thread.hpp> #include <entityx/entityx.h> diff --git a/include/thread.hpp b/include/thread.hpp new file mode 100644 index 0000000..3adc43d --- /dev/null +++ b/include/thread.hpp @@ -0,0 +1,36 @@ +#ifndef THREAD_HPP_ +#define THREAD_HPP_ + +#ifndef __WIN32__ +#include <thread> +#else +#include <win32thread.hpp> +#endif // __WIN32__ + +#include <atomic> +#include <entityx/entityx.h> + +class GameThread : public entityx::Receiver<GameThread> { +private: + std::atomic_bool die; + std::thread thread; + +public: + GameThread(std::function<void(void)> func) { + die.store(false); + thread = std::thread([&](std::function<void(void)> f) { + while (!die.load()) + f(); + }, func); + } + + ~GameThread(void) { + thread.join(); + } + + inline void stop(void) { + die.store(true); + } +}; + +#endif // THREAD_HPP_ \ No newline at end of file diff --git a/include/world.hpp b/include/world.hpp index fe7d819..b4986e1 100644 --- a/include/world.hpp +++ b/include/world.hpp @@ -6,7 +6,6 @@ #define WORLD_HPP_ #include <string> -#include <thread> #include <vector> #include <SDL2/SDL_mixer.h> @@ -18,6 +17,7 @@ using namespace tinyxml2; #include <components.hpp> #include <events.hpp> #include <texture.hpp> +#include <thread.hpp> #include <vector2.hpp> /** -- cgit v1.2.3