Key.hpp: workaround SDL symbols being used with no visuals enabled

I'll write a better fix later, this one currently works
This commit is contained in:
Unnamed 2019-02-12 19:03:57 +00:00 committed by TotallyNotElite
parent c2e227bb93
commit 3343fe6c89

View File

@ -4,6 +4,8 @@
#pragma once
#if ENABLE_VISUALS
#include <SDL2/SDL_keycode.h>
#include <SDL2/SDL_system.h>
#include <SDL2/SDL_mouse.h>
@ -140,3 +142,64 @@ protected:
Key value{};
};
} // namespace settings
#else
#include "Settings.hpp"
namespace settings
{
struct Key
{
int mouse{ 0 };
};
template <> class Variable<Key> : public VariableBase<Key>
{
public:
~Variable() override = default;
VariableType getType() override
{
return VariableType::KEY;
}
// Valid inputs: "Mouse1", "Mouse5", "Key 6", "Key 10", "Key 2", "Space".
void fromString(const std::string &string) override
{
}
// Variable & causes segfault with gcc optimizations + these dont even
// return anything
void operator=(const std::string &string)
{
fromString(string);
}
inline const Key &operator*() override
{
return value;
}
inline const std::string &toString() override
{
return string;
}
inline explicit operator bool() const
{
return false;
}
inline bool isKeyDown() const
{
return false;
}
protected:
void setInternal(Key next)
{
fireCallbacks(next);
}
Key value{};
std::string string{};
};
} // namespace settings
#endif