Page 1 sur 1
Petites retouches du panneau "Statut"
Publié : 21 sept. 2009, 09:12
par TonyFlow
Juste quelques légers détails sur l'affichage des compétences dans la fenêtre Statistiques / Statut :
- le test de division par zero sur le cacul des pourcentages est inutile, puisqu'il se fait sur des valeurs qui ne sont plus utilisées (le pourcentage est calculé avec le niveau de base de la compétence et non son niveau courant, ce qui rend logiquement la division par zéro impossible).
- ce test inutile provoque en plus un effet indésirable : une compétence "boostée" verra son pourcentage à 0, plutot que de laisser l'indication de progression à partir du niveau normal (de base, ie non boosté)
- coté présentation des niveaux des compétences, les espacements ne sont pas assez nombreux pour bien aligner de grands nombres... l'agencement peut donc être amélioré pour garder des valeurs parfaitement alignées même avec des niveaux à 3 chiffres et des compétences jusqu'à 9 chiffres pour l'xp (contre seulement 2 et 6 pour que l'alignement reste actuellement).
Je propose donc ce petit
patch pour arranger le calcul et les espacements (compatible v1.6.0.1 et dernier svn).
En cadeau une illustration comparative pour démontrer la formidable amélioration obtenue !

Re: Petites retouches du panneau "Statut"
Publié : 21 sept. 2009, 09:39
par Teylae
quelle magnificence !

:):)
il ne te reste plus qu'à faire la même chose pour le tableau en bas à gauche

(niveau nutritif, pv, pm et capacité)

Re: Petites retouches du panneau "Statut"
Publié : 21 sept. 2009, 10:55
par XlurP
tu peut me refaire la démonstration pour la division par zéro inutile stp, j'ai un doute sur la validité de tes arguments
Re: Petites retouches du panneau "Statut"
Publié : 21 sept. 2009, 11:02
par TonyFlow
Teylae a écrit :quelle magnificence !

:):)
Oui, je sais. Merci, merci...
Teylae a écrit :il ne te reste plus qu'à faire la même chose pour le tableau en bas à gauche

(niveau nutritif, pv, pm et capacité)

...
Grrrr
Ouais bon c'est vrai... et après tout, autant allez jusqu'au bout, aimons la perfection !
J'y avais bien pensé, mais j'avais renoncé car c'était moins évident... l'affichage passe par des fonctions qui sont les mêmes que pour les attributs et nexus donc ça semblait pas évident à modifier que pour ce cas :/
Mais bon, soyons courageux, voilà :
Non ce n'est pas retouché avec Gimp, voici le
patch
Je me suis rendu compte que les fonctions draw_stat, draw_statf, draw_skills passaient toutes un 1er paramètre "len" énigmatique puisqu'au final, la fonction draw_stat_final ne l'utilise pas !
Je suppose que son intérêt serait justement de pouvoir adapter la longueur de la première colonne au cas par cas. J'ai donc adapté ces fonctions pour que ce paramètre soit utilisé.
Par contre, la valeur envoyée était tout le temps 24 ce qui n'allait pas... et là vous m'excuserez mais pour le coup j'ai renoncé à mettre des "#ifndef ENGLISH" pour chaque modif de largeur.

