Package game.scenes

Source Code of game.scenes.ConsoleScene

package game.scenes;

import java.util.LinkedList;
import java.util.List;

import engine.classes.Colour;
import engine.geometry.Rectangle;
import engine.geometry.Vector;
import engine.hierarchy.DefaultScene;
import engine.hierarchy.Scene;
import engine.interfaces.Clock;
import engine.interfaces.Font;
import engine.interfaces.Keyboard;
import engine.interfaces.Mouse;
import engine.interfaces.RenderTarget;
import engine.interfaces.Keyboard.Key;

public final class ConsoleScene extends DefaultScene {
    private String text;
    private Vector position;
    private Rectangle rectangle;
    private Colour textColour;
    private Colour rectColour;
    private Font font;
    private List<Scene> activeScenes;

    @Override
    public void onAdd() {
        text = "";
        position = new Vector(2, 476);
        rectangle = new Rectangle(0, 464, 640, 16);
        textColour = new Colour(255, 255, 255);
        rectColour = new Colour(0, 0, 0, 128);
        font = getStage().getLibrary().findFont("Debug");

        activeScenes = new LinkedList<Scene>();
        for (Scene s : getStage().getScenes()) {
            if (s.isActive()) {
                activeScenes.add(s);
                s.setActive(false);
            }
        }
        setActive(true);
    }

    @Override
    public void onBeforeMove(final Keyboard keyboard, final Mouse mouse, final Clock clock) {
        if (keyboard.wasReleased(Key.VK_ESCAPE)) {
            // Close console
            for (Scene s : activeScenes) {
                s.setActive(true);
            }
            getStage().removeScene(this);
        } else if (keyboard.wasReleased(Key.VK_ENTER)) {
            // Execute command
            getStage().getConsole().executeCommand(text);
            // Close console
            for (Scene s : activeScenes) {
                s.setActive(true);
            }
            getStage().removeScene(this);
        } else {
            text += keyboard.getTyped().replace("\n", "").replace("\r", "");

            // Handle backspaces
            for (int i = 0; i < text.length(); i++) {
                if (text.charAt(i) == '\b') {
                    if (i == 0) {
                        if (i == text.length() - 1) {
                            text = "";
                        } else {
                            text = text.substring(0, i).concat(text.substring(i + 1, text.length()));
                        }
                    } else {
                        if (i == text.length() - 1) {
                            text = text.substring(0, i - 1);
                        } else {
                            text = text.substring(0, i - 1).concat(text.substring(i + 1, text.length()));
                        }
                    }
                }
            }
        }
    }

    @Override
    public void onDraw(final RenderTarget target) {
        target.transformPush();
        target.transformIdentity();
        target.fillRectangle(rectangle, rectColour);
        target.drawString(">>> " + text, font, textColour, position);
        target.transformPop();
    }
}
TOP

Related Classes of game.scenes.ConsoleScene

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.