git » fp-git.git » commit c24e242

better conditions. loose tiles down are space now

author ecalot
2005-03-02 13:10:30 UTC
committer ecalot
2005-03-02 13:10:30 UTC
parent 28e2559845a1577c479a50d7120587241d240ace

better conditions. loose tiles down are space now

FP/src/conf/awk/walls_conf.awk +1 -0
FP/src/conf/tiles.conf +1 -0
FP/src/ker/room.c +8 -14
FP/src/res/walls.c +2 -0

diff --git a/FP/src/conf/awk/walls_conf.awk b/FP/src/conf/awk/walls_conf.awk
index dec8ea2..bbf0457 100644
--- a/FP/src/conf/awk/walls_conf.awk
+++ b/FP/src/conf/awk/walls_conf.awk
@@ -242,5 +242,6 @@ END {
 	}
 	printf("}\n")
 	printf("#define WALL_COUNT_TABLES %d\n#define WALL_SIZE_TABLES %d\n",totalcount,totaltotal)
+	printf("#define WALL_LOC_NONE %d\n",loc+1)
 }
 
diff --git a/FP/src/conf/tiles.conf b/FP/src/conf/tiles.conf
index 5327991..a76c46a 100644
--- a/FP/src/conf/tiles.conf
+++ b/FP/src/conf/tiles.conf
@@ -92,6 +92,7 @@ tile LOOSE 11 none
 #it has floor and is walkable only if it is not down
 floor@Danger@info->action==eLosNormal
 walkable@Danger@info->action!=eLosDown
+space@Danger@info->action==eLosDown
 loosemoving@Danger@info->action==eLosMoving
 loosenormal@Danger@info->action==eLosNormal
 chopper_spike
diff --git a/FP/src/ker/room.c b/FP/src/ker/room.c
index 71ac011..d1f7b4b 100644
--- a/FP/src/ker/room.c
+++ b/FP/src/ker/room.c
@@ -429,24 +429,20 @@ void drawBackBottomTile(tRoom* room,int x, int y) {
 	tTile left=roomGetTile(room,x-1,y);
 	tTile tile=roomGetTile(room,x,y);
 	tTile right=roomGetTile(room,x+1,y);
+	tTile dleft=roomGetTile(room,x-1,(y==3)?3:(y+1));
 	int cases=wallGetCase(left,tile,right);
 
 	/* TODO: fix this conditions to make miniterms */
 	/* loose moving */
-	if (isIn(tile,TILES_LOOSEMOVING)) {
+	if (isIn(tile,TILES_LOOSEMOVING)) 
 		drawLoose((x-1)*TILE_W+0,y*TILE_H+3,looseGetFrame(tile),layBase);
-	
 	/* normal */
-	} else if (isIn(tile,TILES_WALKABLE)) {
-		if (isIn(tile,TILES_PRESSABLE)) {
-			/* TODO: drop has resource 59 for unpressed/raise 47? checkgame */
-			e(59,(x-1)*TILE_W+0,y*TILE_H+(isIn(tile,TILES_UNPRESSED)?3:4));
-		} else {
-			e(11,(x-1)*TILE_W+0,y*TILE_H+3);
-		}
-	} else {
+	if (isIn(tile,TILES_PRESSABLE)) 
+		/* TODO: drop has resource 59 for unpressed/raise 47? checkgame */
+		e(59,(x-1)*TILE_W+0,y*TILE_H+(isIn(tile,TILES_UNPRESSED)?3:4));
+	if (isIn(tile,TILES_WALKABLE)&&(!isIn(tile,TILES_LOOSEMOVING))&&(!isIn(tile,TILES_PRESSABLE)))
+		e(11,(x-1)*TILE_W+0,y*TILE_H+3);
 	/* wall */
-		if (isIn(tile,TILES_WALL)) {
 			/* there are 4 cases */
 			if (wallCase(WALL_LOC_WWW))
 				e(65,(x-1)*TILE_W+0,y*TILE_H+3);
@@ -456,9 +452,8 @@ void drawBackBottomTile(tRoom* room,int x, int y) {
 				e(67,(x-1)*TILE_W+0,y*TILE_H+3);
 			if (wallCase(WALL_LOC_SWS))
 				e(69,(x-1)*TILE_W+0,y*TILE_H+3);
-		} else {
+		if (isIn(tile,TILES_SPACE)) {
 	/* empty */
-			tTile dleft=roomGetTile(room,x-1,y+1);
 			/* tile, dleft*/
 			
 			/* gate_frame/this */
@@ -478,7 +473,6 @@ void drawBackBottomTile(tRoom* room,int x, int y) {
 			if (isIn(dleft,TILES_WALL)) 
 				e(64,(x-1)*TILE_W+0,y*TILE_H+3);
 		}
-	}
 	/* upper objects */
 	if (isIn(tile,TILE_EXIT_LEFT)) 
 		e(6,x*TILE_W+0,(y-1)*TILE_H+3);
diff --git a/FP/src/res/walls.c b/FP/src/res/walls.c
index 5494f07..4fa2759 100644
--- a/FP/src/res/walls.c
+++ b/FP/src/res/walls.c
@@ -35,6 +35,8 @@ tiles.c: FreePrince : Wall generation algorithm functions
 int wallGet(unsigned short env,unsigned short loc,unsigned short tab,unsigned short n) {
 	static unsigned long wallList[WALL_COUNT_TABLES][WALL_SIZE_TABLES]=WALL_ARRAYS;
 
+	if (loc==WALL_LOC_NONE) return 0; /* this is not a wall */
+	
 	if (!tab) {
 		return 0;
 	}	else {