Autor Thema: Luabind und SFML  (Gelesen 6676 mal)

K-Bal

  • Globaler Moderator
  • Mitglied
  • Beiträge: 485
  • Bewertung: 2
    • Listen!
Luabind und SFML
« am: März 15, 2009, 13:00:40 »
Moin,

ich versuche gerade ein minimalistisches SFML-Programm in ein Lua-Skript auszulagern. Ich habe aber noch Probleme mit dem Funktionsaufruf von RenderWindow::GetEvent, da dieser eine Referenz erwartet. Ich kriege folgende Fehlermeldung:

no overload of 'Window:GetEvent' matched the arguments (Event)
candidates are:
Window:GetEvent(Event&)


Dies wird durch folgenden Code verursacht:

void initLua(lua_State* L)
{
    using namespace luabind;

    open(L);

    module(L)
    [
        class_<sf::Event>("Event")
            .def(constructor<>())
            .enum_("States")
            [
                value("Closed", 0),
                value("Resized", 1),
                value("LostFocus", 2),
                value("GainedFocus", 3),
                value("TextEntered", 4),
                value("KeyPressed", 5),
                value("KeyReleased", 6),
                value("MouseWheelMoved", 7),
                value("MouseButtonPressed", 8),
                value("MouseButtonReleased", 9),
                value("MouseMoved", 10),
                value("MouseEntered", 11),
                value("MouseLeft", 12),
                value("JoyButtonPressed", 13),
                value("JoyButtonReleased", 14),
                value("JoyMoved", 15)
            ]
            .def_readonly("Type", &sf::Event::Type),

        class_<sf::VideoMode>("VideoMode")
            .def(constructor<unsigned int, unsigned int>()),

        class_<sf::RenderWindow>("Window")
            .def(constructor<const sf::VideoMode&, const std::string&>())
            .def("IsOpened", &sf::RenderWindow::IsOpened)
            .def("GetEvent", &sf::RenderWindow::GetEvent)
            .def("Clear", &sf::RenderWindow::Clear)
            .def("Display", &sf::RenderWindow::Display)
            .def("Close", &sf::RenderWindow::Close)
            .def("GetFrameTime", &sf::RenderWindow::GetFrameTime)
    ];

    return;
}

int main()
{
    lua_State* L = lua_open();
    char c;

    initLua(L);
    lua_dofile(L, "initGraphics.lua");
    lua_dofile(L, "runMainLoop.lua");

    std::cin >> c;
    // lua_dofile(L, "cleanUp.lua");

    return EXIT_SUCCESS;
}

initGraphics.lua:

mode = VideoMode(800, 600)
app = Window(mode, 'Hallo!')

runMainLoop.lua:

event = Event();

while app.IsOpened do
dummyFunc()

while app.GetEvent(event) do
if event.Type == Event.Closed then
app.Close()
end

end
end





Jemand eine Idee?  ???

Viele Grüße,
Marius

K-Bal

  • Globaler Moderator
  • Mitglied
  • Beiträge: 485
  • Bewertung: 2
    • Listen!
Re: Luabind und SFML
« Antwort #1 am: März 15, 2009, 14:11:10 »
Okay, wenn ich app:GetEvent(event) anstatt app.GetEvent(event) schreibe funktioniert es ;)

Tank

  • Administrator
  • Mitglied
  • Beiträge: 1.525
  • Bewertung: 15
Re: Luabind und SFML
« Antwort #2 am: März 16, 2009, 02:29:48 »
Ist das ein LUA-Binding, das von dir erstellt wurde/wird? Klingt interessant. :)
Don't mess with the operator.
FlexWorld - BlogSFGUI

K-Bal

  • Globaler Moderator
  • Mitglied
  • Beiträge: 485
  • Bewertung: 2
    • Listen!
Re: Luabind und SFML
« Antwort #3 am: März 16, 2009, 09:34:16 »
Ist das ein LUA-Binding, das von dir erstellt wurde/wird? Klingt interessant. :)

Hehe, da möchte ich mich jetzt nicht mit fremden Federn schmücken ;) Google einfach mal nach laubind, ist eins der bekanntesten Bindings für Lua.

Ich bin zwischenzeitlich wieder auf ein anderes Problem gestoßen. Wenn ich ein Skript im C++-Code aufrufe kann ich darin kein dofile() benutzen, er sagt mir dann, dass das global "dofile" ein nil value wär oder sowas in der Art.

Also wenn hier noch jemand mit Lua arbeitet, einfach mal melden ;)

neuer_user

  • Mitglied
  • Beiträge: 395
  • Bewertung: 6
Re: Luabind und SFML
« Antwort #4 am: Mai 27, 2010, 16:41:40 »
Lua wird doch in Siedler verwendet oda? ;D interessant...

Tank

  • Administrator
  • Mitglied
  • Beiträge: 1.525
  • Bewertung: 15
Re: Luabind und SFML
« Antwort #5 am: Mai 27, 2010, 17:27:21 »
Lua wird in vielen Projekten als embedded scripting language genutzt. Mittlerweile aber auch häufig als Standalone-Sprache. Ist sehr minimalistisch, schmal und schnell.
Don't mess with the operator.
FlexWorld - BlogSFGUI

K-Bal

  • Globaler Moderator
  • Mitglied
  • Beiträge: 485
  • Bewertung: 2
    • Listen!
Re: Luabind und SFML
« Antwort #6 am: Mai 28, 2010, 00:34:31 »
Interessant diesen Thread wieder zu sehen.

Ich benutze Skripting zurzeit gar nicht. Damals war ich irgendwie der Meinung, dass Skripting für Spiele essentiell wäre.