Search in sources :

Example 11 with Action

use of com.bladecoder.engine.actions.Action in project bladecoder-adventure-engine by bladecoder.

the class ActionList method edit.

@Override
protected void edit() {
    Action e = list.getSelected();
    if (e == null || e instanceof EndAction || e instanceof DisableActionAction)
        return;
    editedElement = (Action) ElementUtils.cloneElement(e);
    EditModelDialog<Verb, Action> dialog = getEditElementDialogInstance(e);
    dialog.show(getStage());
    dialog.setListener(new ChangeListener() {

        @SuppressWarnings("unchecked")
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            Action e = ((EditModelDialog<Verb, Action>) actor).getElement();
            int pos = list.getSelectedIndex();
            list.getItems().set(pos, e);
            parent.getActions().set(pos, e);
            Ctx.project.setModified();
            if (isControlAction(editedElement)) {
                if (!editedElement.getClass().getName().equals(e.getClass().getName())) {
                    deleteControlAction(pos, (AbstractControlAction) editedElement);
                    if (isControlAction(e)) {
                        insertEndAction(pos + 1, getOrCreateControlActionId((AbstractControlAction) e));
                        if (e instanceof AbstractIfAction)
                            insertEndAction(pos + 2, getOrCreateControlActionId((AbstractControlAction) e));
                    }
                } else {
                    // insert previous caId
                    try {
                        ActionUtils.setParam(e, CONTROL_ACTION_ID_ATTR, getOrCreateControlActionId((AbstractControlAction) editedElement));
                    } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e1) {
                        EditorLogger.error(e1.getMessage());
                    }
                }
            }
        }
    });
}
Also used : AbstractControlAction(com.bladecoder.engine.actions.AbstractControlAction) UndoDeleteAction(com.bladecoder.engineeditor.undo.UndoDeleteAction) AbstractIfAction(com.bladecoder.engine.actions.AbstractIfAction) CommentAction(com.bladecoder.engine.actions.CommentAction) EndAction(com.bladecoder.engine.actions.EndAction) Action(com.bladecoder.engine.actions.Action) AbstractControlAction(com.bladecoder.engine.actions.AbstractControlAction) DisableActionAction(com.bladecoder.engine.actions.DisableActionAction) DisableActionAction(com.bladecoder.engine.actions.DisableActionAction) PropertyChangeEvent(java.beans.PropertyChangeEvent) EndAction(com.bladecoder.engine.actions.EndAction) Verb(com.bladecoder.engine.model.Verb) Actor(com.badlogic.gdx.scenes.scene2d.Actor) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) PropertyChangeListener(java.beans.PropertyChangeListener) AbstractIfAction(com.bladecoder.engine.actions.AbstractIfAction)

Example 12 with Action

use of com.bladecoder.engine.actions.Action in project bladecoder-adventure-engine by bladecoder.

the class ActionList method paste.

@Override
protected void paste() {
    if (parent == null || multiClipboard.size() == 0)
        return;
    Array<Action> sel = new Array<Action>();
    for (int i = multiClipboard.size() - 1; i >= 0; i--) {
        Action newElement = (Action) ElementUtils.cloneElement(multiClipboard.get(i));
        int pos = list.getSelectedIndex() + 1;
        list.getItems().insert(pos, newElement);
        parent.getActions().add(pos, newElement);
        if (scope.equals(ScopePanel.WORLD_SCOPE))
            Ctx.project.getI18N().extractStrings(null, null, parent.getHashKey(), pos, newElement);
        else if (scope.equals(ScopePanel.SCENE_SCOPE))
            Ctx.project.getI18N().extractStrings(Ctx.project.getSelectedScene().getId(), null, parent.getHashKey(), pos, newElement);
        else
            Ctx.project.getI18N().extractStrings(Ctx.project.getSelectedScene().getId(), Ctx.project.getSelectedActor().getId(), parent.getHashKey(), pos, newElement);
        list.invalidateHierarchy();
        if (isControlAction(newElement)) {
            try {
                ActionUtils.setParam(newElement, CONTROL_ACTION_ID_ATTR, null);
            } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {
                EditorLogger.error(e.getMessage());
            }
            insertEndAction(pos + 1, getOrCreateControlActionId((AbstractControlAction) newElement));
            if (newElement instanceof AbstractIfAction)
                insertEndAction(pos + 2, getOrCreateControlActionId((AbstractControlAction) newElement));
        }
        sel.add(newElement);
    }
    list.getSelection().clear();
    list.getSelection().addAll(sel);
    Ctx.project.setModified();
}
Also used : Array(com.badlogic.gdx.utils.Array) AbstractControlAction(com.bladecoder.engine.actions.AbstractControlAction) UndoDeleteAction(com.bladecoder.engineeditor.undo.UndoDeleteAction) AbstractIfAction(com.bladecoder.engine.actions.AbstractIfAction) CommentAction(com.bladecoder.engine.actions.CommentAction) EndAction(com.bladecoder.engine.actions.EndAction) Action(com.bladecoder.engine.actions.Action) AbstractControlAction(com.bladecoder.engine.actions.AbstractControlAction) DisableActionAction(com.bladecoder.engine.actions.DisableActionAction) AbstractIfAction(com.bladecoder.engine.actions.AbstractIfAction)

Example 13 with Action

use of com.bladecoder.engine.actions.Action in project bladecoder-adventure-engine by bladecoder.

the class ActionList method down.

