summaryrefslogtreecommitdiff
path: root/SpriteMaps.cpp
diff options
context:
space:
mode:
authorJapa2010-05-04 10:54:06 +0000
committerJapa2010-05-04 10:54:06 +0000
commit4a51199a91b37a97edca760ffa22629499fd8d83 (patch)
treea84f3f5d37263034d38b347ed5d48a28319c6497 /SpriteMaps.cpp
parent6f188cc32530c8a422f1223741acb81ae7535c4d (diff)
downloadstonesense-4a51199a91b37a97edca760ffa22629499fd8d83.tar.gz
stonesense-4a51199a91b37a97edca760ffa22629499fd8d83.tar.bz2
stonesense-4a51199a91b37a97edca760ffa22629499fd8d83.tar.xz
updated to the latest DFhack, added the functionality to have seperate sprites for blocks, boulders, etc.
Diffstat (limited to 'SpriteMaps.cpp')
-rw-r--r--SpriteMaps.cpp54
1 files changed, 41 insertions, 13 deletions
diff --git a/SpriteMaps.cpp b/SpriteMaps.cpp
index b817e5a..769b1cd 100644
--- a/SpriteMaps.cpp
+++ b/SpriteMaps.cpp
@@ -4,8 +4,17 @@
#include "ContentLoader.h"
-t_SpriteWithOffset GetTerrainSpriteMap(int in, t_matglossPair material, vector<TerrainConfiguration*>& configTable)
+t_SpriteWithOffset GetTerrainSpriteMap(int in, t_matglossPair material, vector<TerrainConfiguration*>& configTable, uint16_t form)
{
+ int tempform;
+ if(form == constr_bar)
+ tempform = FORM_BAR;
+ if(form == constr_block)
+ tempform = FORM_BLOCK;
+ if(form == constr_boulder)
+ tempform = FORM_BOULDER;
+ if(form == constr_logs)
+ tempform = FORM_LOG;
// in case we need to return nothing
t_SpriteWithOffset defaultSprite = {
UNCONFIGURED_INDEX,
@@ -28,34 +37,47 @@ t_SpriteWithOffset GetTerrainSpriteMap(int in, t_matglossPair material, vector<T
// check material sanity
if (material.type<0 || material.type >= (int16_t)terrain->terrainMaterials.size())
{
- return terrain->defaultSprite;
+ if(terrain->defaultSprite[tempform].sheetIndex == UNCONFIGURED_INDEX)
+ return terrain->defaultSprite[0];
+ else return terrain->defaultSprite[tempform];
}
// find mat config
TerrainMaterialConfiguration* terrainMat = terrain->terrainMaterials[material.type];
if (terrainMat == NULL)
{
- return terrain->defaultSprite;
+ if(terrain->defaultSprite[tempform].sheetIndex == UNCONFIGURED_INDEX)
+ return terrain->defaultSprite[0];
+ else return terrain->defaultSprite[tempform];
}
// return subtype, type default or terrain default as available
// do map lookup
- map<int,t_SpriteWithOffset>::iterator it = terrainMat->overridingMaterials.find(material.index);
- if (it != terrainMat->overridingMaterials.end())
+ map<int,t_SpriteWithOffset>::iterator it = terrainMat->overridingMaterials[tempform].find(material.index);
+ if (it != terrainMat->overridingMaterials[tempform].end())
{
return it->second;
}
- if (terrainMat->defaultSprite.sheetIndex != UNCONFIGURED_INDEX)
+ if (terrainMat->defaultSprite[tempform].sheetIndex != UNCONFIGURED_INDEX)
{
- return terrainMat->defaultSprite;
+ return terrainMat->defaultSprite[tempform];
}
- return terrain->defaultSprite;
+ it = terrainMat->overridingMaterials[0].find(material.index);
+ if (it != terrainMat->overridingMaterials[0].end())
+ {
+ return it->second;
+ }
+ if (terrainMat->defaultSprite[0].sheetIndex != UNCONFIGURED_INDEX)
+ {
+ return terrainMat->defaultSprite[0];
+ }
+ return terrain->defaultSprite[0];
}
-t_SpriteWithOffset GetFloorSpriteMap(int in, t_matglossPair material){
- return GetTerrainSpriteMap(in, material, contentLoader.terrainFloorConfigs);
+t_SpriteWithOffset GetFloorSpriteMap(int in, t_matglossPair material, uint16_t form){
+ return GetTerrainSpriteMap(in, material, contentLoader.terrainFloorConfigs, form);
}
-t_SpriteWithOffset GetBlockSpriteMap(int in, t_matglossPair material){
- return GetTerrainSpriteMap(in, material, contentLoader.terrainBlockConfigs);
+t_SpriteWithOffset GetBlockSpriteMap(int in, t_matglossPair material, uint16_t form){
+ return GetTerrainSpriteMap(in, material, contentLoader.terrainBlockConfigs, form);
}
t_SpriteWithOffset GetSpriteVegetation( TileClass type, int index)
@@ -97,7 +119,13 @@ t_SpriteWithOffset GetSpriteVegetation( TileClass type, int index)
graphicSet = &(contentLoader.shrubConfigs);
break;
default:
- t_SpriteWithOffset defaultSprite = {SPRITEOBJECT_BLANK,0,0,-1,ALL_FRAMES};
+ t_SpriteWithOffset defaultSprite =
+ {SPRITEOBJECT_BLANK,
+ 0,
+ 0,
+ -1,
+ 0,
+ ALL_FRAMES};
return defaultSprite;
}