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; import com.bartlomiejpluta.base.api.map.model.GameMap;
public interface MapInitializer { 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); 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); log.info("Creating new handler: [{}] for the map with ID: [{}]", handlerClassName, uid);
var handlerClass = classLoader.<MapHandler>loadClass(handlerClassName); var handlerClass = classLoader.<MapHandler>loadClass(handlerClassName);
handler = handlerClass.getConstructor().newInstance(); handler = handlerClass.getConstructor().newInstance();
@@ -94,18 +94,8 @@ public class DefaultMapManager implements MapManager {
handler.onCreate(context, map); handler.onCreate(context, map);
var layers = map.getLayers(); var initializer = (MapInitializer) handler;
for (var layer : layers) { initializer.initialize();
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);
}
}
} }
return handler; return handler;