Skip to content

Commit 3145a20

Browse files
committed
- Fixes several bug in editor
- EndGameAction - Action refactor. VerbRunner parameter instead of ActionCallback.
1 parent d98db41 commit 3145a20

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+198
-74
lines changed

adventure-editor/src/main/java/com/bladecoder/engineeditor/scneditor/ScnWidget.java

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.beans.PropertyChangeEvent;
1919
import java.beans.PropertyChangeListener;
2020
import java.text.MessageFormat;
21+
import java.util.List;
2122

2223
import com.badlogic.gdx.Gdx;
2324
import com.badlogic.gdx.Input.Keys;
@@ -39,6 +40,7 @@
3940
import com.bladecoder.engine.assets.EngineAssetManager;
4041
import com.bladecoder.engine.model.ActorRenderer;
4142
import com.bladecoder.engine.model.BaseActor;
43+
import com.bladecoder.engine.model.InteractiveActor;
4244
import com.bladecoder.engine.model.Scene;
4345
import com.bladecoder.engine.model.SceneLayer;
4446
import com.bladecoder.engine.model.SpriteActor;
@@ -119,7 +121,7 @@ public void propertyChange(PropertyChangeEvent e) {
119121
if (!projectLoadedFlag)
120122
setSelectedActor(Ctx.project.getSelectedActor());
121123
} else if (e.getPropertyName().equals(Project.NOTIFY_ANIM_SELECTED)) {
122-
if (!projectLoadedFlag)
124+
if (!projectLoadedFlag && Ctx.project.getSelectedFA() != null)
123125
setSelectedFA(Ctx.project.getSelectedFA());
124126
} else if (e.getPropertyName().equals(Project.NOTIFY_PROJECT_LOADED)) {
125127
projectLoadedFlag = true;
@@ -165,7 +167,10 @@ public void act(float delta) {
165167

166168
if (animation) {
167169
for (BaseActor a : scn.getActors().values()) {
170+
boolean v = a.isVisible();
171+
a.setVisible(true);
168172
a.update(delta);
173+
a.setVisible(v);
169174
}
170175
}
171176

@@ -223,13 +228,18 @@ public void draw(Batch batch, float parentAlpha) {
223228
scn.draw(sceneBatch);
224229

225230
// draw not visible sprite actors
226-
for(BaseActor a:scn.getActors().values()) {
227-
if(a instanceof SpriteActor && !a.isVisible()) {
228-
SpriteActor sa = (SpriteActor)a;
229-
230-
sa.setVisible(true);
231-
sa.draw(sceneBatch);
232-
sa.setVisible(false);
231+
List<SceneLayer> layers = scn.getLayers();
232+
for (int i = layers.size() - 1; i >= 0; i--) {
233+
SceneLayer layer = layers.get(i);
234+
235+
List<InteractiveActor> actors = layer.getActors();
236+
237+
for (BaseActor a : actors) {
238+
if(a instanceof SpriteActor && !a.isVisible()) {
239+
a.setVisible(true);
240+
((SpriteActor)a).draw(sceneBatch);
241+
a.setVisible(false);
242+
}
233243
}
234244
}
235245

@@ -370,8 +380,9 @@ public void setAnimation(boolean v) {
370380
animation = v;
371381
}
372382

373-
public void setAnimation(AnimationDesc fa) {
383+
public void setAnimationRenderer(BaseActor a, AnimationDesc fa) {
374384
try {
385+
faRenderer.setActor(a);
375386
faRenderer.setAnimation(fa);
376387
} catch (Exception e) {
377388
Ctx.msg.show(getStage(), "Could not retrieve assets for sprite: " + fa.id, 4);
@@ -562,8 +573,8 @@ public void setSelectedActor(BaseActor actor) {
562573
}
563574

564575
selectedActor = a;
565-
faRenderer.setActor(a);
566-
setAnimation(null);
576+
// faRenderer.setActor(a);
577+
setAnimationRenderer(null, null);
567578
}
568579

569580
public void setSelectedFA(String selFA) {
@@ -578,23 +589,23 @@ public void setSelectedFA(String selFA) {
578589
if (selFA != null && (s.getAnimations().get(selFA) != null
579590
|| s.getAnimations().get(AnimationDesc.getFlipId(selFA)) != null)) {
580591

581-
setAnimation(s.getAnimations().get(selFA));
592+
setAnimationRenderer(selectedActor, s.getAnimations().get(selFA));
582593

583594
if (inScene || s.getCurrentAnimation() == null
584595
|| ((SpriteActor) selectedActor).getRenderer().getInitAnimation().equals(selFA)) {
585596
try {
586597

587598
((SpriteActor) selectedActor).startAnimation(selFA, Tween.Type.REPEAT, Tween.INFINITY, null);
588599
} catch (Exception e) {
589-
setAnimation(null);
600+
setAnimationRenderer(selectedActor, null);
590601
((SpriteActor) selectedActor).getRenderer().getAnimations().remove(selFA);
591602
}
592603
}
593604
} else {
594-
setAnimation(null);
605+
setAnimationRenderer(selectedActor, null);
595606
}
596607
} else {
597-
setAnimation(null);
608+
setAnimationRenderer(selectedActor, null);
598609
}
599610
}
600611

adventure-editor/src/main/java/com/bladecoder/engineeditor/ui/EditActorDialog.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import com.bladecoder.engine.model.InteractiveActor;
3232
import com.bladecoder.engine.model.ObstacleActor;
3333
import com.bladecoder.engine.model.Scene;
34+
import com.bladecoder.engine.model.SceneLayer;
3435
import com.bladecoder.engine.model.Sprite3DRenderer;
3536
import com.bladecoder.engine.model.SpriteActor;
3637
import com.bladecoder.engine.model.SpriteActor.DepthType;
@@ -358,9 +359,19 @@ protected void inputsToModel(boolean create) {
358359
}
359360
}
360361

361-
if(create) {
362-
parent.addActor(e);
362+
if(!create) {
363+
parent.removeActor(e);
364+
}
365+
366+
parent.addActor(e);
367+
368+
if(e instanceof InteractiveActor) {
369+
SceneLayer l = parent.getLayer(((InteractiveActor) e).getLayer());
370+
l.orderByZIndex();
363371
}
372+
373+
if(e instanceof SpriteActor)
374+
((SpriteActor) e).retrieveAssets();
364375

365376
// TODO UNDO OP
366377
// UndoOp undoOp = new UndoAddElement(doc, e);

adventure-editor/src/main/java/com/bladecoder/engineeditor/ui/EditAnimationDialog.java

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,9 @@ public EditAnimationDialog(Skin skin, SpriteActor p, AnimationDesc e) {
9090
Param.Type.FLOAT, true, "1.0");
9191
delay = InputPanelFactory.createInputPanel(skin, "Delay",
9292
"Select the delay between repeats in seconds",
93-
Param.Type.FLOAT, false);
94-
count = InputPanelFactory.createInputPanel(skin, "Count", "Select the repeat times",
95-
Param.Type.INTEGER, false);
93+
Param.Type.FLOAT, true, "0");
94+
count = InputPanelFactory.createInputPanel(skin, "Count", "Select the repeat times. -1 for infinity",
95+
Param.Type.INTEGER, true, "-1");
9696
in = InputPanelFactory.createInputPanel(
9797
skin,
9898
"In Dist",
@@ -117,15 +117,7 @@ public EditAnimationDialog(Skin skin, SpriteActor p, AnimationDesc e) {
117117

118118
@Override
119119
public void changed(ChangeEvent event, Actor actor) {
120-
String type = repeat.getText();
121-
122-
if (type.equals(Tween.Type.REPEAT.toString()) || type.equals(Tween.Type.YOYO.toString())) {
123-
setVisible(delay,true);
124-
setVisible(count,true);
125-
} else {
126-
setVisible(delay,false);
127-
setVisible(count,false);
128-
}
120+
showHideFieldsDelayCountFields();
129121
}
130122
});
131123

@@ -191,6 +183,18 @@ public void changed(ChangeEvent event, Actor actor) {
191183
}
192184
}
193185

186+
private void showHideFieldsDelayCountFields() {
187+
String type = repeat.getText();
188+
189+
if (type.equals(Tween.Type.REPEAT.toString()) || type.equals(Tween.Type.YOYO.toString())) {
190+
setVisible(delay,true);
191+
setVisible(count,true);
192+
} else {
193+
setVisible(delay,false);
194+
setVisible(count,false);
195+
}
196+
}
197+
194198
private void setSource() {
195199
AnimationDesc anim = null;
196200

@@ -433,7 +437,7 @@ protected void inputsToModel(boolean create) {
433437
e.delay = Float.parseFloat(delay.getText());
434438

435439
if(create) {
436-
parent.getRenderer().getAnimations().put(e.id, e);
440+
parent.getRenderer().addAnimation(e);
437441
}
438442

439443
// TODO UNDO OP
@@ -460,6 +464,8 @@ protected void modelToInputs() {
460464
sound.setText(e.sound);
461465
preload.setText(Boolean.toString(e.preload));
462466
dispose.setText(Boolean.toString(e.disposeWhenPlayed));
467+
468+
showHideFieldsDelayCountFields();
463469
}
464470

465471
}

adventure-editor/src/main/java/com/bladecoder/engineeditor/ui/PackageDialog.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ private String packageAdv() throws IOException {
191191

192192
msg = genDesktopJar(projectName, versionParam, jar);
193193

194-
if (type.getText().equals(TYPES[0])) { // RUNNABLE JAR
194+
if (type.getText().equals(TYPES[0])) { // BUNDLE JRE
195195
if (os.getText().equals("linux64")) {
196196
packr(Platform.linux64, linux64JRE.getText(), projectName, jar, DESKTOP_LAUNCHER, dir.getText());
197197
} else if (os.getText().equals("linux32")) {

adventure-editor/src/main/java/com/bladecoder/engineeditor/ui/components/EditModelDialog.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
1919
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
2020
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener.ChangeEvent;
21+
import com.bladecoder.engineeditor.Ctx;
2122

2223
public abstract class EditModelDialog<PARENT, T> extends EditDialog {
2324

@@ -47,7 +48,11 @@ protected void init(PARENT parent, T e, InputPanel[] inputs) {
4748
} else {
4849
setTitle("EDITING " + e.getClass().getSimpleName());
4950

50-
modelToInputs();
51+
try{
52+
modelToInputs();
53+
} catch (Exception e1) {
54+
Ctx.msg.show(getStage(), "Error setting fields " + e1.getMessage(), 4);
55+
}
5156
}
5257

5358
// TODO Set focus to the 1st element
@@ -57,8 +62,12 @@ protected void init(PARENT parent, T e, InputPanel[] inputs) {
5762
}
5863

5964
@Override
60-
protected void ok() {
61-
inputsToModel(e==null);
65+
protected void ok() {
66+
try{
67+
inputsToModel(e==null);
68+
} catch (Exception e1) {
69+
Ctx.msg.show(getStage(), "Error getting fields " + e1.getMessage(), 4);
70+
}
6271

6372
if (listener != null)
6473
listener.changed(new ChangeEvent(), this);

blade-engine/src/com/bladecoder/engine/actions/Action.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
******************************************************************************/
1616
package com.bladecoder.engine.actions;
1717

18+
import com.bladecoder.engine.model.VerbRunner;
19+
1820
public interface Action {
1921
/**
2022
* Execute the action
@@ -23,5 +25,5 @@ public interface Action {
2325
* @return If 'true', the verb must stops the execution and wait
2426
* for the action to call the cb.resume()
2527
*/
26-
public boolean run(ActionCallback cb);
28+
public boolean run(VerbRunner cb);
2729
}

blade-engine/src/com/bladecoder/engine/actions/ActionFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ public class ActionFactory {
103103
"com.bladecoder.engine.actions.MoveToSceneAction");
104104
actions.put("Text",
105105
"com.bladecoder.engine.actions.TextAction");
106+
actions.put("EndGame",
107+
"com.bladecoder.engine.actions.EndGameAction");
106108

107109
for(String name: actions.keySet()) {
108110
String cls = actions.get(name);

blade-engine/src/com/bladecoder/engine/actions/AnimationAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import com.bladecoder.engine.anim.Tween;
2121
import com.bladecoder.engine.model.SpriteActor;
22+
import com.bladecoder.engine.model.VerbRunner;
2223
import com.bladecoder.engine.model.World;
2324
import com.bladecoder.engine.util.EngineLogger;
2425

@@ -42,7 +43,7 @@ public class AnimationAction implements Action {
4243
private Tween.Type repeat = Tween.Type.SPRITE_DEFINED;
4344

4445
@Override
45-
public boolean run(ActionCallback cb) {
46+
public boolean run(VerbRunner cb) {
4647
EngineLogger.debug(MessageFormat.format("ANIMATION_ACTION: {0}", animation.getAnimationId()));
4748

4849
String actorId = animation.getActorId();

blade-engine/src/com/bladecoder/engine/actions/CameraAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.bladecoder.engine.assets.EngineAssetManager;
2121
import com.bladecoder.engine.model.SceneCamera;
2222
import com.bladecoder.engine.model.SpriteActor;
23+
import com.bladecoder.engine.model.VerbRunner;
2324
import com.bladecoder.engine.model.World;
2425

2526
@ActionDescription("Set/Animates the camera position and zoom. Also can stablish the follow character parameter")
@@ -45,7 +46,7 @@ public class CameraAction implements Action {
4546
private boolean wait = true;
4647

4748
@Override
48-
public boolean run(ActionCallback cb) {
49+
public boolean run(VerbRunner cb) {
4950

5051
float scale = EngineAssetManager.getInstance().getScale();
5152

blade-engine/src/com/bladecoder/engine/actions/CancelVerbAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public class CancelVerbAction implements Action {
4242
private String target;
4343

4444
@Override
45-
public boolean run(ActionCallback cb) {
45+
public boolean run(VerbRunner cb) {
4646

4747
VerbRunner v = null;
4848

0 commit comments

Comments
 (0)