From 4592f26db756cb26ec7cdda8a0597a7787afa58c Mon Sep 17 00:00:00 2001 From: Caldfir Date: Mon, 16 Apr 2012 19:13:02 -0700 Subject: Fixed the glorious hot pink grass bug I created. --- Block.cpp | 3 +-- ContentLoader.cpp | 19 ++++++++++++------- ContentLoader.h | 2 ++ SpriteObjects.cpp | 3 +-- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Block.cpp b/Block.cpp index 5b102c3..1abf4bc 100644 --- a/Block.cpp +++ b/Block.cpp @@ -616,8 +616,7 @@ void Block::DrawPixel(int drawx, int drawy) (tileMaterial == tiletype_material::GRASS_DRY) || (tileMaterial == tiletype_material::GRASS_DEAD))) { - DFHack::t_matglossPair woodymat; woodymat.index = WOOD, woodymat.type = grassmat; - temp = lookupMaterialColor(woodymat); + temp = lookupMaterialColor(WOOD, grassmat); al_draw_pixel(drawx, drawy, al_map_rgba_f(temp.r,temp.g, temp.b, (float)grasslevel/100.0f)); } } diff --git a/ContentLoader.cpp b/ContentLoader.cpp index a3f7c26..c597f0b 100644 --- a/ContentLoader.cpp +++ b/ContentLoader.cpp @@ -749,16 +749,21 @@ void ContentLoader::flushCreatureConfig() ALLEGRO_COLOR lookupMaterialColor(DFHack::t_matglossPair matt) { - DFHack::t_matglossPair dyematt; - dyematt.index = -1, dyematt.type = -1; - return lookupMaterialColor(matt, dyematt); + return lookupMaterialColor((int) matt.type, (int) matt.index, -1, -1); } ALLEGRO_COLOR lookupMaterialColor(DFHack::t_matglossPair matt, DFHack::t_matglossPair dyematt) -{ - int matType = (int) matt.type; - int matIndex = (int) matt.index; +{ + return lookupMaterialColor((int) matt.type, (int) matt.index, (int) dyematt.type, (int) dyematt.index); +} +ALLEGRO_COLOR lookupMaterialColor(int matType, int matIndex) +{ + return lookupMaterialColor( matType, matIndex, -1, -1); +} + +ALLEGRO_COLOR lookupMaterialColor(int matType, int matIndex, int dyeType, int dyeIndex) +{ if (matType < 0) { //This should not normally happen, but if it does, we don't want crashes, so we'll return magic pink so show something's wrong. @@ -785,7 +790,7 @@ ALLEGRO_COLOR lookupMaterialColor(DFHack::t_matglossPair matt, DFHack::t_matglos MaterialInfo mat, dye; if(mat.decode(matType, matIndex)) { - if(dyematt.type>=0 && dyematt.index>=0 && dye.decode(dyematt.type, dyematt.index)) + if(dyeType>=0 && dyeIndex>=0 && dye.decode(dyeType, dyeIndex)) return al_map_rgb_f( contentLoader->Mats->color[dye.material->powder_dye].red * contentLoader->Mats->color[mat.material->state_color[0]].red, contentLoader->Mats->color[dye.material->powder_dye].green * contentLoader->Mats->color[mat.material->state_color[0]].green, diff --git a/ContentLoader.h b/ContentLoader.h index a1d0d9e..4bedeed 100644 --- a/ContentLoader.h +++ b/ContentLoader.h @@ -110,5 +110,7 @@ uint8_t lookupMaterialBright(int matType,int matIndex); const char *lookupTreeName(int matIndex); ALLEGRO_COLOR lookupMaterialColor(DFHack::t_matglossPair matt, DFHack::t_matglossPair dyematt); ALLEGRO_COLOR lookupMaterialColor(DFHack::t_matglossPair matt); +ALLEGRO_COLOR lookupMaterialColor(int matType, int matIndex, int dyeType, int dyeIndex); +ALLEGRO_COLOR lookupMaterialColor(int matType, int matIndex); const char * lookupFormName(int formType); ShadeBy getShadeType(const char* Input); diff --git a/SpriteObjects.cpp b/SpriteObjects.cpp index 3a30122..5b5ff5f 100644 --- a/SpriteObjects.cpp +++ b/SpriteObjects.cpp @@ -944,8 +944,7 @@ ALLEGRO_COLOR c_sprite::get_color(void* block) case ShadeMat: return lookupMaterialColor(b->material); case ShadeGrass: - DFHack::t_matglossPair woodymat; woodymat.index = WOOD, woodymat.type = b->grassmat; - return lookupMaterialColor(woodymat); + return lookupMaterialColor(WOOD, b->grassmat); case ShadeBuilding: return lookupMaterialColor(b->building.info.material); case ShadeLayer: -- cgit v1.2.1