Uint32 gestionAction(Uint32 intervalle, void *arg) { ObjetMap *temp, *cible; Unite *n; for(int i=0;i< m->getvec().size();i++) { temp=m->getvec()[i]; if(temp->gettype()==PEON || temp->gettype()==LANCIER) { SDL_mutexP(mutexObjet); n = (Unite*)temp; if(n->getStatut()==DEPLACEMENT) { point coordActuel=n->getc1(), coordDesti=n->getdesti(); if(coordActuel.x==coordDesti.x && coordActuel.y==coordDesti.y) { n->setStatut(AFK); n->setCible(NULL); } else { deplaceToi(n, coordDesti.x, coordDesti.y); } } if(n->getStatut()==COLLECTE) { point coordActuel=n->getc1(), coordDesti=(n->getcible())->getc1(); if(abs(coordActuel.x-coordDesti.x)<=1 && abs(coordActuel.y-coordDesti.y)<=1) { cible=n->getcible(); cible->setpv(cible->getpv()-1); if(cible->gettype()==BLE) { joueur1.setmiam(joueur1.getmiam()+1); } else { joueur1.setbois(joueur1.getbois()+1); } } else { deplaceToi(n, coordDesti.x, coordDesti.y); } } if(n->getStatut()==ATTAQUE) { point coordActuel=n->getc1(), coordDesti=(n->getcible())->getc1(); if(abs(coordActuel.x-coordDesti.x)<=1 && abs(coordActuel.y-coordDesti.y)<=1) { cible=n->getcible(); cible->setpv(cible->getpv()-n->getPa()); } else { deplaceToi(n, coordDesti.x, coordDesti.y); } } SDL_mutexV(mutexObjet); } } return intervalle; }