use of com.bladecoder.engine.model.World.AssetState in project bladecoder-adventure-engine by bladecoder.
the class DefaultSceneScreen method update.
private void update(float delta) {
final World world = World.getInstance();
currentActor = null;
if (!world.isDisposed()) {
world.update(delta * speed);
// if the game ends returns
if (world.isDisposed())
return;
}
AssetState assetState = world.getAssetState();
if (world.getAssetState() != AssetState.LOADED) {
resetUI();
if (assetState == AssetState.LOAD_ASSETS || assetState == AssetState.LOAD_ASSETS_AND_INIT_SCENE) {
// update() to set LOADING state
world.update(0);
}
// TRY TO LOAD THE ASSETS FOR LOADING_WAIT_TIME_MS TO AVOID
// BLACK/LOADING SCREEN
long t0 = System.currentTimeMillis();
long t = t0;
while (EngineAssetManager.getInstance().isLoading() && t - t0 < LOADING_WAIT_TIME_MS) {
t = System.currentTimeMillis();
}
if (t - t0 >= LOADING_WAIT_TIME_MS) {
// Sets loading screen if resources are not loaded yet
ui.setCurrentScreen(Screens.LOADING_SCREEN);
} else {
world.resize(viewport.getWorldWidth(), viewport.getWorldHeight());
// update() to retrieve assets and exec init verb
world.update(0);
}
return;
}
// CHECK FOR STATE CHANGES
switch(state) {
case CUT_MODE:
if (!world.inCutMode())
setUIState(UIStates.SCENE_MODE);
break;
case DIALOG_MODE:
stage.setScrollFocus(null);
if (!world.hasDialogOptions())
setUIState(UIStates.SCENE_MODE);
else if (world.inCutMode())
setUIState(UIStates.CUT_MODE);
else
stage.setScrollFocus(dialogUI);
break;
case INVENTORY_MODE:
if (!inventoryUI.isVisible())
setUIState(UIStates.SCENE_MODE);
else if (world.inCutMode())
setUIState(UIStates.CUT_MODE);
else if (world.hasDialogOptions())
setUIState(UIStates.DIALOG_MODE);
break;
case PAUSE_MODE:
if (!world.isPaused())
setUIState(UIStates.SCENE_MODE);
break;
case PLAY_MODE:
if (!recorder.isPlaying())
setUIState(UIStates.SCENE_MODE);
break;
case TESTER_BOT_MODE:
if (!testerBot.isEnabled())
setUIState(UIStates.SCENE_MODE);
break;
case SCENE_MODE:
if (world.isPaused())
setUIState(UIStates.PAUSE_MODE);
else if (world.inCutMode())
setUIState(UIStates.CUT_MODE);
else if (recorder.isPlaying())
setUIState(UIStates.PLAY_MODE);
else if (testerBot.isEnabled())
setUIState(UIStates.TESTER_BOT_MODE);
else if (inventoryUI.isVisible())
setUIState(UIStates.INVENTORY_MODE);
else if (world.hasDialogOptions())
setUIState(UIStates.DIALOG_MODE);
break;
}
stage.act(delta);
if (state == UIStates.PAUSE_MODE)
return;
recorder.update(delta * speed);
testerBot.update(delta * speed);
switch(state) {
case INVENTORY_MODE:
unproject2Tmp.set(Gdx.input.getX(), Gdx.input.getY());
inventoryUI.screenToLocalCoordinates(unproject2Tmp);
currentActor = inventoryUI.getItemAt(unproject2Tmp.x, unproject2Tmp.y);
break;
case SCENE_MODE:
final float tolerance;
if (inventoryUI.isDragging())
tolerance = DPIUtils.getTouchMinSize();
else if (Gdx.input.isPeripheralAvailable(Peripheral.MultitouchScreen))
tolerance = DPIUtils.getTouchMinSize() / 2;
else
tolerance = 0;
currentActor = world.getInteractiveActorAtInput(viewport, tolerance);
inventoryButton.setVisible(world.getInventory().isVisible());
break;
default:
}
if (!pie.isVisible()) {
if (currentActor != null) {
if (showDesc)
pointer.setDesc(currentActor.getDesc());
if (currentActor.getVerb("leave") != null) {
TextureRegion r = null;
if (currentActor.getVerb("leave").getIcon() != null && (r = getUI().getSkin().getAtlas().findRegion(currentActor.getVerb("leave").getIcon())) != null) {
pointer.setIcon(r);
} else {
pointer.setLeaveIcon(calcLeaveArrowRotation(currentActor));
}
} else
pointer.setHotspotIcon();
} else {
pointer.setDefaultIcon();
}
}
}
use of com.bladecoder.engine.model.World.AssetState in project bladecoder-adventure-engine by bladecoder.
the class RetroSceneScreen method update.
private void update(float delta) {
final World world = World.getInstance();
currentActor = null;
if (!world.isDisposed()) {
world.update(delta * speed);
}
AssetState assetState = world.getAssetState();
if (assetState != AssetState.LOADED) {
ui.setCurrentScreen(Screens.LOADING_SCREEN);
return;
}
// CHECK FOR STATE CHANGES
switch(state) {
case CUT_MODE:
if (!world.inCutMode())
setUIState(UIStates.SCENE_MODE);
break;
case DIALOG_MODE:
if (world.getCurrentDialog() == null)
setUIState(UIStates.SCENE_MODE);
else if (world.inCutMode())
setUIState(UIStates.CUT_MODE);
break;
case PAUSE_MODE:
if (!world.isPaused())
setUIState(UIStates.SCENE_MODE);
break;
case PLAY_MODE:
if (!recorder.isPlaying())
setUIState(UIStates.SCENE_MODE);
break;
case TESTER_BOT_MODE:
if (!testerBot.isEnabled())
setUIState(UIStates.SCENE_MODE);
break;
case SCENE_MODE:
if (world.isPaused())
setUIState(UIStates.PAUSE_MODE);
else if (world.inCutMode())
setUIState(UIStates.CUT_MODE);
else if (recorder.isPlaying())
setUIState(UIStates.PLAY_MODE);
else if (testerBot.isEnabled())
setUIState(UIStates.TESTER_BOT_MODE);
else if (world.getCurrentDialog() != null)
setUIState(UIStates.DIALOG_MODE);
break;
}
stage.act(delta);
worldViewportStage.act(delta);
if (state == UIStates.PAUSE_MODE)
return;
recorder.update(delta * speed);
testerBot.update(delta * speed);
if (state == UIStates.SCENE_MODE) {
final float tolerance;
if (Gdx.input.isPeripheralAvailable(Peripheral.MultitouchScreen))
tolerance = DPIUtils.getTouchMinSize();
else
tolerance = 0;
currentActor = world.getInteractiveActorAtInput(worldViewport, tolerance);
verbUI.setCurrentActor(currentActor);
if (world.getInventory().isVisible())
verbUI.show();
else
verbUI.hide();
}
}
Aggregations