Repository navigation
UiContainer
Requires mini2Dx 1.3.0 or above
Before you can create UI elements, you need a UiContainer to add them to. The UiContainer is responsible for laying out the UI and sending input through the element tree. The UiContainer requires an AssetManager for loading required themes and resources. If you want to use the default theme provided by mini2Dx-ui, you'll need to provide a FallbackFileHandleResolver to the AssetManager.
First let's set up a basic game that initialises and runs a UiContainer.
public class UiContainerExample extends BasicGame {
private AssetManager assetManager;
private UiContainer uiContainer;
@Override
public void initialise() {
//Create fallback file resolver so we can use the default mini2Dx-ui theme
FileHandleResolver fileHandleResolver = new FallbackFileHandleResolver(new ClasspathFileHandleResolver(), new InternalFileHandleResolver());
//Create asset manager for loading resources
assetManager = new AssetManager(fileHandleResolver);
//Add mini2Dx-ui theme loader
assetManager.setLoader(UiTheme.class, new UiThemeLoader(fileHandleResolver));
//Load default theme
assetManager.load(UiTheme.DEFAULT_THEME_FILENAME, UiTheme.class);
uiContainer = new UiContainer(this, assetManager);
}
@Override
public void update(float delta) {
if(!assetManager.update()) {
//Wait for asset manager to finish loading assets
return;
}
if(!UiContainer.isThemeApplied()) {
UiContainer.setTheme(assetManager.get(UiTheme.DEFAULT_THEME_FILENAME, UiTheme.class));
}
uiContainer.update(delta);
}
@Override
public void interpolate(float alpha) {
uiContainer.interpolate(alpha);
}
@Override
public void render(Graphics g) {
uiContainer.render(g);
}
}The UiContainer implements the InputProcessor interface from LibGDX. This means if you want the UiContainer to receive input you can either set it as the main InputProcessor or add it to an InputMultiplexer. The UiContainer will return true on methods (blocking subsequent processors receiving input) if a UI element handles the input.
Gdx.input.setInputProcessor(uiContainer);
//or
InputMultiplexer inputMultiplexer = new InputMultiplexer();
inputMultiplexer.addProcessor(uiContainer);
...
Gdx.input.setInputProcessor(inputMultiplexer);The framework provides several input handling implementations for different controllers. All controller input handling classes implement ControllerUiInput. The following example shows how to connect an Xbox 360 controller to the UiContainer.
//See Input Handling wiki page for initialising the controller
Xbox360Controller controller = ...
Xbox360UiInput xbox360UiInput = new Xbox360UiInput(uiContainer);
controller.addListener(xbox360UiInput);Getting Started
Graphics
Gameplay
Data
- Asset Management
- Saving and loading player data
- Converting objects to/from JSON
- Converting objects to/from XML
User Interfaces / HUDs
Structuring your code
Releasing your game