I am using multiple tables. I have:
one root/master menu table
the main right click menu table .add’ed to the master
a button in the main right click menu should toggle master.add(terrainTable) and master.removeActor(terrainTable)
all of the above works, except for the fact it adds the terrain menu cell to a new row underneath the main right click menu where I want it to be added to the right of the main right click menu:
Here’s the relevant code section:
public Gui(GameScreen game) {
this.game = game;
stage = new Stage();
stage.setCamera(game.getRenderer().getCamera());
font = game.getRenderer().getFont();
//font.setUseIntegerPositions(false);
skin = new Skin();
skin.addRegions(game.getAtlas());
lStyle = new LabelStyle();
stage.addActor(terrainMenu());
stage.addActor(infoMenu());
stage.addActor(mainMenu());
stage.addActor(bottomBar());
stage.addActor(rightClickMenu());
// rClick.add(terrainMenu);
// rClick.add(infoMenu);
rClick.debug();
}
//Base Right click menu
public Table rightClickMenu() {
rClick = new Table();
rClick.setFillParent(false);
rClick.left().top();
rClick.setWidth(120);
rClick.setHeight(60);
rClick.add(mainMenu);
return rClick;
}
public Table mainMenu(){
mainMenu = new Table();
mainMenu.defaults().width(45).height(15);
mainMenu.setFillParent(false);
//mainTable.setX(game.getInput().getVec2Clicked().x);
//mainTable.setY(game.getInput().getVec2Clicked().y);
lStyle.font = font;
setButtonStyle("gui/menuItem_up");
b = new Button(style);
b.add(new Label("Info",lStyle));
b.left();
b.addListener(new ChangeListener() {
public void changed(ChangeEvent event, Actor actor) {
if(infoMenu.isVisible()){
infoMenu.setVisible(false);
}else{
infoMenu.setVisible(true);
}
}
});
mainMenu.add(b).row();
b = new Button(style);
b.add(new Label("Terrain",lStyle));
b.left();
b.addListener(new ChangeListener() {
public void changed(ChangeEvent event, Actor actor) {
if(terrainMenu.isVisible()){
rClick.removeActor(terrainMenu);
terrainMenu.setVisible(false);
}else{
rClick.add(terrainMenu);
terrainMenu.setVisible(true);
}
}
});
mainMenu.add(b).row();
// Make a bunch of filler buttons
for (int i = 0; i < 2; i++) {
b = new Button(style);
b.add(new Label("[EMPTY]",lStyle));
b.left();
b.addListener(new ChangeListener() {
public void changed(ChangeEvent event, Actor actor) {
//System.out.println("Wait");
}
});
mainMenu.add(b).row();
}
mainMenu.left().bottom();
mainMenu.setVisible(false);
return mainMenu;
}
//Terrain/Map tiles
public Table terrainMenu(){
terrainMenu = new Table();
terrainMenu.setFillParent(false);
terrainMenu.defaults().width(game.getAtlas().findRegion("terrain/grass").packedWidth+game.getAtlas().findRegion("terrain/grass").packedWidth*.25f).height(game.getAtlas().findRegion("terrain/grass").packedHeight+game.getAtlas().findRegion("terrain/grass").packedHeight*.25f);
//terrainMenu.left();
ImageButtonStyle style = new ImageButtonStyle();
style.imageUp = skin.getDrawable("terrain/grass");
style.up = skin.getDrawable("gui/menuItem_up");
ImageButton imgb = new ImageButton(style);
imgb.addListener(new ChangeListener() {
public void changed(ChangeEvent event, Actor actor) {
game.setBuildSelection(game.getBaseTiles().getBaseTile("grass"));
System.out.println("Build selection set to grass... " + game.getBuildSelection());
}
});
terrainMenu.add(imgb);
style = new ImageButtonStyle();
style.imageUp = skin.getDrawable("terrain/water");
style.up = skin.getDrawable("gui/menuItem_up");
imgb = new ImageButton(style);
imgb.addListener(new ChangeListener() {
public void changed(ChangeEvent event, Actor actor) {
game.setBuildSelection(game.getBaseTiles().getBaseTile("water"));
System.out.println("Build selection set to Water... " + game.getBuildSelection());
}
});
terrainMenu.add(imgb).row();
style = new ImageButtonStyle();
style.imageUp = skin.getDrawable("terrain/road");
style.up = skin.getDrawable("gui/menuItem_up");
imgb = new ImageButton(style);
imgb.addListener(new ChangeListener() {
public void changed(ChangeEvent event, Actor actor) {
game.setBuildSelection(game.getBaseTiles().getBaseTile("road"));
System.out.println("Build selection set to road... " + game.getBuildSelection());
}
});
terrainMenu.add(imgb).row();
style = new ImageButtonStyle();
style.imageUp = skin.getDrawable("terrain/markerTile");
style.up = skin.getDrawable("gui/menuItem_up");
imgb = new ImageButton(style);
imgb.addListener(new ChangeListener() {
public void changed(ChangeEvent event, Actor actor) {
game.setBuildSelection(game.getBaseTiles().getBaseTile("markerTile"));
System.out.println("Build selection set to markerTile... " + game.getBuildSelection());
}
});
terrainMenu.add(imgb).row();
terrainMenu.setVisible(false);
return terrainMenu;
}