From 24e41ab4c892a7cecee2d4e5e625afd83de43034 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Mon, 24 Jan 2011 13:32:11 +0200 Subject: Mainly some texture tweaking --- src/tile.cpp | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 72 insertions(+), 10 deletions(-) (limited to 'src/tile.cpp') diff --git a/src/tile.cpp b/src/tile.cpp index 90de11642..79d68d4c3 100644 --- a/src/tile.cpp +++ b/src/tile.cpp @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., // A mapping from tiles to paths of textures -const char * g_tile_texture_filenames[TILES_COUNT] = +/*const char * g_tile_texture_filenames[TILES_COUNT] = { NULL, "stone.png", @@ -37,13 +37,19 @@ const char * g_tile_texture_filenames[TILES_COUNT] = "mese.png", "mud.png", "tree_top.png", - "mud_with_grass.png", + "mud.png_sidegrass", "cloud.png", "coalstone.png", "wood.png", -}; +};*/ + +/* + These can either be real paths or generated names of preloaded + textures (like "mud.png_sidegrass") +*/ +std::string g_tile_texture_paths[TILES_COUNT]; -std::string g_tile_texture_path_strings[TILES_COUNT]; +/*std::string g_tile_texture_path_strings[TILES_COUNT]; const char * g_tile_texture_paths[TILES_COUNT] = {0}; void init_tile_texture_paths() @@ -60,30 +66,86 @@ void init_tile_texture_paths() g_tile_texture_path_strings[i].c_str(); } } -} +}*/ const char * tile_texture_path_get(u32 i) { assert(i < TILES_COUNT); - return g_tile_texture_paths[i]; + //return g_tile_texture_paths[i]; + return g_tile_texture_paths[i].c_str(); } // A mapping from tiles to materials // Initialized at run-time. video::SMaterial g_tile_materials[TILES_COUNT]; -void tile_materials_preload(IrrlichtWrapper *irrlicht) +enum TileTextureModID +{ + TTMID_NONE, + TTMID_SIDEGRASS, +}; + +struct TileTextureSpec +{ + const char *filename; + enum TileTextureModID mod; +}; + +/* + Initializes g_tile_texture_paths with paths of textures, + generates generated textures and creates the tile material array. +*/ +void init_tile_textures() { + TileTextureSpec tile_texture_specs[TILES_COUNT] = + { + {NULL, TTMID_NONE}, + {"stone.png", TTMID_NONE}, + {"water.png", TTMID_NONE}, + {"grass.png", TTMID_NONE}, + {"tree.png", TTMID_NONE}, + {"leaves.png", TTMID_NONE}, + {"grass_footsteps.png", TTMID_NONE}, + {"mese.png", TTMID_NONE}, + {"mud.png", TTMID_NONE}, + {"tree_top.png", TTMID_NONE}, + {"mud.png", TTMID_SIDEGRASS}, + {"cloud.png", TTMID_NONE}, + {"coalstone.png", TTMID_NONE}, + {"wood.png", TTMID_NONE}, + }; + + for(s32 i=0; igetTexture(TextureSpec(path + mod_postfix, + path, mod)); + } + g_tile_texture_paths[i] = path + mod_postfix; + } + } + for(s32 i=0; igetTexture(path); + t = g_irrlicht->getTexture(path); assert(t != NULL); } @@ -99,7 +161,7 @@ void tile_materials_preload(IrrlichtWrapper *irrlicht) g_tile_materials[i].setTexture(0, t); } - + g_tile_materials[TILE_WATER].MaterialType = video::EMT_TRANSPARENT_VERTEX_ALPHA; //g_tile_materials[TILE_WATER].MaterialType = video::EMT_TRANSPARENT_ADD_COLOR; } -- cgit v1.2.3