Commit dd8d1752 authored by Melledy's avatar Melledy
Browse files

Deregister empty scenes if a player leaves them

parent c65443f4
...@@ -117,6 +117,7 @@ public class GenshinScene { ...@@ -117,6 +117,7 @@ public class GenshinScene {
} }
public void removePlayer(GenshinPlayer player) { public void removePlayer(GenshinPlayer player) {
// Remove player from scene
getPlayers().remove(player); getPlayers().remove(player);
player.setScene(null); player.setScene(null);
...@@ -127,6 +128,11 @@ public class GenshinScene { ...@@ -127,6 +128,11 @@ public class GenshinScene {
for (EntityGadget gadget : player.getTeamManager().getGadgets()) { for (EntityGadget gadget : player.getTeamManager().getGadgets()) {
this.removeEntity(gadget); this.removeEntity(gadget);
} }
// Deregister scene if not in use
if (this.getEntities().size() <= 0) {
this.getWorld().deregisterScene(this);
}
} }
private void setupPlayerAvatars(GenshinPlayer player) { private void setupPlayerAvatars(GenshinPlayer player) {
......
...@@ -111,7 +111,7 @@ public class World implements Iterable<GenshinPlayer> { ...@@ -111,7 +111,7 @@ public class World implements Iterable<GenshinPlayer> {
SceneData sceneData = GenshinData.getSceneDataMap().get(sceneId); SceneData sceneData = GenshinData.getSceneDataMap().get(sceneId);
if (sceneData != null) { if (sceneData != null) {
scene = new GenshinScene(this, sceneData); scene = new GenshinScene(this, sceneData);
this.getScenes().put(sceneId, scene); this.registerScene(scene);
return scene; return scene;
} }
...@@ -198,6 +198,14 @@ public class World implements Iterable<GenshinPlayer> { ...@@ -198,6 +198,14 @@ public class World implements Iterable<GenshinPlayer> {
} }
} }
public void registerScene(GenshinScene scene) {
this.getScenes().put(scene.getId(), scene);
}
public void deregisterScene(GenshinScene scene) {
this.getScenes().remove(scene.getId());
}
public boolean transferPlayerToScene(GenshinPlayer player, int sceneId, Position pos) { public boolean transferPlayerToScene(GenshinPlayer player, int sceneId, Position pos) {
if (player.getScene().getId() == sceneId || GenshinData.getSceneDataMap().get(sceneId) == null) { if (player.getScene().getId() == sceneId || GenshinData.getSceneDataMap().get(sceneId) == null) {
return false; return false;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment