LuaBridge のreadmeによると、LuaBridge は「列挙定数」をサポートしていませんenums
。sf::Event
ほぼ完全なのでenums
、クラスを公開する方法はありますか? 現在、私が思いつくことができる他の唯一の解決策は、C++ でキーの押下を検出し、イベントを説明する文字列を Lua に送信することです。明らかに、最新のキーボードには約 100 個以上のキーがあり、これにより大規模で醜い just 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 "";
}
更新更新:
この質問にはコメントも回答もなかったので、他のライブラリを除外しないことにしました。なので、列挙型をサポートするC++ライブラリがあれば、それを受け入れます