From b10a8b234cdd8f861f4d4d4c5890d0feb89942b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Sat, 3 Apr 2021 12:48:00 +0200 Subject: [PATCH] Enable MapInitializer for ObjectLayers --- .../world/map/manager/DefaultMapManager.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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 3acff373..a6cfb3b7 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 @@ -2,12 +2,14 @@ package com.bartlomiejpluta.base.engine.world.map.manager; import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.map.handler.MapHandler; +import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer; import com.bartlomiejpluta.base.engine.error.AppException; import com.bartlomiejpluta.base.engine.project.config.ProjectConfiguration; import com.bartlomiejpluta.base.engine.util.reflection.ClassLoader; import com.bartlomiejpluta.base.engine.world.map.asset.GameMapAsset; import com.bartlomiejpluta.base.engine.world.map.model.DefaultGameMap; import com.bartlomiejpluta.base.engine.world.map.serial.MapDeserializer; +import com.bartlomiejpluta.base.internal.map.MapInitializer; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -17,6 +19,8 @@ import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; +import static java.lang.String.format; + @Slf4j @Component @RequiredArgsConstructor(onConstructor = @__(@Autowired)) @@ -84,6 +88,19 @@ public class DefaultMapManager implements MapManager { handlers.put(uid, handler); handler.onCreate(context, map); + + var layers = map.getLayers(); + for (var layer : layers) { + if (layer instanceof ObjectLayer) { + var packageName = "com.bartlomiejpluta.base.generated.map"; + var purifiedUid = uid.replace("-", "_"); + var layerIndex = layers.indexOf(layer); + var className = format("%s.MapInitializer_%s$$Layer%d", packageName, purifiedUid, layerIndex); + var initializerClass = classLoader.loadClass(className); + var initializer = initializerClass.getConstructor().newInstance(); + initializer.run(context, handler); + } + } } return handler;