Implemented the updating off all sprites depending on night/day and role

This commit is contained in:
Seraina 2022-05-14 12:46:07 +02:00
parent fa6ca7371e
commit 277eada934
4 changed files with 31 additions and 9 deletions

View File

@ -352,7 +352,6 @@ public class Client {
gameStateModel.setDayClone(false);
LOGGER.debug("----------------Night, Your role is:" + gameStateModel.getYourRole() + gameStateModel);
Sprites.setNightSprites(gameStateModel.getPassengerTrainClone()[1], GameController.getGameStateModel().getKickedOff());
chatApp.getGameController().updateGameSprites();
chatApp.getGameController().setNoiseButtonInvisible();
chatApp.getGameController().setVoteButtonVisibilityNight(gameStateModel);
break;
@ -360,12 +359,12 @@ public class Client {
gameStateModel.setDayClone(true);
LOGGER.debug("----------------Day, Your role is:" + gameStateModel.getYourRole()+ gameStateModel);
Sprites.setDaySprites(gameStateModel.getPassengerTrainClone()[1], GameController.getGameStateModel().getKickedOff());
chatApp.getGameController().updateGameSprites();
chatApp.getGameController().setNoiseButtonVisible();
chatApp.getGameController().setVoteButtonVisibilityDay(gameStateModel);
break;
case GuiParameters.updateGameState:
gameStateModel.setGSFromString(data);
chatApp.getGameController().updateGameSprites(LoungeSceneViewController.getTrainAnimationDayController());
chatApp.getGameController().updateRoomLabels();
gameStateModel.setRoleFromPosition(position);
break;

View File

@ -78,9 +78,7 @@ public class Sprites {
shadow = SpritesDay.shadow;
secondWagon = SpritesDay.secondWagon;
emptyWagon = SpritesDay.emptyWagon;
for (int i = 0; i < roles.length; i++) {
rooms[i] = getRoomDay(i, roles[i], kickedOff);
}
updateDayRoomSprites(roles,kickedOff);
emptyWagonWall = SpritesDay.emptyWagonWall;
fullWagon = SpritesDay.fullWagon;
loki = SpritesDay.loki;
@ -92,6 +90,11 @@ public class Sprites {
e.printStackTrace();
}
}
public static void updateDayRoomSprites(String[] roles, boolean[] kickedOff) {
for (int i = 0; i < roles.length; i++) {
rooms[i] = getRoomDay(i, roles[i], kickedOff);
}
}
/**
* Sets all Images of this class to the Night version, takes into account which room is a ghost
@ -104,9 +107,7 @@ public class Sprites {
shadow = SpritesNight.shadow;
secondWagon = SpritesNight.secondWagon;
emptyWagon = SpritesNight.emptyWagon;
for (int i = 0; i < roles.length; i++) {
rooms[i] = getRoomNight(i, roles[i], kickedOff);
}
updateNightRoomSprites(roles,kickedOff);
emptyWagonWall = SpritesNight.emptyWagonWall;
fullWagon = SpritesNight.fullWagon;
loki = SpritesNight.loki;
@ -115,6 +116,12 @@ public class Sprites {
fg = SpritesNight.fg;
}
public static void updateNightRoomSprites(String[] roles, boolean[] kickedOff) {
for (int i = 0; i < roles.length; i++) {
rooms[i] = getRoomNight(i, roles[i], kickedOff);
}
}
/**
* Returns a room Image from SpritesDay, corresponding to the position and the role of the passenger in that room
* @param position the position of the room integer 0-5

View File

@ -49,6 +49,14 @@ public class TrainAnimationDayController implements Initializable {
LOGGER.debug("Empty TrainAnimationDayController() constructor was called");
}
public void updateSprites(){
shadowTrain.setImage(Sprites.getShadow());
wagonBGImageView.setImage(Sprites.getSecondWagon());
wagonFloorImageView.setImage(Sprites.getEmptyWagon());
wagonFullImageView.setImage(Sprites.getFullWagon());
lokiImageView.setImage(Sprites.getLoki());
}
public ChatApp getChatApp() {
return chatApp;
}

View File

@ -5,6 +5,8 @@ import static javafx.scene.AccessibleRole.PARENT;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ChatApp;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.GameStateModel;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.Sprites;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.SpritesDay;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.TrainAnimationDayController;
import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.GuiParameters;
import ch.unibas.dmi.dbis.cs108.BudaLogConfig;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel;
@ -126,17 +128,23 @@ public class GameController implements Initializable {
@FXML
private AnchorPane chatAreaGame;
public void updateGameSprites(){
public void updateGameSprites(TrainAnimationDayController trainAnimation){
Platform.runLater(new Runnable() {
@Override
public void run() {
try{
if(gameStateModel.getDayClone()) {
Sprites.updateDayRoomSprites(gameStateModel.getPassengerTrainClone()[1], gameStateModel.getKickedOff());
} else {
Sprites.updateNightRoomSprites(gameStateModel.getPassengerTrainClone()[1], gameStateModel.getKickedOff());
}
room0ImageView.setImage(Sprites.getARoom(0));
room1ImageView.setImage(Sprites.getARoom(1));
room2ImageView.setImage(Sprites.getARoom(2));
room3ImageView.setImage(Sprites.getARoom(3));
room4ImageView.setImage(Sprites.getARoom(4));
room5ImageView.setImage(Sprites.getARoom(5));
trainAnimation.updateSprites();
} catch (Exception e) {
LOGGER.info(e.getMessage());
}