有没有一个很好的方法用Luabridge将sf :: Event暴露给Lua?

Orf*_*fby 12 c++ lua enums sfml luabridge

根据LuaBridge自述文件,LuaBridge不支持"枚举常数",我认为这只是enums.由于sf::Event几乎完全是enums,有没有什么办法,我可以揭露类?目前,我能想出的唯一其他解决方案是在C++中检测按键,然后向Lua发送一个字符串,用于描述事件.显然,在现代键盘上有大约100多个键,这将导致一个巨大的,丑陋的段if语句.

对于那些没有使用过SFML的人:链接到sf :: Event类源代码


更新:

在尝试创建我的问题中概述的函数之后,我发现它无论如何都不起作用,因为你不能在C++中返回多个字符串,因此大多数事件都被忽略.

示例源(不起作用):

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 "";
}
Run Code Online (Sandbox Code Playgroud)

更新更新:

由于这个问题没有收到任何评论或答案,我决定不排除其他图书馆.所以,如果有一个支持枚举的C++库,我会接受它

The*_*tor 2

由于这个问题收到的评论或答案为零,我决定不排除其他库。所以,如果有一个支持枚举的 C++ 库,我会接受它

Thor 库是 SFML 扩展,支持SFML 密钥类型和字符串之间的转换。这将帮助您序列化枚举器并将它们作为字符串传递给 Lua——如果需要的话还可以将其返回。