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 6548122e1be41a4ccfd2729523681eabce5afa07
parent 3b475fd5af86225479f05fd9515924e89ffa15b5
Auteurice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Wed, 29 Jan 2025 21:36:24 +0100

Cliquer en dessous d'une pile fonctionne

Ca aide aussi à drag and drop plus facilement
MAIS, ça introduit des bugs je crois

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

diff --git a/interface.c b/interface.c @@ -30,6 +30,7 @@ struct pile { enum pileid { HAND, PLAYED, ARGS, PLAYEDARGS, PLAYEDENNEMY, PLAYEDENNEMYARGS }; int max(int a, int b) { return a > b ? a : b; } +int min(int a, int b) { return a < b ? a : b; } int nblines(char *str) { int l=0; @@ -378,16 +379,10 @@ int main(int argc, char **argv) { switch(ev.key) { case 65512: /*MouseLeft*/ for(int i=0;i<NB_PILES;i++) { - if( piles[i]->begin.x < ev.x && ev.x < piles[i]->end.x \ - && piles[i]->begin.y < ev.y && ev.y < piles[i]->end.y ) { + 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(ev.y>prevpos.y) { - curmenu=moveselection(curmenu,piles,"down",selection); - } else if (ev.y<prevpos.y) { - curmenu=moveselection(curmenu,piles,"up",selection); - } if(curmenu!=prevcurmenu) { if(ev.x<prevpos.x) { curmenu=movecardfrompiletopile(prevcurmenu, piles, &selection, 1); @@ -395,9 +390,15 @@ int main(int argc, char **argv) { curmenu=movecardfrompiletopile(prevcurmenu, piles, &selection, 0); } } + if(ev.y>prevpos.y) { + curmenu=moveselection(curmenu,piles,"down",selection); + } else if (ev.y<prevpos.y) { + curmenu=moveselection(curmenu,piles,"up",selection); + } } else { if(piles[i]->cardCount>0) { curmenu=piles[i]; } - curmenu->curline = curmenu==piles[ARGS] ? ev.y-1-piles[HAND]->end.y : ev.y-1; + if(curmenu==piles[HAND] && piles[ARGS]->begin.y < ev.y && ev.y < piles[ARGS]->end.y ) { curmenu=piles[ARGS]; } + curmenu->curline = curmenu==piles[ARGS] ? ev.y-1-piles[HAND]->end.y : min(ev.y-1,curmenu->cardCount-1); selection=false; } break;