mercredi 24 novembre 2010

Ça n'aura pas duré longtemps...

mais mon design est pourri. Je vous rappelle l'idée: faire dériver chaque objet (station, section de rail, etc) à la fois d'un objet logique et d'un objet graphique. Le problème, il est que les objets sont inter-dépendants: la création d'une station force la création de sections de rails associés. Donc, quand l'objet logique station est créé, comment fait-il pour créer les objets complets (logique + graphique) pour la section? L'on n'est limité à passer de complexes factories un peu partout. C'est moche, c'est compliqué, et c'est intestable. Bref, à jeter.

Je suis vraiment au carrefour de l'architecture du truc, si je le fais bien, ça ira tout seul, sinon, je risque fort de me lasser à force de me battre avec le code.

C'est pas grave, j'ai des tas d'idées. Dériver de l'objet logique était bien pour la gestion des objets, de leur construction et de leur destruction. Je garde donc l'idée que l'objet logique doit pouvoir posséder l'objet graphique, mais j'essaie de découpler.

Chaque objet logique possède donc un "UserObject", qui dérive d'une interface. En plus de cela, la classe World est munie d'un dispatcheur, qui permet au système graphique de détecter toutes le créations et destructions d'objets logiques. À la création d'un objet logique, le système graphique peut ainsi ajouter un "UserObject" graphique. A la destruction, l'objet graphique s'en va en même temps que l'objet logique.

Le concept de user objets est très courant, comme par exemple dans wxWidgets ou dans Open Scene Graph. J'ai donc bon espoir que l'idée colle également à ma logique.

Aucun commentaire: