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 47d28c5090a8b833a6b671a973a4891ad18eb568
parent db49cf6b2d590647c2469bb4019b107796a78837
Auteurice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Wed, 29 Jan 2025 20:30:22 +0100

Drag and drop entre les piles !!!

Mais pleins de bugs :

  * parfois les args viennent dans la main
  * parfois les cartes vont dans les args en stock
  * quand on spam trop de trucs ça crash ?
  * il faut d'abord remonter la carte à hauteur de la pile de dest pour
    pouvoir la drag et drop dedans ?

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

diff --git a/interface.c b/interface.c @@ -275,7 +275,7 @@ int main(int argc, char **argv) { tb_init(); tb_set_input_mode(TB_INPUT_ESC | TB_INPUT_MOUSE); struct tb_event ev; - coord previouspos; + coord prevpos; struct pile *prevcurmenu; char cmd[LIST_SIZE]; char cmdennemy[LIST_SIZE]; char res[LIST_SIZE]; char resennemy[LIST_SIZE]; @@ -383,18 +383,26 @@ int main(int argc, char **argv) { curmenu=piles[i]; if(ev.mod==TB_MOD_MOTION) { selection=true; - if(ev.y>previouspos.y) { + if(ev.y>prevpos.y) { curmenu=moveselection(curmenu,piles,"down",selection); - } else if (ev.y<previouspos.y) { + } else if (ev.y<prevpos.y) { curmenu=moveselection(curmenu,piles,"up",selection); } + if(curmenu!=prevcurmenu) { + if(ev.x<prevpos.x) { + curmenu=movetest(prevcurmenu->curline, prevcurmenu, piles, &selection, 1); + } else if (ev.x>prevpos.x) { + curmenu=movetest(prevcurmenu->curline, prevcurmenu, piles, &selection, 0); + } + } } else { curmenu->curline=strcmp(curmenu->name,"args")==0 ? ev.y-1-piles[HAND]->end.y : ev.y-1; selection=false; } } } - previouspos.x=ev.x, previouspos.y=ev.y; + prevpos.x=ev.x, prevpos.y=ev.y; + prevcurmenu=curmenu; break; case 65509: /*MouseRelease*/ selection=false;