Skip to content

Commit

Permalink
Add master fallback to session
Browse files Browse the repository at this point in the history
  • Loading branch information
zelytra committed Mar 12, 2024
1 parent 7ea78b6 commit d82ffad
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 15 deletions.
37 changes: 23 additions & 14 deletions backend/src/main/java/fr/zelytra/session/SessionManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -102,24 +102,33 @@ public Fleet joinSession(String sessionId, Player player) {
* @param player The player to remove from their session.
*/
public void leaveSession(Player player) {
for (Fleet fleet : sessions.values()) {

SotServer sotServer = getSotServerFromPlayer(player);
if (sotServer != null) {
playerLeaveSotServer(player, sotServer);
}
Fleet fleet = getFleetByPlayerName(player.getUsername());

fleet.getPlayers().remove(player);
fleet.getServers().forEach((key, value) -> value.getConnectedPlayers().remove(player));
SessionSocket.broadcastDataToSession(fleet.getSessionId(), MessageType.UPDATE, fleet);
Log.info("[" + fleet.getSessionId() + "] " + player.getUsername() + " Leave the session !");
SotServer sotServer = getSotServerFromPlayer(player);
if (sotServer != null) {
playerLeaveSotServer(player, sotServer);
}

// Clean empty session
if (fleet.getPlayers().isEmpty()) {
sessions.remove(fleet.getSessionId());
Log.info("[" + fleet.getSessionId() + "] Has been disbanded");
}
fleet.getPlayers().remove(player);
fleet.getServers().forEach((key, value) -> value.getConnectedPlayers().remove(player));

// Check if player was master, then give another user the master role
if (player.isMaster() && !fleet.getPlayers().isEmpty()) {
Player newMaster = fleet.getPlayers().get(0);
newMaster.setMaster(true);
Log.info("[" + fleet.getSessionId() + "] Master as left, giving the role to " + newMaster.getUsername());
}

SessionSocket.broadcastDataToSession(fleet.getSessionId(), MessageType.UPDATE, fleet);
Log.info("[" + fleet.getSessionId() + "] " + player.getUsername() + " Leave the session !");

// Clean empty session
if (fleet.getPlayers().isEmpty()) {
sessions.remove(fleet.getSessionId());
Log.info("[" + fleet.getSessionId() + "] Has been disbanded");
}

}

/**
Expand Down
2 changes: 1 addition & 1 deletion webapp/src/components/fleet/FleetLobby.vue
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@
</template>

<script setup lang="ts">
import {computed, onBeforeMount, onUnmounted, PropType, ref} from "vue";
import {computed, onUnmounted, PropType, ref} from "vue";
import {Fleet} from "@/objects/Fleet.ts";
import PlayerFleet from "@/vue/fleet/PlayerFleet.vue";
import {useI18n} from "vue-i18n";
Expand Down

0 comments on commit d82ffad

Please sign in to comment.