void cleanUpGame() { if(!player()->gameStarted) return; resetBtnAll(); cleanUpDraw(); txtFreeGameCharSet(); freeField(&pf); gameState=GAMESTATEINIT; player()->gameStarted=0; //Free memory used for levelInfo freeLevelInfo( &pf.levelInfo ); }
void editorCleanUp() { resetBtn(C_UP); resetBtn(C_DOWN); resetBtn(C_LEFT); resetBtn(C_RIGHT); resetBtn(C_BTNX); resetBtn(C_BTNB); //Free memory used for levelInfo freeLevelInfo( &pf.levelInfo ); //Free board and graphics here cleanUpDraw(); changed=0; freeField(&pf); //Free graphics SDL_FreeSurface(selBrickBG); SDL_FreeSurface(saveBtnBG); free(saveBtnSprite); }
int initDraw(levelInfo_t* li, SDL_Surface* screen) { char tempStr[512]; int i,x,y; //Background image graphics.boardImg = loadImg( packGetFile("themes",li->bgFile) ); if(!graphics.boardImg) { printf("Couldn't load board file:'%s'\n", packGetFile("themes",li->bgFile) ); cleanUpDraw(); return(0); } //Tileset sprintf(tempStr, "%s.png", li->tileBase); graphics.tileImg = loadImg( packGetFile("themes",tempStr) ); if(!graphics.tileImg) { printf("Couldn't load tile file:'%s'\n", packGetFile("themes",tempStr) ); cleanUpDraw(); return(0); } //Cut tiles into sprites for(i=0; i < NUMTILES; i++) { graphics.tiles[i] = cutSprite(graphics.tileImg, i*20, 0, 20,20); } //Single wall (Override tile15 in graphics.tiles) sprintf(tempStr, "%s.png", li->wallBase); graphics.wallImg = loadImg( packGetFile("themes",tempStr) ); if(!graphics.wallImg) { printf("Couldn't load wall file:'%s'\n", packGetFile("themes",tempStr) ); cleanUpDraw(); return(0); } //Override wall tile free(graphics.tiles[15]); graphics.tiles[15] = cutSprite(graphics.wallImg,0,0,20,20); //Extra walls, if they exist, if they don't, default to tile 6 (from 0) in tiles. sprintf(tempStr, "%s-extra.png", li->wallBase); graphics.wallsImg = loadImg( packGetFile("themes",tempStr) ); if(!graphics.wallsImg) printf("Optional GFX missing: '%s'\n", packGetFile("themes",tempStr) ); int r,c; //rows, column, sprite index i=0; for(r=0; r < 5; r++) { for(c=0; c < 3; c++) { if(graphics.wallsImg) { //Cut out from sheet x=c*20; y=r*20; graphics.walls[i] = cutSprite(graphics.wallsImg, x,y, 20, 20); } else { //Default to the freestanding wall graphics.walls[i] = cutSprite(graphics.wallImg, 0, 0, 20, 20); } i++; } } //Above loop leaves when i==15. //Middle-free is 15 = default tile index in image is 15 (starting from 0). graphics.walls[15] = cutSprite(graphics.wallImg, 0, 0, 20, 20); //Explosions, reuse R as frame number index for(i=0; i < BRICKSEND; i++) { //Open explosion sprintf(tempStr, "%s%02i.png", li->explBase, i); graphics.explImg[i] = loadImg( packGetFile("themes",tempStr) ); if(!graphics.explImg[i] && i==0) printf("Couldn't open '%s'\n",packGetFile("themes",tempStr) ); if(graphics.explImg[i]) graphics.brickExpl[i] = mkAni(graphics.explImg[i], 30,30, 0); else graphics.brickExpl[i] = mkAni(graphics.explImg[0], 30,30, 0); } //Per-Tile animations for(i=0; i < NUMTILES; i++) { sprintf(tempStr, "%s-tile%02i.png", li->tileBase, i); graphics.aniImg[i] = loadImg( packGetFile("themes",tempStr) ); graphics.tileAni[i] = mkAni(graphics.aniImg[i], 30,30, 80); } //Cursor graphics.curImg = loadImg( packGetFile( "themes/cursors",li->cursorFile) ); if( !graphics.curImg ) { printf("Warning: Couldn't find cursor '%s'\n", packGetFile( "themes/cursors",li->cursorFile)); } graphics.curSpr[0] = cutSprite(graphics.curImg, 0, 0, 28,28); graphics.curSpr[1] = cutSprite(graphics.curImg, 28, 0, 28,28); //Load countdown graphics.countDownImg = loadImg( packGetFile(".","countdown.png") ); if(!graphics.countDownImg) { printf("Error(5): couldn't load '%s'\n",packGetFile(".","countdown.png")); return(0); } //Cut countdown for(i=0; i < 4; i++) { graphics.countDownSpr[i] = cutSprite(graphics.countDownImg, 0,i*60, 140,60); } //Teleport path animation color gradient graphics.teleColorIndex=0; float f=255/TELEPATHNUMCOL; for(i=0; i < TELEPATHNUMCOL; i++) { graphics.teleColorTable[i] = SDL_MapRGB( screen->format, 0,(int)(255.0-(float)i*f),0 ); } return(1); }