SDL中文论坛

标题: 构造规则:{TRANSITION_COMPLETE_L (Ms,Ha) (W*,S*) -171 hills/snow-to-water} [打印本页]

作者: admin    时间: 2020-8-24 16:29
标题: 构造规则:{TRANSITION_COMPLETE_L (Ms,Ha) (W*,S*) -171 hills/snow-to-water}
{TRANSITION_COMPLETE_L (Ms,Ha) (W*,S*) -171 hills/snow-to-water}
搜索TRANSITION_COMPLETE_L宏定义,
  1. #define TRANSITION_COMPLETE_L TERRAINLIST ADJACENT LAYER IMAGESTEM
  2.     {TRANSITION_COMPLETE_LFB ({TERRAINLIST}) ({ADJACENT}) ({LAYER}) transition IMAGE_SINGLE ({IMAGESTEM})}
  3. #enddef
复制代码

代入参数后
  1. TRANSITION_COMPLETE_LFB (Ms,Ha) (W*,S*) -171 transition IMAGE_SINGLE (hills/snow-to-water)
复制代码


搜索TRANSITION_COMPLETE_L宏定义,
  1. #define TRANSITION_COMPLETE_LFB TERRAINLIST ADJACENT LAYER FLAG BUILDER IMAGESTEM
  2.     {BORDER_COMPLETE_LFB ({TERRAINLIST}) ({ADJACENT}) ({LAYER}) ({FLAG}) ({BUILDER}) ({IMAGESTEM})}
  3. #enddef
复制代码

代入参数后
  1. BORDER_COMPLETE_LFB (Ms,Ha) (W*,S*) -171 transition IMAGE_SINGLE (hills/snow-to-water)
复制代码


搜索BORDER_COMPLETE_LFB宏定义,它由六条宏组成。
  1. #define BORDER_COMPLETE_LFB TERRAIN ADJACENT LAYER FLAG BUILDER IMAGESTEM
  2.     {BORDER_RESTRICTED6_RANDOM_LFB  ({TERRAIN})  ({ADJACENT}) {LAYER} {FLAG} {BUILDER} {IMAGESTEM}}
  3.     {BORDER_RESTRICTED5_RANDOM_LFB  ({TERRAIN})  ({ADJACENT}) {LAYER} {FLAG} {BUILDER} {IMAGESTEM}}
  4.     {BORDER_RESTRICTED4_RANDOM_LFB  ({TERRAIN})  ({ADJACENT}) {LAYER} {FLAG} {BUILDER} {IMAGESTEM}}
  5.     {BORDER_RESTRICTED3_RANDOM_LFB  ({TERRAIN})  ({ADJACENT}) {LAYER} {FLAG} {BUILDER} {IMAGESTEM}}
  6.     {BORDER_RESTRICTED2_RANDOM_LFB  ({TERRAIN})  ({ADJACENT}) {LAYER} {FLAG} {BUILDER} {IMAGESTEM}}
  7.     {BORDER_RESTRICTED_RANDOM_LFB   ({TERRAIN})  ({ADJACENT}) {LAYER} {FLAG} {BUILDER} {IMAGESTEM}}
  8. #enddef
复制代码

看第一条BORDER_RESTRICTED6_RANDOM_LFB。
  1. #define BORDER_RESTRICTED6_RANDOM_LFB TERRAIN ADJACENT LAYER FLAG BUILDER IMAGESTEM
  2.     {BORDER_RESTRICTED6_PLFB ({TERRAIN}) ({ADJACENT}) 100 {LAYER} {FLAG} {BUILDER} {IMAGESTEM}@V}
  3. #enddef
复制代码

代入参数后
  1. BORDER_RESTRICTED6_PLFB (Ms,Ha) (W*,S*) 100 -171 transition IMAGE_SINGLE hills/snow-to-water@V
复制代码

  1. #define BORDER_RESTRICTED6_PLFB TERRAINLIST ADJACENT PROB LAYER FLAG BUILDER IMAGESTEM
  2.     [terrain_graphics]
  3.         map="
  4. ,  2
  5. 7,   3
  6. ,  1
  7. 6,   4
  8. ,  5"
  9.         [tile]
  10.             pos=1
  11.             type={ADJACENT}
  12.             set_no_flag={FLAG}-@R[0~3]
  13.         [/tile]
  14.         [tile]
  15.             pos=2
  16.             type={TERRAINLIST}
  17.             set_no_flag={FLAG}-@R3
  18.         [/tile]
  19.         [tile]
  20.             pos=3
  21.             type={TERRAINLIST}
  22.             set_no_flag={FLAG}-@R4
  23.         [/tile]
  24.         [tile]
  25.             pos=4
  26.             type={TERRAINLIST}
  27.             set_no_flag={FLAG}-@R5
  28.         [/tile]
  29.         [tile]
  30.             pos=5
  31.             type={TERRAINLIST}
  32.             set_no_flag={FLAG}-@R0
  33.         [/tile]
  34.         [tile]
  35.             pos=6
  36.             type={TERRAINLIST}
  37.             set_no_flag={FLAG}-@R1
  38.         [/tile]
  39.         [tile]
  40.             pos=7
  41.             type={TERRAINLIST}
  42.             set_no_flag={FLAG}-@R2
  43.         [/tile]

  44.         [image]
  45.             layer={LAYER}
  46.             name={BUILD_IMAGE {BUILDER} {IMAGESTEM} -@R0-@R1-@R2-@R3-@R4-@R5}
  47.             variations=";2;3;4;5;6;7;8;9;10;11"
  48.             center=90,144
  49.         [/image]
  50.         probability={PROB}
  51.         rotations=n,ne,se,s,sw,nw
  52.     [/terrain_graphics]
  53. #enddef
