void Block::Draw(int gridX, int gridY, int landedGrid[GRID_HEIGHT][GRID_WIDTH]) { // Get the grid's height int hiddenRowHeight = (HIDDEN_ROWS * TILE_HEIGHT); if(mShowGhost) { // Draw the ghost DrawGhost(gridX, gridY, landedGrid); } // Cycle through data for(int row = 0; row < mHeight; row++) { for(int column = 0; column < mWidth; column++) { if(mBlockMatrix[mOrientation][row][column] != TILE_BLANK) { // Get current tile's pixel coordinates int pixelX = gridX + (TILE_WIDTH * mGridX) + (TILE_WIDTH * column); int pixelY = gridY + (TILE_HEIGHT * mGridY) + (TILE_HEIGHT * row) - hiddenRowHeight; if( pixelY > hiddenRowHeight) { mTexture->Draw(pixelX, pixelY); } } } } }
/* Create all the objects, textures, geometry, etc, that we will use */ void InitialiseScene(void) { /* Create new lists, and store its ID number */ gTerrainList = glGenLists(1); gPacman = glGenLists(2); gLQGhost = glGenLists(3); gMQGhost = glGenLists(4); gHQGhost = glGenLists(5); gHQDot = glGenLists(6); gHQFruit = glGenLists(7); // create terrain glNewList(gTerrainList, GL_COMPILE); DrawTerrain(); glEndList(); // create pacman glNewList(gPacman, GL_COMPILE); DrawPacman(); glEndList(); // create ghosts from splines theGhostNurb = gluNewNurbsRenderer(); gluNurbsProperty(theGhostNurb, GLU_SAMPLING_METHOD, GLU_DOMAIN_DISTANCE); gluNurbsProperty(theGhostNurb, GLU_DISPLAY_MODE, GLU_FILL); gluNurbsProperty(theGhostNurb, GLU_CULLING, GL_TRUE); // high quality ghost gluNurbsProperty(theGhostNurb, GLU_U_STEP, 50.); gluNurbsProperty(theGhostNurb, GLU_V_STEP, 50.); glNewList(gHQGhost, GL_COMPILE); DrawGhost(); glEndList(); // medium quality ghost gluNurbsProperty(theGhostNurb, GLU_U_STEP, 20.); gluNurbsProperty(theGhostNurb, GLU_V_STEP, 20.); glNewList(gMQGhost, GL_COMPILE); DrawGhost(); glEndList(); // low quality ghost gluNurbsProperty(theGhostNurb, GLU_U_STEP, 5.); gluNurbsProperty(theGhostNurb, GLU_V_STEP, 5.); glNewList(gLQGhost, GL_COMPILE); DrawGhost(); glEndList(); gluDeleteNurbsRenderer(theGhostNurb); /* create the banana from nurb spline*/ theFruitNurb = gluNewNurbsRenderer(); gluNurbsProperty(theFruitNurb, GLU_SAMPLING_METHOD, GLU_DOMAIN_DISTANCE); gluNurbsProperty(theFruitNurb, GLU_DISPLAY_MODE, GLU_FILL); gluNurbsProperty(theFruitNurb, GLU_CULLING, GL_TRUE); gluNurbsProperty(theFruitNurb, GLU_U_STEP, 20.); gluNurbsProperty(theFruitNurb, GLU_V_STEP, 20.); glNewList(gHQFruit, GL_COMPILE); DrawFruit(); glEndList(); gluDeleteNurbsRenderer(theFruitNurb); /* create a dot */ glNewList(gHQDot, GL_COMPILE); DrawDot(10); glEndList(); }