diff options
| author | Petr Mrázek | 2012-03-26 16:16:12 +0200 |
|---|---|---|
| committer | Petr Mrázek | 2012-03-26 16:16:12 +0200 |
| commit | f854810fb76a6c83a9ccd3a50f526963b5c85b90 (patch) | |
| tree | 53d4dc9001d65434a0de2f8a4b649772f9c3b63c /ContentLoader.cpp | |
| parent | a0f6808254168063449b4f7e93afbd879bd1fafd (diff) | |
| parent | df37cc7e59b3cf5fadfa680a68793b91810a30ff (diff) | |
| download | stonesense-f854810fb76a6c83a9ccd3a50f526963b5c85b90.tar.gz stonesense-f854810fb76a6c83a9ccd3a50f526963b5c85b90.tar.bz2 stonesense-f854810fb76a6c83a9ccd3a50f526963b5c85b90.tar.xz | |
Merge https://github.com/JapaMala/stonesense
Diffstat (limited to 'ContentLoader.cpp')
| -rw-r--r-- | ContentLoader.cpp | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/ContentLoader.cpp b/ContentLoader.cpp index 8997f75..eadb6f4 100644 --- a/ContentLoader.cpp +++ b/ContentLoader.cpp @@ -28,7 +28,8 @@ ContentLoader::~ContentLoader(void) //flush content on exit
flushBuildingConfig(&buildingConfigs);
flushTerrainConfig(terrainFloorConfigs);
- flushTerrainConfig(terrainBlockConfigs);
+ flushTerrainConfig(terrainBlockConfigs);
+ flushItemConfig(itemConfigs);
flushCreatureConfig();
colorConfigs.clear();
}
@@ -96,6 +97,7 @@ bool ContentLoader::Load(){ flushBuildingConfig(&buildingConfigs);
flushTerrainConfig(terrainFloorConfigs);
flushTerrainConfig(terrainBlockConfigs);
+ flushItemConfig(itemConfigs);
colorConfigs.clear();
creatureConfigs.clear();
treeConfigs.clear();
@@ -219,6 +221,7 @@ bool ContentLoader::reload_configs() flushBuildingConfig(&buildingConfigs);
flushTerrainConfig(terrainFloorConfigs);
flushTerrainConfig(terrainBlockConfigs);
+ flushItemConfig(itemConfigs);
colorConfigs.clear();
creatureConfigs.clear();
treeConfigs.clear();
@@ -372,6 +375,8 @@ bool ContentLoader::parseContentXMLFile( const char* filepath ){ runningResult &= parseColorContent( elemRoot );
else if( elementType.compare( "fluids" ) == 0 )
runningResult &= parseFluidContent( elemRoot );
+ else if( elementType.compare( "item" ) == 0 )
+ runningResult &= parseItemContent( elemRoot );
else
contentError("Unrecognised root element",elemRoot);
@@ -414,6 +419,11 @@ bool ContentLoader::parseFluidContent(TiXmlElement* elemRoot ){ return addSingleFluidConfig( elemRoot );
}
+bool ContentLoader::parseItemContent(TiXmlElement* elemRoot ){
+ return addSingleItemConfig( elemRoot );
+}
+
+
const char* getDocument(TiXmlNode* element)
{
//walk up the tree to the root
@@ -736,7 +746,7 @@ void ContentLoader::flushCreatureConfig() // make big enough to hold all creatures
creatureConfigs.clear();
}
-ALLEGRO_COLOR lookupMaterialColor(int matType,int matIndex)
+ALLEGRO_COLOR lookupMaterialColor(int matType,int matIndex, bool dye)
{
if (matType < 0)
{
@@ -746,13 +756,7 @@ ALLEGRO_COLOR lookupMaterialColor(int matType,int matIndex) if (matType >= contentLoader->colorConfigs.size())
{
//if it's more than the size of our colorconfigs, then just make a guess based off what DF tells us.
- MaterialInfo mat;
- if(mat.decode(matType, matIndex))
- return al_map_rgb_f(
- contentLoader->Mats->color[mat.material->state_color[0]].red,
- contentLoader->Mats->color[mat.material->state_color[0]].green,
- contentLoader->Mats->color[mat.material->state_color[0]].blue);
- else return al_map_rgb(255,255,255);
+ goto DFColor;
}
if (matIndex < 0)
{
@@ -760,24 +764,27 @@ ALLEGRO_COLOR lookupMaterialColor(int matType,int matIndex) }
if (matIndex >= contentLoader->colorConfigs.at(matType).colorMaterials.size())
{
- MaterialInfo mat;
- if(mat.decode(matType, matIndex))
- return al_map_rgb_f(
- contentLoader->Mats->color[mat.material->state_color[0]].red,
- contentLoader->Mats->color[mat.material->state_color[0]].green,
- contentLoader->Mats->color[mat.material->state_color[0]].blue);
- else return al_map_rgb(255,255,255);
+ goto DFColor;
}
if (contentLoader->colorConfigs.at(matType).colorMaterials.at(matIndex).colorSet)
{
return contentLoader->colorConfigs.at(matType).colorMaterials.at(matIndex).color;
}
+ DFColor:
MaterialInfo mat;
if(mat.decode(matType, matIndex))
- return al_map_rgb_f(
- contentLoader->Mats->color[mat.material->state_color[0]].red,
- contentLoader->Mats->color[mat.material->state_color[0]].green,
- contentLoader->Mats->color[mat.material->state_color[0]].blue);
+ {
+ if(dye)
+ return al_map_rgb_f(
+ contentLoader->Mats->color[mat.material->powder_dye].red,
+ contentLoader->Mats->color[mat.material->powder_dye].green,
+ contentLoader->Mats->color[mat.material->powder_dye].blue);
+ else
+ return al_map_rgb_f(
+ contentLoader->Mats->color[mat.material->state_color[0]].red,
+ contentLoader->Mats->color[mat.material->state_color[0]].green,
+ contentLoader->Mats->color[mat.material->state_color[0]].blue);
+ }
else return al_map_rgb(255,255,255);
}
@@ -816,6 +823,8 @@ ShadeBy getShadeType(const char* Input) if( strcmp(Input, "grass") == 0)
return ShadeGrass;
if( strcmp(Input, "equipment") == 0)
+ return ShadeEquip;
+ if( strcmp(Input, "item") == 0)
return ShadeItem;
return ShadeNone;
}
\ No newline at end of file |
