#+title: Engines evolutions

Fichier de description rapide des `engines`
Utilisé par `make_engines.py` pour générer toutes les versions des engines.

* Engines fonctionnels
Ces engines devraient tous fonctionner.
Ils ont tous des tests unitaires et certains sont utilisés dans des niveaux.


** SIMPLE_MAP
 - Note: engine de base donc jamais de ifdef
 - carte simple sans layer en tableau 2D d'entités (char) linéarisées
 - les entités sont placées "à la main"
 - déplacement simple en supprimant l'ancien caractère et en le plaçant a côté
 - le joueur a deux coordonnees player_x player_y
 - on a 4 moves pour les entites mais aussi pour le joueur

** LEVEL_END
 - ajout des level_success level_failed et game_instance

** INPUT_COMMAND
 - lecture d'input et mouvement sous forme de commande sans arguments
 - déplacement en rentrant sur stdin: LEFT RIGHT UP DOWN
 - Note: le deplacement avec les fleches vient de Agdbentures qui écrit sur le
   stdin de l'inférieur

** LEVERS
 - Note: ajout mineur : deux lignes
 - ajout des defines ACTIVATED et DEACTIVATED pour les leviers

XX CONFIG_FILE
 - Note: disabled, ne vois pas l'intérêt de cette version.
 - ajout d'un fichier de config avec la taille de la map la position du joueur
     pour init_game

** READ_MAP_STR
 - lire la map dans une chaine

** COMMAND_ARGS
 - arguments pour les commandes en input
 - variantes UP N, DOWN N, des deplacements

** MAP_STACK
 - stack de map pour changer de map

** ENTITY_STRUCT
 - les entites deviennent des structures
 - le joueur devient une entite
 - la map devient un tableau 2D

** INVENTORY_ARRAY
 - inventaire array
 - structure game

** CUSTOM_ENTITY
 - ajout d'un fichier de config pour declarer des entites

** ENTITY_PROPERTIES
 - propriete des objets genre pushable, activable, blocking
 - ajout du champ dans le fichier de config

** MAP_ENTITY_STACKING
 - on empile les entites dans des listes chainees sur les maps

** MAP_GRAPH
 - map comme graph

** EVENTS
 - events
 - interraction avec les objets dans le moteur et pas dans le niveau


** EVENT_ARGS
 - void * pour pointeur de fonction
 - void * pour les arguments aussi

* Engines à travailler/retravailler
Ces engines sont générés mais non testés complètement ou à revoir.


** READ_MAP_TMX
 - lire la carte dans un tmx