塔(Tower)

基本信息

属性 值
枚举 greymerk.roguelike.dungeon.towers.Tower(dungeon/towers/Tower.java:7)
常量数 8
工厂方法 Tower.get(Tower)(dungeon/towers/Tower.java:18)
实现类数 8 个(dungeon/towers/ 共 10 个 .java,减去接口 ITower 与枚举 Tower)
接口 ITower(dungeon/towers/ITower.java,13 行)
生成调用点 dungeon/DungeonGenerator.java:60(每座地牢生成完后必建)、citadel/CityGrounds.java:65(堡垒随机取塔)
缺省回退 default: return new RogueTower()(Tower.java:37-38)

功能

每座地牢的最顶层必定建一座塔。生成流程在所有楼层完成后,于 (inX, TOPLEVEL, inZ) 处调用 Tower.get(tower).generate(...):

Tower tower = settings.getTower().getTower();
rand = Dungeon.getRandom(editor, inX, inZ);
Tower.get(tower).generate(editor, rand, settings.getTower().getTheme(), new Coord(inX, TOPLEVEL, inZ));

(dungeon/DungeonGenerator.java:58-60)

塔自带独立主题(TowerSettings.getTheme()),因此塔的材质不必与塔下层一致。未指定时缺省为 Tower.ROGUE + Theme.TOWER(dungeon/settings/DungeonSettings.java:189)。

塔表

常量 实现类 行数 由哪些内置设置选用
ROGUE RogueTower 250 缺省(DungeonSettings.java:189)、SettingsGrasslandTheme.java:27、SettingsTheme.java:13、SettingsCustomBase.java:22
ENIKO EniTower 410 SettingsMountainTheme.java:29
ETHO EthoTower 247 SettingsMesaTheme.java:24
PYRAMID PyramidTower 329 SettingsDesertTheme.java:33
JUNGLE JungleTower 519 SettingsJungleTheme.java:29
WITCH WitchTower 415 SettingsSwampTheme.java:33
HOUSE HouseTower 719 SettingsForestTheme.java:27
BUNKER BunkerTower 323 无内置设置选用(仅可由 JSON 设置包指定)

⚠️ BUNKER 是唯一没有被任何内置设置引用的塔。它仍是活的:Tower.get 的 case BUNKER 正常返回实例,且 CityGrounds.java:65 会在 /roguelike citadel 时从 Tower.values() 随机抽取,因此仍可出现在堡垒中。

数值

数值名 值 来源
塔常量数 8 dungeon/towers/Tower.java:8-16
塔基 Y 坐标常量 TOPLEVEL = 50 dungeon/DungeonGenerator.java:16
楼层垂直间距 VERTICAL_SPACING = 10 dungeon/DungeonGenerator.java:15
实现类行数区间 247(EthoTower)– 719(HouseTower) 上表
每座地牢的塔数 1 dungeon/DungeonGenerator.java:58-60

Tower.getBaseCoord(IWorldEditor, Coord)(Tower.java:42)负责把塔基对齐到合法地面。

交互

触发 行为
地牢生成完毕 在 (x, 50, z) 建塔;塔身材质取自该地牢设置的 towerSettings 主题
/roguelike citadel <X> <Z> Citadel.generate 在 y=50 建城基,塔与主题均随机(citadel/Citadel.java:21、citadel/CityGrounds.java:65-69)
玩家 塔为纯装饰/地标结构,无 GUI、无交互方块

相关条目