git » fp-git.git » commit 6c798cb

improved room drawing abstraction to make all items the same

author ecalot
2005-03-05 09:43:49 UTC
committer ecalot
2005-03-05 09:43:49 UTC
parent 85ec833d3a475ff81505e7348e787ff6de6ecdc3

improved room drawing abstraction to make all items the same

FP/src/include/room.h +14 -14
FP/src/ker/room.c +4 -4

diff --git a/FP/src/include/room.h b/FP/src/include/room.h
index 48d633d..17d1b3b 100644
--- a/FP/src/include/room.h
+++ b/FP/src/include/room.h
@@ -46,11 +46,11 @@ void roomLoadGfx(long environment); /* Only to initialize environment by mapStar
 int roomPress(tRoom* room, tObject* obj);
 void roomKidChangedFloor(tRoom* room, tObject* kid);
 
-#define drawAllLeft(left,tile) \
+#define drawAllLeft(x,y,left,tile) \
 	/* Gate/left */\
 	if (isIn(left,TILES_DOOR)) {\
 		e(15,(x-1)*TILE_W+0,y*TILE_H+2);\
-		drawGate((x-1)*TILE_W+0,(y-1)*TILE_H+3,gateGetFrame(left));\
+		drawGate((x-1)*TILE_W+0,y*TILE_H-TILE_H+3,gateGetFrame(left));\
 	}\
 	/* normal/left */\
 	if (isIn(left,TILES_FLOOR)) \
@@ -105,31 +105,31 @@ void roomKidChangedFloor(tRoom* room, tObject* kid);
 	if (isIn(left,TILES_BLUEPOTION))\
 		drawPotionBlueBubbles((x-1)*TILE_W+3-15,y*TILE_H-15,isIn(left,TILES_BIGPOTION));
 
-#define drawAllTile(left,tile) \
+#define drawAllTile(x,y,left,tile) \
 	/* Wall/left */\
 	if ((!isIn(tile,TILES_WALL))&&(isIn(left,TILES_WALL))) \
 		e(63,(x-1)*TILE_W+0,y*TILE_H+2);\
 	/* torch/this */\
 	if (isIn(tile,TILES_TORCH)) { /* animation */\
-		drawTorchFire(x*TILE_W+11,y*TILE_H-39); \
+		drawTorchFire((x-1)*TILE_W+11+TILE_W,y*TILE_H-39); \
 		/* base */\
-		e(56,x*TILE_W+3,y*TILE_H-24);\
+		e(56,(x-1)*TILE_W+3+TILE_W,y*TILE_H-24);\
 	}\
 	/* chopper/this */\
 	if (isIn(tile,TILE_CHOPPER)) \
 		drawChopper((x-1)*TILE_W+0,y*TILE_H,chopperGetFrame(tile),layCBack);\
 	/* empty_bricks/this */\
 	if (isIn(tile,TILES_BRICKE1)) \
-		e(52,x*TILE_W+0,y*TILE_H-18);\
+		e(52,(x-1)*TILE_W+TILE_W+0,y*TILE_H-18);\
 	if (isIn(tile,TILES_BRICKE2)) \
-		e(53,x*TILE_W+0,y*TILE_H-18);\
+		e(53,(x-1)*TILE_W+TILE_W+0,y*TILE_H-18);\
 	if (isIn(tile,TILES_WINDOW)) \
-		e(54,x*TILE_W+0,y*TILE_H-18);\
+		e(54,(x-1)*TILE_W+TILE_W+0,y*TILE_H-18);\
 	/* floor_bricks/this */\
 	if (isIn(tile,TILES_BRICKF1)) \
-		e(12,x*TILE_W+0,y*TILE_H-18);\
+		e(12,(x-1)*TILE_W+TILE_W+0,y*TILE_H-18);\
 	if (isIn(tile,TILES_BRICKF2)) \
-		e(13,x*TILE_W+0,y*TILE_H-18);\
+		e(13,(x-1)*TILE_W+TILE_W+0,y*TILE_H-18);\
 	/* gate/this */\
 	if (isIn(tile,TILES_DOOR)) \
 		e(14,(x-1)*TILE_W+0,y*TILE_H+0);\
@@ -179,7 +179,7 @@ void roomKidChangedFloor(tRoom* room, tObject* kid);
 	if (isIn(tile,TILES_SKELETON)) \
 		e(80,(x-1)*TILE_W+0,y*TILE_H+0);
 
-#define drawAllBack(left,tile,right,dleft) \
+#define drawAllBack(x,y,left,tile,right,dleft) \
 	/* loose moving */\
 	if (isIn(tile,TILES_LOOSEMOVING)) \
 		drawLoose((x-1)*TILE_W+0,y*TILE_H+3,looseGetFrame(tile),layBase);\
@@ -221,12 +221,12 @@ void roomKidChangedFloor(tRoom* room, tObject* kid);
 \
 	/* upper objects */\
 	if (isIn(tile,TILE_EXIT_LEFT)) \
-		e(6,x*TILE_W+0,(y-1)*TILE_H+3);\
+		e(6,(x-1)*TILE_W+0+TILE_W,y*TILE_H-TILE_H+3);\
 	if (isIn(tile,TILE_EXIT_RIGHT)) \
-		e(8,x*TILE_W+0,(y-1)*TILE_H+3);
+		e(8,(x-1)*TILE_W+0+TILE_W,y*TILE_H-TILE_H+3);
 
 
-#define drawAllFore(left,tile,right) \
+#define drawAllFore(x,y,left,tile,right) \
 	/* pillar */\
 	if (isIn(tile,TILES_PILLAR)) \
 		e(46,x*TILE_W-24,y*TILE_H+0);\
diff --git a/FP/src/ker/room.c b/FP/src/ker/room.c
index 6c2c1d9..cb37fe2 100644
--- a/FP/src/ker/room.c
+++ b/FP/src/ker/room.c
@@ -289,8 +289,8 @@ void drawChopper(int x, int y, int frame, tChopperLayer layer) {
 void drawBackPanel(tRoom* room,int x, int y) {
 	tTile tile=roomGetTile(room,x,y);
 	tTile left=roomGetTile(room,x-1,y);
-	drawAllLeft(left,tile);
-	drawAllTile(left,tile);
+	drawAllLeft(x,y,left,tile);
+	drawAllTile(x,y,left,tile);
 }
 
 /* bottom panel block at background */
@@ -300,7 +300,7 @@ void drawBackBottomTile(tRoom* room,int x, int 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);
-	drawAllBack(left,tile,right,dleft) \
+	drawAllBack(x,y,left,tile,right,dleft) \
 }
 
 /* main panel block */
@@ -311,7 +311,7 @@ void drawForePanel(tRoom* room,int x, int y) {
 	tTile tile=roomGetTile(room,x,y);
 	tTile right=roomGetTile(room,x+1,y);
 	int cases=wallGetCase(left,tile,right);
-	drawAllFore(left,tile,right);
+	drawAllFore(x,y,left,tile,right);
 }	
 
 /*