Search in sources :

Example 11 with World

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();
}
Also used : Rectangle(com.badlogic.gdx.math.Rectangle) SpriteActor(com.bladecoder.engine.model.SpriteActor) World(com.bladecoder.engine.model.World) CharacterActor(com.bladecoder.engine.model.CharacterActor) DialogOption(com.bladecoder.engine.model.DialogOption)

Example 12 with World

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;
}
Also used : BaseActor(com.bladecoder.engine.model.BaseActor) Scene(com.bladecoder.engine.model.Scene) World(com.bladecoder.engine.model.World)

Example 13 with World

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);
}
Also used : Label(com.badlogic.gdx.scenes.scene2d.ui.Label) TextureRegionDrawable(com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable) World(com.bladecoder.engine.model.World) Texture(com.badlogic.gdx.graphics.Texture) TextureRegion(com.badlogic.gdx.graphics.g2d.TextureRegion) Container(com.badlogic.gdx.scenes.scene2d.ui.Container) InputListener(com.badlogic.gdx.scenes.scene2d.InputListener) Button(com.badlogic.gdx.scenes.scene2d.ui.Button) Stage(com.badlogic.gdx.scenes.scene2d.Stage) InputEvent(com.badlogic.gdx.scenes.scene2d.InputEvent) ClickListener(com.badlogic.gdx.scenes.scene2d.utils.ClickListener) Table(com.badlogic.gdx.scenes.scene2d.ui.Table) TextureRegionDrawable(com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable) Drawable(com.badlogic.gdx.scenes.scene2d.utils.Drawable) ScreenViewport(com.badlogic.gdx.utils.viewport.ScreenViewport) Date(java.util.Date) Skin(com.badlogic.gdx.scenes.scene2d.ui.Skin)

Example 14 with World

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);
}
Also used : World(com.bladecoder.engine.model.World)

Example 15 with World

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);
        }
    }
}
Also used : InteractiveActor(com.bladecoder.engine.model.InteractiveActor) TransformDrawable(com.badlogic.gdx.scenes.scene2d.utils.TransformDrawable) Rectangle(com.badlogic.gdx.math.Rectangle) Drawable(com.badlogic.gdx.scenes.scene2d.utils.Drawable) TransformDrawable(com.badlogic.gdx.scenes.scene2d.utils.TransformDrawable) BaseActor(com.bladecoder.engine.model.BaseActor) World(com.bladecoder.engine.model.World) Polygon(com.badlogic.gdx.math.Polygon) BitmapFont(com.badlogic.gdx.graphics.g2d.BitmapFont)

Aggregations

World (com.bladecoder.engine.model.World)20 BaseActor (com.bladecoder.engine.model.BaseActor)7 Rectangle (com.badlogic.gdx.math.Rectangle)6 InteractiveActor (com.bladecoder.engine.model.InteractiveActor)6 Scene (com.bladecoder.engine.model.Scene)5 Drawable (com.badlogic.gdx.scenes.scene2d.utils.Drawable)4 BitmapFont (com.badlogic.gdx.graphics.g2d.BitmapFont)3 TextureRegion (com.badlogic.gdx.graphics.g2d.TextureRegion)3 TextureRegionDrawable (com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable)3 CharacterActor (com.bladecoder.engine.model.CharacterActor)3 SpriteActor (com.bladecoder.engine.model.SpriteActor)3 Color (com.badlogic.gdx.graphics.Color)2 Texture (com.badlogic.gdx.graphics.Texture)2 SpriteBatch (com.badlogic.gdx.graphics.g2d.SpriteBatch)2 Polygon (com.badlogic.gdx.math.Polygon)2 Vector2 (com.badlogic.gdx.math.Vector2)2 InputEvent (com.badlogic.gdx.scenes.scene2d.InputEvent)2 InputListener (com.badlogic.gdx.scenes.scene2d.InputListener)2 Stage (com.badlogic.gdx.scenes.scene2d.Stage)2 Button (com.badlogic.gdx.scenes.scene2d.ui.Button)2