复制代码

这是使用了旋转模板的构造规则,要旋转6个角度,会产生6条规则。
条件
中心格子的地形须匹配(W*,S*),即水或沼泽,周围格子的地形须匹配(Ms,Ha),即山岭(snow_mountains)或丘陵(snow_hills)。

在锚点“2”处它判断的标志是“transition-s”,对锚点“1”来说,“2”应该是北,即“n”,这个方向是以锚点“2”的观点说的,锚点“2”的格子是否有了向“南”的过渡带。

锚点“2”在六个方向上须要过渡带,这里是放置“南”向的而已。

操作
它会执行两类操作:放置图像,在相关格子设置标志。

[image]块指示了如何放置图像。BUILD_IMAGE也是一个宏。
  1. #define BUILD_IMAGE BUILDER IMAGESTEM POSTFIX
  2.         {{BUILDER} {IMAGESTEM} {POSTFIX}}
  3. #enddef
复制代码

代入后
  1. {IMAGE_SINGLE hills/snow-to-water@V -@R0-@R1-@R2-@R3-@R4-@R5}
复制代码


IMAGE_SINGLE也是一个宏。
  1. #define IMAGE_SINGLE IMAGESTEM POSTFIX
  2.         {IMAGESTEM}{POSTFIX}.png
  3. enddef
复制代码

代入参数,形成的[image]块中name字段值。
  1. name = hills/snow-to-water@V-@R0-@R1-@R2-@R3-@R4-@R5.png
复制代码




图像实例
(, 下载次数: 2676)
hills/snow-to-water8-ne-se-s-sw-nw-n.png。注:这图像是我为调试特意加的,只是让看到叠加后是什么效果。
(, 下载次数: 2871)

规则概述
旋转角度是0时:中心格子的地形须匹配(W*,S*),即水或沼泽,周围格子的地形须匹配(Ms,Ha),即山岭(snow_mountains)或丘陵(snow_hills),一旦满足条件后会放置图像,这图像在12个图像中随机取,snow-to-water-n-ne-se-s-we-nw.png、snow-to-water2-n-ne-se-s-sw-nw.png,一直到snow-to-water11-n-ne-se-s-we-nw.png。


以上只是BORDER_COMPLETE_LFB第一条宏、旋转角度是0的规则,BORDER_COMPLETE_LFB还有五条宏。

争抢过渡带
对一个格子,它会有六个方向过来的过渡,一般用6个标记表示:transition-n、transition-ne、transition-se、transition-s、transition-sw、transition-nw。

争抢过渡带是指谁先占掉相关标记。

当在一个方向放置了过渡带,那么是在相关两格子各放了一标记,这两标记方向相反。
  1. #define BORDER_RESTRICTED_PLFB TERRAINLIST ADJACENT PROB LAYER FLAG BUILDER IMAGESTEM
  2.     [terrain_graphics]
  3.         map="
  4. , 2
  5. * , *
  6. , 1
  7. * , *
  8. , *"
  9.         [tile]
  10.             pos=1
  11.             type={ADJACENT}
  12.             set_no_flag={FLAG}-@R0
  13.         [/tile]
  14.         [tile]
  15.             pos=2
  16.             type={TERRAINLIST}
  17.             set_no_flag={FLAG}-@R3
  18.         [/tile]

  19.         [image]
  20.             layer={LAYER}
  21.             name={BUILD_IMAGE {BUILDER} {IMAGESTEM} -@R0}
  22.             variations=";2;3;4;5;6;7;8;9;10;11"
  23.             center=90,144
  24.         [/image]
  25.         probability={PROB}
  26.         rotations=n,ne,se,s,sw,nw
  27.     [/terrain_graphics]
  28. #enddef
复制代码

以上是pos=2(Ms,Ha)到pos=1(W*,S*)过渡,在pos=2会设上transition-s,pos=1设置transition-n。
作者: admin    时间: 2020-8-24 16:29



文件名地形1地形2
snow-to-waterMs, HaW*,S*
regular-to-waterMm,HhAi,W*,S*





欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/) Powered by Discuz! X3.3