See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: [C++] Fonctions à N arguments  (Read 38809 times)

0 Members and 2 Guests are viewing this topic.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #100 - 16 August 2007, 04:46:52
:wor:

En tout cas c'est super d'avoir un compagnon de prog la nuit... ;)
T'a reflechi au modele ?

Dan


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 25
  • Criiii Crii Crii
Reply #101 - 16 August 2007, 04:53:50
Vi .... ça se dessinne.
J'ai quand même envie que ce soit un peu SF .... pas trop quand même ...
mais juste ce qu'il faut pour se faire plaisir sur la 3D ....

Et j'ai repensé au coup de l'énergie !
Pourquoi pas des Payloads compatibles avec le cargo du DGIV.
Il y a moyen de faire des trucs rigolos, du genre, t'as pas envie de te docker,
Zou release du Payload, il détecte l'Irridium .... Il balance un cable et yapluka
faire venir le bidule à la moulinette !

Dans le genre n'importe nawak c'est pas mal non ! :lol:

Par contre, sans rire, c'est chouette les structures ...
Difficile de faire plus clair sur une fonction !!!

      Bascule[MotCle].Etat=EtatInitial;
      Bascule[MotCle].iBmpPosX=SourceBitmapX;
      Bascule[MotCle].iBmpPosY=SourceBitmapY;
      Bascule[MotCle].AidPosZoneX=PositionPanelX;
      Bascule[MotCle].AidPosZoneY=PositionPanelY;



Message modifié ( 16-08-2007 04:58 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #102 - 16 August 2007, 05:03:09
Quote
picto a écrit:
Pourquoi pas des Payloads compatibles avec le cargo du DGIV.
;

Bonne idée, juste la taille à accorder et c'est bon... On monte des "piles" en DGIV
on le dock et en route pour le grand voyage.

Dan


Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #103 - 16 August 2007, 05:06:28
Quote
picto a écrit:
Vi .... ça se dessinne.
J'ai quand même envie que ce soit un peu SF .... pas trop quand même ...

Une touche de réalisme serait pas mal:

-Ya pas d'air on s'en fout il est pas atmo
-Il a probablement été monté par petit bout
-probleme de l'apesanteur  sur plusieurs mois (année?)
-probleme des radiations
-grosse reserve d'energie (pile, carburant ?)
-plusieurs type de moteur ? 1 chimique pousse fort 2 longue durée faible poussée ?

Ca va rocker ton truc !!! Faut juste le FINIR hein ! ;)

Dan


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 25
  • Criiii Crii Crii
Reply #104 - 16 August 2007, 05:10:51

Vi, je sais que c'est le plus difficile ça .... finir un truc ! :sick:

Je viens de tilter sur un truc ....
Une fois ça fait ....
Yapluka ! Tout est prêt pour faire les systèmes sans plus avoir à
se préoccuper de problèmes d'affichages !!!

:wor:


Code: [Select]
InitBascule(ANTENNA_POINT,2324,34,345,FALSE,PANEL0);
InitBascule(TRAIN_ON,343,334,445,TRUE,PANEL1);

Code: [Select]
SetValueBascule(MECHANICAL_GEAR,FALSE);
SetValueSelecteur(PROBES_DOOR5,TRUE);

Code: [Select]
void SetValueBascule(int NoBouton,BOOL Etat)
{
     // controle validité de tout parametres
     if(NoBouton&lt0||NoBouton&gtFIN_BOUTON_BASCULE-1||Etat&gt1||Etat&lt0)
          return;

     Bascule[NoBouton].Etat=Etat;
     oapiTriggerRedrawArea(Bascule[NoBouton].NoPanel,AID_BOUTON+NoBouton);
}


Pic

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 25
  • Criiii Crii Crii
Reply #105 - 16 August 2007, 07:08:05
:hot:

C'est le pied en Runtime !!!

Suffit de mettre le son dans la fonction en prime et on a plus à s'occuper de rien !!! :wor:
En plus, je vois bien comment faire des petites animations par des fonctions
qui seront appellées en fonction d'événements. Par exemple pour les doubles diodes,
une fonction qui fait les deux appels au trigger automatique en alternance en fonction
de deux autres données, délai et rapidité par exemple !


