diff --git a/ShootingStars/src/org/wyrez/shootingstars/gui/GameGUI.java b/ShootingStars/src/org/wyrez/shootingstars/gui/GameGUI.java new file mode 100644 index 0000000..3bde6d7 --- /dev/null +++ b/ShootingStars/src/org/wyrez/shootingstars/gui/GameGUI.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2013 Darth Affe and contributors + * + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.wyrez.shootingstars.gui; + +import com.jme3.math.Vector2f; +import org.wyrez.shootingstars.gui.controls.PanelBase; +import org.wyrez.shootingstars.gui.listener.GameListener; +import tonegod.gui.controls.windows.Panel; +import tonegod.gui.core.Screen; + +/** + * + * @author Darth Affe + */ +public class GameGUI extends Panel { + + private GameListener listener; + + public GameGUI(Screen screen, GameListener listener) { + super(screen, new Vector2f(0f, 0f), new Vector2f(1280f, 720f)); //create for full hd + this.listener = listener; + this.setIgnoreMouse(true); + this.setIsVisible(false); + create(); + this.resize(screen.getWidth(), screen.getHeight(), Borders.SE); + } + + private void create() { + //Panel panel = new PanelBase(screen, new Vector2f(15, 15), new Vector2f(800, 500)); + //panel.setIgnoreMouse(true); + + //this.addChild(panel); + } + + public void attach() { + screen.addElement(this); + } + + public void detach() { + screen.removeElement(this); + } +} diff --git a/ShootingStars/src/org/wyrez/shootingstars/gui/Gui.java b/ShootingStars/src/org/wyrez/shootingstars/gui/Gui.java new file mode 100644 index 0000000..882ef9b --- /dev/null +++ b/ShootingStars/src/org/wyrez/shootingstars/gui/Gui.java @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2013 Darth Affe and contributors + * + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.wyrez.shootingstars.gui; + +/** + * + * @author Darth Affe + */ +public interface Gui { + + public void attach(); + + public void detach(); +} diff --git a/ShootingStars/src/org/wyrez/shootingstars/gui/LoadingGui.java b/ShootingStars/src/org/wyrez/shootingstars/gui/LoadingGui.java new file mode 100644 index 0000000..d8415bd --- /dev/null +++ b/ShootingStars/src/org/wyrez/shootingstars/gui/LoadingGui.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2013 Darth Affe and contributors + * + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.wyrez.shootingstars.gui; + +import com.jme3.font.BitmapFont; +import com.jme3.input.event.MouseButtonEvent; +import com.jme3.math.ColorRGBA; +import com.jme3.math.Vector2f; +import org.wyrez.shootingstars.gui.controls.ButtonBase; +import org.wyrez.shootingstars.gui.controls.IndicatorBase; +import org.wyrez.shootingstars.gui.controls.PanelBase; +import org.wyrez.shootingstars.gui.listener.LoadingListener; +import org.wyrez.shootingstars.states.util.LoadingProgress; +import tonegod.gui.controls.buttons.Button; +import tonegod.gui.controls.extras.Indicator; +import tonegod.gui.controls.text.Label; +import tonegod.gui.controls.windows.Panel; +import tonegod.gui.core.Screen; + +/** + * + * @author Darth Affe + */ +public class LoadingGui extends Panel { + + private LoadingListener listener; + private Label lblStatus; + private Indicator indProgress; + private Button btnStart; + + public LoadingGui(Screen screen, LoadingListener listener) { + super(screen, new Vector2f(0f, 0f), new Vector2f(1280f, 720f)); //create for full hd + this.listener = listener; + this.setIgnoreMouse(true); + this.setIsVisible(false); + create(); + this.resize(screen.getWidth(), screen.getHeight(), Borders.SE); + } + + private void create() { + Panel panel = new PanelBase(screen, new Vector2f(15, 15), new Vector2f(800, 500)); + panel.setIgnoreMouse(true); + + indProgress = new IndicatorBase(screen, new Vector2f(360f, 360f), + new Vector2f(200f, 30f), Indicator.Orientation.HORIZONTAL); + indProgress.setDisplayValues(); + indProgress.setMaxValue(LoadingProgress.getProgressCount()); + indProgress.setIndicatorColor(ColorRGBA.Black); + + lblStatus = new Label(screen, new Vector2f(360f, 400f), new Vector2f(200f, 30f)); + lblStatus.setTextAlign(BitmapFont.Align.Center); + + btnStart = new ButtonBase(screen, new Vector2f(360f, 360f), + new Vector2f(200f, 30f)) { + @Override + public void onButtonMouseLeftUp(MouseButtonEvent evt, boolean toggled) { + listener.startGame(); + } + }; + btnStart.setText("Start Game"); + btnStart.setTextAlign(BitmapFont.Align.Center); + + panel.addChild(indProgress); + panel.addChild(lblStatus); + panel.addChild(btnStart); + + this.addChild(panel); + } + + public void attach() { + screen.addElement(this); + } + + public void detach() { + screen.removeElement(this); + } + + public void updateProgress(LoadingProgress progress) { + lblStatus.setText(progress.getText()); + indProgress.setCurrentValue(progress.getValue()); + } + + public void setLoadingStart() { + btnStart.hide(); + indProgress.show(); + lblStatus.show(); + } + + public void setLoadingDone() { + btnStart.show(); + indProgress.hide(); + lblStatus.hide(); + } +} diff --git a/ShootingStars/src/org/wyrez/shootingstars/gui/MenuGUI.java b/ShootingStars/src/org/wyrez/shootingstars/gui/MenuGUI.java new file mode 100644 index 0000000..5a6a8bc --- /dev/null +++ b/ShootingStars/src/org/wyrez/shootingstars/gui/MenuGUI.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2013 Darth Affe and contributors + * + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.wyrez.shootingstars.gui; + +import com.jme3.input.event.MouseButtonEvent; +import com.jme3.math.Vector2f; +import org.wyrez.shootingstars.gui.controls.ButtonBase; +import org.wyrez.shootingstars.gui.controls.PanelBase; +import org.wyrez.shootingstars.gui.listener.MenuListener; +import tonegod.gui.controls.buttons.Button; +import tonegod.gui.controls.windows.Panel; +import tonegod.gui.core.Screen; + +/** + * + * @author Darth Affe + */ +public class MenuGUI extends Panel implements Gui { + + private MenuListener listener; + + public MenuGUI(Screen screen, MenuListener listener) { + super(screen, new Vector2f(0f, 0f), new Vector2f(1280f, 720f)); //create for full hd + this.listener = listener; + this.setIgnoreMouse(true); + this.setIsVisible(false); + create(); + this.resize(screen.getWidth(), screen.getHeight(), Borders.SE); + } + + private void create() { + Panel panel = new PanelBase(screen, new Vector2f(15, 15), new Vector2f(800, 500)); + panel.setIgnoreMouse(true); + + Button btnExit = new ButtonBase(screen, new Vector2f(600, 400), new Vector2f(120, 40)) { + @Override + public void onButtonMouseLeftUp(MouseButtonEvent evt, boolean toggled) { + listener.exitGame(); + } + }; + btnExit.setText("Exit"); + + Button btnStart = new ButtonBase(screen, new Vector2f(600, 300), new Vector2f(120, 40)) { + @Override + public void onButtonMouseLeftUp(MouseButtonEvent evt, boolean toggled) { + listener.startGame(); + } + }; + btnStart.setText("Start"); + + panel.addChild(btnStart); + panel.addChild(btnExit); + + this.addChild(panel); + } + + public void attach() { + screen.addElement(this); + } + + public void detach() { + screen.removeElement(this); + } +} diff --git a/ShootingStars/src/org/wyrez/shootingstars/gui/ButtonBase.java b/ShootingStars/src/org/wyrez/shootingstars/gui/controls/ButtonBase.java similarity index 75% rename from ShootingStars/src/org/wyrez/shootingstars/gui/ButtonBase.java rename to ShootingStars/src/org/wyrez/shootingstars/gui/controls/ButtonBase.java index cad33f1..cb794c2 100644 --- a/ShootingStars/src/org/wyrez/shootingstars/gui/ButtonBase.java +++ b/ShootingStars/src/org/wyrez/shootingstars/gui/controls/ButtonBase.java @@ -14,66 +14,54 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.wyrez.shootingstars.gui; +package org.wyrez.shootingstars.gui.controls; import com.jme3.input.event.MouseButtonEvent; import com.jme3.input.event.MouseMotionEvent; import com.jme3.math.Vector2f; import com.jme3.math.Vector4f; import tonegod.gui.controls.buttons.Button; +import tonegod.gui.controls.buttons.ButtonAdapter; import tonegod.gui.core.Screen; /** * * @author Darth Affe */ -public class ButtonBase extends Button { +public class ButtonBase extends ButtonAdapter { public ButtonBase(Screen screen, Vector2f position) { super(screen, position); + init(); } public ButtonBase(Screen screen, Vector2f position, Vector2f dimensions) { super(screen, position, dimensions); + init(); } public ButtonBase(Screen screen, Vector2f position, Vector2f dimensions, Vector4f resizeBorders, String defaultImg) { super(screen, position, dimensions, resizeBorders, defaultImg); + init(); } public ButtonBase(Screen screen, String UID, Vector2f position) { super(screen, UID, position); + init(); } public ButtonBase(Screen screen, String UID, Vector2f position, Vector2f dimensions) { super(screen, UID, position, dimensions); + init(); } public ButtonBase(Screen screen, String UID, Vector2f position, Vector2f dimensions, Vector4f resizeBorders, String defaultImg) { super(screen, UID, position, dimensions, resizeBorders, defaultImg); + init(); } - @Override - public void onButtonMouseLeftDown(MouseButtonEvent evt, boolean toggled) { - } - - @Override - public void onButtonMouseRightDown(MouseButtonEvent evt, boolean toggled) { - } - - @Override - public void onButtonMouseLeftUp(MouseButtonEvent evt, boolean toggled) { - } - - @Override - public void onButtonMouseRightUp(MouseButtonEvent evt, boolean toggled) { - } - - @Override - public void onButtonFocus(MouseMotionEvent evt) { - } - - @Override - public void onButtonLostFocus(MouseMotionEvent evt) { + private void init() { +// this.setScaleNS(true); + //this.setScaleEW(true); } } diff --git a/ShootingStars/src/org/wyrez/shootingstars/gui/IndicatorBase.java b/ShootingStars/src/org/wyrez/shootingstars/gui/controls/IndicatorBase.java similarity index 88% rename from ShootingStars/src/org/wyrez/shootingstars/gui/IndicatorBase.java rename to ShootingStars/src/org/wyrez/shootingstars/gui/controls/IndicatorBase.java index 64a8b95..8fcb69d 100644 --- a/ShootingStars/src/org/wyrez/shootingstars/gui/IndicatorBase.java +++ b/ShootingStars/src/org/wyrez/shootingstars/gui/controls/IndicatorBase.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.wyrez.shootingstars.gui; +package org.wyrez.shootingstars.gui.controls; import com.jme3.math.Vector2f; import com.jme3.math.Vector4f; @@ -29,26 +29,39 @@ public class IndicatorBase extends Indicator { public IndicatorBase(Screen screen, Vector2f position, Orientation orientation) { super(screen, position, orientation); + init(); } public IndicatorBase(Screen screen, Vector2f position, Vector2f dimensions, Orientation orientation) { super(screen, position, dimensions, orientation); + init(); } public IndicatorBase(Screen screen, Vector2f position, Vector2f dimensions, Vector4f resizeBorders, String defaultImg, Orientation orientation) { super(screen, position, dimensions, resizeBorders, defaultImg, orientation); + init(); } public IndicatorBase(Screen screen, String UID, Vector2f position, Orientation orientation) { super(screen, UID, position, orientation); + init(); } public IndicatorBase(Screen screen, String UID, Vector2f position, Vector2f dimensions, Orientation orientation) { super(screen, UID, position, dimensions, orientation); + init(); } public IndicatorBase(Screen screen, String UID, Vector2f position, Vector2f dimensions, Vector4f resizeBorders, String defaultImg, Orientation orientation) { super(screen, UID, position, dimensions, resizeBorders, defaultImg, orientation); + init(); + } + + private void init() { + this.setScaleNS(true); + this.setScaleEW(true); + this.setDockE(true); + this.setDockS(true); } @Override diff --git a/ShootingStars/src/org/wyrez/shootingstars/gui/controls/PanelBase.java b/ShootingStars/src/org/wyrez/shootingstars/gui/controls/PanelBase.java new file mode 100644 index 0000000..8457c59 --- /dev/null +++ b/ShootingStars/src/org/wyrez/shootingstars/gui/controls/PanelBase.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2013 Darth Affe and contributors + * + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.wyrez.shootingstars.gui.controls; + +import com.jme3.math.Vector2f; +import com.jme3.math.Vector4f; +import tonegod.gui.controls.windows.Panel; +import tonegod.gui.core.Screen; + +/** + * + * @author Darth Affe + */ +public class PanelBase extends Panel { + + public PanelBase(Screen screen, Vector2f position) { + super(screen, position); + init(); + } + + public PanelBase(Screen screen, Vector2f position, Vector2f dimensions) { + super(screen, position, dimensions); + init(); + } + + public PanelBase(Screen screen, Vector2f position, Vector2f dimensions, Vector4f resizeBorders, String defaultImg) { + super(screen, position, dimensions, resizeBorders, defaultImg); + init(); + } + + public PanelBase(Screen screen, String UID, Vector2f position) { + super(screen, UID, position); + init(); + } + + public PanelBase(Screen screen, String UID, Vector2f position, Vector2f dimensions) { + super(screen, UID, position, dimensions); + init(); + } + + public PanelBase(Screen screen, String UID, Vector2f position, Vector2f dimensions, Vector4f resizeBorders, String defaultImg) { + super(screen, UID, position, dimensions, resizeBorders, defaultImg); + init(); + } + + private void init() { + this.setScaleEW(true); + this.setScaleNS(true); + this.setDockE(true); + this.setDockS(true); + } +} diff --git a/ShootingStars/src/org/wyrez/shootingstars/gui/listener/GameListener.java b/ShootingStars/src/org/wyrez/shootingstars/gui/listener/GameListener.java new file mode 100644 index 0000000..0440857 --- /dev/null +++ b/ShootingStars/src/org/wyrez/shootingstars/gui/listener/GameListener.java @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2013 Darth Affe and contributors + * + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.wyrez.shootingstars.gui.listener; + +/** + * + * @author Darth Affe + */ +public interface GameListener { + +} diff --git a/ShootingStars/src/org/wyrez/shootingstars/gui/listener/LoadingListener.java b/ShootingStars/src/org/wyrez/shootingstars/gui/listener/LoadingListener.java new file mode 100644 index 0000000..1591627 --- /dev/null +++ b/ShootingStars/src/org/wyrez/shootingstars/gui/listener/LoadingListener.java @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2013 Darth Affe and contributors + * + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.wyrez.shootingstars.gui.listener; + +/** + * + * @author Darth Affe + */ +public interface LoadingListener { + + public void startGame(); +} diff --git a/ShootingStars/src/org/wyrez/shootingstars/gui/listener/MenuListener.java b/ShootingStars/src/org/wyrez/shootingstars/gui/listener/MenuListener.java new file mode 100644 index 0000000..444dbda --- /dev/null +++ b/ShootingStars/src/org/wyrez/shootingstars/gui/listener/MenuListener.java @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2013 Darth Affe and contributors + * + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.wyrez.shootingstars.gui.listener; + +/** + * + * @author Darth Affe + */ +public interface MenuListener { + + public void exitGame(); + + public void startGame(); +} diff --git a/ShootingStars/src/org/wyrez/shootingstars/states/GameState.java b/ShootingStars/src/org/wyrez/shootingstars/states/GameState.java index ce2086f..5c8a050 100644 --- a/ShootingStars/src/org/wyrez/shootingstars/states/GameState.java +++ b/ShootingStars/src/org/wyrez/shootingstars/states/GameState.java @@ -17,10 +17,39 @@ package org.wyrez.shootingstars.states; import com.jme3.app.state.AbstractAppState; +import com.jme3.app.state.AppStateManager; +import com.jme3.scene.Node; +import org.wyrez.shootingstars.gui.GameGUI; +import org.wyrez.shootingstars.gui.listener.GameListener; +import tonegod.gui.core.Screen; /** * * @author Darth Affe */ -public class GameState extends AbstractAppState { +public class GameState extends AbstractAppState implements GameListener { + + private StateManager stateManager; + private Node rootNode; + private GameGUI gui; + + public GameState(Node rootNode, Screen screen, StateManager stateManager) { + this.rootNode = rootNode; + this.gui = new GameGUI(screen, this); + this.stateManager = stateManager; + } + + @Override + public void stateAttached(AppStateManager stateManager) { + gui.attach(); + } + + @Override + public void stateDetached(AppStateManager stateManager) { + gui.detach(); + } + + @Override + public void update(float tpf) { + } } diff --git a/ShootingStars/src/org/wyrez/shootingstars/states/LoadingState.java b/ShootingStars/src/org/wyrez/shootingstars/states/LoadingState.java index 62feb97..517b7af 100644 --- a/ShootingStars/src/org/wyrez/shootingstars/states/LoadingState.java +++ b/ShootingStars/src/org/wyrez/shootingstars/states/LoadingState.java @@ -18,83 +18,42 @@ package org.wyrez.shootingstars.states; import com.jme3.app.state.AbstractAppState; import com.jme3.app.state.AppStateManager; -import com.jme3.font.BitmapFont; -import com.jme3.input.event.MouseButtonEvent; -import com.jme3.math.ColorRGBA; -import com.jme3.math.Vector2f; -import org.wyrez.shootingstars.gui.ButtonBase; -import org.wyrez.shootingstars.gui.IndicatorBase; +import org.wyrez.shootingstars.gui.LoadingGui; +import org.wyrez.shootingstars.gui.listener.LoadingListener; import org.wyrez.shootingstars.states.util.LoadingProgress; -import tonegod.gui.controls.buttons.Button; -import tonegod.gui.controls.extras.Indicator; -import tonegod.gui.controls.text.Label; -import tonegod.gui.controls.windows.Panel; import tonegod.gui.core.Screen; /** * * @author Darth Affe */ -public class LoadingState extends AbstractAppState { +public class LoadingState extends AbstractAppState implements LoadingListener { private StateManager stateManager; - private Screen screen; - private Panel loadingPanel; - private Label lblStatus; - private Indicator indProgress; - private Button btnStart; + private LoadingGui gui; private LoadingProgress currentProgress; public LoadingState(Screen screen, StateManager stateManager) { - this.screen = screen; this.stateManager = stateManager; - createGUI(); - } - - private void createGUI() { - loadingPanel = new Panel(screen, new Vector2f(15, 15), new Vector2f(800, 500)); - loadingPanel.setIgnoreMouse(true); - - indProgress = new IndicatorBase(screen, new Vector2f(360f, 360f), - new Vector2f(200f, 30f), Indicator.Orientation.HORIZONTAL); - indProgress.setDisplayValues(); - indProgress.setMaxValue(LoadingProgress.getProgressCount()); - indProgress.setIndicatorColor(ColorRGBA.Black); - - lblStatus = new Label(screen, new Vector2f(360f, 400f), new Vector2f(200f, 30f)); - lblStatus.setTextAlign(BitmapFont.Align.Center); - - btnStart = new ButtonBase(screen, new Vector2f(360f, 360f), - new Vector2f(200f, 30f)) { - @Override - public void onButtonMouseLeftUp(MouseButtonEvent evt, boolean toggled) { - startGame(); - } - }; - btnStart.setText("Start Game"); - btnStart.setTextAlign(BitmapFont.Align.Center); - - loadingPanel.addChild(indProgress); - loadingPanel.addChild(lblStatus); - loadingPanel.addChild(btnStart); + this.gui = new LoadingGui(screen, this); } @Override public void stateAttached(AppStateManager stateManager) { currentProgress = LoadingProgress.START; - screen.addElement(loadingPanel); + gui.attach(); } @Override public void stateDetached(AppStateManager stateManager) { - screen.removeElement(loadingPanel); + gui.detach(); } @Override public void update(float tpf) { switch (currentProgress) { case START: - setLoadingStart(); + gui.setLoadingStart(); currentProgress = LoadingProgress.ANALYSE_LOW_BAND; break; case ANALYSE_LOW_BAND: @@ -110,10 +69,10 @@ public class LoadingState extends AbstractAppState { currentProgress = LoadingProgress.DONE; break; case DONE: - setLoadingDone(); + gui.setLoadingDone(); break; } - updateProgress(currentProgress); + gui.updateProgress(currentProgress); } private void analyseLowBand() { @@ -140,24 +99,7 @@ public class LoadingState extends AbstractAppState { } } - private void setLoadingStart() { - btnStart.hide(); - indProgress.show(); - lblStatus.show(); - } - - private void setLoadingDone() { - btnStart.show(); - indProgress.hide(); - lblStatus.hide(); - } - - private void startGame() { + public void startGame() { stateManager.setState(State.GAME); } - - private void updateProgress(LoadingProgress progress) { - lblStatus.setText(progress.getText()); - indProgress.setCurrentValue(progress.getValue()); - } } diff --git a/ShootingStars/src/org/wyrez/shootingstars/states/MenuState.java b/ShootingStars/src/org/wyrez/shootingstars/states/MenuState.java index f47eb3d..50f5949 100644 --- a/ShootingStars/src/org/wyrez/shootingstars/states/MenuState.java +++ b/ShootingStars/src/org/wyrez/shootingstars/states/MenuState.java @@ -18,69 +18,41 @@ package org.wyrez.shootingstars.states; import com.jme3.app.state.AbstractAppState; import com.jme3.app.state.AppStateManager; -import com.jme3.input.event.MouseButtonEvent; -import com.jme3.math.Vector2f; -import org.wyrez.shootingstars.gui.ButtonBase; -import tonegod.gui.controls.buttons.Button; -import tonegod.gui.controls.windows.Panel; +import org.wyrez.shootingstars.gui.Gui; +import org.wyrez.shootingstars.gui.MenuGUI; +import org.wyrez.shootingstars.gui.listener.MenuListener; import tonegod.gui.core.Screen; /** * * @author Darth Affe */ -public class MenuState extends AbstractAppState { +public class MenuState extends AbstractAppState implements MenuListener { private StateManager stateManager; - private Screen screen; - private Panel menuPanel; + private Gui gui; public MenuState(Screen screen, StateManager stateManager) { - this.screen = screen; this.stateManager = stateManager; - createGUI(); + this.gui = new MenuGUI(screen, this); } - private void createGUI() { - menuPanel = new Panel(screen, new Vector2f(15, 15), new Vector2f(800, 500)); - menuPanel.setIgnoreMouse(true); - - Button btnExit = new ButtonBase(screen, new Vector2f(600, 400), new Vector2f(120, 40)) { - @Override - public void onButtonMouseLeftUp(MouseButtonEvent evt, boolean toggled) { - exitGame(); - } - }; - btnExit.setText("Exit"); - - Button btnStart = new ButtonBase(screen, new Vector2f(600, 300), new Vector2f(120, 40)) { - @Override - public void onButtonMouseLeftUp(MouseButtonEvent evt, boolean toggled) { - startGame(); - } - }; - btnStart.setText("Start"); - - menuPanel.addChild(btnStart); - menuPanel.addChild(btnExit); - } - - private void startGame() { + public void startGame() { stateManager.setState(State.LOADING); } - private void exitGame() { + public void exitGame() { //TODO ss.stop(); } @Override public void stateAttached(AppStateManager stateManager) { - screen.addElement(menuPanel); + gui.attach(); } @Override public void stateDetached(AppStateManager stateManager) { - screen.removeElement(menuPanel); + gui.detach(); } @Override