Scripts Python

Note

Depuis Tiled 1.3, Tiled peut être étendu en utilisant du JavaScript. L’API JavaScript fournit plus d’opportunités d’étendre les fonctionnalités de Tiled que l’ajout de formats de cartes personnalisés. Elle est complètement documentée et marche directement sur toutes les plateformes. Elle doit être préférée au greffon en Python si possible.

Tiled est distribué avec un greffon qui vous permet d’utiliser du Python 3 pour ajouter un support pour des formats de cartes personnalisés. C’est utile surtout car vous n’avez pas besoin de compiler Tiled vous-même et les scripts sont faciles à déployer sur toutes les plateformes.

Pour que les scripts soient chargés, ils doivent être placé dans ~/.tiled. Tiled vérifie si ce répertoire change, donc il n’y a pas besoin de relancer Tiled après avoir ajouté ou changé des scripts (cependant le répertoire doit exister avant de lancer Tiled).

Il y a plusieurs scripts d’exemple disponibles dans le dépôt.

Note

Pour créer le dossier ~/.tiled sur Windows, ouvrez l’invite de commande (cmd.exe), qui doit commencer dans votre dossier personnel par défaut, puis entrez mkdir .tiled pour créer le dossier.

Sur Linux, les dossiers commençant avec un point sont cachés par défaut. Dans la plupart des explorateurs de fichiers vous pouvez activer la visibilité des fichiers cachés en utilisant Ctrl+H.

Note

Depuis Tiled 1.2.4, les greffons en Python sont désactivés par défaut, car le chargement de ce greffon peut causer un plantage dépendant de la version de Python installée sur le système (#2091). Pour utiliser le greffon en Python, veuillez tout d’abord l’activer dans les Préférences.

Avertissement

Sur Windows, Python n’est pas installé par défaut. Pour que le greffon en Python de Tiled marche, il faut installer Python 3.7 (récupérez-le depuis https://www.python.org/). Vous aurez aussi besoin de cocher la case « Add Python 3.7 to PATH » (Ajouter Python 3.7 à PATH) dans le programme d’installation :

../../_images/python-windows.png

Sur Linux vous aurez aussi besoin d’installer le paquet approprié. Cependant, les versions de Linux courantes faites sur Ubuntu 18.04 utilisent Python 3.6, donc vous aurez besoin d’installer la nouvelle version d’une certaine manière.

Le greffon en Python n’est couramment pas activé pour les versions de macOS. Nous devons trouver comment utiliser Python 3, tandis que macOS ne distribue que Python 2.7 par défaut. Si vous utilisez ce greffons sur macOS vous aurez besoin d’utiliser Tiled 1.1 pour le moment.

Exemple de Greffon d’Exportation

Supposez que vous voulez une carte exportée dans le format suivant :

29,29,29,29,29,29,32,-1,34,29,29,29,29,29,29,
29,29,29,29,29,29,32,-1,34,29,29,29,29,29,29,
29,29,29,29,29,29,32,-1,34,29,29,29,29,29,29,
29,29,29,29,29,29,32,-1,34,29,29,29,29,29,29,
25,25,25,25,25,25,44,-1,34,29,29,29,29,29,29,
-1,-1,-1,-1,-1,-1,-1,-1,34,29,29,29,29,29,29,
41,41,41,41,41,41,41,41,42,29,29,24,25,25,25,
29,29,29,29,29,29,29,29,29,29,29,32,-1,-1,-1,
29,29,29,29,29,29,39,29,29,29,29,32,-1,35,41,
29,29,29,29,29,29,29,29,29,29,29,32,-1,34,29,
29,29,29,29,29,29,29,29,37,29,29,32,-1,34,29;

Vous pouvez réalisez ceci en sauvegardant le script example.py suivant dans le dossier de scripts :

from tiled import *

class Example(Plugin):
    @classmethod
    def nameFilter(cls):
        return "Example files (*.example)"

    @classmethod
    def shortName(cls):
        return "example"

    @classmethod
    def write(cls, tileMap, fileName):
        with open(fileName, 'w') as fileHandle:
            for i in range(tileMap.layerCount()):
                if isTileLayerAt(tileMap, i):
                    tileLayer = tileLayerAt(tileMap, i)
                    for y in range(tileLayer.height()):
                        tiles = []
                        for x in range(tileLayer.width()):
                            if tileLayer.cellAt(x, y).tile() != None:
                                tiles.append(str(tileLayer.cellAt(x, y).tile().id()))
                            else:
                                tiles.append(str(-1))
                        line = ','.join(tiles)
                        if y == tileLayer.height() - 1:
                            line += ';'
                        else:
                            line += ','
                        print(line, file=fileHandle)


        return True

Ensuite vous pourrez voir une entrée « Example files » dans la liste de types dans Fichier > Exporter, qui vous permet d’exporter la carte en utilisant le script ci-dessus.

Note

This example does not support the use of group layers.

Déboguer Votre Script

Toute erreur rencontrée lors de l’analyse ou du lancer du script sont affichées dans la Console, qui peut être activée dans Vue > Vues et Barres d’Outils > Console.

Référence de l’API

Ce serait bien d’avoir une référence complète de l’API documentée ici, mais pour le moment veuillez voir le fichier source pour les classes et méthodes disponibles.

Note

Any help with maintaining the Python plugin would be very appreciated. See open issues related to Python support