pipe-game

Un jeu de cartes à piper les une dans les autres - retour accueil

git clone git://bebou.netlib.re/pipe-game
Log | Files | Refs | README |

commit 15d662febf59dc7bdbf463dbcf5b31b145cced5a
parent 96a532bf446374be50cf10b0024f3cc52f47c73c
Auteurice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Thu, 30 Jan 2025 14:31:14 +0100

Selec arg avec souris reste sur arg et pas hand

Hand arrive en premier dans la liste des piles et on détectait les piles
que sur x
Donc curmenu était mis à hand automatiquement puis le break coupait le
reste de la boucle for
On ajoute donc un test quand curmenu est hand pour vérifier sur y si on
est pas en réalité dans arg

Problème : Quand on bouge un arg vers la gauche ou droite le curmenu
devient played* et on deselec l'arg
Ce que l'on veut : Que l'arg reste selec quand on passe sur un played*
parce que c'est pas le menu de dest et qu'il soit passé dans playedarg
uniquement quand la souris arrive dessus

Diffstat:
Minterface.c | 12++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/interface.c b/interface.c @@ -380,11 +380,15 @@ int main(int argc, char **argv) { if( piles[i]->begin.x < ev.x && ev.x < piles[i]->end.x ) { if(ev.mod==TB_MOD_MOTION) { selection=true; curmenu=piles[i]; + if(curmenu==piles[HAND] && piles[ARGS]->begin.y<ev.y && ev.y<piles[ARGS]->end.y) + curmenu=piles[ARGS]; if(curmenu!=prevcurmenu) { - if(ev.x<prevpos.x) - curmenu=mvcardlr(prevcurmenu, piles, selection, LEFT); - else if (ev.x>prevpos.x) - curmenu=mvcardlr(prevcurmenu, piles, selection, RIGHT); + if ( curmenu==prevcurmenu->destleft || curmenu==prevcurmenu->destright ) { + if(ev.x<prevpos.x) + curmenu=mvcardlr(prevcurmenu, piles, selection, LEFT); + else if (ev.x>prevpos.x) + curmenu=mvcardlr(prevcurmenu, piles, selection, RIGHT); + } } else if(ev.y>prevpos.y) curmenu=mvcardup(curmenu,piles,DOWN,selection); else if (ev.y<prevpos.y)