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