X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fresources.cpp;h=e57ee37bf0145654c03fe02d9fe15b0387eb6dd7;hb=62ff7f7776875e9389d10ae2e7b6348e9e5cb9c7;hp=a39da2af3b34abba22a3e25c85f8b768e44b9b03;hpb=b431d0dbe74fbe0a9a453fd5021fd1d67a02d647;p=supertux.git diff --git a/src/resources.cpp b/src/resources.cpp index a39da2af3..e57ee37bf 100644 --- a/src/resources.cpp +++ b/src/resources.cpp @@ -17,19 +17,18 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +#include + #include "app/globals.h" #include "special/sprite_manager.h" -#include "audio/sound_manager.h" #include "app/setup.h" +#include "gui/menu.h" #include "gui/button.h" #include "scene.h" -#include "player.h" -#include "badguy.h" -#include "gameobjs.h" -#include "special.h" #include "resources.h" -#include "door.h" -#include "badguy_specs.h" +#include "tile_manager.h" +#include "object/gameobjs.h" +#include "object/player.h" Surface* img_waves[3]; Surface* img_water; @@ -54,7 +53,7 @@ MusicRef herring_song; MusicRef level_end_song; SpriteManager* sprite_manager = 0; -SoundManager* sound_manager = 0; +TileManager* tile_manager = 0; char * soundfilenames[NUM_SOUNDS] = { "/sounds/jump.wav", @@ -117,12 +116,14 @@ void loadshared() int i; - sprite_manager = new SpriteManager(datadir + "/images/supertux.strf"); + sprite_manager = new SpriteManager( + get_resource_filename("/images/supertux.strf")); + tile_manager = new TileManager("/images/tilesets/supertux.stgt"); /* Tuxes: */ - smalltux_star = sprite_manager->load("smalltux-star"); - bigtux_star = sprite_manager->load("bigtux-star"); - smalltux_gameover = sprite_manager->load("smalltux-gameover"); + smalltux_star = sprite_manager->create("smalltux-star"); + bigtux_star = sprite_manager->create("bigtux-star"); + smalltux_gameover = sprite_manager->create("smalltux-gameover"); char img_name[1024]; for (int i = 0; i < GROWING_FRAMES; i++) @@ -135,31 +136,28 @@ void loadshared() } small_tux = new TuxBodyParts(); - small_tux->head = NULL; - small_tux->body = sprite_manager->load("small-tux-body"); - small_tux->arms = sprite_manager->load("small-tux-arms"); - small_tux->feet = NULL; + small_tux->head = 0; + small_tux->body = sprite_manager->create("small-tux-body"); + small_tux->arms = sprite_manager->create("small-tux-arms"); + small_tux->feet = 0; big_tux = new TuxBodyParts(); - big_tux->head = sprite_manager->load("big-tux-head"); - big_tux->body = sprite_manager->load("big-tux-body"); - big_tux->arms = sprite_manager->load("big-tux-arms"); - big_tux->feet = sprite_manager->load("big-tux-feet"); + big_tux->head = sprite_manager->create("big-tux-head"); + big_tux->body = sprite_manager->create("big-tux-body"); + big_tux->arms = sprite_manager->create("big-tux-arms"); + big_tux->feet = sprite_manager->create("big-tux-feet"); fire_tux = new TuxBodyParts(); - fire_tux->head = sprite_manager->load("big-fire-tux-head"); - fire_tux->body = sprite_manager->load("big-tux-body"); - fire_tux->arms = sprite_manager->load("big-tux-arms"); - fire_tux->feet = sprite_manager->load("big-tux-feet"); + fire_tux->head = sprite_manager->create("big-fire-tux-head"); + fire_tux->body = sprite_manager->create("big-tux-body"); + fire_tux->arms = sprite_manager->create("big-tux-arms"); + fire_tux->feet = sprite_manager->create("big-tux-feet"); ice_tux = new TuxBodyParts(); - ice_tux->head = sprite_manager->load("big-tux-head"); - ice_tux->body = sprite_manager->load("big-tux-body"); - ice_tux->arms = sprite_manager->load("big-tux-arms"); - ice_tux->feet = sprite_manager->load("big-tux-feet"); - - /* Load Bad Guys resources */ - badguyspecs_manager = new BadGuySpecsManager(datadir + "/badguys.strf"); + ice_tux->head = sprite_manager->create("big-tux-head"); + ice_tux->body = sprite_manager->create("big-tux-body"); + ice_tux->arms = sprite_manager->create("big-tux-arms"); + ice_tux->feet = sprite_manager->create("big-tux-feet"); /* Water: */ img_water = new Surface(datadir + "/images/shared/water.png", false); @@ -217,20 +215,9 @@ void loadshared() img_cloud[1][3] = new Surface(datadir + "/images/shared/cloud-13.png", true); - /* Upgrades: */ - load_special_gfx(); - /* Objects */ load_object_gfx(); - // load the door object graphics: - door = sprite_manager->load("door"); - for (int i = 0; i < DOOR_OPENING_FRAMES; i++) - { - sprintf(img_name, "%s/images/shared/door-%i.png", datadir.c_str(), i+1); - door_opening[i] = new Surface(img_name, true); - } - /* Distros: */ img_distro[0] = new Surface(datadir + "/images/tilesets/coin1.png", true); @@ -266,7 +253,7 @@ void loadshared() /* Herring song */ herring_song = SoundManager::get - ()->load_music(datadir + "/music/SALCON.MOD"); + ()->load_music(datadir + "/music/salcon.mod"); level_end_song = SoundManager::get ()->load_music(datadir + "/music/leveldone.mod"); } @@ -274,6 +261,10 @@ void loadshared() /* Free shared data: */ void unloadshared(void) { + delete smalltux_star; + delete bigtux_star; + delete smalltux_gameover; + /* Free global images: */ delete gold_text; delete white_text; @@ -283,26 +274,23 @@ void unloadshared(void) delete white_big_text; delete yellow_nums; - int i; - - free_special_gfx(); + free_object_gfx(); delete img_water; - for (i = 0; i < 3; i++) + for (int i = 0; i < 3; i++) delete img_waves[i]; delete img_pole; delete img_poletop; - for (i = 0; i < 2; i++) + for (int i = 0; i < 2; i++) delete img_flag[i]; - for (i = 0; i < 4; i++) - { - delete img_distro[i]; - delete img_cloud[0][i]; - delete img_cloud[1][i]; - } + for (int i = 0; i < 4; i++) { + delete img_distro[i]; + delete img_cloud[0][i]; + delete img_cloud[1][i]; + } delete tux_life; @@ -311,20 +299,27 @@ void unloadshared(void) delete fire_tux; delete ice_tux; - for (int i = 0; i < GROWING_FRAMES; i++) - { + for (int i = 0; i < GROWING_FRAMES; i++) { delete growingtux_left[i]; delete growingtux_right[i]; } - // door game object: - - for (int i = 0; i < DOOR_OPENING_FRAMES; i++) - delete door_opening[i]; - delete sprite_manager; sprite_manager = 0; - sound_manager = 0; + delete tile_manager; + tile_manager = 0; } -/* EOF */ +std::string get_resource_filename(const std::string& resource) +{ + std::string filepath = st_dir + resource; + if(access(filepath.c_str(), R_OK) == 0) + return filepath; + + filepath = datadir + resource; + if(access(filepath.c_str(), R_OK) == 0) + return filepath; + + std::cerr << "Couldn't find resource: '" << resource << "'." << std::endl; + return ""; +}