void UniteUtilitaire::explorationDeSol(Player* joueur) { if (outil == Outil::kitDeGeologue) { joueur->decouvreRessource(getCoordX(), getCoordY()); outilRestant--; setAAgi(); } }
void WidgetContainer::dimensionalize() { compWidth = 0.0; compWidth += getCoordX(style.padding.left); compWidth += getCoordX(style.padding.right); compWidth += getCoordX(style.border.left); compWidth += getCoordX(style.border.right); compHeight = 0.0; compHeight += getCoordY(style.padding.top); compHeight += getCoordY(style.padding.bottom); compHeight += getCoordY(style.border.top); compHeight += getCoordY(style.border.bottom); if (layout == LAYOUT_VERTICAL) { for (auto& child : children) { child->dimensionalize(); auto cw = child->getMarginWidth(); auto ch = child->getMarginHeight(); compWidth = std::max(cw, compWidth); compHeight += ch; } } else { for (auto& child : children) { child->dimensionalize(); auto cw = child->getMarginWidth(); auto ch = child->getMarginHeight(); compHeight = std::max(ch, compHeight); compWidth += cw; } } // Set final dimensions if (style.width.type != Length::TYPE_UNDEFINED) { vertWidth = getCoordX(style.width); scrollH = compWidth > vertWidth; } else { vertWidth = compWidth; } if (style.height.type != Length::TYPE_UNDEFINED) { vertHeight = getCoordY(style.height); scrollV = compHeight > vertHeight; } else { vertHeight = compHeight; } }
void UniteUtilitaire::creationVille(Player* player) { if (outil == Outil::fondation) { player->creerBatiment(new Batiment(getCoordX(), getCoordY(), "Ville", "Batiment permettant d'effectuer les actions de base", Ressource::AUCUNE, 0, 0, 0, 0, 0)); int index = -1; for (int i = 0; i < player->getNombreUnite(); i++) { if (player->getUnite(i)->getCoordX() == getCoordX() && player->getUnite(i)->getCoordY() == getCoordY()) { index = i; break; } } player->detruireUnite(index); cout <<"ville fondée"<< player->getNombreBatiment() << endl; } }
glm::vec2 FieldPlane::getCoords(int x, int y) const { return glm::vec2(getCoordX(x), getCoordY(y)); }
// shows the item // if coordY >0, this is taken as the middle y-coordinate void KDGanttViewSummaryItem::showItem( bool show, int coordY ) { isVisibleInGanttView = show; invalidateHeight () ; if (!show) { hideMe(); return; } if ( displaySubitemsAsGroup() && !parent() && !isOpen() ) { hideMe(); return; } float prio = ((float) ( priority() - 100 )) / 100.0; startShape->setZ( prio + 0.0055 ); midShape->setZ( prio + 0.004 ); endShape->setZ( prio + 0.005 ); startShapeBack->setZ( prio + 0.003 ); midShapeBack->setZ( prio + 0.003 ); endShapeBack->setZ( prio + 0.003 ); startLine->setZ( prio + 0.0015 ); endLine->setZ( prio + 0.001 ); textCanvas->setZ( prio + 0.006 ); startLineBack->setZ( prio ); endLineBack->setZ( prio ); actualEnd->setZ( prio + 0.007 ); if ( displaySubitemsAsGroup() && firstChild() ) { myStartTime = myChildStartTime(); myEndTime = myChildEndTime(); } int startX, endX, midX = 0,allY; if ( coordY ) allY = coordY; else allY = getCoordY(); startX = myGanttView->myTimeHeader->getCoordX(myStartTime); endX = myGanttView->myTimeHeader->getCoordX(myEndTime); if (myMiddleTime) midX = myGanttView->myTimeHeader->getCoordX(*myMiddleTime); else midX = endX; startLine->setPoints(startX,allY,midX,allY); startLine->show(); startLineBack->setPoints(startX-1,allY,midX+1,allY); startLineBack->show(); startShape->move(startX,allY); startShapeBack->move(startX,allY); endShape->move(endX,allY); endShapeBack->move(endX,allY); moveTextCanvas(endX,allY); startShape->show(); startShapeBack->show(); endShape->show(); endShapeBack->show(); textCanvas->show(); if (myMiddleTime) { endLine->setPoints(midX,allY,endX,allY); endLine->show(); endLineBack->setPoints(midX,allY,endX+1,allY); endLineBack->show(); midShape->move(midX,allY); midShape->show(); midShapeBack->move(midX,allY); midShapeBack->show(); } else { endLine->hide(); endLineBack->hide(); midShape->hide(); midShapeBack->hide(); } if (myActualEndTime) { if ( *myActualEndTime == myEndTime ) { actualEnd->hide(); } else { int actendX = myGanttView->myTimeHeader->getCoordX(*myActualEndTime); actualEnd->setPoints(actendX,allY-5,actendX,allY+5); actualEnd->show(); } } else { actualEnd->hide(); } if(myStartTime == myEndTime) { endShape->moveBy(myItemSize+4,0); endShapeBack->moveBy(myItemSize+4,0); textCanvas->moveBy(myItemSize+4,0); midShape->hide(); midShapeBack->hide(); startLine->hide(); endLine->hide(); startLineBack->hide(); endLineBack->hide(); } if (textCanvas->text().isEmpty()) textCanvas->hide(); }
void initPoints(point* s) { const int LONGUEUR = 350; const int LARGEUR = 200; int i = 0; s[0] = initPoint(0,0); s[3] = initPoint(3*(LONGUEUR/2), 0); s[4] = initPoint(3*(LONGUEUR/2), 1.33*LARGEUR/3.33); s[7] = initPoint(0, 1.33*LARGEUR/3.33); s[24] = initPoint(-21*(LONGUEUR/4), -7*(LARGEUR/3.33)); s[27] = initPoint(s[24].coords[0] + 12*LONGUEUR, s[24].coords[1]); s[31] = initPoint(s[24].coords[0], (1.33*(LARGEUR/3.33))+7*(LARGEUR/3.33)); s[28] = initPoint(s[27].coords[0], s[31].coords[1]); while(i <= 24) { s[1+i].coords[0] = (2*s[i].coords[0]+s[i+3].coords[0])/3; s[1+i].coords[1] = (2*s[i].coords[1]+s[i+3].coords[1])/3; s[6+i].coords[0] = (2*s[i+7].coords[0]+s[i+4].coords[0])/3; s[6+i].coords[1] = (2*s[i+7].coords[1]+s[i+4].coords[1])/3; s[2+i].coords[0] = (s[i].coords[0]+2*s[i+3].coords[0])/3; s[2+i].coords[1] = (s[i].coords[1]+2*s[i+3].coords[1])/3; s[5+i].coords[0] = (s[i+7].coords[0]+2*s[i+4].coords[0])/3; s[5+i].coords[1] = (s[i+7].coords[1]+2*s[i+4].coords[1])/3; i += 24; } droiteaffine alpha = initDroiteAffine(s[24].coords[1]/s[24].coords[0], &s[0]); droiteaffine gama = initDroiteAffine(-s[24].coords[1]/s[24].coords[0], &s[7]); droiteaffine beta = initDroiteAffine(-s[24].coords[1]/s[24].coords[0], &s[3]); droiteaffine delta = initDroiteAffine(s[24].coords[1]/s[24].coords[0], &s[4]); s[16].coords[0] = 3*(LONGUEUR/4)-3*LONGUEUR; s[16].coords[1] = getCoordY(alpha, s[16].coords[0]); s[23].coords[0] = s[16].coords[0]; s[23].coords[1] = getCoordY(gama, s[16].coords[0]); s[8].coords[0] = -3*(LARGEUR/4); s[8].coords[1] = getCoordY(alpha, s[8].coords[0]); s[15].coords[0] = s[8].coords[0]; s[15].coords[1] = getCoordY(gama, s[8].coords[0]); s[19].coords[0] = s[16].coords[0] + 6*LONGUEUR; s[19].coords[1] = s[16].coords[1]; s[20].coords[0] = s[23].coords[0] + 6*LONGUEUR; s[20].coords[1] = s[23].coords[1]; s[11].coords[0] = s[8].coords[0] + 3*LONGUEUR; s[11].coords[1] = s[8].coords[1]; s[12].coords[0] = s[15].coords[0] + 3*LONGUEUR; s[12].coords[1] = s[15].coords[1]; droiteaffine epsilon = initDroiteAffine(-s[25].coords[1]/(s[1].coords[0]-s[25].coords[0]), &s[1]); s[9].coords[0] = s[8].coords[0] + LONGUEUR; s[9].coords[1] = getCoordY(epsilon, s[9].coords[0]); s[17].coords[0] = s[16].coords[0] + 2*LONGUEUR; s[17].coords[1] = getCoordY(epsilon, s[17].coords[0]); droiteaffine teta = initDroiteAffine(s[25].coords[1]/(s[1].coords[0]-s[25].coords[0]), &s[6]); s[14].coords[0] = s[15].coords[0] + LONGUEUR; s[14].coords[1] = getCoordY(teta, s[14].coords[0]); s[22].coords[0] = s[23].coords[0] + 2*LONGUEUR; s[22].coords[1] = getCoordY(teta, s[22].coords[0]); droiteaffine omega = initDroiteAffine(s[25].coords[1]/(s[1].coords[0]-s[25].coords[0]), &s[2]); s[10].coords[0] = s[8].coords[0] + 2*LONGUEUR; s[10].coords[1] = getCoordY(omega, s[10].coords[0]); s[18].coords[0] = s[16].coords[0] + 4*LONGUEUR; s[18].coords[1] = getCoordY(omega, s[18].coords[0]); droiteaffine sigma = initDroiteAffine(-s[25].coords[1]/(s[1].coords[0]-s[25].coords[0]), &s[5]); s[13].coords[0] = s[15].coords[0] + 2*LONGUEUR; s[13].coords[1] = getCoordY(sigma, s[13].coords[0]); s[21].coords[0] = s[23].coords[0] + 4*LONGUEUR; s[21].coords[1] = getCoordY(sigma, s[21].coords[0]); }
void WidgetContainer::render() { auto offsetTop = getOffsetTop() + getCoordY(style.margin.top); auto offsetLeft = getOffsetLeft() + getCoordX(style.margin.left); // Preparing vertex input auto x1 = -1.0 + 2 * (offsetLeft); auto x2 = -1.0 + 2 * (offsetLeft + getPaddingWidth()); auto y1 = +1.0 - 2 * (offsetTop + getPaddingHeight()); auto y2 = +1.0 - 2 * (offsetTop); auto& V0 = input.vertex[0]; auto& V1 = input.vertex[1]; auto& V2 = input.vertex[2]; auto& V3 = input.vertex[3]; V0.position[0] = V1.position[0] = x1; V2.position[0] = V3.position[0] = x2; V0.position[1] = V2.position[1] = y1; V1.position[1] = V3.position[1] = y2; V0.position[2] = V1.position[2] = V2.position[2] = V3.position[2] = 0.0; V0.position[3] = V1.position[3] = V2.position[3] = V3.position[3] = 1.0; V0.background = style.background; V1.background = style.background; V2.background = style.background; V3.background = style.background; manager->pushWidgetContainer(input); auto childOffsetTop = offsetTop + getCoordY(style.padding.top); auto childOffsetLeft = offsetLeft + getCoordX(style.padding.left); // Render children widgets vertically if (layout == LAYOUT_VERTICAL) { if (style.alignV == ALIGN_VERTICAL_CENTER) { childOffsetTop += (vertHeight - compHeight) / 2.0; } if (style.alignV == ALIGN_VERTICAL_BOTTOM) { childOffsetTop += (vertHeight - compHeight); } for (auto& child : children) { // Correct horizontal alignment switch (style.alignH) { case ALIGN_HORIZONTAL_LEFT: child->setOffsetLeft(childOffsetLeft); break; case ALIGN_HORIZONTAL_CENTER: child->setOffsetLeft(childOffsetLeft + (getContentWidth() - child->getBorderWidth()) / 2.0); break; case ALIGN_HORIZONTAL_RIGHT: child->setOffsetLeft(childOffsetLeft + (getContentWidth() - child->getBorderWidth())); break; } child->setOffsetTop(childOffsetTop); child->render(); childOffsetTop += child->getMarginHeight(); } } // Render children widgets horizontally if (layout == LAYOUT_HORIZONTAL) { if (style.alignH == ALIGN_HORIZONTAL_CENTER) { childOffsetLeft += (vertWidth - compWidth) / 2.0; } if (style.alignH == ALIGN_HORIZONTAL_RIGHT) { childOffsetLeft += (vertWidth - compWidth); } for (auto& child : children) { // Correct vertical alignment switch (style.alignV) { case ALIGN_VERTICAL_TOP: child->setOffsetTop(childOffsetTop); break; case ALIGN_VERTICAL_CENTER: child->setOffsetTop(childOffsetTop + (getContentHeight() - child->getBorderHeight()) / 2.0); break; case ALIGN_VERTICAL_BOTTOM: child->setOffsetTop(childOffsetTop + (getContentHeight() - child->getBorderHeight())); break; } child->setOffsetLeft(childOffsetLeft); child->render(); childOffsetLeft += child->getMarginWidth(); } } }
void KDGanttViewEventItem::showItem(bool show, int coordY) { isVisibleInGanttView = show; invalidateHeight () ; if (!show) { hideMe(); return; } float prio = ((float) ( priority() - 100 )) / 100.0; startShape->setZ( prio + 0.0055 ); startShapeBack->setZ( prio + 0.003 ); startLine->setZ( prio + 0.0015 ); floatStartShape->setZ(prio + 0.004); floatStartShape->hide(); floatEndShape->setZ(prio + 0.004); floatEndShape->hide(); textCanvas->setZ( prio + 0.006 ); startLineBack->setZ( prio ); if ( displaySubitemsAsGroup() && firstChild() ) { myStartTime = myChildStartTime(); myEndTime = myChildEndTime(); } int startX, endX, allY; if ( coordY ) allY = coordY; else allY = getCoordY(); startX = myGanttView->myTimeHeader->getCoordX(myStartTime); if (myLeadTime) { endX = myGanttView->myTimeHeader->getCoordX(*myLeadTime); startLine->setPoints(startX,allY,endX,allY); startLine->show(); startLineBack->setPoints(startX+1,allY,endX-1,allY); startLineBack->show(); } else { startLine->hide(); startLineBack->hide(); } startShape->move(startX,allY); startShape->show(); startShapeBack->move(startX,allY); startShapeBack->show(); if (myFloatStartTime.isValid()) { KDCanvasRectangle* floatStartTemp = (KDCanvasRectangle*) floatStartShape; int floatStartX = myGanttView->myTimeHeader->getCoordX(myFloatStartTime); int hei = startShape->boundingRect().height(); // FIXME: Configurable colors QBrush b(startShape->brush().color(), Dense4Pattern); floatStartTemp->setBrush(b); floatStartTemp->setPen(QPen(gray)); if (floatStartX < startX) { floatStartTemp->setSize(startX - floatStartX, hei/2); floatStartTemp->move(floatStartX, allY-hei/4); } else { floatStartTemp->setSize(floatStartX - startX, hei/2); floatStartTemp->move(startX, allY-hei/4); } floatStartShape->show(); } if (myFloatEndTime.isValid()) { KDCanvasRectangle* floatEndTemp = (KDCanvasRectangle*) floatEndShape; int floatEndX = myGanttView->myTimeHeader->getCoordX(myFloatEndTime); int hei = startShape->boundingRect().height(); // FIXME: Configurable colors QBrush b(startShape->brush().color(), Dense4Pattern); floatEndTemp->setBrush(b); floatEndTemp->setPen(QPen(gray)); if (floatEndX > startX) { floatEndTemp->setSize(floatEndX - startX, hei/2); floatEndTemp->move(startX, allY-hei/4); } else { floatEndTemp->setSize(startX - floatEndX, hei/2); floatEndTemp->move(floatEndX, allY-hei/4); } floatEndShape->show(); } moveTextCanvas(startX,allY); textCanvas->show(); if (textCanvas->text().isEmpty()) textCanvas->hide(); }
float Widget::getMarginHeight() { auto marginTop = getCoordY(style.margin.top); auto marginBottom = getCoordY(style.margin.bottom); return vertHeight + marginTop + marginBottom; }
float Widget::getBorderHeight() { auto borderTop = getCoordY(style.border.top); auto borderBottom = getCoordY(style.border.bottom); return vertHeight + borderTop + borderBottom; }
float Widget::getPaddingHeight() { auto paddingTop = getCoordY(style.padding.top); auto paddingBottom = getCoordY(style.padding.bottom); return getContentHeight() + paddingTop + paddingBottom; }