fixed all bugs found through tested

This commit is contained in:
Raybz@Raybz 2013-07-05 08:11:20 +02:00
parent c90c70d0d9
commit d6ceab8afb
10 changed files with 119 additions and 63 deletions

Binary file not shown.

View File

@ -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");
} }

View File

@ -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;
} }
} }

View File

@ -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();
} }
} }
} }

View File

@ -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;
}
} }

View File

@ -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();

View File

@ -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();

View File

@ -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);
} }

View File

@ -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");
}
} }