Contexte pour la sérialisation - gregaubert/Cinemania_client GitHub Wiki

Description des éléments à prendre en compte lors de la sérialisation des données afin de créer un contexte ou l'état actuel de la partie. Ces informations doivent être transmissent entre le client et le serveur au format json.

Informations sur une partie

Certaines informations servent à identifier la version du format, si celui-ci devait être incompatible pour le joueur. "version": 1,

D'autres détermine uniquement l'état actuel de la partie.

"game": {
   "turn": 10,          // No du tour actuel
   "id": 12341324134,   // Identifiant unique de la partie
},

Joueurs

"players": [ .. ]

{
   "id": 123412341324,     // # du compte
   "name": "Mok",
   "color": "#FF0000",     // Couleur du pion
   "position": 1,          // offset
   "money": 1000,          // # argent
   "actors": 2,            // # ressource acteur
   "logistics": 10,        // # ressource logistique
},

Films

Il peut y avoir deux types de films différents:

  1. Super production
  2. Film d'auteur

"films": [ ... ]

Super production

{
   "type": 1,
   "title": "Back to the Future",
   "year": 1985,
   "extra": {
      "producer": 0,       // Offset dans l'objet "players"
                           // Ressources nécessaires
      "money": 200,        
      "actors": 3,
      "logistics": 1,
   }
}

Film d'auteur

{ "type": 2, "title": "Unknown", "year": 1959 },

Type de cases

Le boardgame se décompose en plusieurs types de cases différentes. De manière générale toutes les cases ont un nombre commun d'attributs, toutes les autres informations sont ensuite stockées dans une section extra. Chaque type de case présenté est décrit à l'aide d'un exemple.

  1. Quartier général
  2. Script
  3. Chance
  4. Cinéma
  5. École d'acteurs
  6. Logistique

{ "board": [ ... ] }

Quartier général

{ "type": 1, "extra": { "owner": 1, // Offset dans l'objet "players" "level": 0, // Niveau du bâtiment }, }

Script

{ "type": 2, }

Chance

{ "type": 3, }

Cinéma

{
   "type": 4,
   "extra": {
      "owner": 2,    // Offset dans l'objet "players"
      "rooms": [
         0,          // Offset dans l'objet "movies"
      ],
   },
}

École d'acteurs

{
   "type": 5,
   "extra": {
      "owner": 1,    // Offset dans l'objet "players"
      "level": 0,
      // extensions ?
   },
}

Logistique

{
   "type": 6,
   "extra": {
      "owner": 1,
      "level": 0,
      // extensions ?
   }
}