author | ecalot
<ecalot> 2005-03-05 16:54:24 UTC |
committer | ecalot
<ecalot> 2005-03-05 16:54:24 UTC |
parent | 0e8ea60c269cfa71c1cf0649c8708181f0763eaf |
FP/src/conf/awk/room_conf.awk | +34 | -3 |
FP/src/conf/room.conf | +70 | -64 |
diff --git a/FP/src/conf/awk/room_conf.awk b/FP/src/conf/awk/room_conf.awk index 9dabaf7..e33174a 100644 --- a/FP/src/conf/awk/room_conf.awk +++ b/FP/src/conf/awk/room_conf.awk @@ -28,6 +28,32 @@ # DO NOT remove this copyright notice # +function replace() { + if (match(value,/[a-z]+[!=]=TILE[A-Z_0-9]+/)) { + r=RSTART + l=RLENGTH + head=substr(value,1,r-1) + tail=substr(value,r+l) + middle=substr(value,r,l) + if (match(middle,/==/)) { + r=RSTART + l=RLENGTH + val1=substr(middle,1,r-1) + val2=substr(middle,r+l) + not="" + } else { + match(middle,/!=/) + r=RSTART + l=RLENGTH + val1=substr(middle,1,r-1) + val2=substr(middle,r+l) + not="!" + } + value=sprintf("%s%sisIn(%s,%s)%s", head, not, val1, val2, tail) + } else { + keep=0 + } +} /^[\t ]*XX .*/ { if (inIf) printf("}\n"); @@ -38,7 +64,10 @@ /^[\t ]*cond / { if (inIf) printf("}\\\n"); $1="" - printf("if (%s) {\\\n",$0) + value=$0 + keep=1 + while (keep) replace() + printf("if (%s) {\\\n",value) inIf=1 } @@ -47,10 +76,12 @@ x=$2 y=$3 $1=$2=$3="" - r=$0 + value=$0 + keep=1 + while (keep) replace() comma="," if ($0~/^[\t ]*$/) comma="" - printf("%s((x)+(%s),(y)+(%s)%s%s);\\\n",f,x,y,comma,r); + printf("%s((x)+(%s),(y)+(%s)%s%s);\\\n",f,x,y,comma,value); } END { diff --git a/FP/src/conf/room.conf b/FP/src/conf/room.conf index 86dc6a9..c163009 100644 --- a/FP/src/conf/room.conf +++ b/FP/src/conf/room.conf @@ -1,151 +1,157 @@ # vim: set ts=10 +#TODO: use AllLeft instead of cond in AllLeft defines +# replace && and || for AND and OR +# add space support in aaa == kkkk +# replace wallGetblablabla(WALL_blablabla for WALL_blablabla +# order the elements by tile and not by layer + XX AllLeft # Gate/left - cond isIn(left,TILES_DOOR) + cond left==TILES_DOOR drawAll 0 2 15 drawGate 0 -TILE_H+3 gateGetFrame(left) # normal/left - cond isIn(left,TILES_FLOOR) + cond left==TILES_FLOOR drawAll 0 2 10 # loose moving/left - cond isIn(left,TILES_LOOSEMOVING) + cond left==TILES_LOOSEMOVING drawLoose 0 2 looseGetFrame(left),layTritop # exit_left/left - cond isIn(left,TILE_EXIT_RIGHT) + cond left==TILE_EXIT_RIGHT drawAll 0 2 7 # pillar/left - cond isIn(left,TILES_PILLAR) + cond left==TILES_PILLAR drawAll 0 2 44 # pillar_big_up/left - cond isIn(left,TILE_BP_BOTTOM) + cond left==TILE_BP_BOTTOM drawAll 0 2 83 - cond isIn(left,TILE_BP_TOP) + cond left==TILE_BP_TOP drawAll 0 3 85 # pressable/left - cond isIn(left,TILES_RAISE_PRESSED) + cond left==TILES_RAISE_PRESSED drawAll 0 2 10 - cond isIn(left,TILES_RAISE_UNPRESSED) + cond left==TILES_RAISE_UNPRESSED drawAll 0 1 10 - cond isIn(left,TILES_DROP_PRESSED) + cond left==TILES_DROP_PRESSED drawAll 0 3 10 - cond isIn(left,TILES_DROP_UNPRESSED) + cond left==TILES_DROP_UNPRESSED drawAll 0 2 10 # debris/left - cond isIn(left,TILES_BROKENTILE) + cond left==TILES_BROKENTILE drawAll 0 2 49 # spikes/left - cond isIn(left,TILES_SPIKES) + cond left==TILES_SPIKES drawAll 0 2 107 drawSpike -TILE_W 0 spikeGetFrame(left),layRight # skeleton/left - cond isIn(left,TILES_SKELETON) + cond left==TILES_SKELETON drawAll 0 2 81 # sword/left - cond isIn(left,TILES_SWORD) + cond left==TILES_SWORD drawSword -15 -4 # potion base/left - cond isIn(left,TILES_SMALLPOTION) + cond left==TILES_SMALLPOTION drawPotionSmallBase -15 -4 - cond (isIn(left,TILES_BIGPOTION)) + cond (left==TILES_BIGPOTION) drawPotionBigBase -15 -4 # potion animation/left - cond isIn(left,TILES_REDPOTION) - drawPotionRedBubbles 3-15 -15 isIn(left,TILES_BIGPOTION) - cond isIn(left,TILES_GREENPOTION) - drawPotionGreenBubbles 3-15 -15 isIn(left,TILES_BIGPOTION) - cond isIn(left,TILES_BLUEPOTION) - drawPotionBlueBubbles 3-15 -15 isIn(left,TILES_BIGPOTION) + cond left==TILES_REDPOTION + drawPotionRedBubbles 3-15 -15 left==TILES_BIGPOTION + cond left==TILES_GREENPOTION + drawPotionGreenBubbles 3-15 -15 left==TILES_BIGPOTION + cond left==TILES_BLUEPOTION + drawPotionBlueBubbles 3-15 -15 left==TILES_BIGPOTION XX AllTile # Wall/left - cond (!isIn(tile,TILES_WALL))&&(isIn(left,TILES_WALL)) + cond (tile!=TILES_WALL)&&(left==TILES_WALL) drawAll 0 2 63 # torch/this - cond isIn(tile,TILES_TORCH) + cond tile==TILES_TORCH # animation drawTorchFire 11+TILE_W -39 # base drawAll 3+TILE_W -24 56 # chopper/this - cond isIn(tile,TILE_CHOPPER) + cond tile==TILE_CHOPPER drawChopper 0 0 chopperGetFrame(tile),layCBack # empty_bricks/this - cond isIn(tile,TILES_BRICKE1) + cond tile==TILES_BRICKE1 drawAll TILE_W+0 -18 52 - cond isIn(tile,TILES_BRICKE2) + cond tile==TILES_BRICKE2 drawAll TILE_W+0 -18 53 - cond isIn(tile,TILES_WINDOW) + cond tile==TILES_WINDOW drawAll TILE_W+0 -18 54 # floor_bricks/this - cond isIn(tile,TILES_BRICKF1) + cond tile==TILES_BRICKF1 drawAll TILE_W+0 -18 12 - cond isIn(tile,TILES_BRICKF2) + cond tile==TILES_BRICKF2 drawAll TILE_W+0 -18 13 # gate/this - cond isIn(tile,TILES_DOOR) + cond tile==TILES_DOOR drawAll 0 0 14 # gate_frame/this - cond isIn(tile,TILES_GATEFRAME) + cond tile==TILES_GATEFRAME drawAll 24 0 17 # normal/this - cond isIn(tile,TILES_FLOOR) + cond tile==TILES_FLOOR drawAll 0 0 9 # loose moving/this - cond isIn(tile,TILES_LOOSEMOVING) + cond tile==TILES_LOOSEMOVING drawLoose 0 0 looseGetFrame(tile),layTribot # exit_left/this - cond isIn(tile,TILE_EXIT_RIGHT) + cond tile==TILE_EXIT_RIGHT drawAll 0 0 5 - cond isIn(tile,TILE_EXIT_LEFT) + cond tile==TILE_EXIT_LEFT drawAll 0 0 9 drawExit TILE_W+8 -TILE_H-1 gateGetFrame(tile) # pillar/this - cond isIn(tile,TILES_PILLAR) + cond tile==TILES_PILLAR drawAll 0 0 43 # big_pillar/this - cond isIn(tile,TILE_BP_BOTTOM) + cond tile==TILE_BP_BOTTOM drawAll 0 0 82 - cond isIn(tile,TILE_BP_TOP) + cond tile==TILE_BP_TOP drawAll 8 3 87 # pressable/this # TODO: use boolean algebra to simplify this - cond isIn(tile,TILES_RAISE_UNPRESSED)&&isIn(left,TILES_WALKABLE)&&(!isIn(left,TILES_RAISE)) + cond tile==TILES_RAISE_UNPRESSED&&left==TILES_WALKABLE&&(left!=TILES_RAISE) drawAll 0 0 57 - cond (isIn(tile,TILES_RAISE)&&((!isIn(tile,TILES_UNPRESSED))||(!isIn(left,TILES_WALKABLE))||isIn(left,TILES_RAISE)))&&(isIn(tile,TILES_UNPRESSED)) + cond (tile==TILES_RAISE&&((tile!=TILES_UNPRESSED)||(left!=TILES_WALKABLE)||left==TILES_RAISE))&&(tile==TILES_UNPRESSED) drawAll 0 0 58 - cond ((isIn(tile,TILES_RAISE)&&((!isIn(tile,TILES_UNPRESSED))||(!isIn(left,TILES_WALKABLE))||isIn(left,TILES_RAISE)))&&(!isIn(tile,TILES_UNPRESSED)))||isIn(tile,TILES_DROP_UNPRESSED) + cond ((tile==TILES_RAISE&&((tile!=TILES_UNPRESSED)||(left!=TILES_WALKABLE)||left==TILES_RAISE))&&(tile!=TILES_UNPRESSED))||tile==TILES_DROP_UNPRESSED drawAll 0 1 58 - cond isIn(tile,TILES_DROP_PRESSED) + cond tile==TILES_DROP_PRESSED drawAll 0 2 58 # debris/this - cond isIn(tile,TILES_BROKENTILE) + cond tile==TILES_BROKENTILE drawAll 0 0 48 # spikes/this - cond isIn(tile,TILES_SPIKES) + cond tile==TILES_SPIKES drawAll 0 0 101 drawSpike 0 0 spikeGetFrame(tile),layBack # skeleton/this - cond isIn(tile,TILES_SKELETON) + cond tile==TILES_SKELETON drawAll 0 0 80 XX AllBack # loose moving - cond isIn(tile,TILES_LOOSEMOVING) + cond tile==TILES_LOOSEMOVING drawLoose 0 3 looseGetFrame(tile),layBase # normal - cond isIn(tile,TILES_UNPRESSED) + cond tile==TILES_UNPRESSED # TODO: drop has resource 59 for unpressed/raise 47? checkgame drawAll 0 3 59 - cond isIn(tile,TILES_PRESSED) + cond tile==TILES_PRESSED drawAll 0 4 59 - cond isIn(tile,TILES_WALKABLE)&&(!isIn(tile,TILES_LOOSEMOVING))&&(!isIn(tile,TILES_PRESSABLE)) + cond tile==TILES_WALKABLE && tile!=TILES_LOOSEMOVING && tile!=TILES_PRESSABLE drawAll 0 3 11 # wall # there are 4 cases @@ -158,34 +164,34 @@ XX AllBack cond wallCase(WALL_LOC_SWS) drawAll 0 3 69 # empty/gate_frame/this - cond isIn(tile,TILES_SPACE)&&isIn(tile,TILES_GATEFRAME) + cond tile==TILES_SPACE && tile==TILES_GATEFRAME drawAll 0 3 42 # empty/gate/left - cond isIn(tile,TILES_SPACE)&&isIn(dleft,TILES_DOOR) + cond tile==TILES_SPACE && dleft==TILES_DOOR drawAll 0 3 16 # empty/big_pillar/left - cond isIn(tile,TILES_SPACE)&&isIn(dleft,TILE_BP_TOP) + cond tile==TILES_SPACE && dleft==TILE_BP_TOP drawAll 0 3 86 # empty/pillar/left - cond isIn(tile,TILES_SPACE)&&isIn(dleft,TILES_PILLAR) + cond tile==TILES_SPACE && dleft==TILES_PILLAR drawAll 0 3 45 # empty/wall/left - cond isIn(tile,TILES_SPACE)&&isIn(dleft,TILES_WALL) + cond tile==TILES_SPACE && dleft==TILES_WALL drawAll 0 3 64 # upper objects - cond isIn(tile,TILE_EXIT_LEFT) + cond tile==TILE_EXIT_LEFT drawAll 0+TILE_W -TILE_H+3 6 - cond isIn(tile,TILE_EXIT_RIGHT) + cond tile==TILE_EXIT_RIGHT drawAll 0+TILE_W -TILE_H+3 8 XX AllFore # pillar - cond isIn(tile,TILES_PILLAR) + cond tile==TILES_PILLAR drawAll 8 0 46 # big pillar - cond isIn(tile,TILE_BP_BOTTOM) + cond tile==TILE_BP_BOTTOM drawAll 8 0 84 # wall # there are 4 cases @@ -211,7 +217,7 @@ XX AllFore cond wallGetInfo(WALL_TABLE_LINE1_LEFT_UP) drawAll 0 -54 76 # Second row - cond isIn(tile,TILES_WALL) + cond tile==TILES_WALL drawAll 7+wallGetInfo(WALL_TABLE_LINE2_OFFSET) -18 74-wallGetInfo(WALL_TABLE_LINE2_SEP) cond wallGetInfo(WALL_TABLE_LINE2_LEFT_DOWN) drawAll 7+wallGetInfo(WALL_TABLE_LINE2_OFFSET)+5 -39+21 77 @@ -222,16 +228,16 @@ XX AllFore cond wallGetInfo(WALL_TABLE_LINE2_LEFT_UP) drawAll 7+wallGetInfo(WALL_TABLE_LINE2_OFFSET)+5 -54+21 76 # Third row TODO: send to BottomTile - cond isIn(tile,TILES_WALL) + cond tile==TILES_WALL drawAll 3+wallGetInfo(WALL_TABLE_LINE3_OFFSET) 3 74-wallGetInfo(WALL_TABLE_LINE3_SEP) cond wallGetInfo(WALL_TABLE_LINE3_LEFT_UP) drawAll 5+wallGetInfo(WALL_TABLE_LINE3_OFFSET)+5 -55+21*2 76 # debris/this foreground layer - cond isIn(tile,TILES_BROKENTILE) + cond tile==TILES_BROKENTILE drawAll 0 0 51 # spikes/this foreground layer - cond isIn(tile,TILES_SPIKES) + cond tile==TILES_SPIKES drawSpike 0 0 spikeGetFrame(tile),layFore