diff --git a/android/assets/sounds/SFX_close.ogg b/android/assets/sounds/SFX_close.ogg deleted file mode 100755 index 4f88838..0000000 Binary files a/android/assets/sounds/SFX_close.ogg and /dev/null differ diff --git a/android/assets/sounds/SFX_open.ogg b/android/assets/sounds/SFX_open.ogg deleted file mode 100755 index c69590d..0000000 Binary files a/android/assets/sounds/SFX_open.ogg and /dev/null differ diff --git a/android/assets/sounds/pop_close.ogg b/android/assets/sounds/pop_close.ogg new file mode 100755 index 0000000..9efde8b Binary files /dev/null and b/android/assets/sounds/pop_close.ogg differ diff --git a/android/assets/sounds/pop_open.ogg b/android/assets/sounds/pop_open.ogg new file mode 100755 index 0000000..8de88c5 Binary files /dev/null and b/android/assets/sounds/pop_open.ogg differ diff --git a/core/src/zero1hd/polyjet/Polyjet.java b/core/src/zero1hd/polyjet/Polyjet.java index 5efba3e..e887b62 100755 --- a/core/src/zero1hd/polyjet/Polyjet.java +++ b/core/src/zero1hd/polyjet/Polyjet.java @@ -117,8 +117,8 @@ public class Polyjet extends Game { assetManager.load("cybercircle1.png", Texture.class); assetManager.load("defaultCover.png", Texture.class); assetManager.load("teleport-cloak.p", ParticleEffect.class); - assetManager.load("sounds/SFX_open.ogg", Sound.class); - assetManager.load("sounds/SFX_close.ogg", Sound.class); + assetManager.load("sounds/pop_open.ogg", Sound.class); + assetManager.load("sounds/pop_close.ogg", Sound.class); } public void generateFonts() { initComplete = true; diff --git a/core/src/zero1hd/polyjet/ui/builders/MusicSelectable.java b/core/src/zero1hd/polyjet/ui/builders/MusicSelectable.java index 87d37fa..27ea6df 100755 --- a/core/src/zero1hd/polyjet/ui/builders/MusicSelectable.java +++ b/core/src/zero1hd/polyjet/ui/builders/MusicSelectable.java @@ -56,6 +56,7 @@ public class MusicSelectable extends Button implements Disposable { if (musicFile.extension().toLowerCase().equals("mp3")) { MP3File mp3File; + try { mp3File = new MP3File(musicFile.file()); durationInSeconds = mp3File.getAudioHeader().getTrackLength(); @@ -70,7 +71,6 @@ public class MusicSelectable extends Button implements Disposable { // TODO Auto-generated catch block e.printStackTrace(); } - } else { wavinfo = new WavInfo(musicFile.file()); diff --git a/core/src/zero1hd/polyjet/ui/builders/ScrollText.java b/core/src/zero1hd/polyjet/ui/builders/ScrollText.java index 00f54de..012dd34 100755 --- a/core/src/zero1hd/polyjet/ui/builders/ScrollText.java +++ b/core/src/zero1hd/polyjet/ui/builders/ScrollText.java @@ -41,6 +41,7 @@ public class ScrollText extends Widget { fontHeight = gLayout.height; fontWidth = gLayout.width; + addListener(new ClickListener() { @Override public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) { @@ -57,8 +58,6 @@ public class ScrollText extends Widget { @Override public void clicked(InputEvent event, float x, float y) { } - - }); } @@ -74,12 +73,15 @@ public class ScrollText extends Widget { @Override public void layout() { setHeight(fontHeight+4); - clipBounds.set(getParent().getX()+getX()-scrollCoords.getVisualScrollX(), getParent().getY()+getY(), getWidth(), getHeight()); + clipBounds.set(getParent().getX()+getX()-scrollCoords.getVisualScrollX(), getParent().getY()+getY() - getHeight()*0.5f, getWidth(), getHeight()*1.5f); super.layout(); } @Override public void act(float delta) { + clipBounds.setX(getParent().getX()+getX()+scrollCoords.getWidget().getX()); + clipBounds.setY(getParent().getY()+getY()+scrollCoords.getWidget().getY()); + if (fontWidth > clipBounds.getWidth()) { if (scrollOnHover) { if ((int) textOffset != 0 || currentlyHovering) { @@ -102,7 +104,6 @@ public class ScrollText extends Widget { @Override public void draw(Batch batch, float parentAlpha) { validate(); - clipBounds.setX(getParent().getX()+getX()+scrollCoords.getWidget().getX()); getStage().calculateScissors(clipBounds, scissors); batch.flush(); diff --git a/core/src/zero1hd/polyjet/ui/pages/MusicSelectionPage.java b/core/src/zero1hd/polyjet/ui/pages/MusicSelectionPage.java index 46cd6bd..1981143 100755 --- a/core/src/zero1hd/polyjet/ui/pages/MusicSelectionPage.java +++ b/core/src/zero1hd/polyjet/ui/pages/MusicSelectionPage.java @@ -2,6 +2,8 @@ package zero1hd.polyjet.ui.pages; import java.io.File; import java.io.FilenameFilter; +import java.util.logging.Level; +import java.util.logging.Logger; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Preferences; @@ -17,6 +19,7 @@ import zero1hd.polyjet.Polyjet; import zero1hd.polyjet.screens.MainMenu; import zero1hd.polyjet.ui.builders.MusicSelectable; import zero1hd.polyjet.ui.windows.LoadingWindow; +import zero1hd.polyjet.ui.windows.NoticeWindow; public class MusicSelectionPage extends Page { private volatile Table musicChoices; @@ -25,6 +28,8 @@ public class MusicSelectionPage extends Page { private volatile ScrollPane musicChoiceScroller; private volatile LoadingWindow loadingWindow; + protected volatile boolean cancel; + private TextButton back; public MusicSelectionPage(final Polyjet core, final MainMenu mainMenu) { super("Select music", core.defaultSkin); @@ -33,12 +38,13 @@ public class MusicSelectionPage extends Page { musicFileAnnotation = Gdx.app.getPreferences("music_file_annotation"); - TextButton back = new TextButton("Back", core.defaultSkin); + back = new TextButton("Back", core.defaultSkin); back.setPosition(getWidth()-back.getWidth()-15f, getHeight()-back.getHeight()-15f); back.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { core.setScreen(mainMenu); + cancel = true; } }); addActor(back); @@ -54,12 +60,13 @@ public class MusicSelectionPage extends Page { musicChoices.defaults().pad(10f); musicChoiceScroller = new ScrollPane(musicChoices); musicChoiceScroller.setScrollingDisabled(false, true); - musicChoiceScroller.setSize(getWidth(), getHeight()*0.85f); + musicChoiceScroller.setSize(getWidth(), getHeight()-(getHeight()-back.getY())); musicChoiceScroller.debug(); addActor(musicChoiceScroller); loadingWindow.toFront(); + back.toFront(); } @Override @@ -70,9 +77,11 @@ public class MusicSelectionPage extends Page { public void beginMusicSearch() { new Thread(new Runnable() { - + @Override public void run() { + Logger.getLogger("org.jaudiotagger").setLevel(Level.SEVERE); + FileHandle[] musicFiles = new FileHandle(core.prefs.getString("music dir")).list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { @@ -83,18 +92,19 @@ public class MusicSelectionPage extends Page { } }); - if (musicFiles.length != 0) { - for (int music = 0; music < musicFiles.length; music++) { + if (musicFiles.length > 0) { + for (int music = 0; music < musicFiles.length && !cancel; music++) { final MusicSelectable selectable = new MusicSelectable(musicFiles[music], musicFileAnnotation, core.defaultSkin, core.assetManager.get("defaultCover.png", Texture.class)); Gdx.app.postRunnable(new Runnable() { @Override public void run() { Gdx.app.debug("Music Search Thread", "Finished loading: " + selectable.getName()); - musicChoices.add(selectable).prefSize(0.3f*getWidth(), 0.8f*getHeight()); - selectable.addInfoToPanel(musicChoiceScroller, 0.28f*getWidth()); + musicChoices.add(selectable).prefSize(panelWidthCalc(getWidth()), musicChoiceScroller.getHeight()); + selectable.addInfoToPanel(musicChoiceScroller, panelWidthCalc(getWidth()) - 20f); } }); - System.out.println(music); + + Gdx.app.debug("Music Search Thread", "Completed: " + music); int prog = (int) (100f*music/(musicFiles.length-1f)); loadingWindow.setProgress(prog); } @@ -102,10 +112,20 @@ public class MusicSelectionPage extends Page { loadingWindow.remove(); } else { + NoticeWindow notice = new NoticeWindow(core.defaultSkin, "default", "No song's found in:\n\"" + core.prefs.getString("music dir") + "\"\nTo change the search directory, go to game options."); + notice.setSize(0.6f*getWidth(), 0.6f*getHeight()); + notice.setPosition((getWidth()-notice.getWidth())/2f, (getHeight()-notice.getHeight())/2f); + notice.setModal(true); + notice.setMovable(false); + loadingWindow.remove(); + addActor(notice); + back.toFront(); } } }).start(); - - + } + + public float panelWidthCalc(float origWidth) { + return (float) (Math.sqrt(getWidth()*35f)+80f); } } diff --git a/core/src/zero1hd/polyjet/ui/windows/LoadingWindow.java b/core/src/zero1hd/polyjet/ui/windows/LoadingWindow.java index 3154eef..a7b8719 100755 --- a/core/src/zero1hd/polyjet/ui/windows/LoadingWindow.java +++ b/core/src/zero1hd/polyjet/ui/windows/LoadingWindow.java @@ -7,8 +7,9 @@ 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.Window; +import com.badlogic.gdx.utils.Disposable; -public class LoadingWindow extends Window { +public class LoadingWindow extends Window implements Disposable { private Label status; private Sound closeSound; @@ -17,8 +18,8 @@ public class LoadingWindow extends Window { public LoadingWindow(Skin skin, boolean progress, AssetManager assets, float vol) { super("loading...", skin); - this.openSound = assets.get("sounds/SFX_open.ogg", Sound.class); - this.closeSound = assets.get("sounds/SFX_close.ogg", Sound.class); + this.openSound = assets.get("sounds/pop_open.ogg", Sound.class); + this.closeSound = assets.get("sounds/pop_close.ogg", Sound.class); this.vol = vol; Image loading = new Image(skin, "loading"); loading.addAction(Actions.forever(Actions.rotateBy(-360f, 2f))); @@ -42,8 +43,8 @@ public class LoadingWindow extends Window { public LoadingWindow(Skin skin, String styleName, boolean progress, AssetManager assets, float vol) { super("loading...", skin, styleName); - this.openSound = assets.get("sounds/SFX_open.ogg", Sound.class); - this.closeSound = assets.get("sounds/SFX_close.ogg", Sound.class); + this.openSound = assets.get("sounds/pop_open.ogg", Sound.class); + this.closeSound = assets.get("sounds/pop_close.ogg", Sound.class); this.vol = vol; Image loading = new Image(skin, "loading"); loading.addAction(Actions.forever(Actions.rotateBy(-360f, 2f))); @@ -78,4 +79,10 @@ public class LoadingWindow extends Window { public void setProgress(float progress) { status.setText(String.valueOf((int) progress) + '%'); } + + @Override + public void dispose() { + openSound.dispose(); + closeSound.dispose(); + } } diff --git a/core/src/zero1hd/polyjet/ui/windows/NoticeWindow.java b/core/src/zero1hd/polyjet/ui/windows/NoticeWindow.java new file mode 100755 index 0000000..9ca349e --- /dev/null +++ b/core/src/zero1hd/polyjet/ui/windows/NoticeWindow.java @@ -0,0 +1,31 @@ +package zero1hd.polyjet.ui.windows; + +import com.badlogic.gdx.scenes.scene2d.ui.Label; +import com.badlogic.gdx.scenes.scene2d.ui.Skin; +import com.badlogic.gdx.scenes.scene2d.ui.TextButton; +import com.badlogic.gdx.scenes.scene2d.ui.Window; +import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; +import com.badlogic.gdx.utils.Align; + +public class NoticeWindow extends Window { + private Label noticeText; + private TextButton finalButton; + private Skin skin; + + public NoticeWindow(Skin skin, String styleName, String text) { + super("Notice", skin); + this.skin = skin; + debug(); + + noticeText = new Label(text, skin); + noticeText.setWrap(true); + noticeText.setAlignment(Align.center); + add(noticeText).expandX().fill().center().padLeft(20f).padRight(20f); + } + + public void setupButton(String text, ChangeListener changeListener) { + finalButton = new TextButton(text, skin, "sub-font"); + finalButton.addListener(changeListener); + add(finalButton); + } +}