塔(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、无交互方块 |