git » fp-git.git » commit 7401f43

improved map handling functions

author ecalot
2004-08-12 06:06:16 UTC
committer ecalot
2004-08-12 06:06:16 UTC
parent da228e64818b379d49406e838d5b7c29429502ad

improved map handling functions

FP/src/include/maps.h +3 -0
FP/src/include/room.h +2 -2
FP/src/ker/kernel.c +5 -5
FP/src/res/maps.c +5 -4

diff --git a/FP/src/include/maps.h b/FP/src/include/maps.h
index 9be2ac2..e0fb497 100644
--- a/FP/src/include/maps.h
+++ b/FP/src/include/maps.h
@@ -35,6 +35,8 @@ maps.c: Freeprince : Map handling library
 
 #include "map_defs.h"
 
+#include "room.h"
+
 typedef enum {eLeft=0,eRight=1,eUp=2,eDown=3}tDirection;
 
 int levelUse(void* level);
@@ -43,6 +45,7 @@ int levelUse(void* level);
  *
  * Return 0 on success
  */
+tTile levelGetTile(tRoom* room,int x, int y);
 
 int levelGetScreenWalls(unsigned char* data,unsigned char* borders);
 /* nt levelGetRoom (tRoom* room); */
diff --git a/FP/src/include/room.h b/FP/src/include/room.h
index 5402d3c..1043c62 100644
--- a/FP/src/include/room.h
+++ b/FP/src/include/room.h
@@ -34,7 +34,6 @@ room.h: FreePrince : Draw Screen
 #ifndef _ROOM_H_
 #define _ROOM_H_
 
-#include "maps.h"
 
 typedef char tRoomId;
 typedef unsigned char tTileId;
@@ -61,9 +60,10 @@ typedef struct {
 	int isWall;
 	int hasSword;
 
+	char code;
 } tTile;
 
-void drawScreen(/*tRoom room, */int layer); /* TODO: rename it to roomDraw */
+void drawScreen(/*tRoom room, */int layer,int level); /* TODO: rename it to roomDraw */
 
 #endif
 
diff --git a/FP/src/ker/kernel.c b/FP/src/ker/kernel.c
index 5f91473..3d0fe5e 100644
--- a/FP/src/ker/kernel.c
+++ b/FP/src/ker/kernel.c
@@ -50,7 +50,7 @@ int playgame(int optionflag,int level) {
 	tKid   kid=kidCreate();
 
 /* Game loop here */
-	drawScreen(4);
+	drawScreen(4,level);
 /* Level loop here */
 	outputClearScreen(); /* TODO: send to drawScreen(0) */
 	/*drawScreen(0); TODO: try to optimize what to draw */
@@ -67,11 +67,11 @@ int playgame(int optionflag,int level) {
 			
 			/* Drawing functions */
 			outputClearScreen(); /* TODO: send to drawScreen(0) */
-			drawScreen(0);
-			drawScreen(1);
-			drawScreen(2);
+			drawScreen(0,0);
+			drawScreen(1,0);
+			drawScreen(2,0);
 			kidDraw(kid);
-			drawScreen(3);
+			drawScreen(3,0);
 			outputUpdateScreen();
 		} else {
 			/* Action event */
diff --git a/FP/src/res/maps.c b/FP/src/res/maps.c
index ca472b1..f4254a9 100644
--- a/FP/src/res/maps.c
+++ b/FP/src/res/maps.c
@@ -91,8 +91,9 @@ tTile levelGetTile(tRoom* room,int x, int y) {
 
 	fore=room->fore[x+12*y];
 	back=room->back[x+12*y];
+	result.code=fore&0x1F;
 	
-	switch (fore) { /* TODO: use arrays and a better algorithm */
+	switch (result.code) { /* TODO: use arrays and a better algorithm */
 	case T_EMPTY:
 		result.walkable=0;
 		result.block=0;
@@ -108,11 +109,11 @@ tTile levelGetTile(tRoom* room,int x, int y) {
 	case T_DEBRIS:
 		result.walkable=1;
 		result.block=0;
-		result.hasTorch=(fore==T_TORCH);
+		result.hasTorch=(result.code==T_TORCH);
 		result.hasFloor=1;
-		result.hasBrokenTile=(fore==T_DEBRIS);
+		result.hasBrokenTile=(result.code==T_DEBRIS);
 		result.isWall=0;
-		result.hasSword=(fore==T_SWORD);
+		result.hasSword=(result.code==T_SWORD);
 		break;
 	case T_WALL:
 		result.walkable=0;