feat: 增加三个地块

`tile_deepwater` -> DeepSea(我也不知道这玩意跟 `tile_deepsea` 有啥关系,看名字差不多)
`tile_flystart`  -> Airport(无人机出发点)
`tile_grass`     -> Grass  (草地)
This commit is contained in:
zzyyyl
2022-10-01 22:04:11 +08:00
parent 883429ffb1
commit 02400176ec
3 changed files with 23 additions and 17 deletions

View File

@@ -46,11 +46,12 @@ std::unordered_map<asst::Point, asst::TilePack::TileInfo> asst::TilePack::calc(c
static const std::unordered_map<std::string, TileKey> TileKeyMapping = {
{ "tile_forbidden", TileKey::Forbidden }, { "tile_wall", TileKey::Wall },
{ "tile_road", TileKey::Road }, { "tile_end", TileKey::Home },
{ "tile_start", TileKey::EnemyHome }, { "tile_floor", TileKey::Floor },
{ "tile_hole", TileKey::Hole }, { "tile_telin", TileKey::Telin },
{ "tile_telout", TileKey::Telout }, { "tile_volcano", TileKey::Volcano },
{ "tile_healing", TileKey::Healing }, { "tile_deepsea", TileKey::DeepSea },
{ "tile_fence", TileKey::Fence },
{ "tile_start", TileKey::EnemyHome }, { "tile_flystart", TileKey::Airport },
{ "tile_floor", TileKey::Floor }, { "tile_hole", TileKey::Hole },
{ "tile_telin", TileKey::Telin }, { "tile_telout", TileKey::Telout },
{ "tile_grass", TileKey::Grass }, { "tile_deepsea", TileKey::DeepSea },
{ "tile_deepwater", TileKey::DeepSea }, { "tile_volcano", TileKey::Volcano },
{ "tile_healing", TileKey::Healing }, { "tile_fence", TileKey::Fence },
};
for (size_t y = 0; y < pos.size(); ++y) {

View File

@@ -29,6 +29,7 @@ namespace asst
Highland = 0,
Floor = 1
};
// clang-format off
enum class TileKey
{
Invalid = -1,
@@ -37,15 +38,17 @@ namespace asst
Road, // 可以放地面干员,敌人也可以走
Home, // 蓝门(可能还有其他的情况)
EnemyHome, // 红门(可能还有其他的情况)
Airport, // 无人机始发站
Floor, // 不能放干员,但敌人可以走
Hole, // 空降兵掉下去的地方(
Telin, // 传送门入口
Telout, // 传送门出口
Grass, // 草地,带有隐匿,可以放干员,部分地块敌人可以走
DeepSea, // 水,不能直接放干员(要借助泳圈道具),敌人可以走,但敌人会持续掉血
Volcano, // 岩浆地块,可以放干员,敌人也可以走,但是会持续掉血
Healing, // 治疗地块,可以放干员,敌人也可以走,会给干员回血
DeepSea, // 水,不能直接放干员(要借助泳圈道具),敌人可以走,但敌人会持续掉血
Fence // 敌人不会走,但可以放干员的地面位置
};
Fence, // 敌人不会走,但可以放干员的地面位置
}; // clang-format on
struct TileInfo
{
@@ -68,4 +71,4 @@ namespace asst
};
inline static auto& Tile = TilePack::get_instance();
}
} // namespace asst

View File

@@ -737,17 +737,19 @@ std::pair<asst::Point, int> asst::RoguelikeBattleTaskPlugin::calc_best_direction
static const std::unordered_map<TileKey, int> TileKeyFightWeights = {
{ TileKey::Invalid, 0 }, { TileKey::Forbidden, 0 }, { TileKey::Wall, 500 },
{ TileKey::Road, 1000 }, { TileKey::Home, 500 }, { TileKey::EnemyHome, 1000 },
{ TileKey::Floor, 1000 }, { TileKey::Hole, 0 }, { TileKey::Telin, 700 },
{ TileKey::Telout, 800 }, { TileKey::Volcano, 1000 }, { TileKey::Healing, 1000 },
{ TileKey::DeepSea, 1000 }, { TileKey::Fence, 800 },
{ TileKey::Airport, 1000 }, { TileKey::Floor, 1000 }, { TileKey::Hole, 0 },
{ TileKey::Telin, 700 }, { TileKey::Telout, 800 }, { TileKey::Grass, 500 },
{ TileKey::DeepSea, 1000 }, { TileKey::Volcano, 1000 }, { TileKey::Healing, 1000 },
{ TileKey::Fence, 800 },
};
// 治疗干员朝向的权重
static const std::unordered_map<TileKey, int> TileKeyMedicWeights = {
{ TileKey::Invalid, 0 }, { TileKey::Forbidden, 0 }, { TileKey::Wall, 1000 },
{ TileKey::Road, 1000 }, { TileKey::Home, 0 }, { TileKey::EnemyHome, 0 },
{ TileKey::Floor, 0 }, { TileKey::Hole, 0 }, { TileKey::Telin, 0 },
{ TileKey::Telout, 0 }, { TileKey::Volcano, 1000 }, { TileKey::Healing, 1000 },
{ TileKey::DeepSea, 0 }, { TileKey::Fence, 1000 },
{ TileKey::Invalid, 0 }, { TileKey::Forbidden, 0 }, { TileKey::Wall, 1000 },
{ TileKey::Road, 1000 }, { TileKey::Home, 0 }, { TileKey::EnemyHome, 0 },
{ TileKey::Airport, 0 }, { TileKey::Floor, 0 }, { TileKey::Hole, 0 },
{ TileKey::Telin, 0 }, { TileKey::Telout, 0 }, { TileKey::Grass, 500 },
{ TileKey::DeepSea, 0 }, { TileKey::Volcano, 1000 }, { TileKey::Healing, 1000 },
{ TileKey::Fence, 1000 },
};
switch (oper.role) {