diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 79e88dfded..fc5bee0867 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -121,7 +121,7 @@ continue = 继续 maps.none = [lightgray]< 未找到地图 > invalid = 无效 pickcolor = 选择颜色 -color = Color +color = 颜色 preparingconfig = 准备配置 preparingcontent = 准备内容 uploadingcontent = 上传内容 @@ -415,11 +415,11 @@ wave.waveInProgress = [lightgray]波次袭来 waiting = [lightgray]等待中… waiting.players = 等待玩家加入… wave.enemies = [lightgray]剩余 {0} 个敌人 -wave.enemycores = [accent]{0}[lightgray] 敌方核心 -wave.enemycore = [accent]{0}[lightgray] 敌方核心 +wave.enemycores = [accent]{0}[lightgray] 个敌方核心 +wave.enemycore = [accent]{0}[lightgray] 个敌方核心 wave.enemy = [lightgray]剩余 {0} 个敌人 -wave.guardianwarn = Boss 将在 [accent]{0}[] 个波次后出现。 -wave.guardianwarn.one = Boss 将在 [accent]{0}[] 个波次后出现。 +wave.guardianwarn = Boss 将在 [accent]{0}[] 波后抵达 +wave.guardianwarn.one = Boss 将在 [accent]{0}[] 波后抵达 loadimage = 加载图像 saveimage = 保存图像 unknown = 未知 @@ -466,7 +466,7 @@ editor.worldprocessors = 世界处理器 editor.worldprocessors.editname = 命名 editor.worldprocessors.none = [lightgray]未找到世界处理器!\n请在地图编辑器中添加或使用下方的 \ue813 添加按钮。 editor.worldprocessors.nospace = 没有足够空间放置世界处理器! -editor.worldprocessors.delete.confirm = 你确定要删除这个世界处理器吗?\n\n如果其周围有环境墙体,将由环境墙体取代。 +editor.worldprocessors.delete.confirm = 你确定要删除这个世界处理器吗?\n\n如果其周围有环境墙体,将由该墙体取代。 editor.ingame = 游戏内编辑 editor.playtest = 游戏内测试 editor.publish.workshop = 上传到创意工坊 @@ -730,7 +730,7 @@ objective.destroyblock = [accent]摧毁:\n[]{0}[lightgray]{1} objective.destroyblocks = [accent]摧毁:[lightgray]{0}[white]/{1}\n{2}[lightgray]{3} objective.item = [accent]获得:[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} objective.coreitem = [accent]移动至核心:\n[][lightgray]{0}[]/{1}\n{2}[lightgray]{3} -objective.build = [accent]建造[] [lightgray]{0}[] 个 {1} [lightgray]{2} +objective.build = [accent]建造:[][lightgray]{0}[]x\n{1}[lightgray]{2} objective.buildunit = [accent]生产单位:[][lightgray]{0}[]x\n{1}[lightgray]{2} objective.destroyunits = [accent]摧毁单位:[][lightgray]{0}[]x objective.enemiesapproaching = [accent]敌人来袭:[lightgray]{0}[] @@ -796,7 +796,7 @@ sectors.wave = 波次: sectors.stored = 贮存: sectors.resume = 继续 sectors.launch = 发射 -sectors.viewsubmission = \ue80d View Submissions +sectors.viewsubmission = \ue80d 查看提交 sectors.select = 选择 sectors.launchselect = 选择发射目的地 sectors.nonelaunch = [lightgray]无(自动销毁) @@ -821,7 +821,7 @@ sector.changeicon = 更改图标 sector.noswitch.title = 无法切换区块 sector.noswitch = 你无法在当前区块遭受攻击时切换区块。\n\n区块:[accent]{0}[] 位于 [accent]{1}[] sector.view = 查看区块 -sector.foundationrequired = [lightgray] Core: Foundation Required +sector.foundationrequired = [lightgray] 需要次代核心 threat.low = 低度 threat.medium = 中度 @@ -1109,7 +1109,7 @@ ability.liquidexplode.description = 死亡时释放液体 ability.stat.firingrate = [stat]{0}/秒[lightgray] 射速 ability.stat.regen = [stat]{0}/秒[lightgray] 生命恢复速度 -ability.stat.pulseregen = [stat]{0}[lightgray] health/pulse +ability.stat.pulseregen = [stat]{0}[lightgray] 回盾/每次 ability.stat.shield = [stat]{0}[lightgray] 护盾 ability.stat.repairspeed = [stat]{0}/秒[lightgray] 修复速度 ability.stat.slurpheal = [stat]{0}[lightgray] 生命/液体单位 @@ -1259,8 +1259,8 @@ setting.borderlesswindow.description = 可能需要重启 setting.fps.name = 显示帧数和网络延迟 setting.console.name = 启用控制台 setting.smoothcamera.name = 平滑镜头 -setting.detach-camera.name = Free Camera -setting.detach-camera.description = If enabled, the camera moves independently of the player unit.\nThis setting can be assigned a hotkey. +setting.detach-camera.name = 自由视角 +setting.detach-camera.description = 启用后,视角可独立于玩家单位自由移动。\n此设置可绑定快捷键。 setting.vsync.name = 垂直同步 setting.pixelate.name = 像素画面 setting.minimap.name = 显示小地图 @@ -1339,7 +1339,7 @@ keybind.unit_command_load_units.name = 单位命令:拾取单位 keybind.unit_command_load_blocks.name = 单位命令:拾取建筑 keybind.unit_command_unload_payload.name = 单位命令:卸载载荷 keybind.unit_command_enter_payload.name = 单位命令:进入载荷 -keybind.unit_command_loop_payload.name = 单位命令:循环单位转移 +keybind.unit_command_loop_payload.name = 单位命令:往返搬运单位 keybind.rebuild_select.name = 重建区域 keybind.schematic_select.name = 选择区域 @@ -1396,8 +1396,8 @@ keybind.chat_scroll.name = 聊天记录滚动 keybind.chat_mode.name = 切换聊天模式 keybind.drop_unit.name = 释放单位 keybind.zoom_minimap.name = 小地图缩放 -keybind.detach_camera.name = Toggle Free Camera -keybind.debug_hitboxes.name = Toggle Debug Hitboxes +keybind.detach_camera.name = 切换自由视角 +keybind.debug_hitboxes.name = 切换调试碰撞箱 mode.help.title = 游戏模式说明 mode.survival.name = 生存 mode.survival.description = 通常的游戏模式,资源有限,自动生成敌人波次。\n[gray]需要地图中有敌方出生点和己方核心。 @@ -1413,7 +1413,7 @@ mode.custom = 自定义模式 rules.invaliddata = 剪贴板数据无效。 rules.hidebannedblocks = 隐藏禁用的建筑 rules.infiniteresources = 无限资源 -rules.fillitems = Fill Core With Items +rules.fillitems = 填满核心 rules.onlydepositcore = 资源仅可丢入核心 rules.derelictrepair = 允许修复残骸建筑 rules.reactorexplosions = 允许反应堆爆炸 @@ -1428,8 +1428,8 @@ rules.alloweditworldprocessors = 允许编辑世界处理器 rules.alloweditworldprocessors.info = 启用后,即使不在编辑器中,也可以放置和编辑世界处理器。 rules.waves = 波次 rules.airUseSpawns = 空中单位出生点 -rules.wavespawnatcores = Waves Spawn At Cores -rules.wavespawnatcores.info = When enabled in attack mode, waves spawn near all enemy cores. +rules.wavespawnatcores = 波次在核心生成 +rules.wavespawnatcores.info = 在进攻模式中,波次在每个敌对核心旁生成。 rules.attack = 进攻模式 rules.buildai = AI 建造 rules.buildaitier = AI 建造等级 @@ -1453,7 +1453,7 @@ rules.unitdamagemultiplier = 单位伤害倍率 rules.unitcrashdamagemultiplier = 单位坠毁伤害倍率 rules.unitminespeedmultiplier = 单位采矿速度倍率 rules.solarmultiplier = 太阳能发电倍率 -rules.unitcapvariable = 单位上限随核心数量增加 +rules.unitcapvariable = 核心可增加单位上限 rules.unitpayloadsexplode = 携带的载荷与单位一起爆炸 rules.unitcap = 单位上限 rules.limitarea = 限制地图有效区域 @@ -1538,7 +1538,7 @@ liquid.oil.name = 石油 liquid.cryofluid.name = 冷冻液 liquid.neoplasm.name = 瘤液 liquid.arkycite.name = 芳油 -liquid.gallium.name = 镓 +liquid.gallium.name = 镓液 liquid.ozone.name = 臭氧 liquid.hydrogen.name = 氢气 liquid.nitrogen.name = 氮气 @@ -1682,22 +1682,22 @@ block.metal-floor-3.name = 金属地板 3 block.metal-floor-4.name = 金属地板 4 block.metal-floor-5.name = 金属地板 5 block.metal-floor-damaged.name = 损坏的金属地板 -block.metal-tiles-1.name = Metal Tiles 1 -block.metal-tiles-2.name = Metal Tiles 2 -block.metal-tiles-3.name = Metal Tiles 3 -block.metal-tiles-4.name = Metal Tiles 4 -block.metal-tiles-5.name = Metal Tiles 5 -block.metal-tiles-6.name = Metal Tiles 6 -block.metal-tiles-7.name = Metal Tiles 7 -block.metal-tiles-8.name = Metal Tiles 8 -block.metal-tiles-9.name = Metal Tiles 9 -block.metal-tiles-10.name = Metal Tiles 10 -block.metal-tiles-11.name = Metal Tiles 11 -block.metal-tiles-12.name = Metal Tiles 12 -block.colored-floor.name = Colored Floor -block.colored-wall.name = Colored Wall -block.character-overlay.name = Character Overlay -block.character-overlay-white.name = Character Overlay (White) +block.metal-tiles-1.name = 金属地基 1 +block.metal-tiles-2.name = 金属地基 2 +block.metal-tiles-3.name = 金属地基 3 +block.metal-tiles-4.name = 金属地基 4 +block.metal-tiles-5.name = 金属地基 5 +block.metal-tiles-6.name = 金属地基 6 +block.metal-tiles-7.name = 金属地基 7 +block.metal-tiles-8.name = 金属地基 8 +block.metal-tiles-9.name = 金属地基 9 +block.metal-tiles-10.name = 金属地基 10 +block.metal-tiles-11.name = 金属地基 11 +block.metal-tiles-12.name = 金属地基 12 +block.colored-floor.name = 染色地板 +block.colored-wall.name = 染色墙壁 +block.character-overlay.name = 标识贴片 +block.character-overlay-white.name = 标识贴片 (白色) block.dark-panel-1.name = 暗面板 1 block.dark-panel-2.name = 暗面板 2 block.dark-panel-3.name = 暗面板 3 @@ -1858,7 +1858,7 @@ block.heat-source.name = 热量源 block.heat-source.description = 无限输出热量,仅限沙盒。 #Erekir -block.empty.name = 虚无 +block.empty.name = 空 block.rhyolite-crater.name = 流纹岩坑 block.rough-rhyolite.name = 粗糙流纹岩 block.regolith.name = 流纹岩 @@ -2063,7 +2063,7 @@ hint.waveFire = [accent]波浪[]炮塔以水作弹药时,会自动扑灭附近 hint.generator = :combustion-generator: [accent]火力发电机[]燃煤发电,并将电力输送至相邻建筑。\n\n用 :power-node: [accent]电力节点[]可以扩展电力输送范围。 hint.guardian = [accent]Boss[]单位装甲厚重。[accent]铜[]和[accent]铅[]这类较弱的子弹对其[scarlet]作用不佳[]。\n\n使用高级别炮塔或使用 :graphite: [accent]石墨[]作为 :duo: 双管炮及 :salvo: 齐射炮的弹药来消灭 Boss。 hint.coreUpgrade = 核心可以通过[accent]在上面覆盖更高等级的核心[]进行升级。\n\n在 :core-shard: [accent]初代核心[]上放置一个 :core-foundation: [accent]次代核心[]。确保周围没有障碍物。 -hint.cannotUpgrade = A [red]:tree:[] icon over a payload unit indicates that its upgraded version is not researched yet.\n\nUnit upgrades must be researched in the [accent]:tree: tech tree[] before they can be produced in reconstructors. +hint.cannotUpgrade = 如果你看到运输单位上方有一个 [red]:tree:[] 图标,说明它的升级版本尚未在科技树中解锁。\n\n必须先在 [accent]:tree: 科技树[] 中完成对应单位的升级研究,才能在重构工厂中生产它。 hint.presetLaunch = 灰色的[accent]着陆区块[],如[accent]冰冻森林[],从其他任何地方发射都可以到达,不需要先占领邻近的区块。\n\n[accent]数字编号的区块[],比如这个,可以[accent]选择性[]占领。 hint.presetDifficulty = 这个区块受敌人[scarlet]威胁程度很高[]。\n解锁适当的科技,并做好充分准备,否则[accent]不建议[]向这里发射。 hint.coreIncinerate = 核心内一种物品达到容量上限后,同种物品再进入时会被[accent]销毁[]。 @@ -2377,7 +2377,7 @@ block.shielded-wall.description = 保护己方建筑,挡下敌方炮弹。创 block.blast-door.description = 当己方地面单位在范围内时自动打开的墙。无法手动控制。 block.duct.description = 向前运输物品。只能存储一个物品。 block.armored-duct.description = 向前运输物品。不接受侧面的非管道输入。 -block.duct-router.description = 将物品平均分配到其它3个方向。只接受背面的物品。可被配置为分类器。 +block.duct-router.description = 将物品平均分配到其它 3 个方向。只接受背面的物品。可被配置为分类器。 block.overflow-duct.description = 当前方被堵塞时才会向两侧输出,用于处理多余的物品。 block.duct-bridge.description = 跨越任意地形或建筑物传输物品。 block.duct-unloader.description = 从背后的建筑卸载指定物品。无法从核心卸载。 @@ -2389,11 +2389,11 @@ block.unit-cargo-loader.description = 建造货运无人机。无人机通过需 block.unit-cargo-unload-point.description = 作为货运无人机的卸货点。接受需求的物品。 block.beam-node.description = 向其他互相垂直的节点传输电力。存储少量电力。 block.beam-tower.description = 向其他互相垂直的节点传输电力。存储大量电力。连接距离远。 -block.beam-link.description = 用于远距离传输电力。\n只能连接到相邻的建筑物或其他电力枢纽。 +block.beam-link.description = 用于远距离传输电力。\n只能连接到相邻建筑或者另一个激光连接器。 block.turbine-condenser.description = 当放置在喷口上时产生电力。同时产生少量水。 block.chemical-combustion-chamber.description = 利用芳油和臭氧发电。 block.pyrolysis-generator.description = 使用矿渣热解芳油产生大量电力。同时产生水。 -block.flux-reactor.description = 在加热时产生大量电力。需要氰气作为稳定剂。电力输出和氰气需求与热量输入成比例。\n如果提供的氰气不足则会爆炸。 +block.flux-reactor.description = 在加热时产生大量电力。需要氰气作为稳定剂。电力输出和氰气需求与热量输入成比例。\n在被加热时如果提供的氰气不足则会爆炸。 block.neoplasia-reactor.description = 利用芳油、水和相织布产生大量电力。同时产生热量和危险的瘤液。\n如果瘤液未通过导管从反应堆中移除,则会剧烈爆炸。 block.build-tower.description = 自动重建范围内的建筑,并在其他单位进行建造时提供协助。 block.regen-projector.description = 在方形范围内缓慢修复己方建筑。需要氢气。 @@ -2435,7 +2435,7 @@ unit.atrax.description = 向地面目标发射削弱性的球状矿渣液。可 unit.spiroct.description = 向敌人发射较弱的激光束,并在该过程中自我修复。可以跨越大多数地形。 unit.arkyid.description = 向敌人发射大型激光束,并在该过程中自我修复。可以跨越大多数地形。 unit.toxopid.description = 向敌人发射大型带电集束炮弹和穿透性激光。可以跨越大多数地形。 -unit.flare.description = 向地面敌人发射标准子弹。 +unit.flare.description = 向敌人发射标准子弹。 unit.horizon.description = 向正下方的地面敌人投掷炸弹。 unit.zenith.description = 向敌人发射多枚导弹。 unit.antumbra.description = 向敌人发射密集的子弹。 @@ -2457,7 +2457,7 @@ unit.retusa.description = 向敌人发射追踪鱼雷,并修复己方单位。 unit.oxynoe.description = 向敌人发射火焰束,并修复己方建筑。搭载一台单点防御炮塔,能够防御来袭的子弹。 unit.cyerce.description = 向敌人发射追踪集束导弹,并修复己方单位。 unit.aegires.description = 产生能量场,使范围内的敌方建筑与单位受到电击,对己方则进行修复。 -unit.navanax.description = 发射大型电磁爆弹,对敌方电网造成显著破坏并修复己方建筑。搭载4台自动激光炮台,能熔化靠近的敌人。 +unit.navanax.description = 发射大型电磁爆弹,对敌方电网造成重大破坏,同时可修复友军建筑,压制敌方修复建筑。搭载4台自动激光炮台,能熔化靠近的敌人。 #Erekir unit.stell.description = 向敌人发射普通子弹。 @@ -2512,8 +2512,8 @@ lst.spawnwave = 在任意位置生成一波敌人\n并不记录在波数计数 lst.explosion = 在某个位置生成爆炸。 lst.setrate = 在指令/时间刻的时间下设置处理器处理速度。 lst.fetch = 按索引查找单位、核心、玩家或建筑物\n索引从 0 开始,以其返回的计数结束。 -lst.packcolor = 将 [0,1] 范围内的 RGBA 分量整合成单个数字,用于绘图或规则设置。 -lst.unpackcolor = Unpack RGBA components from a color that was packed using Pack Color. +lst.packcolor = 将 RGBA 各分量(0-1 范围)打包为单个整数,用于绘图或逻辑规则。 +lst.unpackcolor = 从打包后的颜色值中解出 RGBA 分量。 lst.setrule = 设置地图规则。 lst.flushmessage = 在屏幕中央投影文字缓存区的内容\n会等待上一个文字显示结束。 lst.cutscene = 控制玩家游戏视角。 @@ -2591,7 +2591,7 @@ laccess.id = 单位/块/物品/液体的 ID。\n这是 Lookup 的反向操作。 laccess.displaywidth = 显示屏的宽度(以像素为单位)。 laccess.displayheight = 显示屏的高度(以像素为单位)。 laccess.buffersize = 显示器图形缓冲区中未处理的命令数。 -laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. +laccess.operations = 方块执行操作的次数。\n对于显示屏,返回 drawflush 调用次数。 lcategory.unknown = 未知 lcategory.unknown.description = 未分类的指令 @@ -2625,13 +2625,13 @@ lenum.always = 无条件跳转 lenum.idiv = 整数除法,返回不带小数的商 lenum.div = 除法,除以 0 时返回 [accent]null[] lenum.mod = 求除法的余数 -lenum.emod = True modulo, result sign comes from the divisor. +lenum.emod = 取模,结果总是正数 lenum.equal = 相等。转换参数类型后进行比较\n与数字进行比较时,null 转换为 0 ,非 null 对象转换为 1 lenum.notequal = 不相等。转换参数类型后进行比较 lenum.strictequal = 严格相等。不转换参数类型\n可用于准确检查 [accent]null[] 对象 lenum.shl = 左移位 lenum.shr = 右移位 -lenum.ushr = Unsigned bit-shift right. +lenum.ushr = 无符号右移 lenum.or = 按位或 lenum.land = 逻辑与 lenum.and = 按位与 @@ -2751,7 +2751,7 @@ lenum.wavespacing = 波次之间的时间(以 tick 为单位) lenum.enemycorebuildradius = 敌人核心半径周围无建筑区 lenum.dropzoneradius = 敌人出生点周围的半径 lenum.unitcap = 基本单位上限。但仍然可以通过方块增加 -lenum.lighting = 是否启用环境照明 +lenum.lighting = 是否启用环境光 lenum.buildspeed = 建筑速度倍率 lenum.unithealth = 单位受伤减免,计算方式是伤害除以减免值 lenum.unitbuildspeed = 单元工厂建造单元的速度 diff --git a/core/src/mindustry/world/blocks/logic/LogicDisplay.java b/core/src/mindustry/world/blocks/logic/LogicDisplay.java index 1084c0c9e1..393378f440 100644 --- a/core/src/mindustry/world/blocks/logic/LogicDisplay.java +++ b/core/src/mindustry/world/blocks/logic/LogicDisplay.java @@ -73,6 +73,8 @@ public class LogicDisplay extends Block{ } public class LogicDisplayBuild extends Building{ + //The root display (bottom left corner of display for tileable displays) + public LogicDisplayBuild rootDisplay = this; public @Nullable FrameBuffer buffer; public float color = Color.whiteFloatBits; public float stroke = 1f; @@ -111,8 +113,8 @@ public class LogicDisplay extends Block{ public double sense(LAccess sensor){ return switch(sensor){ case displayWidth, displayHeight -> displaySize; - case bufferSize -> commands.size; - case operations -> operations; + case bufferSize -> rootDisplay.commands.size; + case operations -> rootDisplay.operations; default -> super.sense(sensor); }; } diff --git a/core/src/mindustry/world/blocks/logic/TileableLogicDisplay.java b/core/src/mindustry/world/blocks/logic/TileableLogicDisplay.java index a6ff9d3aed..72365b5eb2 100644 --- a/core/src/mindustry/world/blocks/logic/TileableLogicDisplay.java +++ b/core/src/mindustry/world/blocks/logic/TileableLogicDisplay.java @@ -118,8 +118,6 @@ public class TileableLogicDisplay extends LogicDisplay{ } public class TileableLogicDisplayBuild extends LogicDisplayBuild{ - //bottom left corner of display - public TileableLogicDisplayBuild rootDisplay = this; //size of display area public int tilesWidth = 1, tilesHeight = 1, originX, originY; public @Nullable Seq prevBuffers;