Skip to content
Snippets Groups Projects
Commit b37cee67 authored by Sander Skogh Linnerud's avatar Sander Skogh Linnerud
Browse files

gamesession updated when creating game, but error on shader when starting the actual game (#39)

parent 75a8d913
No related tags found
1 merge request!39Draft: Resolve "split apiclient"
Pipeline #269741 passed
......@@ -53,8 +53,9 @@ public class GameManager {
break;
case GAME_LOBBY:
if (apiClientProvider != null) {
viewState = new GameLobbyView(viewStateManager);
controllerState = new GameLobbyController(controllerStateManager, apiClientProvider);
GameLobbyController gameLobbyController = new GameLobbyController(controllerStateManager, apiClientProvider);
viewState = new GameLobbyView(viewStateManager, gameLobbyController);
controllerState = gameLobbyController;
} else {
Gdx.app.error("GameManager", "ApiClientProvider is not initialized");
}
......
......@@ -9,11 +9,12 @@ import com.mygdx.game.service.EntityService;
import com.mygdx.game.service.FirestoreCallback;
import com.mygdx.game.service.data.GameSessionData;
import java.util.ArrayList;
import java.util.List;
public class GameLobbyController extends ControllerState {
private EntityService service;
private GameSessionData gameSessionData;
private final EntityService service;
private final GameSessionData gameSessionData;
public GameLobbyController(ControllerStateManager controllerStateManager, APIClientProvider apiClientProvider) {
super(controllerStateManager);
......@@ -33,10 +34,29 @@ public class GameLobbyController extends ControllerState {
});
}
public static boolean startGame(List<Player> playersInLobby, int mapSize, float time) {
public boolean startGame(List<Player> playersInLobby, int mapSize, float time) {
List<String> players = new ArrayList<>();
for (Player player:playersInLobby) {
players.add(player.getName());
}
gameSessionData.setPlayers(players);
gameSessionData.setBoardPreset(mapSize);
gameSessionData.setTimePerMove((int) time);
if (playersInLobby.size() == 2 || playersInLobby.size() == 4) {
service.updateGameSession(gameSessionData, new FirestoreCallback<String>() {
@Override
public void onSuccess(String result) {
System.out.println("Updated GameSession: " + result);
Game.getInstance().startGame(playersInLobby, mapSize, time);
GameManager.getInstance().setStateManagers(GameManager.GameState.IN_GAME);
}
@Override
public void onFailure(Exception e) {
System.err.println("Error updating GameSession: " + e);
}
});
return true;
} else {
return false;
......
......@@ -34,9 +34,12 @@ import java.util.Random;
public class GameLobbyView extends ViewState {
private List<Player> playersInLobby = new ArrayList<Player>();
private Texture backgroundTexture;
private GameLobbyController gameLobbyController;
public GameLobbyView(ViewStateManager viewStateManager) {
public GameLobbyView(ViewStateManager viewStateManager, GameLobbyController gameLobbyController) {
super(viewStateManager);
this.gameLobbyController = gameLobbyController;
playersInLobby.add(new Player("Player 1"));
playersInLobby.add(new Player("Player 2"));
......@@ -92,7 +95,7 @@ public class GameLobbyView extends ViewState {
// Button Logic
startGameButton.addListener(new InputListener() {
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
if (!GameLobbyController.startGame(playersInLobby, (int) mapSlider.getValue(), timeSlider.getValue())) {
if (!gameLobbyController.startGame(playersInLobby, (int) mapSlider.getValue(), timeSlider.getValue())) {
System.out.println("Game failed to start");
}
return true;
......@@ -154,4 +157,11 @@ public class GameLobbyView extends ViewState {
// doesnt update anything
}
@Override
public void dispose() {
if (backgroundTexture != null) backgroundTexture.dispose();
super.dispose(); // This will dispose of the stage and other disposables
}
}
......@@ -22,7 +22,6 @@ public class MainMenuView extends ViewState {
public MainMenuView(ViewStateManager viewStateManager) {
super(viewStateManager);
// Background texture initialization is deferred to initialize() to ensure libGDX is ready.
}
@Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment