From 30a5db4172a16e94e1900e4a4ff0bd15df71a13e Mon Sep 17 00:00:00 2001 From: stpohle Date: Sun, 1 Jun 2003 21:23:09 +0000 Subject: [PATCH] gfx.c slow change to new powerup gfx engine --- src/gfx.c | 112 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 69 insertions(+), 43 deletions(-) diff --git a/src/gfx.c b/src/gfx.c index d9dae88..8aa30c3 100644 --- a/src/gfx.c +++ b/src/gfx.c @@ -774,6 +774,8 @@ gfx_copyscreen (SDL_Rect * wnd) SDL_BlitSurface (gfx.screen, wnd, res, &dest); return res; }; + +/* load the tileset or if not present the files from the default folder */ void gfx_load_tileset (char *tilesetname) { @@ -781,11 +783,13 @@ gfx_load_tileset (char *tilesetname) r, g, b; - char filename[LEN_PATHFILENAME]; + char fullname[LEN_PATHFILENAME]; + char filename[LEN_FILENAME]; char tileset[LEN_TILESETNAME]; SDL_Surface *tmpimage, *tmpimage1; float sfkt; + d_printf ("Loading Tileset: %s\n", tilesetname); strncpy (tileset, tilesetname, LEN_TILESETNAME); @@ -794,7 +798,6 @@ gfx_load_tileset (char *tilesetname) gfx.block.y = (gfx.res.y - 80) / (bman.fieldsize.y + 1); if (gfx.block.x < gfx.block.y) gfx.block.y = gfx.block.x; - else gfx.block.x = gfx.block.y; @@ -807,27 +810,16 @@ gfx_load_tileset (char *tilesetname) gfx.offset.y = gfx.res.y - (gfx.block.y * bman.fieldsize.y); /* load the fire */ - sprintf (filename, "%s/tileset/%s/fire.bmp", bman.datapath, tileset); - tmpimage = SDL_LoadBMP (filename); + sprintf (fullname, "%s/tileset/%s/fire.bmp", bman.datapath, tileset); + tmpimage = SDL_LoadBMP (fullname); if (tmpimage == NULL) { - /* file could not be load, so load teh default tileset */ - printf ("Can't load tileset: %s\n", SDL_GetError ()); - if (strcmp (tileset, "default") != 0) { - strcpy (tileset, "default"); - sprintf (filename, "%s/tileset/%s/fire.bmp", bman.datapath, tileset); - tmpimage = SDL_LoadBMP (filename); - if (tmpimage == NULL) { - printf ("default tileset could not be loaded.\n"); - exit (1); - } - - else - printf ("switching to default tileset.\n"); - } - - else + sprintf (fullname, "%s/tileset/default/fire.bmp", bman.datapath); + tmpimage = SDL_LoadBMP (fullname); + if (tmpimage == NULL) { + printf ("default tileset could not be loaded.\n"); exit (1); + } } gfx.fire.frames = tmpimage->h / GFX_IMGSIZE; tmpimage1 = @@ -840,11 +832,16 @@ gfx_load_tileset (char *tilesetname) SDL_FreeSurface (tmpimage1); /* load the bomb */ - sprintf (filename, "%s/tileset/%s/bomb.bmp", bman.datapath, tileset); - tmpimage = SDL_LoadBMP (filename); + sprintf (fullname, "%s/tileset/%s/bomb.bmp", bman.datapath, tileset); + tmpimage = SDL_LoadBMP (fullname); if (tmpimage == NULL) { - printf ("Can't load image: %s\n", SDL_GetError ()); - exit (1); + /* file could not be load, so load teh default tileset */ + sprintf (fullname, "%s/tileset/default/bomb.bmp", bman.datapath); + tmpimage = SDL_LoadBMP (fullname); + if (tmpimage == NULL) { + printf ("default tileset could not be loaded.\n"); + exit (1); + } } gfx.bomb.frames = tmpimage->h / GFX_IMGSIZE; tmpimage1 = @@ -856,41 +853,62 @@ gfx_load_tileset (char *tilesetname) SDL_FreeSurface (tmpimage); SDL_FreeSurface (tmpimage1); + /* load the powerup image */ + sprintf (fullname, "%s/tileset/%s/powerup.bmp", bman.datapath, tileset); + tmpimage = SDL_LoadBMP (fullname); + if (tmpimage == NULL) { + /* file could not be load, so load teh default tileset */ + sprintf (fullname, "%s/tileset/default/powerup.bmp", bman.datapath); + tmpimage = SDL_LoadBMP (fullname); + if (tmpimage == NULL) { + printf ("default tileset could not be loaded.\n"); + exit (1); + } + } + gfx.powerup.frames = tmpimage->h / GFX_IMGSIZE; + tmpimage1 = + scale_image (tmpimage, (tmpimage->w / GFX_IMGSIZE) * gfx.block.x, + gfx.bomb.frames * gfx.block.y); + SDL_SetColorKey (tmpimage1, SDL_SRCCOLORKEY, SDL_MapRGB (tmpimage1->format, 255, 0, 255)); + gfx.powerup.image = SDL_DisplayFormat (tmpimage1); + SDL_FreeSurface (tmpimage); + SDL_FreeSurface (tmpimage1); + /* loading the field images */ for (i = 0; i < FT_max; i++) { switch (i) { case (FT_nothing): - sprintf (filename, "%s/tileset/%s/background.bmp", bman.datapath, tileset); + sprintf (filename, "background.bmp"); break; case (FT_stone): - sprintf (filename, "%s/tileset/%s/stone.bmp", bman.datapath, tileset); + sprintf (filename, "stone.bmp"); break; case (FT_block): - sprintf (filename, "%s/tileset/%s/block.bmp", bman.datapath, tileset); + sprintf (filename, "block.bmp"); break; case (FT_death): - sprintf (filename, "%s/tileset/%s/fielddeath.bmp", bman.datapath, tileset); + sprintf (filename, "pwdeath.bmp"); break; case (FT_bomb): - sprintf (filename, "%s/tileset/%s/fieldbomb.bmp", bman.datapath, tileset); + sprintf (filename, "pwbomb.bmp"); break; case (FT_fire): - sprintf (filename, "%s/tileset/%s/fieldfire.bmp", bman.datapath, tileset); + sprintf (filename, "pwfire.bmp"); break; case (FT_shoe): - sprintf (filename, "%s/tileset/%s/fieldshoe.bmp", bman.datapath, tileset); + sprintf (filename, "pwshoe.bmp"); break; case (FT_sp_trigger): - sprintf (filename, "%s/tileset/%s/fieldstrigger.bmp", bman.datapath, tileset); + sprintf (filename, "sptrigger.bmp"); break; case (FT_sp_row): - sprintf (filename, "%s/tileset/%s/fieldsrow.bmp", bman.datapath, tileset); + sprintf (filename, "sprow.bmp"); break; case (FT_sp_push): - sprintf (filename, "%s/tileset/%s/fieldspush.bmp", bman.datapath, tileset); + sprintf (filename, "sppush.bmp"); break; case (FT_sp_kick): - sprintf (filename, "%s/tileset/%s/fieldskick.bmp", bman.datapath, tileset); + sprintf (filename, "spkick.bmp"); continue; // remove this if you find a kick image break; } @@ -901,16 +919,24 @@ gfx_load_tileset (char *tilesetname) gfx.field[i].image = SDL_DisplayFormat (tmpimage); } else { - tmpimage = SDL_LoadBMP (filename); - if (tmpimage == NULL) { - printf ("Can't load image: %s\n", SDL_GetError ()); - exit (1); - } + sprintf (fullname, "%s/tileset/%s/%s", bman.datapath, tileset, filename); + tmpimage = SDL_LoadBMP (fullname); + if (tmpimage == NULL) { + sprintf (fullname, "%s/tileset/default/%s", bman.datapath, filename); + tmpimage = SDL_LoadBMP (fullname); + if (tmpimage == NULL) { + printf ("Can't load image: %s\n", SDL_GetError ()); + exit (1); + } + } gfx.field[i].frames = tmpimage->h / GFX_IMGSIZE; tmpimage1 = scale_image (tmpimage, (tmpimage->w / GFX_IMGSIZE) * gfx.block.x, - gfx.field[i].frames * gfx.block.y); - SDL_SetColorKey (tmpimage1, SDL_SRCCOLORKEY, - SDL_MapRGB (tmpimage1->format, 255, 255, 255)); + gfx.field[i].frames * gfx.block.y); + if (i == FT_nothing || i == FT_block || i == FT_stone) + r = g = b = 255; + else + getRGBpixel (tmpimage1, 0, 0, &r, &g, &b); + SDL_SetColorKey (tmpimage1, SDL_SRCCOLORKEY, SDL_MapRGB (tmpimage1->format, r, g, b)); gfx.field[i].image = SDL_DisplayFormat (tmpimage1); SDL_FreeSurface (tmpimage); SDL_FreeSurface (tmpimage1);