ateamproject.kezuino.com.github.render.screens.LobbyListScreen.java Source code

Java tutorial

Introduction

Here is the source code for ateamproject.kezuino.com.github.render.screens.LobbyListScreen.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ateamproject.kezuino.com.github.render.screens;

import ateamproject.kezuino.com.github.network.packet.packets.PacketGetClans;
import ateamproject.kezuino.com.github.network.packet.packets.PacketGetLobbies;
import ateamproject.kezuino.com.github.network.rmi.Client;
import ateamproject.kezuino.com.github.utility.assets.Assets;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Fatih
 */
public class LobbyListScreen extends BaseScreen implements RefreshableScreen {

    TextField lobbyname;
    private Table scrollTable;
    private boolean clanGame;

    public LobbyListScreen(com.badlogic.gdx.Game game, boolean clanGame) {
        super(game);
        this.clanGame = clanGame;

        backgroundMusic = Assets.getMusicStream("menu.mp3");
        createGui();
    }

    private void createGui() {
        // Back to main menu.
        TextButton btnBack = new TextButton("Terug", skin);
        btnBack.addListener(new ClickListener() {
            @Override
            public void clicked(InputEvent event, float x, float y) {
                game.setScreen(new MainScreen(game));
            }
        });
        btnBack.setPosition(10, stage.getHeight() - btnBack.getHeight() - 10);
        this.stage.addActor(btnBack);

        // Create game button.
        TextButton btnCreateGame = new TextButton("Maak spel", skin);
        btnCreateGame.addListener(new ClickListener() {
            @Override
            public void clicked(InputEvent event, float x, float y) {

                Dialog d = new Dialog("Lobby Name", skin);
                lobbyname = new TextField("", skin);

                SelectBox<Object> clanDropdown = null;
                String dropDownResult = "";
                if (clanGame) {
                    Client client = Client.getInstance();
                    PacketGetClans packet = new PacketGetClans();
                    client.send(packet);
                    ArrayList<String> listclans = packet.getResult();

                    Object[] arrayClans = new Object[listclans.size()];
                    for (int i = 0; i < listclans.size(); i++) {

                        arrayClans[i] = listclans.get(i);

                    }
                    clanDropdown = new SelectBox<>(skin);

                    clanDropdown.setItems(arrayClans);

                    clanDropdown.setSelectedIndex(0);
                    d.add(clanDropdown);
                }

                TextButton btnsubmit = new TextButton("Maken", skin);
                lobbyname.setSize(150, 30);

                d.add(lobbyname);
                d.add(btnsubmit);

                final SelectBox dropDownResultFinal = clanDropdown;
                btnsubmit.addListener(new ClickListener() {
                    @Override
                    public void clicked(InputEvent event, float x, float y) {
                        d.hide();
                        if (!lobbyname.getText().equals("")) {
                            if (clanGame) {
                                game.setScreen(new LobbyScreen(game, lobbyname.getText(),
                                        dropDownResultFinal.getSelected().toString()));
                            } else {
                                game.setScreen(new LobbyScreen(game, lobbyname.getText(), null));
                            }
                        }
                    }
                });
                d.show(stage);
            }
        });

        // Create game button
        btnCreateGame.setPosition(stage.getWidth() - btnCreateGame.getWidth() - 10,
                stage.getHeight() - btnCreateGame.getHeight() - 10);
        this.stage.addActor(btnCreateGame);

        Pixmap pm1 = new Pixmap(1, 1, Pixmap.Format.RGB565);
        pm1.setColor(Color.GREEN);
        pm1.fill();

        // set table position
        scrollTable = new Table(skin);
        scrollTable.setColor(com.badlogic.gdx.graphics.Color.BLUE);
        final ScrollPane scroller = new ScrollPane(scrollTable);
        scroller.sizeBy(200, 400);
        scroller.setColor(com.badlogic.gdx.graphics.Color.BLUE);
        final Table table = new Table();
        table.setFillParent(false);
        table.add(scroller).fill().expand();
        table.setSize(stage.getWidth(), stage.getHeight() - btnCreateGame.getHeight());
        table.setColor(com.badlogic.gdx.graphics.Color.BLUE);

        // get all host from the server and put in the table
        fillHostTable();

        float x = stage.getWidth() / 2 - table.getWidth() / 2;
        float y = stage.getHeight() - table.getHeight() - btnCreateGame.getHeight() - 20;

        table.setPosition(x, y);
        this.stage.addActor(table);

    }

    public void fillHostTable() {
        this.scrollTable.clear();

        // table headers
        TextField lb1 = new TextField("Lobby naam", skin);
        lb1.setDisabled(true);
        TextField lb2 = new TextField("Host", skin);
        lb2.setDisabled(true);
        TextField lb3 = new TextField("Deelnemers", skin);
        lb3.setDisabled(true);

        lb3.setStyle(new TextField.TextFieldStyle(lb3.getStyle().font, Color.PINK, lb3.getStyle().cursor,
                lb3.getStyle().selection, lb3.getStyle().background));

        // add headers to table
        scrollTable.add(lb1);
        scrollTable.columnDefaults(0);
        scrollTable.add(lb2);
        scrollTable.columnDefaults(1);
        scrollTable.add(lb3);
        scrollTable.columnDefaults(2);
        scrollTable.row();

        List<PacketGetLobbies.GetLobbiesData> hostList;

        Client client = Client.getInstance();
        PacketGetLobbies packet = new PacketGetLobbies(this.clanGame, client.getId());
        client.send(packet);
        hostList = packet.getResult();

        if (hostList != null && !hostList.isEmpty()) {
            for (PacketGetLobbies.GetLobbiesData game : hostList) {
                TextField lbName = new TextField(game.name, skin);
                lbName.setDisabled(true);
                TextField lbNameHost = new TextField(game.hostName, skin);
                lbNameHost.setDisabled(true);
                TextField lbAmountMembers = new TextField(Integer.toString(game.membersCount), skin);
                lbAmountMembers.setDisabled(true);
                TextButton btnJoin = new TextButton("Join", skin);
                btnJoin.addListener(new ClickListener() {
                    @Override
                    public void clicked(InputEvent event, float x, float y) {
                        LobbyListScreen.this.game
                                .setScreen(new LobbyScreen(LobbyListScreen.this.game, game.lobbyId));
                    }
                });

                btnJoin.setDisabled(true);

                scrollTable.add(lbName);
                scrollTable.columnDefaults(0);
                scrollTable.add(lbNameHost);
                scrollTable.columnDefaults(1);
                scrollTable.add(lbAmountMembers);
                scrollTable.columnDefaults(2);
                scrollTable.add(btnJoin);
                scrollTable.columnDefaults(3);

                scrollTable.row();
            }
        }
    }

    @Override
    public void refresh() {
        this.fillHostTable();
    }
}