В соответствии с LuaBridge readme LuaBridge не поддерживает "Enumerated константы", который, как я полагаю, просто enums
. Поскольку sf::Event
почти полностью enums
, можно ли каким-либо образом подвергнуть класс классу? В настоящее время единственным другим решением, которое я могу придумать, является обнаружение нажатия клавиш на С++, а затем отправка строки в Lua, которая описывает событие. Очевидно, что на современной клавиатуре есть более 100 клавиш, что приведет к массивному, уродливому сегменту только как бы операторов.
Для тех, кто не использовал SFML: Ссылка на sf:: Исходный код класса событий
UPDATE:
После попытки создать функцию, изложенную в моем вопросе, я обнаружил, что она не работает в любом случае, потому что вы не можете вернуть более одной строки в С++, поэтому большинство событий игнорируются.
Источник примера (не работает):
std::string getEvent()
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed) {window.close(); return "";}
else if (event.type == sf::Event::GainedFocus) {return "GainedFocus";}
else if (event.type == sf::Event::LostFocus) {return "LostFocus";}
else if (event.type == sf::Event::Resized) {return "Resized";}
else if (event.type == sf::Event::TextEntered)
{
if ((event.text.unicode < 128) && (event.text.unicode > 0)) {return "" + static_cast<char>(event.text.unicode);}
}
else if (event.type == sf::Event::KeyPressed)
{
//If else for all keys on keyboard
}
else if (event.type == sf::Event::KeyReleased)
{
//If else for all keys on keyboard
}
else {return "";}
}
return "";
}
UPDATE UPDATE:
Поскольку этот вопрос получил нулевые комментарии или ответы, я решил не исключать других библиотек. Итак, если есть библиотека С++, которая поддерживает перечисления, я буду принимать ее