Package tripleplay.demo.game

Source Code of tripleplay.demo.game.ScreensDemo

//
// Triple Play - utilities for use in PlayN-based games
// Copyright (c) 2011-2014, Three Rings Design, Inc. - All rights reserved.
// http://github.com/threerings/tripleplay/blob/master/LICENSE

package tripleplay.demo.game;

import react.UnitSlot;

import tripleplay.game.Screen;
import tripleplay.game.ScreenStack;
import tripleplay.ui.Button;
import tripleplay.ui.Elements;
import tripleplay.ui.Group;
import tripleplay.ui.Label;
import tripleplay.ui.layout.AxisLayout;

import tripleplay.demo.DemoScreen;

/**
* Tests/demonstrates screen-related things.
*/
public class ScreensDemo extends DemoScreen
{
    public ScreensDemo (ScreenStack stack) {
        _stack = stack;
    }

    @Override protected String name () {
        return "Screens";
    }
    @Override protected String title () {
        return "Screen Stack and Transitions";
    }

    @Override protected Group createIface () {
        Group root = new Group(AxisLayout.vertical());
        addUI(this, root, 0);
        return root;
    }

    protected void addUI (final Screen screen, Elements<?> root, final int depth) {
        root.add(new Label("Screen " + depth));

        root.add(new Button("Slide").onClick(new UnitSlot() { public void onEmit () {
            _stack.push(createScreen(depth+1), _stack.slide());
        }}));
        root.add(new Button("Turn").onClick(new UnitSlot() { public void onEmit () {
            _stack.push(createScreen(depth+1), _stack.pageTurn());
        }}));
        root.add(new Button("Flip").onClick(new UnitSlot() { public void onEmit () {
            _stack.push(createScreen(depth+1), _stack.flip());
        }}));

        if (depth > 0) {
            root.add(new Button("Replace").onClick(new UnitSlot() { public void onEmit () {
                _stack.replace(createScreen(depth+1), _stack.slide().left());
            }}));
            root.add(new Button("Back").onClick(new UnitSlot() { public void onEmit () {
                _stack.remove(screen, _stack.flip().unflip());
            }}));
            root.add(new Button("Top").onClick(new UnitSlot() { public void onEmit () {
                _stack.popTo(ScreensDemo.this, _stack.slide().right());
            }}));
        }
    }

    protected Screen createScreen (final int depth) {
        return new TestScreen(depth) {
            @Override public String toString () {
                return "Screen" + depth;
            }
            @Override protected void createIface () {
                addUI(this, _root, depth);
            }
        };
    }

    protected final ScreenStack _stack;
}
TOP

Related Classes of tripleplay.demo.game.ScreensDemo

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.