Bonjour à tous !
Ma question porte sur la possibilité de transformer un objet Javascript ordinaire et non réactif en une série des stores réactifs (base + dérivés) pour Svelte.
J'ai une bibliothèque de jeu externe au projet UI Svelte qui valide les règles du jeu dès qu'on effectue une action de jeu. Cette instance d'objet est capable, en principe, de jouer toute une partie en gardant l'historique pour le replay. Une instance de cet objet représente une parite unique, il faut créer un nouvel objet pour chaque manche, il n'y a pas de méthode game.reset().
Maintenant il me faut intégrer cette lib dans un store réactif pour Svelte, pour exposer uniquement les méthodes de mutation (apres validation des actions) du jeu) et les getters (pour l'état du plateau, les scores des jouerus et les drapeaux de la partie); ce store sera dérivé suivant les différents getters. Je souhaite pouvoir écrire des instructions réactives du genre :
Mais je cherche encore une "bonne" façonn de procéder, qui soit assez simple à coder, sans pour autant affaiblir lastabilité de l'application.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20// composant Board.svelte import { GameStore } from '../stores/GameStore.js' import { GameBoardStore } from '../stores/GameBoardStore.js' import Tile from '../arena/Tile.svelte' ... on_button_clicked = () => { // déclencher unupdate sur le store GameStore.play( /* ... */ ) } ... {#if $GameStore.ready } {#each $GameBoardStore.tiles() as tile } <Tile {...tile}> {/each} {/if}
Remarques:
* Le plateau est en SVG, avec des images et des animations possibles,
* il faut prévoir des splash screens pour les transitions entre les tours des jouerus
, les communications entre joueurs se feront via socket.io
Idée: j'ai pensé dans une première version à ne stocker dans le store qu'un entier incrémnté à chaque tour de jeu et à lire les getters quand cet entier est mis à jour...
En bref quelle seraient les pistes que vous adopteriez ?






Répondre avec citation
Partager