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:
M | interface.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;