summaryrefslogtreecommitdiff
path: root/GameBuildings.cpp
diff options
context:
space:
mode:
authorJonas Ask2009-10-26 17:21:26 +0000
committerJonas Ask2009-10-26 17:21:26 +0000
commit6dec738a8917ab1cc824b1b28059ed79c4090f13 (patch)
tree40ca5460032d8b0d30a669fcf99fba2adc369f5d /GameBuildings.cpp
parent5db20febfa15e1465c11bc0c4c785c7667d728b4 (diff)
downloadstonesense-6dec738a8917ab1cc824b1b28059ed79c4090f13.tar.gz
stonesense-6dec738a8917ab1cc824b1b28059ed79c4090f13.tar.bz2
stonesense-6dec738a8917ab1cc824b1b28059ed79c4090f13.tar.xz
Reworked how buildings are assigned sprites. Much more dynamic now.
Added more configurable options for buildings.
Diffstat (limited to 'GameBuildings.cpp')
-rw-r--r--GameBuildings.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/GameBuildings.cpp b/GameBuildings.cpp
index 3d3dded..cb8d600 100644
--- a/GameBuildings.cpp
+++ b/GameBuildings.cpp
@@ -8,7 +8,7 @@ vector<BuildingConfiguration> buildingTypes;
vector <string> v_buildingtypes;//should be empty for all buildings
-void loadSpecialBuildingTypes (WorldSegment* segment, Block* b, uint32_t relativex, uint32_t relativey, uint32_t height);
+void loadBuildingSprites( Block* b );
int BlockNeighbourhoodType_simple(WorldSegment* segment, Block* b, bool validationFuctionProc(Block*) ){
uint32_t x,y,z;
@@ -89,7 +89,7 @@ void MergeBuildingsToSegment(vector<t_building>* buildings, WorldSegment* segmen
for(uint32_t i=0; i < buildings->size(); i++){
tempbuilding = (*buildings)[i];
- int bheight = tempbuilding.y2 - tempbuilding.y1;
+ //int bheight = tempbuilding.y2 - tempbuilding.y1;
for(uint32_t yy = tempbuilding.y1; yy <= tempbuilding.y2; yy++)
for(uint32_t xx = tempbuilding.x1; xx <= tempbuilding.x2; xx++){
Block* b;
@@ -98,21 +98,26 @@ void MergeBuildingsToSegment(vector<t_building>* buildings, WorldSegment* segmen
//handle special case where zones overlap buildings, and try to replace them
if(b->building.info.type != BUILDINGTYPE_NA && tempbuilding.type == BUILDINGTYPE_ZONE )
continue;
-
+
b->building.info = tempbuilding;
- //b->building.x1 = b->building.x2 = xx;
- //b->building.y1 = b->building.y2 = yy;
- loadSpecialBuildingTypes(segment, b, xx-tempbuilding.x1, yy-tempbuilding.y1, bheight);
}
}
-
index++;
}
+
+ //all blocks in the segment now have their building info loaded.
+ //now set their sprites
+ for(uint32_t i=0; i < segment->getNumBlocks(); i++){
+ Block* b = segment->getBlock( i );
+ if( b->building.info.type != BUILDINGTYPE_NA && b->building.info.type != BUILDINGTYPE_BLACKBOX )
+ loadBuildingSprites( b );
+ }
+
}
-void loadSpecialBuildingTypes (WorldSegment* segment, Block* b, uint32_t relativex, uint32_t relativey, uint32_t height){
+void loadBuildingSprites ( Block* b){
uint32_t i,j;
bool foundBlockBuildingInfo = false;
for(i = 0; i < buildingTypes.size(); i++){