void CGame::render() { frameLimiter++; Window::Clear(); switch (gamestate) { case GAME: drawTiles(); handleShots(); drawPowerups(); drawEnemies(); drawEnemyShells(); drawBottomBar(); plane.show(clip_image); break; case START: drawMenus(); break; case GAMEOVER: drawGameOverScreen(); break; } Window::Present(); if (timer.Ticks() > 1000) { Window::ChangeWindowTitle("FPS: " + std::to_string(frameLimiter)); timer.Restart(); frameLimiter = 0; } if (frameLimiter > 60) { SDL_Delay(20); } }
void Editor::paintEvent( QPaintEvent* ) { // first we layer on a background grid QPixmap buff; QPixmap *dest=drawFrame->getPreviewPixmap(); buff.resize(dest->width(), dest->height()); drawBackground(&buff); drawTiles(&buff); bitBlt(dest, 0,0,&buff, 0,0,buff.width(), buff.height(), CopyROP); drawFrame->repaint(false); }
void Editor::paintEvent(QPaintEvent*) { // The main paint event, draw in the grid and blit in // the tiles as specified by the layout. // first we layer on a background grid QPixmap buff; QPixmap *dest=drawFrame->getPreviewPixmap(); buff = QPixmap(dest->width(), dest->height()); drawBackground(&buff); drawTiles(&buff); QPainter p(dest); p.drawPixmap(0, 0, buff); p.end(); drawFrame->update(); }
gint advanceTime(gpointer data) { statsLocal * sl; std::list<change *> changes; for(int i=0;i<(ROW_LENGTH*ROW_LENGTH);i++) { sl = getLocal(i); if(commerceGrowth(sl,i)) { if(sl->nearRoad){ change *c; c = new change; c->location = i; c->structure = rand()%2+5; changes.push_back(c); } } if(residentialGrowth(sl,i)) { change *c; c = new change; c->location = i; c->structure = rand()%5; changes.push_back(c); } delete sl; } if(!changes.empty()) { while(!changes.empty()) { changeTileTo(changes.front()->location,changes.front()->structure); changes.pop_front(); } drawTiles(); updateStats(); } return 1; }
void Sample_TempObstacles::handleRender() { if (!m_geom || !m_geom->getMesh()) return; DebugDrawGL dd; const float texScale = 1.0f / (m_cellSize * 10.0f); // Draw mesh if (m_drawMode != DRAWMODE_NAVMESH_TRANS) { // Draw mesh duDebugDrawTriMeshSlope(&dd, m_geom->getMesh()->getVerts(), m_geom->getMesh()->getVertCount(), m_geom->getMesh()->getTris(), m_geom->getMesh()->getNormals(), m_geom->getMesh()->getTriCount(), m_agentMaxSlope, texScale); m_geom->drawOffMeshConnections(&dd); } if (m_tileCache && m_drawMode == DRAWMODE_CACHE_BOUNDS) drawTiles(&dd, m_tileCache); if (m_tileCache) drawObstacles(&dd, m_tileCache); glDepthMask(GL_FALSE); // Draw bounds const float* bmin = m_geom->getNavMeshBoundsMin(); const float* bmax = m_geom->getNavMeshBoundsMax(); duDebugDrawBoxWire(&dd, bmin[0],bmin[1],bmin[2], bmax[0],bmax[1],bmax[2], duRGBA(255,255,255,128), 1.0f); // Tiling grid. int gw = 0, gh = 0; rcCalcGridSize(bmin, bmax, m_cellSize, &gw, &gh); const int tw = (gw + (int)m_tileSize-1) / (int)m_tileSize; const int th = (gh + (int)m_tileSize-1) / (int)m_tileSize; const float s = m_tileSize*m_cellSize; duDebugDrawGridXZ(&dd, bmin[0],bmin[1],bmin[2], tw,th, s, duRGBA(0,0,0,64), 1.0f); if (m_navMesh && m_navQuery && (m_drawMode == DRAWMODE_NAVMESH || m_drawMode == DRAWMODE_NAVMESH_TRANS || m_drawMode == DRAWMODE_NAVMESH_BVTREE || m_drawMode == DRAWMODE_NAVMESH_NODES || m_drawMode == DRAWMODE_NAVMESH_PORTALS || m_drawMode == DRAWMODE_NAVMESH_INVIS)) { if (m_drawMode != DRAWMODE_NAVMESH_INVIS) duDebugDrawNavMeshWithClosedList(&dd, *m_navMesh, *m_navQuery, m_navMeshDrawFlags/*|DU_DRAWNAVMESH_COLOR_TILES*/); if (m_drawMode == DRAWMODE_NAVMESH_BVTREE) duDebugDrawNavMeshBVTree(&dd, *m_navMesh); if (m_drawMode == DRAWMODE_NAVMESH_PORTALS) duDebugDrawNavMeshPortals(&dd, *m_navMesh); if (m_drawMode == DRAWMODE_NAVMESH_NODES) duDebugDrawNavMeshNodes(&dd, *m_navQuery); duDebugDrawNavMeshPolysWithFlags(&dd, *m_navMesh, SAMPLE_POLYFLAGS_DISABLED, duRGBA(0,0,0,128)); } glDepthMask(GL_TRUE); m_geom->drawConvexVolumes(&dd); if (m_tool) m_tool->handleRender(); renderToolStates(); glDepthMask(GL_TRUE); }
void BeerStatsFrame::drawContent(QPainter &painter, int panel, int offset) { vector<QStringDoublePair> pairs; switch(panel) { case 0: // today's pours { drawHeader(painter, QString("today's pours"), offset); map<User*, int> userPours; vector<Pour*> pours = Pour::PoursByKegId[CurrentKeg->Id]; double now = time(NULL); for (int i=0; i<pours.size(); i++) { Pour* pour = pours[i]; if (now - pour->Time >= 0.5 * Constants::Day) continue; User* user = User::UsersById[pour->UserId]; userPours[user]++; } map<User*, int>::iterator iter; for (iter = userPours.begin(); iter != userPours.end(); iter++) pairs.push_back(QStringDoublePair(QString(iter->first->Name.c_str()),iter->second)); if (pairs.size() == 0) drawNone(painter, QString("none"), offset); else drawTiles(painter, pairs, offset); } break; case 1: //pours by day { drawHeader(painter, QString("pours by day"), offset); // DOW of week pours vector<int> dowPours = Pour::GetPoursByDow(CurrentKeg); //int dowPours[] = {22, 5, 12, 13, 11, 24, 20}; int maxDowPours = 0; for (int i=0; i<7; i++) maxDowPours = max(dowPours[i], maxDowPours); for (int i=0; i<7; i++) pairs.push_back(QStringDoublePair(dowNames[i],dowPours[i]/(double)maxDowPours)); if (maxDowPours == 0) drawNone(painter, QString("none"), offset); drawBars(painter, pairs, offset); } break; case 2: // pours by user { drawHeader(painter, QString("pours by user"), offset); if (CurrentKeg == NULL) { drawNone(painter, QString("none"), offset); return; } map<User*, int> userPours = Pour::GetPoursByUser(CurrentKeg); int maxPours = 0; map<User*, int>::iterator iter; for (iter = userPours.begin(); iter != userPours.end(); iter++) maxPours = max(maxPours, iter->second); for (iter = userPours.begin(); iter != userPours.end(); iter++) pairs.push_back(QStringDoublePair(QString(iter->first->Name.c_str()),iter->second/(double)maxPours)); if (maxPours == 0) drawNone(painter, QString("none"), offset); else drawBars(painter, pairs, offset); } break; } }
void rePTerrainRenderable::draw( int state /*= 0*/, int id /*= 0*/ ) { reFrustum frustum; rePTerrain* terrain = (rePTerrain*)node; if (terrain->camera) { frustum.fromMatrix(terrain->camera->projection * terrain->camera->view); /* reRay topLeft = planePlaneIntersection(frustum.top, frustum.left); reRay topRight = planePlaneIntersection(frustum.top, frustum.right); reRay bottomLeft = planePlaneIntersection(frustum.bottom, frustum.left); reRay bottomRight = planePlaneIntersection(frustum.bottom, frustum.right); reVec3 tlb = rayPlaneIntersection(topLeft, frustum.start); reVec3 trb = rayPlaneIntersection(topRight, frustum.start); reVec3 blb = rayPlaneIntersection(bottomLeft, frustum.start); reVec3 brb = rayPlaneIntersection(bottomRight, frustum.start); reVec3 tlf = rayPlaneIntersection(topLeft, frustum.end); reVec3 trf = rayPlaneIntersection(topRight, frustum.end); reVec3 blf = rayPlaneIntersection(bottomLeft, frustum.end); reVec3 brf = rayPlaneIntersection(bottomRight, frustum.end); glPushMatrix(); reRadial::shared()->camera->apply(); glColor4f(1,0,1,1); glLineWidth(2); glBegin(GL_LINES); reVec3 s = reVec3(terrain->camera->transform.matrix * reVec4(0,0,0,1)); glColor4f(1,1,0,1); glVertex3fv(glm::value_ptr(frustum.top.p)); glColor4f(1,0,0,1); glVertex3fv(glm::value_ptr(frustum.top.n + frustum.top.p)); glColor4f(1,1,0,1); glVertex3fv(glm::value_ptr(frustum.bottom.p)); glColor4f(1,0,0,1); glVertex3fv(glm::value_ptr(frustum.bottom.n + frustum.bottom.p)); glColor4f(1,1,0,1); glVertex3fv(glm::value_ptr(frustum.left.p)); glColor4f(1,0,0,1); glVertex3fv(glm::value_ptr(frustum.left.n + frustum.left.p)); glColor4f(1,1,0,1); glVertex3fv(glm::value_ptr(frustum.right.p)); glColor4f(1,0,0,1); glVertex3fv(glm::value_ptr(frustum.right.n + frustum.right.p)); glColor4f(1,1,0,1); glVertex3fv(glm::value_ptr(frustum.end.p)); glColor4f(1,0,0,1); glVertex3fv(glm::value_ptr(frustum.end.n + frustum.end.p)); glColor4f(1,1,0,1); glVertex3fv(glm::value_ptr(frustum.start.p)); glColor4f(1,0,0,1); glVertex3fv(glm::value_ptr(frustum.start.n + frustum.start.p)); */ /* glColor4f(0,0,1,1); glVertex3fv(glm::value_ptr(tlb)); glVertex3fv(glm::value_ptr(trb)); glVertex3fv(glm::value_ptr(trb)); glVertex3fv(glm::value_ptr(brb)); glVertex3fv(glm::value_ptr(brb)); glVertex3fv(glm::value_ptr(blb)); glVertex3fv(glm::value_ptr(blb)); glVertex3fv(glm::value_ptr(tlb)); glVertex3fv(glm::value_ptr(tlf)); glVertex3fv(glm::value_ptr(trf)); glVertex3fv(glm::value_ptr(trf)); glVertex3fv(glm::value_ptr(brf)); glVertex3fv(glm::value_ptr(brf)); glVertex3fv(glm::value_ptr(blf)); glVertex3fv(glm::value_ptr(blf)); glVertex3fv(glm::value_ptr(tlf)); /* glVertex3fv(glm::value_ptr(brb)); glVertex3fv(glm::value_ptr(tlf)); glVertex3fv(glm::value_ptr(trb)); glVertex3fv(glm::value_ptr(trf)); glVertex3fv(glm::value_ptr(blb)); glVertex3fv(glm::value_ptr(blf)); glVertex3fv(glm::value_ptr(brb)); glVertex3fv(glm::value_ptr(brf)); */ /* glEnd(); glLineWidth(1); glPopMatrix(); */ } if (!state) { //drawTiles(frustum); /* shader.use(); glPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); glDisable(GL_CULL_FACE); groups[0]->vertexBuffer->bindPointers(); shader.setUniformMatrix("viewMatrix", 1, glm::value_ptr(reRadial::shared()->camera->view)); reMat4 mat(node->worldTransform().matrix); shader.setUniformMatrix("modelMatrix", 1, glm::value_ptr(mat)); shader.setUniform("cellSize", 3.0f*size()); int buffer[4]; for ( size_t i=0; i<4; i++) { buffer[i] = i; glActiveTexture(GL_TEXTURE0 + i); glEnable(GL_TEXTURE_2D); textures[i]->bind(0); } shader.setUniform("splatTiles[0]", 4, buffer); //glDrawArrays(GL_TRIANGLES, 0, groups[0]->faces.size()*3); */ drawTiles(frustum); /* for ( size_t i=0; i<4; i++) { glActiveTexture(GL_TEXTURE0 + i); glDisable(GL_TEXTURE_2D); } glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, 0); shader.unuse(); */ } }
void Background::drawBackground(QPainter *p) { p->setPen(QPen(Qt::black)); p->setBrush(QBrush(Qt::darkGreen)); p->drawRect(0,0,800,800); switch(option) { case 1: drawTiles(bg, 70, p, true); drawTiles(bg, 70, p); drawTiles(bg, 170, p, true); drawTiles(bg, 210, p); drawTiles(bg2, 385, p); // drawTiles(bg3, 543, p); // 57y break; case 2: //drawTiles(bg, 70, p, true); drawTiles(bg2, 70, p); drawTiles(bg3, 302, p); // drawTiles(bg4, 337, p); drawTiles(bg3, 508, p); drawTiles(bg4, 543, p);// 57y break; case 3: drawTiles(bg7, 70, p, true); drawTiles(bg2, 95, p); drawTiles(bg, 130, p); drawTiles(bg4, 234, p); // drawTiles(bg6, 300, p); drawTiles(bg5, 564, p);// 57y break; } }