summaryrefslogtreecommitdiff
path: root/GameBuildings.cpp
diff options
context:
space:
mode:
authorJonas Ask2009-10-20 19:20:35 +0000
committerJonas Ask2009-10-20 19:20:35 +0000
commite4614f535d4be2d015144a6bb2fe57bfdedd7b16 (patch)
treec7bcd6f78bc1e11a490d4e7d38bda895aac80037 /GameBuildings.cpp
parent2489644b5df063a2471f6b7a76a5212f4af60f71 (diff)
downloadstonesense-e4614f535d4be2d015144a6bb2fe57bfdedd7b16.tar.gz
stonesense-e4614f535d4be2d015144a6bb2fe57bfdedd7b16.tar.bz2
stonesense-e4614f535d4be2d015144a6bb2fe57bfdedd7b16.tar.xz
Started work on XML building configurations.
Diffstat (limited to 'GameBuildings.cpp')
-rw-r--r--GameBuildings.cpp36
1 files changed, 31 insertions, 5 deletions
diff --git a/GameBuildings.cpp b/GameBuildings.cpp
index b7dffce..9721cc4 100644
--- a/GameBuildings.cpp
+++ b/GameBuildings.cpp
@@ -2,7 +2,9 @@
#include "GUI.h"
#include "SpriteMaps.h"
#include "GameBuildings.h"
+#include "BuildingConfiguration.h"
+vector<BuildingConfiguration> buildingTypes;
void loadSpecialBuildingTypes (DisplaySegment* segment, Block* b, uint32_t relativex, uint32_t relativey, uint32_t height);
@@ -125,6 +127,25 @@ int layoutCarpenter[] = {
};
+void loadSpecialBuildingTypes1 (DisplaySegment* segment, Block* b, uint32_t relativex, uint32_t relativey, uint32_t height){
+ uint32_t i,j;
+
+ for(i = 0; i < buildingTypes.size(); i++){
+ BuildingConfiguration& conf = buildingTypes[i];
+ if(b->building.type != conf.gameID) continue;
+
+ //check all sprites for one that matches all conditions
+
+ for(j = 0; j < conf.sprites.size(); j++){
+ if(conf.sprites[j].BlockMatches(b)){
+ b->overridingBuildingType = conf.sprites[j].spriteIndex;
+ return;
+ }
+ }
+
+
+ }
+}
void loadSpecialBuildingTypes (DisplaySegment* segment, Block* b, uint32_t relativex, uint32_t relativey, uint32_t height){
@@ -192,7 +213,9 @@ void loadSpecialBuildingTypes (DisplaySegment* segment, Block* b, uint32_t relat
int getBuildingSprite(t_building &building, bool mirrored){
-
+ //return SPRITEOBJECT_NA;
+
+
switch(building.type){
case BUILDINGTYPE_DOOR:
if(building.material.type == Mat_Wood) {
@@ -257,14 +280,17 @@ int getBuildingSprite(t_building &building, bool mirrored){
return SPRITEOBJECT_NA;
}
-
+/*TODO: this function takes a massive amount of work, looping all buildings for every block*/
bool BlockHasSuspendedBuilding(vector<t_building>* buildingList, Block* b){
for(uint32_t i=0; i < buildingList->size(); i++){
t_building* building = &(*buildingList)[i];
+
+ //boundry check
+ if(b->z != building->z) continue;
+ if(b->x < building->x1 || b->x > building->x2) continue;
+ if(b->y < building->y1 || b->y > building->y2) continue;
+
if(building->type == BUILDINGTYPE_BRIDGE){
- if(b->z == building->z)
- if(b->x >= building->x1 && b->x <= building->x2)
- if(b->y >= building->y1 && b->y <= building->y2)
return true;
}
if(building->type == BUILDINGTYPE_ZONE)