En este capítulo vamos a ver como tratar capas de tiles y qué hacer con ellas.
Lo primero que haremos será cargar el mapa creado en Tiled en cocos. Para ellos _map = TMXTiledMap::create(_levelName); (ver método createBackground). Una vez creado nuestro mapa podemos extraer las diferentes capas que lo conforman y hacer con ellas lo que queramos. En este caso obtendremos la capa de tiles que contiene los enemigos y reemplazaremos estos por enemigos creados por nosotros con funcionalidad.
En la clase BaseLevel tras cargar el nivel generado en Tiled, obtenemos la capa llamada enemies y ahora veremos qué hacer con ella
Las capas de los niveles son como matrices, obtenemos la capa _map->getLayer("enemies") y luego su tamaño. Una vez tenemos su tamaño, iteramos sobre la capa hasta que enemyLayer->getTileGIDAt(Point(i, j)) nos da un valor distinto de 0, el 0 se usa para representar que no hay ninguna imagen asociada a esa posición, cada imagen tendrá su identificador así es como al obtener este GID podemos identificar el tipo de enemigo que deseamos. Una vez creado el enemigo del tipo deseado, de lo cual se encarga la clase EnemyFactory como vemos en EnemyFactory::getInstance()->getEnemy. Esta clase la veremos posteriormente con más detalle. Ahora hay que posicionar los enemigos y para ello hay que convertir la posición del tile a una posición válida de cocos2d-x esto lo hacemos con el método tileCoordinateToCocosPosition este proceso debe hacerse porque el tamaño de la capa nos la da en número de tiles, es labor nuestra transformar esto a pixeles y por supuesto corregir los ejes de coordenadas.
Una vez creados y posicionados los enemigos sólo nos falta eliminar esta capa pues de no ser eliminada los tiles de los enemigos estáticos seguirían visibles enemyLayer->getParent()->removeChild(enemyLayer).
El resultado de nuestro juego hasta este punto aunque añadamos enemigos seá el sisguiente
Esto es debido a que como los enemigos estan afectados por la gravedad y no existe nada en el suelo que los retenga, caen por debajo de la pantalla. En el siguietne capitulo trataremos capas de objetos que nos ayudaran a crear este suelo.
Antes de continuar veremos una clase llamada EnemyFactory que en función de un identificador u otro crea el tipo de enemigo correcto.
Esta clase simplemente retorna un tipo u otro de enemigo en función de un identificador numérico. Este identificador numérico se llama GID y es creado por Tiled, tendremos que abrir el nivel generado por Tiled con un editor de textos y observar el identificador numérico asignado a cada tile, normalmente son valores consecutivos.