From 7761a74d2befc0d87991e5e0aa87f958fa699066 Mon Sep 17 00:00:00 2001 From: Jonas Date: Mon, 16 May 2022 22:06:55 +0200 Subject: [PATCH] npcs no longer chat about hearing noise, ghost players hear ghost noise too, removed random ghost noise pitch even though it was super cool, because of stupid aliasing artefacts :( --- OgGhostWinners.txt | 1 + .../dbis/cs108/gamelogic/NoiseHandler.java | 4 +-- .../gamelogic/ServerGameInfoHandler.java | 25 +++++++++---------- .../dmi/dbis/cs108/gamelogic/VoteHandler.java | 4 ++- .../gamelogic/klassenstruktur/GhostNPC.java | 1 + .../klassenstruktur/GhostPlayer.java | 4 +++ .../gamelogic/klassenstruktur/HumanNPC.java | 1 + .../dbis/cs108/multiplayer/client/Sound.java | 9 ++++--- 8 files changed, 30 insertions(+), 19 deletions(-) diff --git a/OgGhostWinners.txt b/OgGhostWinners.txt index 53225b1..a183733 100644 --- a/OgGhostWinners.txt +++ b/OgGhostWinners.txt @@ -6,3 +6,4 @@ serai serai serai serai +Jonas diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/NoiseHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/NoiseHandler.java index e455f3b..8c5339c 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/NoiseHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/NoiseHandler.java @@ -24,11 +24,11 @@ public class NoiseHandler { public int[] noiseNotifier(Passenger predator, Passenger victim, int[] noiseAmount) { if (predator.getPosition() - victim.getPosition() > 0) { // if predator is to the right of victim - for (int i = predator.getPosition() - 1; i > victim.getPosition(); i--) { + for (int i = predator.getPosition() ; i > victim.getPosition(); i--) { //-1 noiseAmount[i]++; } } else { // if predator is to the left of victim - for (int i = predator.getPosition() + 1; i < victim.getPosition(); i++) { + for (int i = predator.getPosition(); i < victim.getPosition(); i++) { //+1 noiseAmount[i]++; } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java index dd556a9..4034172 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java @@ -121,14 +121,13 @@ public class ServerGameInfoHandler { case ClientGameInfoHandler.noiseNotification + 4 + " time(s)": case ClientGameInfoHandler.noiseNotification + 5 + " time(s)": case ClientGameInfoHandler.noiseNotification: - //todo: jonas: handle bell behaviour correctly. - String outMsg = npc.getName() + ": " + noiseRandomizer(); - //TODO: add likelyhood + if(!npc.getKickedOff()) { - game.getLobby().getAdmin().broadcastNpcChatMessageToLobby(outMsg); - game.getLobby().getAdmin().sendMsgToClientsInLobby( - Protocol.printToGUI + "$" + GuiParameters.noiseHeardAtPosition - + "$" + npc.getPosition()); + if (Math.random() < GhostNPC.probabilityToRingAlarmIfHeardNoise) { + game.getLobby().getAdmin().sendMsgToClientsInLobby( + Protocol.printToGUI + "$" + GuiParameters.noiseHeardAtPosition + + "$" + npc.getPosition()); + } } break; case ClientGameInfoHandler.ghostVoteRequest: @@ -151,13 +150,13 @@ public class ServerGameInfoHandler { case ClientGameInfoHandler.noiseNotification + 4 + " time(s)": case ClientGameInfoHandler.noiseNotification + 5 + " time(s)": case ClientGameInfoHandler.noiseNotification: //new case where times are not noted. - //todo: jonas: handle bell behaviour correctly. - String outMsg = npc.getName() + ": " + noiseRandomizer(); if(!npc.getKickedOff()) { - game.getLobby().getAdmin().broadcastNpcChatMessageToLobby(outMsg); - game.getLobby().getAdmin().sendMsgToClientsInLobby( - Protocol.printToGUI + "$" + GuiParameters.noiseHeardAtPosition - + "$" + npc.getPosition()); + if (Math.random() < HumanNPC.probabilityToRingAlarmIfHeardNoise) { + game.getLobby().getAdmin().sendMsgToClientsInLobby( + Protocol.printToGUI + "$" + GuiParameters.noiseHeardAtPosition + + "$" + npc.getPosition()); + } + } break; case ClientGameInfoHandler.humanVoteRequest: diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/VoteHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/VoteHandler.java index e8a6410..d6a35ca 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/VoteHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/VoteHandler.java @@ -172,7 +172,7 @@ public class VoteHandler { ClientGameInfoHandler.humansVotedFor + voteIndex + ClientGameInfoHandler.isAHuman, game); } } - Timer.humanAfterVoteTimer(); + if (passengers[voteIndex].getIsGhost()) { // if player is a ghost if (passengers[voteIndex].getIsOG()) { // if ghost is OG --> end game, humans win System.out.println(ClientGameInfoHandler.gameOverHumansWin); @@ -200,6 +200,8 @@ public class VoteHandler { } } } + Timer.humanAfterVoteTimer(); + LOGGER.info(game.getGameState().toString()); // set hasVoted to false for all passengers for future voting for (Passenger passenger : passengers) { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/GhostNPC.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/GhostNPC.java index f0faaab..6eea800 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/GhostNPC.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/GhostNPC.java @@ -9,6 +9,7 @@ import org.apache.logging.log4j.Logger; public class GhostNPC extends Ghost { public static final Logger LOGGER = LogManager.getLogger(GhostNPC.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); + public static final double probabilityToRingAlarmIfHeardNoise = 0.5; /** * Creates a new GhostNPC. Should be used at game start or if a HumanNPC is turned into a ghost. diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/GhostPlayer.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/GhostPlayer.java index 271ea9d..8b1f961 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/GhostPlayer.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/GhostPlayer.java @@ -1,6 +1,7 @@ package ch.unibas.dmi.dbis.cs108.gamelogic.klassenstruktur; import ch.unibas.dmi.dbis.cs108.BudaLogConfig; +import ch.unibas.dmi.dbis.cs108.gamelogic.ClientGameInfoHandler; import ch.unibas.dmi.dbis.cs108.gamelogic.ClientVoteData; import ch.unibas.dmi.dbis.cs108.gamelogic.Game; import ch.unibas.dmi.dbis.cs108.gamelogic.ServerGameInfoHandler; @@ -14,6 +15,7 @@ public class GhostPlayer extends Ghost { public static final Logger LOGGER = LogManager.getLogger(GhostPlayer.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); + /** * Creates a new GhostPlayer. Should be used at game start or if a HumanPlayer is turned into a * ghost. @@ -48,6 +50,8 @@ public class GhostPlayer extends Ghost { String formattedMsg; if (msg.equals(GuiParameters.updateGameState)) { formattedMsg = Protocol.printToGUI + "$" + GuiParameters.updateGameState + game.getGameState().toGhostString(); + } else if (msg.equals(ClientGameInfoHandler.noiseNotification)) { + formattedMsg = Protocol.noiseNotificationProtocol; } else { formattedMsg = ServerGameInfoHandler.format(msg, this, game); } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/HumanNPC.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/HumanNPC.java index 8a8a6f7..f595628 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/HumanNPC.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/HumanNPC.java @@ -10,6 +10,7 @@ public class HumanNPC extends Human { public static final Logger LOGGER = LogManager.getLogger(HumanNPC.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); + public static final double probabilityToRingAlarmIfHeardNoise = 0.9; /** * Creates a new HumanNPC. diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Sound.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Sound.java index 45948d5..d70ab6c 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Sound.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Sound.java @@ -95,7 +95,9 @@ public class Sound { nightnoises.stop(); } - public static void gameoverghosts() { gameoverghosts.play(defaultvolume); } + public static void gameoverghosts() { + stopmusicday(); + gameoverghosts.play(defaultvolume); } public static void gameoverhumans() { stopmusicday(); @@ -116,7 +118,8 @@ public class Sound { } public static void ghost() { - double playbackspeed = (Math.random() / 5.0) + 0.9; + //double playbackspeed = (Math.random() / 5.0) + 0.9; causes aliasing artefacts :/ + double playbackspeed = 1; int ghostsoundnr = random.nextInt(4) + 1; System.out.println(ghostsoundnr); AudioClip ghost; @@ -134,7 +137,7 @@ public class Sound { ghost = ghost04; break; } - ghost.play(0.1, 0.0, playbackspeed, 0.0, 5); + ghost.play(0.06, 0.0, playbackspeed, 0.0, 5); } }