author | ecalot
<ecalot> 2005-03-02 13:10:30 UTC |
committer | ecalot
<ecalot> 2005-03-02 13:10:30 UTC |
parent | 28e2559845a1577c479a50d7120587241d240ace |
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 {