Bonjour à tous,
récemment je me suis intéressé a divers technologie, dont le WPF et les architecture MVVM. Étant déjà trifouiller invétéré dans la programmation et ayant de bonne base je me suis lancé un petit défi. Développé un jeu style Football Manager. Donc basé principalement sur du texte et l'interface. Du coup vu les possibilités de WPF je me suis dit qu'on pourrait faire un truc sympa.
J'ai pendant plusieurs semaines lu et relu des vingtaines de blogs et tutos sur l'architecture MVVM et j'ai mis la main à la pâte. Aujourd'hui je suis confronté a un problème qui doit certainement pas en être un. Je vous met en situation :
Mon jeu se passe dans des Frame, j'utilise donc la navigation pour allez de page en page. J'ai intentionnellement mis en place l’impossibilité de retourner en arrière avec un RemoveBackEntry, ce qui oblige a recharger la page et donc le viewModel. J'ai mis en place une base de donnée en XML donc rien de bien velu, mais c'est principalement pour les tests.
Mon jeu comporte donc une page dite "InGame" qui contient une autre frame, mais qui est surtout le coeur du jeu, là où tous ce passe. Comme je tiens a faire le plus possible MVVM, chaque Page a son propre ViewModel. Mais voilà le problème : Les Données et leur persistance.
De façon naturel j'ai créé se que j'appel une classe GameHub, qui est instancié au moment ou l'on arrive sur la page InGame. Elle a pour rôle de charger et de garder en référence toutes les données en mémoire. Vu qu'il s'agit principalement de donnée légère, on dépasse pas les 200Mo mise en mémoire en début de partie. Donc actuellement tous les ViewModel viennent consommer les donné dans ce fameux GameHub, mais comme le GameHub est une instance, je l'ai elle même référencé dans une classe static, ce qui me permet de récupéré cette valeur n'importe quand. Mais je commence a me demander si cest la bonne façon de faire et j'aurais donc besoin de votre avis là dessus. Enfni je sais que cest certainement pas la bonne ^^
Autre détail qui me met le doute, c'est ma façon de récupéré les données. Pour faire simple mon GameHub demande a un service de "Load" les données depuis le fichier Xml. Le service étant une classe Static, pour une raison qui méchappé ca me gêne mais je ne trouve pas vraiment d'autres solution viable.
Enfin bref je crois que vous allez pouvoir m'apprendre des choses.
Merci de m'avoir lu
Bob
Partager