Merge, refactor GUI, enable collision, try to add new button style

This commit is contained in:
TheCodeBoat 2013-06-27 13:10:13 +02:00
parent b960885942
commit 4f50eda9ea
11 changed files with 242 additions and 152 deletions

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<root>
<element name="Button">
<font>
<property name="fontSize" type="float" value="20" />
<property name="fontColor" type="ColorRGBA">
<r value="0.8" />
<g value="0.8" />
<b value="0.8" />
<a value="1.0" />
</property>
<property name="textAlign" type="String" value="Center" />
<property name="textVAlign" type="String" value="Center" />
<property name="textWrap" type="String" value="NoWrap" />
<property name="hoverColor" type="ColorRGBA">
<r value="1.0" />
<g value="1.0" />
<b value="1.0" />
<a value="1.0" />
</property>
<property name="pressedColor" type="ColorRGBA">
<r value="0.6" />
<g value="0.6" />
<b value="0.6" />
<a value="1.0" />
</property>
</font>
<attributes>
<property name="resizeBorders" type="Vector4f">
<x value="5" />
<y value="5" />
<z value="5" />
<w value="5" />
</property>
<property name="defaultSize" type="Vector2f">
<x value="100" />
<y value="30" />
</property>
<property name="pressedSound" type="String" value="button_pressed" />
<property name="usePressedSound" type="boolean" value="true" />
<property name="pressedSoundVolume" type="float" value="1" />
<property name="hoverSound" type="String" value="button_focus" />
<property name="useHoverSound" type="boolean" value="true" />
<property name="hoverSoundVolume" type="float" value=".5" />
</attributes>
<images>
<property name="defaultImg" type="String" value="Gui/button.png" />
</images>
</element>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<style control="Button" path="Button.xml" />
</root>

View File

