Пример #1
0
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); }
}
Пример #2
0
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);
}
Пример #3
0
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();
}
Пример #4
0
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);
}
Пример #6
0
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;
    }
}
Пример #7
0
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();
		*/
	}
}
Пример #8
0
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;
    }
}