Salut,
Je développe actuellement un système de tiling isométrique en c# pour un jeu.
Je souhaiterais créer une sorte de Framework de base que je pourrais étendre.
La structure actuelle est :
Map -> Block -> Tile
Une map contient une liste de blocs qui contiennent eux même une liste de tiles.
Le système gère automatiquement les positions de chacun des éléments (blocs et tiles).
J'utilise ce système autant pour créer un éditeur de map que pour charger cette map dans le jeu mais j'aimerais spécialiser certaines choses dans les tiles et dans les blocks pour l'un ou l'autre cas.
Je cherche donc a trouver le meilleur moyen d’étendre le code pour répondre a mon besoin.
J'ai actuellement 3 classes : Map, Block et Tile et j'ai pensé à plusieurs solutions :
- L’héritage : créer des sous classes de Block et Tile (EditorBlock, GameBlock ...) mais par défaut la classe Map instancie des Block et des Tile. Pour que ça fonctionne il faudrait que je lui passe le type de classes à instancier via un template (ex: Map<Block, Tile>, Map<EditorBlock, EditorTile> ...)
- Le pattern decorator : décorer chacune des classes Block et Tile en lui ajoutant les fonctionnalités nécessaires mais ce n'est pas forcement quelque chose qui s'applique a mon cas et c'est assez fastidieux à mettre en place car les classes Block et Tile contiennent de nombreuses méthodes.
Qu'en pensez vous ? Y-a-t-il une solution qui pourrait être meilleur ?
Merci
Partager