author | ecalot
<ecalot> 2004-08-12 06:06:16 UTC |
committer | ecalot
<ecalot> 2004-08-12 06:06:16 UTC |
parent | da228e64818b379d49406e838d5b7c29429502ad |
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;