void UniteUtilitaire::explorationDeSol(Player* joueur) 
{
	if (outil == Outil::kitDeGeologue) {
		joueur->decouvreRessource(getCoordX(), getCoordY());
		outilRestant--;
		setAAgi();
	}
}
Ejemplo n.º 2
0
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;
	}
}
Ejemplo n.º 4
0
glm::vec2 FieldPlane::getCoords(int x, int y) const {
	return glm::vec2(getCoordX(x), getCoordY(y));
}
Ejemplo n.º 5
0
// 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]);

}
Ejemplo n.º 7
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();
        }
    }
}
Ejemplo n.º 8
0
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();
}
Ejemplo n.º 9
0
float Widget::getMarginHeight() {
    auto marginTop = getCoordY(style.margin.top);
    auto marginBottom = getCoordY(style.margin.bottom);
    return vertHeight + marginTop + marginBottom;
}
Ejemplo n.º 10
0
float Widget::getBorderHeight() {
    auto borderTop = getCoordY(style.border.top);
    auto borderBottom = getCoordY(style.border.bottom);
    return vertHeight + borderTop + borderBottom;
}
Ejemplo n.º 11
0
float Widget::getPaddingHeight() {
    auto paddingTop = getCoordY(style.padding.top);
    auto paddingBottom = getCoordY(style.padding.bottom);
    return getContentHeight() + paddingTop + paddingBottom;
}