bool GameClassic::doRun() { SDL_Event event; if(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: { return false; break; } case SDL_KEYDOWN: { if ( event.key.keysym.sym == SDLK_ESCAPE ) { m_mgr->SetActiveModule(MAINMENU); return true; } if ( event.key.keysym.sym == SDLK_p || event.key.keysym.sym == SDLK_SPACE) { doPause(); } if ( event.key.keysym.sym == SDLK_UP && snake->GetDirection()!=Down) { snake->SetDirection(Up); } if ( event.key.keysym.sym == SDLK_DOWN && snake->GetDirection()!=Up) { snake->SetDirection(Down); } if ( event.key.keysym.sym == SDLK_LEFT && snake->GetDirection()!=Right) { snake->SetDirection(Left); } if ( event.key.keysym.sym == SDLK_RIGHT && snake->GetDirection()!=Left) { snake->SetDirection(Right); } break; } } } if(snake->Move()) { Converter.Convert(); DrawField(); DrawTop(); SDL_Delay(50); } else { Converter.Convert(); DrawField(); DrawTop(); GameOver(); } return true; }
void LunarModule::Display() { glPushAttrib(GL_ALL_ATTRIB_BITS); glPushMatrix(); glMaterialfv(GL_FRONT, GL_AMBIENT, matAmbient); glMaterialfv(GL_FRONT, GL_DIFFUSE, matDiffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, matSpecular); glMateriali(GL_FRONT, GL_SHININESS, matShininess); glTranslatef(300, distance, -100); glRotatef(270, 0, 1, 0); glPushMatrix(); DrawBottom(); glPopMatrix(); glPushMatrix(); DrawTop(); glPopMatrix(); glPopMatrix(); glPopAttrib(); }
void CLAYERS_OGL_DISP_LISTS::DrawAllCameraCulled(float zCameraPos, bool aDrawMiddle ) const { zCameraPos = m_haveTransformation?( (zCameraPos - m_zPositionTransformation ) / m_zScaleTransformation ):zCameraPos; if( aDrawMiddle ) DrawMiddle(); if( zCameraPos > m_zTop ) { DrawTop(); } else { if( zCameraPos < m_zBot ) { DrawBot(); } else { // If camera is in the middle dont draw it } } }
void CLAYERS_OGL_DISP_LISTS::DrawAllCameraCulledSubtractLayer( const CLAYERS_OGL_DISP_LISTS *aLayerToSubtractA, const CLAYERS_OGL_DISP_LISTS *aLayerToSubtractB, bool aDrawMiddle ) const { if( aDrawMiddle ) DrawMiddle(); glClearStencil( 0x00 ); glClear( GL_STENCIL_BUFFER_BIT ); glEnable( GL_CULL_FACE ); glCullFace( GL_BACK ); glDisable( GL_DEPTH_TEST ); glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE ); glDepthMask( GL_FALSE ); glEnable( GL_STENCIL_TEST ); glStencilFunc( GL_ALWAYS, 1, 0 ); glStencilOp( GL_KEEP, GL_KEEP, GL_REPLACE ); if( aLayerToSubtractA ) aLayerToSubtractA->DrawBot(); if( aLayerToSubtractB ) aLayerToSubtractB->DrawBot(); //if( !m_draw_it_transparent ) { glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); } glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE ); glStencilFunc( GL_EQUAL, 0, 1 ); glStencilOp( GL_KEEP, GL_KEEP, GL_KEEP ); DrawBot(); glDisable( GL_DEPTH_TEST ); glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE ); glDepthMask( GL_FALSE ); glEnable( GL_STENCIL_TEST ); glStencilFunc( GL_ALWAYS, 2, 0 ); glStencilOp( GL_KEEP, GL_KEEP, GL_REPLACE ); if( aLayerToSubtractA ) aLayerToSubtractA->DrawTop(); if( aLayerToSubtractB ) aLayerToSubtractB->DrawTop(); //if( !m_draw_it_transparent ) { glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); } glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE ); glStencilFunc( GL_NOTEQUAL, 2, 0x03 ); glStencilOp( GL_KEEP, GL_KEEP, GL_INCR ); DrawTop(); glLightModeli( GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE ); glCullFace( GL_FRONT ); glStencilFunc( GL_GEQUAL, 3, 0x03 ); glStencilOp( GL_KEEP, GL_KEEP, GL_KEEP ); glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE ); if( aDrawMiddle ) { if( aLayerToSubtractA ) aLayerToSubtractA->DrawMiddle(); // It will not render the middle contours of the layer. // It is used with vias and holes (copper vias and to subtract solder // mask holes). But since in the vias, it will draw a cylinder // and in soldermask it doesn't need to draw the contour. // so it is not used the middle part of B // if( aLayerToSubtractB ) // aLayerToSubtractB->DrawMiddle(); } glLightModeli( GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE ); glCullFace( GL_BACK ); glDisable( GL_STENCIL_TEST ); /* if( m_draw_it_transparent ) { glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); }*/ }