Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Wie Events synchronisieren?

Adventure-Cartridges für PDAs oder Garmin Colorado/Oregon

Moderator: m.zielinski

Antworten
Benutzeravatar
SG_Pirat
Geocacher
Beiträge: 31
Registriert: Mi 23. Apr 2014, 22:39

Wie Events synchronisieren?

Beitrag von SG_Pirat » Fr 2. Nov 2018, 07:40

Guten Morgen,

ich habe per LUA-Code eine allgemeine Funktion erstelt, die ich an verschiedenen Stellen aufrufen kann, um unterschiedliche Multiple-Choice Abfragen anzuzeigen.

Code: Alles auswählen

function selectOption(_zCartridge,_text,_options)
    local mc_input = Wherigo.ZInput(_zCartridge);
    mc_input.InputType = "MultipleChoice";
    mc_input.Choices = _options
    mc_input.Text = _text;

    local answer = "Startwert"

    function mc_input:OnGetInput(_input)
        if _input == nil then
            _input = "Keine Auswahl";
        end
        answer = _input;
        print(answer);
    end

    _Urwigo.RunDialogs(function()
        Wherigo.GetInput(mc_input)
    end)

    return answer;
end
Leider wird die Funktion nach einen Aufruf schon abgearbeitet, bevor die innere Funktion mc_input durch das Event OnGetInput durchlaufen ist. Somit ist der Rückgabewert für answer immer "Startwert".
Ich würde gerne den weiteren Programmablauf aber von der getroffenen Auswahl abhängig machen - sei es die gewählte Sprache oder eine vom Nutzer getroffende Entscheidung.

Ich könnte natürlich den weiteren Programmablauf in eine neue Funktion verpacken, die ich der Funktion selectOption als weiteren Parameter übergebe und aus mc_input aufrufe, aber das könnte schnell ziemlich unübersichtlich werden, besonders, wenn es mehrere MC-Eingaben nacheinander geben sollte (bspw. bei der Initialisierung am Anfang).

Frage: Wie könnte ich die Synchronisation hinbekommen? Gibt es soetwas wie ein Semaphor?

Danke schon mal im Vorraus für eure Antworten

P.S.: Wahrscheinlich läßt sich das im UrwiGO-Builder einfach lösen, aber mich interessiert, wie es in LUA direkt geht (um ein tieferes Verständnis für die Sprache zu bekommen).

Werbung:
Antworten