area_data.proto 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. syntax = "proto3";
  2. option go_package = "/pb";
  3. package pb;
  4. //{slgeditor}这个标签是地图编辑器相关。
  5. //{slgeditor enter=MapDataEXT }
  6. // 地图数据主消息
  7. message MapDataEXT {
  8. //资源区数据
  9. //{slgeditor param=MapDataEXT.area_data fill=array from=blocks} 这个是导出区块数据,遍历所有区块导出数据。
  10. repeated AreaData area_data = 1;
  11. //出生点(key=center,与 res_data 一致)
  12. //{slgeditor param=MapDataEXT.born_data fill=map from=instances key=center globalTag=BuildingType globalTagVelue=0 } 用对象列表中对象公共属性 BuildingType == 0 的对象填充 map,key 为中心点索引。
  13. map<int32,BornData> born_data = 2;
  14. //资源
  15. //{slgeditor param=MapDataEXT.res_data fill=map from=instances key=center globalTag=BuildingType globalTagVelue=10 } 用对象列表中对象公共属性 BuildingType == 10 的对象填充列表,
  16. map<int32,ResData> res_data = 3;
  17. //备用出生点(key=center,与 res_data 一致)
  18. //{slgeditor param=MapDataEXT.reserve_born_data fill=map from=instances key=center globalTag=BuildingType globalTagVelue=11 } 用对象列表中对象公共属性 BuildingType == 11 的对象填充 map,key 为中心点索引。
  19. map<int32,BornData> reserve_born_data = 4;
  20. //{slgeditor param=MapDataEXT.tiles fill=array from=cells } 用这个标签表示这个数组按NxN格子填充
  21. //地块(格子)数据数组
  22. //索引计算公式:index = y * width + x
  23. repeated TileMap tiles = 5;
  24. }
  25. // 格子数据
  26. message TileMap {
  27. //{slgeditor param=TileMap.coord_index src=cell kind=pos} cell这种类型的情况,cell=pos导出格子的位置。
  28. // 格子索引(行优先顺序)
  29. // 索引计算公式:index = y * width + x
  30. // 索引从0开始,最大值为 (width * height - 1)
  31. int32 coord_index = 1;
  32. //{slgeditor param=TileMap.is_res_point src=cell kind=buildingtype buildingType=10}// 检测当前格子是否被建筑类型为10的占用(中心点或占地)
  33. //是否资源点
  34. bool is_res_point = 2;
  35. //{slgeditor param=TileMap.is_born_point src=cell kind=buildingtype buildingType=0}// 检测当前格子是否被建筑类型为0的占用(中心点或占地)
  36. //是否出生点
  37. bool is_born_point = 3;
  38. //{slgeditor param=TileMap.is_reserve_born_point src=cell kind=buildingtype buildingType=11}// 检测当前格子是否被建筑类型为11的占用(中心点或占地)
  39. //是否备用出生点
  40. bool is_reserve_born_point = 4;
  41. //{slgeditor param=TileMap.is_monster_point src=cell kind=buildingtype buildingType=12}// 检测当前格子是否被建筑类型为12的占用(中心点或占地)
  42. //是否怪兽点
  43. bool is_monster_point = 5;
  44. }
  45. // 地图基本信息
  46. message AreaData {
  47. //资源带id
  48. //{slgeditor param=AreaData.area_id src=block prop=area_id}
  49. int32 area_id = 1;
  50. //怪物等级
  51. //{slgeditor param=AreaData.monster_level src=block prop=monster_level}
  52. int32 monster_level = 2;
  53. //怪物 仅导出坐标在当前区块 min_x~max_x、min_y~max_y 范围内的 BuildingType==12 对象
  54. //{slgeditor param=AreaData.monster_data fill=map from=instances key=center globalTag=BuildingType globalTagVelue=12 filterInBlock=true }
  55. map<int32,MonsterData> monster_data = 3;
  56. //最小值X
  57. //{slgeditor param=AreaData.min_x src=block prop=min_x}
  58. int32 min_x = 4;
  59. //最小值Y
  60. //{slgeditor param=AreaData.min_y src=block prop=min_y}
  61. int32 min_y = 5;
  62. //最大值X
  63. //{slgeditor param=AreaData.max_x src=block prop=max_x}
  64. int32 max_x = 6;
  65. //最大值Y
  66. //{slgeditor param=AreaData.max_y src=block prop=max_y}
  67. int32 max_y = 7;
  68. }
  69. //出生点数据
  70. message BornData {
  71. //中心点 换算公式 index = y * width + x
  72. //{slgeditor param=BornData.center src=instance prop=pos} // 所有Vector2Shoft都映射成 y * width + x
  73. int32 center = 1;
  74. //{slgeditor param=BornData.occupied_coords src=instance prop=offsets}
  75. //占据面积(位置索引的集合),不含子建筑(卫城等)
  76. repeated int32 occupied_coords = 2;
  77. //洲id
  78. //{slgeditor param=BornData.area1 src=instance kind=area areaLevel=1}
  79. int32 area1 = 3;
  80. }
  81. //资源点
  82. message ResData {
  83. //{slgeditor param=ResData.config_id src=instance prop=exportId} // 就是导出Instance的id
  84. //配置Id
  85. int32 config_id = 1;
  86. //中心点 换算公式 index = y * width + x
  87. //{slgeditor param=ResData.center src=instance prop=pos} // 所有Vector2Shoft都映射成 y * width + x
  88. int32 center = 2;
  89. }
  90. //怪物点
  91. message MonsterData {
  92. //{slgeditor param=MonsterData.config_id src=instance prop=exportId} // 就是导出Instance的id
  93. //配置Id
  94. int32 config_id = 1;
  95. //中心点 换算公式 index = y * width + x
  96. //{slgeditor param=MonsterData.center src=instance prop=pos} // 所有Vector2Shoft都映射成 y * width + x
  97. int32 center = 2;
  98. }