Example usage for com.badlogic.gdx.scenes.scene2d.ui Table add

List of usage examples for com.badlogic.gdx.scenes.scene2d.ui Table add

Introduction

In this page you can find the example usage for com.badlogic.gdx.scenes.scene2d.ui Table add.

Prototype

public Cell<Label> add(String text, String labelStyleName) 

Source Link

Document

Adds a new cell with a label.

Usage

From source file:net.noviden.towerdefense.MapCreator.MapCreatorScreen.java

License:Open Source License

public MapCreatorScreen(final TowerDefense towerDefense) {
    this.towerDefense = towerDefense;

    camera = new OrthographicCamera();
    camera.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    camera.update();// w ww. j a  va  2 s .c  o m

    stage = new Stage();

    final Skin skin = new Skin(Gdx.files.internal("assets/uiskin.json"));

    table = new Table();
    table.setFillParent(true);

    name = UUID.randomUUID().toString().substring(0, 5);

    Label nameLabel = new Label("Name:", skin);
    final TextField nameField = new TextField(name, skin);
    TextButton addPathButton = new TextButton("Add New Path", skin);
    TextButton undoButton = new TextButton("Remove Last Point", skin);
    TextButton finishButton = new TextButton("Save Map", skin);
    TextButton exitButton = new TextButton("Exit", skin);

    final TextButton displayOptionsButton = new TextButton("Options", skin);

    // set up options table
    final Table optionsTable = new Table();
    optionsTable.setVisible(false);

    Label initialPlayerHealthLabel = new Label("Initial Player Health:", skin);
    final TextField initialPlayerHealthText = new TextField("" + MapSettings.DEFAULT_INITIAL_PLAYER_HEALTH,
            skin);
    Label initialPlayerResourcesLabel = new Label("Initial Player Resources:", skin);
    final TextField initialPlayerResourcesText = new TextField(
            "" + MapSettings.DEFAULT_INITIAL_PLAYER_RESOURCES, skin);
    Label initialUnitHealthLabel = new Label("Initial Unit Health:", skin);
    final TextField initialUnitHealthText = new TextField("" + MapSettings.DEFAULT_INITIAL_UNIT_HEALTH, skin);
    Label initialUnitMovementSpeedLabel = new Label("Initial Unit Movement Speed:", skin);
    final TextField initialUnitMovementSpeedText = new TextField("" + MapSettings.DEFAULT_INITIAL_UNIT_SPEED,
            skin);
    Label initialUnitDamageLabel = new Label("Initial Unit Damage:", skin);
    final TextField initialUnitDamageText = new TextField("" + MapSettings.DEFAULT_INITIAL_UNIT_DAMAGE, skin);
    Label defaultUnitSpawnRateLabel = new Label("Unit Spawn Rate:", skin);
    final TextField defaultUnitSpawnRateText = new TextField("" + MapSettings.DEFAULT_UNIT_SPAWN_RATE, skin);

    TextButton displayWavesCreatorButton = new TextButton("Waves Creator", skin);
    TextButton displayTurretsButton = new TextButton("Disable Turrets", skin);

    optionsTable.add(initialPlayerHealthLabel, initialPlayerHealthText);
    optionsTable.row();
    optionsTable.add(initialPlayerResourcesLabel, initialPlayerResourcesText);
    optionsTable.row();
    optionsTable.add(initialUnitHealthLabel, initialUnitHealthText);
    optionsTable.row();
    optionsTable.add(initialUnitMovementSpeedLabel, initialUnitMovementSpeedText);
    optionsTable.row();
    optionsTable.add(initialUnitDamageLabel, initialUnitDamageText);
    optionsTable.row();
    optionsTable.add(defaultUnitSpawnRateLabel, defaultUnitSpawnRateText);
    optionsTable.row();
    optionsTable.add(displayTurretsButton);

    final Table disableTurretsTable = new Table();
    disableTurretsTable.setVisible(false);

    final CheckBox disableChaingunTurretCheckbox = new CheckBox("Disable Chaingun", skin);
    final CheckBox disableBasicTurretCheckbox = new CheckBox("Disable Basic", skin);
    final CheckBox disableBuffTurretCheckbox = new CheckBox("Disable Buff", skin);
    final CheckBox disableHomingTurretCheckbox = new CheckBox("Disable Homing", skin);
    final CheckBox disableRocketTurretCheckbox = new CheckBox("Disable Rocket", skin);
    final CheckBox disableShotgunTurretCheckbox = new CheckBox("Disable Shotgun", skin);

    disableTurretsTable.add(disableChaingunTurretCheckbox);
    disableTurretsTable.row();
    disableTurretsTable.add(disableBasicTurretCheckbox);
    disableTurretsTable.row();
    disableTurretsTable.add(disableBuffTurretCheckbox);
    disableTurretsTable.row();
    disableTurretsTable.add(disableHomingTurretCheckbox);
    disableTurretsTable.row();
    disableTurretsTable.add(disableRocketTurretCheckbox);
    disableTurretsTable.row();
    disableTurretsTable.add(disableShotgunTurretCheckbox);

    optionsTable.row();
    optionsTable.add(disableTurretsTable);

    table.add(addPathButton);
    table.add(undoButton);
    table.add(finishButton);
    table.add(exitButton);
    table.row();
    table.add(nameLabel, nameField);
    table.add(displayOptionsButton);
    table.row();
    table.add(optionsTable);

    table.top();
    table.right();

    stage.addActor(table);

    inputMultiplexer = new InputMultiplexer();
    inputMultiplexer.addProcessor(stage);
    inputMultiplexer.addProcessor(new GestureDetector(new MyGestureListener()));

    Gdx.input.setInputProcessor(inputMultiplexer);

    addPathButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            // remove last point in set
            if (pointSet.size() > 1) {
                // valid to create a new path
                paths.push(new Path(pointSet, 5.0f));
                System.out.println("Added a path to paths Stack");
                pointSet = new ArrayList<Point>();
            } else {
                Dialog errorDialog = new Dialog("Error!", skin);
                errorDialog.text("Error! Must finish one path before starting another!");
                errorDialog.button("Ok");
                errorDialog.show(stage);
            }
        }
    });

    undoButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            // remove last point in set
            if (pointSet.size() > 0) {
                pointSet.remove(pointSet.size() - 1);
            } else {
                if (paths.size() > 0) {
                    Path path = paths.pop();
                    pointSet = (ArrayList<Point>) path.set.clone();
                    System.out.println("Popped from paths");
                }
            }
        }
    });

    exitButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            towerDefense.setScreen(new MapEditorSelectorScreen(towerDefense));
            dispose();
        }
    });

    finishButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {

            if (paths.size() == 0 && pointSet.size() < 2) {
                displayErrorMessage("Error! Each path must have at least an entrance and exit", skin);
                return;
            }

            // create settings for map
            int playerHealth = Integer.parseInt(initialPlayerHealthText.getText()),
                    playerResources = Integer.parseInt(initialPlayerResourcesText.getText()),
                    unitDamage = Integer.parseInt(initialUnitDamageText.getText());
            float unitHealth = Float.parseFloat(initialUnitHealthText.getText()),
                    unitSpeed = Float.parseFloat(initialUnitMovementSpeedText.getText()),
                    unitSpawnRate = Float.parseFloat(defaultUnitSpawnRateText.getText());

            // validation
            if (playerHealth <= 0.0f) {
                displayErrorMessage("Error! Player cannot start with 0.0 health", skin);
                return;
            } else if (unitHealth <= 0.0f) {
                displayErrorMessage("Error! Units cannot start with 0.0 health", skin);
                return;
            } else if (unitDamage <= 0.0f) {
                displayErrorMessage("Error! Units cannot start with 0.0 damage", skin);
                return;
            } else if (unitSpeed <= 0.0f) {
                displayErrorMessage("Error! Units cannot start with 0.0 speed", skin);
                return;
            } else if (unitSpawnRate <= 0.0f) {
                displayErrorMessage("Error! Spawn rate cannot be 0.0", skin);
                return;
            }

            ArrayList<BaseTurret.Type> disabledTypes = new ArrayList<BaseTurret.Type>();

            if (disableBasicTurretCheckbox.isChecked()) {
                disabledTypes.add(BaseTurret.Type.NORMAL);
            }
            if (disableBuffTurretCheckbox.isChecked()) {
                disabledTypes.add(BaseTurret.Type.BUFF);
            }
            if (disableChaingunTurretCheckbox.isChecked()) {
                disabledTypes.add(BaseTurret.Type.CHAINGUN);
            }
            if (disableHomingTurretCheckbox.isChecked()) {
                disabledTypes.add(BaseTurret.Type.HOMING);
            }
            if (disableRocketTurretCheckbox.isChecked()) {
                disabledTypes.add(BaseTurret.Type.ROCKET);
            }
            if (disableShotgunTurretCheckbox.isChecked()) {
                disabledTypes.add(BaseTurret.Type.SHOTGUN);
            }

            if (disabledTypes.size() == BaseTurret.Type.values().length) {
                displayErrorMessage("Error! Cannot disable all turrets", skin);
                return;
            }

            MapSettings mapSettings = new MapSettings();

            BaseTurret.Type[] disabledTypesArr = new BaseTurret.Type[disabledTypes.size()];
            disabledTypesArr = disabledTypes.toArray(disabledTypesArr);

            mapSettings.setDisabledTurretTypes(disabledTypesArr);

            String[] keys = { MapSettings.PLAYER_INITIAL_HEALTH_KEY, MapSettings.PLAYER_INITIAL_RESOURCES_KEY,
                    MapSettings.UNIT_INITIAL_DAMAGE_KEY, MapSettings.UNIT_INITIAL_HEALTH_KEY,
                    MapSettings.UNIT_INITIAL_SPEED_KEY, MapSettings.UNIT_SPAWN_RATE_KEY };

            float[] values = { playerHealth, playerResources, unitDamage, unitHealth, unitSpeed,
                    unitSpawnRate };

            mapSettings.putValues(keys, values);

            // make sure current pointSet is included in new map
            if (pointSet.size() > 1) {
                paths.push(new Path(pointSet, 5.0f));
            }

            // convert stack to array
            Path[] pathsForMap = new Path[paths.size()];
            int i = 0;
            while (!paths.empty()) {
                pathsForMap[i++] = paths.pop();
            }

            // finally create the map
            Map map = new Map(new Map.Dimensions(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()),
                    pathsForMap, nameField.getText(), mapSettings);

            towerDefense.maps.add(map);

            // return to main menu
            towerDefense.setScreen(new MapEditorSelectorScreen(towerDefense));
            dispose();
        }
    });

    displayOptionsButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            if (optionsTable.isVisible()) {
                optionsTable.setVisible(false);
                //                    disableTurretsTable.setVisible(false);
            } else {
                optionsTable.setVisible(true);
            }
        }
    });

    displayTurretsButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            if (disableTurretsTable.isVisible()) {
                disableTurretsTable.setVisible(false);
            } else {
                disableTurretsTable.setVisible(true);
            }
        }
    });

    pointSet = new ArrayList<Point>();
    paths = new Stack<Path>();

    batch = new SpriteBatch();
    shapeRenderer = new ShapeRenderer();
}