fixed all bugs found through tested
This commit is contained in:
parent
c90c70d0d9
commit
d6ceab8afb
Binary file not shown.
BIN
ShootingStars/assets/Sound/menu_loop1.wav
Normal file
BIN
ShootingStars/assets/Sound/menu_loop1.wav
Normal file
Binary file not shown.
@ -59,7 +59,9 @@ public class ShootingStars extends SimpleApplication {
|
|||||||
super((AppState) null);
|
super((AppState) null);
|
||||||
this.optionSettings = optionSettings;
|
this.optionSettings = optionSettings;
|
||||||
this.setPauseOnLostFocus(false);
|
this.setPauseOnLostFocus(false);
|
||||||
Logger.getLogger("").setLevel(Level.SEVERE);
|
if (!optionSettings.isLogEnabled()) {
|
||||||
|
Logger.getLogger("").setLevel(Level.SEVERE);
|
||||||
|
}
|
||||||
System.setProperty("jna.library.path", "lib/vlc");
|
System.setProperty("jna.library.path", "lib/vlc");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -56,22 +56,24 @@ public class StarPointControl extends BaseControl {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void controlUpdate(float tpf) {
|
protected void controlUpdate(float tpf) {
|
||||||
if ((Boolean) spatial.getUserData(UserDataKeys.HITTED) && !isHitted) {
|
if (spatial.getUserData(UserDataKeys.RUNNING)) {
|
||||||
player.setUserData(UserDataKeys.POINTS, (Integer) (player.getUserData(UserDataKeys.POINTS))
|
if ((Boolean) spatial.getUserData(UserDataKeys.HITTED) && !isHitted) {
|
||||||
+ (int) Math.round(points));
|
player.setUserData(UserDataKeys.POINTS, (Integer) (player.getUserData(UserDataKeys.POINTS))
|
||||||
isHitted = true;
|
+ (int) Math.round(points));
|
||||||
} else if (timer <= 0f) {
|
isHitted = true;
|
||||||
if (points > 1f) {
|
} else if (timer <= 0f) {
|
||||||
points -= 2f * tpf;
|
if (points > 1f) {
|
||||||
color = ColorHelper.calcColor(points / MAX_POINTS);
|
points -= 2f * tpf;
|
||||||
} else if (points <= 1f) {
|
color = ColorHelper.calcColor(points / MAX_POINTS);
|
||||||
points = 1f;
|
} else if (points <= 1f) {
|
||||||
color = ColorHelper.calcColor(points / MAX_POINTS);
|
points = 1f;
|
||||||
spatial.setUserData(UserDataKeys.HITTED, true);
|
color = ColorHelper.calcColor(points / MAX_POINTS);
|
||||||
|
spatial.setUserData(UserDataKeys.HITTED, true);
|
||||||
|
}
|
||||||
|
material.setColor("Color", color);
|
||||||
|
} else {
|
||||||
|
timer -= tpf;
|
||||||
}
|
}
|
||||||
material.setColor("Color", color);
|
|
||||||
} else {
|
|
||||||
timer -= tpf;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -59,10 +59,10 @@ public class HighscoreManager {
|
|||||||
scores.add(new Score(songName, optionSettings.getUsername(), score, date));
|
scores.add(new Score(songName, optionSettings.getUsername(), score, date));
|
||||||
updateScoreFile(optionSettings.getUsername(), score, songName, date);
|
updateScoreFile(optionSettings.getUsername(), score, songName, date);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Score> getScoresWithSongName(String songName) {
|
public List<Score> getScoresWithSongName(String songName) {
|
||||||
List<Score> tempScores = new ArrayList<Score>();
|
List<Score> tempScores = new ArrayList<Score>();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ResultSet rs = connector.excecuteQuery(connection, "SELECT * FROM Scores WHERE LOWER(SongName) LIKE LOWER('%" + songName + "%');");
|
ResultSet rs = connector.excecuteQuery(connection, "SELECT * FROM Scores WHERE LOWER(SongName) LIKE LOWER('%" + songName + "%');");
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
@ -70,7 +70,6 @@ public class HighscoreManager {
|
|||||||
}
|
}
|
||||||
rs.close();
|
rs.close();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ex.printStackTrace();
|
|
||||||
}
|
}
|
||||||
sort(tempScores);
|
sort(tempScores);
|
||||||
return tempScores;
|
return tempScores;
|
||||||
@ -84,15 +83,13 @@ public class HighscoreManager {
|
|||||||
}
|
}
|
||||||
rs.close();
|
rs.close();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ex.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateScoreFile(String name, int score, String songName, Date date) {
|
private void updateScoreFile(String name, int score, String songName, Date date) {
|
||||||
try {
|
try {
|
||||||
connector.excecuteUpdate(connection, "INSERT INTO Scores(Name,Points,SongName,Date) values('" + name + "'," + score + ", '" + songName + "', '" + DateFormat.getDateTimeInstance().format(date) +"' )");
|
connector.excecuteUpdate(connection, "INSERT INTO Scores(Name,Points,SongName,Date) values('" + name + "'," + score + ", '" + songName + "', '" + DateFormat.getDateTimeInstance().format(date) + "' )");
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ex.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -23,15 +23,23 @@ package org.wyrez.shootingstars.gui.model;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
public class Score implements Serializable {
|
public class Score implements Serializable {
|
||||||
|
|
||||||
private int score;
|
private int score;
|
||||||
private String playerName;
|
private String playerName;
|
||||||
private String songName;
|
private String songName;
|
||||||
private Date date;
|
private Date date;
|
||||||
|
|
||||||
|
public Score(String songName, String playerName, int score, Date date) {
|
||||||
|
this.songName = songName;
|
||||||
|
this.score = score;
|
||||||
|
this.playerName = playerName;
|
||||||
|
this.date = date;
|
||||||
|
}
|
||||||
|
|
||||||
public void setSongName(String songName) {
|
public void setSongName(String songName) {
|
||||||
this.songName = songName;
|
this.songName = songName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPlayerName(String playerName) {
|
public void setPlayerName(String playerName) {
|
||||||
this.playerName = playerName;
|
this.playerName = playerName;
|
||||||
@ -49,10 +57,10 @@ public class Score implements Serializable {
|
|||||||
return playerName;
|
return playerName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSongName(){
|
public String getSongName() {
|
||||||
return songName;
|
return songName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getScore() {
|
public int getScore() {
|
||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
@ -60,11 +68,4 @@ public class Score implements Serializable {
|
|||||||
public Date getDate() {
|
public Date getDate() {
|
||||||
return date;
|
return date;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Score(String songName, String playerName, int score, Date date) {
|
|
||||||
this.songName = songName;
|
|
||||||
this.score = score;
|
|
||||||
this.playerName = playerName;
|
|
||||||
this.date = date;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -30,9 +30,9 @@ public class BackgroundMusic extends AudioNode {
|
|||||||
private boolean isRunning = false;
|
private boolean isRunning = false;
|
||||||
|
|
||||||
public BackgroundMusic(AssetManager assetManager, OptionSettings settings) {
|
public BackgroundMusic(AssetManager assetManager, OptionSettings settings) {
|
||||||
super(assetManager, "Sound/menu_loop1.ogg", true);
|
super(assetManager, "Sound/menu_loop1.wav", false);
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
//this.setLooping(true); //TODO loop
|
this.setLooping(true);
|
||||||
this.setPositional(false);
|
this.setPositional(false);
|
||||||
|
|
||||||
update();
|
update();
|
||||||
|
|||||||
@ -30,25 +30,23 @@ import tonegod.gui.core.Screen;
|
|||||||
*
|
*
|
||||||
* @author Snowsun
|
* @author Snowsun
|
||||||
*/
|
*/
|
||||||
public class HighscoreState extends AbstractAppState implements HighscoreListener{
|
public class HighscoreState extends AbstractAppState implements HighscoreListener {
|
||||||
|
|
||||||
private StateManager stateManager;
|
private StateManager stateManager;
|
||||||
private HighscoreManager highscoreManager;
|
|
||||||
private Gui gui;
|
private Gui gui;
|
||||||
private BackgroundMusic music;
|
private BackgroundMusic music;
|
||||||
|
|
||||||
public HighscoreState(Screen screen, StateManager stateManager, HighscoreManager highscoreManager,
|
public HighscoreState(Screen screen, StateManager stateManager, HighscoreManager highscoreManager,
|
||||||
ScreenHelper screenHelper, BackgroundMusic music) {
|
ScreenHelper screenHelper, BackgroundMusic music) {
|
||||||
this.stateManager = stateManager;
|
this.stateManager = stateManager;
|
||||||
this.highscoreManager = highscoreManager;
|
this.gui = new HighscoreGUI(screen, this, highscoreManager, screenHelper);
|
||||||
this.gui = new HighscoreGUI(screen, this, highscoreManager,screenHelper);
|
|
||||||
this.music = music;
|
this.music = music;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void back() {
|
public void back() {
|
||||||
stateManager.setState(State.MENU);
|
stateManager.setState(State.MENU);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void stateAttached(AppStateManager stateManager) {
|
public void stateAttached(AppStateManager stateManager) {
|
||||||
gui.refresh();
|
gui.refresh();
|
||||||
|
|||||||
@ -21,10 +21,12 @@ import com.jme3.app.state.AppStateManager;
|
|||||||
import com.sun.jna.Memory;
|
import com.sun.jna.Memory;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import javax.swing.JFileChooser;
|
import javax.swing.JFileChooser;
|
||||||
|
import org.wyrez.shootingstars.ShootingStars;
|
||||||
import org.wyrez.shootingstars.game.GameSettings;
|
import org.wyrez.shootingstars.game.GameSettings;
|
||||||
import org.wyrez.shootingstars.gui.SelectTrackGUI;
|
import org.wyrez.shootingstars.gui.SelectTrackGUI;
|
||||||
import org.wyrez.shootingstars.gui.listener.SelectFileListener;
|
import org.wyrez.shootingstars.gui.listener.SelectFileListener;
|
||||||
import org.wyrez.shootingstars.helper.ScreenHelper;
|
import org.wyrez.shootingstars.helper.ScreenHelper;
|
||||||
|
import org.wyrez.shootingstars.states.util.OptionSettings;
|
||||||
import tonegod.gui.core.Screen;
|
import tonegod.gui.core.Screen;
|
||||||
import uk.co.caprica.vlcj.player.MediaPlayerFactory;
|
import uk.co.caprica.vlcj.player.MediaPlayerFactory;
|
||||||
import uk.co.caprica.vlcj.player.direct.BufferFormat;
|
import uk.co.caprica.vlcj.player.direct.BufferFormat;
|
||||||
@ -36,42 +38,89 @@ import uk.co.caprica.vlcj.player.direct.RenderCallback;
|
|||||||
* @author Snowsun
|
* @author Snowsun
|
||||||
*/
|
*/
|
||||||
public class SelectTrackState extends AbstractAppState implements SelectFileListener {
|
public class SelectTrackState extends AbstractAppState implements SelectFileListener {
|
||||||
|
|
||||||
private static final int SLEEP = 1000;
|
private static final int SLEEP = 1000;
|
||||||
/**/
|
/**/
|
||||||
|
private ShootingStars shootingStars;
|
||||||
|
private OptionSettings optionSettings;
|
||||||
private StateManager stateManager;
|
private StateManager stateManager;
|
||||||
private GameSettings settings;
|
private GameSettings settings;
|
||||||
private SelectTrackGUI gui;
|
private SelectTrackGUI gui;
|
||||||
|
//HACK filechooser is not visible in fullscreen
|
||||||
public SelectTrackState(Screen screen, StateManager stateManager, GameSettings settings, ScreenHelper screenHelper) {
|
private int selectState = -1;
|
||||||
|
private boolean wasFullscreen;
|
||||||
|
|
||||||
|
public SelectTrackState(Screen screen, StateManager stateManager,
|
||||||
|
GameSettings settings, ScreenHelper screenHelper,
|
||||||
|
OptionSettings optionSettings, ShootingStars shootingStars) {
|
||||||
|
this.shootingStars = shootingStars;
|
||||||
|
this.optionSettings = optionSettings;
|
||||||
this.stateManager = stateManager;
|
this.stateManager = stateManager;
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
this.gui = new SelectTrackGUI(screen, this, screenHelper);
|
this.gui = new SelectTrackGUI(screen, this, screenHelper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void stateAttached(AppStateManager stateManager) {
|
public void stateAttached(AppStateManager stateManager) {
|
||||||
gui.attach();
|
gui.attach();
|
||||||
|
selectState = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void stateDetached(AppStateManager stateManager) {
|
public void stateDetached(AppStateManager stateManager) {
|
||||||
gui.detach();
|
gui.detach();
|
||||||
|
selectState = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void selectFile() {
|
@Override
|
||||||
JFileChooser jFileChooser = new JFileChooser();
|
public void update(float tpf) {
|
||||||
int returnVal = jFileChooser.showOpenDialog(null);
|
//TODO this is a hell of a workaround...
|
||||||
|
switch (selectState) {
|
||||||
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
case 0:
|
||||||
File file = jFileChooser.getSelectedFile();
|
if (wasFullscreen) {
|
||||||
settings.setVideoFile(file.getPath());
|
optionSettings.setFullscreen(false);
|
||||||
readMetadata(settings.getVideoFile());
|
shootingStars.setSettings(optionSettings.getAppSettings());
|
||||||
|
shootingStars.restart();
|
||||||
stateManager.setState(State.FILEMETAINFO);
|
}
|
||||||
|
selectState++;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
JFileChooser jFileChooser = new JFileChooser();
|
||||||
|
int returnVal = jFileChooser.showOpenDialog(null);
|
||||||
|
|
||||||
|
settings.setAudioFile(null);
|
||||||
|
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
||||||
|
File file = jFileChooser.getSelectedFile();
|
||||||
|
settings.setVideoFile(file.getPath());
|
||||||
|
readMetadata(settings.getVideoFile());
|
||||||
|
} else {
|
||||||
|
settings.setVideoFile(null);
|
||||||
|
}
|
||||||
|
selectState++;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (wasFullscreen) {
|
||||||
|
optionSettings.setFullscreen(true);
|
||||||
|
shootingStars.setSettings(optionSettings.getAppSettings());
|
||||||
|
shootingStars.restart();
|
||||||
|
}
|
||||||
|
selectState++;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (settings.getVideoFile() != null) {
|
||||||
|
stateManager.setState(State.FILEMETAINFO);
|
||||||
|
} else {
|
||||||
|
selectState = -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void selectFile() {
|
||||||
|
wasFullscreen = optionSettings.isFullscreenEnabled();
|
||||||
|
selectState = 0;
|
||||||
|
}
|
||||||
|
|
||||||
private void readMetadata(String file) {
|
private void readMetadata(String file) {
|
||||||
MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory("--no-video-title-show", "--quiet");
|
MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory("--no-video-title-show", "--quiet");
|
||||||
DirectMediaPlayer mediaPlayer = mediaPlayerFactory.newDirectMediaPlayer(1, 1, new RenderCallback() {
|
DirectMediaPlayer mediaPlayer = mediaPlayerFactory.newDirectMediaPlayer(1, 1, new RenderCallback() {
|
||||||
@ -89,16 +138,16 @@ public class SelectTrackState extends AbstractAppState implements SelectFileList
|
|||||||
settings.setTrackTitle(mediaPlayer.getMediaMeta().getTitle());
|
settings.setTrackTitle(mediaPlayer.getMediaMeta().getTitle());
|
||||||
settings.setTrackArtist(mediaPlayer.getMediaMeta().getArtist());
|
settings.setTrackArtist(mediaPlayer.getMediaMeta().getArtist());
|
||||||
settings.setTrackLength(Math.round((float) mediaPlayer.getLength() / 1000f));
|
settings.setTrackLength(Math.round((float) mediaPlayer.getLength() / 1000f));
|
||||||
|
|
||||||
mediaPlayer.stop();
|
mediaPlayer.stop();
|
||||||
mediaPlayer.release();
|
mediaPlayer.release();
|
||||||
mediaPlayerFactory.release();
|
mediaPlayerFactory.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void downloadYT() {
|
public void downloadYT() {
|
||||||
stateManager.setState(State.YTDOWNLOAD);
|
stateManager.setState(State.YTDOWNLOAD);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cancel() {
|
public void cancel() {
|
||||||
stateManager.setState(State.MENU);
|
stateManager.setState(State.MENU);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -58,13 +58,16 @@ public class OptionSettings {
|
|||||||
settings.setResolution(1280, 720);
|
settings.setResolution(1280, 720);
|
||||||
settings.setTitle("Shooting Stars");
|
settings.setTitle("Shooting Stars");
|
||||||
settings.setSettingsDialogImage("");
|
settings.setSettingsDialogImage("");
|
||||||
|
settings.putBoolean("EnableLogging", false);
|
||||||
setMasterVolume(100);
|
setMasterVolume(100);
|
||||||
setMenuVolume(50);
|
setMenuVolume(25);
|
||||||
setMusicVolume(100);
|
setMusicVolume(100);
|
||||||
setUsername("Nagareboshi");
|
setUsername("Nagareboshi");
|
||||||
setParticleDensity(3);
|
setParticleDensity(3);
|
||||||
setDepthBits(24);
|
setDepthBits(24);
|
||||||
setShowWeapon(true);
|
setShowWeapon(true);
|
||||||
|
setVSync(true);
|
||||||
|
setEnableAudioVisualization(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,4 +212,8 @@ public class OptionSettings {
|
|||||||
public AppSettings getAppSettings() {
|
public AppSettings getAppSettings() {
|
||||||
return settings;
|
return settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isLogEnabled() {
|
||||||
|
return settings.getBoolean("EnableLogging");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user