diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java b/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java index 6615f52e..7512524f 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java @@ -79,6 +79,8 @@ public interface Context extends Updatable, Renderable, Disposable { boolean togglePause(); + void resetMaps(); + void fireEvent(E event); void addEventListener(EventType type, Consumer listener); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/context/model/DefaultContext.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/context/model/DefaultContext.java index d6575f51..f202ccf8 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/context/model/DefaultContext.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/context/model/DefaultContext.java @@ -276,6 +276,12 @@ public class DefaultContext implements Context { return this.paused; } + @Override + public void resetMaps() { + log.info("Resetting maps"); + mapManager.resetMaps(); + } + @Override public void addEventListener(EventType type, Consumer listener) { eventHandler.addListener(type, listener); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/manager/DefaultMapManager.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/manager/DefaultMapManager.java index aca585a1..b396b38c 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/manager/DefaultMapManager.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/manager/DefaultMapManager.java @@ -110,4 +110,16 @@ public class DefaultMapManager implements MapManager { return handler; } + + @Override + public void resetMaps() { + log.info("Removing maps and map handlers from cache"); + + var mapsSize = maps.size(); + var handlersSize = handlers.size(); + maps.clear(); + handlers.clear(); + + log.info("Removed {} maps and {} map handlers from cache", mapsSize, handlersSize); + } } diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/manager/MapManager.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/manager/MapManager.java index efdf60ff..c1c315d7 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/manager/MapManager.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/manager/MapManager.java @@ -9,4 +9,6 @@ import com.bartlomiejpluta.base.internal.gc.Cleanable; public interface MapManager extends AssetManager, Cleanable { MapHandler loadHandler(Context context, String mapUid); + + void resetMaps(); }