Exemple #1
0
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;
}