Aller au contenu

tilttek/dice-bundle

✅ publié

Des dés pour une application Symfony : configurés, lancés, gardés pour être rejoués, vérifiés dans les formulaires et affichés dans les gabarits.

tilttek/dice-bundle intègre tilttek/dice à Symfony. Il construit la bibliothèque à partir de la configuration : ses limites, les dés personnalisés de l'application, les notations d'autres langues. Il lance les dés à partir d'une source sûre, garde les lancers rejouables dans un journal Doctrine et les rejoue. Il garde les macros d'un site, d'une table et d'un membre, et produit des lancers vérifiables. Il fournit un champ de formulaire avec sa contrainte, des filtres et des fonctions Twig, et un détail accessible d'un lancer. Un point d'extension habille les dés d'un membre de l'apparence d'un jeu qu'il possède. Le bundle n'anime pas les dés, ne dessine pas la page du lanceur, ne décide pas qui peut lancer et ne possède aucun jeu de dés : l'application s'en charge.

Il s'adresse aux applications Symfony qui lancent des dés pour leurs membres : une page de lanceur de dés, un forum de jeu par messages, une fiche de personnage, une table de jeu. Une application sans Symfony prend tilttek/dice seul.

C'est un AbstractBundle sur Symfony 8.2 avec Doctrine ORM 3. Le type de formulaire, la contrainte et l'extension Twig ne sont enregistrés que si Symfony Form, Validator et Twig sont installés. Un membre est une ResourceReference opaque de phil/resource : le bundle ne lit ni nom, ni adresse, ni compte.

La conception est sobre : la classe du bundle lit la configuration, DiceServices enregistre les services, DiceRolls est le service que l'application appelle, DiceMacros garde et résout les macros, RecordedRoll est une ligne du journal et DiceAppearance est le port qui habille les dés d'un membre.

État

PartieÉtat
Configuration : limites, dés personnalisés, notations, apparence, domaine de traduction, stockage, gestionnaire d'entitésImplémentée et testée
DiceRolls : analyse, lecture de DiceParser, écriture, traduction, lancer, lancers rejouables, rejeu, lancers vérifiables et vérification, lancers d'un membre et leur effacementImplémenté et testé
Journal des lancers rejouables dans Doctrine ou en mémoireImplémenté et testé
DiceMacros : macros d'un site, d'une table et d'un membre, nommées par jeton, dans Doctrine ou en mémoireImplémenté et testé
Point d'extension DiceAppearanceImplémenté et testé
Contrainte DiceExpression et champ DiceExpressionTypeImplémentés et testés
Twig : dice_notation, dice_dialect, dice_roll, dice_roll_detail, dice_textImplémenté et testé
Dialectes ajoutés par étiquetteImplémentés et testés

Documentation

DocumentCe qu'il couvre
InstallationPrérequis, enregistrement du bundle, table du journal.
ConfigurationChaque option de tilttek_dice, avec sa valeur par défaut.
Lancer les désDiceRolls : lancers simples, rejouables et vérifiables, le journal, l'effacement des lancers d'un membre.
MacrosDiceMacros : les rayons d'un site, d'une table et d'un membre ; définir, résoudre et effacer des macros.
Formulaires et validationDiceExpressionType et la contrainte DiceExpression.
GabaritsLes filtres et fonctions Twig, le détail d'un lancer, ses classes et ses mots.
Points d'extensionDiceAppearance, les dialectes par étiquette, le port du journal.
ExceptionsCe que le bundle lève.
TestsLes tests du bundle, et comment tester une application qui lance des dés.
RéférenceChaque type du bundle, avec son rôle.

Démarrage rapide

composer require tilttek/dice-bundle
# config/packages/tilttek_dice.yaml
tilttek_dice:
    custom_dice:
        coin:
            faces:
                - { id: heads, label: 'Heads', value: 1, shape: circle }
                - { id: tails, label: 'Tails', value: 0, shape: square }
use Tilttek\DiceBundle\Application\DiceRolls;

public function __invoke(DiceRolls $dice): Response
{
    $recorded = $dice->rollReplayable('4d6kh3 + 1d{coin}');

    return $this->render('dice/roll.html.twig', ['replay' => $dice->replay($recorded->id())]);
}
{{ dice_roll_detail(replay.result) }}

Prérequis

PHP 8.5 ou plus récent, Symfony 8.2, Doctrine ORM 3.7, tilttek/dice et phil/resource 0.1. Symfony Form, Validator, Twig et Translation sont facultatifs.

Contribuer

Les contributions sont les bienvenues sur le monodépôt de PHIL : lisez le guide de contribution et le code de conduite. Signalez une vulnérabilité en privé, comme l'explique la politique de sécurité, jamais dans un ticket public.

Licence

MIT, © Philippe Gamache, doing business as Le Gnome Archiviste; a Tilttek project. Voir LICENSE.