Work on Dialogs

This commit is contained in:
Felix
2024-11-18 15:58:30 +01:00
parent b15dd96a86
commit 7c09107d28
27 changed files with 366 additions and 413 deletions

View File

@@ -6,6 +6,7 @@
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.renderer.queue.RenderQueue;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import com.jme3.scene.control.AbstractControl;
import com.jme3.shadow.DirectionalLightShadowRenderer;
@@ -29,6 +30,8 @@ public class BoardHandler {
private Map<Color, List<AssetOnMap>> playerMap;
private Node node = new Node();
public BoardHandler(MdgaApp app) {
assert (app != null) : "app is null";
@@ -41,6 +44,12 @@ public BoardHandler(MdgaApp app) {
public void init() {
initMap();
initCamera();
app.getRootNode().attachChild(node);
}
public void shutdown() {
app.getRootNode().detachChild(node);
}
private void addFigureToPlayerMap(Color col, AssetOnMap assetOnMap) {
@@ -110,7 +119,7 @@ private Spatial createModel(BoardAsset asset, Vector3f pos, float rot) {
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Light/Lighting.j3md");
mat.setTexture("DiffuseMap", app.getAssetManager().loadTexture(texName));
model.setMaterial(mat);
app.getRootNode().attachChild(model);
node.attachChild(model);
return model;
}

View File

@@ -1,101 +1,21 @@
package pp.mdga.client.Dialog;
import com.jme3.app.SimpleApplication;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.simsilica.lemur.Button;
import com.simsilica.lemur.Container;
import com.simsilica.lemur.GuiGlobals;
import com.simsilica.lemur.component.QuadBackgroundComponent;
import pp.mdga.client.MdgaApp;
import java.util.HashMap;
import java.util.Map;
/**
* Base class for dialogs in the game.
*/
public abstract class Dialog {
protected MdgaApp app;
protected MdgaApp app; // Reference to the MdgaApp
protected Container dialogContainer; // Lemur container for the dialog UI
private boolean isVisible; // Visibility flag for the dialog
protected Map<String, Button> buttons; // Map to store buttons by their IDs
/**
* Constructor for the dialog.
* @param app The MdgaApp instance to attach this dialog to.
*/
public Dialog(MdgaApp app) {
this.app = app;
this.buttons = new HashMap<>();
// Initialize Lemur GUI system if not already done
GuiGlobals.initialize(app);
// Create the dialog container
dialogContainer = new Container();
dialogContainer.setLocalTranslation(100, 500, 0); // Default position, can be adjusted
buildDialogContents(dialogContainer);
}
/**
* Abstract method for building the dialog contents.
* Subclasses must override this to define their specific UI.
*
* @param container The container to add UI elements to.
*/
protected abstract void buildDialogContents(Container container);
/**
* Adds a button to the dialog.
*
* @param id Unique ID for the button.
* @param name Display name of the button.
* @param container The container to which the button is added.
* @return The created Button.
*/
protected Button addButton(String id, String name, Container container) {
Button button = new Button(name);
buttons.put(id, button);
container.addChild(button);
return button;
}
/**
* Gets a button by its ID.
*
* @param id The ID of the button.
* @return The Button, or null if not found.
*/
public Button getButton(String id) {
return buttons.get(id);
}
/**
* Shows the dialog by attaching it to the GUI node of the MdgaApp.
*/
public void show() {
if (!isVisible) {
app.getGuiNode().attachChild(dialogContainer);
isVisible = true;
}
}
/**
* Hides the dialog by detaching it from the GUI node of the MdgaApp.
*/
public void hide() {
if (isVisible) {
dialogContainer.removeFromParent();
isVisible = false;
}
}
/**
* Cleans up resources used by the dialog.
* Call this when the dialog is no longer needed.
*/
public void cleanup() {
hide();
buttons.clear();
dialogContainer = null;
}
public abstract void show();
public abstract void hide();
public abstract void addButton(MdgaButton button);
}

View File

@@ -1,26 +0,0 @@
package pp.mdga.client.Dialog;
import pp.dialog.DialogManager;
import pp.mdga.client.MdgaApp;
public class DialogView {
private MdgaApp app;
private DialogManager dialogManager = new DialogManager(app);
private StartDialog dialog;
public DialogView(MdgaApp app) {
this.app = app;
}
DialogManager getDialogManager() {
return dialogManager;
}
public void mainMenu() {
//dialogManager = new DialogManager(app);
//di
//MainMenuDialog mainMenuDialog = new MainMenuDialog(app);
}
}

View File

@@ -0,0 +1,39 @@
package pp.mdga.client.Dialog;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.scene.Node;
import com.simsilica.lemur.Button;
import com.simsilica.lemur.component.QuadBackgroundComponent;
import pp.mdga.client.MdgaApp;
public class HorizontalButtonDialog extends Dialog {
private Node row = new Node();
public HorizontalButtonDialog(MdgaApp app) {
super(app);
//QuadBackgroundComponent quad = new QuadBackgroundComponent(ColorRGBA.Gray);
//quad.setMargin(10, 10);
//container.setBackground(quad);
}
@Override
public void show() {
app.getGuiNode().attachChild(row);
row.setLocalTranslation(app.getCamera().getWidth() / 2, app.getCamera().getHeight() / 2, 0);
}
@Override
public void hide() {
app.getGuiNode().detachChild(row);
}
@Override
public void addButton(MdgaButton button) {
row.attachChild(button.getButton());
}
}

View File

@@ -1,4 +0,0 @@
package pp.mdga.client.Dialog;
public class InterruptDialog {
}

View File

@@ -0,0 +1,49 @@
package pp.mdga.client.Dialog;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.simsilica.lemur.Button;
import com.simsilica.lemur.component.QuadBackgroundComponent;
public class MdgaButton {
protected final ColorRGBA COLOR_DEFAULT = ColorRGBA.Gray;
protected final ColorRGBA COLOR_HOVER = ColorRGBA.DarkGray;
private Button button;
public MdgaButton(String label, Runnable action, Vector3f size) {
button = new Button(label);
button.addClickCommands(source -> action.run());
button.setSize(size);
QuadBackgroundComponent background = new QuadBackgroundComponent(COLOR_DEFAULT);
background.setMargin(5, 5);
button.setBackground(background);
button.addCommands(com.simsilica.lemur.Button.ButtonAction.HighlightOn, (source) -> {
QuadBackgroundComponent hoverBackground = new QuadBackgroundComponent(COLOR_HOVER);
hoverBackground.setMargin(5, 5);
source.setBackground(hoverBackground);
});
button.addCommands(com.simsilica.lemur.Button.ButtonAction.HighlightOff, (source) -> {
QuadBackgroundComponent normalBackground = new QuadBackgroundComponent(COLOR_DEFAULT);
normalBackground.setMargin(5, 5);
source.setBackground(normalBackground);
});
}
public void setLocalTranslation(Vector3f pos) {
button.setLocalTranslation(pos);
}
public void setSize(Vector3f size) {
button.setSize(size);
}
public Button getButton() {
return button;
}
}

View File

@@ -1,5 +0,0 @@
package pp.mdga.client.Dialog;
public class MenuDialog {
}

View File

@@ -1,5 +0,0 @@
package pp.mdga.client.Dialog;
public class NetworkDialog {
}

View File

@@ -1,31 +0,0 @@
package pp.mdga.client.Dialog;
import com.jme3.scene.Node;
import com.simsilica.lemur.Container;
import com.simsilica.lemur.Label;
import com.simsilica.lemur.input.Button;
import pp.mdga.client.MdgaApp;
public class SoundDialog extends Dialog {
public SoundDialog(MdgaApp app) {
super(app);
}
@Override
protected void buildDialogContents(Container container) {
// Add a title
container.addChild(new Label("Settings"));
// Add buttons with ID and name
addButton("volume_up", "Increase Volume", container)
.addClickCommands(source -> System.out.println("Volume increased"));
addButton("volume_down", "Decrease Volume", container)
.addClickCommands(source -> System.out.println("Volume decreased"));
// Add a close button
addButton("close", "Close", container)
.addClickCommands(source -> hide()); // Close the dialog
}
}

View File

@@ -1,13 +0,0 @@
package pp.mdga.client.Dialog;
import com.simsilica.lemur.Checkbox;
import com.simsilica.lemur.Container;
import com.simsilica.lemur.Label;
import com.simsilica.lemur.component.SpringGridLayout;
import pp.dialog.DialogBuilder;
import pp.dialog.SimpleDialog;
import pp.mdga.client.MdgaApp;
public class StartDialog {
}

View File

@@ -0,0 +1,45 @@
package pp.mdga.client.Dialog;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.simsilica.lemur.Button;
import com.simsilica.lemur.Container;
import com.simsilica.lemur.component.QuadBackgroundComponent;
import pp.mdga.client.MdgaApp;
public class VerticalButtonDialog extends Dialog {
private Container container;
public VerticalButtonDialog(MdgaApp app) {
super(app);
container = new Container();
QuadBackgroundComponent quad = new QuadBackgroundComponent(ColorRGBA.Gray);
quad.setMargin(10, 10);
container.setBackground(quad);
}
@Override
public void show() {
app.getGuiNode().attachChild(container);
container.setLocalTranslation(
app.getCamera().getWidth() / 2 - container.getPreferredSize().x / 2,
app.getCamera().getHeight() / 2 + container.getPreferredSize().y / 2,
0
);
}
@Override
public void hide() {
app.getGuiNode().detachChild(container);
}
@Override
public void addButton(MdgaButton button) {
container.addChild(button.getButton());
}
}

View File

@@ -1,5 +0,0 @@
package pp.mdga.client.Dialog;
public class VideoDialog {
}

View File

@@ -1,24 +0,0 @@
package pp.mdga.client;
import pp.mdga.client.Board.BoardHandler;
public class GameView extends MdgaView {
private BoardHandler boardHandler;
public GameView(MdgaApp app) {
super(app);
boardHandler = new BoardHandler(app);
}
@Override
public void enter() {
boardHandler.init();
}
@Override
public void leave() {
rootNode.detachAllChildren();
app.getGuiNode().detachChild(rootNode);
}
}

View File

@@ -1,76 +0,0 @@
package pp.mdga.client;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Quad;
/**
* Lobby view, allowing players to choose a color.
*/
public class LobbyView extends MdgaView {
public LobbyView(MdgaApp app) {
super(app);
}
@Override
public void enter() {
// Add a background
Geometry background = createBackground("lobby.png");
rootNode.attachChild(background);
// Add color selection boxes
float boxSize = 200;
float spacing = 60;
float totalWidth = 4 * boxSize + 3 * spacing;
float startX = (app.getCamera().getWidth() - totalWidth) / 2;
for (int i = 0; i < 4; i++) {
//Geometry colorBox = createColorBox(startX + i * (boxSize + spacing), app.getCamera().getHeight() / 2 - boxSize / 2, boxSize);
//rootNode.attachChild(colorBox);
}
app.getGuiNode().attachChild(rootNode);
}
@Override
public void leave() {
rootNode.detachAllChildren();
app.getGuiNode().detachChild(rootNode);
}
/**
* Creates a background geometry with the given texture.
*
* @param texturePath The path to the background texture.
* @return The Geometry for the background.
*/
private Geometry createBackground(String texturePath) {
Quad quad = new Quad(app.getCamera().getWidth(), app.getCamera().getHeight());
Geometry geom = new Geometry("Background", quad);
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
mat.setTexture("ColorMap", app.getAssetManager().loadTexture(texturePath));
geom.setMaterial(mat);
geom.setLocalTranslation(0, 0, -1); // Slightly behind other UI elements
return geom;
}
/**
* Creates a color selection box.
*
* @param x The x-coordinate of the box.
* @param y The y-coordinate of the box.
* @param size The size of the box.
* @return The Geometry for the box.
*/
private Geometry createColorBox(float x, float y, float size) {
Quad quad = new Quad(size, size);
Geometry geom = new Geometry("ColorBox", quad);
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
mat.setColor("Color", ColorRGBA.Gray); // Example texture/color
geom.setMaterial(mat);
geom.setLocalTranslation(x, y, 0);
return geom;
}
}

View File

@@ -1,68 +0,0 @@
package pp.mdga.client;
import com.jme3.material.Material;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Quad;
import com.simsilica.lemur.Button;
import com.simsilica.lemur.Container;
import com.simsilica.lemur.Label;
/**
* Main menu view, providing options to host a game, join a game, or exit.
*/
public class MainMenuView extends MdgaView {
private Container menuContainer; // Lemur container for menu options
public MainMenuView(MdgaApp app) {
super(app);
}
@Override
public void enter() {
// Add a background
Geometry background = createBackground("powercards.png");
rootNode.attachChild(background);
// Create a menu container
menuContainer = new Container();
menuContainer.setLocalTranslation(300, app.getCamera().getHeight() - 200, 0);
// Add menu options
menuContainer.addChild(new Label("Main Menu"));
Button hostGameButton = menuContainer.addChild(new Button("Host Game"));
hostGameButton.addClickCommands(source -> System.out.println("Hosting game..."));
Button joinGameButton = menuContainer.addChild(new Button("Join Game"));
joinGameButton.addClickCommands(source -> app.enter(MdgaState.LOBBY));
Button exitButton = menuContainer.addChild(new Button("Exit"));
exitButton.addClickCommands(source -> app.stop());
rootNode.attachChild(menuContainer);
app.getGuiNode().attachChild(rootNode);
}
@Override
public void leave() {
rootNode.detachAllChildren();
app.getGuiNode().detachChild(rootNode);
}
/**
* Creates a background geometry with the given texture.
*
* @param texturePath The path to the background texture.
* @return The Geometry for the background.
*/
private Geometry createBackground(String texturePath) {
Quad quad = new Quad(app.getCamera().getWidth(), app.getCamera().getHeight());
Geometry geom = new Geometry("Background", quad);
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
mat.setTexture("ColorMap", app.getAssetManager().loadTexture(texturePath));
geom.setMaterial(mat);
geom.setLocalTranslation(0, 0, -1); // Slightly behind other UI elements
return geom;
}
}

View File

@@ -4,11 +4,9 @@
import com.jme3.system.NanoTimer;
import com.simsilica.lemur.GuiGlobals;
import pp.mdga.client.Acoustic.AcousticHandler;
import pp.mdga.client.Acoustic.MdgaSound;
import pp.mdga.client.Animation.AnimationHandler;
import com.jme3.system.AppSettings;
import pp.mdga.client.Board.BoardHandler;
import pp.mdga.client.Dialog.DialogView;
import pp.mdga.client.View.*;
public class MdgaApp extends SimpleApplication {
private AnimationHandler animationHandler;
@@ -53,10 +51,10 @@ public void simpleUpdate(float tpf) {
switch (state) {
case LOBBY:
enter(MdgaState.GAME);
//enter(MdgaState.GAME);
break;
case GAME:
enter(MdgaState.CEREMONY);
//enter(MdgaState.CEREMONY);
break;
}
}
@@ -70,7 +68,7 @@ public void enter(MdgaState state) {
switch (state) {
case MAIN:
view = new MainMenuView(this);
view = new MainView(this);
break;
case LOBBY:
view = new LobbyView(this);

View File

@@ -1,30 +0,0 @@
package pp.mdga.client;
import com.jme3.scene.Node;
public abstract class MdgaView {
protected MdgaApp app; // Reference to the game application
protected Node rootNode; // Node for the state-specific UI elements
/**
* Constructor for MdgaView.
*
* @param app The MdgaApp instance.
*/
public MdgaView(MdgaApp app) {
this.app = app;
this.rootNode = new Node("StateViewRoot");
}
/**
* Called when entering this state.
* Subclasses should override this method to define specific behavior.
*/
public abstract void enter();
/**
* Called when leaving this state.
* Subclasses should override this method to define specific behavior.
*/
public abstract void leave();
}

View File

@@ -1,4 +1,4 @@
package pp.mdga.client;
package pp.mdga.client.View;
import com.jme3.material.Material;
import com.jme3.scene.Geometry;
@@ -7,6 +7,8 @@
import com.simsilica.lemur.Container;
import com.simsilica.lemur.Label;
import com.simsilica.lemur.Button;
import pp.mdga.client.MdgaApp;
import pp.mdga.client.MdgaState;
/**
* The CeremonyView manages two sub-states: the Award Ceremony and the Statistics screen.
@@ -27,7 +29,7 @@ public CeremonyView(MdgaApp app) {
}
@Override
public void enter() {
public void onEnter() {
// Initialize sub-states
setupAwardCeremony();
setupStatistics();
@@ -37,10 +39,7 @@ public void enter() {
}
@Override
public void leave() {
rootNode.detachAllChildren();
app.getGuiNode().detachChild(rootNode);
}
public void onLeave() {}
/**
* Sets up the Award Ceremony sub-state.
@@ -98,34 +97,18 @@ private void setupStatistics() {
* @param subState The target sub-state.
*/
private void switchToSubState(SubState subState) {
rootNode.detachAllChildren();
//rootNode.detachAllChildren();
currentSubState = subState;
switch (subState) {
case AWARD_CEREMONY:
rootNode.attachChild(awardCeremonyNode);
node.attachChild(awardCeremonyNode);
break;
case STATISTICS:
rootNode.attachChild(statisticsNode);
node.attachChild(statisticsNode);
break;
}
app.getGuiNode().attachChild(rootNode);
}
/**
* Creates a background geometry with the given texture.
*
* @param texturePath The path to the background texture.
* @return The Geometry for the background.
*/
private Geometry createBackground(String texturePath) {
Quad quad = new Quad(app.getCamera().getWidth(), app.getCamera().getHeight());
Geometry geom = new Geometry("Background", quad);
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
mat.setTexture("ColorMap", app.getAssetManager().loadTexture(texturePath));
geom.setMaterial(mat);
geom.setLocalTranslation(0, 0, -1); // Slightly behind other UI elements
return geom;
//app.getGuiNode().attachChild(rootNode);
}
}

View File

@@ -0,0 +1,35 @@
package pp.mdga.client.View;
import com.jme3.math.Vector3f;
import com.simsilica.lemur.Button;
import pp.mdga.client.Board.BoardHandler;
import pp.mdga.client.Dialog.MdgaButton;
import pp.mdga.client.MdgaApp;
import pp.mdga.client.MdgaState;
public class GameView extends MdgaView {
private BoardHandler boardHandler;
private MdgaButton button;
public GameView(MdgaApp app) {
super(app);
this.boardHandler = new BoardHandler(app);
this.button = new MdgaButton("Weiter", () -> app.enter(MdgaState.CEREMONY), new Vector3f(150, 200, 0));
}
@Override
public void enter() {
boardHandler.init();
button.setLocalTranslation(new Vector3f(app.getCamera().getWidth() - 200, 100, 0));
app.getGuiNode().attachChild(button.getButton());
}
@Override
public void leave() {
app.getGuiNode().detachChild(button.getButton());
boardHandler.shutdown();
}
}

View File

@@ -0,0 +1,64 @@
package pp.mdga.client.View;
import com.jme3.input.InputManager;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.simsilica.lemur.Button;
import com.simsilica.lemur.Container;
import com.simsilica.lemur.GuiGlobals;
import com.simsilica.lemur.style.ElementId;
import com.simsilica.lemur.component.QuadBackgroundComponent;
import com.simsilica.lemur.style.Styles;
import pp.mdga.client.Dialog.HorizontalButtonDialog;
import pp.mdga.client.Dialog.MdgaButton;
import pp.mdga.client.Dialog.VerticalButtonDialog;
import pp.mdga.client.MdgaApp;
import pp.mdga.client.MdgaState;
import pp.mdga.game.Color;
public class LobbyView extends MdgaView {
private Geometry background;
HorizontalButtonDialog dialog;
public LobbyView(MdgaApp app) {
super(app);
background = createBackground("lobby.png");
node.attachChild(background);
dialog = new HorizontalButtonDialog(app);
float buttonWidth = 150;
float spacing = 60;
float startX = -((3 * buttonWidth + 2 * spacing) / 2);
float currentX = startX;
for (int i = 1; i <= 4; i++) {
Color color = Color.values()[i-1];
MdgaButton button = new MdgaButton(color.name(), () -> app.enter(MdgaState.GAME), new Vector3f(150, 200, 0));
button.setLocalTranslation(new Vector3f(currentX, 0, 0));
currentX += buttonWidth + spacing;
dialog.addButton(button);
}
//Button weiterButton = createButton("Weiter", new Vector3f(150, 50, 0), ColorRGBA.Blue, ColorRGBA.Cyan);
//weiterButton.setLocalTranslation(app.getCamera().getWidth() - 200, 100, 0);
}
@Override
public void onEnter() {
dialog.show();
}
@Override
public void onLeave() {
dialog.hide();
}
}

View File

@@ -0,0 +1,52 @@
package pp.mdga.client.View;
import com.jme3.material.Material;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Quad;
import com.simsilica.lemur.*;
import pp.mdga.client.Dialog.MdgaButton;
import pp.mdga.client.Dialog.VerticalButtonDialog;
import pp.mdga.client.MdgaApp;
import pp.mdga.client.MdgaState;
import com.jme3.material.Material;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Quad;
import com.simsilica.lemur.Button;
import com.simsilica.lemur.Container;
import com.simsilica.lemur.Label;
import com.jme3.material.Material;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Quad;
public class MainView extends MdgaView {
private Geometry background;
VerticalButtonDialog dialog;
public MainView(MdgaApp app) {
super(app);
background = createBackground("powercards.png");
node.attachChild(background);
Vector3f size = new Vector3f(1, 1, 1);
dialog = new VerticalButtonDialog(app);
dialog.addButton(new MdgaButton("Spiel beitreten", () -> app.enter(MdgaState.LOBBY), size));
dialog.addButton(new MdgaButton("Spiel hosten", () -> app.enter(MdgaState.LOBBY), size));
dialog.addButton(new MdgaButton("Einstellungen", () -> System.out.println("Einstellungen"), size));
dialog.addButton(new MdgaButton("Spiel beenden", () -> app.stop(), size));
}
@Override
public void onEnter() {
dialog.show();
}
@Override
public void onLeave() {
dialog.hide();
}
}

View File

@@ -0,0 +1,46 @@
package pp.mdga.client.View;
import com.jme3.asset.TextureKey;
import com.jme3.material.Material;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.jme3.scene.shape.Quad;
import com.jme3.texture.Texture;
import pp.mdga.client.MdgaApp;
public abstract class MdgaView {
protected MdgaApp app;
protected Node node;
public MdgaView(MdgaApp app) {
this.app = app;
this.node = new Node();
}
public void enter() {
app.getGuiNode().attachChild(node);
onEnter();
}
public void leave() {
onLeave();
app.getGuiNode().detachChild(node);
}
protected void onEnter() {}
protected void onLeave() {}
protected Geometry createBackground(String texturePath) {
TextureKey key = new TextureKey(texturePath, true);
Texture backgroundTexture = app.getAssetManager().loadTexture(key);
Quad quad = new Quad(app.getCamera().getWidth(), app.getCamera().getHeight());
Geometry background = new Geometry("Background", quad);
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
mat.setTexture("ColorMap", backgroundTexture);
background.setMaterial(mat);
background.setLocalTranslation(0, 0, -1);
return background;
}
}

View File

@@ -1,4 +1,4 @@
package pp.mdga.client;
public class DetermineStartPlayer extends Game {
public class DetermineStartPlayer {
}

View File

@@ -1,4 +1,4 @@
package pp.mdga.client;
public class Spectator extends Game {
public class Spectator {
}

View File

@@ -1,4 +1,4 @@
package pp.mdga.client;
public class Turn extends Game {
public class Turn {
}

View File

@@ -1,4 +1,4 @@
package pp.mdga.client;
public class Waiting extends Game {
public class Waiting {
}

View File

@@ -1,4 +1,4 @@
package pp.mdga.server;
public class DetermineStartPlayer extends Game {
public class DetermineStartPlayer {
}