[libgdx] SkeletonViewer reload button retries last file if it failed. Smaller minimized size.

This commit is contained in:
Nathan Sweet 2023-10-08 13:49:41 -04:00
parent 351d42f511
commit 55bb8fc65a
2 changed files with 15 additions and 9 deletions

View File

@ -79,7 +79,7 @@ public class SkeletonViewer extends ApplicationAdapter {
SkeletonData skeletonData; SkeletonData skeletonData;
Skeleton skeleton; Skeleton skeleton;
AnimationState state; AnimationState state;
FileHandle skeletonFile; FileHandle skeletonFile, lastFile;
long skeletonModified, atlasModified; long skeletonModified, atlasModified;
float lastModifiedCheck, reloadTimer; float lastModifiedCheck, reloadTimer;
final StringBuilder status = new StringBuilder(); final StringBuilder status = new StringBuilder();
@ -131,6 +131,7 @@ public class SkeletonViewer extends ApplicationAdapter {
FileHandle oldSkeletonFile = this.skeletonFile; FileHandle oldSkeletonFile = this.skeletonFile;
this.skeletonFile = skeletonFile; this.skeletonFile = skeletonFile;
lastFile = skeletonFile;
reloadTimer = 0; reloadTimer = 0;
try { try {

View File

@ -86,11 +86,12 @@ class SkeletonViewerUI {
Window window = new Window("Skeleton", skin); Window window = new Window("Skeleton", skin);
Table root = new Table(skin); Table root = new Table(skin);
TextButton openButton = new TextButton("Open", skin); TextButton openButton = new TextButton("Open", skin);
TextButton reloadButton = new TextButton("Reload", skin);
TextButton minimizeButton = new TextButton("-", skin); TextButton minimizeButton = new TextButton("-", skin);
Slider loadScaleSlider = new Slider(0.1f, 3, 0.01f, false, skin); Slider loadScaleSlider = new Slider(0.1f, 3, 0.01f, false, skin);
Label loadScaleLabel = new Label("100%", skin); Label loadScaleLabel = new Label("100%", skin);
TextButton loadScaleResetButton = new TextButton("Reload", skin); TextButton loadScaleResetButton = new TextButton("Reset", skin);
Slider zoomSlider = new Slider(0.01f, 10, 0.01f, false, skin); Slider zoomSlider = new Slider(0.01f, 10, 0.01f, false, skin);
Label zoomLabel = new Label("100%", skin); Label zoomLabel = new Label("100%", skin);
@ -207,7 +208,8 @@ class SkeletonViewerUI {
window.setY(-2); window.setY(-2);
window.getTitleLabel().setColor(new Color(0xc1ffffff)); window.getTitleLabel().setColor(new Color(0xc1ffffff));
window.getTitleTable().add(openButton).space(3); window.getTitleTable().add(openButton).spaceLeft(10);
window.getTitleTable().add(reloadButton).space(3);
window.getTitleTable().add(minimizeButton).width(20); window.getTitleTable().add(minimizeButton).width(20);
skinScroll.setFadeScrollBars(false); skinScroll.setFadeScrollBars(false);
@ -383,6 +385,13 @@ class SkeletonViewerUI {
} }
}); });
reloadButton.addListener(new ChangeListener() {
public void changed (ChangeEvent event, Actor actor) {
viewer.resetCameraPosition();
if (viewer.loadSkeleton(viewer.lastFile)) toast("Reloaded.");
}
});
minimizeButton.addListener(new ClickListener() { minimizeButton.addListener(new ClickListener() {
public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) { public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
event.cancel(); event.cancel();
@ -399,6 +408,7 @@ class SkeletonViewerUI {
window.setHeight(Gdx.graphics.getHeight() / SkeletonViewer.uiScale + 8); window.setHeight(Gdx.graphics.getHeight() / SkeletonViewer.uiScale + 8);
minimizeButton.setText("-"); minimizeButton.setText("-");
} }
window.setWidth(window.getPrefWidth());
} }
}); });
@ -406,17 +416,12 @@ class SkeletonViewerUI {
public void changed (ChangeEvent event, Actor actor) { public void changed (ChangeEvent event, Actor actor) {
loadScaleLabel.setText(Integer.toString((int)(loadScaleSlider.getValue() * 100)) + "%"); loadScaleLabel.setText(Integer.toString((int)(loadScaleSlider.getValue() * 100)) + "%");
if (!loadScaleSlider.isDragging() && viewer.loadSkeleton(viewer.skeletonFile)) toast("Reloaded."); if (!loadScaleSlider.isDragging() && viewer.loadSkeleton(viewer.skeletonFile)) toast("Reloaded.");
loadScaleResetButton.setText(loadScaleSlider.getValue() == 1 ? "Reload" : "Reset");
} }
}); });
loadScaleResetButton.addListener(new ChangeListener() { loadScaleResetButton.addListener(new ChangeListener() {
public void changed (ChangeEvent event, Actor actor) { public void changed (ChangeEvent event, Actor actor) {
viewer.resetCameraPosition(); viewer.resetCameraPosition();
if (loadScaleSlider.getValue() == 1) { loadScaleSlider.setValue(1);
if (viewer.loadSkeleton(viewer.skeletonFile)) toast("Reloaded.");
} else
loadScaleSlider.setValue(1);
loadScaleResetButton.setText("Reload");
} }
}); });