From 55bb8fc65a4eb620ffc4f46df9db97b77458f5df Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Sun, 8 Oct 2023 13:49:41 -0400 Subject: [PATCH] [libgdx] SkeletonViewer reload button retries last file if it failed. Smaller minimized size. --- .../spine/SkeletonViewer.java | 3 ++- .../spine/SkeletonViewerUI.java | 21 ++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java index 2ed912edb..6c023d4be 100644 --- a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java +++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java @@ -79,7 +79,7 @@ public class SkeletonViewer extends ApplicationAdapter { SkeletonData skeletonData; Skeleton skeleton; AnimationState state; - FileHandle skeletonFile; + FileHandle skeletonFile, lastFile; long skeletonModified, atlasModified; float lastModifiedCheck, reloadTimer; final StringBuilder status = new StringBuilder(); @@ -131,6 +131,7 @@ public class SkeletonViewer extends ApplicationAdapter { FileHandle oldSkeletonFile = this.skeletonFile; this.skeletonFile = skeletonFile; + lastFile = skeletonFile; reloadTimer = 0; try { diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewerUI.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewerUI.java index 39df3f546..322be67fb 100644 --- a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewerUI.java +++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewerUI.java @@ -86,11 +86,12 @@ class SkeletonViewerUI { Window window = new Window("Skeleton", skin); Table root = new Table(skin); TextButton openButton = new TextButton("Open", skin); + TextButton reloadButton = new TextButton("Reload", skin); TextButton minimizeButton = new TextButton("-", skin); Slider loadScaleSlider = new Slider(0.1f, 3, 0.01f, false, 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); Label zoomLabel = new Label("100%", skin); @@ -207,7 +208,8 @@ class SkeletonViewerUI { window.setY(-2); 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); 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() { public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) { event.cancel(); @@ -399,6 +408,7 @@ class SkeletonViewerUI { window.setHeight(Gdx.graphics.getHeight() / SkeletonViewer.uiScale + 8); minimizeButton.setText("-"); } + window.setWidth(window.getPrefWidth()); } }); @@ -406,17 +416,12 @@ class SkeletonViewerUI { public void changed (ChangeEvent event, Actor actor) { loadScaleLabel.setText(Integer.toString((int)(loadScaleSlider.getValue() * 100)) + "%"); if (!loadScaleSlider.isDragging() && viewer.loadSkeleton(viewer.skeletonFile)) toast("Reloaded."); - loadScaleResetButton.setText(loadScaleSlider.getValue() == 1 ? "Reload" : "Reset"); } }); loadScaleResetButton.addListener(new ChangeListener() { public void changed (ChangeEvent event, Actor actor) { viewer.resetCameraPosition(); - if (loadScaleSlider.getValue() == 1) { - if (viewer.loadSkeleton(viewer.skeletonFile)) toast("Reloaded."); - } else - loadScaleSlider.setValue(1); - loadScaleResetButton.setText("Reload"); + loadScaleSlider.setValue(1); } });