@@ -1473,140 +1473,140 @@ private static int GetJobPriority(IPlayerCharacter player)
14731473
14741474 public override void OnSettingsDraw ( )
14751475 {
1476- ImGui . Text ( "M12S 四运 绘制设置" ) ;
1476+ ImGui . Text ( "M12S 四运 绘制设置 (M12S Phase 4 Drawing Settings) " ) ;
14771477
14781478 var enableDraw = C . EnableDraw ;
1479- if ( ImGui . Checkbox ( "启用AOE绘制" , ref enableDraw ) )
1479+ if ( ImGui . Checkbox ( "启用AOE绘制 (Enable AOE drawing) " , ref enableDraw ) )
14801480 C . EnableDraw = enableDraw ;
14811481
14821482 var enableGuidance = C . EnableGuidance ;
1483- if ( ImGui . Checkbox ( "启用指路绘制" , ref enableGuidance ) )
1483+ if ( ImGui . Checkbox ( "启用指路绘制 (Enable guidance drawing) " , ref enableGuidance ) )
14841484 C . EnableGuidance = enableGuidance ;
14851485
14861486 ImGui . Separator ( ) ;
1487- ImGui . Text ( "延迟设置:" ) ;
1487+ ImGui . Text ( "延迟设置: (Delay settings) " ) ;
14881488
14891489 var delay = C . DelayMs ;
1490- if ( ImGui . SliderInt ( "AOE延迟绘制(ms)" , ref delay , 0 , 5000 ) )
1490+ if ( ImGui . SliderInt ( "AOE延迟绘制(ms) (AOE draw delay) " , ref delay , 0 , 5000 ) )
14911491 C . DelayMs = delay ;
14921492
14931493 var duration = C . DurationMs ;
1494- if ( ImGui . SliderInt ( "AOE持续时间(ms)" , ref duration , 1000 , 10000 ) )
1494+ if ( ImGui . SliderInt ( "AOE持续时间(ms) (AOE duration) " , ref duration , 1000 , 10000 ) )
14951495 C . DurationMs = duration ;
14961496
14971497 var guidanceDelay = C . GuidanceDelayMs ;
1498- if ( ImGui . SliderInt ( "引导延迟(ms)" , ref guidanceDelay , 0 , 5000 ) )
1498+ if ( ImGui . SliderInt ( "引导延迟(ms) (Guidance delay) " , ref guidanceDelay , 0 , 5000 ) )
14991499 C . GuidanceDelayMs = guidanceDelay ;
15001500
15011501 var eighthCircleDelay = C . EighthCircleDelayMs ;
1502- if ( ImGui . SliderInt ( "第8次大圈延迟(ms)" , ref eighthCircleDelay , 0 , 15000 ) )
1502+ if ( ImGui . SliderInt ( "第8次大圈延迟(ms) (8th large circle delay) " , ref eighthCircleDelay , 0 , 15000 ) )
15031503 C . EighthCircleDelayMs = eighthCircleDelay ;
15041504
15051505 var eighthCircleDuration = C . EighthCircleDurationMs ;
1506- if ( ImGui . SliderInt ( "第8次大圈持续(ms)" , ref eighthCircleDuration , 1000 , 15000 ) )
1506+ if ( ImGui . SliderInt ( "第8次大圈持续(ms) (8th large circle duration) " , ref eighthCircleDuration , 1000 , 15000 ) )
15071507 C . EighthCircleDurationMs = eighthCircleDuration ;
15081508
15091509 var missingBladeDelay = C . MissingBladeDelayMs ;
1510- if ( ImGui . SliderInt ( "缺少的刀延迟(ms)" , ref missingBladeDelay , 0 , 20000 ) )
1510+ if ( ImGui . SliderInt ( "缺少的刀延迟(ms) (Missing blade delay) " , ref missingBladeDelay , 0 , 20000 ) )
15111511 C . MissingBladeDelayMs = missingBladeDelay ;
15121512
15131513 var missingBladeDuration = C . MissingBladeDurationMs ;
1514- if ( ImGui . SliderInt ( "缺少的刀持续(ms)" , ref missingBladeDuration , 1000 , 15000 ) )
1514+ if ( ImGui . SliderInt ( "缺少的刀持续(ms) (Missing blade duration) " , ref missingBladeDuration , 1000 , 15000 ) )
15151515 C . MissingBladeDurationMs = missingBladeDuration ;
15161516
15171517 var fifthStandDelay = C . FifthStandDelayMs ;
1518- if ( ImGui . SliderInt ( "小世界站位延迟(ms)" , ref fifthStandDelay , 0 , 15000 ) )
1518+ if ( ImGui . SliderInt ( "小世界站位延迟(ms) (Small-world position delay) " , ref fifthStandDelay , 0 , 15000 ) )
15191519 C . FifthStandDelayMs = fifthStandDelay ;
15201520
15211521 var fifthStandDuration = C . FifthStandDurationMs ;
1522- if ( ImGui . SliderInt ( "小世界站位持续(ms)" , ref fifthStandDuration , 1000 , 15000 ) )
1522+ if ( ImGui . SliderInt ( "小世界站位持续(ms) (Small-world position duration) " , ref fifthStandDuration , 1000 , 15000 ) )
15231523 C . FifthStandDurationMs = fifthStandDuration ;
15241524
15251525 var color = C . ColorDanger . ToVector4 ( ) ;
1526- if ( ImGui . ColorEdit4 ( "AOE颜色" , ref color ) )
1526+ if ( ImGui . ColorEdit4 ( "AOE颜色 (AOE color) " , ref color ) )
15271527 C . ColorDanger = color . ToUint ( ) ;
15281528
15291529 ImGui . Separator ( ) ;
15301530 var debugTether = C . DebugTetherAll ;
1531- if ( ImGui . Checkbox ( "Debug模式 (连线所有玩家)" , ref debugTether ) )
1531+ if ( ImGui . Checkbox ( "Debug模式 (连线所有玩家) (Debug mode - tether all players) " , ref debugTether ) )
15321532 C . DebugTetherAll = debugTether ;
15331533
1534- if ( ImGui . Button ( "保存配置" ) )
1534+ if ( ImGui . Button ( "保存配置 (Save config) " ) )
15351535 Controller . SaveConfig ( ) ;
15361536
1537- // ========== Debug内容 (仅在Debug模式下显示) ==========
1537+ // ========== Debug内容 (仅在Debug模式下显示) (Debug content - only shown in Debug mode) ==========
15381538 if ( ! C . DebugTetherAll ) return ;
15391539
15401540 ImGui . Separator ( ) ;
1541- ImGuiEx . Text ( EColor . YellowBright , "===== Debug信息 =====" ) ;
1541+ ImGuiEx . Text ( EColor . YellowBright , "===== Debug信息 (Debug info) =====" ) ;
15421542
15431543 ImGui . Text ( $ "Boss DataID: { BossDataId } ") ;
1544- ImGui . Text ( $ "分身 DataID: { CloneDataId } ") ;
1545- ImGui . Text ( $ "先刷新 DataID: { FirstSpawnId } ") ;
1544+ ImGui . Text ( $ "分身 DataID (Clone DataID) : { CloneDataId } ") ;
1545+ ImGui . Text ( $ "先刷新 DataID (First spawn DataID) : { FirstSpawnId } ") ;
15461546
15471547 ImGui . Separator ( ) ;
1548- ImGui . Text ( "技能ID:" ) ;
1549- ImGui . Text ( $ " 镜中奇梦(开始): { MirrorCastId } ") ;
1550- ImGui . Text ( $ " 自我复制: { SelfCopyCastId } ") ;
1551- ImGui . Text ( $ " 执行(绘制): { ExecuteCastId } ") ;
1552- ImGui . Text ( $ " 心象投影(引导触发): { ProjectionCastId } ") ;
1553- ImGui . Text ( $ " 左右双刀: { CloneLeftRight } ") ;
1554- ImGui . Text ( $ " 前后双刀: { CloneFrontBack } ") ;
1555- ImGui . Text ( $ " 圆形AOE: { CloneCircle } ") ;
1548+ ImGui . Text ( "技能ID: (Skill IDs) " ) ;
1549+ ImGui . Text ( $ " 镜中奇梦(开始) (Mirror Dream - start) : { MirrorCastId } ") ;
1550+ ImGui . Text ( $ " 自我复制 (Self-copy) : { SelfCopyCastId } ") ;
1551+ ImGui . Text ( $ " 执行(绘制) (Execute - draw) : { ExecuteCastId } ") ;
1552+ ImGui . Text ( $ " 心象投影(引导触发) (Projection - guidance trigger) : { ProjectionCastId } ") ;
1553+ ImGui . Text ( $ " 左右双刀 (Left/Right blades) : { CloneLeftRight } ") ;
1554+ ImGui . Text ( $ " 前后双刀 (Front/Back blades) : { CloneFrontBack } ") ;
1555+ ImGui . Text ( $ " 圆形AOE (Circle AOE) : { CloneCircle } ") ;
15561556
15571557 ImGui . Separator ( ) ;
1558- ImGuiEx . Text ( $ "四运激活: { _isMechanicActive } ") ;
1559- ImGuiEx . Text ( $ "先出现: { ( _firstSpawnType == "" ? "未检测" : _firstSpawnType ) } ") ;
1560- ImGuiEx . Text ( $ "心象投影读条: { _projectionCastCount } /4") ;
1561- ImGuiEx . Text ( $ "连线类型: { _connectionType } ") ;
1562- ImGuiEx . Text ( $ "前后刀位置: ({ _frontBackClonePos . X : F1} ,{ _frontBackClonePos . Z : F1} )") ;
1558+ ImGuiEx . Text ( $ "四运激活 (Phase 4 active) : { _isMechanicActive } ") ;
1559+ ImGuiEx . Text ( $ "先出现 (First spawn) : { ( _firstSpawnType == "" ? "未检测 (Not detected) " : _firstSpawnType ) } ") ;
1560+ ImGuiEx . Text ( $ "心象投影读条 (Projection casts) : { _projectionCastCount } /4") ;
1561+ ImGuiEx . Text ( $ "连线类型 (Tether type) : { _connectionType } ") ;
1562+ ImGuiEx . Text ( $ "前后刀位置 (Front/Back blade position) : ({ _frontBackClonePos . X : F1} ,{ _frontBackClonePos . Z : F1} )") ;
15631563
15641564 var now = Environment . TickCount64 ;
15651565 if ( _executeTime > 0 )
15661566 {
15671567 var elapsed = now - _executeTime ;
1568- var state = elapsed < C . DelayMs ? "等待中" :
1569- elapsed < C . DelayMs + C . DurationMs ? "绘制中" : "已结束" ;
1570- ImGuiEx . Text ( $ "绘制状态: { state } ({ elapsed } ms)") ;
1568+ var state = elapsed < C . DelayMs ? "等待中 (Waiting) " :
1569+ elapsed < C . DelayMs + C . DurationMs ? "绘制中 (Drawing) " : "已结束 (Finished) " ;
1570+ ImGuiEx . Text ( $ "绘制状态 (Draw state) : { state } ({ elapsed } ms)") ;
15711571 }
15721572
15731573 ImGui . Separator ( ) ;
1574- ImGui . Text ( $ "19210位置 ({ _firstSpawnPositions . Count } ):") ;
1574+ ImGui . Text ( $ "19210位置 (Positions) ( { _firstSpawnPositions . Count } ):") ;
15751575 foreach ( var ( entityId , pos , pointType ) in _firstSpawnPositions )
15761576 {
15771577 ImGuiEx . Text ( $ " ({ pos . X : F1} ,{ pos . Z : F1} ) { pointType } ") ;
15781578 }
15791579
15801580 ImGui . Separator ( ) ;
1581- ImGui . Text ( $ "分身技能 ({ _cloneInfos . Count } ):") ;
1581+ ImGui . Text ( $ "分身技能 (Clone skills) ( { _cloneInfos . Count } ):") ;
15821582 foreach ( var clone in _cloneInfos )
15831583 {
15841584 string actionName = clone . ActionId switch
15851585 {
1586- CloneLeftRight => "左右双刀" ,
1587- CloneFrontBack => "前后双刀" ,
1588- CloneCircle => "圆形AOE" ,
1589- _ => $ "未知({ clone . ActionId } )"
1586+ CloneLeftRight => "左右双刀 (Left/Right blades) " ,
1587+ CloneFrontBack => "前后双刀 (Front/Back blades) " ,
1588+ CloneCircle => "圆形AOE (Circle AOE) " ,
1589+ _ => $ "未知 (Unknown) ({ clone . ActionId } )"
15901590 } ;
15911591 ImGuiEx . Text ( $ " { actionName } ({ clone . Position . X : F1} ,{ clone . Position . Z : F1} ) R:{ clone . Rotation : F2} ") ;
15921592 }
15931593
15941594 ImGui . Separator ( ) ;
1595- ImGui . Text ( $ "第一阶段连线 ({ _round1Tethers . Count } ):") ;
1595+ ImGui . Text ( $ "第一阶段连线 (Phase 1 tethers) ( { _round1Tethers . Count } ):") ;
15961596 if ( _round1Tethers . Count > 0 )
15971597 {
15981598 var pointOrder = new [ ] { "A" , "B" , "C" , "D" , "1" , "2" , "3" , "4" } ;
15991599 foreach ( var point in pointOrder )
16001600 {
16011601 if ( _round1Tethers . TryGetValue ( point , out var playerName ) )
16021602 {
1603- ImGuiEx . Text ( EColor . PurpleBright , $ " { point } 点小怪——>{ playerName } ") ;
1603+ ImGuiEx . Text ( EColor . PurpleBright , $ " { point } 点小怪 (Add) ——> { playerName } ") ;
16041604 }
16051605 }
16061606 }
16071607
16081608 ImGui . Separator ( ) ;
1609- ImGui . Text ( $ "第二阶段连线 ({ _round2Tethers . Count } ):") ;
1609+ ImGui . Text ( $ "第二阶段连线 (Phase 2 tethers) ( { _round2Tethers . Count } ):") ;
16101610 if ( _round2Tethers . Count > 0 )
16111611 {
16121612 var pointOrder = new [ ] { "A" , "B" , "C" , "D" , "1" , "2" , "3" , "4" } ;
@@ -1615,27 +1615,28 @@ public override void OnSettingsDraw()
16151615 if ( _round2Tethers . TryGetValue ( point , out var info ) )
16161616 {
16171617 var displayColor = info . VfxType == "分摊" ? EColor . CyanBright : EColor . OrangeBright ;
1618- ImGuiEx . Text ( displayColor , $ " { point } 点【{ info . VfxType } 】——>{ info . PlayerName } ") ;
1618+ ImGuiEx . Text ( displayColor , $ " { point } 点【{ info . VfxType } 】——> { info . PlayerName } ") ;
16191619 }
16201620 }
16211621 }
16221622
16231623 ImGui . Separator ( ) ;
1624- ImGui . Text ( "引导状态:" ) ;
1625- ImGuiEx . Text ( $ "当前阶段: { _currentPhase } (0=未开始, 1=连线, 2=VFX, 3=引导中)") ;
1624+ ImGui . Text ( "引导状态 (Guidance status):" ) ;
1625+ ImGuiEx . Text ( $ "当前阶段 (Current phase): { _currentPhase } (0=未开始 Not started, 1=连线 Tethers, 2=VFX, 3=引导中 Guiding)") ;
1626+
16261627 if ( _guidanceSequence . Count == 4 && _roundPoints . Count == 4 )
16271628 {
16281629 var pointsDisplay = string . Join ( " → " , _roundPoints . Select ( p => $ "[{ string . Join ( "," , p ) } ]") ) ;
1629- ImGuiEx . Text ( $ "标点顺序: { pointsDisplay } ") ;
1630- ImGuiEx . Text ( EColor . YellowBright , $ "VFX顺序: { string . Join ( " → " , _guidanceSequence ) } ") ;
1630+ ImGuiEx . Text ( $ "标点顺序 (Point order) : { pointsDisplay } ") ;
1631+ ImGuiEx . Text ( EColor . YellowBright , $ "VFX顺序 (VFX order) : { string . Join ( " → " , _guidanceSequence ) } ") ;
16311632
16321633 if ( _currentPhase == 3 )
16331634 {
16341635 var currentTime = Environment . TickCount64 ;
16351636 if ( currentTime < _guidanceStartTime )
16361637 {
16371638 var delayRemaining = _guidanceStartTime - currentTime ;
1638- ImGuiEx . Text ( EColor . YellowBright , $ "引导延迟: { delayRemaining / 1000f : F1} 秒后开始 ") ;
1639+ ImGuiEx . Text ( EColor . YellowBright , $ "引导延迟 (Guidance delay) : { delayRemaining / 1000f : F1} 秒 ") ;
16391640 }
16401641 else
16411642 {
@@ -1652,9 +1653,10 @@ public override void OnSettingsDraw()
16521653
16531654 var currentPoints = _roundPoints [ _currentGuidanceRound ] ;
16541655 var currentAction = _guidanceSequence [ _currentGuidanceRound ] ;
1655- var durationText = _currentGuidanceRound == 0 ? "8秒" : "6秒" ;
1656- ImGuiEx . Text ( EColor . GreenBright , $ "当前轮次: 第{ _currentGuidanceRound + 1 } 轮 ({ durationText } ) - [{ string . Join ( "," , currentPoints ) } ] - { currentAction } ") ;
1657- ImGuiEx . Text ( $ "下一轮倒计时: { Math . Max ( 0 , nextRoundIn ) / 1000f : F1} 秒") ;
1656+ var durationText = _currentGuidanceRound == 0 ? "8秒 (8s)" : "6秒 (6s)" ;
1657+ ImGuiEx . Text ( EColor . GreenBright ,
1658+ $ "当前轮次 (Current round): 第{ _currentGuidanceRound + 1 } 轮 ({ durationText } ) - [{ string . Join ( "," , currentPoints ) } ] - { currentAction } ") ;
1659+ ImGuiEx . Text ( $ "下一轮倒计时 (Next round in): { Math . Max ( 0 , nextRoundIn ) / 1000f : F1} 秒") ;
16581660
16591661 if ( currentAction == "大圈" )
16601662 {
@@ -1664,11 +1666,11 @@ public override void OnSettingsDraw()
16641666 if ( _round2Tethers . TryGetValue ( point , out var info ) )
16651667 spreadPlayers . Add ( $ "{ point } :{ info . PlayerName } ") ;
16661668 }
1667- ImGuiEx . Text ( EColor . OrangeBright , $ " 需要出去放圈: { string . Join ( ", " , spreadPlayers ) } ") ;
1669+ ImGuiEx . Text ( EColor . OrangeBright , $ " 需要出去放圈 (Spread out) : { string . Join ( ", " , spreadPlayers ) } ") ;
16681670 }
16691671 else
16701672 {
1671- ImGuiEx . Text ( EColor . CyanBright , $ " 本轮分摊,大家待命 ") ;
1673+ ImGuiEx . Text ( EColor . CyanBright , $ " 本轮分摊 (Stack this round) ") ;
16721674 }
16731675 }
16741676 }
@@ -1677,35 +1679,35 @@ public override void OnSettingsDraw()
16771679 if ( _playerGroups . Count > 0 )
16781680 {
16791681 ImGui . Separator ( ) ;
1680- ImGui . Text ( "玩家分组:" ) ;
1682+ ImGui . Text ( "玩家分组 (Player groups) :" ) ;
16811683 var rightGroup = _playerGroups . Where ( x => x . Value == "右组" ) . Select ( x => x . Key ) . ToList ( ) ;
16821684 var leftGroup = _playerGroups . Where ( x => x . Value == "左组" ) . Select ( x => x . Key ) . ToList ( ) ;
1683- ImGuiEx . Text ( EColor . CyanBright , $ " 右组(A1B2): { string . Join ( ", " , rightGroup ) } ") ;
1684- ImGuiEx . Text ( EColor . OrangeBright , $ " 左组(C3D4): { string . Join ( ", " , leftGroup ) } ") ;
1685+ ImGuiEx . Text ( EColor . CyanBright , $ " 右组(A1B2) (Right group) : { string . Join ( ", " , rightGroup ) } ") ;
1686+ ImGuiEx . Text ( EColor . OrangeBright , $ " 左组(C3D4) (Left group) : { string . Join ( ", " , leftGroup ) } ") ;
16851687 }
16861688
16871689 ImGui . Separator ( ) ;
1688- if ( ImGui . Button ( "清除日志" ) )
1690+ if ( ImGui . Button ( "清除日志 (Clear log) " ) )
16891691 _eventLog . Clear ( ) ;
16901692 ImGui . SameLine ( ) ;
1691- if ( ImGui . Button ( "重置状态" ) )
1693+ if ( ImGui . Button ( "重置状态 (Reset state) " ) )
16921694 OnReset ( ) ;
16931695
16941696 ImGui . Separator ( ) ;
1695- ImGui . Text ( "测试功能:" ) ;
1696- if ( ImGui . Button ( _manualDrawTest ? "停止测试绘制" : "开始测试绘制" ) )
1697+ ImGui . Text ( "测试功能 (Test features) :" ) ;
1698+ if ( ImGui . Button ( _manualDrawTest ? "停止测试绘制 (Stop test drawing) " : "开始测试绘制 (Start test drawing) " ) )
16971699 {
16981700 _manualDrawTest = ! _manualDrawTest ;
1699- AddLog ( _manualDrawTest ? "[测试] 手动开启绘制测试" : "[测试] 停止绘制测试" ) ;
1701+ AddLog ( _manualDrawTest ? "[测试] 手动开启绘制测试 (Manual test started) " : "[测试] 停止绘制测试 (Manual test stopped) " ) ;
17001702 }
17011703 ImGui . SameLine ( ) ;
17021704 ImGuiEx . Text ( _manualDrawTest ? EColor . GreenBright : EColor . RedBright ,
1703- _manualDrawTest ? "● 测试中" : "○ 未测试" ) ;
1705+ _manualDrawTest ? "● 测试中 (Testing) " : "○ 未测试 (Not testing) " ) ;
17041706
17051707 if ( _drawDebugLog . Count > 0 )
17061708 {
17071709 ImGui . Separator ( ) ;
1708- ImGui . Text ( "绘制调试信息:" ) ;
1710+ ImGui . Text ( "绘制调试信息 (Draw debug info) :" ) ;
17091711 ImGui . BeginChild ( "DrawDebug" , new System . Numerics . Vector2 ( 0 , 200 ) , true ) ;
17101712 foreach ( var log in _drawDebugLog )
17111713 {
@@ -1722,7 +1724,7 @@ public override void OnSettingsDraw()
17221724 }
17231725
17241726 ImGui . Separator ( ) ;
1725- ImGui . Text ( $ "事件日志 ({ _eventLog . Count } ):") ;
1727+ ImGui . Text ( $ "事件日志 (Event log) ( { _eventLog . Count } ):") ;
17261728 ImGui . BeginChild ( "EventLog" , new System . Numerics . Vector2 ( 0 , 400 ) , true ) ;
17271729 foreach ( var log in _eventLog )
17281730 {
0 commit comments