Подтвердить что ты не робот

Есть ли способ открыть sf:: Event для Lua с Luabridge?

В соответствии с 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:

Поскольку этот вопрос получил нулевые комментарии или ответы, я решил не исключать других библиотек. Итак, если есть библиотека С++, которая поддерживает перечисления, я буду принимать ее

4b9b3361

Ответ 1

Поскольку этот вопрос получил нулевые комментарии или ответы, я решил не исключать других библиотек. Итак, если есть библиотека С++, которая поддерживает перечисления, я буду принимать ее

Библиотека Thor, расширение SFML, поддерживает преобразования между типами SFML-ключей и строками. Это поможет вам сериализовать счетчики и передать их как строки в Lua - и обратно, если вам нужно.