void draw_settings(t_env *e) { fond(e, 0xd5d5d5); w_draw_label(e); w_draw_form(e); w_draw_map_key(e); }
Unichar BoiteDialogue::afficher(Unichar const &texte, Unichar const &description, Unichar const &bouton1, Unichar const &bouton2, Unichar const &bouton3) { Unichar retour; AfficheurImage fond(Ecran::ecran(), *Ecran::apercu(), Couleur::noir, Couleur(Couleur::noir, 150)); TexteEtiquette titre(Unichar(), glm::vec2(20, 20), POLICE_NORMALE, 18, Couleur::blanc); titre.definirDimensions(glm::vec2(Ecran::largeur() * 4 / 5 - 40, 10)); titre.definirValeurTexte(texte); TexteEtiquette sousTitre(Unichar(), glm::vec2(20, titre.position().y + titre.dimensions().y + 20), POLICE_NORMALE, 15, Couleur::blanc); sousTitre.definirDimensions(glm::vec2(Ecran::largeur() * 4 / 5 - 40, 10)); sousTitre.definirValeurTexte(description); Bouton b1(glm::vec2(50, 0), bouton1); Bouton b2(glm::vec2(50, 0), bouton2); Bouton b3(glm::vec2(50, 0), bouton3); double largeur = b1.dimensions().x; if(!bouton2.empty()) largeur += 50 + b2.dimensions().x; if(!bouton3.empty()) largeur += 50 + b3.dimensions().x; b1.definirPosition(glm::vec2(Ecran::largeur() * 4 / 5 - 20 - b1.dimensions().x, titre.position().y + titre.dimensions().y + 50)); b1.definirAction(BoiteDialogue::bouton); b1.definirParametreAction(&retour); b1.definirRaccourci(Session::T_ENTREE); if(!bouton2.empty()) { b2.definirPosition(glm::vec2(b1.position().x - 20 - b2.dimensions().x, titre.position().y + titre.dimensions().y + 50)); b2.definirAction(BoiteDialogue::bouton); b2.definirParametreAction(&retour); b2.definirRaccourci(Session::T_ESC); } if(!bouton3.empty()) { if(!bouton2.empty()) b3.definirPosition(glm::vec2(b2.position().x - 50 - b3.dimensions().x, titre.position().y + titre.dimensions().y + 50)); else b3.definirPosition(glm::vec2(b1.position().x - 50 - b3.dimensions().x, titre.position().y + titre.dimensions().y + 50)); b3.definirAction(BoiteDialogue::bouton); b3.definirParametreAction(&retour); b3.definirRaccourci(Session::T_ESPACE); } AfficheurCouleur cadre(Rectangle(0, 0, Ecran::largeur() * 4 / 5, b1.cadre().haut + b1.cadre().hauteur + 20), Couleur(Couleur::noir, 120)); titre.definirPosition(glm::vec2(20, 20)); cadre.definirPosition(glm::vec2(std::max<coordonnee_t>(0.0, (Ecran::largeur() - cadre.dimensions().x)/ 2), 3 * Ecran::hauteur() / 7 - cadre.dimensions().y /2)); fond.ajouterEnfant(cadre); cadre.ajouterEnfant(b1); if(!bouton2.empty()) cadre.ajouterEnfant(b2); if(!bouton3.empty()) cadre.ajouterEnfant(b3); cadre.ajouterEnfant(titre); cadre.ajouterEnfant(sousTitre); Ecran::definirPointeurAffiche(true); Session::ajouterVueFenetre(&fond); if(Session::evenement(Session::QUITTER)) Session::reinitialiser(Session::QUITTER); return retour; }
void NavireGraphique::paint(QPainter *painter){ int largeur_carre = boundingRect().width(); int hauteur_carre = boundingRect().height(); if(m_navire->estHorizontale()) largeur_carre/= m_navire->getTaille(); else hauteur_carre/= m_navire->getTaille(); int x = 0, y = 0; int tmp = hauteur_carre; if (QFileInfo(m_navire->getFond() ).exists()){ // si image QImage image(m_navire->getFond()); int taille = m_navire->getTaille(); int posXI = 0, posYI = 0; // position image int divX = m_navire->estHorizontale() == true ? taille : 1; int divY = m_navire->estHorizontale() == true ? 1 : taille; for(int i = 1; i <= taille ; i++){ double opacite = (double) m_navire->getDurabiliteAt(i-1) / (double ) m_navire->getMaxDurabilite(); painter->setOpacity(opacite); if(opacite==0) dessinerCroix(painter, x,y, largeur_carre, hauteur_carre); else{ QRectF source(posXI*image.width()/divX , posYI*image.height()/divY, image.width()/divX, image.height()/divY); QRectF target(x,y, largeur_carre, hauteur_carre); painter->drawImage(target,image, source); } if(m_navire->estHorizontale()){ x+= tmp; posXI++; } else{ y+=tmp; posYI++; } } } else { // aucune image pour le navire, on affiche un fond QColor couleur(m_navire->getFond()); QBrush fond(couleur); painter->setBrush(fond); painter->setPen(Qt::NoPen); painter->setRenderHint(QPainter::Antialiasing); for(int i = 0; i < m_navire->getTaille() ; i++){ double opacite = (double) m_navire->getDurabiliteAt(i) / (double ) m_navire->getMaxDurabilite(); if(opacite==0) dessinerCroix(painter, x,y, largeur_carre, hauteur_carre); else painter->drawRoundedRect(x,y, largeur_carre, hauteur_carre , 0, 0); if(m_navire->estHorizontale()) x+= tmp; else y+=tmp; } } }