Petites retouches du panneau "Statut"

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Petites retouches du panneau "Statut"

Message 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 ! :D

Image
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Avatar de l’utilisateur
Teylae
Messages : 152
Inscription : 15 oct. 2007, 20:52

Re: Petites retouches du panneau "Statut"

Message 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é)

:roll:
Avant de vous demander ce que les autres peuvent faire pour vous... demandez vous ce que vous pouvez faire pour les autres !!!

Avatar de l’utilisateur
XlurP
Messages : 798
Inscription : 20 mars 2006, 13:31
Localisation : ici

Re: Petites retouches du panneau "Statut"

Message 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
[Nati @ 1]: J'aime l'humour nain :)
[Nati @ 1]: Et pis au moins il est drôle, lui

---
O : 3/5x80, S -20
TGT : 727

E : -8
A : -6
AB : 79%

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: Petites retouches du panneau "Statut"

Message par TonyFlow »

Teylae a écrit :quelle magnificence ! :):):)
Oui, je sais. Merci, merci... 8)
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é)

:roll:
...

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à :
Image

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. :evil:
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: Petites retouches du panneau "Statut"

Message 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 !
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Avatar de l’utilisateur
XlurP
Messages : 798
Inscription : 20 mars 2006, 13:31
Localisation : ici

Re: Petites retouches du panneau "Statut"

Message 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)
[Nati @ 1]: J'aime l'humour nain :)
[Nati @ 1]: Et pis au moins il est drôle, lui

---
O : 3/5x80, S -20
TGT : 727

E : -8
A : -6
AB : 79%

Ackak
Messages : 7348
Inscription : 18 déc. 2005, 19:31

Re: Petites retouches du panneau "Statut"

Message 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é.
Celui qui apprend quelque chose de moi enrichit son savoir sans réduire le mien, tout comme celui qui allume sa chandelle à la mienne se donne de la lumière sans me plonger dans l'obscurité.
-- Thomas Jefferson

Avatar de l’utilisateur
Palladio
Messages : 380
Inscription : 17 janv. 2008, 22:51
Localisation : Ici et Ailleurs (surtout ailleurs)

Re: Petites retouches du panneau "Statut"

Message par Palladio »

Je me sens vraiment tout bête la, j'y comprend rien du tout :roll:

Mais super boulot Tony :D
"Tout ce qui a commencé doit finir."

"Forever trusting who we are... and nothing else matters..."

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: Petites retouches du panneau "Statut"

Message 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).
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Ackak
Messages : 7348
Inscription : 18 déc. 2005, 19:31

Re: Petites retouches du panneau "Statut"

Message par Ackak »

Patch actif sur le svn (révision 1766).
Celui qui apprend quelque chose de moi enrichit son savoir sans réduire le mien, tout comme celui qui allume sa chandelle à la mienne se donne de la lumière sans me plonger dans l'obscurité.
-- Thomas Jefferson

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: Petites retouches du panneau "Statut"

Message 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);
 }
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Ackak
Messages : 7348
Inscription : 18 déc. 2005, 19:31

Re: Petites retouches du panneau "Statut"

Message par Ackak »

Patch mis en place sur le svn.
Celui qui apprend quelque chose de moi enrichit son savoir sans réduire le mien, tout comme celui qui allume sa chandelle à la mienne se donne de la lumière sans me plonger dans l'obscurité.
-- Thomas Jefferson

Verrouillé