summaryrefslogtreecommitdiff
path: root/GameBuildings.cpp
diff options
context:
space:
mode:
authorJapa2011-02-25 04:04:22 +0000
committerJapa2011-02-25 04:04:22 +0000
commita09db4ce3b65f033257ed8b2c819358d7e7f9e28 (patch)
tree61831f82c8efec825291b3d3e1dbe71c5bfa90e1 /GameBuildings.cpp
parent82e9e689d9b205286b5088d2407a3a014e7aeb99 (diff)
downloadstonesense-a09db4ce3b65f033257ed8b2c819358d7e7f9e28.tar.gz
stonesense-a09db4ce3b65f033257ed8b2c819358d7e7f9e28.tar.bz2
stonesense-a09db4ce3b65f033257ed8b2c819358d7e7f9e28.tar.xz
Got custom workshops to, well... work.
Diffstat (limited to 'GameBuildings.cpp')
-rw-r--r--GameBuildings.cpp41
1 files changed, 30 insertions, 11 deletions
diff --git a/GameBuildings.cpp b/GameBuildings.cpp
index bcb5b12..4644e46 100644
--- a/GameBuildings.cpp
+++ b/GameBuildings.cpp
@@ -145,6 +145,7 @@ void MergeBuildingsToSegment(vector<t_building>* buildings, WorldSegment* segmen
continue;
b->building.index = i;
b->building.info = tempbuilding;
+ b->building.custom_building_type = contentLoader.Bld->GetCustomWorkshopType(tempbuilding);
}
}
}
@@ -170,19 +171,37 @@ void loadBuildingSprites ( Block* b, DFHack::Context& DF){
WriteErr("Null Block skipped in loadBuildingSprites\n");
return;
}
-
- uint32_t numBuildings = (uint32_t)contentLoader.buildingConfigs.size();
- for(uint32_t i = 0; i < numBuildings; i++){
- BuildingConfiguration& conf = contentLoader.buildingConfigs[i];
- if(b->building.info.type != conf.gameID) continue;
-
- //check all sprites for one that matches all conditions
- if (conf.sprites != NULL && conf.sprites->BlockMatches(b))
- {
- foundBlockBuildingInfo = true;
+ if(b->building.custom_building_type == -1)
+ {
+ uint32_t numBuildings = (uint32_t)contentLoader.buildingConfigs.size();
+ for(uint32_t i = 0; i < numBuildings; i++){
+ BuildingConfiguration& conf = contentLoader.buildingConfigs[i];
+ if(b->building.info.type != conf.gameID) continue;
+
+ //check all sprites for one that matches all conditions
+ if (conf.sprites != NULL && conf.sprites->BlockMatches(b))
+ {
+ foundBlockBuildingInfo = true;
+ }
+ break;
}
- break;
}
+ else
+ {
+ uint32_t numCustBuildings = (uint32_t)contentLoader.customBuildingConfigs.size();
+ for(uint32_t i = 0; i < numCustBuildings; i++){
+ BuildingConfiguration& cust = contentLoader.customBuildingConfigs[i];
+ if(b->building.custom_building_type != cust.gameID) continue;
+
+ //check all sprites for one that matches all conditions
+ if (cust.sprites != NULL && cust.sprites->BlockMatches(b))
+ {
+ foundBlockBuildingInfo = true;
+ }
+ break;
+ }
+ }
+
//add yellow box, if needed. But only if the building was not found (this way we can have blank slots in buildings)
if(b->building.sprites.size() == 0 && foundBlockBuildingInfo == false){
c_sprite unknownBuildingSprite;