Skip to content

Game.dialog (Dialogfenster)

https://engine-alpha.org/wiki/Tutorials/Dialoge

tutorial nachrichtSchicken.png

tutorial eingabeFordern.png

tutorial frage.png Überblick der Dialoge

Die Engine Alpha stellt dir in der Klasse Game vier Methoden für die Kommunikation mit dem Spieler zur Verfügung: Methode Erklärung

public void nachrichtSchicken(String nachricht)

erzeugt ein modales (im Vordergrund stehendes) Fenster mit einer Nachricht. Der Spieler muss diese Nachricht durch einen Linksklick auf "Ok" bestätigen.

public String eingabeFordern(String nachricht)

erzeugt ein modales (im Vordergrund stehendes) Fenster mit einem erklärenden Text und einem Eingabe-Feld in das der Spieler hinein schreiben kann.

public boolean frage(String frage)

erzeugt ein modales (im Vordergrund stehendes) Fenster mit einer Frage, die mit JA oder NEIN per Linksklick beantwortet werden muss.

Achtung!

Alle Dialog-Fenster drängen sich kompromisslos in den Vordergrund und die entsprechende Methode endet erst dann, wenn das Fenster wieder geschlossen wird.

public class AllDialogsDemo extends Scene
{
    Text result;

    public AllDialogsDemo()
    {
        result = new Text("Ergebnis");
        result.position(0, 6);
        result.color("red");
        add(result);

        int x = -12;

        int y1 = 3;
        int y2 = 2;

        int y3 = -2;
        int y4 = -3;

        // showMessage

        new DialogOpener("showMessage(message)", () -> {
            Controller.dialog.showMessage("Message");
            return null;
        }, x, y1);

        new DialogOpener("showMessage(message, title)", () -> {
            Controller.dialog.showMessage("Message", "Title");
            return null;
        }, x, y2);

        // requestStringInput

        new DialogOpener("requestStringInput(message)",
                () -> Controller.dialog.requestStringInput("Message"), x, y3);

        new DialogOpener("requestStringInput(message, title)",
                () -> Controller.dialog.requestStringInput("Message", "Title"),
                x, y4);

        // requestYesNo

        x = 2;

        new DialogOpener("requestYesNo(message)",
                () -> Controller.dialog.requestYesNo("Message"), x, y1);

        new DialogOpener("requestYesNo(message, title)",
                () -> Controller.dialog.requestYesNo("Message", "Title"), x,
                y2);

        // requestOkCancel

        new DialogOpener("requestOkCancel(message)",
                () -> Controller.dialog.requestOkCancel("Message"), x, y3);

        new DialogOpener("requestYesNo(message, title)",
                () -> Controller.dialog.requestOkCancel("Message", "Title"), x,
                y4);
    }

    class DialogOpener extends Text
            implements MouseClickListener, FrameUpdateListener
    {
        Supplier<Object> supplier;

        public DialogOpener(String content, Supplier<Object> supplier, double x,
                double y)
        {
            super(content);
            this.supplier = supplier;
            add(this);
            position(x, y);
        }

        @Override
        public void onMouseDown(Vector position, MouseButton button)
        {
            if (contains(position))
            {
                result.content(supplier.get());
            }
        }

        @Override
        public void onFrameUpdate(double pastTime)
        {
            if (contains(Controller.mousePosition()))
            {
                color("blue");
            }
            else
            {
                color("white");
            }
        }
    }

    public static void main(String[] args)
    {
        Controller.start(new AllDialogsDemo());
    }
}
Zum Java-Code: demos/docs/main_classes/controller/AllDialogsDemo.java