@ -54,11 +54,11 @@ public class ShootingStars extends SimpleApplication {
private PersiJContainer container; private PersiJContainer container;
private StateManager sManager; private StateManager sManager;
private OptionSettings optionSettings; private OptionSettings optionSettings;
private Screen screen;
public ShootingStars(OptionSettings optionSettings) { public ShootingStars(OptionSettings optionSettings) {
super(new StatsAppState(), new DebugKeysAppState()); super(new StatsAppState(), new DebugKeysAppState());
this.optionSettings = optionSettings; this.optionSettings = optionSettings;
Logger.getLogger("").setLevel(Level.SEVERE); Logger.getLogger("").setLevel(Level.SEVERE);
System.setProperty("jna.library.path", "lib/vlc"); System.setProperty("jna.library.path", "lib/vlc");
} }
@ -75,6 +75,7 @@ public class ShootingStars extends SimpleApplication {
cam.setFrustumFar(2500f); cam.setFrustumFar(2500f);
sManager = container.resolve(StateManager.class); sManager = container.resolve(StateManager.class);
sManager.setState(State.START); sManager.setState(State.START);
//screen = new Screen(this, "Gui/style_map.xml");
} }
private void initGUI() { private void initGUI() {

View File

@ -21,6 +21,7 @@ import com.jme3.collision.CollisionResults;
import com.jme3.scene.Node; import com.jme3.scene.Node;
import com.jme3.scene.Spatial; import com.jme3.scene.Spatial;
import com.jme3.scene.control.Control; import com.jme3.scene.control.Control;
import org.wyrez.shootingstars.game.Player;
import org.wyrez.shootingstars.helper.UserDataKeys; import org.wyrez.shootingstars.helper.UserDataKeys;
/** /**
@ -32,9 +33,11 @@ public class WeaponProjectileCollisionControl extends BaseControl {
private Node starNode; private Node starNode;
private BoundingVolume boundingVolume; private BoundingVolume boundingVolume;
private CollisionResults results; private CollisionResults results;
private Player player;
public WeaponProjectileCollisionControl(Node starNode) { public WeaponProjectileCollisionControl(Node starNode, Player player) {
this.starNode = starNode; this.starNode = starNode;
this.player = player;
this.results = new CollisionResults(); this.results = new CollisionResults();
} }
@ -46,17 +49,19 @@ public class WeaponProjectileCollisionControl extends BaseControl {
@Override @Override
protected void controlUpdate(float tpf) { protected void controlUpdate(float tpf) {
for (Spatial s : starNode.getChildren()) { if(player.getUserData(UserDataKeys.SHOOTING)) {
results.clear(); for (Spatial s : starNode.getChildren()) {
s.collideWith(boundingVolume, results); results.clear();
if (results.size() > 0) { s.collideWith(boundingVolume, results);
s.setUserData(UserDataKeys.HITTED, true); if (results.size() > 0) {
s.setUserData(UserDataKeys.HITTED, true);
}
} }
} }
} }
public Control cloneForSpatial(Spatial spatial) { public Control cloneForSpatial(Spatial spatial) {
WeaponProjectileCollisionControl control = new WeaponProjectileCollisionControl(starNode); WeaponProjectileCollisionControl control = new WeaponProjectileCollisionControl(starNode,player);
spatial.addControl(control); spatial.addControl(control);
return control; return control;
} }

View File

@ -32,6 +32,7 @@ import org.wyrez.shootingstars.controls.PlayerCamControl;
import org.wyrez.shootingstars.controls.PlayerMouseControl; import org.wyrez.shootingstars.controls.PlayerMouseControl;
import org.wyrez.shootingstars.controls.PlayerMoveControl; import org.wyrez.shootingstars.controls.PlayerMoveControl;
import org.wyrez.shootingstars.controls.PlayerShootControl; import org.wyrez.shootingstars.controls.PlayerShootControl;
import org.wyrez.shootingstars.controls.WeaponProjectileCollisionControl;
import org.wyrez.shootingstars.controls.WeaponProjectileControl; import org.wyrez.shootingstars.controls.WeaponProjectileControl;
import org.wyrez.shootingstars.data.AudioDataManager; import org.wyrez.shootingstars.data.AudioDataManager;
import org.wyrez.shootingstars.factories.Materials; import org.wyrez.shootingstars.factories.Materials;
@ -53,13 +54,14 @@ public class Player extends Node {
public Player(Node rootNode, StateManager stateManager, AssetManager assetManager, public Player(Node rootNode, StateManager stateManager, AssetManager assetManager,
ViewPort viewPort, GameGUI gui, InputManager inputManager, Camera camera, ViewPort viewPort, GameGUI gui, InputManager inputManager, Camera camera,
AudioDataManager audioDataManager) { AudioDataManager audioDataManager, Node starNode) {
super("Player"); super("Player");
initPlayer(inputManager, camera, audioDataManager, gui); initPlayer(inputManager, camera, audioDataManager, gui);
initWeapon(assetManager); initWeapon(assetManager);
initProjectile(rootNode); initProjectile(rootNode);
initWeaponContainer(); initWeaponContainer();
initGhostProjectile(starNode);
addLight(); addLight();
} }
@ -93,7 +95,7 @@ public class Player extends Node {
geom2.setMaterial(Materials.WEAPON.create()); geom2.setMaterial(Materials.WEAPON.create());
geom2.move(0f, 0.25f, -5f); geom2.move(0f, 0.25f, -5f);
projectile.attachChild(geom2); projectile.attachChild(geom2);
projectile.addControl(new WeaponProjectileControl(rootNode, this)); projectile.addControl(new WeaponProjectileControl(rootNode, this));
} }
@ -109,6 +111,15 @@ public class Player extends Node {
this.attachChild(weaponContainer); this.attachChild(weaponContainer);
} }
private void initGhostProjectile(Node starNode) {
Geometry ghostProjectile = new Geometry("ghostProjectile", new Box(0.1f, 0.1f, 2500f));
ghostProjectile.setMaterial(Materials.UNSHADED.create());
ghostProjectile.setCullHint(CullHint.Always);
ghostProjectile.move(0f,0f,2510f);
ghostProjectile.addControl(new WeaponProjectileCollisionControl(starNode,this));
this.attachChild(ghostProjectile);
}
private void addLight() { private void addLight() {
AmbientLight ambient = new AmbientLight(); AmbientLight ambient = new AmbientLight();

View File

@ -1,103 +1,105 @@
/* /*
* Copyright (C) 2013 Darth Affe <http://wyrez.org> and contributors * Copyright (C) 2013 Darth Affe <http://wyrez.org> and contributors
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package org.wyrez.shootingstars.game; package org.wyrez.shootingstars.game;
import com.jme3.light.AmbientLight; import com.jme3.light.AmbientLight;
import com.jme3.material.Material; import com.jme3.material.Material;
import com.jme3.math.ColorRGBA; import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f; import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry; import com.jme3.scene.Geometry;
import com.jme3.scene.Node; import com.jme3.scene.Node;
import com.jme3.scene.Spatial; import com.jme3.scene.Spatial;
import java.util.Random; import java.util.Random;
import org.wyrez.shootingstars.controls.StarDeathControl; import org.wyrez.shootingstars.controls.StarDeathControl;
import org.wyrez.shootingstars.controls.StarFaceControl; import org.wyrez.shootingstars.controls.StarFaceControl;
import org.wyrez.shootingstars.controls.StarPointControl; import org.wyrez.shootingstars.controls.StarPointControl;
import org.wyrez.shootingstars.data.AudioDataManager; import org.wyrez.shootingstars.data.AudioDataManager;
import org.wyrez.shootingstars.factories.Materials; import org.wyrez.shootingstars.factories.Materials;
import org.wyrez.shootingstars.helper.MathHelper; import org.wyrez.shootingstars.helper.MathHelper;
import org.wyrez.shootingstars.helper.UserDataKeys; import org.wyrez.shootingstars.helper.UserDataKeys;
import org.wyrez.shootingstars.mesh.Star; import org.wyrez.shootingstars.mesh.Star;
import org.wyrez.shootingstars.states.GameState; import org.wyrez.shootingstars.states.GameState;
/** /**
* *
* @author Darth Affe * @author Darth Affe
*/ */
public class StarManager extends Node { public class StarManager{
private static final Random random; private static final Random random;
private static final float MAX_STAR_SIZE = 15f; private static final float MAX_STAR_SIZE = 15f;
private static final float VAR_STAR_SIZE = 10f; private static final float VAR_STAR_SIZE = 10f;
static { static {
random = new Random(); random = new Random();
} }
/**/ /**/
private AudioDataManager audioDataManager; private AudioDataManager audioDataManager;
private Spatial player; private Spatial player;
private Node starNode;
public StarManager(AudioDataManager audioDataManager, Spatial player) {
this.audioDataManager = audioDataManager; public StarManager(AudioDataManager audioDataManager, Spatial player, Node starNode) {
this.player = player; this.audioDataManager = audioDataManager;
addLight(); this.player = player;
} this.starNode = starNode;
addLight();
public void update(float tpf) { }
float[] data = audioDataManager.getSpawnData();
if (data == null) { public void update(float tpf) {
return; float[] data = audioDataManager.getSpawnData();
} if (data == null) {
for (float d : data) { return;
if (d > 0f) { }
spawn(calcPosition(), calcSize(d), d); for (float d : data) {
} if (d > 0f) {
} spawn(calcPosition(), calcSize(d), d);
} }
}
private Vector3f calcPosition() { }
float radius = (GameState.FIELD_RADIUS - MAX_STAR_SIZE) * random.nextFloat();
private Vector3f calcPosition() {
return MathHelper.calcPointOnCircle(MathHelper.degreeToRadian(random.nextFloat() * 360f), float radius = (GameState.FIELD_RADIUS - MAX_STAR_SIZE) * random.nextFloat();
radius, random.nextFloat() * GameState.FIELD_HEIGHT + GameState.FIELD_LOWER_POS);
} return MathHelper.calcPointOnCircle(MathHelper.degreeToRadian(random.nextFloat() * 360f),
radius, random.nextFloat() * GameState.FIELD_HEIGHT + GameState.FIELD_LOWER_POS);
private float calcSize(float data) { }
return MAX_STAR_SIZE - VAR_STAR_SIZE * data;
} private float calcSize(float data) {
return MAX_STAR_SIZE - VAR_STAR_SIZE * data;
private void spawn(Vector3f location, float size, float value) { }
Geometry star = new Geometry("Star", new Star(size, size * 0.2f, 0.5f));
star.setLocalTranslation(location); private void spawn(Vector3f location, float size, float value) {
Material mat = Materials.STAR.create(); Geometry star = new Geometry("Star", new Star(size, size * 0.2f, 0.5f));
mat.setColor("Color", ColorRGBA.Yellow); star.setLocalTranslation(location);
star.setMaterial(mat); Material mat = Materials.STAR.create();
star.setUserData(UserDataKeys.SIZE, size); mat.setColor("Color", ColorRGBA.Yellow);
star.setMaterial(mat);
star.addControl(new StarFaceControl(player)); star.setUserData(UserDataKeys.SIZE, size);
star.addControl(new StarDeathControl());
star.addControl(new StarPointControl(player, value)); star.addControl(new StarFaceControl(player));
star.addControl(new StarDeathControl());
this.attachChild(star); star.addControl(new StarPointControl(player, value));
}
starNode.attachChild(star);
private void addLight() { }
AmbientLight ambient = new AmbientLight();
ambient.setColor(ColorRGBA.White); private void addLight() {
this.addLight(ambient); AmbientLight ambient = new AmbientLight();
} ambient.setColor(ColorRGBA.White);
} starNode.addLight(ambient);
}
}

View File

@ -65,8 +65,8 @@ public class GameGUI extends Panel {
float startPointx = screenHelper.calcX(537f); float startPointx = screenHelper.calcX(537f);
float startPointy = screenHelper.calcY(576f); float startPointy = screenHelper.calcY(576f);
float startPointPointsx = screenHelper.calcX(1100f); float startPointPointsx = screenHelper.calcX(1000f);
float startPointPointsy = screenHelper.calcY(25f); float startPointPointsy = screenHelper.calcY(10f);
float startPointYMenu = screenHelper.calcY(200f); float startPointYMenu = screenHelper.calcY(200f);
@ -133,7 +133,7 @@ public class GameGUI extends Panel {
lblPoints = new Label(screen, new Vector2f(startPointPointsx, startPointPointsy), new Vector2f(screenHelper.calcX(275f), screenHelper.calcY(180f))); lblPoints = new Label(screen, new Vector2f(startPointPointsx, startPointPointsy), new Vector2f(screenHelper.calcX(275f), screenHelper.calcY(180f)));
lblPoints.setFontColor(new ColorRGBA(1f, 0f, 0f, 1f)); lblPoints.setFontColor(new ColorRGBA(1f, 0f, 0f, 1f));
lblPoints.setFontSize(screenHelper.calcX(50f)); lblPoints.setFontSize(screenHelper.calcX(30f));
this.addChild(btnStart); this.addChild(btnStart);
this.addChild(btnResume); this.addChild(btnResume);
@ -198,7 +198,7 @@ public class GameGUI extends Panel {
} }
public void setPoints(String points) { public void setPoints(String points) {
lblPoints.setText(points); lblPoints.setText("Points: " + points);
} }
public void setPlayer(Spatial player) { public void setPlayer(Spatial player) {

View File

@ -51,12 +51,12 @@ public class OptionsGUI extends Panel implements Gui {
private ComboBox cboFrequency; private ComboBox cboFrequency;
private CheckBox chkFullscreen; private CheckBox chkFullscreen;
private CheckBox chkVSync; private CheckBox chkVSync;
private CheckBox chkPostProcessing; private CheckBox chkShowWeapon;
private Slider sldParticleDensity; private Slider sldParticleDensity;
//Audio Controls //Audio Controls
private Slider sldMasterVolume; private Slider sldMasterVolume;
private Slider sldFXVolume; private Slider sldMenuVolume;
private Slider sldSoundVolume; private Slider sldMusicVolume;
public OptionsGUI(Screen screen, OptionsListener listener, OptionSettings settings, ScreenHelper screenHelper) { public OptionsGUI(Screen screen, OptionsListener listener, OptionSettings settings, ScreenHelper screenHelper) {
super(screen, new Vector2f(0f, 0f), new Vector2f(1280f, 720f)); //create for full hd super(screen, new Vector2f(0f, 0f), new Vector2f(1280f, 720f)); //create for full hd
@ -121,7 +121,7 @@ public class OptionsGUI extends Panel implements Gui {
float marginLeftControls = screenHelper.calcX(115.8f); float marginLeftControls = screenHelper.calcX(115.8f);
Label lblPlayerName = new Label(screen, new Vector2f(startPointx, startPointy), new Vector2f(screenHelper.calcX(120f), screenHelper.calcY(40f))); Label lblPlayerName = new Label(screen, new Vector2f(startPointx, startPointy), new Vector2f(screenHelper.calcX(120f), screenHelper.calcY(40f)));
lblPlayerName.setText("PlayerName"); lblPlayerName.setText("Player Name");
lblPlayerName.setFontSize(labelFontSize); lblPlayerName.setFontSize(labelFontSize);
txtPlayerName = new TextField(screen, new Vector2f(startPointx + marginLeftControls, startPointy + screenHelper.calcY(7f)), new Vector2f(screenHelper.calcX(200f), screenHelper.calcY(30f))); txtPlayerName = new TextField(screen, new Vector2f(startPointx + marginLeftControls, startPointy + screenHelper.calcY(7f)), new Vector2f(screenHelper.calcX(200f), screenHelper.calcY(30f)));
@ -161,10 +161,10 @@ public class OptionsGUI extends Panel implements Gui {
chkVSync = new CheckBox(screen, new Vector2f(startPointx + marginLeftControls + screenHelper.calcX(400f), startPointy + screenHelper.calcY(12f)), new Vector2f(checkBoxWitdh, checkBoxHeight)); chkVSync = new CheckBox(screen, new Vector2f(startPointx + marginLeftControls + screenHelper.calcX(400f), startPointy + screenHelper.calcY(12f)), new Vector2f(checkBoxWitdh, checkBoxHeight));
Label lblPostProcessing = new Label(screen, "lblPostProcessing", new Vector2f(startPointx + screenHelper.calcX(800f), startPointy), new Vector2f(labelWitdh, labelHeight)); Label lblPostProcessing = new Label(screen, "lblPostProcessing", new Vector2f(startPointx + screenHelper.calcX(800f), startPointy), new Vector2f(labelWitdh, labelHeight));
lblPostProcessing.setText("PostProcessing"); lblPostProcessing.setText("Show Weapon");
lblPostProcessing.setFontSize(labelFontSize); lblPostProcessing.setFontSize(labelFontSize);
chkPostProcessing = new CheckBox(screen, new Vector2f(startPointx + marginLeftControls + screenHelper.calcX(800f), startPointy + screenHelper.calcY(12f)), new Vector2f(checkBoxWitdh, checkBoxHeight)); chkShowWeapon = new CheckBox(screen, new Vector2f(startPointx + marginLeftControls + screenHelper.calcX(800f), startPointy + screenHelper.calcY(12f)), new Vector2f(checkBoxWitdh, checkBoxHeight));
Label lblResolution = new Label(screen, "lblResolution", new Vector2f(startPointx, startPointy + screenHelper.calcY(50f)), new Vector2f(labelWitdh, labelHeight)); Label lblResolution = new Label(screen, "lblResolution", new Vector2f(startPointx, startPointy + screenHelper.calcY(50f)), new Vector2f(labelWitdh, labelHeight));
lblResolution.setText("Resolution"); lblResolution.setText("Resolution");
@ -195,7 +195,7 @@ public class OptionsGUI extends Panel implements Gui {
} }
Label lblParticleDensity = new Label(screen, "lblParticleDensity", new Vector2f(startPointx + screenHelper.calcX(800f), startPointy +screenHelper.calcY(50f)), new Vector2f(labelWitdh, labelHeight)); Label lblParticleDensity = new Label(screen, "lblParticleDensity", new Vector2f(startPointx + screenHelper.calcX(800f), startPointy +screenHelper.calcY(50f)), new Vector2f(labelWitdh, labelHeight));
lblParticleDensity.setText("ParticleDensity"); lblParticleDensity.setText("Particle Density");
lblParticleDensity.setFontSize(labelFontSize); lblParticleDensity.setFontSize(labelFontSize);
sldParticleDensity = new Slider(screen, new Vector2f(startPointx + marginLeftControls + screenHelper.calcX(800f), startPointy + screenHelper.calcY(57f)), new Vector2f(sliderWitdh, sliderHeight), Slider.Orientation.HORIZONTAL, false) { sldParticleDensity = new Slider(screen, new Vector2f(startPointx + marginLeftControls + screenHelper.calcX(800f), startPointy + screenHelper.calcY(57f)), new Vector2f(sliderWitdh, sliderHeight), Slider.Orientation.HORIZONTAL, false) {
@ -215,7 +215,7 @@ public class OptionsGUI extends Panel implements Gui {
this.addChild(lblResolution); this.addChild(lblResolution);
this.addChild(cboResolution); this.addChild(cboResolution);
this.addChild(lblPostProcessing); this.addChild(lblPostProcessing);
this.addChild(chkPostProcessing); this.addChild(chkShowWeapon);
this.addChild(lblParticleDensity); this.addChild(lblParticleDensity);
this.addChild(sldParticleDensity); this.addChild(sldParticleDensity);
} }
@ -232,7 +232,7 @@ public class OptionsGUI extends Panel implements Gui {
float sliderHeight = screenHelper.calcY(30f); float sliderHeight = screenHelper.calcY(30f);
Label lblMasterVolume = new Label(screen, "lblMasterVolume", new Vector2f(startPointx, startPointy), new Vector2f(labelWitdh, labelHeight)); Label lblMasterVolume = new Label(screen, "lblMasterVolume", new Vector2f(startPointx, startPointy), new Vector2f(labelWitdh, labelHeight));
lblMasterVolume.setText("MasterVolume"); lblMasterVolume.setText("Master Volume");
lblMasterVolume.setFontSize(labelFontSize); lblMasterVolume.setFontSize(labelFontSize);
sldMasterVolume = new Slider(screen, new Vector2f(startPointx + marginLeftControls, startPointy + screenHelper.calcY(7f)), new Vector2f(sliderWitdh, sliderHeight), Slider.Orientation.HORIZONTAL, false) { sldMasterVolume = new Slider(screen, new Vector2f(startPointx + marginLeftControls, startPointy + screenHelper.calcY(7f)), new Vector2f(sliderWitdh, sliderHeight), Slider.Orientation.HORIZONTAL, false) {
@ -243,33 +243,33 @@ public class OptionsGUI extends Panel implements Gui {
sldMasterVolume.setStepIntegerRange(0, 100, 1); sldMasterVolume.setStepIntegerRange(0, 100, 1);
Label lblFXVolume = new Label(screen, "lblFXVolume", new Vector2f(startPointx + screenHelper.calcX(400f), startPointy), new Vector2f(labelWitdh, labelHeight)); Label lblFXVolume = new Label(screen, "lblFXVolume", new Vector2f(startPointx + screenHelper.calcX(400f), startPointy), new Vector2f(labelWitdh, labelHeight));
lblFXVolume.setText("FXVolume"); lblFXVolume.setText("Menu Volume");
lblFXVolume.setFontSize(labelFontSize); lblFXVolume.setFontSize(labelFontSize);
sldFXVolume = new Slider(screen, new Vector2f(startPointx + marginLeftControls + screenHelper.calcX(400f), startPointy + screenHelper.calcY(7f)), new Vector2f(sliderWitdh, sliderHeight), Slider.Orientation.HORIZONTAL, false) { sldMenuVolume = new Slider(screen, new Vector2f(startPointx + marginLeftControls + screenHelper.calcX(400f), startPointy + screenHelper.calcY(7f)), new Vector2f(sliderWitdh, sliderHeight), Slider.Orientation.HORIZONTAL, false) {
@Override @Override
public void onChange(int selectedIndex, Object value) { public void onChange(int selectedIndex, Object value) {
} }
}; };
sldFXVolume.setStepIntegerRange(0, 100, 1); sldMenuVolume.setStepIntegerRange(0, 100, 1);
Label lblSoundVolume = new Label(screen, "lblSoundVolume", new Vector2f(startPointx + screenHelper.calcX(800f), startPointy + screenHelper.calcY(0f)), new Vector2f(labelWitdh, labelHeight)); Label lblSoundVolume = new Label(screen, "lblSoundVolume", new Vector2f(startPointx + screenHelper.calcX(800f), startPointy + screenHelper.calcY(0f)), new Vector2f(labelWitdh, labelHeight));
lblSoundVolume.setText("SoundVolume"); lblSoundVolume.setText("Music Volume");
lblSoundVolume.setFontSize(labelFontSize); lblSoundVolume.setFontSize(labelFontSize);
sldSoundVolume = new Slider(screen, new Vector2f(startPointx + marginLeftControls + screenHelper.calcX(800f), startPointy + screenHelper.calcY(7f)), new Vector2f(sliderWitdh, sliderHeight), Slider.Orientation.HORIZONTAL, false) { sldMusicVolume = new Slider(screen, new Vector2f(startPointx + marginLeftControls + screenHelper.calcX(800f), startPointy + screenHelper.calcY(7f)), new Vector2f(sliderWitdh, sliderHeight), Slider.Orientation.HORIZONTAL, false) {
@Override @Override
public void onChange(int selectedIndex, Object value) { public void onChange(int selectedIndex, Object value) {
} }
}; };
sldSoundVolume.setStepIntegerRange(0, 100, 1); sldMusicVolume.setStepIntegerRange(0, 100, 1);
this.addChild(lblMasterVolume); this.addChild(lblMasterVolume);
this.addChild(sldMasterVolume); this.addChild(sldMasterVolume);
this.addChild(lblFXVolume); this.addChild(lblFXVolume);
this.addChild(sldFXVolume); this.addChild(sldMenuVolume);
this.addChild(lblSoundVolume); this.addChild(lblSoundVolume);
this.addChild(sldSoundVolume); this.addChild(sldMusicVolume);
} }
private void readControlValues() { private void readControlValues() {
@ -283,13 +283,13 @@ public class OptionsGUI extends Panel implements Gui {
setComboBoxValue(cboFrequency, String.valueOf(settings.getFrequency())); setComboBoxValue(cboFrequency, String.valueOf(settings.getFrequency()));
chkFullscreen.setIsChecked(settings.isFullscreenEnabled()); chkFullscreen.setIsChecked(settings.isFullscreenEnabled());
chkVSync.setIsChecked(settings.isVSyncEnabled()); chkVSync.setIsChecked(settings.isVSyncEnabled());
chkPostProcessing.setIsChecked(settings.isPostprocessingEnabled()); chkShowWeapon.setIsChecked(settings.isShowWeaponEnabled());
sldParticleDensity.setSelectedIndex(settings.getParticleDensity()); sldParticleDensity.setSelectedIndex(settings.getParticleDensity());
//Audio //Audio
sldMasterVolume.setSelectedIndex(settings.getMasterVolume()); sldMasterVolume.setSelectedIndex(settings.getMasterVolume());
sldFXVolume.setSelectedIndex(settings.getFXVolume()); sldMenuVolume.setSelectedIndex(settings.getMenuVolume());
sldSoundVolume.setSelectedIndex(settings.getSoundVolume()); sldMusicVolume.setSelectedIndex(settings.getMusicVolume());
} }
private void setComboBoxValue(ComboBox comboBox, String value) { private void setComboBoxValue(ComboBox comboBox, String value) {
@ -311,13 +311,13 @@ public class OptionsGUI extends Panel implements Gui {
settings.setFrequency(Integer.parseInt(cboFrequency.getSelectedListItem().getValue().toString())); settings.setFrequency(Integer.parseInt(cboFrequency.getSelectedListItem().getValue().toString()));
settings.setFullscreen(chkFullscreen.getIsChecked()); settings.setFullscreen(chkFullscreen.getIsChecked());
settings.setVSync(chkVSync.getIsChecked()); settings.setVSync(chkVSync.getIsChecked());
settings.setPostProcessing(chkPostProcessing.getIsChecked()); settings.setShowWeapon(chkShowWeapon.getIsChecked());
settings.setParticleDensity(sldParticleDensity.getSelectedIndex()); settings.setParticleDensity(sldParticleDensity.getSelectedIndex());
//Audio //Audio
settings.setMasterVolume(sldMasterVolume.getSelectedIndex()); settings.setMasterVolume(sldMasterVolume.getSelectedIndex());
settings.setFXVolume(sldFXVolume.getSelectedIndex()); settings.setMenuVolume(sldMenuVolume.getSelectedIndex());
settings.setSoundVolume(sldSoundVolume.getSelectedIndex()); settings.setMusicVolume(sldMusicVolume.getSelectedIndex());
settings.save(); settings.save();
} }

View File

@ -70,11 +70,13 @@ public class GameState extends AbstractAppState implements GameListener, ActionL
private Cinema cinema; private Cinema cinema;
private Ground ground; private Ground ground;
private Node player; private Node player;
private Node starNode;
private OptionSettings optionSettings;
private boolean isRunning = false; private boolean isRunning = false;
private boolean isFinished = false; private boolean isFinished = false;
public GameState(Node rootNode, Screen screen, StateManager stateManager, public GameState(Node rootNode, Screen screen, StateManager stateManager,
AssetManager assetManager, ViewPort viewPort, OptionSettings options, AssetManager assetManager, ViewPort viewPort, OptionSettings optionSettings,
InputManager inputManager, Camera camera, AudioDataManager audioDataManager, InputManager inputManager, Camera camera, AudioDataManager audioDataManager,
GameSettings settings, ScreenHelper screenHelper) { GameSettings settings, ScreenHelper screenHelper) {
@ -88,12 +90,13 @@ public class GameState extends AbstractAppState implements GameListener, ActionL
this.audioDataManager = audioDataManager; this.audioDataManager = audioDataManager;
this.assetManager = assetManager; this.assetManager = assetManager;
this.viewPort = viewPort; this.viewPort = viewPort;
this.optionSettings = optionSettings;
mediaPlayerFactory = new MediaPlayerFactory("--no-video-title-show", "--quiet"); mediaPlayerFactory = new MediaPlayerFactory("--no-video-title-show", "--quiet");
this.settings = settings; this.settings = settings;
Particles.setParticleDensity(options.getParticleDensity()); Particles.setParticleDensity(optionSettings.getParticleDensity());
} }
public void loadGround() { public void loadGround() {
@ -122,13 +125,14 @@ public class GameState extends AbstractAppState implements GameListener, ActionL
} }
public void loadPlayer() { public void loadPlayer() {
starNode = new Node();
player = new Player(rootNode, stateManager, assetManager, viewPort, gui, player = new Player(rootNode, stateManager, assetManager, viewPort, gui,
inputManager, camera, audioDataManager); inputManager, camera, audioDataManager, starNode);
gui.setPlayer(player); gui.setPlayer(player);
//Out of possition, but it needs an initialized player... //Out of possition, but it needs an initialized player...
this.starManager = new StarManager(audioDataManager, player); this.starManager = new StarManager(audioDataManager, player, starNode);
} }
private void setRunning(boolean running) { private void setRunning(boolean running) {
@ -139,6 +143,8 @@ public class GameState extends AbstractAppState implements GameListener, ActionL
public void start() { public void start() {
gui.setStart(); gui.setStart();
inputManager.setCursorVisible(false); inputManager.setCursorVisible(false);
mediaPlayer.setVolume(optionSettings.getMusicVolume() *
Math.round((float)optionSettings.getMasterVolume() / 100f));
mediaPlayer.play(); mediaPlayer.play();
setRunning(true); setRunning(true);
} }
@ -148,7 +154,7 @@ public class GameState extends AbstractAppState implements GameListener, ActionL
rootNode.attachChild(cinema); rootNode.attachChild(cinema);
rootNode.attachChild(ground); rootNode.attachChild(ground);
rootNode.attachChild(player); rootNode.attachChild(player);
rootNode.attachChild(starManager); rootNode.attachChild(starNode);
gui.setWait(); gui.setWait();
gui.attach(); gui.attach();
} }
@ -156,7 +162,7 @@ public class GameState extends AbstractAppState implements GameListener, ActionL
@Override @Override
public void stateDetached(AppStateManager stateManager) { public void stateDetached(AppStateManager stateManager) {
gui.detach(); gui.detach();
rootNode.detachChild(starManager); rootNode.detachChild(starNode);
rootNode.detachChild(player); rootNode.detachChild(player);
rootNode.detachChild(ground); rootNode.detachChild(ground);
rootNode.detachChild(cinema); rootNode.detachChild(cinema);

View File

@ -59,12 +59,13 @@ public class OptionSettings {
settings.setTitle("Shooting Stars"); settings.setTitle("Shooting Stars");
settings.setSettingsDialogImage(""); settings.setSettingsDialogImage("");
setMasterVolume(100); setMasterVolume(100);
setFXVolume(100); setMenuVolume(100);
setSoundVolume(100); setSoundVolume(100);
setUsername("Player"); setUsername("Player");
setPostProcessing(true); setPostProcessing(true);
setParticleDensity(3); setParticleDensity(3);
setDepthBits(24); setDepthBits(24);
setShowWeapon(true);
} }
} }
@ -88,8 +89,8 @@ public class OptionSettings {
settings.putInteger("MusicVolume", volume); settings.putInteger("MusicVolume", volume);
} }
public void setFXVolume(int volume) { public void setMenuVolume(int volume) {
settings.putInteger("FXVolume", volume); settings.putInteger("MenuVolume", volume);
} }
public void setSoundVolume(int volume) { public void setSoundVolume(int volume) {
@ -99,6 +100,10 @@ public class OptionSettings {
public void setPostProcessing(boolean enabled) { public void setPostProcessing(boolean enabled) {
settings.putBoolean("PostProcessing", enabled); settings.putBoolean("PostProcessing", enabled);
} }
public void setShowWeapon(boolean enabled) {
settings.putBoolean("ShowWeapon", enabled);
}
public void setFullscreen(boolean enabled) { public void setFullscreen(boolean enabled) {
settings.setFullscreen(enabled); settings.setFullscreen(enabled);
@ -144,8 +149,8 @@ public class OptionSettings {
return settings.getInteger("MusicVolume"); return settings.getInteger("MusicVolume");
} }
public int getFXVolume() { public int getMenuVolume() {
return settings.getInteger("FXVolume"); return settings.getInteger("MenuVolume");
} }
public int getSoundVolume() { public int getSoundVolume() {
@ -155,6 +160,10 @@ public class OptionSettings {
public boolean isPostprocessingEnabled() { public boolean isPostprocessingEnabled() {
return settings.getBoolean("PostProcessing"); return settings.getBoolean("PostProcessing");
} }
public boolean isShowWeaponEnabled() {
return settings.getBoolean("ShowWeapon");
}
public boolean isFullscreenEnabled() { public boolean isFullscreenEnabled() {
return settings.isFullscreen(); return settings.isFullscreen();