Make engine instantiates MapInitializer instead of MapHandler as a map handler

This commit is contained in:
2023-11-02 15:58:58 +01:00
parent 4bc8999adf
commit 76adb78867
2 changed files with 4 additions and 14 deletions

View File

@@ -6,5 +6,5 @@ import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer;
import com.bartlomiejpluta.base.api.map.model.GameMap;
public interface MapInitializer {
void run(final Context context, final MapHandler handler, final GameMap map, final ObjectLayer layer);
void initialize();
}

View File

@@ -86,7 +86,7 @@ public class DefaultMapManager implements MapManager {
throw new AppException("The map asset with UID: [%s] has not been loaded yet", uid);
}
var handlerClassName = map.getHandler();
var handlerClassName = format("com.bartlomiejpluta.base.generated.map.MapInitializer_%s", uid.replace("-", "_"));
log.info("Creating new handler: [{}] for the map with ID: [{}]", handlerClassName, uid);
var handlerClass = classLoader.<MapHandler>loadClass(handlerClassName);
handler = handlerClass.getConstructor().newInstance();
@@ -94,18 +94,8 @@ public class DefaultMapManager implements MapManager {
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.<MapInitializer>loadClass(className);
var initializer = initializerClass.getConstructor().newInstance();
initializer.run(context, handler, map, (ObjectLayer) layer);
}
}
var initializer = (MapInitializer) handler;
initializer.initialize();
}
return handler;