ParticipantInfoDialog::ParticipantInfoDialog(Participant* participant, QWidget* parent, bool showRemove) : PopupDialog( parent ), m_participant(participant) { setMinimumWidth(400); setMinimumHeight(160); this->setSizeGripEnabled(false); QGraphicsPixmapItem* image = new QGraphicsPixmapItem( participant->pixmap().scaled(80, 80, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), widget() ); image->setPos( 8, 8 ); QGraphicsLineItem* line = new QGraphicsLineItem( widget() ); line->setPen( QPen( QColor( 100, 100, 100 ) ) ); line->setLine( 8, 110, width() - 2 * 8, 110 ); int buttonRight = width() - 10; QPushButton* button = new QPushButton(); button->setText(tr("New Wave")); QGraphicsProxyWidget* item = scene()->addWidget(button); item->setParentItem( widget() ); item->setPos( buttonRight - item->preferredWidth(), height() - 10 - item->preferredHeight() ); buttonRight -= item->preferredWidth() + 10; //Adds remove button if parent is a waveview if (showRemove) { QPushButton* removeFromWaveButton = new QPushButton(); removeFromWaveButton->setText(tr("Remove")); QGraphicsProxyWidget* removeItem = scene()->addWidget(removeFromWaveButton); removeItem->setParentItem( widget() ); removeItem->setPos( buttonRight - removeItem->preferredWidth(), height() - 10 - removeItem->preferredHeight() ); buttonRight -= removeItem->preferredWidth() + 10; connect( removeFromWaveButton, SIGNAL(clicked()),SLOT(removeParticipant())); } QPushButton* button2 = new QPushButton(); button2->setText(tr("Close")); QGraphicsProxyWidget* item2 = scene()->addWidget(button2); item2->setParentItem( widget() ); item2->setPos( buttonRight - item2->preferredWidth(), height() - 10 - item2->preferredHeight() ); QGraphicsTextItem* text = new QGraphicsTextItem( participant->name(), widget() ); text->setPos( 110, 10 ); text->setFont( QFont( "Arial", 18, QFont::Bold ) ); text = new QGraphicsTextItem( tr("Address") + ": " + participant->address(), widget() ); text->setPos( 110, 50 ); text->setFont( QFont( "Arial", 11 ) ); connect( button, SIGNAL(clicked()), SLOT(newWave())); connect( button2, SIGNAL(clicked()), SLOT(close())); }
InboxView::InboxView(Environment* environment, QWidget* parent) : QWidget(parent), m_environment( environment ) { setMinimumWidth(300); m_verticalLayout = new QVBoxLayout(this); m_verticalLayout->setSpacing(0); m_verticalLayout->setMargin(0); m_verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); m_bigBar = new BigBar(this); m_searchBox = new SearchBox(m_bigBar); m_searchBox->setText("in:inbox"); m_newWaveButton = new ButtonGraphicsItem( QPixmap("images/newwave.png")); m_inboxButtonView = new InboxButtonView(this); m_inboxButtonView->addItem(m_newWaveButton); m_inboxButtonView->setMaximumWidth(QPixmap("images/newwave.png").width()+5); QHBoxLayout* l = new QHBoxLayout(m_bigBar); l->addWidget(m_inboxButtonView); l->addWidget(m_searchBox); m_toolBar = new ToolBar(this); m_markAsRead = new ButtonGraphicsItem(QPixmap("images/read.png")); m_toolBar->addItem(m_markAsRead); m_markAsUnread = new ButtonGraphicsItem(QPixmap("images/unread.png")); m_toolBar->addItem(m_markAsUnread); m_listView = new WaveListView( environment->inbox() ); m_listView->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Expanding ); m_titleBar = new TitleBar(this); m_verticalLayout->addWidget(m_titleBar); m_verticalLayout->addWidget(m_bigBar); m_verticalLayout->addWidget(m_toolBar); m_verticalLayout->addWidget(m_listView); m_titleBar->setText(tr("Inbox")); connect( m_listView, SIGNAL(selected(Wave*)), SIGNAL(selected(Wave*))); connect( m_newWaveButton, SIGNAL(clicked()), SIGNAL(newWave())); connect( m_markAsRead, SIGNAL(clicked()), SLOT(markSelectedRead())); connect( m_markAsUnread, SIGNAL(clicked()), SLOT(markSelectedUnread())); }
void sdlMapBoucle(sdlMap *sdMap) { int continuGame = 1; int resultMenu; int i, num; char c; Menu menu; sdlMenuInit(&menu, getSdlMapEcran(sdMap)); //Lancement du menu resultMenu = sdlMenuBoucle(&menu); SDL_Event event; /* Horloges (en secondes) */ float currentClock, prevClock; /* Intervalle de temps (en secondes) entre deux Èvolutions du jeu */ float intervalClock = 0.1f; int rafraichissement; sdlMapAff(sdMap); assert(SDL_Flip(getSdlMapEcran(sdMap))!=-1); // RÈcupËre l'horloge actuelle et la convertit en secondes // clock() retourne le nombre de tops horloge depuis le lancement du programme prevClock = (float)clock()/(float)CLOCKS_PER_SEC; // Tant que ce n'est pas la fin ... while (continuGame == 1) { switch (resultMenu) { case 0: continuGame = 0; resultMenu = 1; break; case 2: num = getMapNum(getSdlMap(sdMap)); num++; if(num > 4) num = 1; setMapNum(getSdlMap(sdMap), num); setSdlMap(sdMap,newMap(15, 15, num)); setSdlMapMode(sdMap, 0); setSdlMapSpeed(sdMap, 0); continuGame = 1; resultMenu = 1; break; default: break; } rafraichissement = 0; // RÈcupËre l'horloge actuelle et la convertit en secondes currentClock = (float)clock()/(float)CLOCKS_PER_SEC; //printf("\n %f \n %f \n %f \n %f \n", horloge_precedente, horloge_courante, (horloge_courante - horloge_precedente), intervalle_horloge); // Si suffisamment de temps s'est ÈcoulÈ depuis la derniËre prise d'horloge if ((currentClock - prevClock) >= intervalClock) { if (getSdlMapSpeed(sdMap)) { for (i=0; i<10; i++) { updateMap(getSdlMap(sdMap)); } } else { for (i=0; i<5; i++) { updateMap(sdMap->map); } } updateInterface(getSdlMapInterface(sdMap), getSdlMap(sdMap)); rafraichissement = 1; prevClock = currentClock; if(getSdlMap(sdMap)->life <= 0) { resultMenu = sdlMenuBoucle(&menu); } if(getSdlMapMode(sdMap) && isWaveEnd(getSdlMap(sdMap))) { newWave(getSdlMap(sdMap)); } } // tant qu'il y a des evenements ‡ traiter : cette boucle n'est pas bloquante while (SDL_PollEvent(&event)) { // Si l'utilisateur a cliquÈ sur la croix de fermeture if ( event.type == SDL_QUIT ) continuGame = 0; // Si l'utilisateur a appuyÈ sur une touche if (event.type == SDL_KEYDOWN) { rafraichissement = 1; Map *map = getSdlMap(sdMap); Interface *interface = getSdlMapInterface(sdMap); Cursor *cursor = getInterfaceCursor(interface); switch (event.key.keysym.sym) { //Quiter (esc) case SDLK_ESCAPE: resultMenu = sdlMenuBoucle(&menu); break; //Deplacement curseur droite (left) case SDLK_LEFT: moveCursorLeft(cursor); break; //Deplacement curseur gauche (right) case SDLK_RIGHT: moveCursorRight(cursor); break; //Deplacement curseur haut (up) case SDLK_UP: moveCursorUp(cursor); break; //Deplacement curseur bas (down) case SDLK_DOWN: moveCursorDown(cursor); break; //Nouvelle vague (w) case SDLK_w: if(isWaveEnd(map)){ newWave(map); } break; //Nouvelle tours type archer (a) case SDLK_a: buyInterfaceTower('A', &(cursor->position), sdMap->map); break; //Nouvelle tours type knight (k) case SDLK_k: buyInterfaceTower('K', &(cursor->position), sdMap->map); break; //Nouvelle tours type mage (m) case SDLK_m: buyInterfaceTower('M', &(cursor->position), sdMap->map); break; case SDLK_c: buyInterfaceTower('C', &(cursor->position), sdMap->map); break; case SDLK_e: if(isCursorOnTower(cursor, getSdlMap(sdMap))) { evolveTower(interface->tower, &map->gold); } break; case SDLK_v: sellInterfaceTower(getSdlMap(sdMap), &(cursor->position), getInterfaceTower(interface)); break; case SDLK_s: if (getSdlMapSpeed(sdMap)) { setSdlMapSpeed(sdMap,0); } else { setSdlMapSpeed(sdMap,1); } break; case SDLK_i: if(getSdlMapMode(sdMap)){ setSdlMapMode(sdMap,0); } else { setSdlMapMode(sdMap,1); } break; default: break; } } } if (rafraichissement==1) { // on affiche le jeu sur le buffer caché sdlMapAff(sdMap); // on permute les deux buffers (cette fonction ne doit se faire qu'une seule fois dans a boucle) SDL_Flip( getSdlMapEcran(sdMap) ); } } sdlMenuLibere(&menu); }
void ParticipantInfoDialog::newWave() { emit newWave(m_participant); accept(); }