Kneedeck

Écrire un module

Pour Kneedeck 0.32.0 et suivants.

Un module est une page web qui s'affiche dans un onglet de la tablette, sur le PC et sur le smartphone. Il s'écrit en HTML, CSS et JavaScript.

Ton premier module accepté dans le catalogue t'offre la licence de soutien. Le catalogue accepte les modules qui servent vraiment en jeu : les pages d'essai et les copies d'un exemple ou d'un autre module sont refusées.

1. Le dossier du module

Types de fichiers reconnus : .html, .js, .mjs, .css, .json, .txt, .svg, .png, .jpg, .webp, .gif, .woff2, .woff, .mp3, .ogg, .wav. Un autre fichier est transmis tel quel, comme simples données que le script du module peut lire.

Au plus 500 fichiers et 20 Mo.

2. La carte : kneedeck-module.json

{
  "id": "dupont.carburant",
  "name": { "fr": "Carburant", "en": "Fuel" },
  "description": { "fr": "Le carburant à bord, d'après SimBrief.", "en": "The fuel on board, from SimBrief." },
  "version": "1.0.0",
  "author": "Dupont",
  "languages": ["fr", "en"],
  "games": ["DCS World"],
  "permissions": {
    "storage": true,
    "internet": ["www.simbrief.com"],
    "gameData": ["dcs"]
  }
}
ChampCe qu'il contient
idSon identifiant pour Kneedeck : minuscules, chiffres, points et tirets, comme dupont.carburant. Les noms qui commencent par kneedeck. sont réservés. Un module de même id remplace l'ancien.
nameSon nom, en un texte ou par langue.
descriptionFacultatif. Ce qu'il fait, en un texte ou par langue.
versionSa version, 20 caractères au plus.
authorSon auteur, 60 caractères au plus.
entryFacultatif. Sa première page, index.html si le champ n'est pas renseigné.
languagesFacultatif. Les langues de ses textes, par code : fr, en, pt-BR.
gamesFacultatif. Les jeux pour lesquels il est fait.
permissions.storageIl garde ses données, pour chaque profil (1 Mo au plus).
permissions.internetLes sites qu'il contacte, par leur nom, 10 au plus. Aucun autre site ne lui répond.
permissions.gameDataLes données de jeux qu'il lit : starcitizen, elite, dcs.

Kneedeck montre au joueur ce que le module demande avant de l'installer.

3. La page

La page charge l'aide de Kneedeck, qui lui donne l'objet Kneedeck :

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="carburant.css">
<script src="../kneedeck-module.js"></script>
<script src="carburant.js" defer></script>
</head>
<body>…</body>
</html>
L'objet KneedeckCe qu'il fait
Kneedeck.ready((k) => …)Appelé quand le module est prêt : k.language, k.data (ses données gardées), k.preview (vrai dans l'aperçu de l'écran Onglets).
Kneedeck.text({ fr: "Démarrer", en: "Start" })Le texte dans la langue du joueur, ou sinon en anglais.
Kneedeck.save(données)Garde une valeur JSON pour le profil affiché. Demande storage.
Kneedeck.on("data", (données) => …)Ses données ont changé dans l'autre fenêtre, ou le profil affiché a changé.
Kneedeck.on("language", (code) => …)Le joueur a choisi une autre langue.
Kneedeck.on("page", (pas) => …)La commande « page suivante » (1) ou « page précédente » (-1) du joueur.
Kneedeck.games, Kneedeck.on("games", …)Les données des jeux demandées dans la carte, et chaque changement.
Kneedeck.keyboard(vrai ou faux)Prend le clavier au jeu, ou le lui rend, pendant que l'onglet est affiché. Un champ de texte le prend tout seul quand on le touche, et Échap le rend.
Kneedeck.now()L'heure en millisecondes, celle du PC sur tous les appareils : pour un minuteur qui doit lire la même chose sur le PC et le smartphone.

Les couleurs de la tablette arrivent en variables CSS : --kd-paper, --kd-ink, --kd-rule, --kd-under, --kd-accent.

4. Les données des jeux

Kneedeck.games.starcitizen : found, running, environment, version, handle, shard, location (le code du jeu), place (le nom lisible, ou null), contracts (avec leurs objectives), notifications.

Kneedeck.games.elite : found, running, commander, ship, shipName, shipIdent, system, body, station, docked, landed, fuel, fuelCapacity, cargo, cargoCapacity, cargoItems, credits, missions.

Kneedeck.games.dcs : flying, paused, aircraft, coalition (1 rouge, 2 bleu), mission (nom, carte, date, briefings, météo), model (l'heure de mission), toldAt, messages. Il faut que le joueur ait relié Kneedeck à DCS, dans l'écran Onglets.

5. Ce qu'un module ne peut pas faire

6. L'essayer

Dans Kneedeck : Modules, puis « Ajouter un module depuis un dossier… » ou « … depuis un zip… ». Ensuite « Ajouter en onglet ». Pour une nouvelle version, ajoute-le de nouveau : il remplace l'ancien.

7. Exemples à télécharger

8. Le partager

Dépose-le dans le catalogue des modules : connecte-toi à Mon compte avec ton adresse mail, puis « Déposer un module » avec son zip, ses langues, ses jeux et jusqu'à 4 photos.

Ce qui fait accepter un module :

En cas de refus, le mail en donne la raison. Un module refusé peut être déposé de nouveau, amélioré.

Tu peux aussi donner son zip : l'autre joueur l'ajoute depuis un zip.