From 24e41ab4c892a7cecee2d4e5e625afd83de43034 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Mon, 24 Jan 2011 13:32:11 +0200 Subject: [PATCH] Mainly some texture tweaking --- data/coalstone.png | Bin 1557 -> 1523 bytes data/grass.png | Bin 1683 -> 855 bytes data/grass_footsteps.png | Bin 1609 -> 856 bytes data/grass_side.png | Bin 0 -> 1695 bytes data/leaves.png | Bin 913 -> 1652 bytes data/mud_with_grass.png | Bin 1596 -> 0 bytes data/stone.png | Bin 1609 -> 1563 bytes data/water.png | Bin 214 -> 1040 bytes src/constants.h | 2 + src/irrlichtwrapper.cpp | 34 ++++++++++++++++ src/irrlichtwrapper.h | 10 +++++ src/main.cpp | 18 +++++---- src/map.cpp | 6 +-- src/mapblock.cpp | 4 +- src/tile.cpp | 82 ++++++++++++++++++++++++++++++++++----- src/tile.h | 5 +-- 16 files changed, 135 insertions(+), 26 deletions(-) create mode 100644 data/grass_side.png delete mode 100644 data/mud_with_grass.png diff --git a/data/coalstone.png b/data/coalstone.png index c993a02f04648f724961ca602c489a917d54fb86..0c62a192f605f02f7b24079808e034961b037885 100644 GIT binary patch delta 720 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 U>`z{9ZBcv-=;$gr=ddN>f9e$yK>z>% diff --git a/data/grass_side.png b/data/grass_side.png new file mode 100644 index 0000000000000000000000000000000000000000..ee12491e8deb8177f481b7038ae3d908b734e966 GIT binary patch literal 1695 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 diff --git a/src/constants.h b/src/constants.h index 3cb2850..f90b278 100644 --- a/src/constants.h +++ b/src/constants.h @@ -32,6 +32,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #define DEBUGFILE "debug.txt" +#define WATER_ALPHA 160 + // Define for simulating the quirks of sending through internet. // Causes the socket class to deliberately drop random packets. // This disables unit testing of socket and connection. diff --git a/src/irrlichtwrapper.cpp b/src/irrlichtwrapper.cpp index fe4ff27..e26cbfd 100644 --- a/src/irrlichtwrapper.cpp +++ b/src/irrlichtwrapper.cpp @@ -175,6 +175,40 @@ video::ITexture * CrackTextureMod::make(video::ITexture *original, return newtexture; } +video::ITexture * SideGrassTextureMod::make(video::ITexture *original, + const char *newname, video::IVideoDriver* driver) +{ + // Size of the base image + core::dimension2d dim(16, 16); + // Position to copy the grass to in the base image + core::position2d pos_base(0, 0); + // Position to copy the grass from in the grass image + core::position2d pos_other(0, 0); + + video::IImage *baseimage = driver->createImage(original, pos_base, dim); + assert(baseimage); + + video::IImage *grassimage = driver->createImageFromFile(porting::getDataPath("grass_side.png").c_str()); + assert(grassimage); + + // Then copy the right part of grassimage to baseimage + + grassimage->copyToWithAlpha(baseimage, v2s32(0,0), + core::rect(pos_other, dim), + video::SColor(255,255,255,255), + NULL); + + grassimage->drop(); + + // Create texture from resulting image + + video::ITexture *newtexture = driver->addTexture(newname, baseimage); + + baseimage->drop(); + + return newtexture; +} + video::ITexture * ProgressBarTextureMod::make(video::ITexture *original, const char *newname, video::IVideoDriver* driver) { diff --git a/src/irrlichtwrapper.h b/src/irrlichtwrapper.h index ce54b70..97607e5 100644 --- a/src/irrlichtwrapper.h +++ b/src/irrlichtwrapper.h @@ -97,6 +97,16 @@ struct CrackTextureMod: public TextureMod u16 progression; }; +struct SideGrassTextureMod: public TextureMod +{ + SideGrassTextureMod() + { + } + + virtual video::ITexture * make(video::ITexture *original, + const char *newname, video::IVideoDriver* driver); +}; + struct ProgressBarTextureMod: public TextureMod { // value is from 0.0 to 1.0 diff --git a/src/main.cpp b/src/main.cpp index 7c5f6bf..092d629 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -76,9 +76,6 @@ SUGG: Split MapBlockObject serialization to to-client and to-disk - This will allow saving ages of rats on disk but not sending them to clients -SUGG: Implement lighting using VoxelManipulator - - Would it be significantly faster? - SUGG: MovingObject::move and Player::move are basically the same. combine them. @@ -168,6 +165,8 @@ TODO: Make fetching sector's blocks more efficient when rendering sectors that have very large amounts of blocks (on client) - Is this necessary at all? +TODO: Flowing water animation + Configuration: -------------- @@ -231,8 +230,8 @@ Block object server side: - TODO: For incoming blocks, time difference is calculated and objects are stepped according to it. -Map generator: --------------- +Map: +---- NOTE: There are some lighting-related todos and fixmes in ServerMap::emergeBlock. And there always will be. 8) @@ -245,6 +244,8 @@ TODO: Map generator version 2 - Cliffs, arcs - There could be a certain height (to which mountains only reach) where some minerals are found + - Create a system that allows a huge amount of different "map + generator modules/filters" TODO: Change AttributeList to split the area into smaller sections so that searching won't be as heavy. @@ -256,6 +257,10 @@ FIXME: The new pre-sunlight-propagation code messes up with initial TODO: Remove HMParams +TODO: Flowing water to actually contain flow direction information + +TODO: Faster lighting using VoxelManipulator + Doing now: ---------- @@ -1532,8 +1537,7 @@ int main(int argc, char *argv[]) */ init_content_inventory_texture_paths(); - init_tile_texture_paths(); - tile_materials_preload(g_irrlicht); + init_tile_textures(); /* GUI stuff diff --git a/src/map.cpp b/src/map.cpp index 5655ee9..09fb154 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1624,7 +1624,7 @@ void Map::transformLiquids(core::map & modified_blocks) } // If n2_changed to bottom, don't flow anywhere else - if(to_bottom && flowed) + if(to_bottom && flowed && !is_source) break; }catch(InvalidPositionException &e) @@ -1770,7 +1770,7 @@ ServerMap::ServerMap(std::string savedir, HMParams hmp, MapParams mp): float randmax = 0; float randfactor = 0; - if(myrand()%4 == 0) + if(myrand()%5 == 0) { baseheight = 100; randmax = 50; @@ -2602,7 +2602,7 @@ continue_generating: (float)(myrand()%ued)+0.5 ); s16 min_d = 0; - s16 max_d = 6; + s16 max_d = 4; s16 rs = (myrand()%(max_d-min_d+1))+min_d; v3f vec = rp - orp; diff --git a/src/mapblock.cpp b/src/mapblock.cpp index f18cb2f..620c29f 100644 --- a/src/mapblock.cpp +++ b/src/mapblock.cpp @@ -268,7 +268,7 @@ void MapBlock::makeFastFace(TileSpec tile, u8 light, v3f p, if(tile.id == TILE_WATER) { - alpha = 128; + alpha = WATER_ALPHA; } video::SColor c = video::SColor(alpha,li,li,li); @@ -797,7 +797,7 @@ void MapBlock::updateMesh(u32 daynight_ratio) }catch(InvalidPositionException &e){} u8 l = decode_light(n.getLightBlend(daynight_ratio)); - video::SColor c(128,l,l,l); + video::SColor c(WATER_ALPHA,l,l,l); // Neighbor water levels (key = relative position) // Includes current node diff --git a/src/tile.cpp b/src/tile.cpp index 90de116..79d68d4 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", -}; +};*/ -std::string g_tile_texture_path_strings[TILES_COUNT]; +/* + 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]; 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; } diff --git a/src/tile.h b/src/tile.h index b6dcb24..5869c03 100644 --- a/src/tile.h +++ b/src/tile.h @@ -99,13 +99,10 @@ struct TileSpec Functions */ -void init_tile_texture_paths(); +void init_tile_textures(); const char * tile_texture_path_get(u32 i); -// Initializes g_tile_materials -void tile_materials_preload(IrrlichtWrapper *irrlicht); - video::SMaterial & tile_material_get(u32 i); #endif