Skip to content

Commit ff5d9fc

Browse files
committed
Animation button fixes.
1 parent f84f0bc commit ff5d9fc

File tree

5 files changed

+45
-32
lines changed

5 files changed

+45
-32
lines changed

adventure-editor/src/main/resources/versions.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ androidGradlePluginVersion=3.2.1
33
bladeInkVersion=0.5.1
44
buildToolsVersion=28.0.3
55
libgdxVersion=1.9.9
6-
roboVMGradlePluginVersion=2.3.5
7-
roboVMVersion=2.3.5
6+
roboVMGradlePluginVersion=2.3.7
7+
roboVMVersion=2.3.7
88
version=3.1.2-SNAPSHOT

blade-engine/src/com/bladecoder/engine/ui/BladeSkin.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,16 +175,20 @@ else if (size != -1) // TODO set size in points (dpi
175175
@Override
176176
public AnimationDrawable read(Json json, JsonValue jsonData, @SuppressWarnings("rawtypes") Class type) {
177177
String name = json.readValue("name", String.class, jsonData);
178-
float frameDuration = json.readValue("frame_duration", Float.class, jsonData);
178+
float duration = json.readValue("duration", Float.class, 1f, jsonData);
179+
PlayMode playMode = json.readValue("play_mode", PlayMode.class, PlayMode.LOOP, jsonData);
179180

180181
Array<AtlasRegion> regions = getAtlas().findRegions(name);
181182

182-
Animation<AtlasRegion> a = new Animation<AtlasRegion>(frameDuration, regions, PlayMode.LOOP);
183+
if (regions.size == 0)
184+
throw new SerializationException("AnimationDrawable not found: " + name);
185+
186+
Animation<AtlasRegion> a = new Animation<>(duration / regions.size, regions, playMode);
183187
AnimationDrawable drawable = new AnimationDrawable(a);
184188

185189
if (drawable instanceof BaseDrawable) {
186190
BaseDrawable named = drawable;
187-
named.setName(jsonData.name + " (" + name + ", " + frameDuration + ")");
191+
named.setName(jsonData.name + " (" + name + ", " + duration + ")");
188192
}
189193

190194
return drawable;

blade-engine/src/com/bladecoder/engine/ui/InventoryButton.java

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,68 @@
11
package com.bladecoder.engine.ui;
22

3-
43
import com.badlogic.gdx.scenes.scene2d.Actor;
54
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
6-
import com.badlogic.gdx.scenes.scene2d.ui.Button;
75
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
86
import com.bladecoder.engine.ui.InventoryUI.InventoryPos;
97
import com.bladecoder.engine.util.DPIUtils;
108

11-
public class InventoryButton extends Button {
12-
9+
public class InventoryButton extends AnimButton {
10+
1311
private final InventoryUI inventory;
1412
private final UI ui;
15-
13+
1614
private int numItems = Integer.MAX_VALUE;
1715

1816
public InventoryButton(UI ui, InventoryUI inv) {
1917
super(ui.getSkin(), "inventory");
2018
this.inventory = inv;
2119
this.ui = ui;
22-
20+
2321
addListener(new ChangeListener() {
2422
@Override
2523
public void changed(ChangeEvent event, Actor actor) {
26-
if(!inventory.isVisible())
24+
if (!inventory.isVisible())
2725
inventory.show();
2826
else
2927
inventory.hide();
3028
}
3129
});
3230
}
33-
31+
3432
@Override
3533
public void act(float delta) {
3634
super.act(delta);
37-
38-
if(numItems < ui.getWorld().getInventory().getNumItems()) {
35+
36+
if (numItems < ui.getWorld().getInventory().getNumItems()) {
3937
// addAction(Actions.repeat(30, Actions.sequence(Actions.rotateBy(40, 1f), Actions.rotateBy(-40, 1f))));
4038
addAction(Actions.repeat(4, Actions.sequence(Actions.moveBy(20, 0, .06f), Actions.moveBy(-20, 0, .06f))));
4139
// addAction(Actions.repeat(3, Actions.sequence(Actions.alpha(0, .4f), Actions.alpha(1, .4f))));
4240
}
43-
41+
4442
numItems = ui.getWorld().getInventory().getNumItems();
4543
}
46-
44+
4745
public void resize(int width, int height) {
4846
float size = DPIUtils.getPrefButtonSize();
4947
float margin = DPIUtils.getMarginSize();
50-
48+
5149
setSize(size, size);
52-
50+
5351
InventoryPos inventoryPos = inventory.getInventoryPos();
54-
52+
5553
switch (inventoryPos) {
5654
case TOP:
57-
setPosition(margin, height - margin - getHeight());
55+
setPosition(margin, height - margin - getHeight());
5856
break;
5957
case LEFT:
60-
setPosition(margin, margin);
58+
setPosition(margin, margin);
6159
break;
6260
case RIGHT:
63-
setPosition(width - margin - getWidth(), margin);
61+
setPosition(width - margin - getWidth(), margin);
6462
break;
6563
case DOWN:
6664
case CENTER:
67-
setPosition(margin, margin);
65+
setPosition(margin, margin);
6866
break;
6967
default:
7068
break;

blade-engine/src/com/bladecoder/engine/ui/MenuScreen.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -292,23 +292,23 @@ public void clicked(InputEvent event, float x, float y) {
292292
stage.addActor(menuButtonTable);
293293

294294
// BOTTOM-RIGHT BUTTON STACK
295-
credits = new Button(skin, "credits");
295+
credits = new AnimButton(skin, "credits");
296296
credits.addListener(new ClickListener() {
297297
@Override
298298
public void clicked(InputEvent event, float x, float y) {
299299
ui.setCurrentScreen(Screens.CREDIT_SCREEN);
300300
}
301301
});
302302

303-
help = new Button(skin, "help");
303+
help = new AnimButton(skin, "help");
304304
help.addListener(new ClickListener() {
305305
@Override
306306
public void clicked(InputEvent event, float x, float y) {
307307
ui.setCurrentScreen(Screens.HELP_SCREEN);
308308
}
309309
});
310310

311-
debug = new Button(skin, "debug");
311+
debug = new AnimButton(skin, "debug");
312312
debug.addListener(new ClickListener() {
313313
@Override
314314
public void clicked(InputEvent event, float x, float y) {

blade-engine/src/com/bladecoder/engine/ui/defaults/DefaultSceneScreen.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import com.badlogic.gdx.scenes.scene2d.utils.Drawable;
4747
import com.badlogic.gdx.scenes.scene2d.utils.TransformDrawable;
4848
import com.badlogic.gdx.utils.Align;
49+
import com.badlogic.gdx.utils.GdxRuntimeException;
4950
import com.badlogic.gdx.utils.viewport.Viewport;
5051
import com.bladecoder.engine.assets.EngineAssetManager;
5152
import com.bladecoder.engine.i18n.I18N;
@@ -61,6 +62,7 @@
6162
import com.bladecoder.engine.model.World;
6263
import com.bladecoder.engine.model.World.AssetState;
6364
import com.bladecoder.engine.model.WorldListener;
65+
import com.bladecoder.engine.ui.AnimButton;
6466
import com.bladecoder.engine.ui.AnimationDrawable;
6567
import com.bladecoder.engine.ui.DialogUI;
6668
import com.bladecoder.engine.ui.ITextManagerUI;
@@ -346,8 +348,7 @@ private void update(float delta) {
346348
Drawable r = null;
347349

348350
if (leaveVerb != null) {
349-
if (leaveVerb.getIcon() != null
350-
&& (r = getUI().getSkin().getDrawable(leaveVerb.getIcon())) != null) {
351+
if ((r = getDrawable(leaveVerb.getIcon())) != null) {
351352
pointer.setIcon(r);
352353

353354
} else {
@@ -356,8 +357,7 @@ private void update(float delta) {
356357
} else {
357358
Verb actionVerb = currentActor.getVerb(Verb.ACTION_VERB);
358359

359-
if (actionVerb != null && actionVerb.getIcon() != null
360-
&& (r = getUI().getSkin().getDrawable(actionVerb.getIcon())) != null) {
360+
if (actionVerb != null && (r = getDrawable(actionVerb.getIcon())) != null) {
361361
pointer.setIcon(r);
362362
} else {
363363
pointer.setHotspotIcon();
@@ -372,6 +372,17 @@ private void update(float delta) {
372372
}
373373
}
374374

375+
private Drawable getDrawable(String name) {
376+
if (name == null)
377+
return null;
378+
379+
try {
380+
return getUI().getSkin().getDrawable(name);
381+
} catch (GdxRuntimeException e) {
382+
return null;
383+
}
384+
}
385+
375386
private InteractiveActor getActorUnderCursor() {
376387
final float tolerance;
377388

@@ -872,7 +883,7 @@ public void setUI(final UI ui) {
872883

873884
pie = new PieMenu(this);
874885
textManagerUI = new TextManagerUI(ui);
875-
menuButton = new Button(ui.getSkin(), "menu");
886+
menuButton = new AnimButton(ui.getSkin(), "menu");
876887
dialogUI = new DialogUI(ui);
877888
pointer = new ScenePointer(ui.getSkin());
878889
inventoryUI = new InventoryUI(this, pointer);

0 commit comments

Comments
 (0)