began up down arrow keys implementation on the music selection screen

This commit is contained in:
Harrison Deng 2017-10-31 23:01:14 -05:00
parent 5f2dd6ef75
commit e65769f392
6 changed files with 64 additions and 4 deletions

View File

@ -58,7 +58,6 @@ public class RhythmBullet extends Game {
@Override @Override
public void create() { public void create() {
Logger.getLogger("org.jaudiotagger").setLevel(Level.OFF);
Gdx.app.setLogLevel(Application.LOG_DEBUG); Gdx.app.setLogLevel(Application.LOG_DEBUG);
prefs = Gdx.app.getPreferences("PolyJet_Preferences"); prefs = Gdx.app.getPreferences("PolyJet_Preferences");
@ -96,6 +95,8 @@ public class RhythmBullet extends Game {
+ "Pixel density (PPI): " + Gdx.graphics.getDensity()); + "Pixel density (PPI): " + Gdx.graphics.getDensity());
setScreen(new LoadingScreen(this)); setScreen(new LoadingScreen(this));
Logger.getLogger("org.jaudiotagger").setLevel(Level.OFF);
} }
@Override @Override

View File

@ -5,6 +5,8 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException; import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException;
import org.jaudiotagger.audio.exceptions.ReadOnlyFileException; import org.jaudiotagger.audio.exceptions.ReadOnlyFileException;

View File

