From 54e9a90ac4fbdcee7450aea864b2edd02963258f Mon Sep 17 00:00:00 2001 From: Recrown Date: Wed, 18 Oct 2017 22:51:02 -0500 Subject: [PATCH] improvements on music selection screen --- android/assets/uiskin.png | Bin 11578 -> 11583 bytes .../ui/components/MusicSelectable.java | 8 +++- .../graphics/ui/pages/MainPage.java | 5 ++- .../graphics/ui/pages/MusicSelectionPage.java | 38 +++++++++++++++++- .../rhythmbullet/screens/MainMenu.java | 18 +++++---- 5 files changed, 56 insertions(+), 13 deletions(-) diff --git a/android/assets/uiskin.png b/android/assets/uiskin.png index b43bce23a30e49a688db2b686201c13372dae022..33b56892dded929ebaec953cdb2b92054e07c519 100755 GIT binary patch delta 9836 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 DUd5h+ diff --git a/core/src/zero1hd/rhythmbullet/graphics/ui/components/MusicSelectable.java b/core/src/zero1hd/rhythmbullet/graphics/ui/components/MusicSelectable.java index 15b5e9c..0644a26 100755 --- a/core/src/zero1hd/rhythmbullet/graphics/ui/components/MusicSelectable.java +++ b/core/src/zero1hd/rhythmbullet/graphics/ui/components/MusicSelectable.java @@ -3,11 +3,13 @@ package zero1hd.rhythmbullet.graphics.ui.components; import com.badlogic.gdx.Preferences; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup; +import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.utils.Disposable; import zero1hd.rhythmbullet.audio.SongInfo; @@ -32,13 +34,14 @@ public class MusicSelectable extends WidgetGroup implements Disposable { table.setBackground("holo-pane"); setName(musicFile.name()); + table.defaults().pad(10f); this.albumCover = defaultAlbumC; this.musicFile = musicFile; songInfo = new SongInfo(musicFile, musicAnnotation); imageIcon = new Image(albumCover); - table.add(imageIcon).size(128f); + table.add(imageIcon).size(115).padTop(15).center(); displayName = new ScrollText(musicFile.nameWithoutExtension().replace('_', ' '), null, skin, true, false); table.add(displayName).expandX().fillX(); @@ -51,7 +54,6 @@ public class MusicSelectable extends WidgetGroup implements Disposable { authorLabel = new Label("Loading...", skin, "sub-font", skin.getColor("default")); table.add(authorLabel); - table.defaults().pad(10f); addActor(table); } @@ -68,7 +70,9 @@ public class MusicSelectable extends WidgetGroup implements Disposable { : (songInfo.getDurationInSeconds() - (songInfo.getDurationInSeconds() / 60) * 60))); authorLabel.setText("Author: " + songInfo.getAuthor()); + songInfo.setupTexture(albumCover); albumCover = songInfo.getAlbumCover(); + imageIcon.setDrawable((new TextureRegionDrawable(new TextureRegion(albumCover)))); } @Override diff --git a/core/src/zero1hd/rhythmbullet/graphics/ui/pages/MainPage.java b/core/src/zero1hd/rhythmbullet/graphics/ui/pages/MainPage.java index 21e6860..1f9a24e 100755 --- a/core/src/zero1hd/rhythmbullet/graphics/ui/pages/MainPage.java +++ b/core/src/zero1hd/rhythmbullet/graphics/ui/pages/MainPage.java @@ -84,16 +84,17 @@ public class MainPage extends Page implements Observer { table.add(quitButton).fillX(); musicControls = new MusicControls(core.getDefaultSkin(), sc); - musicControls.setPosition((getWidth()-musicControls.getMinWidth() - 20f), getHeight()-musicControls.getMinHeight()*0.8f); + musicControls.setPosition((getWidth()-musicControls.getMinWidth() - 20f), getHeight()-musicControls.getMinHeight()*1.5f -15f); musicControls.invalidate(); addActor(musicControls); scrollText = new ScrollText("...", "...", core.getDefaultSkin(), false, true); scrollText.setWidth((0.4f * getWidth())); - scrollText.setPosition(((getWidth() - scrollText.getWidth())/2f), getHeight() - scrollText.getHeight()*1.5f); + scrollText.setPosition(((getWidth() - scrollText.getWidth())/2f), 0.8f*Gdx.graphics.getHeight()); if (scrollText.getX() + scrollText.getWidth() > musicControls.getX()) { Gdx.app.debug("MainPage", "using minimal layout for scrolling text."); musicControls.setX(getWidth() - musicControls.getMinWidth() - 10f); + musicControls.setY(Gdx.graphics.getHeight() - 45f); scrollText.setPosition(15, getHeight() - scrollText.getHeight() - 15f); musicControls.invalidate(); } diff --git a/core/src/zero1hd/rhythmbullet/graphics/ui/pages/MusicSelectionPage.java b/core/src/zero1hd/rhythmbullet/graphics/ui/pages/MusicSelectionPage.java index e742fa9..6286a12 100755 --- a/core/src/zero1hd/rhythmbullet/graphics/ui/pages/MusicSelectionPage.java +++ b/core/src/zero1hd/rhythmbullet/graphics/ui/pages/MusicSelectionPage.java @@ -9,9 +9,13 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Preferences; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.graphics.Pixmap; +import com.badlogic.gdx.graphics.Pixmap.Format; import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.scenes.scene2d.Actor; +import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.badlogic.gdx.scenes.scene2d.ui.Table; @@ -37,8 +41,13 @@ public class MusicSelectionPage extends Page { private Skin skin; private AssetManager assets; + + private Image vertSplitBar; + private Image horSplitBar; + private Texture white; public MusicSelectionPage(Skin skin, SongList songList, AssetManager assetManager, Vector3 cameraTarget) { super("Select music", skin); + setTextureBackground(assetManager.get("gradients.atlas", TextureAtlas.class).findRegion("red-round")); this.skin = skin; this.songList = songList; musicFileAnnotation = Gdx.app.getPreferences("music_file_annotation"); @@ -46,10 +55,13 @@ public class MusicSelectionPage extends Page { songTable = new Table(); songTable.defaults().spaceBottom(10f); scrollbar = new ScrollPane(songTable, skin); - scrollbar.setSize(0.4f*getWidth(), getHeightBelowTitle()); + scrollbar.setSize(0.45f*getWidth(), getHeightBelowTitle()); + scrollbar.setFadeScrollBars(false); + addActor(scrollbar); selectables = new Array<>(); back = new TextButton("Back", skin); + back.setWidth(back.getWidth()+20f); back.setPosition(getWidth()-back.getWidth()-15f, getHeightBelowTitle()); back.addListener(new ChangeListener() { @Override @@ -61,6 +73,22 @@ public class MusicSelectionPage extends Page { back.toFront(); refresh(); + + Pixmap pixmap = new Pixmap(2, 2, Format.RGBA8888); + pixmap.setColor(skin.getColor("default")); + pixmap.fill(); + white = new Texture(pixmap); + pixmap.dispose(); + + vertSplitBar = new Image(white); + vertSplitBar.setHeight(getHeight()); + vertSplitBar.setPosition(scrollbar.getWidth() + scrollbar.getX(), 0); + addActor(vertSplitBar); + + horSplitBar = new Image(white); + horSplitBar.setWidth(vertSplitBar.getX()); + horSplitBar.setPosition(0, getHeightBelowTitle()); + addActor(horSplitBar); } @Override @@ -77,7 +105,7 @@ public class MusicSelectionPage extends Page { return selectedMusicInfo; } - public void refresh() { + public void refresh() { Logger.getLogger("org.jaudiotagger").setLevel(Level.OFF); songTable.clear(); selectables.clear(); @@ -108,4 +136,10 @@ public class MusicSelectionPage extends Page { Gdx.app.debug("MusicSelectionPage", "Refresh complete. " + selectables.size + " songs loaded."); }); } + + @Override + public void dispose() { + white.dispose(); + super.dispose(); + } } diff --git a/core/src/zero1hd/rhythmbullet/screens/MainMenu.java b/core/src/zero1hd/rhythmbullet/screens/MainMenu.java index e9da482..322f15f 100755 --- a/core/src/zero1hd/rhythmbullet/screens/MainMenu.java +++ b/core/src/zero1hd/rhythmbullet/screens/MainMenu.java @@ -336,13 +336,17 @@ public class MainMenu extends ScreenAdapter implements TransitionAdapter, Observ } public void unloadShaders() { - brightFilterShader.dispose(); - combineShader.dispose(); - gaussianBlurShader.dispose(); - normalBuffer.dispose(); - lightFilterBuffer.dispose(); - vBlur.dispose(); - hBlur.dispose(); + try { + brightFilterShader.dispose(); + combineShader.dispose(); + gaussianBlurShader.dispose(); + normalBuffer.dispose(); + lightFilterBuffer.dispose(); + vBlur.dispose(); + hBlur.dispose(); + } catch (NullPointerException e) { + saveAll(); + } brightFilterShader = null; combineShader = null;