(client) feat:实现技能树界面,实现地图生成器,实现维度指定,实现规则瓦片定义,实现逃跑逻辑,实现消息定义,实现武器动画,实现受击动画 fix: 修复单攻击子弹击中多个目标,修复人物属性计算错误 (#56)

Co-authored-by: m0_75251201 <m0_75251201@noreply.gitcode.com>
Reviewed-on: http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite/pulls/56
This commit is contained in:
2025-09-19 08:26:54 +08:00
parent 78849e0cc5
commit 87a8abe86c
282 changed files with 19364 additions and 8824 deletions

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<Define>
<DimensionDef>
<defName>DefaultOutsideDimension</defName>
<label>默认外部维度地图</label>
<description>默认外部维度地图的描述</description>
<mapGenerators>
<li>DefaultMapGenerator</li>
<li>TreeGenerator</li>
</mapGenerators>
</DimensionDef>
<DimensionDef>
<defName>DefaultInsideDimension</defName>
<label>默认内部维度地图</label>
<description>默认内部维度地图的描述</description>
<mapGenerators>
<li>DefaultMapGenerator2</li>
<li>TreeGenerator</li>
</mapGenerators>
</DimensionDef>
</Define>

View File

@@ -1,55 +1,334 @@
<?xml version="1.0" encoding="utf-8"?>
<Define>
<ImageDef>
<defName>GrassDirt</defName>
<path>Resources\Map\GrassSoild.png</path>
<wCount>4</wCount>
<hCount>4</hCount>
<defName>tileMap</defName>
<path>Resources\Map\tilemap_packed.png</path>
<wCount>18</wCount>
<hCount>11</hCount>
</ImageDef>
<!-- 定义一个普通的草地瓦片 -->
<TileDef>
<defName>Grass</defName>
<name>Grass</name>
<label>草地</label>
<description>地图上的基础草地瓦片,构成路边的背景。</description>
<collider>None</collider>
<texture>tileMap_0</texture>
<rules>
<rule>
<neighborConditions>
<li>Any</li><li>Any</li><li>Any</li>
<li>Any</li> <li>Any</li>
<li>Any</li><li>Any</li><li>Any</li>
</neighborConditions>
<outputType>Random</outputType>
<animationTextures>
<li>tileMap_0</li>
<li>tileMap_1</li>
<li>tileMap_2</li>
</animationTextures>
</rule>
</rules>
</TileDef>
<!-- 定义水体 -->
<TileDef>
<defName>Dirt</defName>
<name>Dirt</name>
<defName>Water</defName>
<label>水面</label>
<description>地图上的水体瓦片,构成河流和湖泊的背景。</description>
<collider>Grid</collider>
<texture>tileMap_37</texture>
<rules>
<rule>
<neighborConditions>
<li>This</li><li>This</li><li>This</li>
<li>This</li> <li>This</li>
<li>This</li><li>This</li><li>This</li>
</neighborConditions>
<animationTextures>
<li>tileMap_37</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>Any</li><li>NotThis</li><li>Any</li>
<li>This</li> <li>This</li>
<li>This</li><li>This</li><li>This</li>
</neighborConditions>
<animationTextures>
<li>tileMap_19</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>Any</li><li>This</li><li>This</li>
<li>NotThis</li> <li>This</li>
<li>Any</li><li>This</li><li>This</li>
</neighborConditions>
<animationTextures>
<li>tileMap_36</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>This</li><li>This</li><li>This</li>
<li>This</li> <li>This</li>
<li>Any</li><li>NotThis</li><li>Any</li>
</neighborConditions>
<animationTextures>
<li>tileMap_55</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>This</li><li>This</li><li>Any</li>
<li>This</li> <li>NotThis</li>
<li>This</li><li>This</li><li>Any</li>
</neighborConditions>
<animationTextures>
<li>tileMap_38</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>NotThis</li><li>NotThis</li><li>Any</li>
<li>NotThis</li> <li>This</li>
<li>Any</li><li>This</li><li>This</li>
</neighborConditions>
<animationTextures>
<li>tileMap_18</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>Any</li><li>NotThis</li><li>NotThis</li>
<li>This</li> <li>NotThis</li>
<li>This</li><li>This</li><li>Any</li>
</neighborConditions>
<animationTextures>
<li>tileMap_20</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>This</li><li>This</li><li>Any</li>
<li>This</li> <li>NotThis</li>
<li>Any</li><li>NotThis</li><li>NotThis</li>
</neighborConditions>
<animationTextures>
<li>tileMap_56</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>Any</li><li>This</li><li>This</li>
<li>NotThis</li> <li>This</li>
<li>NotThis</li><li>NotThis</li><li>Any</li>
</neighborConditions>
<animationTextures>
<li>tileMap_54</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>NotThis</li><li>NotThis</li><li>Any</li>
<li>NotThis</li> <li>This</li>
<li>Any</li><li>This</li><li>NotThis</li>
</neighborConditions>
<animationTextures>
<li>tileMap_4</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>Any</li><li>NotThis</li><li>NotThis</li>
<li>This</li> <li>NotThis</li>
<li>NotThis</li><li>This</li><li>Any</li>
</neighborConditions>
<animationTextures>
<li>tileMap_5</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>NotThis</li><li>This</li><li>Any</li>
<li>This</li> <li>NotThis</li>
<li>Any</li><li>NotThis</li><li>NotThis</li>
</neighborConditions>
<animationTextures>
<li>tileMap_22</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>Any</li><li>This</li><li>NotThis</li>
<li>NotThis</li> <li>This</li>
<li>NotThis</li><li>NotThis</li><li>Any</li>
</neighborConditions>
<animationTextures>
<li>tileMap_21</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>NotThis</li><li>This</li><li>This</li>
<li>This</li> <li>This</li>
<li>This</li><li>This</li><li>This</li>
</neighborConditions>
<animationTextures>
<li>tileMap_90</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>This</li><li>This</li><li>NotThis</li>
<li>This</li> <li>This</li>
<li>This</li><li>This</li><li>This</li>
</neighborConditions>
<animationTextures>
<li>tileMap_91</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>This</li><li>This</li><li>This</li>
<li>This</li> <li>This</li>
<li>This</li><li>This</li><li>NotThis</li>
</neighborConditions>
<animationTextures>
<li>tileMap_92</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>This</li><li>This</li><li>This</li>
<li>This</li> <li>This</li>
<li>NotThis</li><li>This</li><li>This</li>
</neighborConditions>
<animationTextures>
<li>tileMap_93</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>NotThis</li><li>This</li><li>This</li>
<li>This</li> <li>This</li>
<li>NotThis</li><li>This</li><li>This</li>
</neighborConditions>
<animationTextures>
<li>tileMap_74</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>This</li><li>This</li><li>NotThis</li>
<li>This</li> <li>This</li>
<li>This</li><li>This</li><li>NotThis</li>
</neighborConditions>
<animationTextures>
<li>tileMap_72</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>This</li><li>This</li><li>This</li>
<li>This</li> <li>This</li>
<li>NotThis</li><li>This</li><li>NotThis</li>
</neighborConditions>
<animationTextures>
<li>tileMap_39</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>NotThis</li><li>This</li><li>NotThis</li>
<li>This</li> <li>This</li>
<li>This</li><li>This</li><li>This</li>
</neighborConditions>
<animationTextures>
<li>tileMap_75</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>Any</li><li>NotThis</li><li>Any</li>
<li>This</li> <li>This</li>
<li>Any</li><li>NotThis</li><li>Any</li>
</neighborConditions>
<animationTextures>
<li>tileMap_73</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
<rule>
<neighborConditions>
<li>Any</li><li>This</li><li>Any</li>
<li>NotThis</li> <li>NotThis</li>
<li>Any</li><li>This</li><li>Any</li>
</neighborConditions>
<animationTextures>
<li>tileMap_57</li>
</animationTextures>
<outputCollider>Grid</outputCollider>
</rule>
</rules>
</TileDef>
<TileMappingTableDef>
<defName>GrassDirtTable</defName>
<Grass_Grass_Grass_Grass value="GrassDirt_6"/>
<!-- 2 + (1 * 4) = 6 -->
<Dirt_Dirt_Dirt_Grass value="GrassDirt_13"/>
<!-- 1 + (3 * 4) = 13 -->
<Dirt_Dirt_Grass_Dirt value="GrassDirt_0"/>
<!-- 0 + (0 * 4) = 0 -->
<Dirt_Grass_Dirt_Dirt value="GrassDirt_8"/>
<!-- 0 + (2 * 4) = 8 -->
<Grass_Dirt_Dirt_Dirt value="GrassDirt_15"/>
<!-- 3 + (3 * 4) = 15 -->
<Dirt_Grass_Dirt_Grass value="GrassDirt_1"/>
<!-- 1 + (0 * 4) = 1 -->
<Grass_Dirt_Grass_Dirt value="GrassDirt_11"/>
<!-- 3 + (2 * 4) = 11 -->
<Dirt_Dirt_Grass_Grass value="GrassDirt_3"/>
<!-- 3 + (0 * 4) = 3 -->
<Grass_Grass_Dirt_Dirt value="GrassDirt_9"/>
<!-- 1 + (2 * 4) = 9 -->
<Dirt_Grass_Grass_Grass value="GrassDirt_5"/>
<!-- 1 + (1 * 4) = 5 -->
<Grass_Dirt_Grass_Grass value="GrassDirt_2"/>
<!-- 2 + (0 * 4) = 2 -->
<Grass_Grass_Dirt_Grass value="GrassDirt_10"/>
<!-- 2 + (2 * 4) = 10 -->
<Grass_Grass_Grass_Dirt value="GrassDirt_7"/>
<!-- 3 + (1 * 4) = 7 -->
<Dirt_Grass_Grass_Dirt value="GrassDirt_14"/>
<!-- 2 + (3 * 4) = 14 -->
<Grass_Dirt_Dirt_Grass value="GrassDirt_4"/>
<!-- 0 + (1 * 4) = 4 -->
<Dirt_Dirt_Dirt_Dirt value="GrassDirt_12"/>
<!-- 0 + (3 * 4) = 12 -->
</TileMappingTableDef>
</Define>
<TileDef>
<defName>Tree</defName>
<label></label>
<description>地图上的基础树木瓦片,构成森林。</description>
<collider>Sprite</collider>
<texture>tileMap_94</texture>
<rules>
<rule>
<neighborConditions>
<li>Any</li><li>Any</li><li>Any</li>
<li>Any</li> <li>Any</li>
<li>Any</li><li>Any</li><li>Any</li>
</neighborConditions>
<outputType>Random</outputType>
<animationTextures>
<li>tileMap_94</li>
<li>tileMap_112</li>
</animationTextures>
<collider>Sprite</collider>
</rule>
</rules>
</TileDef>
</Define>

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<Define>
<MapGeneratorDef>
<defName>DefaultMapGenerator</defName>
<label>默认地图生成器</label>
<description>一个简单的默认地图生成器,填充地图为草地</description>
<workClass>BasicTerrainMapGenerator</workClass>
<value>
{
"tileDefName":"Water",
"elseTileDefName":"Grass",
"mapCellSizeX":100,
"mapCellSizeY":100,
"threshold":0,
"Scale":7
}
</value>
</MapGeneratorDef>
<MapGeneratorDef>
<defName>DefaultMapGenerator2</defName>
<label>默认地图生成器2</label>
<description>一个简单的默认地图生成器2填充地图为草地</description>
<workClass>BasicTerrainMapGenerator</workClass>
<value>
{
"tileDefName":"Water",
"elseTileDefName":"Grass",
"mapCellSizeX":100,
"mapCellSizeY":100,
"threshold":0.3,
"Scale":2,
"offsetX":100,
"offsetY":0
}
</value>
</MapGeneratorDef>
<!-- <MapGeneratorDef>
<defName>WaterMapGenerator</defName>
<label>水面地图生成器</label>
<description>一个简单的水面地图生成器,填充地图为水面</description>
<workClass>BasicTerrainMapGenerator</workClass>
<value>
{
"tileDefName":"Water",
"mapCellSizeX":100,
"mapCellSizeY":100,
"threshold":0,
"Scale":10
}
</value>
</MapGeneratorDef> -->
<MapGeneratorDef>
<defName>TreeGenerator</defName>
<label>树木地图生成器</label>
<description>一个简单的树木地图生成器,填充地图为树木</description>
<workClass>PlantMapGenerator</workClass>
<value>
{
"tileDefName":"Tree",
"mapCellSizeX":100,
"mapCellSizeY":100,
"requiredBaseTileDefName":"Grass",
"density":0.2,
"threshold":0,
"Scale":5
}
</value>
</MapGeneratorDef>
</Define>