package eu.oschl.gui.actions;

import eu.oschl.gui.Output;
import eu.oschl.textadventure.Game;
import eu.oschl.textadventure.objects.Button;
import javafx.scene.paint.Color;

public class PressButton implements Action {
    private final Game game;

    public PressButton(Game game) {
        this.game = game;
    }

    @Override
    public String getId() {
        return "press";
    }

    @Override
    public String getName() {
        return "Press";
    }

    @Override
    public String getDescription() {
        return "press a button";
    }

    @Override
    public void execute(String[] args) {
        for (var object : this.game.getCurrentRoom().getObjects()) {
            if (object.getName().equalsIgnoreCase(String.join(" ", args))) {
                if (object instanceof Button button) {
                    var result = button.press();

                    if (result) {
                        Output.print(button.getPressText(), Color.MAGENTA);
                    } else {
                        Output.print("Button ", Color.RED);
                        Output.print(button.getName(), Color.MAGENTA);
                        Output.print(" has already been pressed.", Color.RED);
                    }

                } else {
                    Output.print("It's impossible to press ", Color.RED);
                    Output.print(object.getName(), Color.MAGENTA);
                    Output.print(". It's not a button.", Color.RED);
                }
                return;
            }
        }

        Output.print("That item is not here.", Color.RED);
    }
}
