Make engine instantiates MapInitializer instead of MapHandler as a map handler
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user