use of com.bladecoder.engine.model.World in project bladecoder-adventure-engine by bladecoder.
the class SayDialogAction method run.
@Override
public boolean run(VerbRunner cb) {
World w = World.getInstance();
if (w.getCurrentDialog() == null || w.getCurrentDialog().getCurrentOption() == null) {
EngineLogger.debug("SayDialogAction WARNING: Current dialog doesn't found.");
return false;
}
setVerbCb(cb);
DialogOption o = w.getCurrentDialog().getCurrentOption();
String playerText = o.getText();
responseText = o.getResponseText();
responseVoiceId = o.getResponseVoiceId();
characterName = w.getCurrentDialog().getActor();
characterTurn = true;
previousAnim = null;
// If the player or the character is talking restore to 'stand' pose
restoreStandPose(w.getCurrentScene().getPlayer());
if (w.getCurrentScene().getActor(characterName, false) instanceof SpriteActor)
restoreStandPose((CharacterActor) w.getCurrentScene().getActor(characterName, false));
if (playerText != null) {
CharacterActor player = w.getCurrentScene().getPlayer();
Rectangle boundingRectangle = player.getBBox().getBoundingRectangle();
float x = boundingRectangle.getX() + boundingRectangle.getWidth() / 2;
float y = boundingRectangle.getY() + boundingRectangle.getHeight();
w.getTextManager().addText(playerText, x, y, false, Text.Type.TALK, player.getTextColor(), null, player.getId(), o.getVoiceId(), this);
startTalkAnim(player);
} else {
resume();
}
return getWait();
}
use of com.bladecoder.engine.model.World in project bladecoder-adventure-engine by bladecoder.
the class SetPlayerAction method run.
@Override
public boolean run(VerbRunner cb) {
Scene s = actor.getScene();
BaseActor a = s.getActor(actor.getActorId(), true);
s.setPlayer((CharacterActor) a);
if (inventory != null) {
World w = World.getInstance();
w.getInventory().dispose();
w.setInventory(inventory);
w.getInventory().loadAssets();
EngineAssetManager.getInstance().finishLoading();
w.getInventory().retrieveAssets();
}
return false;
}
use of com.bladecoder.engine.model.World in project bladecoder-adventure-engine by bladecoder.
the class LoadSaveScreen method show.
@Override
public void show() {
float size = DPIUtils.getPrefButtonSize();
float pad = DPIUtils.getMarginSize();
final Skin skin = ui.getSkin();
final World world = World.getInstance();
// loadScreenMode = ui.getScreen(Screens.LOAD_GAME_SCREEN) == this;
loadScreenMode = world.getCurrentScene() == null;
stage = new Stage(new ScreenViewport());
slotWidth = (int) (stage.getViewport().getWorldWidth() / (ROW_SLOTS + 1) - 2 * pad);
slotHeight = (int) (slotWidth * stage.getViewport().getScreenHeight() / stage.getViewport().getScreenWidth());
LoadSaveScreenStyle style = skin.get(LoadSaveScreenStyle.class);
Drawable bg = style.background;
if (bg == null && style.bgFile != null) {
bgTexFile = new Texture(EngineAssetManager.getInstance().getResAsset(style.bgFile));
bgTexFile.setFilter(TextureFilter.Linear, TextureFilter.Linear);
bg = new TextureRegionDrawable(new TextureRegion(bgTexFile));
}
Table table = new Table(skin);
table.setFillParent(true);
table.center();
table.pad(pad);
Label title = new Label(loadScreenMode ? I18N.getString("ui.load") : I18N.getString("ui.save"), skin, "title");
Button back = new Button(skin, "back");
back.addListener(new ClickListener() {
public void clicked(InputEvent event, float x, float y) {
ui.setCurrentScreen(Screens.MENU_SCREEN);
}
});
Table header = new Table();
// header.padBottom(pad);
Container<Button> cont = new Container<Button>(back);
cont.size(size);
header.add(cont);
header.add(title).fillX().expandX().left();
table.add(header).fillX().expandX().left();
if (bg != null)
table.setBackground(bg);
table.addListener(new InputListener() {
@Override
public boolean keyUp(InputEvent event, int keycode) {
if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK)
if (world.getCurrentScene() != null)
ui.setCurrentScreen(Screens.SCENE_SCREEN);
return true;
}
});
final PagedScrollPane scroll = new PagedScrollPane();
scroll.setFlingTime(0.1f);
scroll.setPageSpacing(0);
Table slots = new Table().pad(pad);
slots.defaults().pad(pad).size(slotWidth + pad, slotHeight + pad * 2).top();
int c = 0;
// Add "new slot" slot for save screen
if (!loadScreenMode) {
slots.add(getSlotButton(Long.toString(new Date().getTime()))).fill().expand();
c++;
}
final List<String> sl = getSlots();
Collections.sort(sl);
for (int j = sl.size() - 1; j >= 0; j--) {
String s = sl.get(j);
if (c % ROW_SLOTS == 0 && c % (ROW_SLOTS * COL_SLOTS) != 0)
slots.row();
if (c != 0 && c % (ROW_SLOTS * COL_SLOTS) == 0) {
scroll.addPage(slots);
slots = new Table().pad(pad);
slots.defaults().pad(pad).size(slotWidth + pad, slotHeight + pad * 2).top();
}
Button removeButton = new Button(skin, "delete_game");
removeButton.setName(s);
removeButton.addListener(removeClickListener);
Container<Button> container = new Container<Button>(removeButton);
container.size(DPIUtils.getPrefButtonSize() * .75f);
container.align(Align.topRight);
slots.stack(getSlotButton(s), container).fill().expand();
c++;
}
// Add last page
if (slots.getCells().size > 0)
scroll.addPage(slots);
table.row();
if (loadScreenMode && sl.size() == 0) {
Label lbl = new Label(I18N.getString("ui.noSavedGames"), skin, "title");
lbl.setAlignment(Align.center);
lbl.setWrap(true);
table.add(lbl).expand().fill();
} else {
table.add(scroll).expand().fill();
}
table.pack();
stage.setKeyboardFocus(table);
stage.addActor(table);
pointer = new Pointer(ui.getSkin());
stage.addActor(pointer);
Gdx.input.setInputProcessor(stage);
}
use of com.bladecoder.engine.model.World in project bladecoder-adventure-engine by bladecoder.
the class DefaultSceneScreen method resize.
@Override
public void resize(int width, int height) {
final World world = World.getInstance();
if (!world.isDisposed()) {
viewport.setWorldSize(world.getWidth(), world.getHeight());
viewport.update(width, height, true);
world.resize(viewport.getWorldWidth(), viewport.getWorldHeight());
} else {
viewport.setWorldSize(width, height);
viewport.update(width, height, true);
}
resetUI();
pie.resize(viewport.getScreenWidth(), viewport.getScreenHeight());
inventoryUI.resize(viewport.getScreenWidth(), viewport.getScreenHeight());
inventoryButton.resize(width, height);
pointer.resize(width, height);
float size = DPIUtils.getPrefButtonSize();
float margin = DPIUtils.getMarginSize();
menuButton.setSize(size, size);
menuButton.setPosition(stage.getViewport().getScreenWidth() - menuButton.getWidth() - margin, stage.getViewport().getScreenHeight() - menuButton.getHeight() - margin);
}
use of com.bladecoder.engine.model.World in project bladecoder-adventure-engine by bladecoder.
the class DefaultSceneScreen method drawHotspots.
private void drawHotspots(SpriteBatch batch) {
final World world = World.getInstance();
for (BaseActor a : world.getCurrentScene().getActors().values()) {
if (!(a instanceof InteractiveActor) || !a.isVisible() || a == world.getCurrentScene().getPlayer())
continue;
InteractiveActor ia = (InteractiveActor) a;
if (!ia.canInteract())
continue;
Polygon p = a.getBBox();
if (p == null) {
EngineLogger.error("ERROR DRAWING HOTSPOT FOR: " + a.getId());
}
Rectangle r = a.getBBox().getBoundingRectangle();
unprojectTmp.set(r.getX() + r.getWidth() / 2, r.getY() + r.getHeight() / 2, 0);
world.getSceneCamera().scene2screen(viewport, unprojectTmp);
if (!showDesc || ia.getDesc() == null) {
float size = DPIUtils.ICON_SIZE * DPIUtils.getSizeMultiplier();
if (ia.getVerb("leave") != null) {
TransformDrawable drawable = (TransformDrawable) getUI().getSkin().getDrawable("leave");
drawable.draw(batch, unprojectTmp.x - size / 2, unprojectTmp.y - size / 2, size / 2, size / 2, size, size, 1.0f, 1.0f, calcLeaveArrowRotation(ia));
} else {
Drawable drawable = getUI().getSkin().getDrawable("hotspot");
if (drawable != null)
drawable.draw(batch, unprojectTmp.x - size / 2, unprojectTmp.y - size / 2, size, size);
}
} else {
BitmapFont font = getUI().getSkin().getFont("desc");
String desc = ia.getDesc();
if (desc.charAt(0) == I18N.PREFIX)
desc = I18N.getString(desc.substring(1));
textLayout.setText(font, desc);
float textX = unprojectTmp.x - textLayout.width / 2;
float textY = unprojectTmp.y + textLayout.height;
RectangleRenderer.draw(batch, textX - 8, textY - textLayout.height - 8, textLayout.width + 16, textLayout.height + 16, Color.BLACK);
font.draw(batch, textLayout, textX, textY);
}
}
}
Aggregations