Exemple #1
0
void gestionCliqueD(int cliqueX, int cliqueY)
{
    if(objetReadyToDrop != 0)
    {
        objetReadyToDrop = 0;
    }
    else if(cliqueY<maxH-MENU_H)// si on est hors du menu
    {
        Position positionVue;
        SDL_mutexP(mutexInput);
            positionVue.offsetCaseX=maPosition.offsetCaseX;
            positionVue.offsetCaseY=maPosition.offsetCaseY;
            positionVue.offsetPositionX=maPosition.offsetPositionX;
            positionVue.offsetPositionY=maPosition.offsetPositionY;
        SDL_mutexV(mutexInput);

        cliqueX=(int)(cliqueX+positionVue.offsetPositionX)/TILE_SIZE+positionVue.offsetCaseX;
        cliqueY=(int)(cliqueY+positionVue.offsetPositionY)/TILE_SIZE+positionVue.offsetCaseY;

        if(currentObj!=NULL && currentObj->getcamp()==0)
        {
            bool rien=true;
            Unite *n;

            ObjetMap *temp;
            for(int i=0;i< m->getvec().size();i++)
            {
                temp=m->getvec()[i];
                if(cliqueX>=((point)temp->getc1()).x  && cliqueX<=(((point)temp->getc1()).x+temp->getnum()) && cliqueY>=((point)temp->getc1()).y  && cliqueY<=(((point)temp->getc1()).y+temp->getnum()) )
                {
                    rien=false;
                    SDL_mutexP(mutexObjet);
                    if(currentObj->gettype()==PEON)
                    {
                        if(temp->gettype()==FORET || temp->gettype()==BLE)
                        {
                            n = (Unite*)currentObj;
                            n->setCible(temp);
                            n->setStatut(COLLECTE);
                        }
                        else
                        {
                             n = (Unite*)currentObj;
                            n->setStatut(AFK);
                            n->setCible(NULL);
                        }
                    }
                    else if(currentObj->gettype()==LANCIER)
                    {
                        if((temp->gettype()==FORUM || temp->gettype()==CASERNE || temp->gettype()==PEON || temp->gettype()==LANCIER) && (temp->getcamp()==1))
                        {
                            n = (Unite*)currentObj;
                            n->setCible(temp);
                            n->setStatut(ATTAQUE);
                        }
                        else
                        {
                            n = (Unite*)currentObj;
                            n->setStatut(AFK);
                            n->setCible(NULL);
                        }
                    }
                    SDL_mutexV(mutexObjet);
                }
            }

            if(rien)
            {
                if(currentObj->gettype()==PEON || currentObj->gettype()==LANCIER)
                {
                    SDL_mutexP(mutexObjet);
                    n = (Unite*)currentObj;
                    n->setStatut(DEPLACEMENT);
                    n->setdesti(cliqueX, cliqueY);
                    SDL_mutexV(mutexObjet);
                }
            }
        }
    }
}