SetEtatDiode(DIODE_CHECK_ELEC, true);



Message modifié ( 16-08-2007 07:17 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #106 - 16 August 2007, 13:11:13
Quote
picto a écrit:
:hot:

C'est le pied en Runtime !!!

Suffit de mettre le son dans la fonction en prime et on a plus à s'occuper de rien !!! :wor:
SetEtatDiode(DIODE_CHECK_ELEC, true);

Mais c'est génial tout ca :hot:

Conseil de tonton Dan: pour plus de variété tu peut rajouter une parametre pour varier un peut la frequence de
maniere a avoir des "click" legerement different... ou alors un parametre qui joue un autre son (1=petit click 2=
chtongu 3=clack) ou alors les ddux en même temps. Les boutons s'initialisent par defaut avec un son et une
frequence , reste juste a modifier certains.

Ensuite, tu rajoute ce(s) parametre dans la fonction Init (qui devient un peux grosse) mais tu peut aussi rajouter
toute sorte de fonction pour toucher aux parametre plus tard ou séparement voir y toucher directement je demontre:


Code: [Select]
InitBascule(ANTENNA_POINT... FALSE, PANEL0);  
InitBascule(TRAIN_ON,...       TRUE, PANEL1);  
InitBascule(ANTENNA_POINT,... FALSE, PANEL0);  
InitBascule(TRAIN_ON,...       TRUE, PANEL1);  
InitBascule(ANTENNA_POINT,... FALSE, PANEL0);   SetBoutonClick(ANTENNA_POINT,13456);
InitBascule(ANTENNA_POINT,... FALSE, PANEL0);   Bascule[ANTENNA_POINT].Freq=13456;
InitBascule(ANTENNA_POINT,... FALSE, PANEL0);   Bascule[ANTENNA_POINT].NoSound=PETITCLICK;
InitBascule(TRAIN_ON,...       TRUE, PANEL1);  


Ou alors en le séparanat bien des autres parametres ?



oublie pas qu'avec une declaration de fonction qui donne des parametres par defaut tu peut appeller la fonction de deux maniere avec des parametres optionnel:

Code: [Select]
// declaration:
void InitBascule(...., int Frequence=11000,int NoSon=PETITCLICK);  

//utilisation normale, prend les params par defaut de la declaration:
InitBascule(TRAIN_ON,...       TRUE, PANEL1);  

// alternativement change les params par defaut:
InitBascule(TRAIN_ON,...       TRUE, PANEL1,13456,PETICLICK);  


Genre de truc qui coutent pas beaucoup en prog ni en temps et qui font la différence: le détail.


Dan



Message modifié ( 16-08-2007 13:23 )


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 25
  • Criiii Crii Crii
Reply #107 - 16 August 2007, 16:21:45
Bonne idée ... mais que veux tu dire ?

Un son légèrement différent par type de boutons identiques ?
Ou un son par type de boutons ? Si c'est le second cas, il y a encore plus simple.
C'est d'appeller le son dans les fonctions de trigger. Comme j'en ai déjà cinq, j'ai
déjà cinq sons différents possibles.

La fonction d'init un peu grosse c'est pas très grave je pense.
La déclaration dans classcap reste quand même lisible ....
J'apprend encore un truc là .... j'avais pas encore fait gaffe qu'on pouvait
donner des paramètres PAR DEFAUT à une fonction de cette façon :sick:

Code: [Select]
void InitBascule(...., int Frequence=11000,int NoSon=PETITCLICK);
" Grooiinnn groin "



Message modifié ( 16-08-2007 16:38 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #108 - 16 August 2007, 16:54:16
Quote
picto a écrit:
Bonne idée ... mais que veux tu dire ?
Un son légèrement différent par type de boutons identiques ?
Ou un son par type de boutons ? Si c'est le second cas, il y a encore plus simple.

A toi de voir, je pense par zone ou categorie, en bas a droite tout les bascule "life support"
le meme son mais en haut a gauche (sur une partie differente) les bascule on legerement
un autre frequence... etc etc...

Un truc plausible, sur les grosse console les boutons font souvent des bruit différent
suivant ou ils sont fixé....

Dan


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 25
  • Criiii Crii Crii
Reply #109 - 16 August 2007, 17:20:02

Je vais essayer de jouer avec les sons, je trouve que c'est un des trucs les moins
chers et qui donne vraiment un plus en réalisme...
Pour l'instant, c'est à la Hussarde .... ChargeEtJoue ;)
Mais chaque chose en son temps  .... j'ai déjà bien du mal sur les affichages !

En parlant de détails, j'ai un petit souci esthétique sur les boutons sélecteurs. ( ronds )
Blittés sur un carré évidamment. Mais comme la lumière n'est pas du tout la même en haut
et en bas du Panel, les carrés finissent par se voir plus on descend ...

J'ai tenté le coup du blanc sur la ressource, mais malheureusement, ça rend aussi le
background transparent. J'ai lu dans la doc que l'on peut changer la couleur par défaut
qui va devenir transparente, mais, a t'on le choix ? Une couleur pour le background et une autre
pour les petites surfs ? :wonder:


Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #110 - 16 August 2007, 18:08:31
probleme... regarde du coté de color key ou un truc dans le genre dans la doc...
Sinon faudra des bouton pour le haut et le bas...

Dan


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 25
  • Criiii Crii Crii
Reply #111 - 16 August 2007, 18:38:17
Quote
Sinon faudra des bouton pour le haut et le bas...

Et donc un argument de plus dans la fonction d'initialisation des sélecteurs ?
Tu vas voir qu'à force de cas particuliers, ça va finir par donner des déclarations
de 25 lignes encore pires à lire que les oapiregister :lol:

Mais en fait, c'est sûr que c'est possible en y réfléchissant, Horizon.cpp le fait.
Le texte et les motifs en surimpression sur les couleurs du fond proviennent
d'une bitmap sur fond noir.

Vi c'est ça ....
srf[3] = oapiCreateSurface (LOADBMP (IDB_HORIZON));     oapiSetSurfaceColourKey (srf[3], 0);
oapiSetSurfaceColourKey (SURFHANDLE surf, DWORD ck)  ck colour key (0xRRGGBB)
0xRRGGBB == 0 sur le coup de IDB_HORIZON c'est bien le noir qui est devenu transparent sans
 bousiller le background.
Avec ce truc écrit au bout de la surf
   oapiBlt (surf, srf[3], 0, 0, 0, 0, 96, 96, SURF_PREDEF_CK);

J'ai l'impression qu'il vaut mieux séparer les boutons qui font ce genre de gymnastique sur une ressource à part.



Message modifié ( 16-08-2007 19:17 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #112 - 16 August 2007, 20:23:40
Quote
picto a écrit:
J'ai l'impression qu'il vaut mieux séparer les boutons qui font ce genre de gymnastique sur une ressource à part.

Ouais car colourkey fera pour toute la surface... donc encôôôre un parametre pour initbuton... :lol:

Bon faut pas pousser non plus... si t'a la place sur la surface moi je ferais simplement un bouton
séparé, surtout que les transparences ne gerent pas l'antialiasing au final ce *risque* de donner
pas génial non plus pour l'effort.

Sinon tu fait une sorte de support carré a ce bouton... comme si il était enchassé d'un seul tenant avec
son support,plus facile pour la maintenance...

Enfin bref.. on va pas ce laisser abattre par un bouton quoa...

Dan


Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #113 - 16 August 2007, 20:24:48
On est bien dis donc sur ce chat room, c'est sympa ici, on reviendra ;)

Dan


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 25
  • Criiii Crii Crii
Reply #114 - 16 August 2007, 20:50:00
Quote
encôôôre un parametre pour initbuton

Tu vas voir que finalement, tu vas continuer à adôôôrer
le oapiregister tel qu'il se présente d'habitude.

Font chier ces sélecteurs à la longue ...
J'ai voulu jouer au malin sur les courses ...
Y'en a un qui va de 45 degre antihoraire à +90
Un autre de -45 à +135 ... etc ...
Tout va bien pour du ++ ou du --
Sauf .... quand la course passe par les extrêmes ....
Chui là avec mes ptits papiers ...
Si 0 ....7
Si 7 ...6
Si <6 .... --
Et pis quand on reviens dans l'autre sens .... :gratt: :gratt:
Si 6 ... 7
Si 7 ... 0
Prochain panel, c'est Poussoirs en REDRAW NEVER
Et ptêt même sans mouse event ...
Et sans register tiens ... pourquoi pas ! :wonder:

Pi tiens, j'tente le coup ... :lol:
Kadô pour celui qui me fait passer une variable
de 1 à 0 puis à 6 puis à 7
puis
de 6 à 7 à 0 à 1
Avec le moins de ligne de C++ possible !

C'est passionant ... Ce que j'raconte non ! :badsmile:
C'est vrai que ça fait un peu chat room ... bafff .... ça défoule ...
T'as plein de boutons sur la figure :badsmile:
T'as réussi à faire entrer le gazoline dans les navions ?



Message modifié ( 16-08-2007 21:03 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #115 - 16 August 2007, 21:28:22
pas sur de comprendre... ! :gratgrat:

Mais une indication il te faut MOUSE_LEFT ET MOUSE_RIGHT

Après il faut utiliser deux macro très util: max et min

Si tu connais pas max(chiffre1,chiffre2) te retourne le plus grand et min (chiffre1,chiffre2) te retourne
le plus petit, indispensable pour les limites justement...

Donc en pseudo code:

Code: [Select]
if(MOUSE_RIGHT)
{
     Position=min(Position+1,3); // 3 c'est la limite maximum que peut prendre position.
}
if(MOUSE_LEFT)
{
     Position=max(Position-1,-3); // -3 c'est la limite minimum que peut prendre position.
}

Donc quand tu presse mouse right le selecteur incrementera jusqu a 3 et s'arretera la.
Et mouse left ce sera l'inverse il decrementera jusqu'a -3 sans aller en dessous.


min et max c'est super util pour limiter un chiffre par exemple pour le volume d'orbiter sound
soit on rejette un parametre invalide

Code: [Select]
void SetVolume(int Volume)
{
     if(Volume<0||Volume>255
           return;
}

Mais plus sympa encore, on l'accepte mais on le corrige automatiquement pour qu'il soit dans les limite
avec min et max: Donc si on rentre -10 il sera a zero et si on rentre 3456 il sera à 255 après min max.

Code: [Select]
void SetVolume(int Volume)
{
     Volume=max(min(Volume,255),0);   // volume sera obligatoirement >=0 et <=255
 }

Si tu pige pas cette ecriture je peux decomposer, c'est equivalent a:


Code: [Select]
void SetVolume(int Volume)
{
     Volume=min(Volume,255);   // corrige a 255 si plus grand
     Volume=max(Volume,0);   // corrige a 0 si plus petit
 }

En dernier si mouseleft et mouseright te parle pas regarde comment marchent les selecteurs sur DGIV...
sinon j'ai pas pigé ton prob ? :re-gratgrat:


Si tu veux dire que les position ne ce suivent pas genre ca passe de 7 a 5 en tournant d'un cran ce serait idiot ;)
Le DGIV sur 3 position il fait -1,0,1  mais 0,1,2 marcherais aussi...

Voila

Dan



Message modifié ( 16-08-2007 21:31 )


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 25
  • Criiii Crii Crii
Reply #116 - 16 August 2007, 22:22:15
Je rigolais :sick:
Ca fonctionne .... :sick:
Mais tant mieux, j'ai appris un truc sur le min max, pratique effectivement.
J'ai l'impression que le C++ offre pas mal de trucs sympas comme ça ...
Comme les raccourcis, etc .... et sûrement tout un tas de trucs que je n'imagine pas encore !
Ca pourrait être pas mal d'ouvrir un fil ou chacun dépose ses petites découvertes pour écrire plus court ....



Le Zero des Bitmaps est sur la marque rouge ...
Vu que je me suis amusé à disposer les sélecteurs dans tous les sens,
et qu'ils blittent tous sur la même série sur la bitmap dans certains cas
ça passait forcément par le zéro ...

Dans le meilleur des cas , ça donne ça ...

Code: [Select]
case AID_BOUTON_SELECTEUR + SELECTPROBE:
if (event & PANEL_MOUSE_LBDOWN && Selecteur[SELECTPROBE].Etat>Ant90Deg )  
{
Selecteur[SELECTPROBE].Etat--;
SetEtatSelecteur(SELECTPROBE,Selecteur[SELECTPROBE].Etat);
}
if (event & PANEL_MOUSE_RBDOWN && Selecteur[SELECTPROBE].Etat<Hor125Deg)  
{
Selecteur[SELECTPROBE].Etat++;
SetEtatSelecteur(SELECTPROBE,Selecteur[SELECTPROBE].Etat);
}
return true;

Et dans le pire

Code: [Select]
case AID_BOUTON_SELECTEUR + ELECTRICAL_SELECT_POWER:
if (event & PANEL_MOUSE_LBDOWN && Selecteur[ELECTRICAL_SELECT_POWER].Etat==Ant90Deg )  
{
Selecteur[ELECTRICAL_SELECT_POWER].Etat=Ant125Deg;
SetEtatSelecteur(ELECTRICAL_SELECT_POWER,Selecteur[ELECTRICAL_SELECT_POWER].Etat);
}
else if (event & PANEL_MOUSE_LBDOWN && Selecteur[ELECTRICAL_SELECT_POWER].Etat==Ant125Deg )  
{
Selecteur[ELECTRICAL_SELECT_POWER].Etat=Cent80Deg;
SetEtatSelecteur(ELECTRICAL_SELECT_POWER,Selecteur[ELECTRICAL_SELECT_POWER].Etat);
}
else if (event & PANEL_MOUSE_LBDOWN && Selecteur[ELECTRICAL_SELECT_POWER].Etat==Cent80Deg )  
{
Selecteur[ELECTRICAL_SELECT_POWER].Etat=Hor125Deg;
SetEtatSelecteur(ELECTRICAL_SELECT_POWER,Selecteur[ELECTRICAL_SELECT_POWER].Etat);
}
else if (event & PANEL_MOUSE_RBDOWN && Selecteur[ELECTRICAL_SELECT_POWER].Etat==Hor125Deg )  
{
Selecteur[ELECTRICAL_SELECT_POWER].Etat=Cent80Deg;
SetEtatSelecteur(ELECTRICAL_SELECT_POWER,Selecteur[ELECTRICAL_SELECT_POWER].Etat);
}
else if (event & PANEL_MOUSE_RBDOWN && Selecteur[ELECTRICAL_SELECT_POWER].Etat==Cent80Deg )  
{
Selecteur[ELECTRICAL_SELECT_POWER].Etat=Ant125Deg;
SetEtatSelecteur(ELECTRICAL_SELECT_POWER,Selecteur[ELECTRICAL_SELECT_POWER].Etat);
}
else if (event & PANEL_MOUSE_RBDOWN && Selecteur[ELECTRICAL_SELECT_POWER].Etat==Ant125Deg )  
{
Selecteur[ELECTRICAL_SELECT_POWER].Etat=Ant90Deg;
SetEtatSelecteur(ELECTRICAL_SELECT_POWER,Selecteur[ELECTRICAL_SELECT_POWER].Etat);
}
return true;

Et je me dis que dans le second cas, il y a sûrement moyen de faire mieux en se creusant un peu les méninges !
" Groin .... groin ..."



Message modifié ( 16-08-2007 22:34 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #117 - 16 August 2007, 22:54:00
Tu te fais iech avec tes degrés incroyab' comprend pas ce que tu fais la pour un bouton :wonder:
pourquoi pas 1 2 3 4 5 ? et tu incremente et décremente tout simplement ? Franchement qu'es t'en
a à foutre des degrés ? (a part pour le pinard ?)

1=ouvert     [image1]
2=ferme      [image2]
3-automatic [image3]
4-explosion  [image4]

Je vois pas de degré la dedans ? Si encore les dessins étaient vectoriel, mais non c'est des bitmaps,
tu pourrais dessiner une limace ou un escargot (de bourgone,wow le in topic avec le pinard) que
ca reviendrais au même.


Oeuf topic FsX:

C'est vraiment des glands dans le team dev FsX c'est incroyable, leurs SDK est compliquée, vieillote,
dépassée, hyper restrictive...elle permet rien pour un max de boulot... Et c'est vieux mais vieuuuux...
ca date d'un autre age. J'ai pas de mot, incroyables, des professionels qui font ca toute l'année
qui nous pondent une merde pareil, pas etonnant que FsX et Vista soient du même tonneaux.
lent, compliqué, bête ! La génération 2000 des devs ms à vraiment rien compris a l'informatique,
Je sais pas dans quel poubelle ils ont été les chercher ceux la...

A coté t'a UN gars qui bosse à ces moment perdu, comme ca, en touriste, qui nous a fait une
SDK  qui permet pratiquement tout dans Orbiter... Logique, claire, ouverte, inttelligente.... dingue !

Je croyais qu'on pouvais manipuler des objects dans FsX mais une fois de plus ils
ce sont bien foutu de notre gueule... c'est non. Enfin si, via des scripts compliqué et chiant,
voila de la souplesse ouéééé merci !

Dan
"...fais chier!"



Message modifié ( 16-08-2007 22:56 )


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 25
  • Criiii Crii Crii
Reply #118 - 16 August 2007, 23:32:54

Peut être pour conserver leur boulot et se rendre indispensables !
Va savoir, j'ai souvent soupçonné ça chez les "professionnels"
pour rendre leur machin ésotérique  .... ou alors , le j'm'en foutisme !
Au choix ! Ajouté au fait que les addons makers doivent acheter la SDK,
ça laisse songeur ....

Pour les degrés de rotation, c'est juste un moyen mnémotechnique pour moi.
J'ai du mal à me souvenir si 0 est le dessin du sélecteur qui indique le haut
ou le bas ... etc ... donc 0 degre vers le haut et le reste suit.


Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #119 - 16 August 2007, 23:57:00
Quote
picto a écrit:
Peut être pour conserver leur boulot et se rendre indispensables !
Va savoir, j'ai souvent soupçonné ça chez les "professionnels"

Nan je crois que c'est simplement une question de compétence et d'intelligence,
c'est exactement au coeur en fait, l'intelligence c'est trouver de bonne solutions
a des problèmes donné, eux ils trouvent pas les bonnes c'est tout.


Quote
Pour les degrés de rotation, c'est juste un moyen mnémotechnique pour moi.
J'ai du mal à me souvenir si 0 est le dessin du sélecteur qui indique le haut
ou le bas ... etc ... donc 0 degre vers le haut et le reste suit.

Tortille pas du cul, juste logique: sens aiguille d'une montre= augmente, sens inverse
decremente ok ? donc position a fond à gauche =0 à fond a droite=5 (si cinq position)

En plus je comprendrais si tu te referais aux systeme, après tout on sait pas si 0
c'est allumé ou eteint mais la même pas, juste des degrés dont tes systemes et ton
code internes n'a strictement rien à faire....

Comme en plus tu touche pas aux valeurs numérique mais a des "degrés" ce sera extrement
confus dans queques mois: les selecteurs il vont de 0 a 5 ou de -2 a 3 ? etc etc.

Remets les tous comme ca:

Code: [Select]
case AID_BOUTON_SELECTEUR + SELECTPROBE:
if (event & PANEL_MOUSE_LBDOWN && Selecteur[SELECTPROBE].Etat>0 )  
{
Selecteur[SELECTPROBE].Etat--;
SetEtatSelecteur(SELECTPROBE,Selecteur[SELECTPROBE].Etat);
}
if (event & PANEL_MOUSE_RBDOWN && Selecteur[SELECTPROBE].Etat<5)  
{
Selecteur[SELECTPROBE].Etat++;
SetEtatSelecteur(SELECTPROBE,Selecteur[SELECTPROBE].Etat);
}
return true;

Au moins c'est clair: le bouton va de 0 a 5, la position a fond a gauche étant zero et a droite étant
5, un coup d'oeil sur le bouton et tu vois immediatement ce que fait la position 2 ou 3...

Et les commentaires c'est pas fait pour les herissons non plus: :)

Code: [Select]
case AID_BOUTON_SELECTEUR + SELECTPROBE:
          // PROBE: 0= arme 1=engagé 2=ignition 3=ouverture 4=release 5=neutralise
if (event & PANEL_MOUSE_LBDOWN && Selecteur[SELECTPROBE].Etat>0 )  
{
                        .....

Dan



Message modifié ( 17-08-2007 00:00 )


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 25
  • Criiii Crii Crii
Reply #120 - 17 August 2007, 00:49:01
J't'essplique .... voilà la liste



Celui ci va de là à là OKi



Celui là va de là à là



Le troisième sélecteur va de là à là



Cet autre va de là à là ...



Y'a forcément des cas ou l'incrémentation ou décrémentation marche pas parce que tu passes par le 0
Je tortille pas du cul ! :lol:
Non mais ! :)

A moins que je ne sois un couillon et que je n'ai pas vu comment faire :wonder:



Message modifié ( 17-08-2007 00:51 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #121 - 17 August 2007, 01:33:12
Oki, je comprend... tu veux lier la variable au no  d'image affiché mais cette logique est dangereuse
Ta variable "etat" dois absolument etre DECONNECTEE d detail de l'affichage de l'image sous peine de te retrouver
avec des boutons tout a gauche a la valeur zéro  et d'autre à la valeur 5... bonjour la prise
de tete absolue et illisible.

Aucune logique = impossible de s'y retrouver dans le code et les systemes
(a moins que les boutons fassent juste joli) = dangereux.

Logiquement pour une lecture correcte et sans prise de tete la variable etat doit
prendre les valeurs suivante en fonction du bouton, exemple pour le bouton 1:

0=open  1=lock  2=Close

Sens des aiguilles d'une montre, zéro tourné a fond a gauche le maximum tourné a fond a droite.

Oki ?

Exemple pour le bouton 3

0=batt1  1=both 2=solar  3=Gen

Voila qui est logique et facile de lecture, un coup d'oeil sur le bouton tu sais que si il est sur solar etat=2.
Pour programmer les systemes interne ca va etre précieux cette facilité de lecture.


Conclusion:

Il va falloir trouver un systeme pour deconnecter l'affichage de l'image de la variable etat.
Je te propose simplement une valeurs "offset" en plus qui donne le no de l'image à la position zéro
(tourné à fond à gauche) Cette valeur offset sera reglée a l'initialisation SI c'est un selecteur
et après on ne s'occupe plus de ca. L'affichage ce demerdera.

Donc pour ton dernier bouton par exemple:

InitSelecteur(...,...,...,270);

Car la position etat=0 (tourné à fond a gauche) est à 270° Capisce ?

Un truc naze c'est que ta bande animation commence pas logiquement à 0° mais à 225° (bizarre?)
bon on va faire avec. Par convention on va prendre 0° et zéro comme étant le nord, c'est plus logique.



Bon, je te fais le code dans le post suivant... quelques minutes.


Dan



Message modifié ( 17-08-2007 01:40 )


Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #122 - 17 August 2007, 01:38:47
Ca va etre un peu compliqué mais c'est le prix ...de la simplicité ;)
Plus tard comme c'est en auto tu n'y touchera plus et ce sera facile
d'utilisation.

Dan


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 25
  • Criiii Crii Crii
Reply #123 - 17 August 2007, 01:43:03
Bah non, la liste, c'est facile à réorganiser sur Tochope.
C'est un peu le hasard qui les a mis dans ce sens.
La seule logique, c'était, les sélecteurs seront plus souvent vers
le haut que vers le bas donc 0  au milieu pour pouvoir faire incrémentations
et décrémentations facilement. :badsmile:

Malheureusement, les hasards de la place dispo sur le panel m'ont obligé
à en tourner un certain nombre vers le bas  ....

Pas facile le boulot d'ingénieur en aérospatiale ! :lol:



Message modifié ( 17-08-2007 01:44 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15410
  • Karma: 266
  • Hein, quoi !?
    • FsPassengers
Reply #124 - 17 August 2007, 01:51:07
Je fais le topos en offline et je te post ca dans quelques minutes... touche pas au rubans je fait avec.
En plus tu va apprendre quelques chose de nouveau typedef enum ;)

Dan