J’avais d’abord envisagé d’intégrer en version 1.7 uniquement le paramétrage de la taille de la réserve par défaut, toutefois, après 2 semaines sur le Google Play, je dénombre une centaine d’installation et surtout les premiers retours utilisateurs. Dont 5 commentaires, mais avec une demande récurrente : la prise en compte de la Règle des six.
A Shadowrun, les personnages ont une caractéristique appelée Chance (Edge en vo). La Chance sert à améliorer ses … chances!… de réussir un test, et ce de plusieurs manières.
La première manière qui nous intéresse ici est quand le joueur déclare vouloir utiliser un point de Chance avant de lancer les dés. Dans ce cas on ajoute son maximum de chance à la réserve de dés et on applique la Règle des six.
La seconde manière qui nous intéresse aussi est quand le joueur déclare vouloir utiliser un point de Chance après avoir lancé les dés. Dans ce cas il lance autant de dés que son maximum de chance et on applique la Règle des six uniquement pour ce jet supplémentaire. Les succès viennent s’ajouter aux succès obtenus au test.
On en vient au point essentiel : la Règle des six
Le principe est simple, sur un jet où la Règle des six s’applique, tous les dès donnant un 6 sont comptés comme un succès (normal) puis relancés. S’ils donnent encore des 6, on ajoute un nouveau succès et on les relance encore. Comme sur un jet normal, les 5 donnent aussi un succès mais ne permettent pas de relancer. Pour le calcul des Complications, on considère la moitié de la réserve de dés, donc les relances ne comptent pas dans ce calcul. L’algorithme est classique et n’a posé aucune difficulté.
En terme d’interface, j’ai du ajouter une case à cocher (Checkbox) « Chance » pour que l’utilisateur puisse signaler s’il s’agit d’un test où la règle des 6 s’applique ou pas. L’ajout de cette case m’a permis de tester d’avoir deux layouts (rendu d’interface) différent en fonction de l’orientation de l’appareil. En effet, j’ai voulu qu’en paysage la checkbox ne soit pas en dessous du champs de saisie des dés mais sur la même ligne. Chose qui est impossible en portrait, la case sortant de l’écran.
En fait il n’y a aucune difficulté à faire des interfaces différentes suivant l’orientation (et même suivant tout un tas d’autres paramètres comme la langue ou la résolution de l’écran) : Il suffit de déclarer de nouveaux dossiers layout sur le même principe qu’on a pu voir dans le billet localisation pour la langue.
Désormais mon arborescence se présente ainsi :
|_res | |_layout | | |_shadowrun_dice.xml <= mon layout par défaut | |_layout-land | | |_shadowrun_dice.xml <= le layout si l'appareil est en mode portrait
Comme je disais, outre l’orientation de l’écran, il est possible de spécifier d’autres critères. Ceci marche pour chaque type de ressources, pas seulement les values et les layouts. Le format à appliquer est le suivant : <resources_name>-<qualifier>
. On peut spécifier autant que qualifier que l’ont veut, il suffit de les ajouter les uns après les autres en les séparant avec un tiret « -« . On trouve la liste complète sur le guide de développement android : http://developer.android.com/guide/practices/screens_support.html#qualifiers
[…] SRDExtendedActivity, je pense aussi aux différences que je peux déjà avoir entre le layout et le layout-land et sur la façon d’en profiter pour optimiser ceci […]