Add ObjectLayer and GameMap parameters to MapInitializer

This commit is contained in:
2021-04-07 10:29:36 +02:00
parent 8d709709a8
commit c8f182aef1
4 changed files with 13 additions and 3 deletions

View File

@@ -16,6 +16,8 @@ import java.time.Instant
import java.time.format.DateTimeFormatter
import javax.annotation.processing.Generated
import javax.lang.model.element.Modifier
import com.bartlomiejpluta.base.api.map.layer.`object`.ObjectLayer as EngineObjectLayer
import com.bartlomiejpluta.base.api.map.model.GameMap as EngineGameMap
@Component
class MapObjectsCodeGenerator : CodeGenerator {
@@ -65,6 +67,8 @@ class MapObjectsCodeGenerator : CodeGenerator {
.addParameter(Context::class.java, "context", Modifier.FINAL)
.addParameter(runner, "runner", Modifier.FINAL)
.addParameter(handler, "handler", Modifier.FINAL)
.addParameter(EngineGameMap::class.java, "map", Modifier.FINAL)
.addParameter(EngineObjectLayer::class.java, "layer", Modifier.FINAL)
.addParameter(TypeName.INT, "x", Modifier.FINAL)
.addParameter(TypeName.INT, "y", Modifier.FINAL)
.addCode(it.code)
@@ -77,11 +81,13 @@ class MapObjectsCodeGenerator : CodeGenerator {
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
.addParameter(Context::class.java, "context", Modifier.FINAL)
.addParameter(MapHandler::class.java, "handler", Modifier.FINAL)
.addParameter(EngineGameMap::class.java, "map", Modifier.FINAL)
.addParameter(EngineObjectLayer::class.java, "layer", Modifier.FINAL)
.addStatement("var customRunner = (\$T) context.getGameRunner()", runner)
.addStatement("var customHandler = (\$T) handler", handler)
layer.objects.forEach {
runMethod.addStatement("_${it.x}x${it.y}(context, customRunner, customHandler, ${it.x}, ${it.y})")
runMethod.addStatement("_${it.x}x${it.y}(context, customRunner, customHandler, map, layer, ${it.x}, ${it.y})")
}
generatedClass

View File

@@ -86,6 +86,8 @@ class ObjectPaintingTrace(
* Following final parameters are available to use:
* x: int - the x coordinate of tile the object has been created on
* y: int - the y coordinate of tile the object has been created on
* layer: ObjectLayer - current object layer
* map: GameMap - current map
* handler: ${className(map.handler)} - current map handler
* runner: ${className(projectContext.project?.runner)} - the game runner of the project
* context: Context - the game context