|
package com.example.util; |
|
|
|
import com.example.ui.GameMenuModel; |
|
import org.mini2Dx.core.Graphics; |
|
import org.mini2Dx.core.Mdx; |
|
import org.mini2Dx.core.assets.AssetManager; |
|
import org.mini2Dx.core.game.GameContainer; |
|
import org.mini2Dx.core.graphics.viewport.FitViewport; |
|
import org.mini2Dx.core.graphics.viewport.Viewport; |
|
import org.mini2Dx.core.screen.GameScreen; |
|
import org.mini2Dx.core.screen.ScreenManager; |
|
import org.mini2Dx.core.screen.transition.NullTransition; |
|
import org.mini2Dx.ui.UiContainer; |
|
import org.mini2Dx.ui.style.UiTheme; |
|
|
|
public abstract class BasicGameScreen extends org.mini2Dx.core.screen.BasicGameScreen { |
|
protected final AssetManager assetManager; |
|
protected Viewport viewport; |
|
protected UiContainer uiContainer; |
|
protected int screenToLoad = -1; |
|
private UiModel view; |
|
|
|
|
|
protected BasicGameScreen(AssetManager assetManager) { |
|
this.assetManager = assetManager; |
|
} |
|
|
|
public <T extends UiModel> void initialise(GameContainer gc, Models model) { |
|
uiContainer = new UiContainer(gc, assetManager); |
|
InputMultiplexer |
|
.getInstance() |
|
.addProcessor(uiContainer); |
|
viewport = new FitViewport(true, gc.getWidth(), gc.getHeight()); |
|
view = ScreenFactory.create(model, uiContainer); |
|
if (view != null) { |
|
uiContainer.add(view.getContainer()); |
|
} |
|
} |
|
|
|
@Override |
|
public void update(GameContainer gc, ScreenManager<? extends GameScreen> screenManager, float delta) { |
|
if (!assetManager.update()) return; |
|
if (!UiContainer.isThemeApplied()) { |
|
UiContainer.setTheme(assetManager.get("ui/" + UiTheme.DEFAULT_THEME_FILENAME, UiTheme.class)); |
|
} |
|
uiContainer.update(delta); |
|
getView().update(delta); |
|
if (screenToLoad != -1) { |
|
screenManager.enterGameScreen(screenToLoad, new NullTransition(), new NullTransition()); |
|
// view.getContainer().setVisibility(Visibility.HIDDEN); |
|
screenToLoad = -1; |
|
} |
|
Mdx.input.setInputProcessor(uiContainer); |
|
} |
|
|
|
@Override |
|
public void render(GameContainer gc, Graphics g) { |
|
viewport.apply(g); |
|
uiContainer.render(g); |
|
} |
|
|
|
@Override |
|
public void onResize(int width, int height) { |
|
uiContainer.set(width, height); |
|
} |
|
|
|
protected <T extends UiModel> T getModel() { |
|
return (T) view; |
|
} |
|
} |