Beispiel #1
0
void cleanUpGame()
{
    if(!player()->gameStarted) return;

    resetBtnAll();
    cleanUpDraw();
    txtFreeGameCharSet();
    freeField(&pf);
    gameState=GAMESTATEINIT;
    player()->gameStarted=0;

    //Free memory used for levelInfo
    freeLevelInfo( &pf.levelInfo );
}
Beispiel #2
0
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);
}
Beispiel #3
0
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);
}