bridge refactoring step 2: add possibility to use random bridges...

...(note that it won't be possible to have animated bridges)
This commit is contained in:
Jérémy Rosen 2010-06-18 17:45:21 +00:00
parent f7ba7f68c6
commit 666a416a36
4 changed files with 355 additions and 160 deletions

View file

@ -2,180 +2,82 @@
# This file handles transitions involving bridges
# macros to make things shorter
#define IMAGEC_L_N LAYER NAME
[image]
layer={LAYER}
center=90,144
name={BUILD_IMAGE IMAGE_SINGLE {NAME} ()}
[/image]
#enddef
#This adds an end to a bridge (the bridge is on 2, and we draw on 1)
#define BRIDGE_END TERRAIN ADJACENT IMAGESTEM R0 R1 R2 R3 R4 R5 S0 S1 S2 S3 S4 S5
[terrain_graphics]
map="
, {S0}
{S5}, {S1}
, 1
{S4}, {S2}
, {S3}"
[tile]
pos=2
type={TERRAIN}
no_flag=angleaway_{R3},angle_{R2},angle_{R4}
[/tile]
[tile]
pos=1
type={ADJACENT}
no_flag=angle_{R0}
[/tile]
{IMAGEC_L_N -80 {IMAGESTEM}-{R0}}
[/terrain_graphics]
#enddef
# this macro produces Y intersections
#define BRIDGE_Y BRIDGETYPE1_NAME BRIDGETYPE2_NAME BRIDGETYPE3_NAME Y_IMAGE R0 R1 R2 R3 R4 R5 S0 S1 S2 S3 S4 S5
[terrain_graphics]
map="
, {S1}
{S0}, {S2}
, 1
{S5}, {S3}
, {S4}"
[tile]
pos=1
type={BRIDGETYPE1_NAME}
no_flag=overlay,angle_{R0},angle_{R2},angle_{R4}
set_flag=overlay,angle_{R1},angle_{R5},angle_{R3}
[/tile]
[tile]
pos=2
no_flag=angle_{R3},angle_{R1}
set_flag=angle_{R2}
type={BRIDGETYPE2_NAME}
[/tile]
[tile]
pos=3
no_flag=angle_{R3},angle_{R5}
set_flag=angle_{R4}
type={BRIDGETYPE3_NAME}
[/tile]
[tile]
pos=4
type=!,{BRIDGETYPE1_NAME}
set_flag=angleaway_{R3}
[/tile]
{IMAGEC_L_N -80 {Y_IMAGE}}
[/terrain_graphics]
#enddef
# this macro keeps colinear bridges connected, it does not add images
#define BRIDGECONNECT BRIDGETYPE_NAME R0 R1 R2 R3 R4 R5 X Y
[terrain_graphics]
[tile]
x=1
y=1
type={BRIDGETYPE_NAME}
no_flag=angle_{R1},angle_{R5}
set_flag=angle_{R0}
[/tile]
[tile]
x={X}
y={Y}
type={BRIDGETYPE_NAME}
no_flag=angle_{R2},angle_{R4}
set_flag=angle_{R3}
[/tile]
[/terrain_graphics]
#enddef
# this macro handles the normal corners
#define CORNER ANGLE_IMAGE BRIDGETYPE1_NAME BRIDGETYPE2_NAME A1 A2 A3 A4 A5 A6 S0 S1 S2 S3 S4 S5
[terrain_graphics]
map="
, {S1}
{S0}, {S2}
, 1
{S5}, {S3}
, {S4}"
[tile]
pos=1
type={BRIDGETYPE1_NAME}
no_flag=overlay,angle_{A3},angle_{A4},angle_{A5},angle_{A6}
set_flag=overlay,angle_{A1},angle_{A2}
[/tile]
{IMAGEC_L_N -80 {ANGLE_IMAGE}}
[tile]
pos=2
type={BRIDGETYPE2_NAME}
no_flag=angle_{A1},angle_{A6}
set_flag=angle_{A3}
[/tile]
[tile]
pos=3
set_flag=angleaway_{A1}
[/tile]
[/terrain_graphics]
#enddef
# the main macro, called from terrain-graphics.cfg
#define BRIDGE SE_NW_VALUE N_S_VALUE NE_SW_VALUE WATER_TERRAIN_NAME NOTERM_AFFIX IMAGESTEM
#define BRIDGE_LF SE_NW_VALUE N_S_VALUE NE_SW_VALUE WATER_TERRAIN_NAME NOTERM_AFFIX LAYER FLAG IMAGESTEM
# find Y intersections
{BRIDGE_Y {N_S_VALUE} {SE_NW_VALUE} {NE_SW_VALUE} {IMAGESTEM}-joint-ne-s-nw n ne se s sw nw 2 4 3 * * *}
{BRIDGE_Y {NE_SW_VALUE} {N_S_VALUE} {SE_NW_VALUE} {IMAGESTEM}-joint-n-se-sw ne se s sw nw n * 2 4 3 * *}
{BRIDGE_Y {SE_NW_VALUE} {NE_SW_VALUE} {N_S_VALUE} {IMAGESTEM}-joint-ne-s-nw se s sw nw n ne * * 2 4 3 *}
{BRIDGE_Y {N_S_VALUE} {SE_NW_VALUE} {NE_SW_VALUE} {IMAGESTEM}-joint-n-se-sw s sw nw n ne se * * * 2 4 3}
{BRIDGE_Y {NE_SW_VALUE} {N_S_VALUE} {SE_NW_VALUE} {IMAGESTEM}-joint-ne-s-nw sw nw n ne se s 3 * * * 2 4}
{BRIDGE_Y {SE_NW_VALUE} {NE_SW_VALUE} {N_S_VALUE} {IMAGESTEM}-joint-n-se-sw nw n ne se s sw 4 3 * * * 2}
{TRACK_Y_LF {N_S_VALUE} {SE_NW_VALUE} {NE_SW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-ne-s-nw n ne se s sw nw 2 4 3 * * *}
{TRACK_Y_LF {NE_SW_VALUE} {N_S_VALUE} {SE_NW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-n-se-sw ne se s sw nw n * 2 4 3 * *}
{TRACK_Y_LF {SE_NW_VALUE} {NE_SW_VALUE} {N_S_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-ne-s-nw se s sw nw n ne * * 2 4 3 *}
{TRACK_Y_LF {N_S_VALUE} {SE_NW_VALUE} {NE_SW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-n-se-sw s sw nw n ne se * * * 2 4 3}
{TRACK_Y_LF {NE_SW_VALUE} {N_S_VALUE} {SE_NW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-ne-s-nw sw nw n ne se s 3 * * * 2 4}
{TRACK_Y_LF {SE_NW_VALUE} {NE_SW_VALUE} {N_S_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-n-se-sw nw n ne se s sw 4 3 * * * 2}
# make sure that colinear adjacent bridges stay connected
{BRIDGECONNECT {N_S_VALUE} n ne se s sw nw 1 0}
{BRIDGECONNECT {NE_SW_VALUE} ne se s sw nw n 2 1}
{BRIDGECONNECT {SE_NW_VALUE} se s sw nw n ne 2 2}
{TRACK_CONNECT_F {N_S_VALUE} {FLAG} n ne se s sw nw 1 0}
{TRACK_CONNECT_F {NE_SW_VALUE} {FLAG} ne se s sw nw n 2 1}
{TRACK_CONNECT_F {SE_NW_VALUE} {FLAG} se s sw nw n ne 2 2}
# normal corners
{CORNER {IMAGESTEM}-joint-s-nw {N_S_VALUE} {SE_NW_VALUE} s nw se n sw ne 2 3 * * * *}
{CORNER {IMAGESTEM}-joint-ne-s {N_S_VALUE} {NE_SW_VALUE} s ne sw n se nw * 3 2 * * *}
{CORNER {IMAGESTEM}-joint-n-sw {NE_SW_VALUE} {N_S_VALUE} sw n s ne nw se * 2 3 * * *}
{CORNER {IMAGESTEM}-joint-se-sw {NE_SW_VALUE} {SE_NW_VALUE} sw se nw ne s n * * 3 2 * *}
{CORNER {IMAGESTEM}-joint-ne-nw {SE_NW_VALUE} {NE_SW_VALUE} nw ne sw se n s * * 2 3 * *}
{CORNER {IMAGESTEM}-joint-s-nw {SE_NW_VALUE} {N_S_VALUE} nw s n se sw ne * * * 3 2 *}
{CORNER {IMAGESTEM}-joint-n-se {N_S_VALUE} {SE_NW_VALUE} n se nw s ne sw * * * 2 3 *}
{CORNER {IMAGESTEM}-joint-n-sw {N_S_VALUE} {NE_SW_VALUE} n sw ne s nw se * * * * 3 2}
{CORNER {IMAGESTEM}-joint-ne-s {NE_SW_VALUE} {N_S_VALUE} ne s n sw se nw * * * * 2 3}
{CORNER {IMAGESTEM}-joint-ne-nw {NE_SW_VALUE} {SE_NW_VALUE} ne nw se sw n s 2 * * * * 3}
{CORNER {IMAGESTEM}-joint-se-sw {SE_NW_VALUE} {NE_SW_VALUE} se sw ne nw s n 3 * * * * 2}
{CORNER {IMAGESTEM}-joint-n-se {SE_NW_VALUE} {N_S_VALUE} se n s nw ne sw 3 2 * * * *}
{TRACK_CORNER_LF {N_S_VALUE} {SE_NW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-s-nw s nw se n sw ne 2 3 * * * *}
{TRACK_CORNER_LF {N_S_VALUE} {NE_SW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-ne-s s ne sw n se nw * 3 2 * * *}
{TRACK_CORNER_LF {NE_SW_VALUE} {N_S_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-n-sw sw n s ne nw se * 2 3 * * *}
{TRACK_CORNER_LF {NE_SW_VALUE} {SE_NW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-se-sw sw se nw ne s n * * 3 2 * *}
{TRACK_CORNER_LF {SE_NW_VALUE} {NE_SW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-ne-nw nw ne sw se n s * * 2 3 * *}
{TRACK_CORNER_LF {SE_NW_VALUE} {N_S_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-s-nw nw s n se sw ne * * * 3 2 *}
{TRACK_CORNER_LF {N_S_VALUE} {SE_NW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-n-se n se nw s ne sw * * * 2 3 *}
{TRACK_CORNER_LF {N_S_VALUE} {NE_SW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-n-sw n sw ne s nw se * * * * 3 2}
{TRACK_CORNER_LF {NE_SW_VALUE} {N_S_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-ne-s ne s n sw se nw * * * * 2 3}
{TRACK_CORNER_LF {NE_SW_VALUE} {SE_NW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-ne-nw ne nw se sw n s 2 * * * * 3}
{TRACK_CORNER_LF {SE_NW_VALUE} {NE_SW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-se-sw se sw ne nw s n 3 * * * * 2}
{TRACK_CORNER_LF {SE_NW_VALUE} {N_S_VALUE} {LAYER} {FLAG} {IMAGESTEM}-joint-n-se se n s nw ne sw 3 2 * * * *}
# these 3 macros define the default straight bridges
{OVERLAY_L {N_S_VALUE} -80 {IMAGESTEM}-n-s}
{OVERLAY_L {NE_SW_VALUE} -80 {IMAGESTEM}-ne-sw}
{OVERLAY_L {SE_NW_VALUE} -80 {IMAGESTEM}-se-nw}
{TRACK_LF {N_S_VALUE} {LAYER} {FLAG} {IMAGESTEM}-n-s}
{TRACK_LF {NE_SW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-ne-sw}
{TRACK_LF {SE_NW_VALUE} {LAYER} {FLAG} {IMAGESTEM}-se-nw}
# add ramps where straight bridges intersect Ys
{BRIDGE_END {N_S_VALUE} ({N_S_VALUE}, {NE_SW_VALUE}, {SE_NW_VALUE}) {IMAGESTEM} n ne se s sw nw 2 * * * * *}
{BRIDGE_END {NE_SW_VALUE} ({N_S_VALUE}, {NE_SW_VALUE}, {SE_NW_VALUE}) {IMAGESTEM} ne se s sw nw n * 2 * * * *}
{BRIDGE_END {SE_NW_VALUE} ({N_S_VALUE}, {NE_SW_VALUE}, {SE_NW_VALUE}) {IMAGESTEM} se s sw nw n ne * * 2 * * *}
{BRIDGE_END {N_S_VALUE} ({N_S_VALUE}, {NE_SW_VALUE}, {SE_NW_VALUE}) {IMAGESTEM} s sw nw n ne se * * * 2 * *}
{BRIDGE_END {NE_SW_VALUE} ({N_S_VALUE}, {NE_SW_VALUE}, {SE_NW_VALUE}) {IMAGESTEM} sw nw n ne se s * * * * 2 *}
{BRIDGE_END {SE_NW_VALUE} ({N_S_VALUE}, {NE_SW_VALUE}, {SE_NW_VALUE}) {IMAGESTEM} nw n ne se s sw * * * * * 2}
{TRACK_END_LF {N_S_VALUE} ({N_S_VALUE}, {NE_SW_VALUE}, {SE_NW_VALUE}) {LAYER} {FLAG} {IMAGESTEM} n ne se s sw nw 2 * * * * *}
{TRACK_END_LF {NE_SW_VALUE} ({N_S_VALUE}, {NE_SW_VALUE}, {SE_NW_VALUE}) {LAYER} {FLAG} {IMAGESTEM} ne se s sw nw n * 2 * * * *}
{TRACK_END_LF {SE_NW_VALUE} ({N_S_VALUE}, {NE_SW_VALUE}, {SE_NW_VALUE}) {LAYER} {FLAG} {IMAGESTEM} se s sw nw n ne * * 2 * * *}
{TRACK_END_LF {N_S_VALUE} ({N_S_VALUE}, {NE_SW_VALUE}, {SE_NW_VALUE}) {LAYER} {FLAG} {IMAGESTEM} s sw nw n ne se * * * 2 * *}
{TRACK_END_LF {NE_SW_VALUE} ({N_S_VALUE}, {NE_SW_VALUE}, {SE_NW_VALUE}) {LAYER} {FLAG} {IMAGESTEM} sw nw n ne se s * * * * 2 *}
{TRACK_END_LF {SE_NW_VALUE} ({N_S_VALUE}, {NE_SW_VALUE}, {SE_NW_VALUE}) {LAYER} {FLAG} {IMAGESTEM} nw n ne se s sw * * * * * 2}
# add ramps where straight bridges end on land
{BRIDGE_END {N_S_VALUE} !,{WATER_TERRAIN_NAME},{NOTERM_AFFIX},{N_S_VALUE} {IMAGESTEM} n ne se s sw nw 2 * * * * *}
{BRIDGE_END {NE_SW_VALUE} !,{WATER_TERRAIN_NAME},{NOTERM_AFFIX},{NE_SW_VALUE} {IMAGESTEM} ne se s sw nw n * 2 * * * *}
{BRIDGE_END {SE_NW_VALUE} !,{WATER_TERRAIN_NAME},{NOTERM_AFFIX},{SE_NW_VALUE} {IMAGESTEM} se s sw nw n ne * * 2 * * *}
{BRIDGE_END {N_S_VALUE} !,{WATER_TERRAIN_NAME},{NOTERM_AFFIX},{N_S_VALUE} {IMAGESTEM} s sw nw n ne se * * * 2 * *}
{BRIDGE_END {NE_SW_VALUE} !,{WATER_TERRAIN_NAME},{NOTERM_AFFIX},{NE_SW_VALUE} {IMAGESTEM} sw nw n ne se s * * * * 2 *}
{BRIDGE_END {SE_NW_VALUE} !,{WATER_TERRAIN_NAME},{NOTERM_AFFIX},{SE_NW_VALUE} {IMAGESTEM} nw n ne se s sw * * * * * 2}
{TRACK_END_LF {N_S_VALUE} !,{WATER_TERRAIN_NAME},{NOTERM_AFFIX},{N_S_VALUE} {LAYER} {FLAG} {IMAGESTEM} n ne se s sw nw 2 * * * * *}
{TRACK_END_LF {NE_SW_VALUE} !,{WATER_TERRAIN_NAME},{NOTERM_AFFIX},{NE_SW_VALUE} {LAYER} {FLAG} {IMAGESTEM} ne se s sw nw n * 2 * * * *}
{TRACK_END_LF {SE_NW_VALUE} !,{WATER_TERRAIN_NAME},{NOTERM_AFFIX},{SE_NW_VALUE} {LAYER} {FLAG} {IMAGESTEM} se s sw nw n ne * * 2 * * *}
{TRACK_END_LF {N_S_VALUE} !,{WATER_TERRAIN_NAME},{NOTERM_AFFIX},{N_S_VALUE} {LAYER} {FLAG} {IMAGESTEM} s sw nw n ne se * * * 2 * *}
{TRACK_END_LF {NE_SW_VALUE} !,{WATER_TERRAIN_NAME},{NOTERM_AFFIX},{NE_SW_VALUE} {LAYER} {FLAG} {IMAGESTEM} sw nw n ne se s * * * * 2 *}
{TRACK_END_LF {SE_NW_VALUE} !,{WATER_TERRAIN_NAME},{NOTERM_AFFIX},{SE_NW_VALUE} {LAYER} {FLAG} {IMAGESTEM} nw n ne se s sw * * * * * 2}
# add dock-style ends to bridges ending in water
{BRIDGE_END {N_S_VALUE} {WATER_TERRAIN_NAME} {IMAGESTEM}-end n ne se s sw nw 2 * * * * *}
{BRIDGE_END {NE_SW_VALUE} {WATER_TERRAIN_NAME} {IMAGESTEM}-end ne se s sw nw n * 2 * * * *}
{BRIDGE_END {SE_NW_VALUE} {WATER_TERRAIN_NAME} {IMAGESTEM}-end se s sw nw n ne * * 2 * * *}
{BRIDGE_END {N_S_VALUE} {WATER_TERRAIN_NAME} {IMAGESTEM}-end s sw nw n ne se * * * 2 * *}
{BRIDGE_END {NE_SW_VALUE} {WATER_TERRAIN_NAME} {IMAGESTEM}-end sw nw n ne se s * * * * 2 *}
{BRIDGE_END {SE_NW_VALUE} {WATER_TERRAIN_NAME} {IMAGESTEM}-end nw n ne se s sw * * * * * 2}
{TRACK_END_LF {N_S_VALUE} {WATER_TERRAIN_NAME} {LAYER} {FLAG} {IMAGESTEM}-end n ne se s sw nw 2 * * * * *}
{TRACK_END_LF {NE_SW_VALUE} {WATER_TERRAIN_NAME} {LAYER} {FLAG} {IMAGESTEM}-end ne se s sw nw n * 2 * * * *}
{TRACK_END_LF {SE_NW_VALUE} {WATER_TERRAIN_NAME} {LAYER} {FLAG} {IMAGESTEM}-end se s sw nw n ne * * 2 * * *}
{TRACK_END_LF {N_S_VALUE} {WATER_TERRAIN_NAME} {LAYER} {FLAG} {IMAGESTEM}-end s sw nw n ne se * * * 2 * *}
{TRACK_END_LF {NE_SW_VALUE} {WATER_TERRAIN_NAME} {LAYER} {FLAG} {IMAGESTEM}-end sw nw n ne se s * * * * 2 *}
{TRACK_END_LF {SE_NW_VALUE} {WATER_TERRAIN_NAME} {LAYER} {FLAG} {IMAGESTEM}-end nw n ne se s sw * * * * * 2}
#enddef
#meta-macro BRIDGE SE_NW_TERRAIN N_S_TERRAIN NE_SW_TERRAIN WATER_TERRAIN NOTRANS_TERRAIN L=LAYER=-80 F=FLAG=overlay IMAGESTEM
#####################################################################################################
############### AUTO GENERATED CODE ###################################################
#####################################################################################################
#The following code is autogenerated by expand-terrain-macros.py
#generated from: #meta-macro BRIDGE SE_NW_TERRAIN N_S_TERRAIN NE_SW_TERRAIN WATER_TERRAIN NOTRANS_TERRAIN L=LAYER=-80 F=FLAG=overlay IMAGESTEM
#Please do not modify
#define BRIDGE_F SE_NW_TERRAIN N_S_TERRAIN NE_SW_TERRAIN WATER_TERRAIN NOTRANS_TERRAIN FLAG IMAGESTEM
{BRIDGE_LF ({SE_NW_TERRAIN}) ({N_S_TERRAIN}) ({NE_SW_TERRAIN}) ({WATER_TERRAIN}) ({NOTRANS_TERRAIN}) -80 ({FLAG}) ({IMAGESTEM})}
#enddef
#define BRIDGE_L SE_NW_TERRAIN N_S_TERRAIN NE_SW_TERRAIN WATER_TERRAIN NOTRANS_TERRAIN LAYER IMAGESTEM
{BRIDGE_LF ({SE_NW_TERRAIN}) ({N_S_TERRAIN}) ({NE_SW_TERRAIN}) ({WATER_TERRAIN}) ({NOTRANS_TERRAIN}) ({LAYER}) overlay ({IMAGESTEM})}
#enddef
#define BRIDGE SE_NW_TERRAIN N_S_TERRAIN NE_SW_TERRAIN WATER_TERRAIN NOTRANS_TERRAIN IMAGESTEM
{BRIDGE_LF ({SE_NW_TERRAIN}) ({N_S_TERRAIN}) ({NE_SW_TERRAIN}) ({WATER_TERRAIN}) ({NOTRANS_TERRAIN}) -80 overlay ({IMAGESTEM})}
#enddef
#end of generated code

View file

@ -0,0 +1,58 @@
#textdomain wesnoth
#define TRACK_CORNER_LF TERRAIN ADJACENT LAYER FLAG IMAGESTEM A1 A2 A3 A4 A5 A6 S0 S1 S2 S3 S4 S5
{TRACK_CORNER_PLF ({TERRAIN}) ({ADJACENT}) 9 {LAYER} {FLAG} {IMAGESTEM}11 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_CORNER_PLF ({TERRAIN}) ({ADJACENT}) 10 {LAYER} {FLAG} {IMAGESTEM}10 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_CORNER_PLF ({TERRAIN}) ({ADJACENT}) 11 {LAYER} {FLAG} {IMAGESTEM}9 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_CORNER_PLF ({TERRAIN}) ({ADJACENT}) 12 {LAYER} {FLAG} {IMAGESTEM}8 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_CORNER_PLF ({TERRAIN}) ({ADJACENT}) 14 {LAYER} {FLAG} {IMAGESTEM}7 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_CORNER_PLF ({TERRAIN}) ({ADJACENT}) 16 {LAYER} {FLAG} {IMAGESTEM}6 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_CORNER_PLF ({TERRAIN}) ({ADJACENT}) 20 {LAYER} {FLAG} {IMAGESTEM}5 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_CORNER_PLF ({TERRAIN}) ({ADJACENT}) 25 {LAYER} {FLAG} {IMAGESTEM}4 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_CORNER_PLF ({TERRAIN}) ({ADJACENT}) 33 {LAYER} {FLAG} {IMAGESTEM}3 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_CORNER_PLF ({TERRAIN}) ({ADJACENT}) 50 {LAYER} {FLAG} {IMAGESTEM}2 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_CORNER_PLF ({TERRAIN}) ({ADJACENT}) 100 {LAYER} {FLAG} {IMAGESTEM} {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
#enddef
#define TRACK_Y_LF TERRAIN ADJACENT1 ADJACENT2 LAYER FLAG IMAGESTEM A1 A2 A3 A4 A5 A6 S0 S1 S2 S3 S4 S5
{TRACK_Y_PLF ({TERRAIN}) ({ADJACENT1}) ({ADJACENT2}) 9 {LAYER} {FLAG} {IMAGESTEM}11 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_Y_PLF ({TERRAIN}) ({ADJACENT1}) ({ADJACENT2}) 10 {LAYER} {FLAG} {IMAGESTEM}10 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_Y_PLF ({TERRAIN}) ({ADJACENT1}) ({ADJACENT2}) 11 {LAYER} {FLAG} {IMAGESTEM}9 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_Y_PLF ({TERRAIN}) ({ADJACENT1}) ({ADJACENT2}) 12 {LAYER} {FLAG} {IMAGESTEM}8 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_Y_PLF ({TERRAIN}) ({ADJACENT1}) ({ADJACENT2}) 14 {LAYER} {FLAG} {IMAGESTEM}7 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_Y_PLF ({TERRAIN}) ({ADJACENT1}) ({ADJACENT2}) 16 {LAYER} {FLAG} {IMAGESTEM}6 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_Y_PLF ({TERRAIN}) ({ADJACENT1}) ({ADJACENT2}) 20 {LAYER} {FLAG} {IMAGESTEM}5 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_Y_PLF ({TERRAIN}) ({ADJACENT1}) ({ADJACENT2}) 25 {LAYER} {FLAG} {IMAGESTEM}4 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_Y_PLF ({TERRAIN}) ({ADJACENT1}) ({ADJACENT2}) 33 {LAYER} {FLAG} {IMAGESTEM}3 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_Y_PLF ({TERRAIN}) ({ADJACENT1}) ({ADJACENT2}) 50 {LAYER} {FLAG} {IMAGESTEM}2 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_Y_PLF ({TERRAIN}) ({ADJACENT1}) ({ADJACENT2}) 100 {LAYER} {FLAG} {IMAGESTEM} {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
#enddef
#define TRACK_END_LF TERRAIN ADJACENT LAYER FLAG IMAGESTEM A1 A2 A3 A4 A5 A6 S0 S1 S2 S3 S4 S5
{TRACK_END_PLF ({TERRAIN}) ({ADJACENT}) 9 {LAYER} {FLAG} {IMAGESTEM}11 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_END_PLF ({TERRAIN}) ({ADJACENT}) 10 {LAYER} {FLAG} {IMAGESTEM}10 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_END_PLF ({TERRAIN}) ({ADJACENT}) 11 {LAYER} {FLAG} {IMAGESTEM}9 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_END_PLF ({TERRAIN}) ({ADJACENT}) 12 {LAYER} {FLAG} {IMAGESTEM}8 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_END_PLF ({TERRAIN}) ({ADJACENT}) 14 {LAYER} {FLAG} {IMAGESTEM}7 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_END_PLF ({TERRAIN}) ({ADJACENT}) 16 {LAYER} {FLAG} {IMAGESTEM}6 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_END_PLF ({TERRAIN}) ({ADJACENT}) 20 {LAYER} {FLAG} {IMAGESTEM}5 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_END_PLF ({TERRAIN}) ({ADJACENT}) 25 {LAYER} {FLAG} {IMAGESTEM}4 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_END_PLF ({TERRAIN}) ({ADJACENT}) 33 {LAYER} {FLAG} {IMAGESTEM}3 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_END_PLF ({TERRAIN}) ({ADJACENT}) 50 {LAYER} {FLAG} {IMAGESTEM}2 {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
{TRACK_END_PLF ({TERRAIN}) ({ADJACENT}) 100 {LAYER} {FLAG} {IMAGESTEM} {A1} {A2} {A3} {A4} {A5} {A6} {S0} {S1} {S2} {S3} {S4} {S5}}
#enddef
#define TRACK_LF TERRAIN LAYER FLAG IMAGESTEM
{TRACK_PLF ({TERRAIN}) 9 {LAYER} {FLAG} {IMAGESTEM}11}
{TRACK_PLF ({TERRAIN}) 10 {LAYER} {FLAG} {IMAGESTEM}10}
{TRACK_PLF ({TERRAIN}) 11 {LAYER} {FLAG} {IMAGESTEM}9 }
{TRACK_PLF ({TERRAIN}) 12 {LAYER} {FLAG} {IMAGESTEM}8 }
{TRACK_PLF ({TERRAIN}) 14 {LAYER} {FLAG} {IMAGESTEM}7 }
{TRACK_PLF ({TERRAIN}) 16 {LAYER} {FLAG} {IMAGESTEM}6 }
{TRACK_PLF ({TERRAIN}) 20 {LAYER} {FLAG} {IMAGESTEM}5 }
{TRACK_PLF ({TERRAIN}) 25 {LAYER} {FLAG} {IMAGESTEM}4 }
{TRACK_PLF ({TERRAIN}) 33 {LAYER} {FLAG} {IMAGESTEM}3 }
{TRACK_PLF ({TERRAIN}) 50 {LAYER} {FLAG} {IMAGESTEM}2 }
{TRACK_PLF ({TERRAIN}) 100 {LAYER} {FLAG} {IMAGESTEM} }
#enddef

View file

@ -0,0 +1,142 @@
#textdomain wesnoth
# macros for bridges/rails and anything overlayed that is path-like
#define IMAGEC_LN LAYER NAME
[image]
layer={LAYER}
center=90,144
name={BUILD_IMAGE IMAGE_SINGLE {NAME} ()}
[/image]
#enddef
#This adds an end to a bridge (the bridge is on 2, and we draw on 1)
#define TRACK_END_PLF TERRAIN ADJACENT PROB LAYER FLAG IMAGESTEM R0 R1 R2 R3 R4 R5 S0 S1 S2 S3 S4 S5
[terrain_graphics]
map="
, {S0}
{S5}, {S1}
, 1
{S4}, {S2}
, {S3}"
[tile]
pos=2
type={TERRAIN}
no_flag={FLAG}-away-{R3},{FLAG}-{R2},{FLAG}-{R4}
[/tile]
[tile]
pos=1
type={ADJACENT}
no_flag={FLAG}-{R0}
[/tile]
probability={PROB}
{IMAGEC_LN {LAYER} {IMAGESTEM}-{R0}}
[/terrain_graphics]
#enddef
# this macro produces Y intersections
#define TRACK_Y_PLF TERRAIN ADJACENT1 ADJACENT2 PROB LAYER FLAG IMAGESTEM R0 R1 R2 R3 R4 R5 S0 S1 S2 S3 S4 S5
[terrain_graphics]
map="
, {S1}
{S0}, {S2}
, 1
{S5}, {S3}
, {S4}"
[tile]
pos=1
type={TERRAIN}
no_flag={FLAG},{FLAG}-{R0},{FLAG}-{R2},{FLAG}-{R4}
set_flag={FLAG},{FLAG}-{R1},{FLAG}-{R5},{FLAG}-{R3}
[/tile]
[tile]
pos=2
no_flag={FLAG}-{R3},{FLAG}-{R1}
set_flag={FLAG}-{R2}
type={ADJACENT1}
[/tile]
[tile]
pos=3
no_flag={FLAG}-{R3},{FLAG}-{R5}
set_flag={FLAG}-{R4}
type={ADJACENT2}
[/tile]
[tile]
pos=4
type=!,{TERRAIN}
set_flag={FLAG}-away-{R3}
[/tile]
probability={PROB}
{IMAGEC_LN {LAYER} {IMAGESTEM}}
[/terrain_graphics]
#enddef
# this macro keeps colinear bridges connected, it does not add images
#define TRACK_CONNECT_F TERRAIN FLAG R0 R1 R2 R3 R4 R5 X Y
[terrain_graphics]
[tile]
x=1
y=1
type={TERRAIN}
no_flag={FLAG}-{R1},{FLAG}-{R5}
set_flag={FLAG}-{R0}
[/tile]
[tile]
x={X}
y={Y}
type={TERRAIN}
no_flag={FLAG}-{R2},{FLAG}-{R4}
set_flag={FLAG}-{R3}
[/tile]
[/terrain_graphics]
#enddef
# this macro handles the normal corners
#define TRACK_CORNER_PLF TERRAIN ADJACENT PROB LAYER FLAG IMAGESTEM A1 A2 A3 A4 A5 A6 S0 S1 S2 S3 S4 S5
[terrain_graphics]
map="
, {S1}
{S0}, {S2}
, 1
{S5}, {S3}
, {S4}"
[tile]
pos=1
type={TERRAIN}
no_flag={FLAG},{FLAG}-{A3},{FLAG}-{A4},{FLAG}-{A5},{FLAG}-{A6}
set_flag={FLAG},{FLAG}-{A1},{FLAG}-{A2}
[/tile]
[tile]
pos=2
type={ADJACENT}
no_flag={FLAG}-{A1},{FLAG}-{A6}
set_flag={FLAG}-{A3}
[/tile]
[tile]
pos=3
set_flag={FLAG}-away-{A1}
[/tile]
probability={PROB}
{IMAGEC_LN {LAYER} {IMAGESTEM}}
[/terrain_graphics]
#enddef
#define TRACK_PLF TERRAIN PROB LAYER FLAG IMAGESTEM
[terrain_graphics]
map="
, *
* , *
, 1
* , *
, *"
[tile]
pos=1
type={TERRAIN}
no_flag={FLAG}
set_flag={FLAG}
[/tile]
probability={PROB}
{IMAGEC_LN {LAYER} {IMAGESTEM}}
[/terrain_graphics]
#enddef

View file

@ -3,12 +3,105 @@
#
#define IMAGE_L_N LAYER NAME
[image]
layer={LAYER}
name={BUILD_IMAGE IMAGE_SINGLE {NAME} ()}
[/image]
#enddef
#define IMAGEC_L_N LAYER NAME
[image]
layer={LAYER}
center=90,144
name={BUILD_IMAGE IMAGE_SINGLE {NAME} ()}
[/image]
#enddef
# this macro produces Y intersections
#define BRIDGE_Y BRIDGETYPE1_NAME BRIDGETYPE2_NAME BRIDGETYPE3_NAME Y_IMAGE R0 R1 R2 R3 R4 R5 S0 S1 S2 S3 S4 S5
[terrain_graphics]
map="
, {S1}
{S0}, {S2}
, 1
{S5}, {S3}
, {S4}"
[tile]
pos=1
type={BRIDGETYPE1_NAME}
no_flag=overlay,angle_{R0},angle_{R2},angle_{R4}
set_flag=overlay,angle_{R1},angle_{R5},angle_{R3}
[/tile]
[tile]
pos=2
no_flag=angle_{R3},angle_{R1}
set_flag=angle_{R2}
type={BRIDGETYPE2_NAME}
[/tile]
[tile]
pos=3
no_flag=angle_{R3},angle_{R5}
set_flag=angle_{R4}
type={BRIDGETYPE3_NAME}
[/tile]
[tile]
pos=4
type=!,{BRIDGETYPE1_NAME}
set_flag=angleaway_{R3}
[/tile]
{IMAGEC_L_N -80 {Y_IMAGE}}
[/terrain_graphics]
#enddef
# this macro keeps colinear bridges connected, it does not add images
#define BRIDGECONNECT BRIDGETYPE_NAME R0 R1 R2 R3 R4 R5 X Y
[terrain_graphics]
[tile]
x=1
y=1
type={BRIDGETYPE_NAME}
no_flag=angle_{R1},angle_{R5}
set_flag=angle_{R0}
[/tile]
[tile]
x={X}
y={Y}
type={BRIDGETYPE_NAME}
no_flag=angle_{R2},angle_{R4}
set_flag=angle_{R3}
[/tile]
[/terrain_graphics]
#enddef
# this macro handles the normal corners
#define CORNER ANGLE_IMAGE BRIDGETYPE1_NAME BRIDGETYPE2_NAME A1 A2 A3 A4 A5 A6 S0 S1 S2 S3 S4 S5
[terrain_graphics]
map="
, {S1}
{S0}, {S2}
, 1
{S5}, {S3}
, {S4}"
[tile]
pos=1
type={BRIDGETYPE1_NAME}
no_flag=overlay,angle_{A3},angle_{A4},angle_{A5},angle_{A6}
set_flag=overlay,angle_{A1},angle_{A2}
[/tile]
{IMAGEC_L_N -80 {ANGLE_IMAGE}}
[tile]
pos=2
type={BRIDGETYPE2_NAME}
no_flag=angle_{A1},angle_{A6}
set_flag=angle_{A3}
[/tile]
[tile]
pos=3
set_flag=angleaway_{A1}
[/tile]
[/terrain_graphics]
#enddef
# this macro adds switches at track intersections
#define RAIL_SWITCH IMAGESTEM BRIDGETYPE_NAME BRIDGETYPE_JOIN_NAME SWITCHSIDE_AFFIX MAINRAIL_AFFIX SWITCH_REVERSE_AFFIX X Y
[terrain_graphics]