diff options
| author | Japa | 2011-02-25 04:04:22 +0000 |
|---|---|---|
| committer | Japa | 2011-02-25 04:04:22 +0000 |
| commit | a09db4ce3b65f033257ed8b2c819358d7e7f9e28 (patch) | |
| tree | 61831f82c8efec825291b3d3e1dbe71c5bfa90e1 /GameBuildings.cpp | |
| parent | 82e9e689d9b205286b5088d2407a3a014e7aeb99 (diff) | |
| download | stonesense-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.cpp | 41 |
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;
|