private void down() {
    if (parent == null || list.getSelection().size() == 0)
        return;
    Array<Action> sel = new Array<Action>();
    Array<Action> sortedSelection = getSortedSelection();
    for (int i = sortedSelection.size - 1; i >= 0; i--) {
        int pos = list.getItems().indexOf(sortedSelection.get(i), true);
        Array<Action> items = list.getItems();
        if (pos == -1 || pos == items.size - 1)
            return;
        Action e = items.get(pos);
        Action e2 = items.get(pos + 1);
        sel.add(e);
        if (isControlAction(e) && isControlAction(e2)) {
            continue;
        }
        parent.getActions().set(pos + 1, e);
        parent.getActions().set(pos, e2);
        items.set(pos + 1, e);
        items.set(pos, e2);
    }
    list.getSelection().clear();
    list.getSelection().addAll(sel);
    upBtn.setDisabled(list.getSelectedIndex() == 0);
    downBtn.setDisabled(list.getSelectedIndex() == list.getItems().size - 1);
    Ctx.project.setModified();
}
Also used : Array(com.badlogic.gdx.utils.Array) UndoDeleteAction(com.bladecoder.engineeditor.undo.UndoDeleteAction) AbstractIfAction(com.bladecoder.engine.actions.AbstractIfAction) CommentAction(com.bladecoder.engine.actions.CommentAction) EndAction(com.bladecoder.engine.actions.EndAction) Action(com.bladecoder.engine.actions.Action) AbstractControlAction(com.bladecoder.engine.actions.AbstractControlAction) DisableActionAction(com.bladecoder.engine.actions.DisableActionAction)

Example 14 with Action

use of com.bladecoder.engine.actions.Action in project bladecoder-adventure-engine by bladecoder.

the class ActionList method create.

@Override
protected void create() {
    EditModelDialog<Verb, Action> dialog = getEditElementDialogInstance(null);
    dialog.show(getStage());
    dialog.setListener(new ChangeListener() {

        @SuppressWarnings("unchecked")
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            int pos = list.getSelectedIndex() + 1;
            Action e = ((EditModelDialog<Verb, Action>) actor).getElement();
            list.getItems().insert(pos, e);
            parent.getActions().add(pos, e);
            list.getSelection().choose(list.getItems().get(pos));
            if (isControlAction(e)) {
                insertEndAction(pos + 1, getOrCreateControlActionId((AbstractControlAction) e));
                if (e instanceof AbstractIfAction)
                    insertEndAction(pos + 2, getOrCreateControlActionId((AbstractControlAction) e));
            }
            list.invalidateHierarchy();
        }
    });
}
Also used : AbstractControlAction(com.bladecoder.engine.actions.AbstractControlAction) UndoDeleteAction(com.bladecoder.engineeditor.undo.UndoDeleteAction) AbstractIfAction(com.bladecoder.engine.actions.AbstractIfAction) CommentAction(com.bladecoder.engine.actions.CommentAction) EndAction(com.bladecoder.engine.actions.EndAction) Action(com.bladecoder.engine.actions.Action) AbstractControlAction(com.bladecoder.engine.actions.AbstractControlAction) DisableActionAction(com.bladecoder.engine.actions.DisableActionAction) PropertyChangeEvent(java.beans.PropertyChangeEvent) Verb(com.bladecoder.engine.model.Verb) Actor(com.badlogic.gdx.scenes.scene2d.Actor) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) PropertyChangeListener(java.beans.PropertyChangeListener) AbstractIfAction(com.bladecoder.engine.actions.AbstractIfAction)

Example 15 with Action

use of com.bladecoder.engine.actions.Action in project bladecoder-adventure-engine by bladecoder.

the class ActionList method deleteFirstActionNamed.

private int deleteFirstActionNamed(int pos, String actionId) {
    while (!(list.getItems().get(pos) instanceof AbstractControlAction && getOrCreateControlActionId((AbstractControlAction) list.getItems().get(pos)).equals(actionId))) pos++;
    Action e2 = list.getItems().removeIndex(pos);
    parent.getActions().remove(e2);
    return pos;
}
Also used : AbstractControlAction(com.bladecoder.engine.actions.AbstractControlAction) UndoDeleteAction(com.bladecoder.engineeditor.undo.UndoDeleteAction) AbstractIfAction(com.bladecoder.engine.actions.AbstractIfAction) CommentAction(com.bladecoder.engine.actions.CommentAction) EndAction(com.bladecoder.engine.actions.EndAction) Action(com.bladecoder.engine.actions.Action) AbstractControlAction(com.bladecoder.engine.actions.AbstractControlAction) DisableActionAction(com.bladecoder.engine.actions.DisableActionAction)

Aggregations

Action (com.bladecoder.engine.actions.Action)31 DisableActionAction (com.bladecoder.engine.actions.DisableActionAction)12 EndAction (com.bladecoder.engine.actions.EndAction)11 AbstractControlAction (com.bladecoder.engine.actions.AbstractControlAction)10 AbstractIfAction (com.bladecoder.engine.actions.AbstractIfAction)10 CommentAction (com.bladecoder.engine.actions.CommentAction)10 UndoDeleteAction (com.bladecoder.engineeditor.undo.UndoDeleteAction)10 Verb (com.bladecoder.engine.model.Verb)8 InteractiveActor (com.bladecoder.engine.model.InteractiveActor)6 Scene (com.bladecoder.engine.model.Scene)6 ReflectionException (com.badlogic.gdx.utils.reflect.ReflectionException)5 SetCutmodeAction (com.bladecoder.engine.actions.SetCutmodeAction)5 BaseActor (com.bladecoder.engine.model.BaseActor)5 Array (com.badlogic.gdx.utils.Array)4 Serializable (com.badlogic.gdx.utils.Json.Serializable)4 JsonValue (com.badlogic.gdx.utils.JsonValue)4 LookAtAction (com.bladecoder.engine.actions.LookAtAction)4 SayAction (com.bladecoder.engine.actions.SayAction)4 IOException (java.io.IOException)4 CharacterActor (com.bladecoder.engine.model.CharacterActor)3