Re: Petites retouches du panneau "Statut"
Publié : 21 sept. 2009, 11:11
par TonyFlow
XlurP a écrit :tu peut me refaire la démonstration pour la division par zéro inutile stp, j'ai un doute sur la validité de tes arguments
Bien sur, voici donc le calcul de pourcentage :
Code : Tout sélectionner
pourcent = round(((exp-exp_lev[lvl->base])*100)/(exp_next-exp_lev[lvl->base]));
Le risque de division par zero arriverait donc si exp_next = exp_lev[lvl->base]
Or normalement, le nombre d'xp actuel ne peut pas être égal au nombre d'xp du prochain niveau... sinon ce ne serait plus le prochain niveau
Auparavant le problème se posait car le calcul prenait le niveau courant, c'est à dire celui qui prend en compte les boosts. Dans ce cas, à la dernière minute, on avait bien niveau courant = niveau suivant.
Mais à présent... A part durant une fraction de seconde, si on réalise pile le nombre d'xp pour atteindre le niveau suivant, et que par malheur l'affichage de cette fenêtre opère le calcul alors que la stat du niveau n'est pas encore montée (mais que celui du nombre d'xp aurait été changé lui ^^') ? Ca reste difficile à imaginer...
Enfin, si on veut être parano est laissé un test ça me dérangera pas non plus. Par contre faudrait penser à mettre le bon !
Re: Petites retouches du panneau "Statut"
Publié : 21 sept. 2009, 11:40
par XlurP
si coté serveur l'envoi des infos est séquentiel, dans le même thread et sans risque d'inversion possible alors on pourrait virer le test mais faut etre sur de l'implémentation coté serveur.
D'expérience le "ça ne devrait arriver que très rarement, un cas sur un milliard dans des conditions de laboratoire" se transforme souvent en "j'ignorais que ce test servait aussi a ..."
(en plus le un fraction de seconde arrive de plus en plus souvent avec nos machines octo core a 4GHz)
Re: Petites retouches du panneau "Statut"
Publié : 21 sept. 2009, 12:56
par Ackak
Par contre, la valeur envoyée était tout le temps 24 ce qui n'allait pas... et là vous m'excuserez mais pour le coup j'ai renoncé à mettre des "#ifndef ENGLISH" pour chaque modif de largeur.
Si tu ne le fais, je serais obligé de le faire de toute façon, car la fusion avec le client US devient un vrai casse-tête sans bien délimité nos modifications.
Pour le test de la division par zéro, autant le faire (sur les bonnes valeurs maintenant :p), cela ne va pas ralentir le client et permettre de mieux le sécurisé.
Re: Petites retouches du panneau "Statut"
Publié : 21 sept. 2009, 13:01
par Palladio
Je me sens vraiment tout bête la, j'y comprend rien du tout
Mais super boulot Tony

Re: Petites retouches du panneau "Statut"
Publié : 21 sept. 2009, 19:04
par TonyFlow
Ackak a écrit :Si tu ne le fais, je serais obligé de le faire de toute façon, car la fusion avec le client US devient un vrai casse-tête sans bien délimité nos modifications.
Vi je sais, tu auras remarqué que j'ai pris l'habitude de toujours mettre les #ifdef dans mes patchs normalement... D'où la notification de cette exception, car là sur la dernière modif (à cause de Teylae ça !) c'était de trop ;')
* prenant pitié pour le petit kultar * Allez hop, j'ai mis à jour mon patch pour qu'il soit tout bien comme il faut !
Donc toutes les modifs sont dans les "#ifdef ENGLISH", donc vu leur nombre j'ai carrément duppliqué le corps de la fonction display_stats_handler.
Et tout le monde sera rassuré de savoir qu'un test vérifie que la division par zero ne sera faite en aucun cas !
Nouvelle version du
patch disponible à la même adresse (écrase le précédent).
Re: Petites retouches du panneau "Statut"
Publié : 21 sept. 2009, 19:18
par Ackak
Patch actif sur le svn (révision 1766).
Re: Petites retouches du panneau "Statut"
Publié : 22 sept. 2009, 00:28
par TonyFlow
J'ai trouvé par hasard comment faire plus élégament un truc dont j'avais eu besoin sur ce patch.
Je propose donc d'apporter cette modification :
Code : Tout sélectionner
--- stats.old.c 2009-09-21 18:47:16.000000000 +0200
+++ stats.c 2009-09-22 00:22:20.000000000 +0200
@@ -681,9 +681,7 @@
#ifdef ENGLISH
safe_snprintf(str,sizeof(str),"%-15s %s",name,value);
#else //ENGLISH
- char motif[10];
- safe_snprintf(motif,sizeof(motif),"%%-%is %%s",len);
- safe_snprintf(str,sizeof(str),motif,name,value);
+ safe_snprintf(str,sizeof(str),"%-*s %s",len,name,value);
#endif //ENGLISH
draw_string_small(x, y, (unsigned char*)str, 1);
}
Re: Petites retouches du panneau "Statut"
Publié : 22 sept. 2009, 12:55
par Ackak
Patch mis en place sur le svn.