@ -19,6 +19,7 @@ import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.utils.Disposable; import com.badlogic.gdx.utils.Disposable;
public class SongInfo implements Disposable { public class SongInfo implements Disposable {
private long durationInSeconds; private long durationInSeconds;
private String songName; private String songName;
private Texture albumCover; private Texture albumCover;

View File

@ -5,7 +5,6 @@ import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Touchable;
import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.badlogic.gdx.scenes.scene2d.ui.Skin;
@ -100,6 +99,7 @@ public class MusicSelectable extends WidgetGroup implements Disposable {
@Override @Override
public void layout() { public void layout() {
table.pack();
displayName.setTargetWidth((int) (getWidth() - 300)); displayName.setTargetWidth((int) (getWidth() - 300));
authorLabel.setTargetWidth((int) (getWidth() - 300)); authorLabel.setTargetWidth((int) (getWidth() - 300));
super.layout(); super.layout();
@ -141,4 +141,9 @@ public class MusicSelectable extends WidgetGroup implements Disposable {
public boolean isSelected() { public boolean isSelected() {
return selected; return selected;
} }
@Override
public float getPrefHeight() {
return table.getMinHeight();
}
} }

View File

@ -57,6 +57,7 @@ public class MainPage extends Page implements Observer {
@Override @Override
public void changed(ChangeEvent event, Actor actor) { public void changed(ChangeEvent event, Actor actor) {
targetPosition.x = Gdx.graphics.getWidth()*1.5f; targetPosition.x = Gdx.graphics.getWidth()*1.5f;
Gdx.input.setInputProcessor(getStage());
} }
}); });
table.add(playButton).width(Gdx.graphics.getWidth()*0.2f); table.add(playButton).width(Gdx.graphics.getWidth()*0.2f);

View File

@ -5,6 +5,7 @@ import java.util.concurrent.Executors;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Preferences; import com.badlogic.gdx.Preferences;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Pixmap;
@ -14,18 +15,20 @@ import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.InputListener;
import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import zero1hd.rhythmbullet.audio.SongInfo; import zero1hd.rhythmbullet.audio.SongInfo;
import zero1hd.rhythmbullet.audio.SongList; import zero1hd.rhythmbullet.audio.SongList;
import zero1hd.rhythmbullet.graphics.ui.components.MusicSelectable; import zero1hd.rhythmbullet.graphics.ui.components.MusicSelectable;
import zero1hd.rhythmbullet.graphics.ui.components.ScrollText;
public class MusicSelectionPage extends Page { public class MusicSelectionPage extends Page {
Preferences musicFileAnnotation; Preferences musicFileAnnotation;
@ -36,6 +39,15 @@ public class MusicSelectionPage extends Page {
private ScrollPane scrollbar; private ScrollPane scrollbar;
private TextButton back; private TextButton back;
private ScrollText songTitle;
private Label author;
private Label songLength;
private Label previousTop;
private Table songInfoTable;
private Image albumCover;
private MusicSelectable currentlySelected;
private FileHandle selectedMusic; private FileHandle selectedMusic;
private SongInfo selectedMusicInfo; private SongInfo selectedMusicInfo;
@ -47,6 +59,13 @@ public class MusicSelectionPage extends Page {
private Texture white; private Texture white;
public MusicSelectionPage(Skin skin, SongList songList, AssetManager assetManager, Vector3 cameraTarget) { public MusicSelectionPage(Skin skin, SongList songList, AssetManager assetManager, Vector3 cameraTarget) {
super("Select music", skin); super("Select music", skin);
songInfoTable = new Table();
songTitle = new ScrollText("", null, skin, false, false);
author = new Label("", skin, "sub-font", skin.getColor("default"));
songLength = new Label(null, skin, "sub-font", skin.getColor("default"));
previousTop = new Label(null, skin, "sub-font", skin.getColor("default"));
albumCover = new Image(assetManager.get("defaultCover.png", Texture.class));
setTextureBackground(assetManager.get("gradients.atlas", TextureAtlas.class).findRegion("red-round")); setTextureBackground(assetManager.get("gradients.atlas", TextureAtlas.class).findRegion("red-round"));
this.skin = skin; this.skin = skin;
this.songList = songList; this.songList = songList;
@ -89,6 +108,32 @@ public class MusicSelectionPage extends Page {
horSplitBar.setWidth(vertSplitBar.getX()); horSplitBar.setWidth(vertSplitBar.getX());
horSplitBar.setPosition(0, getHeightBelowTitle()); horSplitBar.setPosition(0, getHeightBelowTitle());
addActor(horSplitBar); addActor(horSplitBar);
addListener(new InputListener() {
@Override
public boolean keyDown(InputEvent event, int keycode) {
Gdx.app.debug("MusicSelectionPage", "Scrolling");
int index;
if (keycode == Keys.DOWN) {
if ((index = (songTable.getChildren().indexOf(currentlySelected, true) - 1)) < 0) {
index = songTable.getChildren().size;
}
deselectAll();
//ez broken casting.
((MusicSelectable)songTable.getChildren().get(index)).select();
scrollbar.scrollTo(currentlySelected.getX(), currentlySelected.getY(), currentlySelected.getWidth(), currentlySelected.getHeight());
}
if (keycode == Keys.UP) {
if ((index = (songTable.getChildren().indexOf(currentlySelected, true) + 1)) < songTable.getChildren().size -1) {
index = 0;
}
deselectAll();
((MusicSelectable)songTable.getChildren().get(index)).select();
scrollbar.scrollTo(currentlySelected.getX(), currentlySelected.getY(), currentlySelected.getWidth(), currentlySelected.getHeight());
}
return super.keyDown(event, keycode);
}
});
} }
@Override @Override
@ -118,7 +163,7 @@ public class MusicSelectionPage extends Page {
MusicSelectable selectable = new MusicSelectable(songList.getSongFileHandleFromIndex(i), musicFileAnnotation, skin, assets.get("defaultCover.png", Texture.class), this); MusicSelectable selectable = new MusicSelectable(songList.getSongFileHandleFromIndex(i), musicFileAnnotation, skin, assets.get("defaultCover.png", Texture.class), this);
selectables.add(selectable); selectables.add(selectable);
songTable.add(selectable).expandX().fillX().height((getHeight() >= 2160 ? 300f : 200f)); songTable.add(selectable).expandX().fillX();
songTable.row(); songTable.row();
} }
@ -147,4 +192,9 @@ public class MusicSelectionPage extends Page {
selectables.get(i).deselect(); selectables.get(i).deselect();
} }
} }
public void setCurrentlySelected(MusicSelectable currentlySelected) {
this.currentlySelected = currentlySelected;
}
} }