diff --git a/.gitignore b/.gitignore index c78c509839..fdab9c6cdc 100644 --- a/.gitignore +++ b/.gitignore @@ -365,4 +365,5 @@ ASALocalRun/ healthchecksdb # Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ \ No newline at end of file +MigrationBackup/ +/Source/RunActivity/Properties/launchSettings.json diff --git a/Source/Locales/Contrib/Contrib.pot b/Source/Locales/Contrib/Contrib.pot index 4f954b0c54..db4593970a 100644 --- a/Source/Locales/Contrib/Contrib.pot +++ b/Source/Locales/Contrib/Contrib.pot @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-02-21 17:54:05+0300\n" -"PO-Revision-Date: 2023-02-21 17:54:09+0300\n" +"POT-Creation-Date: 2023-12-03 15:16:32+0100\n" +"PO-Revision-Date: 2023-12-03 15:16:33+0100\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -199,7 +199,7 @@ msgid "menuStrip1" msgstr "" #: ../../Contrib/ActivityEditor/ActivityEditor/Engine/ActEditor.Designer.cs:118 -#: ../../Contrib/ActivityEditor/ActivityEditor/Engine/SimpleTextEd.Designer.cs:62 +#: ../../Contrib/ActivityEditor/ActivityEditor/Engine/SimpleTextEd.Designer.cs:63 msgid "File" msgstr "" @@ -218,7 +218,7 @@ msgid "Traffic" msgstr "" #: ../../Contrib/ActivityEditor/ActivityEditor/Engine/ActEditor.Designer.cs:153 -#: ../../Contrib/ActivityEditor/ActivityEditor/Engine/SimpleTextEd.Designer.cs:68 +#: ../../Contrib/ActivityEditor/ActivityEditor/Engine/SimpleTextEd.Designer.cs:70 msgid "Save" msgstr "" @@ -351,7 +351,7 @@ msgstr "" msgid "Click to Edit Metadata for a specified route" msgstr "" -#: ../../Contrib/ActivityEditor/ActivityEditor/Engine/SimpleTextEd.Designer.cs:85 +#: ../../Contrib/ActivityEditor/ActivityEditor/Engine/SimpleTextEd.Designer.cs:91 msgid "Form1" msgstr "" @@ -636,30 +636,30 @@ msgstr "" msgid "Open Rails Content Manager" msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:625 +#: ../../Contrib/TrackViewer/TrackViewer.cs:629 msgid "" "The path you are working on has un-saved changes.\n" msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:627 +#: ../../Contrib/TrackViewer/TrackViewer.cs:631 msgid "Do you really want to Quit?" msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:730 +#: ../../Contrib/TrackViewer/TrackViewer.cs:734 #, csharp-format msgid "" "Route cannot be loaded.\n" "Extension {0} is not supported" msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:737 +#: ../../Contrib/TrackViewer/TrackViewer.cs:741 #, csharp-format msgid "" "Route cannot be loaded.\n" "{0} does not exist" msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:743 +#: ../../Contrib/TrackViewer/TrackViewer.cs:747 #, csharp-format msgid "" "Route cannot be loaded.\n" @@ -667,149 +667,153 @@ msgid "" "install folder but does not contain expected files" msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:768 +#: ../../Contrib/TrackViewer/TrackViewer.cs:772 #, csharp-format msgid "" "Route cannot be loaded.\n" "{0} somehow could not be translated into a loadable route" msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:809 +#: ../../Contrib/TrackViewer/TrackViewer.cs:813 msgid "" "Directory is not a valid install directory.\n" "The install directory needs to contain ROUTES, GLOBAL, ..." msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:883 +#: ../../Contrib/TrackViewer/TrackViewer.cs:887 msgid "Loading route..." msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:908 +#: ../../Contrib/TrackViewer/TrackViewer.cs:912 msgid "Route cannot be loaded. Sorry" msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:979 +#: ../../Contrib/TrackViewer/TrackViewer.cs:992 msgid "Loading .pat file ..." msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:982 +#: ../../Contrib/TrackViewer/TrackViewer.cs:995 msgid "Processing .pat file ..." msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:1010 +#: ../../Contrib/TrackViewer/TrackViewer.cs:1023 msgid "Path has been modified. Loading a new path will discard changes." msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:1011 -#: ../../Contrib/TrackViewer/TrackViewer.cs:1092 +#: ../../Contrib/TrackViewer/TrackViewer.cs:1024 +#: ../../Contrib/TrackViewer/TrackViewer.cs:1105 #: ../../Contrib/TrackViewer/Editing/SavePatFile.cs:99 msgid "Do you want to continue?" msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:1012 -#: ../../Contrib/TrackViewer/TrackViewer.cs:1093 +#: ../../Contrib/TrackViewer/TrackViewer.cs:1025 +#: ../../Contrib/TrackViewer/TrackViewer.cs:1106 #: ../../Contrib/TrackViewer/Editing/SavePatFile.cs:85 #: ../../Contrib/TrackViewer/Editing/SavePatFile.cs:102 msgid "Trackviewer Path Editor" msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:1089 +#: ../../Contrib/TrackViewer/TrackViewer.cs:1102 msgid "" "This will open every single .pat file for this route, (try to) fix all broken " "nodes, and save the modified path. " msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:1090 +#: ../../Contrib/TrackViewer/TrackViewer.cs:1103 msgid "Potentially it will therefore change all .pat files on disc." msgstr "" -#: ../../Contrib/TrackViewer/TrackViewer.cs:1091 +#: ../../Contrib/TrackViewer/TrackViewer.cs:1104 msgid "" "This can be useful when a route has been changed and you want all paths to be " "corrected." msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:81 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:82 msgid "Select broken path color" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:87 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:88 msgid "Select path color (main)" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:99 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:100 msgid "Select path color (siding)" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:139 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:140 msgid "Select color for multi-colored straight tracks" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:140 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:141 msgid "Select color for multi-colored curved tracks" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:141 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:142 msgid "Select color for mono-colored tracks" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:142 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:143 msgid "Select color for tracks on terrain" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:144 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:145 msgid "Select color for multi-colored straight roads" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:145 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:146 msgid "Select color for multi-colored curved roads" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:146 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:147 msgid "Select color for mono-colored roads" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:147 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:148 msgid "Select color for roads on terrain" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:155 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:156 msgid "Select background color" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:170 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:171 msgid "Select text color" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:182 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:183 msgid "Select item text color" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:187 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:188 msgid "Select junction color" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:192 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:193 msgid "Select endnode color" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:197 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:198 msgid "Select siding color" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:202 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:203 msgid "Select crossing color" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:207 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:208 msgid "Select road crossing color" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:212 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:213 msgid "Select speedpost color" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:291 +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:218 +msgid "Select event color" +msgstr "" + +#: ../../Contrib/TrackViewer/Drawing/DrawColors.cs:297 msgid "Select other-paths color" msgstr "" @@ -822,23 +826,23 @@ msgstr "" msgid "Rescaling previously loaded ace-files" msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawTrackDB.cs:61 +#: ../../Contrib/TrackViewer/Drawing/DrawTrackDB.cs:65 msgid "Loading trackfile .trk ..." msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawTrackDB.cs:65 +#: ../../Contrib/TrackViewer/Drawing/DrawTrackDB.cs:69 msgid "Loading track database .tdb ..." msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawTrackDB.cs:69 +#: ../../Contrib/TrackViewer/Drawing/DrawTrackDB.cs:73 msgid "Loading tsection.dat ..." msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawTrackDB.cs:83 +#: ../../Contrib/TrackViewer/Drawing/DrawTrackDB.cs:87 msgid "Loading road track database .rdb ..." msgstr "" -#: ../../Contrib/TrackViewer/Drawing/DrawTrackDB.cs:270 +#: ../../Contrib/TrackViewer/Drawing/DrawTrackDB.cs:366 msgid "Finding the angles to draw signals, endnodes, ..." msgstr "" @@ -1056,248 +1060,253 @@ msgstr "" msgid "Please restart TrackViewer in order to load the new language." msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:403 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:465 msgid "" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:432 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:494 msgid "" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:558 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:620 msgid "" "ctrl-R\tReload the route\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:559 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:621 msgid "" "Q\tQuit\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:561 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:623 msgid "" "=\tZoom-in (and keep zooming)\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:562 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:624 msgid "" "shift-=\tZoom-in\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:563 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:625 msgid "" "-\tZoom-out (and keep zooming)\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:564 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:626 msgid "" "shift--\tZoom-out\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:565 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:627 msgid "" "Z\tZoom to tile\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:566 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:628 msgid "" "M\tToggle zoom center\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:567 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:629 msgid "" "R\tZoom reset\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:568 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:630 msgid "" "L\tAdd label\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:570 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:632 msgid "" "shift-C\t\tShift center to current mouse location\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:571 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:633 msgid "" "left arrow\tShift left\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:572 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:634 msgid "" "down arrow\tShift down\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:573 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:635 msgid "" "right arrow\tShift right\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:574 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:636 msgid "" "up arrow\t\tShift up\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:576 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:638 msgid "" "F5\tShow speed-limits\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:577 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:639 msgid "" "shift-F5\tShow mileposts\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:578 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:640 msgid "" "F6\tShow terrain\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:579 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:641 msgid "" "ctrl-F6\tShow DM terrain\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:580 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:642 msgid "" "shift-F6\tShow terrain patch lines\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:581 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:643 msgid "" "F7\tshow signals\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:582 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:644 msgid "" "F8\tShow platforms\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:583 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:645 msgid "" "shift-F8\tShow platform-names\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:584 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:646 msgid "" "F9\tShow sidings\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:585 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:647 msgid "" "shift-F9\tShow siding-names\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:586 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:648 msgid "" "F10\tHighlight tracks\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:587 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:649 msgid "" "shift-F10\tHighlight items\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:588 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:650 msgid "" "F11\tShow path\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:589 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:651 msgid "" "shift-F11\tShow raw path\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:591 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:653 msgid "" "C\t\tShift to center of current path node\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:592 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:654 msgid "" "PgUp\t\tShow more of the path\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:593 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:655 msgid "" "PgDn\t\tShow less of the path\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:594 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:656 msgid "" "shift-PgUp\tShow the full path\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:595 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:657 msgid "" "shift-PgDn\tShow only start point of path\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:596 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:658 msgid "" "E\t\tPlace end-point\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:597 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:659 msgid "" "W\t\tPlace a wait-point\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:598 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:660 msgid "" "ctrl-Z\t\tUndo in path editor\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:599 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:661 msgid "" "ctrl-Y\t\tRedo in path editor\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:601 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:663 msgid "" "alt-?\t\tVarious keys to open submenus\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:602 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:665 +msgid "" +"mouse-right click\tOn event shows event message\n" +msgstr "" + +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:666 msgid "Keyboard shortcuts" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:608 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:672 msgid "This is ORTS TrackViewer, version " msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:611 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:675 msgid "" "It is a 'Contribution' to ORTS, and as such\n" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:612 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:676 msgid "not an integral part of ORTS." msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:620 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:684 msgid "Documentation is available" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:624 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:688 msgid "Right column → Open Rails Trackviewer" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:626 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:690 msgid "Do you want to go to the website?" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:628 -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:174 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml.cs:692 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:179 msgid "Documentation" msgstr "" @@ -1485,427 +1494,440 @@ msgstr "" msgid "Select route" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:13 -msgid "Search by index" +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:12 +msgid "Select activity" msgstr "" #: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:14 -msgid "Search trackNode" +msgid "Search by index" msgstr "" #: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:15 -msgid "Search trackNode for roads" +msgid "Search trackNode" msgstr "" #: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:16 -msgid "Search trackItem" +msgid "Search trackNode for roads" msgstr "" #: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:17 +msgid "Search trackItem" +msgstr "" + +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:18 msgid "Search trackItem for roads" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:20 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:21 msgid "Quit (Q)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:22 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:23 msgid "_View" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:23 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:24 msgid "Center around station" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:26 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:27 msgid "Center around platform" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:29 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:30 msgid "Center around siding" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:33 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:34 msgid "Paths" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:34 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:35 msgid "Show path (F11)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:35 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:36 msgid "Show raw path from .pat file (shift-F11)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:37 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:38 msgid "Track Coloring" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:38 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:39 msgid "Color tracks" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:39 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:40 msgid "Highlight tracks (F10)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:41 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:42 msgid "Additional views" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:42 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:43 msgid "Show inset" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:43 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:44 msgid "Show world tiles" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:44 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:45 msgid "Show grid lines" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:45 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:46 msgid "Show scale ruler" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:46 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:47 msgid "Show longitude/latitude" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:48 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:49 msgid "Labels" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:49 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:50 msgid "Show labels" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:49 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:50 msgid "For adding a label, press L" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:50 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:51 msgid "Load labels" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:51 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:52 msgid "Save labels" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:54 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:55 msgid "Save current zoom" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:55 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:56 msgid "Restore saved zoom" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:57 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:58 msgid "Zoom in (=)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:58 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:59 msgid "Zoom out (-)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:59 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:60 msgid "Zoom to tile (Z)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:60 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:61 msgid "Zoom reset (R)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:62 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:63 msgid "Anti aliasing (needs restart)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:64 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:65 msgid "Track _items" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:65 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:66 msgid "Show all items" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:66 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:67 msgid "Show no items" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:67 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:68 msgid "Highlight items (shift-F10)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:68 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:69 msgid "Junctions/ends" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:69 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:70 msgid "Show junctions" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:70 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:71 msgid "Show end nodes" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:71 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:72 msgid "Show crossovers" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:73 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:74 msgid "Sidings" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:74 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:75 msgid "Show siding markers (F9)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:75 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:76 msgid "Show siding names (shift-F9)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:77 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:78 msgid "Platforms" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:78 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:79 msgid "Show platform markers (F8)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:79 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:80 msgid "Show platform names (shift-F8)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:80 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:81 msgid "Show station names (shift-F8)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:82 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:83 msgid "Interactives" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:83 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:84 msgid "Show signals (F7)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:84 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:85 msgid "Show also other signals" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:85 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:86 msgid "Show level crossings" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:86 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:87 msgid "Show hazards" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:87 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:88 msgid "Show fuel/pickups" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:88 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:89 msgid "Show sound regions" msgstr "" #: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:90 -msgid "Posts" +msgid "Show events" msgstr "" #: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:91 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:116 +msgid "Show event names" +msgstr "" + +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:93 +msgid "Posts" +msgstr "" + +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:94 msgid "Show speed limits (F5)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:92 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:95 msgid "Show mileposts (shift-F5)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:94 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:97 msgid "Roads" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:95 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:98 msgid "Draw roads" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:96 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:99 msgid "Show car spawners" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:97 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:100 msgid "Show road crossings" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:100 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:103 msgid "_Statusbar" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:101 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:104 msgid "Show vector section info" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:103 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:106 msgid "Show PAT file info" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:105 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:108 msgid "Show Path info" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:107 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:110 msgid "Show terrain info" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:109 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:112 msgid "Show signal info" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:111 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:114 msgid "Show platform/station names" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:114 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:119 msgid "_Preferences" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:115 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:120 msgid "Zooming is centered on mouse (M)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:117 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:122 msgid "Use miles i.s.o. meters" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:118 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:123 msgid "Select language" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:123 -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:150 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:128 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:155 msgid "Highlight last-drawn section" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:124 -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:151 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:129 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:156 msgid "Enable editing" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:125 -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:152 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:130 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:157 msgid "Show current mouse action" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:126 -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:153 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:131 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:158 msgid "Shift-PgUp also extends path" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:129 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:134 msgid "Path-_Editor" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:130 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:135 msgid "==Supporting MSTS paths only==" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:131 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:136 msgid "Load path" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:135 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:140 msgid "Show other paths" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:137 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:142 msgid "Save path" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:138 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:143 msgid "Save visited stations" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:139 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:144 msgid "Show chart" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:141 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:146 msgid "New path" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:143 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:148 msgid "Extend with other path" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:147 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:152 msgid "Edit path metadata" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:148 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:153 msgid "Reverse path" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:155 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:160 msgid "Auto-fix all broken nodes" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:156 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:161 msgid "Auto-fix all broken paths" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:158 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:163 msgid "_Terrain" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:159 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:164 msgid "Show terrain textures (F6)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:160 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:165 msgid "Show DM terrain textures (ctrl-F6)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:161 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:166 msgid "Show patch lines (shift-F6)" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:163 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:168 msgid "Memory reduction options" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:164 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:169 msgid "No reduction" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:165 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:170 msgid "Automatic reduction" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:166 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:171 msgid "Reduce by linear factor 2" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:167 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:172 msgid "Reduce by linear factor 4" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:168 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:173 msgid "Reduce by linear factor 8" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:169 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:174 msgid "Reduce by linear factor 16" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:172 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:177 msgid "_Help" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:173 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:178 msgid "Shortcuts" msgstr "" -#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:175 +#: ../../Contrib/TrackViewer/UserInterface/MenuControl.xaml:180 msgid "About" msgstr "" diff --git a/Source/Locales/Menu/Menu.pot b/Source/Locales/Menu/Menu.pot index 1f6fa10857..0b07ebcb24 100644 --- a/Source/Locales/Menu/Menu.pot +++ b/Source/Locales/Menu/Menu.pot @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-02-21 17:54:09+0300\n" -"PO-Revision-Date: 2023-02-21 17:54:10+0300\n" +"POT-Creation-Date: 2023-12-03 15:16:36+0100\n" +"PO-Revision-Date: 2023-12-03 15:16:36+0100\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -53,14 +53,17 @@ msgid "Import and export saved games" msgstr "" #: ../../Menu/KeyInputEditControl.Designer.cs:53 +#: ../../Menu/RDButtonInputControl.Designer.cs:48 msgid "✔" msgstr "" #: ../../Menu/KeyInputEditControl.Designer.cs:64 +#: ../../Menu/RDButtonInputControl.Designer.cs:59 msgid "✘" msgstr "" #: ../../Menu/KeyInputEditControl.Designer.cs:86 +#: ../../Menu/RDButtonInputControl.Designer.cs:84 msgid "↺" msgstr "" @@ -69,10 +72,12 @@ msgid "EditKey" msgstr "" #: ../../Menu/KeyInputEditControl.Designer.cs:54 +#: ../../Menu/RDButtonInputControl.Designer.cs:49 msgid "Accept changes" msgstr "" #: ../../Menu/KeyInputEditControl.Designer.cs:65 +#: ../../Menu/RDButtonInputControl.Designer.cs:60 msgid "Cancel changes" msgstr "" @@ -81,6 +86,7 @@ msgid "Press any key" msgstr "" #: ../../Menu/KeyInputEditControl.Designer.cs:87 +#: ../../Menu/RDButtonInputControl.Designer.cs:85 msgid "Reset to default" msgstr "" @@ -113,7 +119,7 @@ msgid "Rain" msgstr "" #: ../../Menu/MainForm.cs:156 -#: ../../Menu/Options.cs:583 +#: ../../Menu/Options.cs:598 msgid "Easy" msgstr "" @@ -122,7 +128,7 @@ msgid "Medium" msgstr "" #: ../../Menu/MainForm.cs:158 -#: ../../Menu/Options.cs:589 +#: ../../Menu/Options.cs:604 msgid "Hard" msgstr "" @@ -255,7 +261,7 @@ msgid "Logging" msgstr "" #: ../../Menu/MainForm.Designer.cs:159 -#: ../../Menu/Options.Designer.cs:2654 +#: ../../Menu/Options.Designer.cs:2830 msgid "Options" msgstr "" @@ -387,7 +393,7 @@ msgid "Timetable set:" msgstr "" #: ../../Menu/MainForm.Designer.cs:872 -#: ../../Menu/Options.cs:264 +#: ../../Menu/Options.cs:265 #: ../../Menu/TestingForm.Designer.cs:314 msgid "Testing" msgstr "" @@ -437,167 +443,181 @@ msgstr "" msgid "kgf/cm²" msgstr "" -#: ../../Menu/Options.cs:196 +#: ../../Menu/Options.cs:197 msgid "comma" msgstr "" -#: ../../Menu/Options.cs:197 +#: ../../Menu/Options.cs:198 msgid "semicolon" msgstr "" -#: ../../Menu/Options.cs:198 +#: ../../Menu/Options.cs:199 msgid "tab" msgstr "" -#: ../../Menu/Options.cs:199 +#: ../../Menu/Options.cs:200 msgid "space" msgstr "" -#: ../../Menu/Options.cs:205 +#: ../../Menu/Options.cs:206 msgid "route" msgstr "" -#: ../../Menu/Options.cs:206 +#: ../../Menu/Options.cs:207 msgid "m/s" msgstr "" -#: ../../Menu/Options.cs:207 +#: ../../Menu/Options.cs:208 msgid "km/h" msgstr "" -#: ../../Menu/Options.cs:208 +#: ../../Menu/Options.cs:209 msgid "mph" msgstr "" -#: ../../Menu/Options.cs:227 +#: ../../Menu/Options.cs:228 #: ../../Menu/ResumeForm.Designer.cs:380 msgid "Time" msgstr "" -#: ../../Menu/Options.cs:228 +#: ../../Menu/Options.cs:229 msgid "Train Speed" msgstr "" -#: ../../Menu/Options.cs:229 +#: ../../Menu/Options.cs:230 msgid "Max. Speed" msgstr "" -#: ../../Menu/Options.cs:230 +#: ../../Menu/Options.cs:231 msgid "Signal State" msgstr "" -#: ../../Menu/Options.cs:231 +#: ../../Menu/Options.cs:232 msgid "Track Elevation" msgstr "" -#: ../../Menu/Options.cs:232 +#: ../../Menu/Options.cs:233 msgid "Direction" msgstr "" -#: ../../Menu/Options.cs:233 +#: ../../Menu/Options.cs:234 msgid "Control Mode" msgstr "" -#: ../../Menu/Options.cs:234 +#: ../../Menu/Options.cs:235 msgid "Distance Travelled" msgstr "" -#: ../../Menu/Options.cs:235 +#: ../../Menu/Options.cs:236 msgid "Throttle %" msgstr "" -#: ../../Menu/Options.cs:236 +#: ../../Menu/Options.cs:237 msgid "Brake Cyl Press" msgstr "" -#: ../../Menu/Options.cs:237 +#: ../../Menu/Options.cs:238 msgid "Dyn Brake %" msgstr "" -#: ../../Menu/Options.cs:238 +#: ../../Menu/Options.cs:239 msgid "Gear Setting" msgstr "" -#: ../../Menu/Options.cs:263 +#: ../../Menu/Options.cs:264 msgid "Stable (recommended)" msgstr "" -#: ../../Menu/Options.cs:265 +#: ../../Menu/Options.cs:266 msgid "Unstable" msgstr "" -#: ../../Menu/Options.cs:266 +#: ../../Menu/Options.cs:267 +#: ../../Menu/Options.cs:312 msgid "None" msgstr "" -#: ../../Menu/Options.cs:269 +#: ../../Menu/Options.cs:270 msgid "" "Infrequent updates to official, hand-picked versions. Recommended for most " "users." msgstr "" -#: ../../Menu/Options.cs:270 +#: ../../Menu/Options.cs:271 msgid "" "Weekly updates which may contain noticable defects. For project supporters." msgstr "" -#: ../../Menu/Options.cs:271 +#: ../../Menu/Options.cs:272 msgid "Daily updates which may contain serious defects. For developers only." msgstr "" -#: ../../Menu/Options.cs:272 +#: ../../Menu/Options.cs:273 msgid "No updates." msgstr "" -#: ../../Menu/Options.cs:396 +#: ../../Menu/Options.cs:313 +msgid "Information" +msgstr "" + +#: ../../Menu/Options.cs:314 +msgid "Warning" +msgstr "" + +#: ../../Menu/Options.cs:315 +msgid "Error" +msgstr "" + +#: ../../Menu/Options.cs:410 msgid "Click to change this key" msgstr "" -#: ../../Menu/Options.cs:412 +#: ../../Menu/Options.cs:426 msgid "" "Continue with conflicting key assignments?\n" "\n" msgstr "" -#: ../../Menu/Options.cs:534 +#: ../../Menu/Options.cs:551 msgid "Remove all custom key assignments?" msgstr "" -#: ../../Menu/Options.cs:545 +#: ../../Menu/Options.cs:562 msgid "" "A listing of all keyboard commands and keys has been placed here:\n" "\n" msgstr "" -#: ../../Menu/Options.cs:554 +#: ../../Menu/Options.cs:571 +#: ../../Menu/OptionsRailDriver.cs:262 msgid "No errors found." msgstr "" -#: ../../Menu/Options.cs:581 +#: ../../Menu/Options.cs:596 msgid "Very easy" msgstr "" -#: ../../Menu/Options.cs:585 +#: ../../Menu/Options.cs:600 msgid "MSTS Compatible" msgstr "" -#: ../../Menu/Options.cs:587 +#: ../../Menu/Options.cs:602 msgid "Normal" msgstr "" -#: ../../Menu/Options.cs:591 +#: ../../Menu/Options.cs:606 msgid "Very Hard" msgstr "" -#: ../../Menu/Options.cs:593 +#: ../../Menu/Options.cs:608 msgid "Good luck!" msgstr "" -#: ../../Menu/Options.cs:688 +#: ../../Menu/Options.cs:703 msgid "Select an installation profile (MSTS folder) to add:" msgstr "" -#: ../../Menu/Options.cs:559 +#: ../../Menu/Options.cs:576 #, csharp-format msgid "" "{0:F0}° vertical FOV is the same as:\n" @@ -605,520 +625,592 @@ msgid "" "{2:F0}° horizontal FOV on 16:9" msgstr "" -#: ../../Menu/Options.cs:603 +#: ../../Menu/Options.cs:618 #, csharp-format msgid "{0}%" msgstr "" -#: ../../Menu/Options.cs:639 +#: ../../Menu/Options.cs:654 #, csharp-format msgid "No detail (-{0}%)" msgstr "" -#: ../../Menu/Options.cs:641 +#: ../../Menu/Options.cs:656 #, csharp-format msgid "Less detail (-{0}%)" msgstr "" -#: ../../Menu/Options.cs:643 +#: ../../Menu/Options.cs:658 #, csharp-format msgid "Default detail (+{0}%)" msgstr "" -#: ../../Menu/Options.cs:645 +#: ../../Menu/Options.cs:660 #, csharp-format msgid "More detail (+{0}%)" msgstr "" -#: ../../Menu/Options.cs:647 +#: ../../Menu/Options.cs:662 #, csharp-format msgid "All detail (+{0}%)" msgstr "" -#: ../../Menu/Options.Designer.cs:292 +#: ../../Menu/Options.Designer.cs:312 msgid "OK" msgstr "" -#: ../../Menu/Options.Designer.cs:326 +#: ../../Menu/Options.Designer.cs:346 msgid "Brake pipe charging rate (PSI/s) " msgstr "" -#: ../../Menu/Options.Designer.cs:337 +#: ../../Menu/Options.Designer.cs:357 msgid "Graduated release air brakes " msgstr "" -#: ../../Menu/Options.Designer.cs:350 +#: ../../Menu/Options.Designer.cs:370 #: ../../Menu/TestingForm.Designer.cs:87 msgid "Cancel" msgstr "" -#: ../../Menu/Options.Designer.cs:360 +#: ../../Menu/Options.Designer.cs:380 msgid "Alerter in cab " msgstr "" -#: ../../Menu/Options.Designer.cs:414 +#: ../../Menu/Options.Designer.cs:435 msgid "General" msgstr "" -#: ../../Menu/Options.Designer.cs:520 +#: ../../Menu/Options.Designer.cs:541 msgid "Overspeed monitor " msgstr "" -#: ../../Menu/Options.Designer.cs:532 +#: ../../Menu/Options.Designer.cs:553 msgid "Use TCS scripts " msgstr "" -#: ../../Menu/Options.Designer.cs:545 +#: ../../Menu/Options.Designer.cs:566 msgid "Other units " msgstr "" -#: ../../Menu/Options.Designer.cs:557 +#: ../../Menu/Options.Designer.cs:578 msgid "Pressure unit " msgstr "" -#: ../../Menu/Options.Designer.cs:587 +#: ../../Menu/Options.Designer.cs:608 msgid "Also in external views " msgstr "" -#: ../../Menu/Options.Designer.cs:597 +#: ../../Menu/Options.Designer.cs:618 msgid "Retainer valve on all cars " msgstr "" -#: ../../Menu/Options.Designer.cs:618 +#: ../../Menu/Options.Designer.cs:639 msgid "Audio" msgstr "" -#: ../../Menu/Options.Designer.cs:684 +#: ../../Menu/Options.Designer.cs:705 msgid "% external sound heard internally" msgstr "" -#: ../../Menu/Options.Designer.cs:720 +#: ../../Menu/Options.Designer.cs:741 msgid "% sound volume" msgstr "" -#: ../../Menu/Options.Designer.cs:731 +#: ../../Menu/Options.Designer.cs:752 msgid "Sound detail level" msgstr "" -#: ../../Menu/Options.Designer.cs:798 +#: ../../Menu/Options.Designer.cs:819 msgid "Video" msgstr "" -#: ../../Menu/Options.Designer.cs:820 +#: ../../Menu/Options.Designer.cs:841 msgid "Default detail (+0%)" msgstr "" -#: ../../Menu/Options.Designer.cs:998 +#: ../../Menu/Options.Designer.cs:1019 msgid "Level of detail bias:" msgstr "" -#: ../../Menu/Options.Designer.cs:1024 +#: ../../Menu/Options.Designer.cs:1045 msgid "Signal light glow" msgstr "" -#: ../../Menu/Options.Designer.cs:1035 +#: ../../Menu/Options.Designer.cs:1056 msgid "Extend object maximum viewing distance to horizon" msgstr "" -#: ../../Menu/Options.Designer.cs:1048 -#: ../../Menu/Options.Designer.cs:1267 +#: ../../Menu/Options.Designer.cs:1069 +#: ../../Menu/Options.Designer.cs:1288 msgid "XXX" msgstr "" -#: ../../Menu/Options.Designer.cs:1058 +#: ../../Menu/Options.Designer.cs:1079 msgid "Anti-aliasing:" msgstr "" -#: ../../Menu/Options.Designer.cs:1087 +#: ../../Menu/Options.Designer.cs:1108 msgid "Shadow for all shapes" msgstr "" -#: ../../Menu/Options.Designer.cs:1098 +#: ../../Menu/Options.Designer.cs:1119 msgid "Double overhead wires" msgstr "" -#: ../../Menu/Options.Designer.cs:1110 +#: ../../Menu/Options.Designer.cs:1131 msgid "Ambient daylight brightness:" msgstr "" -#: ../../Menu/Options.Designer.cs:1121 +#: ../../Menu/Options.Designer.cs:1142 msgid "YYY" msgstr "" -#: ../../Menu/Options.Designer.cs:1130 +#: ../../Menu/Options.Designer.cs:1151 msgid "Model instancing" msgstr "" -#: ../../Menu/Options.Designer.cs:1160 +#: ../../Menu/Options.Designer.cs:1181 msgid "Vertical sync" msgstr "" -#: ../../Menu/Options.Designer.cs:1172 +#: ../../Menu/Options.Designer.cs:1193 msgid "Viewing distance (km)" msgstr "" -#: ../../Menu/Options.Designer.cs:1213 +#: ../../Menu/Options.Designer.cs:1234 msgid "Distant mountains" msgstr "" -#: ../../Menu/Options.Designer.cs:1226 +#: ../../Menu/Options.Designer.cs:1247 msgid "Viewing distance (m)" msgstr "" -#: ../../Menu/Options.Designer.cs:1301 +#: ../../Menu/Options.Designer.cs:1322 msgid "Viewing vertical FOV" msgstr "" -#: ../../Menu/Options.Designer.cs:1312 +#: ../../Menu/Options.Designer.cs:1333 msgid "World object density" msgstr "" -#: ../../Menu/Options.Designer.cs:1336 +#: ../../Menu/Options.Designer.cs:1357 msgid "Dynamic shadows" msgstr "" -#: ../../Menu/Options.Designer.cs:1347 +#: ../../Menu/Options.Designer.cs:1368 msgid "Overhead wire" msgstr "" -#: ../../Menu/Options.Designer.cs:1370 +#: ../../Menu/Options.Designer.cs:1389 msgid "Simulation" msgstr "" -#: ../../Menu/Options.Designer.cs:1383 +#: ../../Menu/Options.Designer.cs:1399 msgid "Electric - power connected" msgstr "" -#: ../../Menu/Options.Designer.cs:1393 +#: ../../Menu/Options.Designer.cs:1409 msgid "At game start, locomotives have:" msgstr "" -#: ../../Menu/Options.Designer.cs:1402 +#: ../../Menu/Options.Designer.cs:1418 msgid "Diesel - engine(s) started" msgstr "" -#: ../../Menu/Options.Designer.cs:1416 +#: ../../Menu/Options.Designer.cs:1432 msgid "Activity Options" msgstr "" -#: ../../Menu/Options.Designer.cs:1426 +#: ../../Menu/Options.Designer.cs:1442 msgid "Location-linked passing path processing" msgstr "" -#: ../../Menu/Options.Designer.cs:1437 +#: ../../Menu/Options.Designer.cs:1453 msgid "Open/close doors in AI trains" msgstr "" -#: ../../Menu/Options.Designer.cs:1448 +#: ../../Menu/Options.Designer.cs:1464 msgid "Forced red at station stops" msgstr "" -#: ../../Menu/Options.Designer.cs:1458 +#: ../../Menu/Options.Designer.cs:1474 msgid "Steam - boiler pre-heated" msgstr "" -#: ../../Menu/Options.Designer.cs:1468 +#: ../../Menu/Options.Designer.cs:1484 msgid "Simple controls and physics" msgstr "" -#: ../../Menu/Options.Designer.cs:1478 +#: ../../Menu/Options.Designer.cs:1494 msgid "Curve dependent speed limit" msgstr "" -#: ../../Menu/Options.Designer.cs:1489 -msgid "Adhesion moving average filter size" -msgstr "" - -#: ../../Menu/Options.Designer.cs:1516 +#: ../../Menu/Options.Designer.cs:1504 msgid "Break couplers" msgstr "" -#: ../../Menu/Options.Designer.cs:1526 +#: ../../Menu/Options.Designer.cs:1514 msgid "Advanced adhesion model" msgstr "" -#: ../../Menu/Options.Designer.cs:1542 +#: ../../Menu/Options.Designer.cs:1529 msgid "Keyboard" msgstr "" -#: ../../Menu/Options.Designer.cs:1552 +#: ../../Menu/Options.Designer.cs:1539 +#: ../../Menu/Options.Designer.cs:2526 msgid "Export" msgstr "" -#: ../../Menu/Options.Designer.cs:1565 +#: ../../Menu/Options.Designer.cs:1552 +#: ../../Menu/Options.Designer.cs:2503 msgid "Defaults" msgstr "" -#: ../../Menu/Options.Designer.cs:1577 +#: ../../Menu/Options.Designer.cs:1564 +#: ../../Menu/Options.Designer.cs:2514 msgid "Check" msgstr "" -#: ../../Menu/Options.Designer.cs:1611 +#: ../../Menu/Options.Designer.cs:1598 msgid "Data logger" msgstr "" -#: ../../Menu/Options.Designer.cs:1642 +#: ../../Menu/Options.Designer.cs:1629 msgid "Speed units" msgstr "" -#: ../../Menu/Options.Designer.cs:1664 +#: ../../Menu/Options.Designer.cs:1651 msgid "Log miscellaneous data" msgstr "" -#: ../../Menu/Options.Designer.cs:1674 +#: ../../Menu/Options.Designer.cs:1661 msgid "Log performance data" msgstr "" -#: ../../Menu/Options.Designer.cs:1684 +#: ../../Menu/Options.Designer.cs:1671 msgid "Start logging with the simulation start" msgstr "" -#: ../../Menu/Options.Designer.cs:1695 +#: ../../Menu/Options.Designer.cs:1682 msgid "Separator" msgstr "" -#: ../../Menu/Options.Designer.cs:1704 +#: ../../Menu/Options.Designer.cs:1691 msgid "Log physics data" msgstr "" -#: ../../Menu/Options.Designer.cs:1714 +#: ../../Menu/Options.Designer.cs:1701 msgid "Log Steam performance data" msgstr "" -#: ../../Menu/Options.Designer.cs:1724 +#: ../../Menu/Options.Designer.cs:1711 msgid "Verbose ENG/WAG configuration messages" msgstr "" -#: ../../Menu/Options.Designer.cs:1739 +#: ../../Menu/Options.Designer.cs:1726 +msgid "RailDriver" +msgstr "" + +#: ../../Menu/Options.Designer.cs:1765 +msgid "Reverse Levers" +msgstr "" + +#: ../../Menu/Options.Designer.cs:1775 +msgid "Reverse Independent Brake Direction" +msgstr "" + +#: ../../Menu/Options.Designer.cs:1786 +msgid "Reverse Auto Brake Direction" +msgstr "" + +#: ../../Menu/Options.Designer.cs:1797 +msgid "Reverse Throttle Direction" +msgstr "" + +#: ../../Menu/Options.Designer.cs:1808 +msgid "Reverse Reverser Direction" +msgstr "" + +#: ../../Menu/Options.Designer.cs:1832 msgid "Evaluation" msgstr "" -#: ../../Menu/Options.Designer.cs:1759 +#: ../../Menu/Options.Designer.cs:1852 msgid "Interval (sec)" msgstr "" -#: ../../Menu/Options.Designer.cs:1768 +#: ../../Menu/Options.Designer.cs:1861 msgid "Log station stops" msgstr "" -#: ../../Menu/Options.Designer.cs:1801 +#: ../../Menu/Options.Designer.cs:1894 msgid "Log train speed" msgstr "" -#: ../../Menu/Options.Designer.cs:1817 +#: ../../Menu/Options.Designer.cs:1910 msgid "Content" msgstr "" -#: ../../Menu/Options.Designer.cs:1840 +#: ../../Menu/Options.Designer.cs:1933 #: ../../Menu/ResumeForm.Designer.cs:150 msgid "Delete" msgstr "" -#: ../../Menu/Options.Designer.cs:1858 +#: ../../Menu/Options.Designer.cs:1951 msgid "Installation profile" msgstr "" -#: ../../Menu/Options.Designer.cs:1867 +#: ../../Menu/Options.Designer.cs:1960 msgid "Change..." msgstr "" -#: ../../Menu/Options.Designer.cs:1888 +#: ../../Menu/Options.Designer.cs:1981 msgid "Name:" msgstr "" -#: ../../Menu/Options.Designer.cs:1897 +#: ../../Menu/Options.Designer.cs:1990 msgid "Path:" msgstr "" -#: ../../Menu/Options.Designer.cs:1916 +#: ../../Menu/Options.Designer.cs:2009 msgid "Add..." msgstr "" -#: ../../Menu/Options.Designer.cs:2023 +#: ../../Menu/Options.Designer.cs:2117 msgid "System" msgstr "" -#: ../../Menu/Options.Designer.cs:2045 +#: ../../Menu/Options.Designer.cs:2139 msgid "Target frame rate" msgstr "" -#: ../../Menu/Options.Designer.cs:2084 +#: ../../Menu/Options.Designer.cs:2178 msgid "Automatically tune settings to keep performance level" msgstr "" -#: ../../Menu/Options.Designer.cs:2108 +#: ../../Menu/Options.Designer.cs:2202 msgid "Web server port" msgstr "" -#: ../../Menu/Options.Designer.cs:2152 -msgid "Show control confirmations " +#: ../../Menu/Options.Designer.cs:2258 +msgid "Messages suppressed " msgstr "" -#: ../../Menu/Options.Designer.cs:2175 +#: ../../Menu/Options.Designer.cs:2280 msgid "Use glass for in-game windows" msgstr "" -#: ../../Menu/Options.Designer.cs:2213 +#: ../../Menu/Options.Designer.cs:2318 msgid "Window size (choose or specify WIDTHxHEIGHT)" msgstr "" -#: ../../Menu/Options.Designer.cs:2235 +#: ../../Menu/Options.Designer.cs:2340 msgid "Windowed" msgstr "" -#: ../../Menu/Options.Designer.cs:2271 +#: ../../Menu/Options.Designer.cs:2376 msgid "Language " msgstr "" -#: ../../Menu/Options.Designer.cs:2293 +#: ../../Menu/Options.Designer.cs:2398 msgid "Update mode:" msgstr "" -#: ../../Menu/Options.Designer.cs:2329 +#: ../../Menu/Options.Designer.cs:2434 msgid "Experimental" msgstr "" -#: ../../Menu/Options.Designer.cs:2340 -#: ../../Menu/Options.Designer.cs:2384 -#: ../../Menu/Options.Designer.cs:2601 +#: ../../Menu/Options.Designer.cs:2445 +#: ../../Menu/Options.Designer.cs:2560 +#: ../../Menu/Options.Designer.cs:2777 msgid "Level" msgstr "" -#: ../../Menu/Options.Designer.cs:2364 +#: ../../Menu/Options.Designer.cs:2469 +msgid "Full Range Throttle" +msgstr "" + +#: ../../Menu/Options.Designer.cs:2479 +msgid "Legend" +msgstr "" + +#: ../../Menu/Options.Designer.cs:2492 +msgid "Calibration" +msgstr "" + +#: ../../Menu/Options.Designer.cs:2540 msgid "Activity weather randomization" msgstr "" -#: ../../Menu/Options.Designer.cs:2374 +#: ../../Menu/Options.Designer.cs:2550 msgid "Activity randomization" msgstr "" -#: ../../Menu/Options.Designer.cs:2407 +#: ../../Menu/Options.Designer.cs:2583 msgid "Correct questionable braking parameters" msgstr "" -#: ../../Menu/Options.Designer.cs:2418 +#: ../../Menu/Options.Designer.cs:2594 msgid "Adhesion factor random change:" msgstr "" -#: ../../Menu/Options.Designer.cs:2428 +#: ../../Menu/Options.Designer.cs:2604 msgid "Adhesion factor correction:" msgstr "" -#: ../../Menu/Options.Designer.cs:2455 +#: ../../Menu/Options.Designer.cs:2631 msgid "Show shape warnings" msgstr "" -#: ../../Menu/Options.Designer.cs:2473 +#: ../../Menu/Options.Designer.cs:2649 msgid "Level:" msgstr "" -#: ../../Menu/Options.Designer.cs:2513 +#: ../../Menu/Options.Designer.cs:2689 msgid "MSTS environments" msgstr "" -#: ../../Menu/Options.Designer.cs:2524 +#: ../../Menu/Options.Designer.cs:2700 msgid "Gauge (mm)" msgstr "" -#: ../../Menu/Options.Designer.cs:2562 +#: ../../Menu/Options.Designer.cs:2738 msgid "Minimum length (m)" msgstr "" -#: ../../Menu/Options.Designer.cs:2613 +#: ../../Menu/Options.Designer.cs:2789 msgid "" "Experimental features that may slow down the game, use at your own risk." msgstr "" -#: ../../Menu/Options.Designer.cs:2637 +#: ../../Menu/Options.Designer.cs:2813 msgid "Super-elevation" msgstr "" -#: ../../Menu/Options.Designer.cs:1654 +#: ../../Menu/Options.Designer.cs:1641 msgid "" "Use data logger to record your simulation data (in-game command: F12).\r\n" "Please remember that the size of the dump file grows with the simulation " "time!" msgstr "" -#: ../../Menu/Options.Designer.cs:1830 +#: ../../Menu/Options.Designer.cs:1923 msgid "" "Installation profiles tell Open Rails where to look for game content. Add " "each full and mini-route MSTS installation." msgstr "" -#: ../../Menu/Options.Designer.cs:1979 +#: ../../Menu/Options.Designer.cs:2072 msgid "Name" msgstr "" -#: ../../Menu/Options.Designer.cs:1987 +#: ../../Menu/Options.Designer.cs:2080 #: ../../Menu/ResumeForm.Designer.cs:372 msgid "Path" msgstr "" -#: ../../Menu/Options.Designer.cs:668 +#: ../../Menu/Options.Designer.cs:689 msgid "" "Min 0 Max 100. Higher: louder sound\r\n" "\r\n" msgstr "" -#: ../../Menu/Options.Designer.cs:704 +#: ../../Menu/Options.Designer.cs:725 msgid "Sound Volume 0-100" msgstr "" -#: ../../Menu/Options.Designer.cs:1014 +#: ../../Menu/Options.Designer.cs:1035 msgid "Default is 0%" msgstr "" -#: ../../Menu/Options.Designer.cs:1075 +#: ../../Menu/Options.Designer.cs:1096 msgid "Default is 2x MSAA" msgstr "" -#: ../../Menu/Options.Designer.cs:1148 +#: ../../Menu/Options.Designer.cs:1169 +#: ../../Menu/Options.Designer.cs:2678 msgid "Default is 100%" msgstr "" -#: ../../Menu/Options.Designer.cs:1198 -#: ../../Menu/Options.Designer.cs:2071 +#: ../../Menu/Options.Designer.cs:1219 +#: ../../Menu/Options.Designer.cs:2165 msgid "Distance to see mountains" msgstr "" -#: ../../Menu/Options.Designer.cs:1566 +#: ../../Menu/Options.Designer.cs:1553 msgid "Load the factory default key assignments." msgstr "" -#: ../../Menu/Options.Designer.cs:1578 +#: ../../Menu/Options.Designer.cs:1565 msgid "Check for incorrect key assignments." msgstr "" -#: ../../Menu/Options.Designer.cs:2354 -#: ../../Menu/Options.Designer.cs:2398 +#: ../../Menu/Options.Designer.cs:2459 +#: ../../Menu/Options.Designer.cs:2574 msgid "" "0: no randomization, 1: moderate, 2: significant; 3: high (may be " "unrealistic)" msgstr "" -#: ../../Menu/Options.Designer.cs:2486 -msgid "Default is 10%" +#: ../../Menu/Options.Designer.cs:2470 +msgid "Use the full range of the Throttle Lever. There will be no Auto Brake!" msgstr "" -#: ../../Menu/Options.Designer.cs:2502 -msgid "Default is 130%" +#: ../../Menu/Options.Designer.cs:2493 +msgid "Calibrate the lever position reading" msgstr "" -#: ../../Menu/Options.Designer.cs:2586 +#: ../../Menu/Options.Designer.cs:2504 +#: ../../Menu/Options.Designer.cs:2515 +msgid "Load the factory default button assignments." +msgstr "" + +#: ../../Menu/Options.Designer.cs:2662 +msgid "Default is 10%" +msgstr "" + +#: ../../Menu/Options.Designer.cs:2762 msgid "Shortest curve to have elevation" msgstr "" -#: ../../Menu/Options.Designer.cs:2627 +#: ../../Menu/Options.Designer.cs:2803 msgid "0: no elevation, 1: 9cm max; 10: 18cm max" msgstr "" -#: ../../Menu/Options.Designer.cs:1553 +#: ../../Menu/Options.Designer.cs:1540 +#: ../../Menu/Options.Designer.cs:2527 msgid "" "Generate a listing of your keyboard assignments. \r\n" "The output is placed on your desktop." msgstr "" +#: ../../Menu/Options.Designer.cs:2480 +msgid "" +"Show a legend of RailDriver board with button and lever description. Press " +"cancel to close again." +msgstr "" + +#: ../../Menu/OptionsRailDriver.cs:186 +msgid "Click to change this button" +msgstr "" + +#: ../../Menu/OptionsRailDriver.cs:244 +msgid "Remove all custom button assignments?" +msgstr "" + +#: ../../Menu/OptionsRailDriver.cs:269 +msgid "" +"A listing of all Raildriver button assignments has been placed here:\n" +"\n" +msgstr "" + +#: ../../Menu/RDButtonInputControl.Designer.cs:71 +msgid "" +"Press any RailDriver button to Assign. Press Backspace to remove an " +"assignment." +msgstr "" + #: ../../Menu/ResumeForm.cs:156 msgid "Explore in Activity Mode" msgstr "" diff --git a/Source/Locales/ORTS.Common/ORTS.Common.pot b/Source/Locales/ORTS.Common/ORTS.Common.pot index b4ba43a429..2b3b02f637 100644 --- a/Source/Locales/ORTS.Common/ORTS.Common.pot +++ b/Source/Locales/ORTS.Common/ORTS.Common.pot @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-02-21 17:54:10+0300\n" -"PO-Revision-Date: 2023-02-21 17:54:11+0300\n" +"POT-Creation-Date: 2023-12-03 15:16:39+0100\n" +"PO-Revision-Date: 2023-12-03 15:16:40+0100\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -80,98 +80,110 @@ msgid "kgf/cm²" msgstr "" #: ../../ORTS.Common/Conversions.cs:552 -msgid "kg" +msgid "L/s" msgstr "" #: ../../ORTS.Common/Conversions.cs:553 -msgid "t" +msgid "L/min" msgstr "" #: ../../ORTS.Common/Conversions.cs:554 -msgid "t-uk" +msgid "cfm" msgstr "" #: ../../ORTS.Common/Conversions.cs:555 -msgid "t-us" +msgid "kg" msgstr "" #: ../../ORTS.Common/Conversions.cs:556 -msgid "lb" +msgid "t" msgstr "" #: ../../ORTS.Common/Conversions.cs:557 -msgid "s" +msgid "t-uk" msgstr "" #: ../../ORTS.Common/Conversions.cs:558 -msgid "min" +msgid "t-us" msgstr "" #: ../../ORTS.Common/Conversions.cs:559 -msgid "h" +msgid "lb" msgstr "" #: ../../ORTS.Common/Conversions.cs:560 -msgid "L" +msgid "s" msgstr "" #: ../../ORTS.Common/Conversions.cs:561 -msgid "g-uk" +msgid "min" msgstr "" #: ../../ORTS.Common/Conversions.cs:562 -msgid "g-us" +msgid "h" msgstr "" #: ../../ORTS.Common/Conversions.cs:563 -msgid "rpm" +msgid "L" msgstr "" #: ../../ORTS.Common/Conversions.cs:564 -msgid "kW" +msgid "g-uk" msgstr "" #: ../../ORTS.Common/Conversions.cs:565 -msgid "hp" +msgid "g-us" msgstr "" #: ../../ORTS.Common/Conversions.cs:566 -msgid "bhp" +msgid "rpm" msgstr "" #: ../../ORTS.Common/Conversions.cs:567 -msgid "kJ" +msgid "kW" msgstr "" #: ../../ORTS.Common/Conversions.cs:568 -msgid "MJ" +msgid "hp" msgstr "" #: ../../ORTS.Common/Conversions.cs:569 -msgid "BTU" +msgid "bhp" msgstr "" #: ../../ORTS.Common/Conversions.cs:570 -msgid "°C" +msgid "kJ" msgstr "" #: ../../ORTS.Common/Conversions.cs:571 -msgid "°F" +msgid "MJ" msgstr "" #: ../../ORTS.Common/Conversions.cs:572 -msgid "N" +msgid "BTU" msgstr "" #: ../../ORTS.Common/Conversions.cs:573 -msgid "kN" +msgid "°C" msgstr "" #: ../../ORTS.Common/Conversions.cs:574 -msgid "lbf" +msgid "°F" msgstr "" #: ../../ORTS.Common/Conversions.cs:575 +msgid "N" +msgstr "" + +#: ../../ORTS.Common/Conversions.cs:576 +msgid "kN" +msgstr "" + +#: ../../ORTS.Common/Conversions.cs:577 +msgid "lbf" +msgstr "" + +#: ../../ORTS.Common/Conversions.cs:578 msgid "klbf" msgstr "" @@ -218,874 +230,914 @@ msgid "Game Fullscreen" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:17 -msgid "Game Switch Ahead" +msgid "Game External Controller (RailDriver)" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:18 -msgid "Game Switch Behind" +msgid "Game Switch Ahead" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:19 -msgid "Game Switch Picked" +msgid "Game Switch Behind" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:20 -msgid "Game Signal Picked" +msgid "Game Switch Picked" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:21 -msgid "Game Switch With Mouse" +msgid "Game Signal Picked" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:22 -msgid "Game Uncouple With Mouse" +msgid "Game Switch With Mouse" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:23 -msgid "Game Change Cab" +msgid "Game Uncouple With Mouse" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:24 -msgid "Game Request Control" +msgid "Game Change Cab" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:25 -msgid "Game Multi Player Dispatcher" +msgid "Game Request Control" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:26 -msgid "Game Multi Player Texting" +msgid "Game Multi Player Dispatcher" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:27 -msgid "Game Switch Manual Mode" +msgid "Game Multi Player Texting" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:28 -msgid "Game Reset Out Of Control Mode" +msgid "Game Switch Manual Mode" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:29 -msgid "Game Clear Signal Forward" +msgid "Game Reset Out Of Control Mode" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:30 -msgid "Game Clear Signal Backward" +msgid "Game Clear Signal Forward" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:31 -msgid "Game Reset Signal Forward" +msgid "Game Clear Signal Backward" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:32 -msgid "Game Reset Signal Backward" +msgid "Game Reset Signal Forward" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:33 -msgid "Game Autopilot Mode" +msgid "Game Reset Signal Backward" msgstr "" #: ../../ORTS.Common/Input/UserCommand.cs:34 +msgid "Game Autopilot Mode" +msgstr "" + +#: ../../ORTS.Common/Input/UserCommand.cs:35 msgid "Game Suspend Old Player" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:36 +#: ../../ORTS.Common/Input/UserCommand.cs:37 msgid "Display Next Window Tab" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:37 +#: ../../ORTS.Common/Input/UserCommand.cs:38 msgid "Display Help Window" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:38 +#: ../../ORTS.Common/Input/UserCommand.cs:39 msgid "Display Track Monitor Window" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:39 +#: ../../ORTS.Common/Input/UserCommand.cs:40 msgid "Display HUD" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:40 +#: ../../ORTS.Common/Input/UserCommand.cs:41 msgid "Display Train Driving Window" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:41 +#: ../../ORTS.Common/Input/UserCommand.cs:42 msgid "Display Multi Player Window" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:42 +#: ../../ORTS.Common/Input/UserCommand.cs:43 msgid "Display Car Labels" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:43 +#: ../../ORTS.Common/Input/UserCommand.cs:44 msgid "Display Station Labels" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:44 +#: ../../ORTS.Common/Input/UserCommand.cs:45 msgid "Display Switch Window" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:45 +#: ../../ORTS.Common/Input/UserCommand.cs:46 msgid "Display Train Operations Window" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:46 +#: ../../ORTS.Common/Input/UserCommand.cs:47 msgid "Display Train Dpu Window" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:47 +#: ../../ORTS.Common/Input/UserCommand.cs:48 msgid "Display Next Station Window" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:48 +#: ../../ORTS.Common/Input/UserCommand.cs:49 msgid "Display Compass Window" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:49 +#: ../../ORTS.Common/Input/UserCommand.cs:50 msgid "Display Train List Window" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:50 +#: ../../ORTS.Common/Input/UserCommand.cs:51 msgid "Display EOT List Window" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:52 +#: ../../ORTS.Common/Input/UserCommand.cs:53 msgid "Debug Speed Up" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:53 +#: ../../ORTS.Common/Input/UserCommand.cs:54 msgid "Debug Speed Down" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:54 +#: ../../ORTS.Common/Input/UserCommand.cs:55 msgid "Debug Speed Reset" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:55 +#: ../../ORTS.Common/Input/UserCommand.cs:56 msgid "Debug Overcast Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:56 +#: ../../ORTS.Common/Input/UserCommand.cs:57 msgid "Debug Overcast Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:57 +#: ../../ORTS.Common/Input/UserCommand.cs:58 msgid "Debug Fog Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:58 +#: ../../ORTS.Common/Input/UserCommand.cs:59 msgid "Debug Fog Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:59 +#: ../../ORTS.Common/Input/UserCommand.cs:60 msgid "Debug Precipitation Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:60 +#: ../../ORTS.Common/Input/UserCommand.cs:61 msgid "Debug Precipitation Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:61 +#: ../../ORTS.Common/Input/UserCommand.cs:62 msgid "Debug Precipitation Liquidity Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:62 +#: ../../ORTS.Common/Input/UserCommand.cs:63 msgid "Debug Precipitation Liquidity Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:63 +#: ../../ORTS.Common/Input/UserCommand.cs:64 +msgid "Debug Daylight Offset Increase" +msgstr "" + +#: ../../ORTS.Common/Input/UserCommand.cs:65 +msgid "Debug Daylight Offset Decrease" +msgstr "" + +#: ../../ORTS.Common/Input/UserCommand.cs:66 msgid "Debug Weather Change" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:64 +#: ../../ORTS.Common/Input/UserCommand.cs:67 msgid "Debug Clock Forwards" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:65 +#: ../../ORTS.Common/Input/UserCommand.cs:68 msgid "Debug Clock Backwards" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:66 +#: ../../ORTS.Common/Input/UserCommand.cs:69 msgid "Debug Logger" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:67 +#: ../../ORTS.Common/Input/UserCommand.cs:70 msgid "Debug Lock Shadows" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:68 +#: ../../ORTS.Common/Input/UserCommand.cs:71 msgid "Debug Dump Keyboard Map" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:69 +#: ../../ORTS.Common/Input/UserCommand.cs:72 msgid "Debug Log Render Frame" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:70 +#: ../../ORTS.Common/Input/UserCommand.cs:73 msgid "Debug Tracks" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:71 +#: ../../ORTS.Common/Input/UserCommand.cs:74 msgid "Debug Signalling" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:72 +#: ../../ORTS.Common/Input/UserCommand.cs:75 msgid "Debug Reset Wheel Slip" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:73 +#: ../../ORTS.Common/Input/UserCommand.cs:76 msgid "Debug Toggle Advanced Adhesion" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:74 +#: ../../ORTS.Common/Input/UserCommand.cs:77 msgid "Debug Sound Form" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:75 +#: ../../ORTS.Common/Input/UserCommand.cs:78 msgid "Debug Physics Form" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:76 +#: ../../ORTS.Common/Input/UserCommand.cs:79 msgid "Debug Toggle Confirmations" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:78 +#: ../../ORTS.Common/Input/UserCommand.cs:81 msgid "Camera Cab" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:79 +#: ../../ORTS.Common/Input/UserCommand.cs:82 msgid "Camera Change Passenger Viewpoint" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:80 +#: ../../ORTS.Common/Input/UserCommand.cs:83 +msgid "Camera Change 3DCab Viewpoint" +msgstr "" + +#: ../../ORTS.Common/Input/UserCommand.cs:84 msgid "Camera Toggle 3D Cab" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:81 +#: ../../ORTS.Common/Input/UserCommand.cs:85 msgid "Camera Toggle Show Cab" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:82 +#: ../../ORTS.Common/Input/UserCommand.cs:86 msgid "Camera Toggle Letterbox Cab" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:83 +#: ../../ORTS.Common/Input/UserCommand.cs:87 msgid "Camera Head Out Forward" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:84 +#: ../../ORTS.Common/Input/UserCommand.cs:88 msgid "Camera Head Out Backward" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:85 +#: ../../ORTS.Common/Input/UserCommand.cs:89 msgid "Camera Outside Front" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:86 +#: ../../ORTS.Common/Input/UserCommand.cs:90 msgid "Camera Outside Rear" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:87 +#: ../../ORTS.Common/Input/UserCommand.cs:91 msgid "Camera Trackside" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:88 +#: ../../ORTS.Common/Input/UserCommand.cs:92 msgid "Camera SpecialTracksidePoint" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:89 +#: ../../ORTS.Common/Input/UserCommand.cs:93 msgid "Camera Passenger" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:90 +#: ../../ORTS.Common/Input/UserCommand.cs:94 msgid "Camera Brakeman" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:91 +#: ../../ORTS.Common/Input/UserCommand.cs:95 msgid "Camera Free" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:92 +#: ../../ORTS.Common/Input/UserCommand.cs:96 msgid "Camera Previous Free" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:93 +#: ../../ORTS.Common/Input/UserCommand.cs:97 msgid "Camera Reset" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:94 +#: ../../ORTS.Common/Input/UserCommand.cs:98 msgid "Camera Move Fast" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:95 +#: ../../ORTS.Common/Input/UserCommand.cs:99 msgid "Camera Move Slow" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:96 +#: ../../ORTS.Common/Input/UserCommand.cs:100 msgid "Camera Pan (Rotate) Left" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:97 +#: ../../ORTS.Common/Input/UserCommand.cs:101 msgid "Camera Pan (Rotate) Right" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:98 +#: ../../ORTS.Common/Input/UserCommand.cs:102 msgid "Camera Pan (Rotate) Up" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:99 +#: ../../ORTS.Common/Input/UserCommand.cs:103 msgid "Camera Pan (Rotate) Down" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:100 +#: ../../ORTS.Common/Input/UserCommand.cs:104 msgid "Camera Zoom In (Move Z)" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:101 +#: ../../ORTS.Common/Input/UserCommand.cs:105 msgid "Camera Zoom Out (Move Z)" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:102 +#: ../../ORTS.Common/Input/UserCommand.cs:106 msgid "Camera Rotate (Pan) Left" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:103 +#: ../../ORTS.Common/Input/UserCommand.cs:107 msgid "Camera Rotate (Pan) Right" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:104 +#: ../../ORTS.Common/Input/UserCommand.cs:108 msgid "Camera Rotate (Pan) Up" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:105 +#: ../../ORTS.Common/Input/UserCommand.cs:109 msgid "Camera Rotate (Pan) Down" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:106 +#: ../../ORTS.Common/Input/UserCommand.cs:110 msgid "Camera Car Next" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:107 +#: ../../ORTS.Common/Input/UserCommand.cs:111 msgid "Camera Car Previous" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:108 +#: ../../ORTS.Common/Input/UserCommand.cs:112 msgid "Camera Car First" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:109 +#: ../../ORTS.Common/Input/UserCommand.cs:113 msgid "Camera Car Last" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:110 +#: ../../ORTS.Common/Input/UserCommand.cs:114 msgid "Camera Jumping Trains" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:111 +#: ../../ORTS.Common/Input/UserCommand.cs:115 msgid "Camera Jump Back Player" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:112 +#: ../../ORTS.Common/Input/UserCommand.cs:116 msgid "Camera Jump See Switch" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:113 +#: ../../ORTS.Common/Input/UserCommand.cs:117 msgid "Camera Vibrate" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:114 +#: ../../ORTS.Common/Input/UserCommand.cs:118 msgid "Camera Scroll Right" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:115 +#: ../../ORTS.Common/Input/UserCommand.cs:119 msgid "Camera Scroll Left" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:116 +#: ../../ORTS.Common/Input/UserCommand.cs:120 msgid "Camera Browse Backwards" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:117 +#: ../../ORTS.Common/Input/UserCommand.cs:121 msgid "Camera Browse Forwards" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:119 +#: ../../ORTS.Common/Input/UserCommand.cs:123 msgid "Control Forwards" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:120 +#: ../../ORTS.Common/Input/UserCommand.cs:124 msgid "Control Backwards" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:121 +#: ../../ORTS.Common/Input/UserCommand.cs:125 msgid "Control Throttle Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:122 +#: ../../ORTS.Common/Input/UserCommand.cs:126 msgid "Control Throttle Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:123 +#: ../../ORTS.Common/Input/UserCommand.cs:127 msgid "Control Throttle Zero" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:124 +#: ../../ORTS.Common/Input/UserCommand.cs:128 msgid "Control Gear Up" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:125 +#: ../../ORTS.Common/Input/UserCommand.cs:129 msgid "Control Gear Down" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:126 +#: ../../ORTS.Common/Input/UserCommand.cs:130 msgid "Control Train Brake Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:127 +#: ../../ORTS.Common/Input/UserCommand.cs:131 msgid "Control Train Brake Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:128 +#: ../../ORTS.Common/Input/UserCommand.cs:132 msgid "Control Train Brake Zero" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:129 +#: ../../ORTS.Common/Input/UserCommand.cs:133 msgid "Control Engine Brake Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:130 +#: ../../ORTS.Common/Input/UserCommand.cs:134 msgid "Control Engine Brake Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:131 +#: ../../ORTS.Common/Input/UserCommand.cs:135 msgid "Control Brakeman Brake Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:132 +#: ../../ORTS.Common/Input/UserCommand.cs:136 msgid "Control Brakeman Brake Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:133 +#: ../../ORTS.Common/Input/UserCommand.cs:137 msgid "Control Dynamic Brake Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:134 +#: ../../ORTS.Common/Input/UserCommand.cs:138 msgid "Control Dynamic Brake Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:135 +#: ../../ORTS.Common/Input/UserCommand.cs:139 msgid "Control Bail Off" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:136 +#: ../../ORTS.Common/Input/UserCommand.cs:140 +msgid "Control Brake Quick Release" +msgstr "" + +#: ../../ORTS.Common/Input/UserCommand.cs:141 +msgid "Control Brake Overcharge" +msgstr "" + +#: ../../ORTS.Common/Input/UserCommand.cs:142 msgid "Control Initialize Brakes" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:137 +#: ../../ORTS.Common/Input/UserCommand.cs:143 msgid "Control Handbrake Full" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:138 +#: ../../ORTS.Common/Input/UserCommand.cs:144 msgid "Control Handbrake None" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:139 +#: ../../ORTS.Common/Input/UserCommand.cs:145 msgid "Control Odometer Show/Hide" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:140 +#: ../../ORTS.Common/Input/UserCommand.cs:146 msgid "Control Odometer Reset" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:141 +#: ../../ORTS.Common/Input/UserCommand.cs:147 msgid "Control Odometer Direction" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:142 +#: ../../ORTS.Common/Input/UserCommand.cs:148 msgid "Control Retainers On" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:143 +#: ../../ORTS.Common/Input/UserCommand.cs:149 msgid "Control Retainers Off" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:144 +#: ../../ORTS.Common/Input/UserCommand.cs:150 msgid "Control Brake Hose Connect" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:145 +#: ../../ORTS.Common/Input/UserCommand.cs:151 msgid "Control Brake Hose Disconnect" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:146 +#: ../../ORTS.Common/Input/UserCommand.cs:152 msgid "Control Alerter" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:147 +#: ../../ORTS.Common/Input/UserCommand.cs:153 msgid "Control Emergency Push Button" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:148 +#: ../../ORTS.Common/Input/UserCommand.cs:154 msgid "Control EOT Emergency Brake" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:149 +#: ../../ORTS.Common/Input/UserCommand.cs:155 msgid "Control Sander" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:150 +#: ../../ORTS.Common/Input/UserCommand.cs:156 msgid "Control Sander Toggle" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:151 +#: ../../ORTS.Common/Input/UserCommand.cs:157 msgid "Control Wiper" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:152 +#: ../../ORTS.Common/Input/UserCommand.cs:158 msgid "Control Horn" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:153 +#: ../../ORTS.Common/Input/UserCommand.cs:159 msgid "Control Bell" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:154 +#: ../../ORTS.Common/Input/UserCommand.cs:160 msgid "Control Bell Toggle" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:155 +#: ../../ORTS.Common/Input/UserCommand.cs:161 msgid "Control Door Left" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:156 +#: ../../ORTS.Common/Input/UserCommand.cs:162 msgid "Control Door Right" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:157 +#: ../../ORTS.Common/Input/UserCommand.cs:163 msgid "Control Mirror" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:158 +#: ../../ORTS.Common/Input/UserCommand.cs:164 msgid "Control Light" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:159 +#: ../../ORTS.Common/Input/UserCommand.cs:165 msgid "Control Pantograph 1" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:160 +#: ../../ORTS.Common/Input/UserCommand.cs:166 msgid "Control Pantograph 2" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:161 +#: ../../ORTS.Common/Input/UserCommand.cs:167 msgid "Control Pantograph 3" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:162 +#: ../../ORTS.Common/Input/UserCommand.cs:168 msgid "Control Pantograph 4" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:163 +#: ../../ORTS.Common/Input/UserCommand.cs:169 +msgid "Control Window Left" +msgstr "" + +#: ../../ORTS.Common/Input/UserCommand.cs:170 +msgid "Control Window Right" +msgstr "" + +#: ../../ORTS.Common/Input/UserCommand.cs:171 msgid "Control Battery Close" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:164 +#: ../../ORTS.Common/Input/UserCommand.cs:172 msgid "Control Battery Open" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:165 +#: ../../ORTS.Common/Input/UserCommand.cs:173 msgid "Control Master Key" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:166 +#: ../../ORTS.Common/Input/UserCommand.cs:174 msgid "Control Service Retention" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:167 +#: ../../ORTS.Common/Input/UserCommand.cs:175 msgid "Control Service Retention Cancellation" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:168 +#: ../../ORTS.Common/Input/UserCommand.cs:176 msgid "Control Circuit Breaker Closing Order" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:169 +#: ../../ORTS.Common/Input/UserCommand.cs:177 msgid "Control Circuit Breaker Opening Order" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:170 +#: ../../ORTS.Common/Input/UserCommand.cs:178 msgid "Control Circuit Breaker Closing Authorization" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:171 +#: ../../ORTS.Common/Input/UserCommand.cs:179 msgid "Control Traction Cut-Off Relay Closing Order" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:172 +#: ../../ORTS.Common/Input/UserCommand.cs:180 msgid "Control Traction Cut-Off Relay Opening Order" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:173 +#: ../../ORTS.Common/Input/UserCommand.cs:181 msgid "Control Traction Cut-Off Relay Closing Authorization" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:174 +#: ../../ORTS.Common/Input/UserCommand.cs:182 msgid "Control Electric Train Supply" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:175 +#: ../../ORTS.Common/Input/UserCommand.cs:183 msgid "Control Diesel Player" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:176 +#: ../../ORTS.Common/Input/UserCommand.cs:184 msgid "Control Diesel Helper" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:177 +#: ../../ORTS.Common/Input/UserCommand.cs:185 msgid "Control Headlight Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:178 +#: ../../ORTS.Common/Input/UserCommand.cs:186 msgid "Control Headlight Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:179 +#: ../../ORTS.Common/Input/UserCommand.cs:187 msgid "Control Injector 1 Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:180 +#: ../../ORTS.Common/Input/UserCommand.cs:188 msgid "Control Injector 1 Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:181 +#: ../../ORTS.Common/Input/UserCommand.cs:189 msgid "Control Injector 1" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:182 +#: ../../ORTS.Common/Input/UserCommand.cs:190 msgid "Control Injector 2 Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:183 +#: ../../ORTS.Common/Input/UserCommand.cs:191 msgid "Control Injector 2 Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:184 +#: ../../ORTS.Common/Input/UserCommand.cs:192 msgid "Control Injector 2" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:185 +#: ../../ORTS.Common/Input/UserCommand.cs:193 msgid "Control Blowdown Valve" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:186 +#: ../../ORTS.Common/Input/UserCommand.cs:194 msgid "Control Blower Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:187 +#: ../../ORTS.Common/Input/UserCommand.cs:195 msgid "Control Blower Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:188 +#: ../../ORTS.Common/Input/UserCommand.cs:196 msgid "Control Steam Heat Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:189 +#: ../../ORTS.Common/Input/UserCommand.cs:197 msgid "Control Steam Heat Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:190 +#: ../../ORTS.Common/Input/UserCommand.cs:198 +msgid "Control Steam Booster Increase" +msgstr "" + +#: ../../ORTS.Common/Input/UserCommand.cs:199 +msgid "Control Steam Booster Decrease" +msgstr "" + +#: ../../ORTS.Common/Input/UserCommand.cs:200 msgid "Control Damper Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:191 +#: ../../ORTS.Common/Input/UserCommand.cs:201 msgid "Control Damper Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:192 +#: ../../ORTS.Common/Input/UserCommand.cs:202 msgid "Control Firebox Open" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:193 +#: ../../ORTS.Common/Input/UserCommand.cs:203 msgid "Control Firebox Close" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:194 +#: ../../ORTS.Common/Input/UserCommand.cs:204 msgid "Control Firing Rate Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:195 +#: ../../ORTS.Common/Input/UserCommand.cs:205 msgid "Control Firing Rate Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:196 +#: ../../ORTS.Common/Input/UserCommand.cs:206 msgid "Control Fire Shovel Full" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:197 +#: ../../ORTS.Common/Input/UserCommand.cs:207 msgid "Control Cylinder Cocks" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:198 +#: ../../ORTS.Common/Input/UserCommand.cs:208 msgid "Control Large Ejector Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:199 +#: ../../ORTS.Common/Input/UserCommand.cs:209 msgid "Control Large Ejector Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:200 +#: ../../ORTS.Common/Input/UserCommand.cs:210 msgid "Control Small Ejector Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:201 +#: ../../ORTS.Common/Input/UserCommand.cs:211 msgid "Control Small Ejector Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:202 +#: ../../ORTS.Common/Input/UserCommand.cs:212 msgid "Control Vacuum Exhauster" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:203 +#: ../../ORTS.Common/Input/UserCommand.cs:213 msgid "Control Cylinder Compound" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:204 +#: ../../ORTS.Common/Input/UserCommand.cs:214 msgid "Control Firing" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:205 +#: ../../ORTS.Common/Input/UserCommand.cs:215 msgid "Control Refill" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:206 +#: ../../ORTS.Common/Input/UserCommand.cs:216 msgid "Control Discrete Unload" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:207 +#: ../../ORTS.Common/Input/UserCommand.cs:217 msgid "Control Water Scoop" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:208 +#: ../../ORTS.Common/Input/UserCommand.cs:218 msgid "Control ImmediateRefill" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:209 +#: ../../ORTS.Common/Input/UserCommand.cs:219 msgid "Control Turntable Clockwise" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:210 +#: ../../ORTS.Common/Input/UserCommand.cs:220 msgid "Control Turntable Counterclockwise" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:211 +#: ../../ORTS.Common/Input/UserCommand.cs:221 msgid "Control Generic Item 1" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:212 +#: ../../ORTS.Common/Input/UserCommand.cs:222 msgid "Control Generic Item 2" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:213 +#: ../../ORTS.Common/Input/UserCommand.cs:223 msgid "Control TCS Generic 1" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:214 +#: ../../ORTS.Common/Input/UserCommand.cs:224 msgid "Control TCS Generic 2" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:215 +#: ../../ORTS.Common/Input/UserCommand.cs:225 msgid "Control Cab Radio" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:216 +#: ../../ORTS.Common/Input/UserCommand.cs:226 msgid "Control AI Fire On" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:217 +#: ../../ORTS.Common/Input/UserCommand.cs:227 msgid "Control AI Fire Off" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:218 +#: ../../ORTS.Common/Input/UserCommand.cs:228 msgid "Control AI Fire Reset" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:221 +#: ../../ORTS.Common/Input/UserCommand.cs:231 msgid "Control Speed Regulator Mode Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:222 +#: ../../ORTS.Common/Input/UserCommand.cs:232 msgid "Control Speed Regulator Mode Descrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:223 +#: ../../ORTS.Common/Input/UserCommand.cs:233 msgid "Control Selected Speed Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:224 +#: ../../ORTS.Common/Input/UserCommand.cs:234 msgid "Control Selected Speed Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:225 +#: ../../ORTS.Common/Input/UserCommand.cs:235 msgid "Control Speed Regulator Max Acceleration Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:226 +#: ../../ORTS.Common/Input/UserCommand.cs:236 msgid "Control Speed Regulator Max Acceleration Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:227 +#: ../../ORTS.Common/Input/UserCommand.cs:237 msgid "Control Number Of Axles Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:228 +#: ../../ORTS.Common/Input/UserCommand.cs:238 msgid "Control Number Of Axles Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:229 +#: ../../ORTS.Common/Input/UserCommand.cs:239 msgid "Control Restricted Speed Zone Active" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:230 +#: ../../ORTS.Common/Input/UserCommand.cs:240 msgid "Control Cruise Control Mode Increase" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:231 +#: ../../ORTS.Common/Input/UserCommand.cs:241 msgid "Control Cruise Control Mode Decrease" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:232 +#: ../../ORTS.Common/Input/UserCommand.cs:242 msgid "Control Train Type Change (Passenger/Cargo)" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:233 +#: ../../ORTS.Common/Input/UserCommand.cs:243 msgid "Control Selected Speed To Zero" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:235 +#: ../../ORTS.Common/Input/UserCommand.cs:245 msgid "Control DP Move To Front" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:236 +#: ../../ORTS.Common/Input/UserCommand.cs:246 msgid "Control DP Move To Back" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:237 +#: ../../ORTS.Common/Input/UserCommand.cs:247 msgid "Control DP Traction" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:238 +#: ../../ORTS.Common/Input/UserCommand.cs:248 msgid "Control DP Idle" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:239 +#: ../../ORTS.Common/Input/UserCommand.cs:249 msgid "Control DP Brake" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:240 +#: ../../ORTS.Common/Input/UserCommand.cs:250 msgid "Control DP More" msgstr "" -#: ../../ORTS.Common/Input/UserCommand.cs:241 +#: ../../ORTS.Common/Input/UserCommand.cs:251 msgid "Control DP Less" msgstr "" diff --git a/Source/Locales/ORTS.Menu/ORTS.Menu.pot b/Source/Locales/ORTS.Menu/ORTS.Menu.pot index 5ba53b0cd3..4b94e1abf8 100644 --- a/Source/Locales/ORTS.Menu/ORTS.Menu.pot +++ b/Source/Locales/ORTS.Menu/ORTS.Menu.pot @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-02-21 17:54:12+0300\n" -"PO-Revision-Date: 2023-02-21 17:54:12+0300\n" +"POT-Creation-Date: 2023-12-03 15:16:45+0100\n" +"PO-Revision-Date: 2023-12-03 15:16:45+0100\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" diff --git a/Source/Locales/ORTS.Settings/ORTS.Settings.pot b/Source/Locales/ORTS.Settings/ORTS.Settings.pot index 501183c91a..ce00c13f50 100644 --- a/Source/Locales/ORTS.Settings/ORTS.Settings.pot +++ b/Source/Locales/ORTS.Settings/ORTS.Settings.pot @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-02-21 17:54:12+0300\n" -"PO-Revision-Date: 2023-02-21 17:54:12+0300\n" +"POT-Creation-Date: 2023-12-03 15:16:49+0100\n" +"PO-Revision-Date: 2023-12-03 15:16:49+0100\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -11,23 +11,142 @@ msgstr "" "X-Generator: MonoDevelop Gettext addin\n" -#: ../../ORTS.Settings/InputSettings.cs:555 +#: ../../ORTS.Settings/InputSettings.cs:566 #, csharp-format msgid "{0} requires and is modified by Shift" msgstr "" -#: ../../ORTS.Settings/InputSettings.cs:557 +#: ../../ORTS.Settings/InputSettings.cs:568 #, csharp-format msgid "{0} requires and is modified by Control" msgstr "" -#: ../../ORTS.Settings/InputSettings.cs:559 +#: ../../ORTS.Settings/InputSettings.cs:570 #, csharp-format msgid "{0} requires and is modified by Alt" msgstr "" -#: ../../ORTS.Settings/InputSettings.cs:590 +#: ../../ORTS.Settings/InputSettings.cs:601 #, csharp-format msgid "{0} and {1} both match {2}" msgstr "" +#: ../../ORTS.Settings/RailDriverSettings.cs:15 +msgid "Reverser Neutral" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:16 +msgid "Reverser Full Reversed" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:17 +msgid "Reverser Full Forward" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:18 +msgid "Throttle Idle" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:19 +msgid "Full Throttle" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:20 +msgid "Dynamic Brake" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:21 +msgid "Dynamic Brake Setup" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:22 +msgid "Auto Brake Released" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:23 +msgid "Full Auto Brake " +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:24 +msgid "Emergency Brake" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:25 +msgid "Independent Brake Released" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:26 +msgid "Independent Brake Full" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:27 +msgid "Bail Off Disengaged (in Released position)" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:28 +msgid "Bail Off Engaged (in Released position)" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:29 +msgid "Bail Off Disengaged (in Full position)" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:30 +msgid "Bail Off Engaged (in Full position)" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:31 +msgid "Rotary Switch 1-Position 1(OFF)" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:32 +msgid "Rotary Switch 1-Position 2(SLOW)" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:33 +msgid "Rotary Switch 1-Position 3(FULL)" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:34 +msgid "Rotary Switch 2-Position 1(OFF)" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:35 +msgid "Rotary Switch 2-Position 2(DIM)" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:36 +msgid "Rotary Switch 2-Position 3(FULL)" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:37 +msgid "Reverse Reverser Direction" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:38 +msgid "Reverse Throttle Direction" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:39 +msgid "Reverse Auto Brake Direction" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:40 +msgid "Reverse Independent Brake Direction" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:41 +msgid "Full Range Throttle" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:42 +msgid "Cut Off Delta" +msgstr "" + +#: ../../ORTS.Settings/RailDriverSettings.cs:225 +#, csharp-format +msgid "" +"Button {0} is assigned to \r\n" +"\t" +msgstr "" + diff --git a/Source/Locales/Orts.Formats.OR/Orts.Formats.OR.pot b/Source/Locales/Orts.Formats.OR/Orts.Formats.OR.pot index 688f08e458..132016403b 100644 --- a/Source/Locales/Orts.Formats.OR/Orts.Formats.OR.pot +++ b/Source/Locales/Orts.Formats.OR/Orts.Formats.OR.pot @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-02-21 17:54:11+0300\n" -"PO-Revision-Date: 2023-02-21 17:54:12+0300\n" +"POT-Creation-Date: 2023-12-03 15:16:42+0100\n" +"PO-Revision-Date: 2023-12-03 15:16:42+0100\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" diff --git a/Source/Locales/Orts.Simulation/Orts.Simulation.pot b/Source/Locales/Orts.Simulation/Orts.Simulation.pot index e03dcefd65..0248a1ba21 100644 --- a/Source/Locales/Orts.Simulation/Orts.Simulation.pot +++ b/Source/Locales/Orts.Simulation/Orts.Simulation.pot @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-02-21 17:54:12+0300\n" -"PO-Revision-Date: 2023-02-21 17:54:18+0300\n" +"POT-Creation-Date: 2023-12-03 15:16:52+0100\n" +"PO-Revision-Date: 2023-12-03 15:16:54+0100\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -11,159 +11,168 @@ msgstr "" "X-Generator: MonoDevelop Gettext addin\n" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:371 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:81 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:377 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:110 msgid "Release" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:372 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:236 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:378 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:240 msgid "Quick Release" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:374 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:380 msgid "Neutral" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:375 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:80 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:381 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:109 msgid "Apply" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:376 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:382 msgid "EPApply" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:377 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:82 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:383 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:111 msgid "Emergency" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:378 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:384 msgid "Self Lap" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:379 -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:380 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:385 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:386 msgid "Service" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:381 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:79 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:387 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:108 msgid "Lap" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:382 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:388 msgid "Suppression" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:383 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:389 msgid "Cont. Service" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:384 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:390 msgid "Full Service" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:385 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:391 msgid "Minimum Reduction" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:386 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:392 msgid "Hold" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:387 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:393 msgid "Str. Brk. Release On:" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:388 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:394 msgid "Str. Brk. Release Off:" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:389 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:395 msgid "Str. Brk. Release:" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:390 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:396 msgid "Str. Brk. Lap:" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:391 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:397 msgid "Str. Brk. Apply:" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:392 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:398 msgid "Str. Brk. Apply All:" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:393 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:399 msgid "Str. Brk. Emerg:" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:394 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:237 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:400 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:241 msgid "Overcharge" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:395 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:401 msgid "Emergency Braking Push Button" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:396 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:402 msgid "TCS Emergency Braking" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:397 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:403 msgid "TCS Full Service Braking" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:398 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:404 msgid "Vac. Cont. Service" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:399 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:405 msgid "Vac. Apply Cont. Service" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:400 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:406 msgid "Manual Braking" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:401 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:407 msgid "Notch" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:402 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:408 msgid "EP Service" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:403 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:409 msgid "EP Full Service" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:404 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:410 msgid "Slow service" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:405 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:411 msgid "SME Service" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:406 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:412 msgid "SME Full Service" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:407 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:413 msgid "SME Self Lap" msgstr "" -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:408 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:414 msgid "SME Release Start" msgstr "" +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:415 +msgid "Hold Engine" +msgstr "" + +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:416 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:235 +msgid "Bail Off" +msgstr "" + #. Context: Brake Controller -#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:373 +#: ../../Orts.Simulation/Common/Scripting/BrakeController.cs:379 msgctxt "Brake Controller" msgid "Running" msgstr "" @@ -414,20 +423,20 @@ msgstr[0] "" msgstr[1] "" #: ../../Orts.Simulation/Simulation/Activity.cs:1004 -#: ../../Orts.Simulation/Simulation/AIs/AITrain.cs:6576 -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10599 +#: ../../Orts.Simulation/Simulation/AIs/AITrain.cs:6443 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10381 msgid "Passenger boarding completed. Waiting for signal ahead to clear." msgstr "" #: ../../Orts.Simulation/Simulation/Activity.cs:1009 -#: ../../Orts.Simulation/Simulation/AIs/AITrain.cs:6581 -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10607 +#: ../../Orts.Simulation/Simulation/AIs/AITrain.cs:6448 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10389 msgid "Passenger boarding completed. You may depart now." msgstr "" #: ../../Orts.Simulation/Simulation/Activity.cs:984 -#: ../../Orts.Simulation/Simulation/AIs/AITrain.cs:6588 -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10614 +#: ../../Orts.Simulation/Simulation/AIs/AITrain.cs:6455 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10396 #, csharp-format msgid "Passenger boarding completes in {0:D2}:{1:D2}" msgstr "" @@ -452,758 +461,778 @@ msgstr "" msgid "MSG" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:183 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:186 msgid "" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:185 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:204 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:188 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:207 msgid "reverse" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:185 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:204 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:188 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:207 msgid "neutral" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:185 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:204 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:188 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:207 msgid "forward" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:185 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:204 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:188 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:207 msgid "locked. Close throttle, stop train then re-try." msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:186 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1210 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1224 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:189 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1229 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1243 msgid "Throttle" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:186 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:194 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:195 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:202 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:189 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:197 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:198 #: ../../Orts.Simulation/Simulation/Confirmer.cs:205 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:206 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:207 #: ../../Orts.Simulation/Simulation/Confirmer.cs:208 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:209 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:210 #: ../../Orts.Simulation/Simulation/Confirmer.cs:211 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:212 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:216 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:217 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:255 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:256 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:214 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:215 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:219 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:221 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:259 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:260 msgid "close" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:186 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:194 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:195 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:202 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:189 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:197 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:198 #: ../../Orts.Simulation/Simulation/Confirmer.cs:205 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:206 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:207 #: ../../Orts.Simulation/Simulation/Confirmer.cs:208 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:209 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:210 #: ../../Orts.Simulation/Simulation/Confirmer.cs:211 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:212 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:216 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:217 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:255 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:256 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:214 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:215 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:219 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:221 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:259 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:260 msgid "open" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:186 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:189 msgid "locked. Release dynamic brake then re-try." msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:187 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:190 msgid "Wheel-slip" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:187 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:190 msgid "over" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:187 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:190 msgid "occurring. Tractive power greatly reduced." msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:187 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:190 msgid "warning" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:189 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:192 msgid "Power" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:189 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:198 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:199 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:206 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:207 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:214 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:229 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:234 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:236 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:237 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:239 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:192 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:201 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:202 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:209 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:210 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:217 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:233 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:238 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:240 #: ../../Orts.Simulation/Simulation/Confirmer.cs:241 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:242 #: ../../Orts.Simulation/Simulation/Confirmer.cs:243 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:244 #: ../../Orts.Simulation/Simulation/Confirmer.cs:245 #: ../../Orts.Simulation/Simulation/Confirmer.cs:246 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:247 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:248 #: ../../Orts.Simulation/Simulation/Confirmer.cs:249 #: ../../Orts.Simulation/Simulation/Confirmer.cs:250 #: ../../Orts.Simulation/Simulation/Confirmer.cs:253 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:271 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:254 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:257 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:277 msgid "off" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:189 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:198 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:199 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:206 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:207 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:214 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:234 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:236 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:237 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:239 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:245 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:246 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:192 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:201 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:202 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:209 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:210 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:217 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:238 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:240 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:241 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:243 #: ../../Orts.Simulation/Simulation/Confirmer.cs:249 #: ../../Orts.Simulation/Simulation/Confirmer.cs:250 #: ../../Orts.Simulation/Simulation/Confirmer.cs:253 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:271 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:254 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:257 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:277 msgid "on" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:190 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:193 msgid "Pantograph 1" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:190 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:191 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:192 #: ../../Orts.Simulation/Simulation/Confirmer.cs:193 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:194 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:195 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:196 msgid "lower" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:190 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:191 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:192 #: ../../Orts.Simulation/Simulation/Confirmer.cs:193 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:194 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:195 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:196 msgid "raise" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:191 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:194 msgid "Pantograph 2" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:192 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:195 msgid "Pantograph 3" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:193 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:196 msgid "Pantograph 4" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:194 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:195 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:355 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:370 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:197 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:198 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:357 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:372 msgid "Circuit breaker" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:196 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:199 msgid "Circuit breaker closing authorization" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:196 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:199 msgid "remove" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:196 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:199 msgid "give" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:198 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:201 msgid "Player Diesel Power" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:198 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:201 msgid "locked. Close throttle then re-try." msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:199 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:202 msgid "Helper Diesel Power" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:200 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:203 msgid "Diesel Tank" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:200 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:201 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:203 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:204 msgid "re-fueled" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:200 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:201 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:203 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:204 msgid "level" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:201 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:204 msgid "Boiler Water Tank" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:202 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:940 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:205 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:959 msgid "Traction cut-off relay" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:205 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:208 msgid "Regulator" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:206 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:209 msgid "Injector 1" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:207 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:210 msgid "Injector 2" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:208 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:211 msgid "Blowdown Valve" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:209 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6354 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6381 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:212 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6335 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6362 msgid "Blower" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:209 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:210 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:212 #: ../../Orts.Simulation/Simulation/Confirmer.cs:213 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:218 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:219 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:229 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:262 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:216 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:220 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:222 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:223 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:233 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:268 msgid "decrease" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:209 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:210 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:212 #: ../../Orts.Simulation/Simulation/Confirmer.cs:213 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:218 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:219 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:229 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:262 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:216 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:220 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:222 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:223 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:233 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:268 msgid "increase" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:210 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:213 msgid "SteamHeat" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:211 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:214 msgid "Damper" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:212 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:215 msgid "Firebox Door" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:213 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:216 msgid "Firing Rate" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:214 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:217 msgid "Manual Firing" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:215 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:218 msgid "Fire" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:215 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:218 msgid "add shovel-full" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:216 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:219 msgid "Cylinder Cocks" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:217 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:220 +msgid "SteamBooster" +msgstr "" + +#: ../../Orts.Simulation/Simulation/Confirmer.cs:221 msgid "Cylinder Compound" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:218 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:222 msgid "LargeEjector" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:219 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:223 msgid "SmallEjector" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:220 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:224 msgid "VacuumExhauster" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:220 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:224 msgid "normal" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:220 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:224 msgid "fast" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:221 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:222 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:225 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:226 msgid "Tender" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:221 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:225 msgid "Coal re-filled" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:221 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:225 msgid "Coal level" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:222 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:226 msgid "Water re-filled" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:222 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:226 msgid "Water level" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:224 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6986 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:228 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6967 msgid "Water Scoop" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:224 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:266 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:228 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:272 msgid "up" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:224 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:266 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:228 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:272 msgid "down" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:226 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:230 msgid "Train Brake" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:226 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:227 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:228 #: ../../Orts.Simulation/Simulation/Confirmer.cs:230 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:231 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:232 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:234 msgid "release" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:226 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:227 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:228 #: ../../Orts.Simulation/Simulation/Confirmer.cs:230 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:231 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:232 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:234 msgid "apply" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:227 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:231 msgid "Engine Brake" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:228 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:232 msgid "Brakeman Brake" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:229 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:233 msgid "Dynamic Brake" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:229 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:233 msgid "setup" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:230 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:234 msgid "Emergency Brake" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:231 -msgid "Bail Off" -msgstr "" - -#: ../../Orts.Simulation/Simulation/Confirmer.cs:231 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:235 msgid "disengage" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:231 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:235 msgid "engage" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:232 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:236 msgid "Brakes" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:232 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:236 msgid "initialize" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:232 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:236 msgid "cannot initialize. Stop train then re-try." msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:233 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:143 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/EPBrakeSystem.cs:84 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:237 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:199 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/EPBrakeSystem.cs:143 #: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SingleTransferPipe.cs:92 #: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SingleTransferPipe.cs:101 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SMEBrakeSystem.cs:87 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SMEBrakeSystem.cs:103 #: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/VacuumSinglePipe.cs:141 msgid "Handbrake" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:233 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:237 msgid "none" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:233 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:237 msgid "full" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:234 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:238 msgid "Retainers" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:234 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/BrakeSystem.cs:102 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:238 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/BrakeSystem.cs:107 msgid "Exhaust" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:234 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/BrakeSystem.cs:103 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:238 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/BrakeSystem.cs:108 msgid "High Pressure" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:234 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/BrakeSystem.cs:104 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:238 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/BrakeSystem.cs:109 msgid "Low Pressure" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:234 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/BrakeSystem.cs:105 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:238 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/BrakeSystem.cs:110 msgid "Slow Direct" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:235 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:239 msgid "Brake Hose" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:235 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:239 msgid "disconnect" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:235 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:239 msgid "connect" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:239 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:243 msgid "Sander" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:240 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:244 msgid "Alerter" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:240 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:244 msgid "acknowledge" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:241 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:245 msgid "Horn" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:242 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:246 msgid "Whistle" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:242 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:246 msgid "blow" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:243 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:247 msgid "Bell" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:243 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:247 msgid "ring" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:244 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:248 msgid "Headlight" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:244 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:248 msgid "dim" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:244 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:248 msgid "bright" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:245 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:249 msgid "Cab Light" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:246 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:250 msgid "Wipers" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:247 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:251 msgid "Cab" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:247 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:251 msgid "changing is not available" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:247 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:251 msgid "" "changing disabled. Close throttle, set reverser to neutral, stop train then " "re-try." msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:248 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:252 msgid "Odometer" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:249 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:253 msgid "Battery" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:250 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:937 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:352 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:254 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:956 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:354 msgid "Master key" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:252 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:256 msgid "Max acceleration" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:253 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:257 msgid "Restricted speed zone" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:255 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:259 msgid "Doors Left" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:256 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:260 msgid "Doors Right" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:257 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:261 msgid "Mirror" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:257 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:261 msgid "retract" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:257 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:261 msgid "extend" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:259 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:262 +msgid "Window Left" +msgstr "" + +#: ../../Orts.Simulation/Simulation/Confirmer.cs:262 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:263 +msgid "closing" +msgstr "" + +#: ../../Orts.Simulation/Simulation/Confirmer.cs:262 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:263 +msgid "opening" +msgstr "" + +#: ../../Orts.Simulation/Simulation/Confirmer.cs:263 +msgid "Window Right" +msgstr "" + +#: ../../Orts.Simulation/Simulation/Confirmer.cs:265 msgid "Switch Ahead" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:259 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:260 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:265 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:266 msgid "locked. Use Control+M to change signals to manual mode then re-try." msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:260 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:266 msgid "Switch Behind" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:262 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:268 msgid "Simulation Speed" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:262 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:268 msgid "reset" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:263 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:269 msgid "Uncouple After" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:264 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:270 msgid "Activity" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:264 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:270 msgid "quit" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:264 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:270 msgid "resume" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:265 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:271 msgid "Replay" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:265 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:271 msgid "Overriding camera replay. Press Escape to resume camera replay." msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:266 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:272 msgid "Gearbox" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:266 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:272 msgid "locked. Use shaft before changing gear." msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:267 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:273 msgid "Signal mode" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:267 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:273 msgid "manual" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:267 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:273 msgid "auto" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:267 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:273 msgid "locked. Stop train, then re-try." msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:269 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:275 msgid "Wagon" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:269 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:275 msgid "Wagon fully unloaded" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:269 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:275 msgid "Wagon fully loaded" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:269 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:275 msgid "Freight load" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:271 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:277 msgid "Cab Radio" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:281 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:290 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:328 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:287 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:296 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:334 #, csharp-format msgid "{0} {1}" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:285 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:291 #, csharp-format msgid "{0}" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:295 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:301 #, csharp-format msgid "{0} to {1:0}%" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:300 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:306 #, csharp-format msgid "{0} {1:0}% {2}" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:305 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:311 #, csharp-format msgid "{0:0}% {1}" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:310 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:316 #, csharp-format msgid "{0:0}%" msgstr "" -#: ../../Orts.Simulation/Simulation/Confirmer.cs:318 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:323 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:324 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:329 #, csharp-format msgid "{0} {1:0}%" msgstr "" #. Context: NonSteam -#: ../../Orts.Simulation/Simulation/Confirmer.cs:185 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1211 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:188 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1230 msgctxt "NonSteam" msgid "Reverser" msgstr "" #. Context: Steam -#: ../../Orts.Simulation/Simulation/Confirmer.cs:204 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:207 msgctxt "Steam" msgid "Reverser" msgstr "" #. Context: Alerter -#: ../../Orts.Simulation/Simulation/Confirmer.cs:240 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:244 msgctxt "Alerter" msgid "sound" msgstr "" #. Context: Horn -#: ../../Orts.Simulation/Simulation/Confirmer.cs:241 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:245 msgctxt "Horn" msgid "sound" msgstr "" #. Context: Cab -#: ../../Orts.Simulation/Simulation/Confirmer.cs:247 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:251 msgctxt "Cab" msgid "change" msgstr "" #. Context: Odometer -#: ../../Orts.Simulation/Simulation/Confirmer.cs:248 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:252 msgctxt "Odometer" msgid "reset" msgstr "" #. Context: Odometer -#: ../../Orts.Simulation/Simulation/Confirmer.cs:248 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:252 msgctxt "Odometer" msgid "counting down" msgstr "" #. Context: Odometer -#: ../../Orts.Simulation/Simulation/Confirmer.cs:248 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:252 msgctxt "Odometer" msgid "counting up" msgstr "" #. Context: Switch -#: ../../Orts.Simulation/Simulation/Confirmer.cs:259 -#: ../../Orts.Simulation/Simulation/Confirmer.cs:260 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:265 +#: ../../Orts.Simulation/Simulation/Confirmer.cs:266 msgctxt "Switch" msgid "change" msgstr "" @@ -1221,16 +1250,16 @@ msgstr "" msgid "Wagon out of range: move wagon towards crane by {0} metres" msgstr "" -#: ../../Orts.Simulation/Simulation/Simulator.cs:1893 +#: ../../Orts.Simulation/Simulation/Simulator.cs:1903 msgid "Train can't be suspended with speed not equal 0" msgstr "" -#: ../../Orts.Simulation/Simulation/Simulator.cs:2015 +#: ../../Orts.Simulation/Simulation/Simulator.cs:2025 msgid "To return to static train speed must be = 0" msgstr "" -#: ../../Orts.Simulation/Simulation/Simulator.cs:940 -#: ../../Orts.Simulation/Simulation/AIs/AITrain.cs:4460 +#: ../../Orts.Simulation/Simulation/Simulator.cs:948 +#: ../../Orts.Simulation/Simulation/AIs/AITrain.cs:4354 #, csharp-format msgid "" "Player train has been included into train {0} service {1}, that automatically " @@ -1238,7 +1267,7 @@ msgid "" msgstr "" #: ../../Orts.Simulation/Simulation/Transfertables.cs:277 -#: ../../Orts.Simulation/Simulation/Turntables.cs:625 +#: ../../Orts.Simulation/Simulation/Turntables.cs:627 msgid "Rotation can't start: check throttle, speed, direction and control mode" msgstr "" @@ -1289,293 +1318,345 @@ msgstr "" msgid "Train rear outside {0}" msgstr "" -#: ../../Orts.Simulation/Simulation/Turntables.cs:644 +#: ../../Orts.Simulation/Simulation/Turntables.cs:649 +msgid "Turntable is at its bound, can't rotate" +msgstr "" + +#: ../../Orts.Simulation/Simulation/Turntables.cs:658 msgid "Train partially on turntable, can't rotate" msgstr "" -#: ../../Orts.Simulation/Simulation/Turntables.cs:656 +#: ../../Orts.Simulation/Simulation/Turntables.cs:670 msgid "Turntable starting rotation with train" msgstr "" -#: ../../Orts.Simulation/Simulation/Turntables.cs:770 -#: ../../Orts.Simulation/Simulation/Turntables.cs:801 +#: ../../Orts.Simulation/Simulation/Turntables.cs:787 +#: ../../Orts.Simulation/Simulation/Turntables.cs:818 msgid "Turntable forward connected" msgstr "" -#: ../../Orts.Simulation/Simulation/Turntables.cs:783 -#: ../../Orts.Simulation/Simulation/Turntables.cs:814 +#: ../../Orts.Simulation/Simulation/Turntables.cs:800 +#: ../../Orts.Simulation/Simulation/Turntables.cs:831 msgid "Turntable backward connected" msgstr "" -#: ../../Orts.Simulation/Simulation/AIs/AITrain.cs:5019 +#: ../../Orts.Simulation/Simulation/AIs/AITrain.cs:4897 #, csharp-format msgid "" "Join success: Train {0} service {1} has been incorporated into train {2} " "service {3}" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:2005 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:2011 msgid "Coupler broken!" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:2008 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:2014 msgid "Coupler overloaded!" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:2437 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:2443 msgid "" "The steam usage has exceeded the capacity of the steam boiler. Steam boiler " "locked out." msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:6896 -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:6901 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:6910 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:6915 msgid "Other train is blocking path" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:7754 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:7768 msgid "Stopped due to errors in route setting" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:8468 -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:9663 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:8482 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:9677 msgid "No signal in train's path" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:8476 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:8490 msgid "Next signal already allocated to other train" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:8537 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:8551 msgid "Request to clear signal cannot be processed" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:8645 -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:9783 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:8659 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:9797 msgid "No switch found" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10137 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10151 msgid "You cannot enter manual mode when autopiloted" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10142 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10156 msgid "You cannot use this command for pathless trains" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10154 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10168 msgid "Train is not back on original route" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10163 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10177 msgid "" "Original route is reverse from present direction, stop train before switching" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10176 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10190 msgid "Cannot change to Manual Mode while in Explorer Mode" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10181 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10195 msgid "" "Cannot change to Manual Mode. Use the Reset Out Of Control Mode command to " "release brakes" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10270 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10284 msgid "Reversal required and rear of train not on required route" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10544 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10558 msgid "Cannot clear signal behind train while in AUTO mode" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10776 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10790 msgid "Out of control mode reset" msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10781 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:10795 msgid "" "You can only reset if you passed a signal at danger or if you passed a " "misaligned switch." msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:16388 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:16400 msgid "Car " msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:16460 -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:16465 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:16472 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:16477 msgid "Locomotive " msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:2385 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:2391 #, csharp-format msgid "Carriage {0} temperature is too cold, the passengers are freezing." msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:2389 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:2395 #, csharp-format msgid "Car {0} temperature is too cold for the freight." msgstr "" -#: ../../Orts.Simulation/Simulation/Physics/Train.cs:11074 +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:11088 #, csharp-format msgid "Train stopped due to problems with other train: train {0} , reason: {1}" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSControlTrailerCar.cs:235 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:930 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:958 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6247 +#. Context: TrainControl +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:306 +msgctxt "TrainControl" +msgid "Auto Signal" +msgstr "" + +#. Context: TrainControl +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:307 +msgctxt "TrainControl" +msgid "Auto Node" +msgstr "" + +#. Context: TrainControl +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:308 +msgctxt "TrainControl" +msgid "Manual" +msgstr "" + +#. Context: TrainControl +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:309 +msgctxt "TrainControl" +msgid "Explorer" +msgstr "" + +#. Context: TrainControl +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:310 +msgctxt "TrainControl" +msgid "Out of Control" +msgstr "" + +#. Context: TrainControl +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:311 +msgctxt "TrainControl" +msgid "Inactive" +msgstr "" + +#. Context: TrainControl +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:312 +msgctxt "TrainControl" +msgid "Turntable" +msgstr "" + +#. Context: TrainControl +#: ../../Orts.Simulation/Simulation/Physics/Train.cs:313 +msgctxt "TrainControl" +msgid "Undefined" +msgstr "" + +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSControlTrailerCar.cs:207 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:949 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:977 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6215 msgid "Gear" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSControlTrailerCar.cs:276 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSControlTrailerCar.cs:308 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSLocomotive.cs:4037 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSLocomotive.cs:4099 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSControlTrailerCar.cs:238 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSControlTrailerCar.cs:269 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSLocomotive.cs:3972 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSLocomotive.cs:4034 msgid "Throttle must be reduced to Idle before gear change can happen." msgstr "" #. Context: Gear -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSControlTrailerCar.cs:236 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:931 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6248 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSControlTrailerCar.cs:208 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:950 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6216 msgctxt "Gear" msgid "N" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:927 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:946 msgid "Engine" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:934 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:349 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:953 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:351 msgid "Battery switch" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:935 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:938 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:944 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:350 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:353 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:359 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6502 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:954 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:957 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:963 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:352 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:355 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:361 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6483 msgid "On" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:935 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:938 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:944 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:350 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:353 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:359 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6502 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:954 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:957 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:963 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:352 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:355 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:361 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6483 msgid "Off" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:943 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:358 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:962 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:360 msgid "Electric train supply" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:958 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:977 msgid "N" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:961 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1213 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:980 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1232 msgid "Fuel" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:970 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:380 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6537 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:989 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:382 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6518 msgid "StHeat:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:971 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:981 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:381 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:391 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6538 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6546 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6933 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6948 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:990 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1000 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:383 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:393 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6519 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6527 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6914 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6929 msgid "Press" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:973 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:383 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6540 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:992 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:385 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6521 msgid "StTemp" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:975 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:385 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6542 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:994 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:387 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6523 msgid "StUse" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:978 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:388 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:997 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:390 msgid "WaterLvl" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:980 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:390 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6545 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:999 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:392 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6526 msgid "Last:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:983 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:393 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6548 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1002 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:395 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6529 msgid "Temp" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:985 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:395 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6550 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1004 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:397 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6531 msgid "OutTemp" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:987 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:397 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6552 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1006 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:399 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6533 msgid "NetHt" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1019 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1063 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1038 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1082 msgid "Setup" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1028 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1047 msgid "(flipped)" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1029 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1134 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1138 -#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2145 -#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2161 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1048 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1153 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1157 +#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2141 +#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2157 msgid "Sync" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1029 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1134 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1138 -#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2145 -#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2161 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1048 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1153 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1157 +#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2141 +#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2157 msgid "Async" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1125 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1226 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:131 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:139 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1144 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1245 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:185 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:194 #: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SingleTransferPipe.cs:75 #: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SingleTransferPipe.cs:79 #: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SingleTransferPipe.cs:97 @@ -1583,111 +1664,120 @@ msgstr "" msgid "BP" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1125 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:141 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1144 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1147 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1246 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:195 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:400 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:447 +msgid "Flow" +msgstr "" + +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1147 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:197 #: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SingleTransferPipe.cs:90 #: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SingleTransferPipe.cs:99 #: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/VacuumSinglePipe.cs:139 msgid "EOT" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1143 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:137 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1162 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:192 #: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/VacuumSinglePipe.cs:129 msgid "EQ" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1143 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1236 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:130 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:138 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/EPBrakeSystem.cs:82 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SMEBrakeSystem.cs:85 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1162 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1256 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:184 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:193 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/EPBrakeSystem.cs:141 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SMEBrakeSystem.cs:101 msgid "BC" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1209 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1223 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1228 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1242 msgid "ID" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1212 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1229 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1234 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1231 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1249 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1254 msgid "Remote" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1214 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1233 msgid "Tractive Effort" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1225 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:405 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:436 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1244 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:398 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:429 msgid "Load" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1235 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1255 msgid "ER" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1237 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1257 msgid "MR" msgstr "" #. Context: PowerSupply -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:947 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:362 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:966 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:364 msgctxt "PowerSupply" msgid "Power" msgstr "" #. Context: Notch -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:999 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1043 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1018 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1062 msgctxt "Notch" msgid "N" msgstr "" #. Context: Notch -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1007 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1015 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1051 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1059 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1026 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1034 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1070 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1078 msgctxt "Notch" msgid "B" msgstr "" #. Context: Notch -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1021 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1065 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1040 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs:1084 msgctxt "Notch" msgid "Idle" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:344 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:346 msgid "Pantographs" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:371 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:373 msgid "TCS" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:371 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:372 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:373 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:374 msgid "OK" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:371 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:372 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:373 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:374 msgid "NOT OK" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:372 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:374 msgid "Driver" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:373 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSElectricLocomotive.cs:375 msgid "Auxiliary power" msgstr "" @@ -1707,7 +1797,7 @@ msgstr "" msgid "Scoop is not over trough, can't refill" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSLocomotive.cs:3272 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSLocomotive.cs:3205 msgid "Sand supply has been exhausted" msgstr "" @@ -1724,947 +1814,947 @@ msgstr "" msgid "Refill: Water supply now replenished." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:2712 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:2705 msgid "Tender coal supply is empty. Your loco will fail." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:2809 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:2800 msgid "Tender water supply is empty. Your loco will fail." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:2935 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:2926 msgid "Fire has dropped too far. Your loco will fail." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:3017 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:3008 msgid "" "FireMass is getting low. Your fireman will shovel faster, but don't wear him " "out." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:3029 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:3020 msgid "FireMass is back within limits. Your fireman will shovel as per normal." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:3502 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:3493 msgid "Grate limit exceeded - boiler heat rate cannot increase." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:3510 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:3501 msgid "Grate limit return to normal." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:5612 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:5577 msgid "Water level dropped too far. Plug has fused and loco has failed." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:5619 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:5584 msgid "Boiler overfull and priming." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:5625 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:5590 msgid "Boiler no longer priming." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6245 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6213 msgid "Fixed gear" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6249 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6217 msgid "Steam usage" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6250 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6218 msgid "Boiler pressure" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6251 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6219 msgid "Boiler water glass" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6251 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6219 msgid "(safe range)" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6255 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6223 msgid "Boiler water level" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6255 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6223 msgid "(absolute)" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6257 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6225 msgid "Fire mass" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6259 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6227 msgid "Fire Heat Loss" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6262 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6230 msgid "Fuel levels" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6262 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6230 msgid "coal" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6262 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6230 msgid "water" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6271 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6247 msgid "Key Inputs" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6273 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6249 msgid "Locomotive Type:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6277 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6253 msgid "Input:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6278 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6254 msgid "Evap" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6279 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6255 msgid "Grate" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6280 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6256 msgid "Boiler" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6281 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6257 msgid "SuperHr" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6282 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6258 msgid "FuelCal" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6290 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6266 msgid "Adj:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6291 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6267 msgid "CylEff" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6293 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6269 msgid "PortOpen" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6297 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6273 msgid "Steam Production" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6302 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6278 msgid "Boiler:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6304 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6280 msgid "Mass" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6305 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6281 msgid "MaxOutp" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6306 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6282 msgid "BoilerEff" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6314 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6290 msgid "Heat:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6315 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6291 msgid "In" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6317 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6964 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6293 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6945 msgid "Out" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6319 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6295 msgid "Rad" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6321 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6297 msgid "Stored" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6323 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6617 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6299 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6598 msgid "Max" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6325 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6495 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6301 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6476 msgid "Safety" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6327 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6303 msgid "Raw" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6332 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6312 msgid "Temp:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6333 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6313 msgid "Flue" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6335 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6658 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6315 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6639 msgid "Water" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6337 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6317 msgid "MaxSupH" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6339 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6319 msgid "CurSupH" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6343 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6324 msgid "Steam Usage" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6351 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6378 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6332 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6359 msgid "Usage:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6352 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6379 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6333 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6360 msgid "Cyl" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6356 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6337 msgid "Comprsr" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6358 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6385 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6339 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6366 msgid "SafetyV" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6360 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6387 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6341 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6368 msgid "CylCock" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6362 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6389 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6343 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6370 msgid "Genertr" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6364 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6391 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6676 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6345 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6372 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6657 msgid "Stoker" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6366 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6393 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6347 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6374 msgid "BlowD" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6368 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6395 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6349 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6376 msgid "MaxSafe" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6383 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6364 msgid "Ejector" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6406 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6387 msgid "CylValve:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6407 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6388 msgid "Travel" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6409 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6427 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6447 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6462 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6482 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6390 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6408 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6428 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6443 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6463 msgid "Cutoff" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6411 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6392 msgid "Lead" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6413 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6394 msgid "ExhLap" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6415 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6396 msgid "StLap" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6417 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6398 msgid "AdvAng" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6426 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6407 msgid "CylEvts:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6429 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6410 msgid "CylExh" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6431 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6412 msgid "CylComp" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6433 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6414 msgid "CyAdmis" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6442 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6423 msgid "PressHP:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6443 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6478 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6424 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6459 msgid "Chest" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6445 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6460 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6480 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6426 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6441 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6461 msgid "Initial" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6449 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6464 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6484 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6430 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6445 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6465 msgid "Rel" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6451 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6466 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6486 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6432 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6447 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6467 msgid "Back" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6453 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6468 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6488 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6434 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6449 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6469 msgid "MEP" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6459 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6440 msgid "PressLP:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6477 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6458 msgid "Press:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6494 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6669 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6475 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6650 msgid "Status:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6496 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:167 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:185 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SingleTransferPipe.cs:141 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/VacuumSinglePipe.cs:162 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/VacuumSinglePipe.cs:181 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6477 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/AirSinglePipe.cs:219 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SingleTransferPipe.cs:142 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/SMEBrakeSystem.cs:95 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/VacuumSinglePipe.cs:163 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/VacuumSinglePipe.cs:183 msgid "Open" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6496 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6477 msgid "Closed" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6497 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6478 msgid "Plug" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6498 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6500 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6671 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6673 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6675 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6677 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6679 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6681 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6479 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6481 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6652 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6654 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6656 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6658 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6660 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6662 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6664 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6666 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6668 #: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6683 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6685 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6687 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6702 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6717 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6747 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6762 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6796 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6814 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6816 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6818 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6820 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6941 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6956 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6969 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6990 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6992 -#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2144 -#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2159 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6698 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6728 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6743 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6777 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6795 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6797 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6799 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6801 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6922 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6937 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6950 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6971 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6973 +#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2140 +#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2155 msgid "Yes" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6498 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6500 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6671 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6673 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6675 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6677 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6679 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6681 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6479 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6481 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6652 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6654 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6656 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6658 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6660 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6662 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6664 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6666 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6668 #: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6683 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6685 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6687 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6702 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6717 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6747 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6762 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6796 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6814 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6816 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6818 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6820 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6941 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6956 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6969 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6990 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6992 -#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2144 -#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2159 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6698 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6728 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6743 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6777 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6795 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6797 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6799 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6801 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6922 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6937 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6950 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6971 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6973 +#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2140 +#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:2155 msgid "No" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6499 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6480 msgid "Prime" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6501 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6482 msgid "Comp" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6556 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6537 msgid "Fireman" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6558 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6539 msgid "Fire:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6559 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6540 msgid "Ideal" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6561 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6542 msgid "Actual" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6563 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6544 msgid "MaxFireR" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6565 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6546 msgid "FeedRate" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6567 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6548 msgid "BurnRate" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6569 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6550 msgid "Combust" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6573 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6680 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6554 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6661 msgid "GrLimit" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6577 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6558 msgid "MaxBurn" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6616 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6597 msgid "Injector:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6618 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6599 msgid "Inj1" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6619 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6600 msgid "Temp1" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6620 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6601 msgid "Inj2" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6621 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6602 msgid "Temp2" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6634 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6654 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6615 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6635 msgid "Tender:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6635 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6655 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6616 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6636 msgid "Coal" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6638 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6619 msgid "Water(C)" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6641 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6622 msgid "Water(T)" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6643 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6624 msgid "Water(A)" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6645 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6661 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6626 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6642 msgid "Steam" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6647 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6663 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6628 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6644 msgid "TotSteam" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6670 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6651 msgid "CoalOut" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6672 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6653 msgid "WaterOut" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6674 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6655 msgid "FireOut" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6678 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6659 msgid "Boost" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6682 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6663 msgid "FireOn" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6684 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6665 msgid "FireOff" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6686 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6667 msgid "AIOR" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6692 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6737 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6673 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6718 msgid "Performance" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6694 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6739 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6675 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6720 msgid "Power:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6695 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6740 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6676 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6721 msgid "MaxInd" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6697 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6742 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6678 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6723 msgid "Ind" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6699 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6744 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6680 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6725 msgid "Drawbar" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6701 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6746 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6682 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6727 msgid "BlrLmt" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6705 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6750 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6686 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6731 msgid "Force:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6706 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6751 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6687 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6732 msgid "TheorTE" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6708 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6753 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6689 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6734 msgid "StartTE" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6710 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6755 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6691 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6736 msgid "TE" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6712 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6757 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6693 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6738 msgid "Draw" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6714 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6759 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6695 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6740 msgid "CritSpeed" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6716 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6761 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6697 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6742 msgid "SpdLmt" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6720 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6765 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6701 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6746 msgid "Move:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6721 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6766 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6702 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6747 msgid "Piston" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6723 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6768 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6704 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6749 msgid "DrvWhl" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6725 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6770 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6706 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6751 msgid "MF-Gear" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6730 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6775 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6711 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6756 msgid "Max-SpdF" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6784 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6765 msgid "Slip Monitor" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6786 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6767 msgid "Slip:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6787 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6768 msgid "MForceN" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6789 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6878 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6892 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6770 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6859 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6873 msgid "Tang(t)" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6791 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6880 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6894 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6772 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6861 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6875 msgid "Static" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6793 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6774 msgid "Coeff" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6795 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6776 msgid "Slip" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6797 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6778 msgid "WheelM" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6799 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6780 msgid "FoA" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6803 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6784 msgid "Sand:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6804 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6785 msgid "S/Use" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6806 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6787 msgid "S/Box" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6808 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6789 msgid "M/Press" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6812 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6793 msgid "CylE:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6813 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6794 msgid "#1" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6815 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6796 msgid "#2" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6817 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6798 msgid "#3" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6819 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6800 msgid "#4" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6869 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6850 msgid "Slip Debug" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6871 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6852 msgid "Start:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6872 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6886 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6853 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6867 msgid "CyPressL" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6874 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6888 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6855 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6869 msgid "CyPressR" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6876 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6890 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6857 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6871 msgid "Tang(c)" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6885 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6866 msgid "Speed:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6899 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6880 msgid "Wheel:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6900 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6881 msgid "TangSp" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6910 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6891 msgid "Sound Variables" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6912 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6893 msgid "V1:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6914 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6895 msgid "V2:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6916 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6897 msgid "V3:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6927 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6908 msgid "Ejector / Vacuum Pump" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6932 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6913 msgid "Large:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6935 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6950 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6916 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6931 msgid "StCons" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6938 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6953 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6966 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6919 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6934 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6947 msgid "Rate" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6940 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6921 msgid "Lg Ej" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6947 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6928 msgid "Small:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6955 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6936 msgid "Sm Ej" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6963 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6944 msgid "Vac:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6968 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6949 msgid "Pump" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6974 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6955 msgid "Leak:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6976 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6957 msgid "Net:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6988 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6969 msgid "Fill:" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6989 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6970 msgid "ScDwn" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6991 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6972 msgid "ScBrk" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6993 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6974 msgid "Min" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6995 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6976 msgid "WaVel" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6997 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6978 msgid "Drag" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6999 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6980 msgid "WaterU" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:7001 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6982 msgid "Input" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:7003 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6984 msgid "Total" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:7117 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:7195 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:7098 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:7176 msgid "Gears can't be changed unless throttle is at zero." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:7855 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:7900 msgid "AI Fireman has started adding fuel to fire" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:7862 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:7907 msgid "AI Fireman has stopped adding fuel to fire" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:7869 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:7914 msgid "AI Fireman has been reset" msgstr "" #. Context: HUD -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6303 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:404 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:423 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:431 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs:6279 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:397 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:416 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:424 msgctxt "HUD" msgid "Power" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:1978 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:2113 msgid "Starting unload" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:3992 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4103 msgid "Incompatible data" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4007 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4118 msgid "Starting refill" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4016 -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4063 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4127 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4174 msgid "Preparing for unload" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4036 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4147 msgid "Container station busy with preceding mission" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4043 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4154 msgid "No containers to load" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4047 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4158 msgid "Starting load" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4057 +#: ../../Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs:4168 msgid "Container station full, can't unload" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:1939 +#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:1919 msgid "" "You were travelling too fast for this curve, and have snapped a brake hose on " "Car " msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:1627 +#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:1607 #, csharp-format msgid "Car {0} has derailed on the curve." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:1901 +#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:1881 #, csharp-format msgid "" "You are travelling too fast for this curve. Slow down, your freight car {0} " "may be damaged. The recommended speed for this curve is {1}" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:1905 +#: ../../Orts.Simulation/Simulation/RollingStocks/TrainCar.cs:1885 #, csharp-format msgid "" "You are travelling too fast for this curve. Slow down, your passengers in car " @@ -2717,8 +2807,32 @@ msgstr "" msgid "Selected speed changed to {0}" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/ManualBraking.cs:233 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/ManualBraking.cs:240 +#. Context: Door +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Door.cs:28 +msgctxt "Door" +msgid "Closed" +msgstr "" + +#. Context: Door +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Door.cs:29 +msgctxt "Door" +msgid "Closing" +msgstr "" + +#. Context: Door +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Door.cs:30 +msgctxt "Door" +msgid "Opening" +msgstr "" + +#. Context: Door +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Door.cs:31 +msgctxt "Door" +msgid "Open" +msgstr "" + +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/ManualBraking.cs:241 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/Brakes/MSTS/ManualBraking.cs:248 msgid "Manual Brake" msgstr "" @@ -2731,93 +2845,88 @@ msgstr "" msgid "Lead BP" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/CircuitBreaker.cs:384 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/CircuitBreaker.cs:382 msgid "Circuit breaker closing not authorized" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:403 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:417 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:396 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:410 msgid "Status" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:406 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:399 msgid "RPM" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:407 -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:454 -msgid "Flow" -msgstr "" - -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:408 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:401 msgid "Temperature" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:409 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:402 msgid "Oil Pressure" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:423 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:416 msgid " " msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:462 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:455 msgid "Oil" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:1271 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:1216 msgid "Diesel Engine has stalled due to underspeed." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:1290 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs:1235 msgid "Diesel Engine has stalled due to overspeed." msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/Pantograph.cs:370 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/Pantograph.cs:371 msgid "Pantograph raised even though this route is not electrified" msgstr "" -#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/TractionCutOffRelay.cs:382 +#: ../../Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/TractionCutOffRelay.cs:380 msgid "Traction cut-off relay closing not authorized" msgstr "" -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10409 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10202 msgid "Held for connecting train : " msgstr "" -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10417 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10210 msgid "Waiting for train to attach : " msgstr "" -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10433 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10226 msgid "Waiting for transfer with train : " msgstr "" -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10448 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10241 msgid "Waiting for train to arrive : " msgstr "" -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10503 -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10534 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10296 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10327 msgid ", backward" msgstr "" -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10518 -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10534 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10311 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10327 msgid ", forward" msgstr "" -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10527 -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10535 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10320 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10328 msgid "Train is ready to attach to : " msgstr "" -#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10590 +#: ../../Orts.Simulation/Simulation/Timetables/TTTrain.cs:10372 msgid "Passenger detraining completed. Train terminated." msgstr "" -#: ../../Orts.Simulation/Simulation/Timetables/TTTurntable.cs:1788 -#: ../../Orts.Simulation/Simulation/Timetables/TTTurntable.cs:1829 +#: ../../Orts.Simulation/Simulation/Timetables/TTTurntable.cs:1934 +#: ../../Orts.Simulation/Simulation/Timetables/TTTurntable.cs:1983 #, csharp-format msgid "Turntable is ready for access - allowed speed set to {0}" msgstr "" diff --git a/Source/Locales/RunActivity/RunActivity.pot b/Source/Locales/RunActivity/RunActivity.pot index bda2904703..d77d48c7d8 100644 --- a/Source/Locales/RunActivity/RunActivity.pot +++ b/Source/Locales/RunActivity/RunActivity.pot @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-05-06 08:50:25+0300\n" -"PO-Revision-Date: 2023-05-06 08:50:29+0300\n" +"POT-Creation-Date: 2023-12-03 15:16:57+0100\n" +"PO-Revision-Date: 2023-12-03 15:16:58+0100\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,53 +15,53 @@ msgstr "" msgid "Free" msgstr "" -#: ../../RunActivity/Viewer3D/Cameras.cs:999 +#: ../../RunActivity/Viewer3D/Cameras.cs:1000 msgid "Outside Front" msgstr "" -#: ../../RunActivity/Viewer3D/Cameras.cs:999 +#: ../../RunActivity/Viewer3D/Cameras.cs:1000 msgid "Outside Rear" msgstr "" -#: ../../RunActivity/Viewer3D/Cameras.cs:1517 +#: ../../RunActivity/Viewer3D/Cameras.cs:1518 msgid "Brakeman" msgstr "" -#: ../../RunActivity/Viewer3D/Cameras.cs:1767 +#: ../../RunActivity/Viewer3D/Cameras.cs:1774 msgid "Passenger" msgstr "" -#: ../../RunActivity/Viewer3D/Cameras.cs:1843 +#: ../../RunActivity/Viewer3D/Cameras.cs:1844 msgid "3D Cab" msgstr "" -#: ../../RunActivity/Viewer3D/Cameras.cs:1940 +#: ../../RunActivity/Viewer3D/Cameras.cs:1955 msgid "Head out" msgstr "" -#: ../../RunActivity/Viewer3D/Cameras.cs:1985 +#: ../../RunActivity/Viewer3D/Cameras.cs:2000 msgid "Cab" msgstr "" -#: ../../RunActivity/Viewer3D/Cameras.cs:2238 +#: ../../RunActivity/Viewer3D/Cameras.cs:2253 msgid "Trackside" msgstr "" -#: ../../RunActivity/Viewer3D/Materials.cs:224 +#: ../../RunActivity/Viewer3D/Materials.cs:230 #, csharp-format msgid "{0:F0} texture" msgid_plural "{0:F0} textures" msgstr[0] "" msgstr[1] "" -#: ../../RunActivity/Viewer3D/Materials.cs:461 +#: ../../RunActivity/Viewer3D/Materials.cs:468 #, csharp-format msgid "{0:F0} material" msgid_plural "{0:F0} materials" msgstr[0] "" msgstr[1] "" -#: ../../RunActivity/Viewer3D/Shapes.cs:113 +#: ../../RunActivity/Viewer3D/Shapes.cs:119 #, csharp-format msgid "{0:F0} shape" msgid_plural "{0:F0} shapes" @@ -75,402 +75,473 @@ msgid_plural "{0:F0} tiles" msgstr[0] "" msgstr[1] "" -#: ../../RunActivity/Viewer3D/Viewer.cs:829 -#: ../../RunActivity/Viewer3D/Viewer.cs:1017 +#: ../../RunActivity/Viewer3D/Viewer.cs:831 +#: ../../RunActivity/Viewer3D/Viewer.cs:1026 msgid "Cab view not available" msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:914 +#: ../../RunActivity/Viewer3D/Viewer.cs:923 msgid "In MP, use Alt-F4 to quit directly" msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:946 +#: ../../RunActivity/Viewer3D/Viewer.cs:955 msgid "Automatic platform and siding labels visible." msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:949 +#: ../../RunActivity/Viewer3D/Viewer.cs:958 msgid "Platform and siding labels visible." msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:952 +#: ../../RunActivity/Viewer3D/Viewer.cs:961 msgid "Platform labels visible." msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:955 +#: ../../RunActivity/Viewer3D/Viewer.cs:964 msgid "Siding labels visible." msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:961 +#: ../../RunActivity/Viewer3D/Viewer.cs:970 msgid "Platform and siding labels hidden." msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:972 +#: ../../RunActivity/Viewer3D/Viewer.cs:981 msgid "Train labels visible." msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:975 +#: ../../RunActivity/Viewer3D/Viewer.cs:984 msgid "Car labels visible." msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:981 +#: ../../RunActivity/Viewer3D/Viewer.cs:990 msgid "Train and car labels hidden." msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:1024 +#: ../../RunActivity/Viewer3D/Viewer.cs:1033 msgid "This car doesn't have a 2D cab" msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:1028 +#: ../../RunActivity/Viewer3D/Viewer.cs:1037 msgid "This car doesn't have a 3D cab" msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:1073 +#: ../../RunActivity/Viewer3D/Viewer.cs:1082 msgid "messages suppressed" msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:1077 +#: ../../RunActivity/Viewer3D/Viewer.cs:1086 msgid "All messages visible" msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:1229 +#: ../../RunActivity/Viewer3D/Viewer.cs:1242 msgid "Switched to player control" msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:1236 +#: ../../RunActivity/Viewer3D/Viewer.cs:1249 msgid "You can't switch from manual to autopilot mode" msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:1242 +#: ../../RunActivity/Viewer3D/Viewer.cs:1255 msgid "Switched to autopilot" msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:1916 +#: ../../RunActivity/Viewer3D/Viewer.cs:1927 msgid "Game saved" msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:348 +#: ../../RunActivity/Viewer3D/Viewer.cs:346 #, csharp-format msgid "Allowed speed raised to {0}" msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:1050 +#: ../../RunActivity/Viewer3D/Viewer.cs:1059 #, csharp-format msgid "Vibrating at level {0}" msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:1260 +#: ../../RunActivity/Viewer3D/Viewer.cs:1273 #, csharp-format msgid "Keyboard map list saved to '{0}'." msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:1264 +#: ../../RunActivity/Viewer3D/Viewer.cs:1277 #, csharp-format msgid "Keyboard map image saved to '{0}'." msgstr "" -#: ../../RunActivity/Viewer3D/Viewer.cs:1116 +#: ../../RunActivity/Viewer3D/Viewer.cs:1125 #, csharp-format msgid "{0} viewpoint stored. Use Shift+8 to restore viewpoints." msgid_plural "{0} viewpoints stored. Use Shift+8 to restore viewpoints." msgstr[0] "" msgstr[1] "" -#: ../../RunActivity/Viewer3D/Weather.cs:145 +#: ../../RunActivity/Viewer3D/Weather.cs:143 msgid "" "Restoring wrong weather type : trying to restore dynamic weather but save " "contains user controlled weather" msgstr "" -#: ../../RunActivity/Viewer3D/Weather.cs:1642 +#: ../../RunActivity/Viewer3D/Weather.cs:1632 msgid "" "Restoring wrong weather type : trying to restore user controlled weather but " "save contains dynamic weather" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.cs:1918 -msgid "Switching Request Sent to the Server" +#: ../../RunActivity/Viewer3D/Weather.cs:492 +#, csharp-format +msgid "Increased daylight offset to {0} h" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.cs:555 -msgid "MSG to Server" +#: ../../RunActivity/Viewer3D/Weather.cs:497 +#, csharp-format +msgid "Decreased daylight offset to {0} h" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.cs:559 -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:256 -msgid "MSG to All" +#: ../../RunActivity/Viewer3D/Debugging/MessageViewer.Designer.cs:46 +msgid "Clear All" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:121 -msgid "View Train" +#: ../../RunActivity/Viewer3D/Debugging/MessageViewer.Designer.cs:57 +msgid "Reply Selected" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:164 -msgid "m" +#: ../../RunActivity/Viewer3D/Debugging/MessageViewer.Designer.cs:88 +msgid "Compose MSG" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:185 -msgid "Remove" +#: ../../RunActivity/Viewer3D/Debugging/MessageViewer.Designer.cs:102 +msgid "MessageViewer" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:199 -msgid "Auto Switch" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.cs:180 +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.cs:213 +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.cs:214 +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.cs:215 +msgid "-" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:213 -msgid "Show Avatars" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.cs:212 +msgid "0" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:241 -msgid "MSG to Selected" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:149 +msgid "Active sounds" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:270 -#: ../../RunActivity/Viewer3D/Debugging/MessageViewer.Designer.cs:88 -msgid "Compose MSG" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:160 +msgid "Inactive sounds" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:282 -msgid "Res" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:192 +msgid "Sound cache" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:295 -msgid "Reply to Selected" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:204 +msgid "Selected sound" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:309 -msgid "Draw Path" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:216 +msgid "3D" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:356 -msgid "Pick Signals" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:284 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:433 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:631 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1208 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:148 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:673 +#: ../../RunActivity/Viewer3D/WebServices/TrackMonitorDisplay.cs:291 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:110 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:231 +msgid "Speed" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:369 -msgid "Pick Switches" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:312 +msgid "Variable 2" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:382 -msgid "Can Join" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:331 +msgid "Variable 3" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:405 -msgid "Assist" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:341 +msgid "Variable 1" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:417 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1226 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1275 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1341 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:719 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:767 -msgid "Normal" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:351 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1214 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1216 +#: ../../RunActivity/Viewer3D/Popups/NextStationWindow.cs:78 +msgid "Distance" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:429 -msgid "Follow" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:361 +msgid "Volume" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:443 -msgid "Penalty" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:429 +msgid "WavCache" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:457 -msgid "Prefer Green" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:484 +msgid "AL Sources" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:470 -msgid "See in Game" +#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:513 +msgid "Sound Debug" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:482 -msgid "Simulation Time" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:171 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:814 +msgid "Message the selected player" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:493 -msgid "SimulationTime" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:172 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:822 +msgid "Reply to the selected player" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:505 -msgid "Show:" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:174 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:842 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:540 +msgid "Player" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:517 -msgid "Platform labels" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:175 +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:1737 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:849 +msgid "Make this player an assistant" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:530 -msgid "Siding labels" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:176 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:856 +msgid "Jump to this player in game" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:543 -msgid "Signals" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:177 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:863 +msgid "Follow on the map" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:556 -msgid "Signal state" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:178 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:870 +msgid "Kick from multiplayer session" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:572 -msgid "Train labels" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:180 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:888 +msgid "Set switch to..." msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:583 -msgid "Key" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:181 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:897 +msgid "Main route" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:597 -msgid "Active only" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:182 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:905 +msgid "Side route" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:608 -msgid "All" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:184 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:927 +msgid "Set signal aspect to..." msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:643 -msgid "Daylight offset (hrs)" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:185 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:934 +msgid "System controlled" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:659 -msgid "Background color" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:186 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:943 +msgid "Stop" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:673 -msgid "Switches" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:187 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:951 +msgid "Approach" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:685 -msgid "To pan, drag with left mouse." +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:188 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:960 +msgid "Proceed" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:699 -msgid "Name" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:190 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:989 +msgid "Jump to this train in game" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:722 -msgid "Dispatch" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:191 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:996 +msgid "Follow this train on the map" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:733 -#: ../../RunActivity/Viewer3D/Popups/HelpWindow.cs:117 -msgid "Timetable" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:325 +msgid "You" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:745 -msgid "State" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:332 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:518 +#: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:345 +msgid "Helper" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:757 -msgid "To zoom, drag with left and right mouse or scroll mouse wheel." +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:338 +msgid "Disconnected" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:768 -msgid "To zoom in to a location, press Shift and click the left mouse." +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:1512 +msgid "Switching Request Sent to the Server" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:779 -msgid "To zoom out of a location, press Alt and click the left mouse." +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:1737 +msgid "Demote this player" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:793 -msgid "Platforms" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:160 +msgid "Learn more" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:852 -msgid "Map Window" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:172 +msgid "You are the dispatcher in this multiplayer session" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/MessageViewer.Designer.cs:46 -msgid "Clear All" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:262 +msgid "Message all players" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/MessageViewer.Designer.cs:57 -msgid "Reply Selected" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:276 +msgid ">" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/MessageViewer.Designer.cs:102 -msgid "MessageViewer" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:298 +msgid "Messages:" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.cs:180 -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.cs:213 -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.cs:214 -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.cs:215 -msgid "-" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:325 +msgid "Simulation time" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.cs:212 -msgid "0" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:338 +msgid "Map customization" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:149 -msgid "Active sounds" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:373 +msgid "All trains" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:160 -msgid "Inactive sounds" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:385 +msgid "Only active trains" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:192 -msgid "Sound cache" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:395 +msgid "Train state" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:204 -msgid "Selected sound" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:405 +msgid "Train labels" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:216 -msgid "3D" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:415 +msgid "Signal state" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:284 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:431 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:629 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1193 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:148 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:671 -#: ../../RunActivity/Viewer3D/WebServices/TrackMonitorDisplay.cs:291 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:110 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:231 -msgid "Speed" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:425 +msgid "Signals" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:312 -msgid "Variable 2" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:435 +msgid "Switches" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:331 -msgid "Variable 3" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:445 +msgid "Siding labels" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:341 -msgid "Variable 1" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:455 +msgid "Platform labels" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:351 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1199 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1201 -#: ../../RunActivity/Viewer3D/Popups/NextStationWindow.cs:78 -msgid "Distance" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:465 +msgid "Platforms" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:361 -msgid "Volume" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:476 +msgid "Map features" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:429 -msgid "WavCache" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:485 +msgid "Rotate between themes" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:484 -msgid "AL Sources" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:498 +msgid "Show simulation time" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:513 -msgid "Sound Debug" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:508 +msgid "Use anti-aliasing" msgstr "" -#: ../../RunActivity/Viewer3D/Debugging/TimetableWindow.cs:88 -msgid "View Self" +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:573 +msgid "Multiplayer settings" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:584 +msgid "Penalty for speeding && SPAD" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:597 +msgid "Prefer green signals" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:610 +msgid "Allow new players to join" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:640 +msgid "Map settings and controls" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:649 +msgid "Follow my train on the map" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:660 +msgid "Jump to my train on the map" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:671 +msgid "Jump to my train in game" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:682 +msgid "Map resolution (m):" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:723 +msgid "Allow throwing switches" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:735 +msgid "Allow changing signals" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:747 +msgid "Draw next path section" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:774 +msgid "Players" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:973 +msgid "Allow call on" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:1006 +msgid "Map window" msgstr "" #: ../../RunActivity/Viewer3D/Popups/ActivityWindow.cs:45 @@ -542,135 +613,188 @@ msgstr "" msgid "Train: {0}" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:41 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:42 msgid "Car Operation Menu" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:51 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:66 msgid "Car ID" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:54 -msgid "Toggle Handbrake" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:73 +msgid "Unset Handbrake" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:56 -msgid "Toggle Power" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:75 +msgid "Set Handbrake" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:58 -msgid "Toggle MU Connection" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:82 +msgid "Power Off" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:60 -msgid "Toggle Battery Switch" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:84 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:86 +msgid "Power On" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:62 -msgid "Toggle Electric Train Supply Connection" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:91 +msgid "Disconnect MU Connection" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:64 -msgid "Toggle Brake Hose Connection" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:93 +msgid "Connect MU Connection" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:66 -msgid "Open/Close Front Angle Cock" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:98 +msgid "Battery Switch Off" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:100 +msgid "Battery Switch On" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:105 +msgid "Disonnect Electric Train Supply" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:107 +msgid "Connect Electric Train Supply" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:113 +msgid "Disconnect Front Brake Hose" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:115 +msgid "Connect Front Brake Hose" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:122 +msgid "Disconnect Rear Brake Hose" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:124 +msgid "Connect Rear Brake Hose" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:68 -msgid "Open/Close Rear Angle Cock" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:131 +msgid "Close Front Angle Cock" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:70 -msgid "Open/Close Bleed Off Valve" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:133 +msgid "Open Front Angle Cock" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:72 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:140 +msgid "Close Rear Angle Cock" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:142 +msgid "Open Rear Angle Cock" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:149 +msgid "Close Bleed Off Valve" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:151 +msgid "Open Bleed Off Valve" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:156 msgid "Close window" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:106 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:235 msgid "Handbrake set" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:108 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:237 msgid "Handbrake off" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:120 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:249 msgid "Power OFF command sent" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:122 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:251 msgid "Power ON command sent" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:125 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:254 msgid "No power command for this type of car!" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:138 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:267 msgid "MU signal connected" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:140 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:269 msgid "MU signal disconnected" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:143 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:272 msgid "No MU command for this type of car!" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:153 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:282 msgid "Switch off battery command sent" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:155 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:284 msgid "Switch on battery command sent" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:167 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:296 msgid "Front ETS cable connected" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:169 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:298 msgid "Front ETS cable disconnected" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:173 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:302 msgid "This car doesn't have an ETS system" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:181 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:310 msgid "Front brake hose connected" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:183 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:312 msgid "Front brake hose disconnected" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:190 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:319 +msgid "Rear brake hose connected" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:321 +msgid "Rear brake hose disconnected" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:328 msgid "Front angle cock opened" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:192 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:330 msgid "Front angle cock closed" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:199 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:337 msgid "Rear angle cock opened" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:201 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:339 msgid "Rear angle cock closed" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:211 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:349 msgid "Bleed off valve opened" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:213 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:351 msgid "Bleed off valve closed" msgstr "" @@ -727,6 +851,10 @@ msgstr "" msgid "Briefing" msgstr "" +#: ../../RunActivity/Viewer3D/Popups/HelpWindow.cs:117 +msgid "Timetable" +msgstr "" + #: ../../RunActivity/Viewer3D/Popups/HelpWindow.cs:122 #: ../../RunActivity/Viewer3D/Popups/HelpWindow.cs:408 #: ../../RunActivity/Viewer3D/Popups/NextStationWindow.cs:77 @@ -838,8 +966,8 @@ msgid "- Missed station stops: " msgstr "" #: ../../RunActivity/Viewer3D/Popups/HelpWindow.cs:416 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:980 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1137 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:986 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1152 msgid " " msgstr "" @@ -918,10 +1046,10 @@ msgid_plural "{0} minutes" msgstr[0] "" msgstr[1] "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:106 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:434 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:615 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:628 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:108 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:436 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:617 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:630 #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:146 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:151 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:85 @@ -929,108 +1057,108 @@ msgstr[1] "" msgid "Throttle" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:107 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:109 msgid "Power In/Out" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:111 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:113 msgid "Motive force" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:113 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:115 msgid "Num of substeps" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:116 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1347 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:118 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1362 msgid "Memory" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:117 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:119 msgid "GCs" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:118 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:120 msgid "Frame time" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:119 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1361 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:121 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1376 msgid "Render process" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:120 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1362 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:122 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1377 msgid "Updater process" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:121 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1363 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:123 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1378 msgid "Loader process" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:122 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1364 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:124 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1379 msgid "Sound process" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:420 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:422 msgid "Version" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:424 #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:426 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:428 #: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:158 #: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:164 #: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:332 #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:147 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:152 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:648 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:650 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:86 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:113 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:208 msgid "Time" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:429 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:431 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:144 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:655 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:657 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:106 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:215 msgid "Replay" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:432 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1132 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:434 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1147 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:136 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:689 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:691 #: ../../RunActivity/Viewer3D/WebServices/TrackMonitorDisplay.cs:322 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:100 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:249 msgid "Gradient" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:433 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:613 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:625 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:435 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:615 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:627 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:125 #: ../../RunActivity/Viewer3D/WebServices/TrackMonitorDisplay.cs:332 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:90 msgid "Direction" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:434 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:615 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:436 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:617 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:143 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:105 msgid "Regulator" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:438 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:440 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:154 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:826 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:883 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:917 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:828 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:904 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:938 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:115 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:384 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:429 @@ -1038,274 +1166,265 @@ msgstr "" msgid "Train brake" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:440 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:442 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:145 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:934 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:955 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:107 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:480 msgid "Retainers" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:442 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:444 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:130 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:943 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:958 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:964 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:979 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:94 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:489 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:504 msgid "Engine brake" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:444 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:446 msgid "Brakemen brake" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:446 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:616 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:448 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:618 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:128 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:969 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:978 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:990 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:999 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:92 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:515 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:523 msgid "Dynamic brake" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:462 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:464 msgid "Cruise control status" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:465 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:467 msgid "Speed target" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:466 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:468 msgid "Max acceleration" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:470 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:472 msgid "Multiple Units" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:472 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1147 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:474 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1168 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:640 msgid "FPS" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:476 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:478 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:117 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1157 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1178 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:83 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:650 msgid "Autopilot" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:479 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1078 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:481 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1083 msgid "Wheel slip" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:481 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:483 msgid "Wheel slip warning" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:484 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:486 msgid "Wheel skid" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:490 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:492 msgid "Sander blocked" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:492 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:494 msgid "Sander on" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:503 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1358 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:505 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1379 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:783 msgid "Left" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:505 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1360 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:507 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1381 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:785 msgid "Right" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:508 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:510 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:127 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1364 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1378 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1385 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1399 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:91 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:789 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:803 msgid "Doors open" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:514 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:516 msgid "MultiPlayerStatus: " msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:515 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:517 #: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:344 msgid "Dispatcher" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:516 -#: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:345 -msgid "Helper" -msgstr "" - -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:517 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:519 #: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:346 msgid "Client" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:526 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:528 msgid "CONSIST INFORMATION" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:538 -msgid "Player" -msgstr "" - -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:539 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:541 msgid "Tilted" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:540 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:562 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:683 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:918 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:938 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:969 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1000 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1030 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:542 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:564 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:685 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:924 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:944 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:975 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1006 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1036 msgid "Type" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:541 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:563 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:543 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:565 msgid "Length" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:542 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:564 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:544 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:566 msgid "Weight" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:543 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:545 msgid "Tonnage" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:544 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:546 msgid "Control Mode" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:545 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:547 msgid "Out of Control" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:546 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:548 msgid "Cab Aspect" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:549 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:572 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1164 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1343 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:551 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:574 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1179 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1358 #: ../../RunActivity/Viewer3D/RollingStock/SubSystems/ETCS/DataEntry.cs:460 #: ../../RunActivity/Viewer3D/RollingStock/SubSystems/ETCS/DataEntry.cs:485 msgid "Yes" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:549 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:572 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1164 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1343 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:551 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:574 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1179 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1358 msgid "No" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:550 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:573 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:552 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:575 msgid "Freight" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:550 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:573 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:552 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:575 msgid "Pass" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:560 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:917 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:937 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:968 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:999 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1029 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1119 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:562 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:923 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:943 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:974 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1005 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1035 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1134 msgid "Car" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:561 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:626 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1166 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:563 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:628 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1181 msgid "Flipped" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:565 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:567 msgid "Drv/Cabs" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:566 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:568 msgid "Wheels" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:567 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:569 msgid "Temp" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:607 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:609 msgid "LOCOMOTIVE INFORMATION" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:620 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:804 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:813 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:622 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:806 #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:815 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:819 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:828 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:817 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:821 #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:830 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:838 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:832 #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:840 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:875 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:905 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:842 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:877 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:909 msgid "off" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:621 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:802 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:811 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:826 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:836 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:863 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:871 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:623 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:804 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:813 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:828 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:838 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:865 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:873 msgid "PlayerLoco" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:624 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:892 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:899 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:626 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:896 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:903 msgid "Loco" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:627 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:629 msgid "MU'd" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:631 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:695 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:633 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:697 #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:140 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:142 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:79 @@ -1313,586 +1432,596 @@ msgstr "" msgid "Power" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:632 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:634 msgid "Force" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:642 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:644 msgid "DISTRIBUTED POWER INFORMATION" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:676 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:678 msgid "POWER SUPPLY INFORMATION" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:682 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:684 msgid "Wagon" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:688 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:690 msgid "MainPS" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:689 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:691 msgid "AuxPS" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:690 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:692 msgid "Battery" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:691 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:693 msgid "LowVoltPS" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:692 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:694 msgid "CabPS" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:693 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:695 msgid "ETS" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:694 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:696 msgid "ETSCable" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:721 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:734 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:749 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:758 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:723 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:736 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:751 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:760 msgid "connected" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:721 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:734 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:749 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:758 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:723 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:736 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:751 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:760 msgid "disconnected" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:786 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:788 msgid "BRAKE INFORMATION" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:803 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:805 msgid "Exhauster" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:804 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:813 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:806 #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:815 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:819 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:828 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:817 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:821 #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:830 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:838 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:832 #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:840 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:875 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:905 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:842 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:877 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:909 msgid "on" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:812 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:827 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:837 -msgid "Large Ejector" -msgstr "" - #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:814 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:829 #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:839 -msgid "Small Ejector" +msgid "Large Ejector" msgstr "" #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:816 #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:841 -msgid "Pressure" +msgid "Small Ejector" msgstr "" #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:818 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:829 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:843 +msgid "Pressure" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:820 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:831 msgid "Vacuum Pump" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:847 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:849 msgid "Brake Sys Vol" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:848 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:850 msgid "Train Pipe" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:850 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:852 msgid "Brake Cyl" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:852 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:854 msgid "Air Vol" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:864 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:866 msgid "No compressor or reservoir fitted" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:872 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:902 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:874 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:906 msgid "Main reservoir" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:874 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:904 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:876 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:908 msgid "Compressor" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:919 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:939 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1001 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1031 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:878 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:910 +#: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:135 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:846 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:848 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:870 +#: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:74 +msgid "Flow" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:925 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:945 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1007 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1037 msgid "BrkCyl" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:920 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:940 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1032 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:926 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:946 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1038 msgid "BrkPipe" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:928 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:948 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:979 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1010 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1040 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:934 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:954 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:985 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1016 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1046 msgid "Handbrk" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:929 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:949 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1011 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1041 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:935 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:955 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1017 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1047 msgid "Conn" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:930 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:950 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1012 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1042 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:936 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:956 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1018 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1048 msgid "AnglCock" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:941 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:947 msgid "VacRes" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:970 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:976 msgid "Brk" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1002 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1008 msgid "SrvPipe" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1003 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1033 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1009 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1039 msgid "AuxRes" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1004 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1034 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1010 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1040 msgid "ErgRes" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1005 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1011 msgid "StrPipe" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1006 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1036 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1012 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1042 msgid "CtrlRes" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1007 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1037 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1013 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1043 msgid "RetValve" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1008 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1038 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1014 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1044 msgid "TripleValve" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1013 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1043 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1019 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1049 msgid "BleedOff" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1035 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1041 msgid "MRPipe" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1061 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1067 msgid "FORCE INFORMATION" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1077 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1081 msgid "(Advanced adhesion model)" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1079 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1084 msgid "Conditions" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1080 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1085 msgid "Axle drive force" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1082 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1086 msgid "Axle brake force" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1083 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1087 msgid "Number of substeps" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1084 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1102 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1088 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1117 msgid "Axle out force" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1087 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1089 msgid "Comp Axle out force" msgstr "" #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1090 -msgid "Wheel Speed" +msgid "Wheel speed" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1094 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1109 msgid "Wheel ang. pos." msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1095 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1103 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1110 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1118 msgid "Loco Adhesion" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1096 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1104 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1111 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1119 msgid "Wagon Adhesion" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1101 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1116 msgid "(Simple adhesion model)" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1110 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1125 msgid "Wind Speed:" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1111 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1126 msgid "Wind Direction:" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1112 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1127 msgid "Train Direction:" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1113 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1128 msgid "ResWind:" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1114 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1129 msgid "ResSpeed:" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1120 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1135 msgid "Total" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1121 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1136 msgid "Motive" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1122 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1137 msgid "Brake" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1123 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1138 msgid "Friction" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1124 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1139 msgid "Gravity" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1125 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1133 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1140 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1148 msgid "Curve" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1126 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1141 msgid "Tunnel" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1127 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1334 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1142 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1349 msgid "Wind" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1128 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1129 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1143 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1144 msgid "Coupler" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1130 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1145 msgid "Slack" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1131 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1146 msgid "Mass" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1134 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1149 msgid "Brk Frict." msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1135 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1150 msgid "Brk Slide" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1136 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1151 msgid "Bear Temp" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1138 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1153 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:126 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1317 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1325 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1340 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1338 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1346 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1361 msgid "DerailCoeff" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1188 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1203 msgid "DISPATCHER INFORMATION : active trains : " msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1191 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1206 msgid "Train" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1192 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1207 msgid "Travelled" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1194 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1209 msgid "Max" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1195 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1210 msgid "AI mode" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1196 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1211 msgid "AI data" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1197 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1212 msgid "Mode" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1198 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1213 msgid "Auth" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1200 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1215 msgid "Signal" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1202 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1217 msgid "Consist" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1203 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1218 msgid "Path" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1328 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1343 msgid "WEATHER INFORMATION" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1330 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1345 msgid "Visibility" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1331 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1346 msgid "Cloud cover" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1332 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1347 msgid "Intensity" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1333 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1348 msgid "Liquidity" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1335 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1350 msgid "Amb Temp" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1341 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1356 msgid "DEBUG INFORMATION" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1343 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1358 msgid "Logging enabled" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1344 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1359 msgid "Build" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1345 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1360 msgid "CPU" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1346 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1361 msgid "GPU" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1348 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1363 msgid "CPU Memory" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1349 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1364 msgid "GPU Memory" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1350 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1365 msgid "Adapter" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1355 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1370 msgid "Shadow maps" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1357 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1372 msgid "Shadow primitives" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1360 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1375 msgid "Render primitives" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1361 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1362 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1363 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1364 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1365 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1376 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1377 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1378 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1379 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1380 msgid "wait" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1365 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1380 msgid "Total process" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1366 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1381 msgid "Camera" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1110 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1114 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1125 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1129 #, csharp-format msgid "{0:N2} mph" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1111 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1112 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1113 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1126 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1127 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1128 #, csharp-format msgid "{0:N2} Deg" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1330 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1345 #, csharp-format msgid "{0:N0} m" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1331 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1333 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1346 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1348 #, csharp-format msgid "{0:F0} %" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1332 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1347 #, csharp-format msgid "{0:F4} p/s/m^2" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1334 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1349 #, csharp-format msgid "{0:F1},{1:F1} m/s" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1345 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1360 #, csharp-format msgid "{0:F0}% ({1})" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1346 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1361 #, csharp-format msgid "" "{0:F0} FPS (50th/95th/99th percentiles {1:F1} / {2:F1} / {3:F1} ms, DirectX " "feature level >= {4})" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1347 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1362 #, csharp-format msgid "" "{3}, {4}, {5}, {6} ({7:F0} kB/frame allocated, {0:F0}/{1:F0}/{2:F0} GCs)" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1348 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1363 #, csharp-format msgid "" "{0:F0} MB private, {1:F0} MB working set, {2:F0} MB private working set, " "{3:F0} MB managed, {4:F0} MB virtual" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1349 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1364 #, csharp-format msgid "{0:F0} MB committed, {1:F0} MB dedicated, {2:F0} MB shared" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1350 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1365 #, csharp-format msgid "{0} ({1:F0} MB)" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1353 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1368 #, csharp-format msgid "{0}/{1}" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1354 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1369 #, csharp-format msgid "({0}x{0})" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1357 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1360 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1372 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1375 #, csharp-format msgid "{0:F0}" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1361 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1362 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1363 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1364 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1365 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1376 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1377 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1378 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1379 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1380 #, csharp-format msgid "{0:F0}% ({1:F0}% {2})" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1345 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1360 #, csharp-format msgid "{0} logical processor" msgid_plural "{0} logical processors" @@ -1900,57 +2029,57 @@ msgstr[0] "" msgstr[1] "" #. Context: Cab -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:548 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:576 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:550 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:578 msgctxt "Cab" msgid "R" msgstr "" #. Context: Cab -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:548 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:576 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:550 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:578 msgctxt "Cab" msgid "F" msgstr "" #. Context: Cab -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:576 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:578 msgctxt "Cab" msgid "D" msgstr "" #. Context: Steam -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:614 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:616 msgctxt "Steam" msgid "Reverser" msgstr "" #. Context: NonSteam -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:614 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:616 msgctxt "NonSteam" msgid "Reverser" msgstr "" #. Context: Pantograph -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:684 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:686 msgctxt "Pantograph" msgid "Panto" msgstr "" #. Context: Engine -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:685 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:687 msgctxt "Engine" msgid "Eng" msgstr "" #. Context: CircuitBreaker -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:686 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:688 msgctxt "CircuitBreaker" msgid "CB" msgstr "" #. Context: TractionCutOffRelay -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:687 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:689 msgctxt "TractionCutOffRelay" msgid "TCOR" msgstr "" @@ -2136,11 +2265,6 @@ msgstr "" msgid " Milepost Limit Dist" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:135 -#: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:74 -msgid "Flow" -msgstr "" - #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:135 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:74 msgid "FLOW" @@ -2172,7 +2296,7 @@ msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:239 #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:615 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:138 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1136 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1157 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:77 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:197 msgid "Loco Groups" @@ -2311,9 +2435,9 @@ msgid "BP" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:52 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:808 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:823 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:832 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:810 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:825 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:834 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:366 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:381 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:390 @@ -2321,17 +2445,15 @@ msgid "EQ" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:53 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:833 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:834 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:846 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:847 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:865 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:866 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:835 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:836 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:859 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:860 msgid "V" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:116 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1194 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1215 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:82 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:687 msgid "AI Fireman" @@ -2358,8 +2480,8 @@ msgid "BATT" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:119 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:993 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1011 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1014 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1032 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:85 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:538 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:556 @@ -2392,7 +2514,7 @@ msgid "LEVL" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:122 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1096 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1117 msgid "CCStatus" msgstr "" @@ -2411,7 +2533,7 @@ msgid "CIRC" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:124 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:768 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:770 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:89 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:326 msgid "Cylinder cocks" @@ -2457,7 +2579,7 @@ msgid "BLOC" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:131 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1069 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1090 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:95 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:615 msgid "Engine" @@ -2491,14 +2613,14 @@ msgid "GEAR" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:134 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1016 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1037 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:98 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:561 msgid "Fuel levels" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:135 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1024 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1045 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:99 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:569 msgid "Gear" @@ -2510,8 +2632,8 @@ msgid "GRAD" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:137 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1211 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1225 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1232 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1246 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:101 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:704 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:718 @@ -2534,7 +2656,7 @@ msgid "MAST" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:140 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1111 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1132 msgid "MaxAccel" msgstr "" @@ -2543,7 +2665,7 @@ msgid "MACC" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:141 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1048 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1069 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:103 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:593 msgid "Pantographs" @@ -2570,8 +2692,8 @@ msgid "RETN" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:147 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:782 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:792 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:784 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:794 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:109 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:340 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:350 @@ -2599,7 +2721,7 @@ msgid "STEM" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:150 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1104 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1125 msgid "Target" msgstr "" @@ -2623,10 +2745,10 @@ msgid "BTRN" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:155 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1244 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1252 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1260 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1274 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1265 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1273 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1281 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1295 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:116 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:736 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:744 @@ -2681,7 +2803,7 @@ msgid "ApplS" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:164 -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:417 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:449 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:125 msgid "coal" msgstr "" @@ -2740,7 +2862,7 @@ msgid "(safe)" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:170 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1261 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1282 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:130 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:753 msgid "skid" @@ -2752,20 +2874,20 @@ msgid "Skid" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:171 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1253 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1274 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:131 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:745 msgid "slip warning" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:171 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1326 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1347 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:131 msgid "Warning" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:172 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1245 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1266 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:132 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:737 msgid "slip" @@ -2785,7 +2907,7 @@ msgid "Vac.Serv" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:174 -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:416 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:448 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:133 msgid "water" msgstr "" @@ -2820,58 +2942,79 @@ msgid "psi" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:639 -msgid "lib./pal." +msgid "cfm" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:640 +msgid "L/s" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:641 +msgid "lib./pal." +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:642 msgid "pal.rtuti" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:758 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:760 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:316 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:447 msgid "Open" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:763 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1379 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:765 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1400 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:321 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:804 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:452 msgid "Closed" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:783 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:785 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:341 msgid "Blocked" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:783 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1158 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1195 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:785 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1179 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1216 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:341 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:651 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:688 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:126 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:216 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:238 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:261 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:395 msgid "On" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:793 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:979 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1158 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1195 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:795 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1000 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1179 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1216 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:351 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:524 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:651 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:688 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:108 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:126 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:221 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:243 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:266 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:395 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:408 msgid "Off" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:836 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:849 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:868 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:912 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:914 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:921 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:939 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:946 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:838 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:862 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:933 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:935 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:942 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:960 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:967 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:391 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:400 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:415 @@ -2883,14 +3026,17 @@ msgstr "" msgid "BC" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:843 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:845 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:851 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:856 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:850 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:852 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:874 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:875 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:886 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:888 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:890 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:896 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1124 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:909 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:911 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:917 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1145 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:397 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:399 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:401 @@ -2901,10 +3047,10 @@ msgstr "" msgid "EOT" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:877 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:879 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:880 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:887 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:898 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:900 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:901 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:908 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:423 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:425 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:426 @@ -2912,27 +3058,35 @@ msgstr "" msgid "Lead" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:970 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:991 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:516 msgid "Setup" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1054 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1075 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:599 msgid "Up" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1195 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1216 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:688 msgid "Reset" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1212 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1233 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:705 msgid "Exceeded" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1318 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1247 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1296 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1362 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:719 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:767 +msgid "Normal" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1339 msgid "Derailed" msgstr "" @@ -3026,128 +3180,128 @@ msgstr "" msgid "Activity Save file '*.save' not found in folder {0}" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:412 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:444 msgid "freight-grain" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:413 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:445 msgid "freight-coal" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:414 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:446 msgid "freight-gravel" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:415 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:447 msgid "freight-sand" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:418 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:450 msgid "diesel oil" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:419 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:451 msgid "wood" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:420 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:452 msgid "sand" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:421 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:453 msgid "freight-general" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:422 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:454 msgid "freight-livestock" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:423 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:455 msgid "freight-fuel" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:424 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:456 msgid "freight-milk" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:425 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:457 msgid "mail" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:426 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:458 msgid "container" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:574 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:606 msgid "Refill: Immediate refill process selected, refilling immediately." msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:595 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:627 msgid "Refill: Electric loco and no pickup. Command rejected" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:755 -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:774 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:787 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:806 msgid "Incompatible pickup type" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:761 -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:779 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:793 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:811 msgid "Starting refill" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:605 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:637 #, csharp-format msgid "Container crane: Distance to {0} supply is {1}." msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:616 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:648 #, csharp-format msgid "Refill: Distance to {0} supply is {1}." msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:626 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:658 #, csharp-format msgid "Refill: Loco must be stationary to refill {0}." msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:632 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:664 #, csharp-format msgid "Refill: Loco speed must exceed {0}." msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:639 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:671 #, csharp-format msgid "Refill: Loco speed must not exceed {0}." msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:657 -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:678 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:689 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:710 #, csharp-format msgid "Refill: {0} supply now replenished." msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:684 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:716 #, csharp-format msgid "Unload: {0} fuel or freight now unloaded." msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:702 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:734 msgid "wag file not equipped for containers" msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:707 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:739 #, csharp-format msgid "{0} now loaded." msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:713 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:745 #, csharp-format msgid "{0} now unloaded." msgstr "" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:606 -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:617 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:638 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:649 #, csharp-format msgid "{0} meter" msgid_plural "{0} meters" @@ -3208,3 +3362,260 @@ msgstr "" msgid "Dist" msgstr "" +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:168 +msgctxt "SwitchPanel" +msgid "Switch Ahead" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:171 +msgctxt "SwitchPanel" +msgid "Switch Behind" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:174 +msgctxt "SwitchPanel" +msgid "Change Cab" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:177 +msgctxt "SwitchPanel" +msgid "Map" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:180 +msgctxt "SwitchPanel" +msgid "Switch Manual" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:183 +msgctxt "SwitchPanel" +msgid "Clear Signal Forward" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:186 +msgctxt "SwitchPanel" +msgid "Autopilot" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:189 +msgctxt "SwitchPanel" +msgid "Track Monitor" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:192 +msgctxt "SwitchPanel" +msgid "HUD" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:195 +msgctxt "SwitchPanel" +msgid "Train Driving" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:198 +msgctxt "SwitchPanel" +msgid "Switch" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:201 +msgctxt "SwitchPanel" +msgid "Train Operations" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:204 +msgctxt "SwitchPanel" +msgid "Train Dpu" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:207 +msgctxt "SwitchPanel" +msgid "Next Station" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:210 +msgctxt "SwitchPanel" +msgid "Train List" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:213 +msgctxt "SwitchPanel" +msgid "EOT List" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:216 +msgctxt "SwitchPanel" +msgid "Direction" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:219 +msgctxt "SwitchPanel" +msgid "Gear" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:222 +msgctxt "SwitchPanel" +msgid "Handbrake" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:225 +msgctxt "SwitchPanel" +msgid "Brake hose" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:228 +msgctxt "SwitchPanel" +msgid "Alerter" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:231 +msgctxt "SwitchPanel" +msgid "Emergency" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:234 +msgctxt "SwitchPanel" +msgid "Sander" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:237 +msgctxt "SwitchPanel" +msgid "Wiper" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:240 +msgctxt "SwitchPanel" +msgid "Door Left" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:243 +msgctxt "SwitchPanel" +msgid "Door Right" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:246 +msgctxt "SwitchPanel" +msgid "Light" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:249 +msgctxt "SwitchPanel" +msgid "Pantograph 1" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:252 +msgctxt "SwitchPanel" +msgid "Pantograph 2" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:255 +msgctxt "SwitchPanel" +msgid "Battery Switch" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:258 +msgctxt "SwitchPanel" +msgid "Master Key" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:261 +msgctxt "SwitchPanel" +msgid "Circuit Breaker" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:264 +msgctxt "SwitchPanel" +msgid "Traction Cut-Off" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:267 +msgctxt "SwitchPanel" +msgid "Diesel Player" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:270 +msgctxt "SwitchPanel" +msgid "Diesel Helper" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:273 +msgctxt "SwitchPanel" +msgid "Front light" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:276 +msgctxt "SwitchPanel" +msgid "Cyl Cocks" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:279 +msgctxt "SwitchPanel" +msgid "Retainers" +msgstr "" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:111 +msgid "Dim" +msgstr "" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:115 +msgid "Bright" +msgstr "" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:231 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:254 +msgid "Always On" +msgstr "" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:281 +msgid "Automatic" +msgstr "" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:310 +msgid "Always on" +msgstr "" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:401 +msgid "Full" +msgstr "" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:435 +msgid "Connected" +msgstr "" + diff --git a/Source/Locales/RunActivity/hu.po b/Source/Locales/RunActivity/hu.po index c9a4ce0705..dccd14c0da 100644 --- a/Source/Locales/RunActivity/hu.po +++ b/Source/Locales/RunActivity/hu.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: RunActivity\n" -"POT-Creation-Date: 2022-07-26 19:38:43+0200\n" +"POT-Creation-Date: 2023-10-24 12:50:28+0200\n" "PO-Revision-Date: \n" "Last-Translator: Péter Gulyás \n" "Language-Team: Open Rails Dev Team\n" @@ -10,59 +10,59 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.1.1\n" +"X-Generator: Poedit 3.3.2\n" #: ../../RunActivity/Viewer3D/Cameras.cs:601 msgid "Free" msgstr "Szabadmozgatású" -#: ../../RunActivity/Viewer3D/Cameras.cs:999 +#: ../../RunActivity/Viewer3D/Cameras.cs:1000 msgid "Outside Front" msgstr "Elülső külső" -#: ../../RunActivity/Viewer3D/Cameras.cs:999 +#: ../../RunActivity/Viewer3D/Cameras.cs:1000 msgid "Outside Rear" msgstr "Hátsó külső" -#: ../../RunActivity/Viewer3D/Cameras.cs:1517 +#: ../../RunActivity/Viewer3D/Cameras.cs:1518 msgid "Brakeman" msgstr "Fékezőállás" -#: ../../RunActivity/Viewer3D/Cameras.cs:1767 +#: ../../RunActivity/Viewer3D/Cameras.cs:1774 msgid "Passenger" msgstr "Utas" -#: ../../RunActivity/Viewer3D/Cameras.cs:1843 +#: ../../RunActivity/Viewer3D/Cameras.cs:1844 msgid "3D Cab" msgstr "3D vezérállás" -#: ../../RunActivity/Viewer3D/Cameras.cs:1940 +#: ../../RunActivity/Viewer3D/Cameras.cs:1955 msgid "Head out" msgstr "Kihajolt" -#: ../../RunActivity/Viewer3D/Cameras.cs:1985 +#: ../../RunActivity/Viewer3D/Cameras.cs:2000 msgid "Cab" msgstr "Vezérállás" -#: ../../RunActivity/Viewer3D/Cameras.cs:2238 +#: ../../RunActivity/Viewer3D/Cameras.cs:2253 msgid "Trackside" msgstr "Pályamenti" -#: ../../RunActivity/Viewer3D/Materials.cs:224 +#: ../../RunActivity/Viewer3D/Materials.cs:230 #, csharp-format msgid "{0:F0} texture" msgid_plural "{0:F0} textures" msgstr[0] "{0: F0} textúra" msgstr[1] "{0: F0} textúra" -#: ../../RunActivity/Viewer3D/Materials.cs:461 +#: ../../RunActivity/Viewer3D/Materials.cs:468 #, csharp-format msgid "{0:F0} material" msgid_plural "{0:F0} materials" msgstr[0] "{0: F0} anyag" msgstr[1] "{0: F0} anyag" -#: ../../RunActivity/Viewer3D/Shapes.cs:113 +#: ../../RunActivity/Viewer3D/Shapes.cs:119 #, csharp-format msgid "{0:F0} shape" msgid_plural "{0:F0} shapes" @@ -76,100 +76,104 @@ msgid_plural "{0:F0} tiles" msgstr[0] "{0:F0} mező" msgstr[1] "{0:F0} mező" -#: ../../RunActivity/Viewer3D/Viewer.cs:829 -#: ../../RunActivity/Viewer3D/Viewer.cs:1017 +#: ../../RunActivity/Viewer3D/Viewer.cs:832 +#: ../../RunActivity/Viewer3D/Viewer.cs:1027 msgid "Cab view not available" msgstr "Vezérállás nem elérhető" -#: ../../RunActivity/Viewer3D/Viewer.cs:914 +#: ../../RunActivity/Viewer3D/Viewer.cs:924 msgid "In MP, use Alt-F4 to quit directly" msgstr "Többrésztvevős módból csak Alt+F4 -gyel lehet kilépni" -#: ../../RunActivity/Viewer3D/Viewer.cs:946 +#: ../../RunActivity/Viewer3D/Viewer.cs:956 msgid "Automatic platform and siding labels visible." msgstr "Automatikus peron- és mellékvágánycímkék láthatók." -#: ../../RunActivity/Viewer3D/Viewer.cs:949 +#: ../../RunActivity/Viewer3D/Viewer.cs:959 msgid "Platform and siding labels visible." msgstr "Peron- és mellékvágánycímkék láthatók." -#: ../../RunActivity/Viewer3D/Viewer.cs:952 +#: ../../RunActivity/Viewer3D/Viewer.cs:962 msgid "Platform labels visible." msgstr "Peroncímkék láthatók." -#: ../../RunActivity/Viewer3D/Viewer.cs:955 +#: ../../RunActivity/Viewer3D/Viewer.cs:965 msgid "Siding labels visible." msgstr "Mellékvágánycímkék láthatók." -#: ../../RunActivity/Viewer3D/Viewer.cs:961 +#: ../../RunActivity/Viewer3D/Viewer.cs:971 msgid "Platform and siding labels hidden." msgstr "Peron- és mellékvágánycímkék elrejtve." -#: ../../RunActivity/Viewer3D/Viewer.cs:972 +#: ../../RunActivity/Viewer3D/Viewer.cs:982 msgid "Train labels visible." msgstr "Vonatcímkék láthatók." -#: ../../RunActivity/Viewer3D/Viewer.cs:975 +#: ../../RunActivity/Viewer3D/Viewer.cs:985 msgid "Car labels visible." msgstr "Kocsicímkék láthatók." -#: ../../RunActivity/Viewer3D/Viewer.cs:981 +#: ../../RunActivity/Viewer3D/Viewer.cs:991 msgid "Train and car labels hidden." msgstr "Vonat- és kocsicímkék elrejtve." -#: ../../RunActivity/Viewer3D/Viewer.cs:1024 +#: ../../RunActivity/Viewer3D/Viewer.cs:1034 msgid "This car doesn't have a 2D cab" msgstr "Ennek a kocsinak nincs 2D vezérállása" -#: ../../RunActivity/Viewer3D/Viewer.cs:1028 +#: ../../RunActivity/Viewer3D/Viewer.cs:1038 msgid "This car doesn't have a 3D cab" msgstr "Ennek a kocsinak nincs 3D vezérállása" -#: ../../RunActivity/Viewer3D/Viewer.cs:1059 -msgid "Confirmations suppressed" +#: ../../RunActivity/Viewer3D/Viewer.cs:1083 +#, fuzzy +#| msgid "Confirmations suppressed" +msgid "messages suppressed" msgstr "Visszajelzések elrejtve" -#: ../../RunActivity/Viewer3D/Viewer.cs:1061 -msgid "Confirmations visible" -msgstr "Visszajelzések láthatóak" +#: ../../RunActivity/Viewer3D/Viewer.cs:1087 +#, fuzzy +#| msgid "Car labels visible." +msgid "All messages visible" +msgstr "Kocsicímkék láthatók." -#: ../../RunActivity/Viewer3D/Viewer.cs:1210 +#: ../../RunActivity/Viewer3D/Viewer.cs:1244 msgid "Switched to player control" msgstr "Robotpilóta kikapcsolva" -#: ../../RunActivity/Viewer3D/Viewer.cs:1217 +#: ../../RunActivity/Viewer3D/Viewer.cs:1251 msgid "You can't switch from manual to autopilot mode" msgstr "Helyi forgalomirányításból nem lehet robotpilótára váltani" -#: ../../RunActivity/Viewer3D/Viewer.cs:1223 +#: ../../RunActivity/Viewer3D/Viewer.cs:1257 msgid "Switched to autopilot" msgstr "Robotpilóta bekapcsolva" -#: ../../RunActivity/Viewer3D/Viewer.cs:1896 +#: ../../RunActivity/Viewer3D/Viewer.cs:1931 msgid "Game saved" msgstr "A játékállás elmentve" -#: ../../RunActivity/Viewer3D/Viewer.cs:348 +#: ../../RunActivity/Viewer3D/Viewer.cs:347 #, csharp-format msgid "Allowed speed raised to {0}" msgstr "A megengedett sebesség {0}-ra emelkedett" -#: ../../RunActivity/Viewer3D/Viewer.cs:1050 +#: ../../RunActivity/Viewer3D/Viewer.cs:1060 #, csharp-format msgid "Vibrating at level {0}" msgstr "Vibrálás szintje: {0}" -#: ../../RunActivity/Viewer3D/Viewer.cs:1241 +#: ../../RunActivity/Viewer3D/Viewer.cs:1275 #, csharp-format msgid "Keyboard map list saved to '{0}'." msgstr "Billentyűzetkiosztási lista mentve: '{0}'." -#: ../../RunActivity/Viewer3D/Viewer.cs:1245 +#: ../../RunActivity/Viewer3D/Viewer.cs:1279 #, csharp-format msgid "Keyboard map image saved to '{0}'." msgstr "Billentyűzetkiosztási ábra mentve: '{0}'." -#: ../../RunActivity/Viewer3D/Viewer.cs:1097 +#: ../../RunActivity/Viewer3D/Viewer.cs:1126 #, csharp-format msgid "{0} viewpoint stored. Use Shift+8 to restore viewpoints." msgid_plural "{0} viewpoints stored. Use Shift+8 to restore viewpoints." @@ -178,7 +182,7 @@ msgstr[0] "" msgstr[1] "" "{0} nézőpont van eltárolva. Használd a Shift+B -t a visszaállításhoz." -#: ../../RunActivity/Viewer3D/Weather.cs:145 +#: ../../RunActivity/Viewer3D/Weather.cs:143 msgid "" "Restoring wrong weather type : trying to restore dynamic weather but save " "contains user controlled weather" @@ -186,7 +190,7 @@ msgstr "" "Rossz időjárástípus betöltése: dinamikus időjárást nem lehet betölteni " "felhasználó által beállított időjárású mentésből" -#: ../../RunActivity/Viewer3D/Weather.cs:1642 +#: ../../RunActivity/Viewer3D/Weather.cs:1632 msgid "" "Restoring wrong weather type : trying to restore user controlled weather but " "save contains dynamic weather" @@ -194,15 +198,26 @@ msgstr "" "Rossz időjárástípus betöltése: felhasználó által beállított időjárást nem " "lehet betölteni dinamikus időjárású mentésből" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.cs:2004 +#: ../../RunActivity/Viewer3D/Weather.cs:492 +#, csharp-format +msgid "Increased daylight offset to {0} h" +msgstr "Időeltolás növelve {0} órára" + +#: ../../RunActivity/Viewer3D/Weather.cs:497 +#, csharp-format +msgid "Decreased daylight offset to {0} h" +msgstr "Időeltolás csökkentve {0} órára" + +#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.cs:1919 +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:1494 msgid "Switching Request Sent to the Server" msgstr "A vágányútállítási kérelem el lett küldve az irányítónak" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.cs:580 +#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.cs:556 msgid "MSG to Server" msgstr "Üzenet a kiszolgálónak" -#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.cs:584 +#: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.cs:560 #: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:256 msgid "MSG to All" msgstr "Ózenet mindenkinek" @@ -265,11 +280,11 @@ msgid "Assist" msgstr "Segítő" #: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:417 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1195 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1244 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1310 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:718 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:766 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1247 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1296 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1362 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:719 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:767 msgid "Normal" msgstr "Normál" @@ -302,22 +317,27 @@ msgid "Show:" msgstr "Megjelenítés:" #: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:517 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:454 msgid "Platform labels" msgstr "Peroncímkék" #: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:530 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:444 msgid "Siding labels" msgstr "Mellékvágánycímkék" #: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:543 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:424 msgid "Signals" msgstr "Jelzők" #: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:556 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:414 msgid "Signal state" msgstr "Jelzésképek" #: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:572 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:404 msgid "Train labels" msgstr "Vonatcímkék" @@ -342,6 +362,7 @@ msgid "Background color" msgstr "Háttérszín" #: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:673 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:434 msgid "Switches" msgstr "Váltók" @@ -379,6 +400,7 @@ msgid "To zoom out of a location, press Alt and click the left mouse." msgstr "Visszakicsinyítés Alt és bal egérgombbal." #: ../../RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs:793 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:464 msgid "Platforms" msgstr "Peronok" @@ -430,14 +452,14 @@ msgid "3D" msgstr "3D" #: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:284 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:536 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:721 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1288 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:146 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:668 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:433 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:631 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1208 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:148 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:673 #: ../../RunActivity/Viewer3D/WebServices/TrackMonitorDisplay.cs:291 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:109 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:230 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:110 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:231 msgid "Speed" msgstr "Sebesség" @@ -454,8 +476,8 @@ msgid "Variable 1" msgstr "Variable 1" #: ../../RunActivity/Viewer3D/Debugging/SoundDebugForm.Designer.cs:351 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1294 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1296 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1214 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1216 #: ../../RunActivity/Viewer3D/Popups/NextStationWindow.cs:78 msgid "Distance" msgstr "Távolság" @@ -480,6 +502,214 @@ msgstr "Hang hibakeresés" msgid "View Self" msgstr "Saját vonat megtekintése" +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:301 +msgid "You" +msgstr "Te" + +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:308 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:518 +#: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:345 +msgid "Helper" +msgstr "Segéd" + +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:314 +#, fuzzy +#| msgid "disconnected" +msgid "Disconnected" +msgstr "nincs cs." + +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:1721 +msgid "Demote this player" +msgstr "Játékos lefokozása" + +#: ../../RunActivity/Viewer3D/Map/MapForm.cs:1721 +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:848 +msgid "Make this player an assistant" +msgstr "Játékos legyen asszisztens" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:160 +msgid "Learn more" +msgstr "További információ" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:172 +msgid "You are the dispatcher in this multiplayer session" +msgstr "Te vagy a diszpécser ebben a többjátékos munkamenetben." + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:261 +msgid "Message all players" +msgstr "Üzenet minden játékosnak" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:275 +msgid ">" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:297 +msgid "Messages:" +msgstr "Üzenetek:" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:324 +msgid "Simulation time" +msgstr "Szimulációs idő" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:337 +msgid "Map customization" +msgstr "Térkép testreszabása" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:372 +msgid "All trains" +msgstr "Minden vonat" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:384 +msgid "Only active trains" +msgstr "Csak aktív vonatok" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:394 +msgid "Train state" +msgstr "Vonatállapot" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:475 +msgid "Map features" +msgstr "Térkép jellemzői" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:484 +msgid "Rotate between themes" +msgstr "Témaváltás" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:497 +msgid "Show simulation time" +msgstr "Szimulációs idő megjelenítése" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:507 +msgid "Use anti-aliasing" +msgstr "Anti-aliasing használata" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:572 +msgid "Multiplayer settings" +msgstr "Többjátékos beállítások" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:583 +msgid "Penalty for speeding && SPAD" +msgstr "Büntetés gyorshajtásért && SPAD" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:596 +msgid "Prefer green signals" +msgstr "Zöld jelzők előnyben részesítése" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:609 +msgid "Allow new players to join" +msgstr "Új játékosok csatlakozhatnak" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:639 +msgid "Map settings and controls" +msgstr "Térképbeállítások és funkciók" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:648 +msgid "Follow my train on the map" +msgstr "A vonatom követése a térképen" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:659 +msgid "Jump to my train on the map" +msgstr "Ugrás a vonatomhoz a térképen" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:670 +msgid "Jump to my train in game" +msgstr "Ugrás a vonatomhoz a játékban" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:681 +msgid "Map resolution (m):" +msgstr "Térképfelbontás (m):" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:722 +msgid "Allow throwing switches" +msgstr "A váltók állíthatók" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:734 +msgid "Allow changing signals" +msgstr "A jelzők módosíthatók" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:746 +msgid "Draw next path section" +msgstr "Előrelátható útvonalszakasz rajzolása" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:773 +msgid "Players" +msgstr "Játékosok" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:813 +msgid "Message the selected player" +msgstr "Üzenet a kiválasztott játékosnak" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:821 +msgid "Reply to the selected player" +msgstr "Válasz a kiválasztott játékosnak" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:841 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:540 +msgid "Player" +msgstr "Játékos" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:855 +msgid "Jump to this player in game" +msgstr "Ugrás ehhez a játékoshoz a játékban" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:862 +msgid "Follow on the map" +msgstr "Követés a térképen" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:869 +msgid "Kick from multiplayer session" +msgstr "Kirúgás a többjátékos módból" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:887 +msgid "Set switch to..." +msgstr "Váltóállítás..." + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:896 +#, fuzzy +#| msgid "main route" +msgid "Main route" +msgstr "fővágány" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:904 +msgid "Side route" +msgstr "Mellékvágány" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:926 +msgid "Set signal aspect to..." +msgstr "Jelző aspektus beállítása..." + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:933 +msgid "System controlled" +msgstr "Rendszer által vezérelt" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:942 +msgid "Stop" +msgstr "Megállj" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:950 +msgid "Approach" +msgstr "" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:959 +msgid "Proceed" +msgstr "Szabad" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:972 +msgid "Allow call on" +msgstr "Hívás engedélyezése" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:988 +msgid "Jump to this train in game" +msgstr "Ugrás ehhez a vonathoz a játékban" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:995 +msgid "Follow this train on the map" +msgstr "A vonat követése a térképen" + +#: ../../RunActivity/Viewer3D/Map/MapForm.Designer.cs:1005 +msgid "Map window" +msgstr "Térképablak" + #: ../../RunActivity/Viewer3D/Popups/ActivityWindow.cs:45 msgid "Activity Events" msgstr "Szolgálat eseményei" @@ -550,135 +780,226 @@ msgstr "Esemény: {0}" msgid "Train: {0}" msgstr "Vonat: {0}" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:41 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:42 msgid "Car Operation Menu" msgstr "Kocsivizsgálat" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:51 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:66 msgid "Car ID" msgstr "Azonosító" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:54 -msgid "Toggle Handbrake" -msgstr "Kézifék átállítása" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:73 +#, fuzzy +#| msgid "Handbrake" +msgid "Unset Handbrake" +msgstr "Kézifék" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:75 +#, fuzzy +#| msgid "Handbrake" +msgid "Set Handbrake" +msgstr "Kézifék" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:82 +#, fuzzy +#| msgid "Power" +msgid "Power Off" +msgstr "Főmegszakító" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:84 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:86 +#, fuzzy +#| msgid "Power" +msgid "Power On" +msgstr "Főmegszakító" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:56 -msgid "Toggle Power" -msgstr "Gép indítása/leállítása" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:91 +#, fuzzy +#| msgid "Toggle MU Connection" +msgid "Disconnect MU Connection" +msgstr "Távvezérlőkábel (szét)csatolása" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:58 -msgid "Toggle MU Connection" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:93 +#, fuzzy +#| msgid "Toggle MU Connection" +msgid "Connect MU Connection" msgstr "Távvezérlőkábel (szét)csatolása" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:60 -msgid "Toggle Battery Switch" -msgstr "Akkumulátor ki-/bekapcsolása" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:98 +#, fuzzy +#| msgid "Battery switch" +msgid "Battery Switch Off" +msgstr "Akkumulátorkapcsoló" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:62 -msgid "Toggle Electric Train Supply Connection" -msgstr "Elektromos betáp csatlakoztatása" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:100 +#, fuzzy +#| msgid "Battery switch" +msgid "Battery Switch On" +msgstr "Akkumulátorkapcsoló" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:64 -msgid "Toggle Brake Hose Connection" -msgstr "Féktömlő (szét)csatolása" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:105 +#, fuzzy +#| msgid "Electric train supply" +msgid "Disonnect Electric Train Supply" +msgstr "Villamos fűtés" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:66 -msgid "Open/Close Front Angle Cock" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:107 +#, fuzzy +#| msgid "Electric train supply" +msgid "Connect Electric Train Supply" +msgstr "Villamos fűtés" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:113 +msgid "Disconnect Front Brake Hose" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:115 +msgid "Connect Front Brake Hose" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:122 +msgid "Disconnect Rear Brake Hose" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:124 +#, fuzzy +#| msgid "Brake Hose" +msgid "Connect Rear Brake Hose" +msgstr "Légvezetékek" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:131 +#, fuzzy +#| msgid "Open/Close Front Angle Cock" +msgid "Close Front Angle Cock" +msgstr "Első végelzárószelep nyit/zár" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:133 +#, fuzzy +#| msgid "Open/Close Front Angle Cock" +msgid "Open Front Angle Cock" msgstr "Első végelzárószelep nyit/zár" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:68 -msgid "Open/Close Rear Angle Cock" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:140 +#, fuzzy +#| msgid "Open/Close Rear Angle Cock" +msgid "Close Rear Angle Cock" +msgstr "Hátsó végelzárószelep nyit/zár" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:142 +#, fuzzy +#| msgid "Open/Close Rear Angle Cock" +msgid "Open Rear Angle Cock" msgstr "Hátsó végelzárószelep nyit/zár" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:70 -msgid "Open/Close Bleed Off Valve" +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:149 +#, fuzzy +#| msgid "Open/Close Bleed Off Valve" +msgid "Close Bleed Off Valve" +msgstr "Kieresztőszelep nyit/zár" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:151 +#, fuzzy +#| msgid "Open/Close Bleed Off Valve" +msgid "Open Bleed Off Valve" msgstr "Kieresztőszelep nyit/zár" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:72 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:156 msgid "Close window" msgstr "Ablak bezárása" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:106 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:235 msgid "Handbrake set" msgstr "Kézifék: be" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:108 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:237 msgid "Handbrake off" msgstr "Kézifék: ki" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:120 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:249 msgid "Power OFF command sent" msgstr "Leállítási parancs elküldve" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:122 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:251 msgid "Power ON command sent" msgstr "Elindítási parancs elküldve" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:125 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:254 msgid "No power command for this type of car!" msgstr "Ezt a típusú kocsit nem lehet gépként elindítani!" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:138 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:267 msgid "MU signal connected" msgstr "Távvezérlő kábel csatlakoztatva" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:140 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:269 msgid "MU signal disconnected" msgstr "Távvezérlő kábel szétcsatolva" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:143 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:272 msgid "No MU command for this type of car!" msgstr "Távvezérlés nem lehetséges ennél a típusú kocsinál." -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:153 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:282 msgid "Switch off battery command sent" msgstr "Akkumulátor kikapcsolási parancs elküldve" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:155 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:284 msgid "Switch on battery command sent" msgstr "Akkumulátor bekapcsolási parancs elküldve" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:167 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:296 msgid "Front ETS cable connected" msgstr "Első vonatfűtési kábel csatlakoztatva" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:169 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:298 msgid "Front ETS cable disconnected" msgstr "Első vonatfűtési kábel szétcsatlakoztatva" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:173 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:302 msgid "This car doesn't have an ETS system" msgstr "Ez a kocsi nem rendelkezik el. vonatfűtéssel" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:181 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:310 msgid "Front brake hose connected" msgstr "Első féktömlők csatolva" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:183 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:312 msgid "Front brake hose disconnected" msgstr "Első féktömlők szétcsatolva" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:190 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:319 +#, fuzzy +#| msgid "Front brake hose connected" +msgid "Rear brake hose connected" +msgstr "Első féktömlők csatolva" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:321 +#, fuzzy +#| msgid "Front brake hose disconnected" +msgid "Rear brake hose disconnected" +msgstr "Első féktömlők szétcsatolva" + +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:328 msgid "Front angle cock opened" msgstr "Első végelzáró kinyitva" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:192 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:330 msgid "Front angle cock closed" msgstr "Első végelzáró lezárva" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:199 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:337 msgid "Rear angle cock opened" msgstr "Hátsó végelzáró kinyitva" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:201 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:339 msgid "Rear angle cock closed" msgstr "Hátsó végelzáró lezárva" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:211 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:349 msgid "Bleed off valve opened" msgstr "Kieresztőszelep nyitva" -#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:213 +#: ../../RunActivity/Viewer3D/Popups/CarOperationsWindow.cs:351 msgid "Bleed off valve closed" msgstr "Kieresztőszelep lezárva" @@ -714,11 +1035,11 @@ msgstr "Könyvtárnév" msgid "Can't attach EOT if player train not stopped" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/EOTListWindow.cs:110 +#: ../../RunActivity/Viewer3D/Popups/EOTListWindow.cs:111 msgid "Player train already has a mounted EOT" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/EOTListWindow.cs:122 +#: ../../RunActivity/Viewer3D/Popups/EOTListWindow.cs:124 msgid "Can't mount an EOT if another one is mounted" msgstr "" @@ -846,8 +1167,8 @@ msgid "- Missed station stops: " msgstr "- Elszalasztott állomási megállások: " #: ../../RunActivity/Viewer3D/Popups/HelpWindow.cs:416 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1069 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1232 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:986 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1152 msgid " " msgstr " " @@ -926,962 +1247,984 @@ msgid_plural "{0} minutes" msgstr[0] "{0} perc" msgstr[1] "{0} perc" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:204 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:539 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:707 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:720 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:108 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:436 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:617 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:630 #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:146 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:148 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:151 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:85 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:111 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:112 msgid "Throttle" msgstr "Menetszabályzó" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:205 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:109 msgid "Power In/Out" msgstr "Teljesítmény Be/Ki" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:209 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:113 msgid "Motive force" msgstr "Mozgatóerő" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:211 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:115 msgid "Num of substeps" msgstr "Allépések száma" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:214 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1442 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:118 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1362 msgid "Memory" msgstr "Memória" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:215 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:119 msgid "GCs" msgstr "GC-k" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:216 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:120 msgid "Frame time" msgstr "Frame idő" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:217 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1456 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:121 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1376 msgid "Render process" msgstr "Render folyamat" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:218 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1457 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:122 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1377 msgid "Updater process" msgstr "Updater folyamat" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:219 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1458 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:123 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1378 msgid "Loader process" msgstr "Loader folyamat" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:220 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1459 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:124 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1379 msgid "Sound process" msgstr "Sound folyamat" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:525 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:422 msgid "Version" msgstr "Verzió" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:529 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:531 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:426 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:428 #: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:158 #: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:164 #: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:332 #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:147 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:149 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:645 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:152 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:650 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:86 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:112 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:207 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:113 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:208 msgid "Time" msgstr "Idő" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:534 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:142 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:652 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:105 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:214 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:431 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:144 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:657 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:106 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:215 msgid "Replay" msgstr "Visszajátszás" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:537 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1227 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:135 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:686 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:434 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1147 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:136 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:691 #: ../../RunActivity/Viewer3D/WebServices/TrackMonitorDisplay.cs:322 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:99 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:248 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:100 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:249 msgid "Gradient" msgstr "Pályaemelkedés" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:538 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:705 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:717 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:124 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:435 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:615 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:627 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:125 #: ../../RunActivity/Viewer3D/WebServices/TrackMonitorDisplay.cs:332 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:89 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:90 msgid "Direction" msgstr "Irány" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:539 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:707 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:141 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:104 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:436 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:617 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:143 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:105 msgid "Regulator" msgstr "Töltésszabályzó" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:543 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:151 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:823 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:880 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:914 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:114 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:383 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:428 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:462 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:440 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:154 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:828 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:904 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:938 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:115 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:384 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:429 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:463 msgid "Train brake" msgstr "Vonatfék" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:545 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:143 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:931 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:106 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:479 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:442 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:145 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:955 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:107 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:480 msgid "Retainers" msgstr "Visszatartó szelepek" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:547 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:129 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:940 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:955 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:93 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:488 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:503 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:444 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:130 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:964 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:979 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:94 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:489 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:504 msgid "Engine brake" msgstr "Mozdonyfék" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:549 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:446 msgid "Brakemen brake" msgstr "Fékezőszemélyzet" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:551 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:708 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:127 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:966 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:975 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:91 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:514 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:522 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:448 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:618 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:128 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:990 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:999 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:92 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:515 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:523 msgid "Dynamic brake" msgstr "Dinamikus fék" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:565 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:464 +msgid "Cruise control status" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:467 +msgid "Speed target" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:468 +msgid "Max acceleration" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:472 msgid "Multiple Units" msgstr "Mozdonycsoport" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:567 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1116 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:639 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:474 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1168 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:640 msgid "FPS" msgstr "FPS" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:571 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:478 #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:117 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1126 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:82 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:649 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1178 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:83 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:650 msgid "Autopilot" msgstr "Robotpilóta" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:574 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1174 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:481 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1083 msgid "Wheel slip" msgstr "Kerékmegperdülés" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:576 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:483 msgid "Wheel slip warning" msgstr "Kerékmegperdülési figyelmeztetés" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:579 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:486 msgid "Wheel skid" msgstr "Kerékmegcsúszás" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:585 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:492 msgid "Sander blocked" msgstr "Homokoló letiltva" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:587 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:494 msgid "Sander on" msgstr "Homokoló üzemben" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:600 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:126 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1331 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1345 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:90 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:786 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:800 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:505 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1379 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:783 +msgid "Left" +msgstr "Bal" + +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:507 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1381 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:785 +msgid "Right" +msgstr "Jobb" + +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:510 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:127 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1385 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1399 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:91 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:789 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:803 msgid "Doors open" msgstr "Ajtók nyitva" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:606 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:516 msgid "MultiPlayerStatus: " msgstr "MultiPlayer Állapot: " -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:607 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:517 #: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:344 msgid "Dispatcher" msgstr "Irányító" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:608 -#: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:345 -msgid "Helper" -msgstr "Segéd" - -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:609 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:519 #: ../../RunActivity/Viewer3D/Popups/MultiPlayerWindow.cs:346 msgid "Client" msgstr "Résztvevő" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:618 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:528 msgid "CONSIST INFORMATION" msgstr "SZERELVÉNY INFORMÁCIÓI" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:630 -msgid "Player" -msgstr "Játékos" - -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:631 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:541 msgid "Tilted" msgstr "Dönthető" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:632 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:654 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:775 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1010 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1029 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1059 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1089 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1118 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:542 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:564 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:685 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:924 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:944 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:975 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1006 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1036 msgid "Type" msgstr "Típus" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:633 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:655 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:543 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:565 msgid "Length" msgstr "Hossz" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:634 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:656 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:544 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:566 msgid "Weight" msgstr "Tömeg" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:635 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:545 msgid "Tonnage" msgstr "Tonna" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:636 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:546 msgid "Control Mode" msgstr "Irányítási mód" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:637 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:547 msgid "Out of Control" msgstr "Irányítás nélkül" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:638 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:548 msgid "Cab Aspect" msgstr "Jelzéskép" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:641 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:664 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1259 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1438 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:551 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:574 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1179 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1358 #: ../../RunActivity/Viewer3D/RollingStock/SubSystems/ETCS/DataEntry.cs:460 #: ../../RunActivity/Viewer3D/RollingStock/SubSystems/ETCS/DataEntry.cs:485 msgid "Yes" msgstr "Igen" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:641 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:664 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1259 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1438 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:551 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:574 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1179 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1358 msgid "No" msgstr "Nem" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:642 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:665 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:552 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:575 msgid "Freight" msgstr "Teher" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:642 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:665 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:552 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:575 msgid "Pass" msgstr "Személy" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:652 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1009 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1028 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1058 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1088 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1117 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1214 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:562 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:923 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:943 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:974 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1005 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1035 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1134 msgid "Car" msgstr "Kocsi" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:653 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:718 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1261 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:563 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:628 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1181 msgid "Flipped" msgstr "Fordított" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:657 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:567 msgid "Drv/Cabs" msgstr "Vezethető" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:658 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:568 msgid "Wheels" msgstr "Tengelyek" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:659 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:569 msgid "Temp" msgstr "Hőm" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:699 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:609 msgid "LOCOMOTIVE INFORMATION" msgstr "MOZDONY INFORMÁCIÓI" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:712 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:896 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:905 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:907 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:911 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:920 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:922 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:930 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:932 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:967 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:997 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:622 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:806 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:815 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:817 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:821 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:830 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:832 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:840 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:842 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:877 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:909 msgid "off" msgstr "ki" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:713 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:894 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:903 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:918 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:928 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:955 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:963 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:623 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:804 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:813 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:828 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:838 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:865 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:873 msgid "PlayerLoco" msgstr "VezetettGép" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:716 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:984 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:991 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:626 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:896 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:903 msgid "Loco" msgstr "Mozdony" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:719 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:629 msgid "MU'd" msgstr "Távvez" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:723 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:787 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:633 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:697 #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:140 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:140 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:142 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:79 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:103 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:104 msgid "Power" msgstr "Főmegszakító" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:724 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:634 msgid "Force" msgstr "Erők" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:734 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:644 msgid "DISTRIBUTED POWER INFORMATION" msgstr "GÉPCSOPORT-INFORMÁCIÓK" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:768 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:678 msgid "POWER SUPPLY INFORMATION" msgstr "ENERGIAELLÁTÁSI INFORMÁCIÓK" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:774 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:684 msgid "Wagon" msgstr "Vagon" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:780 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:690 msgid "MainPS" msgstr "Főüzem" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:781 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:691 msgid "AuxPS" msgstr "Segédüz." -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:782 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:692 msgid "Battery" msgstr "Akku" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:783 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:693 msgid "LowVoltPS" msgstr "KisFeszE" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:784 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:694 msgid "CabPS" msgstr "VezÁllE" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:785 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:695 msgid "ETS" msgstr "El. fűtés" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:786 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:696 msgid "ETSCable" msgstr "Fűtéskábel" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:813 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:826 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:841 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:850 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:723 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:736 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:751 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:760 msgid "connected" msgstr "csatl." -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:813 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:826 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:841 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:850 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:723 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:736 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:751 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:760 msgid "disconnected" msgstr "nincs cs." -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:878 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:788 msgid "BRAKE INFORMATION" msgstr "FÉKINFORMÁCIÓK" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:895 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:805 msgid "Exhauster" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:896 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:905 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:907 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:911 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:920 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:922 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:930 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:932 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:967 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:997 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:806 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:815 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:817 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:821 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:830 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:832 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:840 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:842 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:877 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:909 msgid "on" msgstr "be" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:904 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:919 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:929 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:814 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:829 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:839 msgid "Large Ejector" msgstr "Nagy légsűrítő" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:906 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:931 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:816 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:841 msgid "Small Ejector" msgstr "Kis légsűrítő" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:908 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:933 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:818 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:843 msgid "Pressure" msgstr "Nyomás" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:910 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:921 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:820 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:831 msgid "Vacuum Pump" msgstr "Vákuumszivattyú" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:939 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:849 msgid "Brake Sys Vol" msgstr "Fékr Térf" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:940 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:850 msgid "Train Pipe" msgstr "Átmenőfék" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:942 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:852 msgid "Brake Cyl" msgstr "Féktartály" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:944 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:854 msgid "Air Vol" msgstr "Levegőtérfogat" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:956 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:866 msgid "No compressor or reservoir fitted" msgstr "Nincs kompresszor és tartály" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:964 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:994 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:874 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:906 msgid "Main reservoir" msgstr "Főlégtartály" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:966 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:996 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:876 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:908 msgid "Compressor" msgstr "Légsűrítő" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1011 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1030 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1090 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1119 -msgid "BrkCyl" -msgstr "Fékheng" - -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1012 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1031 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1120 -msgid "BrkPipe" -msgstr "Fővez" - -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1019 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:878 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:910 +#: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:135 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:846 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:848 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:870 +#: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:74 +msgid "Flow" +msgstr "Fogyaszt." + +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:925 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:945 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1007 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1037 +msgid "BrkCyl" +msgstr "Fékheng" + +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:926 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:946 #: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1038 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1068 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1098 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1127 +msgid "BrkPipe" +msgstr "Fővez" + +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:934 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:954 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:985 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1016 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1046 msgid "Handbrk" msgstr "Kézifék" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1020 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1039 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1099 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1128 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:935 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:955 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1017 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1047 msgid "Conn" msgstr "Csatlás" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1021 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1040 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1100 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1129 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:936 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:956 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1018 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1048 msgid "AnglCock" msgstr "Végelzáró" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1032 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:947 msgid "VacRes" msgstr "VákTart" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1060 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:976 msgid "Brk" msgstr "Fék" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1091 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1008 msgid "SrvPipe" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1092 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1121 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1009 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1039 msgid "AuxRes" msgstr "KészlLT" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1093 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1122 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1010 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1040 msgid "ErgRes" msgstr "VészLT" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1094 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1011 msgid "StrPipe" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1095 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1124 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1012 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1042 +msgid "CtrlRes" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1013 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1043 msgid "RetValve" msgstr "Visszat" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1096 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1125 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1014 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1044 msgid "TripleValve" msgstr "Kormányszelep" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1101 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1130 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1019 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1049 msgid "BleedOff" msgstr "KieresztőSz" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1123 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1041 msgid "MRPipe" msgstr "FőlégVez" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1147 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1067 msgid "FORCE INFORMATION" msgstr "ERŐINFORMÁCIÓK" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1164 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1173 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1081 msgid "(Advanced adhesion model)" msgstr "(Fejlett csúszási modell)" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1165 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1190 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1198 -msgid "Loco Adhesion" -msgstr "Mozdony tapadása" - -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1166 -msgid "Wag Adhesion" -msgstr "Vagon tapadása" - -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1167 -msgid "Tang. Force" -msgstr "Kerületi erő" - -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1168 -msgid "Static Force" -msgstr "Statikus erő" - -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1175 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1084 msgid "Conditions" msgstr "Csúszási állapot" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1176 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1085 msgid "Axle drive force" msgstr "Tengely hajtóerő" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1178 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1086 msgid "Axle brake force" msgstr "Tengely fékezőerő" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1179 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1087 msgid "Number of substeps" msgstr "Allépések száma" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1180 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1197 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1088 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1117 msgid "Axle out force" msgstr "Tengely eredő erő" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1183 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1089 msgid "Comp Axle out force" msgstr "Kompenzált teng. eredő erő" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1186 -msgid "Wheel Speed" +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1090 +#, fuzzy +#| msgid "Wheel Speed" +msgid "Wheel speed" msgstr "Keréksebesség" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1191 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1199 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1109 +msgid "Wheel ang. pos." +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1110 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1118 +msgid "Loco Adhesion" +msgstr "Mozdony tapadása" + +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1111 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1119 msgid "Wagon Adhesion" msgstr "Vagon tapadása" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1196 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1116 msgid "(Simple adhesion model)" msgstr "(Egyszerűsített csúszási modell)" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1205 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1125 msgid "Wind Speed:" msgstr "Szélsebesség:" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1206 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1126 msgid "Wind Direction:" msgstr "Szélirány:" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1207 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1127 msgid "Train Direction:" msgstr "Haladási irány:" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1208 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1128 msgid "ResWind:" msgstr "Eredő szélseb:" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1209 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1129 msgid "ResSpeed:" msgstr "Eredő sebesség:" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1215 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1135 msgid "Total" msgstr "Össz" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1216 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1136 msgid "Motive" msgstr "Mozgató" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1217 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1137 msgid "Brake" msgstr "Fékező" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1218 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1138 msgid "Friction" msgstr "Súrlód" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1219 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1139 msgid "Gravity" msgstr "Gravit" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1220 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1228 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1140 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1148 msgid "Curve" msgstr "Ívellenáll" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1221 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1141 msgid "Tunnel" msgstr "Alagút" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1222 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1429 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1142 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1349 msgid "Wind" msgstr "Szél" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1223 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1224 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1143 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1144 msgid "Coupler" msgstr "Vonókész" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1225 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1145 msgid "Slack" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1226 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1146 msgid "Mass" msgstr "Tömeg" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1229 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1149 msgid "Brk Frict." msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1230 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1150 msgid "Brk Slide" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1231 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1151 msgid "Bear Temp" msgstr "Csapágyhőm" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1233 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:125 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1286 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1294 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1309 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1153 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:126 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1338 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1346 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1361 msgid "DerailCoeff" msgstr "Siklási együtth" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1283 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1203 msgid "DISPATCHER INFORMATION : active trains : " msgstr "FORGALOMIRÁNYÍTÁSI INFORMÁCIÓK : aktív vonatok : " -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1286 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1206 msgid "Train" msgstr "Vonat" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1287 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1207 msgid "Travelled" msgstr "MegtettÚt" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1289 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1209 msgid "Max" msgstr "Max" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1290 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1210 msgid "AI mode" msgstr "AI mód" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1291 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1211 msgid "AI data" msgstr "AI adatok" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1292 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1212 msgid "Mode" msgstr "Mód" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1293 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1213 msgid "Auth" msgstr "Engedély" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1295 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1215 msgid "Signal" msgstr "Jelző" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1297 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1217 msgid "Consist" msgstr "Szerelv" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1298 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1218 msgid "Path" msgstr "Útvonal" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1423 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1343 msgid "WEATHER INFORMATION" msgstr "IDŐJÁRÁSI INFORMÁCIÓK" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1425 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1345 msgid "Visibility" msgstr "Látótávolság" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1426 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1346 msgid "Cloud cover" msgstr "Felhőzet" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1427 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1347 msgid "Intensity" msgstr "Csapadékintenzitás" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1428 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1348 msgid "Liquidity" msgstr "Nedvesség" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1430 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1350 msgid "Amb Temp" msgstr "Külső hőmérséklet" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1436 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1356 msgid "DEBUG INFORMATION" msgstr "HIBAKERESÉSI INFORMÁCIÓK" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1438 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1358 msgid "Logging enabled" msgstr "Naplózás" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1439 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1359 msgid "Build" msgstr "Build" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1440 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1360 msgid "CPU" msgstr "CPU" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1441 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1361 msgid "GPU" msgstr "GPU" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1443 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1363 msgid "CPU Memory" msgstr "CPU memória" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1444 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1364 msgid "GPU Memory" msgstr "GPU memória" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1445 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1365 msgid "Adapter" msgstr "Adapter" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1450 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1370 msgid "Shadow maps" msgstr "Árnyéktérképek" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1452 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1372 msgid "Shadow primitives" msgstr "Árnyék primitívek" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1455 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1375 msgid "Render primitives" msgstr "Render primitívek" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1456 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1457 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1458 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1459 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1460 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1376 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1377 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1378 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1379 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1380 msgid "wait" msgstr "várakozás" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1460 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1380 msgid "Total process" msgstr "Összes folyamat" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1461 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1381 msgid "Camera" msgstr "Kamera" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1205 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1209 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1125 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1129 #, csharp-format msgid "{0:N2} mph" msgstr "{0:N2} mf/h" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1206 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1207 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1208 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1126 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1127 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1128 #, csharp-format msgid "{0:N2} Deg" msgstr "{0:N2} fok" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1425 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1345 #, csharp-format msgid "{0:N0} m" msgstr "{0:N0} m" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1426 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1428 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1346 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1348 #, csharp-format msgid "{0:F0} %" msgstr "{0:F0} %" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1427 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1347 #, csharp-format msgid "{0:F4} p/s/m^2" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1429 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1349 #, csharp-format msgid "{0:F1},{1:F1} m/s" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1440 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1360 #, csharp-format msgid "{0:F0}% ({1})" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1441 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1361 #, csharp-format msgid "" "{0:F0} FPS (50th/95th/99th percentiles {1:F1} / {2:F1} / {3:F1} ms, DirectX " "feature level >= {4})" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1442 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1362 #, csharp-format msgid "" "{3}, {4}, {5}, {6} ({7:F0} kB/frame allocated, {0:F0}/{1:F0}/{2:F0} GCs)" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1443 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1363 #, csharp-format msgid "" "{0:F0} MB private, {1:F0} MB working set, {2:F0} MB private working set, " "{3:F0} MB managed, {4:F0} MB virtual" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1444 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1364 #, csharp-format msgid "{0:F0} MB committed, {1:F0} MB dedicated, {2:F0} MB shared" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1445 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1365 #, csharp-format msgid "{0} ({1:F0} MB)" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1448 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1368 #, csharp-format msgid "{0}/{1}" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1449 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1369 #, csharp-format msgid "({0}x{0})" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1452 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1455 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1372 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1375 #, csharp-format msgid "{0:F0}" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1456 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1457 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1458 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1459 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1460 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1376 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1377 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1378 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1379 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1380 #, csharp-format msgid "{0:F0}% ({1:F0}% {2})" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1440 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:1360 #, csharp-format msgid "{0} logical processor" msgid_plural "{0} logical processors" @@ -1889,57 +2232,57 @@ msgstr[0] "{0} logikai processzor" msgstr[1] "{0} logikai processzor" #. Context: Cab -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:640 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:668 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:550 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:578 msgctxt "Cab" msgid "R" msgstr "H" #. Context: Cab -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:640 -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:668 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:550 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:578 msgctxt "Cab" msgid "F" msgstr "E" #. Context: Cab -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:668 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:578 msgctxt "Cab" msgid "D" msgstr "V" #. Context: Steam -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:706 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:616 msgctxt "Steam" msgid "Reverser" msgstr "Vezérmű" #. Context: NonSteam -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:706 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:616 msgctxt "NonSteam" msgid "Reverser" msgstr "Irányváltó" #. Context: Pantograph -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:776 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:686 msgctxt "Pantograph" msgid "Panto" msgstr "Áramsz" #. Context: Engine -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:777 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:687 msgctxt "Engine" msgid "Eng" msgstr "Motor" #. Context: CircuitBreaker -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:778 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:688 msgctxt "CircuitBreaker" msgid "CB" msgstr "FőMegsz" #. Context: TractionCutOffRelay -#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:779 +#: ../../RunActivity/Viewer3D/Popups/HUDWindow.cs:689 msgctxt "TractionCutOffRelay" msgid "TCOR" msgstr "VontTiltóR" @@ -2034,12 +2377,12 @@ msgstr "Elegy cseréje az elöl lévő vonattal" msgid "Activity completed." msgstr "Szolgálat teljesítve." -#: ../../RunActivity/Viewer3D/Popups/NoticeWindow.cs:96 +#: ../../RunActivity/Viewer3D/Popups/NoticeWindow.cs:97 #, csharp-format msgid "Odometer {0}" msgstr "Útmérő {0}" -#: ../../RunActivity/Viewer3D/Popups/NoticeWindow.cs:110 +#: ../../RunActivity/Viewer3D/Popups/NoticeWindow.cs:113 #, csharp-format msgid "FOV: {0:F0}°" msgstr "Látószög: {0:F0}°" @@ -2127,11 +2470,6 @@ msgstr "Megengedett:" msgid " Milepost Limit Dist" msgstr "Szelvény Lassúmenet Táv" -#: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:135 -#: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:74 -msgid "Flow" -msgstr "Fogyaszt." - #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:135 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:74 msgid "FLOW" @@ -2143,9 +2481,9 @@ msgid "Fuel" msgstr "Üzemanyag" #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:136 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:133 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:134 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:75 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:97 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:98 msgid "FUEL" msgstr "" @@ -2162,8 +2500,8 @@ msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:138 #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:239 #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:615 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:137 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1105 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:138 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1157 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:77 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:197 msgid "Loco Groups" @@ -2171,7 +2509,7 @@ msgstr "Gépcsoport" #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:138 #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:239 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:137 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:138 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:77 msgid "GRUP" msgstr "" @@ -2187,9 +2525,9 @@ msgid "OIL" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:140 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:140 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:142 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:79 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:103 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:104 msgid "POWR" msgstr "" @@ -2209,17 +2547,17 @@ msgid "RPM" msgstr "ford/perc" #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:143 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:144 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:146 #: ../../RunActivity/Viewer3D/WebServices/TrackMonitorDisplay.cs:332 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:82 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:107 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:108 msgid "Reverser" msgstr "Irányváltó" #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:143 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:144 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:146 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:82 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:107 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:108 msgid "REVR" msgstr "" @@ -2239,16 +2577,16 @@ msgid "TEMP" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:146 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:148 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:151 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:85 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:111 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:112 msgid "THRO" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDPUWindow.cs:147 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:149 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:152 #: ../../RunActivity/Viewer3D/WebServices/TrainDpuDisplay.cs:86 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:112 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:113 msgid "TIME" msgstr "" @@ -2302,601 +2640,652 @@ msgid "BP" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:52 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:805 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:820 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:829 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:365 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:380 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:389 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:810 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:825 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:834 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:366 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:381 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:390 msgid "EQ" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:53 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:830 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:831 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:843 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:844 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:862 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:863 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:835 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:836 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:859 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:860 msgid "V" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:116 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1163 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:81 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:686 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1215 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:82 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:687 msgid "AI Fireman" msgstr "Autofűtő" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:116 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:81 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:82 msgid "AIFR" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:117 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:82 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:83 msgid "AUTO" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:118 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:83 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:84 msgid "Battery switch" msgstr "Akkumulátorkapcsoló" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:118 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:83 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:84 msgid "BATT" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:119 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:990 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1008 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:84 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:537 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:555 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1014 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1032 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:85 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:538 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:556 msgid "Boiler pressure" msgstr "Kazánnyomás" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:119 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:84 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:85 msgid "PRES" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:120 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:85 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:86 msgid "Boiler water glass" msgstr "Kazán vízszintfigyelő" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:120 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:85 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:86 msgid "WATR" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:121 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:86 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:87 msgid "Boiler water level" msgstr "Kazánvízszint" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:121 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:86 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:87 msgid "LEVL" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:122 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:87 -msgid "Circuit breaker" -msgstr "Főmegszakító" +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1117 +#, fuzzy +#| msgid "Status" +msgid "CCStatus" +msgstr "Állapot" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:122 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:87 -msgid "CIRC" +msgid "CCST" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:123 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:765 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:88 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:325 -msgid "Cylinder cocks" -msgstr "Hengercsapok" +msgid "Circuit breaker" +msgstr "Főmegszakító" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:123 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:88 -msgid "CCOK" +msgid "CIRC" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:124 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:770 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:89 -msgid "DIRC" +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:326 +msgid "Cylinder cocks" +msgstr "Hengercsapok" + +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:124 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:89 +msgid "CCOK" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:125 -msgid "DRLC" +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:90 +msgid "DIRC" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:126 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:90 -msgid "DOOR" +msgid "DRLC" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:127 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:91 -msgid "BDYN" +msgid "DOOR" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:128 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:92 +msgid "BDYN" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:129 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:93 msgid "Electric train supply" msgstr "Villamos fűtés" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:128 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:92 -msgid "TSUP" -msgstr "" - #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:129 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:93 -msgid "BLOC" +msgid "TSUP" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:130 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1066 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:94 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:614 -msgid "Engine" -msgstr "Gép" - -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:130 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:94 -msgid "ENGN" +msgid "BLOC" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:131 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1090 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:95 -msgid "Fire mass" -msgstr "Tűztömeg" +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:615 +msgid "Engine" +msgstr "Gép" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:131 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:95 -msgid "FIRE" +msgid "ENGN" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:132 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:96 -msgid "Fixed gear" -msgstr "Rögzített seb.fokozat" +msgid "Fire mass" +msgstr "Tűztömeg" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:132 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:134 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:96 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:98 -msgid "GEAR" +msgid "FIRE" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:133 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1013 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:97 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:560 -msgid "Fuel levels" -msgstr "Készletszintek" +msgid "Fixed gear" +msgstr "Rögzített seb.fokozat" + +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:133 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:135 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:97 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:99 +msgid "GEAR" +msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:134 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1021 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1037 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:98 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:568 -msgid "Gear" -msgstr "Seb.fokozat" +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:561 +msgid "Fuel levels" +msgstr "Készletszintek" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:135 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1045 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:99 -msgid "GRAD" -msgstr "" +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:569 +msgid "Gear" +msgstr "Seb.fokozat" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:136 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1180 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1194 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:100 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:703 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:717 +msgid "GRAD" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:137 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1232 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1246 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:101 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:704 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:718 msgid "Grate limit" msgstr "Rostély korlát" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:136 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:100 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:137 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:101 msgid "GRAT" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:138 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:101 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:139 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:102 msgid "Master key" msgstr "Mesterkulcs" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:138 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:101 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:139 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:102 msgid "MAST" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:139 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1045 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:102 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:592 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:140 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1132 +msgid "MaxAccel" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:140 +msgid "MACC" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:141 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1069 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:103 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:593 msgid "Pantographs" msgstr "Áramszedők" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:139 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:102 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:141 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:103 msgid "PANT" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:141 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:104 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:143 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:105 msgid "REGL" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:142 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:105 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:144 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:106 msgid "RPLY" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:143 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:106 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:145 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:107 msgid "RETN" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:145 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:779 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:789 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:108 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:339 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:349 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:147 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:784 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:794 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:109 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:340 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:350 msgid "Sander" msgstr "Homokoló" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:145 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:108 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:147 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:109 msgid "SAND" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:146 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:109 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:148 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:110 msgid "SPED" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:147 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:110 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:149 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:111 msgid "Steam usage" msgstr "Gőzfelhasználás" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:147 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:110 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:149 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:111 msgid "STEM" msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:150 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:113 -msgid "Traction cut-off relay" -msgstr "Vontatástiltó relé" +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1125 +msgid "Target" +msgstr "" #: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:150 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:113 -msgid "TRAC" +msgid "TARG" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:151 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:153 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:114 -msgid "BTRN" +msgid "Traction cut-off relay" +msgstr "Vontatástiltó relé" + +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:153 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:114 +msgid "TRAC" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:152 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1213 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1221 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1229 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1243 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:154 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:115 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:735 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:743 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:751 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:765 +msgid "BTRN" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:155 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1265 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1273 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1281 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1295 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:116 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:736 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:744 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:752 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:766 msgid "Wheel" msgstr "Tengely" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:152 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:115 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:155 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:116 msgid "WHEL" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:157 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:120 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:160 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:121 msgid "(absolute)" msgstr "(abszolút)" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:157 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:120 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:160 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:121 msgid "(Abs.)" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:158 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:121 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:161 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:122 msgid "apply Service" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:158 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:121 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:161 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:122 msgid "Apply" msgstr "Működtetés" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:159 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:122 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:162 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:123 msgid "Apply Quick" msgstr "Gyorsműködtetés" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:159 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:122 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:162 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:123 msgid "ApplQ" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:160 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:123 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:163 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:124 msgid "Apply Slow" msgstr "Lassú működtetés" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:160 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:123 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:163 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:124 msgid "ApplS" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:161 -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:411 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:124 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:164 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:449 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:125 msgid "coal" msgstr "szén" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:161 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:124 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:164 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:125 msgid "c" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:162 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:165 msgid "Cont. Service" msgstr "Folyamatos üzem" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:162 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:165 msgid "Serv" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:163 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:125 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:166 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:126 msgid "Emergency Braking Push Button" msgstr "Vészfék ütőgomb" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:163 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:125 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:166 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:126 msgid "EmerBPB" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:164 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:126 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:167 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:127 msgid "Lap Self" msgstr "Fokozatos fékezés" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:164 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:126 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:167 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:127 msgid "LapS" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:165 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:127 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:168 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:128 msgid "Minimum Reduction" msgstr "Elsőfokozati nyomáscsökkentés" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:165 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:127 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:168 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:128 msgid "MRedc" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:166 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:128 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:169 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:129 msgid "(safe range)" msgstr "(biztonságos)" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:166 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:128 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:169 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:129 msgid "(safe)" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:167 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1230 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:129 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:752 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:170 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1282 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:130 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:753 msgid "skid" msgstr "csúszás" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:167 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:129 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:170 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:130 msgid "Skid" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:168 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1222 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:130 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:744 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:171 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1274 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:131 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:745 msgid "slip warning" msgstr "kerékmegperdülési figyelmeztetés" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:168 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1295 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:130 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:171 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1347 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:131 msgid "Warning" msgstr "Figyelmeztetés" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:169 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1214 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:131 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:736 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:172 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1266 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:132 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:737 msgid "slip" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:169 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:131 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:172 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:132 msgid "Slip" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:170 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:173 msgid "Vac. Cont. Service" msgstr "Vákuum folyamatos üzem" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:170 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:173 msgid "Vac.Serv" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:171 -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:410 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:132 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:174 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:448 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:133 msgid "water" msgstr "víz" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:171 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:132 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:174 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:133 msgid "w" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:219 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:222 msgid "Train Driving Info" msgstr "Vonatvezetési infó" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:631 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:634 msgid "bar" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:632 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:635 msgid "inHg" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:633 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:636 msgid "kgf/cm²" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:634 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:637 msgid "kPa" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:635 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:638 msgid "psi" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:636 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:639 +msgid "cfm" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:640 +msgid "L/s" +msgstr "" + +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:641 msgid "lib./pal." msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:637 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:642 msgid "pal.rtuti" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:755 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:315 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:760 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:316 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:447 msgid "Open" msgstr "Nyitva" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:760 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1346 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:320 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:801 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:765 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1400 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:321 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:804 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:452 msgid "Closed" msgstr "Zárva" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:780 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:340 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:785 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:341 msgid "Blocked" msgstr "Tiltva" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:780 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1127 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1164 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:340 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:650 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:687 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:785 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1179 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1216 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:341 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:651 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:688 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:126 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:216 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:238 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:261 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:395 msgid "On" msgstr "Be" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:790 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:976 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1127 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1164 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:350 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:523 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:650 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:687 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:795 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1000 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1179 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1216 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:351 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:524 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:651 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:688 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:108 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:126 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:221 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:243 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:266 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:395 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:408 msgid "Off" msgstr "Ki" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:833 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:846 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:865 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:909 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:911 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:918 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:936 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:943 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:390 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:399 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:414 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:457 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:459 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:466 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:484 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:491 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:838 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:862 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:933 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:935 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:942 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:960 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:967 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:391 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:400 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:415 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:458 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:460 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:467 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:485 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:492 msgid "BC" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:840 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:842 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:848 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:853 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:885 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:887 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:893 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1093 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:396 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:398 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:400 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:405 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:433 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:435 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:441 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:850 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:852 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:874 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:875 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:886 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:888 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:890 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:909 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:911 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:917 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1145 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:397 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:399 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:401 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:406 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:434 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:436 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:442 msgid "EOT" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:874 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:876 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:877 -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:884 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:422 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:424 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:898 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:900 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:901 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:908 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:423 #: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:425 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:432 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:426 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:433 msgid "Lead" msgstr "" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:967 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:515 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:991 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:516 msgid "Setup" msgstr "Beállítás" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1051 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:598 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1075 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:599 msgid "Up" msgstr "Fel" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1164 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:687 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1216 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:688 msgid "Reset" msgstr "Alaphelyzet" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1181 -#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:704 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1233 +#: ../../RunActivity/Viewer3D/WebServices/TrainDrivingDisplay.cs:705 msgid "Exceeded" msgstr "Túllépte" -#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1287 +#: ../../RunActivity/Viewer3D/Popups/TrainDrivingWindow.cs:1339 msgid "Derailed" msgstr "Kisiklott" @@ -2987,138 +3376,138 @@ msgstr "" "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 \",.-+|!$%&/" "()=?;:'_[]ÁÍŰŐÜÖÚÓÉáíűőüöúóé" -#: ../../RunActivity/Viewer3D/Processes/GameStateRunActivity.cs:367 +#: ../../RunActivity/Viewer3D/Processes/GameStateRunActivity.cs:379 msgid "Game save is not allowed during container load/unload" msgstr "Játékmentés nem lehetséges konténerrakodás közben" -#: ../../RunActivity/Viewer3D/Processes/GameStateRunActivity.cs:1257 +#: ../../RunActivity/Viewer3D/Processes/GameStateRunActivity.cs:1270 #, csharp-format msgid "Activity Save file '*.save' not found in folder {0}" msgstr "A {0} könyvtár nem tartalmaz '*.save' mentést" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:406 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:444 msgid "freight-grain" msgstr "szemestermény" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:407 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:445 msgid "freight-coal" msgstr "szén" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:408 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:446 msgid "freight-gravel" msgstr "kavics" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:409 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:447 msgid "freight-sand" msgstr "homok" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:412 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:450 msgid "diesel oil" msgstr "dízelolaj" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:413 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:451 msgid "wood" msgstr "fa" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:414 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:452 msgid "sand" msgstr "homok" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:415 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:453 msgid "freight-general" msgstr "vegyesteher" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:416 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:454 msgid "freight-livestock" msgstr "élőállat" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:417 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:455 msgid "freight-fuel" msgstr "olaj" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:418 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:456 msgid "freight-milk" msgstr "tej" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:419 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:457 msgid "mail" msgstr "posta" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:420 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:458 msgid "container" msgstr "konténer" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:568 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:606 msgid "Refill: Immediate refill process selected, refilling immediately." msgstr "Feltöltés: Azonnali feltöltés aktiválva." -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:589 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:627 msgid "Refill: Electric loco and no pickup. Command rejected" msgstr "Feltöltés: Villanymozdony üzemanyag nélkül. Parancs visszautasítva" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:749 -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:768 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:787 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:806 msgid "Incompatible pickup type" msgstr "Nem megfelelő üzemanyag" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:755 -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:773 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:793 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:811 msgid "Starting refill" msgstr "A feltöltés megkezdődött" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:599 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:637 #, csharp-format msgid "Container crane: Distance to {0} supply is {1}." msgstr "Konténerdaru: Távolság a {0}ig {1}." -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:610 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:648 #, csharp-format msgid "Refill: Distance to {0} supply is {1}." msgstr "Feltöltés: A {0} töltőhelyétől való távolság {1}." -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:620 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:658 #, csharp-format msgid "Refill: Loco must be stationary to refill {0}." msgstr "" "Feltöltés: A mozdonynak álló helyzetben kell lennie a {0} feltöltéséhez." -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:626 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:664 #, csharp-format msgid "Refill: Loco speed must exceed {0}." msgstr "Feltöltés: A mozdony sebességének magasabbnak kell lennie {0}-nál." -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:633 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:671 #, csharp-format msgid "Refill: Loco speed must not exceed {0}." msgstr "Feltöltés: A mozdony sebessége nem lehet több {0}-nál." -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:651 -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:672 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:689 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:710 #, csharp-format msgid "Refill: {0} supply now replenished." msgstr "Feltöltés: A {0} feltöltve a vételezési helyen." -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:678 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:716 #, csharp-format msgid "Unload: {0} fuel or freight now unloaded." msgstr "Lerakodás: {0} áru kirakodva." -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:696 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:734 msgid "wag file not equipped for containers" msgstr "A wag fájl nincs felkészítve konténerekre" -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:701 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:739 #, csharp-format msgid "{0} now loaded." msgstr "{0} felrakodva." -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:707 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:745 #, csharp-format msgid "{0} now unloaded." msgstr "{0} lerakodva." -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:600 -#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:611 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:638 +#: ../../RunActivity/Viewer3D/RollingStock/MSTSLocomotiveViewer.cs:649 #, csharp-format msgid "{0} meter" msgid_plural "{0} meters" @@ -3179,6 +3568,371 @@ msgstr "Mérföldkő" msgid "Dist" msgstr "Táv" +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:168 +#, fuzzy +#| msgid "Switch Ahead" +msgctxt "SwitchPanel" +msgid "Switch Ahead" +msgstr "Vágányútállítás a vonat előtt" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:171 +#, fuzzy +#| msgid "Switch Behind" +msgctxt "SwitchPanel" +msgid "Switch Behind" +msgstr "Vágányútállítás a vonat mögött" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:174 +#, fuzzy +#| msgctxt "Cab" +#| msgid "change" +msgctxt "SwitchPanel" +msgid "Change Cab" +msgstr "váltás megtörtént" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:177 +#, fuzzy +#| msgid "Max" +msgctxt "SwitchPanel" +msgid "Map" +msgstr "Max" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:180 +#, fuzzy +#| msgid "Switch Ahead" +msgctxt "SwitchPanel" +msgid "Switch Manual" +msgstr "Vágányútállítás a vonat előtt" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:183 +msgctxt "SwitchPanel" +msgid "Clear Signal Forward" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:186 +#, fuzzy +#| msgid "Autopilot" +msgctxt "SwitchPanel" +msgid "Autopilot" +msgstr "Robotpilóta" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:189 +#, fuzzy +#| msgid "Track Monitor" +msgctxt "SwitchPanel" +msgid "Track Monitor" +msgstr "Pályafigyelő" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:192 +msgctxt "SwitchPanel" +msgid "HUD" +msgstr "" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:195 +#, fuzzy +#| msgid "Train Driving Info" +msgctxt "SwitchPanel" +msgid "Train Driving" +msgstr "Vonatvezetési infó" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:198 +#, fuzzy +#| msgid "Switch" +msgctxt "SwitchPanel" +msgid "Switch" +msgstr "Váltó" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:201 +#, fuzzy +#| msgid "Train Operations" +msgctxt "SwitchPanel" +msgid "Train Operations" +msgstr "Vonatvizsgálat" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:204 +#, fuzzy +#| msgid "Train Dpu Info" +msgctxt "SwitchPanel" +msgid "Train Dpu" +msgstr "Gépcsoport infó" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:207 +#, fuzzy +#| msgid "Next Station" +msgctxt "SwitchPanel" +msgid "Next Station" +msgstr "Menetrend" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:210 +#, fuzzy +#| msgid "Train List" +msgctxt "SwitchPanel" +msgid "Train List" +msgstr "Vonatok listája" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:213 +#, fuzzy +#| msgid "EOT List" +msgctxt "SwitchPanel" +msgid "EOT List" +msgstr "Vonatvégvezérlők" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:216 +#, fuzzy +#| msgid "Direction" +msgctxt "SwitchPanel" +msgid "Direction" +msgstr "Irány" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:219 +#, fuzzy +#| msgid "Gear" +msgctxt "SwitchPanel" +msgid "Gear" +msgstr "Seb.fokozat" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:222 +#, fuzzy +#| msgid "Handbrake" +msgctxt "SwitchPanel" +msgid "Handbrake" +msgstr "Kézifék" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:225 +#, fuzzy +#| msgid "Brake Hose" +msgctxt "SwitchPanel" +msgid "Brake hose" +msgstr "Légvezetékek" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:228 +#, fuzzy +#| msgid "Alerter" +msgctxt "SwitchPanel" +msgid "Alerter" +msgstr "Éberségjelzés" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:231 +#, fuzzy +#| msgid "Emergency" +msgctxt "SwitchPanel" +msgid "Emergency" +msgstr "Gyorsfék" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:234 +#, fuzzy +#| msgid "Sander" +msgctxt "SwitchPanel" +msgid "Sander" +msgstr "Homokoló" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:237 +#, fuzzy +#| msgid "Wipers" +msgctxt "SwitchPanel" +msgid "Wiper" +msgstr "Ablaktörlő" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:240 +#, fuzzy +#| msgid "Doors Left" +msgctxt "SwitchPanel" +msgid "Door Left" +msgstr "Baloldali ajtók" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:243 +#, fuzzy +#| msgid "Doors Right" +msgctxt "SwitchPanel" +msgid "Door Right" +msgstr "Jobboldali ajtók" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:246 +#, fuzzy +#| msgid "Right" +msgctxt "SwitchPanel" +msgid "Light" +msgstr "Jobb" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:249 +#, fuzzy +#| msgid "Pantograph 1" +msgctxt "SwitchPanel" +msgid "Pantograph 1" +msgstr "1-es áramszedő" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:252 +#, fuzzy +#| msgid "Pantograph 2" +msgctxt "SwitchPanel" +msgid "Pantograph 2" +msgstr "2-es áramszedő" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:255 +#, fuzzy +#| msgid "Battery switch" +msgctxt "SwitchPanel" +msgid "Battery Switch" +msgstr "Akkumulátorkapcsoló" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:258 +#, fuzzy +#| msgid "Master key" +msgctxt "SwitchPanel" +msgid "Master Key" +msgstr "Mesterkulcs" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:261 +#, fuzzy +#| msgid "Circuit breaker" +msgctxt "SwitchPanel" +msgid "Circuit Breaker" +msgstr "Főmegszakító" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:264 +#, fuzzy +#| msgid "Traction cut-off relay" +msgctxt "SwitchPanel" +msgid "Traction Cut-Off" +msgstr "Vontatástiltó relé" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:267 +#, fuzzy +#| msgid "Player" +msgctxt "SwitchPanel" +msgid "Diesel Player" +msgstr "Játékos" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:270 +#, fuzzy +#| msgid "Helper" +msgctxt "SwitchPanel" +msgid "Diesel Helper" +msgstr "Segéd" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:273 +#, fuzzy +#| msgid "Freight" +msgctxt "SwitchPanel" +msgid "Front light" +msgstr "Teher" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:276 +#, fuzzy +#| msgid "CylCock" +msgctxt "SwitchPanel" +msgid "Cyl Cocks" +msgstr "HCsap" + +#. Context: SwitchPanel +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs:279 +#, fuzzy +#| msgid "Retainers" +msgctxt "SwitchPanel" +msgid "Retainers" +msgstr "Visszatartó szelepek" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:111 +#, fuzzy +#| msgid "dim" +msgid "Dim" +msgstr "tompított" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:115 +#, fuzzy +#| msgid "bright" +msgid "Bright" +msgstr "távolsági" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:231 +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:254 +msgid "Always On" +msgstr "" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:281 +#, fuzzy +#| msgid "Auto Switch" +msgid "Automatic" +msgstr "Auto váltás" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:310 +msgid "Always on" +msgstr "" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:401 +msgid "Full" +msgstr "" + +#: ../../RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs:435 +#, fuzzy +#| msgid "connected" +msgid "Connected" +msgstr "csatl." + +#~ msgid "Confirmations visible" +#~ msgstr "Visszajelzések láthatóak" + +#~ msgid "Toggle Handbrake" +#~ msgstr "Kézifék átállítása" + +#~ msgid "Toggle Power" +#~ msgstr "Gép indítása/leállítása" + +#~ msgid "Toggle Battery Switch" +#~ msgstr "Akkumulátor ki-/bekapcsolása" + +#~ msgid "Toggle Electric Train Supply Connection" +#~ msgstr "Elektromos betáp csatlakoztatása" + +#~ msgid "Toggle Brake Hose Connection" +#~ msgstr "Féktömlő (szét)csatolása" + +#~ msgid "Wag Adhesion" +#~ msgstr "Vagon tapadása" + +#~ msgid "Tang. Force" +#~ msgstr "Kerületi erő" + +#~ msgid "Static Force" +#~ msgstr "Statikus erő" + #~ msgid "Solver" #~ msgstr "Számítóképlet" @@ -3233,9 +3987,6 @@ msgstr "Táv" #~ msgid "EPApply" #~ msgstr "EP alkalmazása" -#~ msgid "Emergency" -#~ msgstr "Gyorsfék" - #~ msgid "Lap" #~ msgstr "Fékhatárolás" @@ -3293,12 +4044,6 @@ msgstr "Táv" #~ msgid "Dispatcher does not allow hand throw at this time" #~ msgstr "A forgalomirányító nem engedi a váltó kézi állítását pillanatnyilag" -#~ msgid "main route" -#~ msgstr "fővágány" - -#~ msgid "side route" -#~ msgstr "mellékvágány" - #~ msgid "You are the new dispatcher. Enjoy!" #~ msgstr "Te vagy az új forgalomirányító. Élvezd!" @@ -3326,9 +4071,6 @@ msgstr "Táv" #~ msgstr "" #~ "Mostantól alirányító vagy, képes leszel kezelni a váltókat és jelzőket." -#~ msgid "You are no longer an assistant." -#~ msgstr "Nem vagy többé alirányító" - #~ msgid "Switched, current route is {0}" #~ msgstr "Átváltva, a beállított vágány a {0}" @@ -3413,18 +4155,12 @@ msgstr "Táv" #~ msgid "warning" #~ msgstr "figyelmeztetőjel" -#~ msgid "Pantograph 1" -#~ msgstr "1-es áramszedő" - #~ msgid "lower" #~ msgstr "le" #~ msgid "raise" #~ msgstr "fel" -#~ msgid "Pantograph 2" -#~ msgstr "2-es áramszedő" - #~ msgid "Player Diesel Power" #~ msgstr "Vonógép dízelmotor" @@ -3524,9 +4260,6 @@ msgstr "Táv" #~ msgid "cannot initialize. Stop train then re-try." #~ msgstr "nem üzembehelyezhetők. Előbb állítsd meg a vonatot." -#~ msgid "Handbrake" -#~ msgstr "Kézifék" - #~ msgid "none" #~ msgstr "ki" @@ -3536,12 +4269,6 @@ msgstr "Táv" #~ msgid "Slow Direct" #~ msgstr "Elnyújtott kiömlés" -#~ msgid "Brake Hose" -#~ msgstr "Légvezetékek" - -#~ msgid "Alerter" -#~ msgstr "Éberségjelzés" - #~ msgid "Horn" #~ msgstr "Kürt" @@ -3560,18 +4287,9 @@ msgstr "Táv" #~ msgid "Headlight" #~ msgstr "Homlokfény" -#~ msgid "dim" -#~ msgstr "tompított" - -#~ msgid "bright" -#~ msgstr "távolsági" - #~ msgid "Cab Light" #~ msgstr "Vezérállás világítása" -#~ msgid "Wipers" -#~ msgstr "Ablaktörlő" - #~ msgid "changing is not available" #~ msgstr "váltás nem lehetséges" @@ -3585,12 +4303,6 @@ msgstr "Táv" #~ msgid "Odometer" #~ msgstr "Útmérő" -#~ msgid "Doors Left" -#~ msgstr "Baloldali ajtók" - -#~ msgid "Doors Right" -#~ msgstr "Jobboldali ajtók" - #~ msgid "Mirror" #~ msgstr "Tükrök" @@ -3600,16 +4312,10 @@ msgstr "Táv" #~ msgid "extend" #~ msgstr "kihajtás" -#~ msgid "Switch Ahead" -#~ msgstr "Vágányútállítás a vonat előtt" - #~ msgid "locked. Use Control+M to change signals to manual mode then re-try." #~ msgstr "" #~ "letiltva. Előbb nyomj -et a kézi forgalomirányításra váltáshoz." -#~ msgid "Switch Behind" -#~ msgstr "Vágányútállítás a vonat mögött" - #~ msgid "Uncouple After" #~ msgstr "Szétcsatolás hátul" @@ -3686,10 +4392,6 @@ msgstr "Táv" #~ msgid "sound" #~ msgstr "meszólaltatás" -#~ msgctxt "Cab" -#~ msgid "change" -#~ msgstr "váltás megtörtént" - #~ msgctxt "Odometer" #~ msgid "reset" #~ msgstr "nullázva" @@ -3927,9 +4629,6 @@ msgstr "Táv" #~ msgid "Steam Usage" #~ msgstr "Gőzfelhasználás" -#~ msgid "Usage:" -#~ msgstr "Felhaszn:" - #~ msgid "Cyl" #~ msgstr "Henger" @@ -3939,9 +4638,6 @@ msgstr "Táv" #~ msgid "SafetyV" #~ msgstr "BiztSz" -#~ msgid "CylCock" -#~ msgstr "HCsap" - #~ msgid "Genertr" #~ msgstr "Genertr" @@ -4169,10 +4865,6 @@ msgstr "Táv" #~ msgid "Oil" #~ msgstr "Olaj" -#~ msgctxt "Engine" -#~ msgid "Stopped" -#~ msgstr "Leállítva" - #~ msgctxt "Engine" #~ msgid "Starting" #~ msgstr "Indul" @@ -4188,12 +4880,6 @@ msgstr "Táv" #~ msgid "Held for connecting train : " #~ msgstr "Várakoztatás csatlakozó vonat miatt: " -#~ msgid "Left" -#~ msgstr "Bal" - -#~ msgid "Right" -#~ msgstr "Jobb" - #~ msgid "Compound locomotive" #~ msgstr "Kompaund mozdony" diff --git a/Source/Locales/Updater/Updater.pot b/Source/Locales/Updater/Updater.pot index d30dabe9bc..bf3c9c8bf3 100644 --- a/Source/Locales/Updater/Updater.pot +++ b/Source/Locales/Updater/Updater.pot @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2023-02-21 17:54:21+0300\n" -"PO-Revision-Date: 2023-02-21 17:54:21+0300\n" +"POT-Creation-Date: 2023-12-03 15:17:01+0100\n" +"PO-Revision-Date: 2023-12-03 15:17:01+0100\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" diff --git a/Source/ORTS.Common/Input/UserCommand.cs b/Source/ORTS.Common/Input/UserCommand.cs index c06a814728..7c2e5deab2 100644 --- a/Source/ORTS.Common/Input/UserCommand.cs +++ b/Source/ORTS.Common/Input/UserCommand.cs @@ -61,6 +61,8 @@ public enum UserCommand [GetString("Debug Precipitation Decrease")] DebugPrecipitationDecrease, [GetString("Debug Precipitation Liquidity Increase")] DebugPrecipitationLiquidityIncrease, [GetString("Debug Precipitation Liquidity Decrease")] DebugPrecipitationLiquidityDecrease, + [GetString("Debug Daylight Offset Increase")] DebugDaylightOffsetIncrease, + [GetString("Debug Daylight Offset Decrease")] DebugDaylightOffsetDecrease, [GetString("Debug Weather Change")] DebugWeatherChange, [GetString("Debug Clock Forwards")] DebugClockForwards, [GetString("Debug Clock Backwards")] DebugClockBackwards, diff --git a/Source/ORTS.Settings/InputSettings.cs b/Source/ORTS.Settings/InputSettings.cs index e94ace6e7e..3ba97f5c74 100644 --- a/Source/ORTS.Settings/InputSettings.cs +++ b/Source/ORTS.Settings/InputSettings.cs @@ -480,6 +480,8 @@ static void InitializeCommands(UserCommandInput[] Commands) Commands[(int)UserCommand.DebugLockShadows] = new UserCommandKeyInput(0x1F, KeyModifiers.Control | KeyModifiers.Alt); Commands[(int)UserCommand.DebugLogger] = new UserCommandKeyInput(0x58); Commands[(int)UserCommand.DebugLogRenderFrame] = new UserCommandKeyInput(0x58, KeyModifiers.Alt); + Commands[(int)UserCommand.DebugDaylightOffsetDecrease] = new UserCommandKeyInput(0x0C, KeyModifiers.Shift | KeyModifiers.Alt); + Commands[(int)UserCommand.DebugDaylightOffsetIncrease] = new UserCommandKeyInput(0x0D, KeyModifiers.Shift | KeyModifiers.Alt); Commands[(int)UserCommand.DebugOvercastDecrease] = new UserCommandKeyInput(0x0C, KeyModifiers.Control); Commands[(int)UserCommand.DebugOvercastIncrease] = new UserCommandKeyInput(0x0D, KeyModifiers.Control); Commands[(int)UserCommand.DebugPhysicsForm] = new UserCommandKeyInput(0x3D, KeyModifiers.Alt); diff --git a/Source/Orts.Simulation/Simulation/Weather.cs b/Source/Orts.Simulation/Simulation/Weather.cs index 2d6fff3cbe..543a232977 100644 --- a/Source/Orts.Simulation/Simulation/Weather.cs +++ b/Source/Orts.Simulation/Simulation/Weather.cs @@ -44,6 +44,9 @@ public class Weather // Fog/visibility distance. Ranges from 10m (can't see anything), 5km (medium), 20km (clear) to 100km (clear arctic). public float FogDistance; + + // Daylight offset (-12h to +12h) + public int DaylightOffset = 0; // Precipitation liquidity; =1 for rain, =0 for snow; intermediate values possible with dynamic weather; public float PrecipitationLiquidity; diff --git a/Source/RunActivity/Program.cs b/Source/RunActivity/Program.cs index 89d13a81b3..de5ca04f9b 100644 --- a/Source/RunActivity/Program.cs +++ b/Source/RunActivity/Program.cs @@ -20,6 +20,7 @@ using System.Linq; using System.Reflection; using System.Runtime.InteropServices; +using System.Windows.Forms; using Orts.Common; using Orts.Simulation; using Orts.Viewer3D; @@ -40,7 +41,7 @@ static class Program { public static Simulator Simulator; public static Viewer Viewer; - public static DispatchViewer DebugViewer; + public static MapViewer MapForm; public static SoundDebugForm SoundDebugForm; public static ORTraceListener ORTraceListener; public static string logFileName = ""; // contains path to file @@ -60,6 +61,9 @@ static void Main(string[] args) path = Path.Combine(path, (Environment.Is64BitProcess) ? "X64" : "X86"); NativeMethods.SetDllDirectory(path); + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + var game = new Game(settings); game.PushState(new GameStateRunActivity(args)); game.Run(); diff --git a/Source/RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs b/Source/RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs deleted file mode 100644 index 4d19ee119c..0000000000 --- a/Source/RunActivity/Viewer3D/Debugging/DebugViewerForm.Designer.cs +++ /dev/null @@ -1,920 +0,0 @@ -namespace Orts.Viewer3D.Debugging -{ - partial class DispatchViewer - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - grayPen.Dispose(); - greenPen.Dispose(); - orangePen.Dispose(); - redPen.Dispose(); - pathPen.Dispose(); - trainPen.Dispose(); - trainBrush.Dispose(); - trainFont.Dispose(); - sidingBrush.Dispose(); - sidingFont.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.pbCanvas = new System.Windows.Forms.PictureBox(); - this.refreshButton = new System.Windows.Forms.Button(); - this.windowSizeUpDown = new System.Windows.Forms.NumericUpDown(); - this.resLabel = new System.Windows.Forms.Label(); - this.AvatarView = new System.Windows.Forms.ListView(); - this.rmvButton = new System.Windows.Forms.Button(); - this.chkAllowUserSwitch = new System.Windows.Forms.CheckBox(); - this.chkShowAvatars = new System.Windows.Forms.CheckBox(); - this.MSG = new System.Windows.Forms.TextBox(); - this.msgSelected = new System.Windows.Forms.Button(); - this.msgAll = new System.Windows.Forms.Button(); - this.composeMSG = new System.Windows.Forms.Button(); - this.label1 = new System.Windows.Forms.Label(); - this.reply2Selected = new System.Windows.Forms.Button(); - this.chkDrawPath = new System.Windows.Forms.CheckBox(); - this.boxSetSignal = new System.Windows.Forms.ListBox(); - this.boxSetSwitch = new System.Windows.Forms.ListBox(); - this.chkPickSignals = new System.Windows.Forms.CheckBox(); - this.chkPickSwitches = new System.Windows.Forms.CheckBox(); - this.chkAllowNew = new System.Windows.Forms.CheckBox(); - this.messages = new System.Windows.Forms.ListBox(); - this.btnAssist = new System.Windows.Forms.Button(); - this.btnNormal = new System.Windows.Forms.Button(); - this.btnFollow = new System.Windows.Forms.Button(); - this.chkBoxPenalty = new System.Windows.Forms.CheckBox(); - this.chkPreferGreen = new System.Windows.Forms.CheckBox(); - this.btnSeeInGame = new System.Windows.Forms.Button(); - this.lblSimulationTimeText = new System.Windows.Forms.Label(); - this.lblSimulationTime = new System.Windows.Forms.Label(); - this.lblShow = new System.Windows.Forms.Label(); - this.cbShowPlatformLabels = new System.Windows.Forms.CheckBox(); - this.cbShowSidings = new System.Windows.Forms.CheckBox(); - this.cbShowSignals = new System.Windows.Forms.CheckBox(); - this.cbShowSignalState = new System.Windows.Forms.CheckBox(); - this.gbTrainLabels = new System.Windows.Forms.GroupBox(); - this.bTrainKey = new System.Windows.Forms.Button(); - this.rbShowActiveTrainLabels = new System.Windows.Forms.RadioButton(); - this.rbShowAllTrainLabels = new System.Windows.Forms.RadioButton(); - this.nudDaylightOffsetHrs = new System.Windows.Forms.NumericUpDown(); - this.lblDayLightOffsetHrs = new System.Windows.Forms.Label(); - this.cdBackground = new System.Windows.Forms.ColorDialog(); - this.bBackgroundColor = new System.Windows.Forms.Button(); - this.cbShowSwitches = new System.Windows.Forms.CheckBox(); - this.lblInstruction1 = new System.Windows.Forms.Label(); - this.cbShowTrainLabels = new System.Windows.Forms.CheckBox(); - this.tWindow = new System.Windows.Forms.TabControl(); - this.tDispatch = new System.Windows.Forms.TabPage(); - this.tTimetable = new System.Windows.Forms.TabPage(); - this.cbShowTrainState = new System.Windows.Forms.CheckBox(); - this.lblInstruction2 = new System.Windows.Forms.Label(); - this.lblInstruction3 = new System.Windows.Forms.Label(); - this.lblInstruction4 = new System.Windows.Forms.Label(); - this.cbShowPlatforms = new System.Windows.Forms.CheckBox(); - ((System.ComponentModel.ISupportInitialize)(this.pbCanvas)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.windowSizeUpDown)).BeginInit(); - this.gbTrainLabels.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudDaylightOffsetHrs)).BeginInit(); - this.tWindow.SuspendLayout(); - this.SuspendLayout(); - // - // pbCanvas - // - this.pbCanvas.Location = new System.Drawing.Point(5, 131); - this.pbCanvas.Name = "pbCanvas"; - this.pbCanvas.Size = new System.Drawing.Size(754, 626); - this.pbCanvas.TabIndex = 0; - this.pbCanvas.TabStop = false; - this.pbCanvas.SizeChanged += new System.EventHandler(this.pbCanvas_SizeChanged); - this.pbCanvas.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBoxMouseDown); - this.pbCanvas.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBoxMouseMove); - this.pbCanvas.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pictureBoxMouseUp); - // - // refreshButton - // - this.refreshButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.refreshButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.refreshButton.Location = new System.Drawing.Point(820, 137); - this.refreshButton.Name = "refreshButton"; - this.refreshButton.Size = new System.Drawing.Size(93, 23); - this.refreshButton.TabIndex = 1; - this.refreshButton.Text = "View Train"; - this.refreshButton.UseVisualStyleBackColor = true; - this.refreshButton.Click += new System.EventHandler(this.refreshButton_Click); - // - // windowSizeUpDown - // - this.windowSizeUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.windowSizeUpDown.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.windowSizeUpDown.Increment = new decimal(new int[] { - 50, - 0, - 0, - 0}); - this.windowSizeUpDown.Location = new System.Drawing.Point(802, 31); - this.windowSizeUpDown.Maximum = new decimal(new int[] { - 200000, - 0, - 0, - 0}); - this.windowSizeUpDown.Minimum = new decimal(new int[] { - 80, - 0, - 0, - 0}); - this.windowSizeUpDown.Name = "windowSizeUpDown"; - this.windowSizeUpDown.Size = new System.Drawing.Size(79, 23); - this.windowSizeUpDown.TabIndex = 6; - this.windowSizeUpDown.Value = new decimal(new int[] { - 5000, - 0, - 0, - 0}); - this.windowSizeUpDown.ValueChanged += new System.EventHandler(this.windowSizeUpDown_ValueChanged); - // - // resLabel - // - this.resLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.resLabel.AutoSize = true; - this.resLabel.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.resLabel.Location = new System.Drawing.Point(887, 35); - this.resLabel.Name = "resLabel"; - this.resLabel.Size = new System.Drawing.Size(19, 16); - this.resLabel.TabIndex = 8; - this.resLabel.Text = "m"; - // - // AvatarView - // - this.AvatarView.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.AvatarView.HideSelection = false; - this.AvatarView.Location = new System.Drawing.Point(779, 200); - this.AvatarView.Name = "AvatarView"; - this.AvatarView.Size = new System.Drawing.Size(121, 556); - this.AvatarView.TabIndex = 14; - this.AvatarView.UseCompatibleStateImageBehavior = false; - this.AvatarView.SelectedIndexChanged += new System.EventHandler(this.AvatarView_SelectedIndexChanged); - // - // rmvButton - // - this.rmvButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.rmvButton.Location = new System.Drawing.Point(773, 164); - this.rmvButton.Margin = new System.Windows.Forms.Padding(2); - this.rmvButton.Name = "rmvButton"; - this.rmvButton.Size = new System.Drawing.Size(72, 24); - this.rmvButton.TabIndex = 15; - this.rmvButton.Text = "Remove"; - this.rmvButton.UseVisualStyleBackColor = true; - this.rmvButton.Click += new System.EventHandler(this.rmvButton_Click); - // - // chkAllowUserSwitch - // - this.chkAllowUserSwitch.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.chkAllowUserSwitch.AutoSize = true; - this.chkAllowUserSwitch.Checked = true; - this.chkAllowUserSwitch.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkAllowUserSwitch.Location = new System.Drawing.Point(681, 71); - this.chkAllowUserSwitch.Name = "chkAllowUserSwitch"; - this.chkAllowUserSwitch.Size = new System.Drawing.Size(83, 17); - this.chkAllowUserSwitch.TabIndex = 16; - this.chkAllowUserSwitch.Text = "Auto Switch"; - this.chkAllowUserSwitch.UseVisualStyleBackColor = true; - this.chkAllowUserSwitch.CheckedChanged += new System.EventHandler(this.chkAllowUserSwitch_CheckedChanged); - // - // chkShowAvatars - // - this.chkShowAvatars.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.chkShowAvatars.AutoSize = true; - this.chkShowAvatars.Checked = true; - this.chkShowAvatars.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkShowAvatars.Location = new System.Drawing.Point(681, 53); - this.chkShowAvatars.Name = "chkShowAvatars"; - this.chkShowAvatars.Size = new System.Drawing.Size(92, 17); - this.chkShowAvatars.TabIndex = 17; - this.chkShowAvatars.Text = "Show Avatars"; - this.chkShowAvatars.UseVisualStyleBackColor = true; - this.chkShowAvatars.CheckedChanged += new System.EventHandler(this.chkShowAvatars_CheckedChanged); - // - // MSG - // - this.MSG.Enabled = false; - this.MSG.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.MSG.Location = new System.Drawing.Point(1, 38); - this.MSG.Name = "MSG"; - this.MSG.Size = new System.Drawing.Size(560, 26); - this.MSG.TabIndex = 18; - this.MSG.WordWrap = false; - this.MSG.Enter += new System.EventHandler(this.MSGEnter); - this.MSG.Leave += new System.EventHandler(this.MSGLeave); - this.MSG.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.checkKeys); - // - // msgSelected - // - this.msgSelected.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.msgSelected.Enabled = false; - this.msgSelected.Location = new System.Drawing.Point(569, 78); - this.msgSelected.Margin = new System.Windows.Forms.Padding(2); - this.msgSelected.MaximumSize = new System.Drawing.Size(200, 24); - this.msgSelected.MinimumSize = new System.Drawing.Size(104, 24); - this.msgSelected.Name = "msgSelected"; - this.msgSelected.Size = new System.Drawing.Size(104, 24); - this.msgSelected.TabIndex = 19; - this.msgSelected.Text = "MSG to Selected"; - this.msgSelected.UseVisualStyleBackColor = true; - this.msgSelected.Click += new System.EventHandler(this.msgSelected_Click); - // - // msgAll - // - this.msgAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.msgAll.Enabled = false; - this.msgAll.Location = new System.Drawing.Point(569, 53); - this.msgAll.Margin = new System.Windows.Forms.Padding(2); - this.msgAll.MaximumSize = new System.Drawing.Size(200, 24); - this.msgAll.MinimumSize = new System.Drawing.Size(104, 24); - this.msgAll.Name = "msgAll"; - this.msgAll.Size = new System.Drawing.Size(104, 24); - this.msgAll.TabIndex = 20; - this.msgAll.Text = "MSG to All"; - this.msgAll.UseVisualStyleBackColor = true; - this.msgAll.Click += new System.EventHandler(this.msgAll_Click); - // - // composeMSG - // - this.composeMSG.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.composeMSG.Location = new System.Drawing.Point(569, 28); - this.composeMSG.Margin = new System.Windows.Forms.Padding(2); - this.composeMSG.MaximumSize = new System.Drawing.Size(200, 24); - this.composeMSG.MinimumSize = new System.Drawing.Size(104, 24); - this.composeMSG.Name = "composeMSG"; - this.composeMSG.Size = new System.Drawing.Size(104, 24); - this.composeMSG.TabIndex = 21; - this.composeMSG.Text = "Compose MSG"; - this.composeMSG.UseVisualStyleBackColor = true; - this.composeMSG.Click += new System.EventHandler(this.composeMSG_Click); - // - // label1 - // - this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(770, 35); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(26, 13); - this.label1.TabIndex = 7; - this.label1.Text = "Res"; - // - // reply2Selected - // - this.reply2Selected.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.reply2Selected.Enabled = false; - this.reply2Selected.Location = new System.Drawing.Point(569, 103); - this.reply2Selected.Margin = new System.Windows.Forms.Padding(2); - this.reply2Selected.MaximumSize = new System.Drawing.Size(200, 24); - this.reply2Selected.MinimumSize = new System.Drawing.Size(104, 24); - this.reply2Selected.Name = "reply2Selected"; - this.reply2Selected.Size = new System.Drawing.Size(104, 24); - this.reply2Selected.TabIndex = 23; - this.reply2Selected.Text = "Reply to Selected"; - this.reply2Selected.UseVisualStyleBackColor = true; - this.reply2Selected.Click += new System.EventHandler(this.replySelected); - // - // chkDrawPath - // - this.chkDrawPath.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.chkDrawPath.AutoSize = true; - this.chkDrawPath.Checked = true; - this.chkDrawPath.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkDrawPath.Location = new System.Drawing.Point(803, 58); - this.chkDrawPath.Name = "chkDrawPath"; - this.chkDrawPath.Size = new System.Drawing.Size(76, 17); - this.chkDrawPath.TabIndex = 24; - this.chkDrawPath.Text = "Draw Path"; - this.chkDrawPath.UseVisualStyleBackColor = true; - this.chkDrawPath.CheckedChanged += new System.EventHandler(this.chkDrawPathChanged); - // - // boxSetSignal - // - this.boxSetSignal.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.boxSetSignal.Enabled = false; - this.boxSetSignal.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.boxSetSignal.FormattingEnabled = true; - this.boxSetSignal.ItemHeight = 20; - this.boxSetSignal.Location = new System.Drawing.Point(209, 205); - this.boxSetSignal.MinimumSize = new System.Drawing.Size(160, 100); - this.boxSetSignal.Name = "boxSetSignal"; - this.boxSetSignal.Size = new System.Drawing.Size(164, 100); - this.boxSetSignal.TabIndex = 25; - this.boxSetSignal.Visible = false; - this.boxSetSignal.SelectedIndexChanged += new System.EventHandler(this.boxSetSignalChosen); - // - // boxSetSwitch - // - this.boxSetSwitch.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.boxSetSwitch.Enabled = false; - this.boxSetSwitch.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.boxSetSwitch.FormattingEnabled = true; - this.boxSetSwitch.ItemHeight = 20; - this.boxSetSwitch.Items.AddRange(new object[] { - "To Main Route", - "To Side Route"}); - this.boxSetSwitch.Location = new System.Drawing.Point(398, 205); - this.boxSetSwitch.MinimumSize = new System.Drawing.Size(120, 50); - this.boxSetSwitch.Name = "boxSetSwitch"; - this.boxSetSwitch.Size = new System.Drawing.Size(125, 40); - this.boxSetSwitch.TabIndex = 26; - this.boxSetSwitch.Visible = false; - this.boxSetSwitch.SelectedIndexChanged += new System.EventHandler(this.boxSetSwitchChosen); - // - // chkPickSignals - // - this.chkPickSignals.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.chkPickSignals.AutoSize = true; - this.chkPickSignals.Checked = true; - this.chkPickSignals.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkPickSignals.Location = new System.Drawing.Point(803, 75); - this.chkPickSignals.Name = "chkPickSignals"; - this.chkPickSignals.Size = new System.Drawing.Size(84, 17); - this.chkPickSignals.TabIndex = 27; - this.chkPickSignals.Text = "Pick Signals"; - this.chkPickSignals.UseVisualStyleBackColor = true; - // - // chkPickSwitches - // - this.chkPickSwitches.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.chkPickSwitches.AutoSize = true; - this.chkPickSwitches.Checked = true; - this.chkPickSwitches.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkPickSwitches.Location = new System.Drawing.Point(803, 92); - this.chkPickSwitches.Name = "chkPickSwitches"; - this.chkPickSwitches.Size = new System.Drawing.Size(93, 17); - this.chkPickSwitches.TabIndex = 28; - this.chkPickSwitches.Text = "Pick Switches"; - this.chkPickSwitches.UseVisualStyleBackColor = true; - // - // chkAllowNew - // - this.chkAllowNew.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.chkAllowNew.AutoSize = true; - this.chkAllowNew.Checked = true; - this.chkAllowNew.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkAllowNew.Location = new System.Drawing.Point(681, 34); - this.chkAllowNew.Name = "chkAllowNew"; - this.chkAllowNew.Size = new System.Drawing.Size(67, 17); - this.chkAllowNew.TabIndex = 29; - this.chkAllowNew.Text = "Can Join"; - this.chkAllowNew.UseVisualStyleBackColor = true; - this.chkAllowNew.CheckedChanged += new System.EventHandler(this.chkAllowNewCheck); - // - // messages - // - this.messages.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.messages.FormattingEnabled = true; - this.messages.ItemHeight = 18; - this.messages.Location = new System.Drawing.Point(1, 68); - this.messages.Name = "messages"; - this.messages.Size = new System.Drawing.Size(560, 58); - this.messages.TabIndex = 22; - this.messages.SelectedIndexChanged += new System.EventHandler(this.msgSelectedChanged); - // - // btnAssist - // - this.btnAssist.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnAssist.Location = new System.Drawing.Point(762, 111); - this.btnAssist.Margin = new System.Windows.Forms.Padding(2); - this.btnAssist.Name = "btnAssist"; - this.btnAssist.Size = new System.Drawing.Size(48, 24); - this.btnAssist.TabIndex = 30; - this.btnAssist.Text = "Assist"; - this.btnAssist.UseVisualStyleBackColor = true; - this.btnAssist.Click += new System.EventHandler(this.AssistClick); - // - // btnNormal - // - this.btnNormal.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnNormal.Location = new System.Drawing.Point(762, 136); - this.btnNormal.Margin = new System.Windows.Forms.Padding(2); - this.btnNormal.Name = "btnNormal"; - this.btnNormal.Size = new System.Drawing.Size(58, 24); - this.btnNormal.TabIndex = 31; - this.btnNormal.Text = "Normal"; - this.btnNormal.UseVisualStyleBackColor = true; - this.btnNormal.Click += new System.EventHandler(this.btnNormalClick); - // - // btnFollow - // - this.btnFollow.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnFollow.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnFollow.Location = new System.Drawing.Point(847, 165); - this.btnFollow.Name = "btnFollow"; - this.btnFollow.Size = new System.Drawing.Size(60, 23); - this.btnFollow.TabIndex = 32; - this.btnFollow.Text = "Follow"; - this.btnFollow.UseVisualStyleBackColor = true; - this.btnFollow.Click += new System.EventHandler(this.btnFollowClick); - // - // chkBoxPenalty - // - this.chkBoxPenalty.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.chkBoxPenalty.AutoSize = true; - this.chkBoxPenalty.Checked = true; - this.chkBoxPenalty.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkBoxPenalty.Location = new System.Drawing.Point(681, 107); - this.chkBoxPenalty.Name = "chkBoxPenalty"; - this.chkBoxPenalty.Size = new System.Drawing.Size(61, 17); - this.chkBoxPenalty.TabIndex = 33; - this.chkBoxPenalty.Text = "Penalty"; - this.chkBoxPenalty.UseVisualStyleBackColor = true; - this.chkBoxPenalty.CheckedChanged += new System.EventHandler(this.chkOPenaltyHandle); - // - // chkPreferGreen - // - this.chkPreferGreen.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.chkPreferGreen.AutoSize = true; - this.chkPreferGreen.Checked = true; - this.chkPreferGreen.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkPreferGreen.Location = new System.Drawing.Point(681, 89); - this.chkPreferGreen.Name = "chkPreferGreen"; - this.chkPreferGreen.Size = new System.Drawing.Size(86, 17); - this.chkPreferGreen.TabIndex = 34; - this.chkPreferGreen.Text = "Prefer Green"; - this.chkPreferGreen.UseVisualStyleBackColor = true; - this.chkPreferGreen.Visible = false; - this.chkPreferGreen.CheckedChanged += new System.EventHandler(this.chkPreferGreenHandle); - // - // btnSeeInGame - // - this.btnSeeInGame.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnSeeInGame.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnSeeInGame.Location = new System.Drawing.Point(820, 113); - this.btnSeeInGame.Name = "btnSeeInGame"; - this.btnSeeInGame.Size = new System.Drawing.Size(93, 23); - this.btnSeeInGame.TabIndex = 35; - this.btnSeeInGame.Text = "See in Game"; - this.btnSeeInGame.UseVisualStyleBackColor = true; - this.btnSeeInGame.Click += new System.EventHandler(this.btnSeeInGameClick); - // - // lblSimulationTimeText - // - this.lblSimulationTimeText.AutoSize = true; - this.lblSimulationTimeText.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblSimulationTimeText.Location = new System.Drawing.Point(5, 34); - this.lblSimulationTimeText.Name = "lblSimulationTimeText"; - this.lblSimulationTimeText.Size = new System.Drawing.Size(104, 16); - this.lblSimulationTimeText.TabIndex = 36; - this.lblSimulationTimeText.Text = "Simulation Time"; - this.lblSimulationTimeText.Visible = false; - // - // lblSimulationTime - // - this.lblSimulationTime.AutoSize = true; - this.lblSimulationTime.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblSimulationTime.Location = new System.Drawing.Point(115, 34); - this.lblSimulationTime.Name = "lblSimulationTime"; - this.lblSimulationTime.Size = new System.Drawing.Size(101, 16); - this.lblSimulationTime.TabIndex = 37; - this.lblSimulationTime.Text = "SimulationTime"; - this.lblSimulationTime.Visible = false; - // - // lblShow - // - this.lblShow.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.lblShow.AutoSize = true; - this.lblShow.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblShow.Location = new System.Drawing.Point(780, 180); - this.lblShow.Name = "lblShow"; - this.lblShow.Size = new System.Drawing.Size(41, 15); - this.lblShow.TabIndex = 38; - this.lblShow.Text = "Show:"; - this.lblShow.Visible = false; - // - // cbShowPlatformLabels - // - this.cbShowPlatformLabels.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cbShowPlatformLabels.AutoSize = true; - this.cbShowPlatformLabels.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbShowPlatformLabels.Location = new System.Drawing.Point(780, 220); - this.cbShowPlatformLabels.Name = "cbShowPlatformLabels"; - this.cbShowPlatformLabels.Size = new System.Drawing.Size(108, 19); - this.cbShowPlatformLabels.TabIndex = 39; - this.cbShowPlatformLabels.Text = "Platform labels"; - this.cbShowPlatformLabels.UseVisualStyleBackColor = true; - this.cbShowPlatformLabels.Visible = false; - // - // cbShowSidings - // - this.cbShowSidings.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cbShowSidings.AutoSize = true; - this.cbShowSidings.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbShowSidings.Location = new System.Drawing.Point(780, 240); - this.cbShowSidings.Name = "cbShowSidings"; - this.cbShowSidings.Size = new System.Drawing.Size(97, 19); - this.cbShowSidings.TabIndex = 40; - this.cbShowSidings.Text = "Siding labels"; - this.cbShowSidings.UseVisualStyleBackColor = true; - this.cbShowSidings.Visible = false; - // - // cbShowSignals - // - this.cbShowSignals.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cbShowSignals.AutoSize = true; - this.cbShowSignals.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbShowSignals.Location = new System.Drawing.Point(780, 280); - this.cbShowSignals.Name = "cbShowSignals"; - this.cbShowSignals.Size = new System.Drawing.Size(67, 19); - this.cbShowSignals.TabIndex = 41; - this.cbShowSignals.Text = "Signals"; - this.cbShowSignals.UseVisualStyleBackColor = true; - this.cbShowSignals.Visible = false; - // - // cbShowSignalState - // - this.cbShowSignalState.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cbShowSignalState.AutoSize = true; - this.cbShowSignalState.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbShowSignalState.Location = new System.Drawing.Point(802, 300); - this.cbShowSignalState.Name = "cbShowSignalState"; - this.cbShowSignalState.Size = new System.Drawing.Size(90, 19); - this.cbShowSignalState.TabIndex = 42; - this.cbShowSignalState.Text = "Signal state"; - this.cbShowSignalState.UseVisualStyleBackColor = true; - this.cbShowSignalState.Visible = false; - // - // gbTrainLabels - // - this.gbTrainLabels.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.gbTrainLabels.Controls.Add(this.bTrainKey); - this.gbTrainLabels.Controls.Add(this.rbShowActiveTrainLabels); - this.gbTrainLabels.Controls.Add(this.rbShowAllTrainLabels); - this.gbTrainLabels.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.gbTrainLabels.Location = new System.Drawing.Point(779, 323); - this.gbTrainLabels.Name = "gbTrainLabels"; - this.gbTrainLabels.Size = new System.Drawing.Size(120, 129); - this.gbTrainLabels.TabIndex = 43; - this.gbTrainLabels.TabStop = false; - this.gbTrainLabels.Text = "Train labels"; - this.gbTrainLabels.Visible = false; - // - // bTrainKey - // - this.bTrainKey.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.bTrainKey.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.bTrainKey.Location = new System.Drawing.Point(77, 89); - this.bTrainKey.Name = "bTrainKey"; - this.bTrainKey.Size = new System.Drawing.Size(40, 23); - this.bTrainKey.TabIndex = 57; - this.bTrainKey.Text = "Key"; - this.bTrainKey.UseVisualStyleBackColor = true; - this.bTrainKey.Visible = false; - this.bTrainKey.Click += new System.EventHandler(this.bTrainKey_Click); - // - // rbShowActiveTrainLabels - // - this.rbShowActiveTrainLabels.AutoSize = true; - this.rbShowActiveTrainLabels.Checked = true; - this.rbShowActiveTrainLabels.Location = new System.Drawing.Point(13, 22); - this.rbShowActiveTrainLabels.Name = "rbShowActiveTrainLabels"; - this.rbShowActiveTrainLabels.Size = new System.Drawing.Size(81, 19); - this.rbShowActiveTrainLabels.TabIndex = 1; - this.rbShowActiveTrainLabels.TabStop = true; - this.rbShowActiveTrainLabels.Text = "Active only"; - this.rbShowActiveTrainLabels.UseVisualStyleBackColor = true; - this.rbShowActiveTrainLabels.Visible = false; - // - // rbShowAllTrainLabels - // - this.rbShowAllTrainLabels.AutoSize = true; - this.rbShowAllTrainLabels.Location = new System.Drawing.Point(13, 44); - this.rbShowAllTrainLabels.Name = "rbShowAllTrainLabels"; - this.rbShowAllTrainLabels.Size = new System.Drawing.Size(38, 19); - this.rbShowAllTrainLabels.TabIndex = 0; - this.rbShowAllTrainLabels.Text = "All"; - this.rbShowAllTrainLabels.UseVisualStyleBackColor = true; - this.rbShowAllTrainLabels.Visible = false; - // - // nudDaylightOffsetHrs - // - this.nudDaylightOffsetHrs.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.nudDaylightOffsetHrs.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudDaylightOffsetHrs.Location = new System.Drawing.Point(817, 556); - this.nudDaylightOffsetHrs.Maximum = new decimal(new int[] { - 12, - 0, - 0, - 0}); - this.nudDaylightOffsetHrs.Minimum = new decimal(new int[] { - 12, - 0, - 0, - -2147483648}); - this.nudDaylightOffsetHrs.Name = "nudDaylightOffsetHrs"; - this.nudDaylightOffsetHrs.Size = new System.Drawing.Size(40, 21); - this.nudDaylightOffsetHrs.TabIndex = 44; - this.nudDaylightOffsetHrs.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; - this.nudDaylightOffsetHrs.Visible = false; - this.nudDaylightOffsetHrs.ValueChanged += new System.EventHandler(this.nudDaylightOffsetHrs_ValueChanged); - // - // lblDayLightOffsetHrs - // - this.lblDayLightOffsetHrs.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.lblDayLightOffsetHrs.AutoSize = true; - this.lblDayLightOffsetHrs.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblDayLightOffsetHrs.Location = new System.Drawing.Point(779, 534); - this.lblDayLightOffsetHrs.Name = "lblDayLightOffsetHrs"; - this.lblDayLightOffsetHrs.Size = new System.Drawing.Size(111, 15); - this.lblDayLightOffsetHrs.TabIndex = 45; - this.lblDayLightOffsetHrs.Text = "Daylight offset (hrs)"; - this.lblDayLightOffsetHrs.Visible = false; - // - // cdBackground - // - this.cdBackground.AnyColor = true; - this.cdBackground.ShowHelp = true; - // - // bBackgroundColor - // - this.bBackgroundColor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.bBackgroundColor.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.bBackgroundColor.Location = new System.Drawing.Point(779, 590); - this.bBackgroundColor.Name = "bBackgroundColor"; - this.bBackgroundColor.Size = new System.Drawing.Size(131, 23); - this.bBackgroundColor.TabIndex = 46; - this.bBackgroundColor.Text = "Background color"; - this.bBackgroundColor.UseVisualStyleBackColor = true; - this.bBackgroundColor.Visible = false; - this.bBackgroundColor.Click += new System.EventHandler(this.bBackgroundColor_Click); - // - // cbShowSwitches - // - this.cbShowSwitches.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cbShowSwitches.AutoSize = true; - this.cbShowSwitches.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbShowSwitches.Location = new System.Drawing.Point(780, 260); - this.cbShowSwitches.Name = "cbShowSwitches"; - this.cbShowSwitches.Size = new System.Drawing.Size(75, 19); - this.cbShowSwitches.TabIndex = 47; - this.cbShowSwitches.Text = "Switches"; - this.cbShowSwitches.UseVisualStyleBackColor = true; - this.cbShowSwitches.Visible = false; - // - // lblInstruction1 - // - this.lblInstruction1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.lblInstruction1.Location = new System.Drawing.Point(8, 672); - this.lblInstruction1.Name = "lblInstruction1"; - this.lblInstruction1.Padding = new System.Windows.Forms.Padding(3); - this.lblInstruction1.Size = new System.Drawing.Size(327, 22); - this.lblInstruction1.TabIndex = 48; - this.lblInstruction1.Text = "To pan, drag with left mouse."; - this.lblInstruction1.Visible = false; - // - // cbShowTrainLabels - // - this.cbShowTrainLabels.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cbShowTrainLabels.AutoSize = true; - this.cbShowTrainLabels.Checked = true; - this.cbShowTrainLabels.CheckState = System.Windows.Forms.CheckState.Checked; - this.cbShowTrainLabels.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbShowTrainLabels.Location = new System.Drawing.Point(790, 395); - this.cbShowTrainLabels.Name = "cbShowTrainLabels"; - this.cbShowTrainLabels.Size = new System.Drawing.Size(60, 19); - this.cbShowTrainLabels.TabIndex = 50; - this.cbShowTrainLabels.Text = "Name"; - this.cbShowTrainLabels.UseVisualStyleBackColor = true; - this.cbShowTrainLabels.Visible = false; - // - // tWindow - // - this.tWindow.Controls.Add(this.tDispatch); - this.tWindow.Controls.Add(this.tTimetable); - this.tWindow.Location = new System.Drawing.Point(0, 0); - this.tWindow.Name = "tWindow"; - this.tWindow.SelectedIndex = 0; - this.tWindow.Size = new System.Drawing.Size(923, 32); - this.tWindow.TabIndex = 51; - this.tWindow.SelectedIndexChanged += new System.EventHandler(this.tWindow_SelectedIndexChanged); - // - // tDispatch - // - this.tDispatch.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tDispatch.Location = new System.Drawing.Point(4, 22); - this.tDispatch.Name = "tDispatch"; - this.tDispatch.Padding = new System.Windows.Forms.Padding(3); - this.tDispatch.Size = new System.Drawing.Size(915, 6); - this.tDispatch.TabIndex = 0; - this.tDispatch.Text = "Dispatch"; - this.tDispatch.UseVisualStyleBackColor = true; - // - // tTimetable - // - this.tTimetable.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tTimetable.Location = new System.Drawing.Point(4, 22); - this.tTimetable.Name = "tTimetable"; - this.tTimetable.Padding = new System.Windows.Forms.Padding(3); - this.tTimetable.Size = new System.Drawing.Size(915, 6); - this.tTimetable.TabIndex = 1; - this.tTimetable.Text = "Timetable"; - this.tTimetable.UseVisualStyleBackColor = true; - // - // cbShowTrainState - // - this.cbShowTrainState.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cbShowTrainState.AutoSize = true; - this.cbShowTrainState.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbShowTrainState.Location = new System.Drawing.Point(802, 415); - this.cbShowTrainState.Name = "cbShowTrainState"; - this.cbShowTrainState.Size = new System.Drawing.Size(54, 19); - this.cbShowTrainState.TabIndex = 52; - this.cbShowTrainState.Text = "State"; - this.cbShowTrainState.UseVisualStyleBackColor = true; - this.cbShowTrainState.Visible = false; - // - // lblInstruction2 - // - this.lblInstruction2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.lblInstruction2.Location = new System.Drawing.Point(8, 693); - this.lblInstruction2.Name = "lblInstruction2"; - this.lblInstruction2.Padding = new System.Windows.Forms.Padding(3); - this.lblInstruction2.Size = new System.Drawing.Size(327, 21); - this.lblInstruction2.TabIndex = 53; - this.lblInstruction2.Text = "To zoom, drag with left and right mouse or scroll mouse wheel."; - this.lblInstruction2.Visible = false; - // - // lblInstruction3 - // - this.lblInstruction3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.lblInstruction3.Location = new System.Drawing.Point(8, 714); - this.lblInstruction3.Name = "lblInstruction3"; - this.lblInstruction3.Padding = new System.Windows.Forms.Padding(3); - this.lblInstruction3.Size = new System.Drawing.Size(327, 21); - this.lblInstruction3.TabIndex = 54; - this.lblInstruction3.Text = "To zoom in to a location, press Shift and click the left mouse."; - this.lblInstruction3.Visible = false; - // - // lblInstruction4 - // - this.lblInstruction4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.lblInstruction4.Location = new System.Drawing.Point(8, 735); - this.lblInstruction4.Name = "lblInstruction4"; - this.lblInstruction4.Padding = new System.Windows.Forms.Padding(3); - this.lblInstruction4.Size = new System.Drawing.Size(327, 21); - this.lblInstruction4.TabIndex = 55; - this.lblInstruction4.Text = "To zoom out of a location, press Alt and click the left mouse."; - this.lblInstruction4.Visible = false; - // - // cbShowPlatforms - // - this.cbShowPlatforms.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cbShowPlatforms.AutoSize = true; - this.cbShowPlatforms.Checked = true; - this.cbShowPlatforms.CheckState = System.Windows.Forms.CheckState.Checked; - this.cbShowPlatforms.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbShowPlatforms.Location = new System.Drawing.Point(780, 200); - this.cbShowPlatforms.Name = "cbShowPlatforms"; - this.cbShowPlatforms.Size = new System.Drawing.Size(78, 19); - this.cbShowPlatforms.TabIndex = 56; - this.cbShowPlatforms.Text = "Platforms"; - this.cbShowPlatforms.UseVisualStyleBackColor = true; - this.cbShowPlatforms.Visible = false; - // - // DispatchViewer - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.AutoScroll = true; - this.ClientSize = new System.Drawing.Size(923, 768); - this.Controls.Add(this.cbShowPlatforms); - this.Controls.Add(this.lblInstruction4); - this.Controls.Add(this.lblInstruction3); - this.Controls.Add(this.lblInstruction2); - this.Controls.Add(this.cbShowTrainState); - this.Controls.Add(this.cbShowTrainLabels); - this.Controls.Add(this.lblInstruction1); - this.Controls.Add(this.cbShowSwitches); - this.Controls.Add(this.bBackgroundColor); - this.Controls.Add(this.lblDayLightOffsetHrs); - this.Controls.Add(this.nudDaylightOffsetHrs); - this.Controls.Add(this.gbTrainLabels); - this.Controls.Add(this.cbShowSignalState); - this.Controls.Add(this.cbShowSignals); - this.Controls.Add(this.cbShowSidings); - this.Controls.Add(this.cbShowPlatformLabels); - this.Controls.Add(this.lblShow); - this.Controls.Add(this.lblSimulationTime); - this.Controls.Add(this.lblSimulationTimeText); - this.Controls.Add(this.btnSeeInGame); - this.Controls.Add(this.chkPreferGreen); - this.Controls.Add(this.chkBoxPenalty); - this.Controls.Add(this.btnFollow); - this.Controls.Add(this.btnNormal); - this.Controls.Add(this.btnAssist); - this.Controls.Add(this.chkAllowNew); - this.Controls.Add(this.chkPickSwitches); - this.Controls.Add(this.chkPickSignals); - this.Controls.Add(this.boxSetSwitch); - this.Controls.Add(this.boxSetSignal); - this.Controls.Add(this.chkDrawPath); - this.Controls.Add(this.reply2Selected); - this.Controls.Add(this.messages); - this.Controls.Add(this.composeMSG); - this.Controls.Add(this.msgAll); - this.Controls.Add(this.msgSelected); - this.Controls.Add(this.MSG); - this.Controls.Add(this.chkShowAvatars); - this.Controls.Add(this.chkAllowUserSwitch); - this.Controls.Add(this.rmvButton); - this.Controls.Add(this.AvatarView); - this.Controls.Add(this.resLabel); - this.Controls.Add(this.label1); - this.Controls.Add(this.windowSizeUpDown); - this.Controls.Add(this.refreshButton); - this.Controls.Add(this.pbCanvas); - this.Controls.Add(this.tWindow); - this.Name = "DispatchViewer"; - this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show; - this.Text = "Map Window"; - this.Leave += new System.EventHandler(this.DispatcherLeave); - ((System.ComponentModel.ISupportInitialize)(this.pbCanvas)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.windowSizeUpDown)).EndInit(); - this.gbTrainLabels.ResumeLayout(false); - this.gbTrainLabels.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudDaylightOffsetHrs)).EndInit(); - this.tWindow.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - private System.Windows.Forms.ListBox boxSetSignal; - private System.Windows.Forms.ListBox boxSetSwitch; - private System.Windows.Forms.ColorDialog cdBackground; - private System.Windows.Forms.Label lblInstruction1; - private System.Windows.Forms.TabPage tDispatch; - private System.Windows.Forms.TabPage tTimetable; - public System.Windows.Forms.Button refreshButton; - public System.Windows.Forms.NumericUpDown windowSizeUpDown; - public System.Windows.Forms.Label resLabel; - public System.Windows.Forms.ListView AvatarView; - public System.Windows.Forms.Button rmvButton; - public System.Windows.Forms.CheckBox chkAllowUserSwitch; - public System.Windows.Forms.CheckBox chkShowAvatars; - public System.Windows.Forms.TextBox MSG; - public System.Windows.Forms.Button msgSelected; - public System.Windows.Forms.Button msgAll; - public System.Windows.Forms.Button composeMSG; - public System.Windows.Forms.Label label1; - public System.Windows.Forms.Button reply2Selected; - public System.Windows.Forms.CheckBox chkDrawPath; - public System.Windows.Forms.CheckBox chkPickSignals; - public System.Windows.Forms.CheckBox chkPickSwitches; - public System.Windows.Forms.CheckBox chkAllowNew; - public System.Windows.Forms.ListBox messages; - public System.Windows.Forms.Button btnAssist; - public System.Windows.Forms.Button btnNormal; - public System.Windows.Forms.Button btnFollow; - public System.Windows.Forms.CheckBox chkBoxPenalty; - public System.Windows.Forms.CheckBox chkPreferGreen; - public System.Windows.Forms.Button btnSeeInGame; - public System.Windows.Forms.Label lblSimulationTimeText; - public System.Windows.Forms.Label lblSimulationTime; - public System.Windows.Forms.Label lblShow; - public System.Windows.Forms.CheckBox cbShowPlatformLabels; - public System.Windows.Forms.CheckBox cbShowSidings; - public System.Windows.Forms.CheckBox cbShowSignals; - public System.Windows.Forms.CheckBox cbShowSignalState; - public System.Windows.Forms.GroupBox gbTrainLabels; - public System.Windows.Forms.RadioButton rbShowActiveTrainLabels; - public System.Windows.Forms.RadioButton rbShowAllTrainLabels; - public System.Windows.Forms.NumericUpDown nudDaylightOffsetHrs; - public System.Windows.Forms.Label lblDayLightOffsetHrs; - public System.Windows.Forms.Button bBackgroundColor; - public System.Windows.Forms.CheckBox cbShowSwitches; - public System.Windows.Forms.CheckBox cbShowTrainLabels; - public System.Windows.Forms.PictureBox pbCanvas; - public System.Windows.Forms.TabControl tWindow; - public System.Windows.Forms.CheckBox cbShowTrainState; - private System.Windows.Forms.Label lblInstruction2; - private System.Windows.Forms.Label lblInstruction3; - private System.Windows.Forms.Label lblInstruction4; - public System.Windows.Forms.CheckBox cbShowPlatforms; - public System.Windows.Forms.Button bTrainKey; - } -} diff --git a/Source/RunActivity/Viewer3D/Debugging/DebugViewerForm.cs b/Source/RunActivity/Viewer3D/Debugging/DebugViewerForm.cs deleted file mode 100644 index 8b295226c2..0000000000 --- a/Source/RunActivity/Viewer3D/Debugging/DebugViewerForm.cs +++ /dev/null @@ -1,2452 +0,0 @@ -// COPYRIGHT 2010, 2011, 2012, 2013, 2014, 2015 by the Open Rails project. -// -// This file is part of Open Rails. -// -// Open Rails is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Open Rails is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Open Rails. If not, see . - -// Principal Author: -// Author: Charlie Salts / Signalsoft Rail Consultancy Ltd. -// Contributor: -// Richard Plokhaar / Signalsoft Rail Consultancy Ltd. -// - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Net; -using System.Windows.Forms; -using GNU.Gettext.WinForms; -using Microsoft.Xna.Framework; -using Orts.Formats.Msts; -using Orts.MultiPlayer; -using Orts.Simulation; -using Orts.Simulation.Physics; -using Orts.Simulation.RollingStocks; -using Orts.Simulation.Signalling; -using Orts.Viewer3D.Popups; -using ORTS.Common; -using Color = System.Drawing.Color; -using Image = System.Drawing.Image; - -namespace Orts.Viewer3D.Debugging -{ - /// - /// Defines an external window for use as a debugging viewer - /// when using Open Rails - /// - public partial class DispatchViewer : Form - { - /// - /// Reference to the main simulator object. - /// - public readonly Simulator simulator; - private TimetableWindow TimetableWindow; - - private int IM_Width = 720; - private int IM_Height = 720; - - /// - /// True when the user is dragging the route view - /// - public bool Dragging; - private WorldPosition worldPos; - public float xScale = 1; // pixels / metre - public float yScale = 1; // pixels / metre - - string name = ""; - public List switchItemsDrawn; - public List signalItemsDrawn; - - public SwitchWidget switchPickedItem; - public SignalWidget signalPickedItem; - public bool switchPickedItemHandled; - public double switchPickedTime; - public bool signalPickedItemHandled; - public double signalPickedTime; - public bool DrawPath = true; //draw train path - ImageList imageList1; - public List selectedTrainList; - /// - /// contains the last position of the mouse - /// - private System.Drawing.Point LastCursorPosition = new System.Drawing.Point(); - public Pen redPen = new Pen(Color.Red); - public Pen greenPen = new Pen(Color.Green); - public Pen orangePen = new Pen(Color.Orange); - public Pen trainPen = new Pen(Color.DarkGreen); - public Pen pathPen = new Pen(Color.DeepPink); - public Pen grayPen = new Pen(Color.Gray); - public Pen PlatformPen = new Pen(Color.Blue); - - //the train selected by leftclicking the mouse - public Train PickedTrain; - - // Note +ve pixels draw down from top, but +ve metres draw up from the bottom - // - // |-------- subX ---------->| ViewWindow - // +--------------------------------+ - // | | - // | | - // | | - // | | - // ========== | ----- - // ===========\ Track Extent | ^ - // ==================================================== | - // | \ | | - // | ================== ---- | - // | | ^ | - // | | | - // | | | maxY - // +--------------------------------+ - // minY | - // |----- minX --->|<- VW.X->|<------------ VW.Width -------->| | - // | | - // |------------------------------ maxX ------------------------------->| | | - // | | - // + 0,0 World origin ---------- - - /// - /// Defines the area to view, in meters. The left edge is meters from the leftmost extent of the route. - /// - public RectangleF ViewWindow; - - /// - /// Used to periodically check if we should shift the view when the - /// user is holding down a "shift view" button. - /// - private Timer UITimer; - - bool loaded; - TrackNode[] nodes; - - // Extents of the route in meters measured from the World origin - public float minX = float.MaxValue; - public float minY = float.MaxValue; - public float maxX = float.MinValue; - public float maxY = float.MinValue; - - public Viewer Viewer; - /// - /// Creates a new DebugViewerForm. - /// - /// - /// /// - public DispatchViewer(Simulator simulator, Viewer viewer) - { - InitializeComponent(); - - if (simulator == null) - throw new ArgumentNullException("simulator", "Simulator object cannot be null."); - - this.simulator = simulator; - Viewer = viewer; - TimetableWindow = new TimetableWindow(this); - - nodes = simulator.TDB.TrackDB.TrackNodes; - if (MultiPlayer.MPManager.IsMultiPlayer()) { MultiPlayer.MPManager.AllowedManualSwitch = false; } - - // initialise the timer used to handle user input - UITimer = new Timer(); - UITimer.Interval = 100; - UITimer.Tick += new EventHandler(UITimer_Tick); - UITimer.Start(); - } - - public int RedrawCount; - public Font trainFont; - public Font sidingFont; - public Font PlatformFont; - public Font SignalFont; - public SolidBrush trainBrush; - public SolidBrush sidingBrush; - public SolidBrush PlatformBrush; - public SolidBrush SignalBrush; - public SolidBrush InactiveTrainBrush; - - private double lastUpdateTime; - - /// - /// When the user holds down the "L", "R", "U", "D" buttons, - /// shift the view. Avoids the case when the user has to click - /// buttons like crazy. - /// - /// - /// - void UITimer_Tick(object sender, EventArgs e) - { - if (Viewer.DebugViewerEnabled == false) // Ctrl+9 sets this true to initialise the window and make it visible - { - Visible = false; - firstShow = true; - return; - } - - if (firstShow) - { - InitializeWindow(); - } - Visible = true; - - if (Program.Simulator.GameTime - lastUpdateTime < 1) - return; - - lastUpdateTime = Program.Simulator.GameTime; - - GenerateView(); - } - - private void InitializeWindow() - { - ViewWindow = new RectangleF(0, 0, 5000f, 5000f); - windowSizeUpDown.Accelerations.Add(new NumericUpDownAcceleration(1, 100)); - boxSetSignal.Items.Clear(); - boxSetSignal.Items.Add("System Controlled"); - boxSetSignal.Items.Add("Stop"); - boxSetSignal.Items.Add("Approach"); - boxSetSignal.Items.Add("Proceed"); - chkAllowUserSwitch.Checked = false; - selectedTrainList = new List(); - - InitData(); - InitImage(); - - MPManager.Instance().ServerChanged += (sender, e) => - { - firstShow = true; - }; - - MPManager.Instance().AvatarUpdated += (sender, e) => - { - AddAvatar(e.User, e.URL); - }; - - MPManager.Instance().MessageReceived += (sender, e) => - { - AddNewMessage(e.Time, e.Message); - }; - - tWindow.SelectedIndex = MPManager.IsMultiPlayer() ? 0 : 1; - TimetableWindow.SetControls(); - } - - #region initData - private void InitData() - { - if (!loaded) - { - // do this only once - loaded = true; - //trackSections.DataSource = new List(simulator.InterlockingSystem.Tracks.Values).ToArray(); - Localizer.Localize(this, Viewer.Catalog); - } - - switchItemsDrawn = new List(); - signalItemsDrawn = new List(); - switches = new List(); - for (int i = 0; i < nodes.Length; i++) - { - TrackNode currNode = nodes[i]; - - if (currNode != null) - { - - if (currNode.TrEndNode) - { - //buffers.Add(new PointF(currNode.UiD.TileX * 2048 + currNode.UiD.X, currNode.UiD.TileZ * 2048 + currNode.UiD.Z)); - } - else if (currNode.TrVectorNode != null) - { - - if (currNode.TrVectorNode.TrVectorSections.Length > 1) - { - AddSegments(segments, currNode, currNode.TrVectorNode.TrVectorSections, ref minX, ref minY, ref maxX, ref maxY, simulator); - } - else - { - TrVectorSection s = currNode.TrVectorNode.TrVectorSections[0]; - - foreach (TrPin pin in currNode.TrPins) - { - - TrackNode connectedNode = nodes[pin.Link]; - - dVector A = new dVector(s.TileX, s.X, s.TileZ, +s.Z); - dVector B = new dVector(connectedNode.UiD.TileX, connectedNode.UiD.X, connectedNode.UiD.TileZ, connectedNode.UiD.Z); - segments.Add(new LineSegment(A, B, /*s.InterlockingTrack.IsOccupied*/ false, null)); - } - - - } - } - else if (currNode.TrJunctionNode != null) - { - foreach (TrPin pin in currNode.TrPins) - { - var vectorSections = nodes[pin.Link]?.TrVectorNode?.TrVectorSections; - if (vectorSections == null || vectorSections.Length < 1) - continue; - TrVectorSection item = pin.Direction == 1 ? vectorSections.First() : vectorSections.Last(); - dVector A = new dVector(currNode.UiD.TileX, currNode.UiD.X, currNode.UiD.TileZ, +currNode.UiD.Z); - dVector B = new dVector(item.TileX, +item.X, item.TileZ, +item.Z); - var x = dVector.DistanceSqr(A, B); - if (x < 0.1) continue; - segments.Add(new LineSegment(B, A, /*s.InterlockingTrack.IsOccupied*/ false, item)); - } - switches.Add(new SwitchWidget(currNode)); - } - } - } - - var maxsize = maxX - minX > maxY - minY ? maxX - minX : maxY - minY; - // Take up to next 100 - maxsize = (int)(maxsize / 100 + 1) * 100; - windowSizeUpDown.Maximum = (decimal)maxsize; - Inited = true; - - if (simulator.TDB == null || simulator.TDB.TrackDB == null || simulator.TDB.TrackDB.TrItemTable == null) - return; - - TimetableWindow.PopulateItemLists(); - } - - bool Inited; - public List segments = new List(); - public List switches; - public List signals = new List(); - public List sidings = new List(); - public List platforms = new List(); - - /// - /// Initialises the picturebox and the image it contains. - /// - public void InitImage() - { - pbCanvas.Width = IM_Width; - pbCanvas.Height = IM_Height; - - if (pbCanvas.Image != null) - { - pbCanvas.Image.Dispose(); - } - - pbCanvas.Image = new Bitmap(pbCanvas.Width, pbCanvas.Height); - imageList1 = new ImageList(); - AvatarView.View = View.LargeIcon; - imageList1.ImageSize = new Size(64, 64); - AvatarView.LargeImageList = imageList1; - } - #endregion - - #region avatar - Dictionary avatarList; - public void AddAvatar(string name, string url) - { - if (avatarList == null) avatarList = new Dictionary(); - bool FindDefault = false; - try - { - if (Program.Simulator.Settings.ShowAvatar == false) throw new Exception(); - FindDefault = true; - var request = WebRequest.Create(url); - using (var response = request.GetResponse()) - using (var stream = response.GetResponseStream()) - { - Image newImage = Image.FromStream(stream);//Image.FromFile("C:\\test1.png");// - avatarList[name] = newImage; - } - } - catch - { - if (FindDefault) - { - byte[] imageBytes = Convert.FromBase64String(imagestring); - MemoryStream ms = new MemoryStream(imageBytes, 0, - imageBytes.Length); - - // Convert byte[] to Image - ms.Write(imageBytes, 0, imageBytes.Length); - Image newImage = Image.FromStream(ms, true); - avatarList[name] = newImage; - } - else - { - avatarList[name] = null; - } - } - } - - int LostCount = 0;//how many players in the lost list (quit) - public void CheckAvatar() - { - if (!MPManager.IsMultiPlayer() || MPManager.OnlineTrains == null || MPManager.OnlineTrains.Players == null) return; - var player = MPManager.OnlineTrains.Players; - var username = MPManager.GetUserName(); - player = player.Concat(MPManager.Instance().lostPlayer).ToDictionary(x => x.Key, x => x.Value); - if (avatarList == null) avatarList = new Dictionary(); - if (avatarList.Count == player.Count + 1 && LostCount == MPManager.Instance().lostPlayer.Count) return; - - LostCount = MPManager.Instance().lostPlayer.Count; - //add myself - if (!avatarList.ContainsKey(username)) - { - AddAvatar(username, Program.Simulator.Settings.AvatarURL); - } - - foreach (var p in player) - { - if (avatarList.ContainsKey(p.Key)) continue; - AddAvatar(p.Key, p.Value.url); - } - - Dictionary tmplist = null; - foreach (var a in avatarList) - { - if (player.ContainsKey(a.Key) || a.Key == username) continue; - if (tmplist == null) tmplist = new Dictionary(); - tmplist.Add(a.Key, a.Value); - } - - if (tmplist != null) - { - foreach (var t in tmplist) avatarList.Remove(t.Key); - } - imageList1.Images.Clear(); - AvatarView.Items.Clear(); - var i = 0; - if (!Program.Simulator.Settings.ShowAvatar) - { - AvatarView.View = View.List; - foreach (var pair in avatarList) - { - if (pair.Key != username) continue; - AvatarView.Items.Add(pair.Key); - } - i = 1; - foreach (var pair in avatarList) - { - if (pair.Key == username) - continue; - - if (MPManager.Instance().aiderList.Contains(pair.Key)) - { - AvatarView.Items.Add(pair.Key + " (H)"); - } - else if (MPManager.Instance().lostPlayer.ContainsKey(pair.Key)) - { - AvatarView.Items.Add(pair.Key + " (Q)"); - } - else - { - AvatarView.Items.Add(pair.Key); - } - - i++; - } - } - else - { - AvatarView.View = View.LargeIcon; - AvatarView.LargeImageList = imageList1; - foreach (var pair in avatarList) - { - if (pair.Key != username) continue; - - if (pair.Value == null) AvatarView.Items.Add(pair.Key).ImageIndex = -1; - else - { - AvatarView.Items.Add(pair.Key).ImageIndex = 0; - imageList1.Images.Add(pair.Value); - } - } - - i = 1; - foreach (var pair in avatarList) - { - if (pair.Key == username) continue; - var text = pair.Key; - if (MPManager.Instance().aiderList.Contains(pair.Key)) text = pair.Key + " (H)"; - - if (pair.Value == null) AvatarView.Items.Add(name).ImageIndex = -1; - else - { - AvatarView.Items.Add(text).ImageIndex = i; - imageList1.Images.Add(pair.Value); - i++; - } - } - } - } - #endregion - - #region Draw - public bool firstShow = true; - public bool followTrain; - public float subX, subY; - public float oldWidth; - public float oldHeight; - - //determine locations of buttons and boxes - void DetermineLocations() - { - if (Height < 600 || Width < 800) return; - if (oldHeight != Height || oldWidth != label1.Left)//use the label "Res" as anchor point to determine the picture size - { - oldWidth = label1.Left; oldHeight = Height; - IM_Width = label1.Left - 20; - IM_Height = Height - pbCanvas.Top; - pbCanvas.Width = IM_Width; - pbCanvas.Height = Height - pbCanvas.Top - 40; - if (pbCanvas.Image != null) - { - pbCanvas.Image.Dispose(); - } - - pbCanvas.Image = new Bitmap(pbCanvas.Width, pbCanvas.Height); - - if (btnAssist.Left - 10 < composeMSG.Right) - { - var size = composeMSG.Width; - composeMSG.Left = msgAll.Left = msgSelected.Left = reply2Selected.Left = btnAssist.Left - 10 - size; - MSG.Width = messages.Width = composeMSG.Left - 20; - } - firstShow = true; - } - } - - /// - /// Regenerates the 2D view. At the moment, examines the track network - /// each time the view is drawn. Later, the traversal and drawing can be separated. - /// - public void GenerateView(bool dragging = false) - { - if (!Inited) return; - - if (tWindow.SelectedIndex == 1) - { - TimetableWindow.GenerateTimetableView(dragging); - return; - } - - if (pbCanvas.Image == null) InitImage(); - DetermineLocations(); - - if (firstShow) - { - if (!MPManager.IsServer()) - { - chkAllowUserSwitch.Visible = false; - chkAllowUserSwitch.Checked = false; - rmvButton.Visible = false; - btnAssist.Visible = false; - btnNormal.Visible = false; - msgAll.Text = "MSG to Server"; - } - else - { - msgAll.Text = "MSG to All"; - } - if (MPManager.IsServer()) - { - rmvButton.Visible = true; - chkAllowNew.Visible = true; - chkAllowUserSwitch.Visible = true; - } - else - { - rmvButton.Visible = false; - chkAllowNew.Visible = false; - chkAllowUserSwitch.Visible = false; - chkBoxPenalty.Visible = false; - chkPreferGreen.Visible = false; - } - } - if (firstShow || followTrain) - { - //see who should I look at: - //if the player is selected in the avatar list, show the player, otherwise, show the one with the lowest index - WorldPosition pos = Program.Simulator.PlayerLocomotive == null ? Program.Simulator.Trains.First().Cars.First().WorldPosition : Program.Simulator.PlayerLocomotive.WorldPosition; - if (AvatarView.SelectedIndices.Count > 0 && !AvatarView.SelectedIndices.Contains(0)) - { - int i = AvatarView.SelectedIndices.Cast().Min(); - string name = (AvatarView.Items[i].Text ?? "").Split(' ').First().Trim(); - if (MPManager.OnlineTrains.Players.TryGetValue(name, out OnlinePlayer player)) - pos = player?.Train?.Cars?.FirstOrDefault()?.WorldPosition; - else if (MPManager.Instance().lostPlayer.TryGetValue(name, out OnlinePlayer lost)) - pos = lost?.Train?.Cars?.FirstOrDefault()?.WorldPosition; - } - if (pos == null) - pos = PickedTrain?.Cars?.FirstOrDefault()?.WorldPosition; - if (pos != null) - { - var ploc = new PointF(pos.TileX * 2048 + pos.Location.X, pos.TileZ * 2048 + pos.Location.Z); - ViewWindow.X = ploc.X - minX - ViewWindow.Width / 2; ViewWindow.Y = ploc.Y - minY - ViewWindow.Width / 2; - firstShow = false; - } - } - - try - { - CheckAvatar(); - } - catch { } //errors for avatar, just ignore - using (Graphics g = Graphics.FromImage(pbCanvas.Image)) - { - subX = minX + ViewWindow.X; subY = minY + ViewWindow.Y; - g.Clear(Color.White); - - xScale = pbCanvas.Width / ViewWindow.Width; - yScale = pbCanvas.Height / ViewWindow.Height; - - PointF[] points = new PointF[3]; - Pen p = grayPen; - - p.Width = MathHelper.Clamp(xScale, 1, 3); - greenPen.Width = orangePen.Width = redPen.Width = p.Width; pathPen.Width = 2 * p.Width; - trainPen.Width = p.Width * 6; - var forwardDist = 100 / xScale; if (forwardDist < 5) forwardDist = 5; - - PointF scaledA = new PointF(0, 0); - PointF scaledB = new PointF(0, 0); - PointF scaledC = new PointF(0, 0); - - foreach (var line in segments) - { - - scaledA.X = (line.A.TileX * 2048 - subX + (float)line.A.X) * xScale; scaledA.Y = pbCanvas.Height - (line.A.TileZ * 2048 - subY + (float)line.A.Z) * yScale; - scaledB.X = (line.B.TileX * 2048 - subX + (float)line.B.X) * xScale; scaledB.Y = pbCanvas.Height - (line.B.TileZ * 2048 - subY + (float)line.B.Z) * yScale; - - if ((scaledA.X < 0 && scaledB.X < 0) || (scaledA.X > IM_Width && scaledB.X > IM_Width) || (scaledA.Y > IM_Height && scaledB.Y > IM_Height) || (scaledA.Y < 0 && scaledB.Y < 0)) - continue; - - if (line.isCurved == true) - { - scaledC.X = ((float)line.C.X - subX) * xScale; scaledC.Y = pbCanvas.Height - ((float)line.C.Z - subY) * yScale; - points[0] = scaledA; points[1] = scaledC; points[2] = scaledB; - g.DrawCurve(p, points); - } - else - { - g.DrawLine(p, scaledA, scaledB); - } - } - - switchItemsDrawn.Clear(); - signalItemsDrawn.Clear(); - float x, y; - PointF scaledItem = new PointF(0f, 0f); - var width = 6f * p.Width; if (width > 15) width = 15;//not to make it too large - for (var i = 0; i < switches.Count; i++) - { - SwitchWidget sw = switches[i]; - - x = (sw.Location.X - subX) * xScale; y = pbCanvas.Height - (sw.Location.Y - subY) * yScale; - - if (x < 0 || x > IM_Width || y > IM_Height || y < 0) continue; - - scaledItem.X = x; scaledItem.Y = y; - - - if (sw.Item.TrJunctionNode.SelectedRoute == sw.main) g.FillEllipse(Brushes.Black, GetRect(scaledItem, width)); - else g.FillEllipse(Brushes.Gray, GetRect(scaledItem, width)); - - sw.Location2D.X = scaledItem.X; sw.Location2D.Y = scaledItem.Y; - switchItemsDrawn.Add(sw); - } - - foreach (var s in signals) - { - if (float.IsNaN(s.Location.X) || float.IsNaN(s.Location.Y)) continue; - x = (s.Location.X - subX) * xScale; y = pbCanvas.Height - (s.Location.Y - subY) * yScale; - if (x < 0 || x > IM_Width || y > IM_Height || y < 0) continue; - scaledItem.X = x; scaledItem.Y = y; - s.Location2D.X = scaledItem.X; s.Location2D.Y = scaledItem.Y; - if (s.Signal.isSignalNormal())//only show nor - { - var color = Brushes.Green; - var pen = greenPen; - if (s.IsProceed == 0) - { - } - else if (s.IsProceed == 1) - { - color = Brushes.Orange; - pen = orangePen; - } - else - { - color = Brushes.Red; - pen = redPen; - } - g.FillEllipse(color, GetRect(scaledItem, width)); - signalItemsDrawn.Add(s); - if (s.hasDir) - { - scaledB.X = (s.Dir.X - subX) * xScale; scaledB.Y = pbCanvas.Height - (s.Dir.Y - subY) * yScale; - g.DrawLine(pen, scaledItem, scaledB); - } - } - } - - if (true/*showPlayerTrain.Checked*/) - { - CleanVerticalCells();//clean the drawing area for text of sidings and platforms - foreach (var sw in sidings) - scaledItem = DrawSiding(g, scaledItem, sw); - foreach (var pw in platforms) - scaledItem = DrawPlatform(g, scaledItem, pw); - - var margin = 30 * xScale;//margins to determine if we want to draw a train - var margin2 = 5000 * xScale; - - //variable for drawing train path - var mDist = 5000f; var pDist = 50; //segment length when draw path - - selectedTrainList.Clear(); - foreach (var t in simulator.Trains) selectedTrainList.Add(t); - - var redTrain = selectedTrainList.Count; - - //choosen trains will be drawn later using blue, so it will overlap on the red lines - var chosen = AvatarView.SelectedItems; - if (chosen.Count > 0) - { - for (var i = 0; i < chosen.Count; i++) - { - var name = chosen[i].Text.Split(' ')[0].Trim(); //filter out (H) in the text - var train = MPManager.OnlineTrains.findTrain(name); - if (train != null) { selectedTrainList.Remove(train); selectedTrainList.Add(train); redTrain--; } - //if selected include myself, will show it as blue - if (MPManager.GetUserName() == name && Program.Simulator.PlayerLocomotive != null) - { - selectedTrainList.Remove(Program.Simulator.PlayerLocomotive.Train); selectedTrainList.Add(Program.Simulator.PlayerLocomotive.Train); - redTrain--; - } - - } - } - - //trains selected in the avatar view list will be drawn in blue, others will be drawn in red - pathPen.Color = Color.Red; - var drawRed = 0; - int ValidTrain = selectedTrainList.Count(); - //add trains quit into the end, will draw them in gray - var quitTrains = MPManager.Instance().lostPlayer.Values - .Select((OnlinePlayer lost) => lost?.Train) - .Where((Train t) => t != null) - .Where((Train t) => !selectedTrainList.Contains(t)); - selectedTrainList.AddRange(quitTrains); - foreach (Train t in selectedTrainList) - { - drawRed++;//how many red has been drawn - if (drawRed > redTrain) pathPen.Color = Color.Blue; //more than the red should be drawn, thus draw in blue - - name = ""; - TrainCar firstCar = null; - if (t.LeadLocomotive != null) - { - worldPos = t.LeadLocomotive.WorldPosition; - name = t.GetTrainName(t.LeadLocomotive.CarID); - firstCar = t.LeadLocomotive; - } - else if (t.Cars != null && t.Cars.Count > 0) - { - worldPos = t.Cars[0].WorldPosition; - name = t.GetTrainName(t.Cars[0].CarID); - if (t.TrainType == Train.TRAINTYPE.AI) - name = t.Number.ToString() + ":" + t.Name; - firstCar = t.Cars[0]; - } - else continue; - - if (xScale < 0.3 || t.FrontTDBTraveller == null || t.RearTDBTraveller == null) - { - worldPos = firstCar.WorldPosition; - scaledItem.X = (worldPos.TileX * 2048 - subX + worldPos.Location.X) * xScale; - scaledItem.Y = pbCanvas.Height - (worldPos.TileZ * 2048 - subY + worldPos.Location.Z) * yScale; - if (scaledItem.X < -margin2 || scaledItem.X > IM_Width + margin2 || scaledItem.Y > IM_Height + margin2 || scaledItem.Y < -margin2) continue; - if (drawRed > ValidTrain) g.FillRectangle(Brushes.Gray, GetRect(scaledItem, 15f)); - else - { - if (t == PickedTrain) g.FillRectangle(Brushes.Red, GetRect(scaledItem, 15f)); - else g.FillRectangle(Brushes.DarkGreen, GetRect(scaledItem, 15f)); - scaledItem.Y -= 25; - DrawTrainPath(t, subX, subY, pathPen, g, scaledA, scaledB, pDist, mDist); - } - g.DrawString(name, trainFont, trainBrush, scaledItem); - continue; - } - var loc = t.FrontTDBTraveller.WorldLocation; - x = (loc.TileX * 2048 + loc.Location.X - subX) * xScale; y = pbCanvas.Height - (loc.TileZ * 2048 + loc.Location.Z - subY) * yScale; - if (x < -margin2 || x > IM_Width + margin2 || y > IM_Height + margin2 || y < -margin2) continue; - - //train quit will not draw path, others will draw it - if (drawRed <= ValidTrain) DrawTrainPath(t, subX, subY, pathPen, g, scaledA, scaledB, pDist, mDist); - - trainPen.Color = Color.DarkGreen; - foreach (var car in t.Cars) - { - Traveller t1 = new Traveller(t.RearTDBTraveller); - worldPos = car.WorldPosition; - var dist = t1.DistanceTo(worldPos.WorldLocation.TileX, worldPos.WorldLocation.TileZ, worldPos.WorldLocation.Location.X, worldPos.WorldLocation.Location.Y, worldPos.WorldLocation.Location.Z); - if (dist > 0) - { - t1.Move(dist - 1 + car.CarLengthM / 2); - x = (t1.TileX * 2048 + t1.Location.X - subX) * xScale; y = pbCanvas.Height - (t1.TileZ * 2048 + t1.Location.Z - subY) * yScale; - //x = (worldPos.TileX * 2048 + worldPos.Location.X - minX - ViewWindow.X) * xScale; y = pictureBox1.Height - (worldPos.TileZ * 2048 + worldPos.Location.Z - minY - ViewWindow.Y) * yScale; - if (x < -margin || x > IM_Width + margin || y > IM_Height + margin || y < -margin) continue; - - scaledItem.X = x; scaledItem.Y = y; - - t1.Move(-car.CarLengthM); - x = (t1.TileX * 2048 + t1.Location.X - subX) * xScale; y = pbCanvas.Height - (t1.TileZ * 2048 + t1.Location.Z - subY) * yScale; - if (x < -margin || x > IM_Width + margin || y > IM_Height + margin || y < -margin) continue; - - scaledA.X = x; scaledA.Y = y; - - //if the train has quit, will draw in gray, if the train is selected by left click of the mouse, will draw it in red - if (drawRed > ValidTrain) trainPen.Color = Color.Gray; - else if (t == PickedTrain) trainPen.Color = Color.Red; - g.DrawLine(trainPen, scaledA, scaledItem); - } - } - worldPos = firstCar.WorldPosition; - scaledItem.X = (worldPos.TileX * 2048 - subX + worldPos.Location.X) * xScale; - scaledItem.Y = -25 + pbCanvas.Height - (worldPos.TileZ * 2048 - subY + worldPos.Location.Z) * yScale; - - g.DrawString(name, trainFont, trainBrush, scaledItem); - - } - if (switchPickedItemHandled) - switchPickedItem = null; - if (signalPickedItemHandled) - signalPickedItem = null; - } - } - - pbCanvas.Invalidate(); - } - - private PointF DrawSiding(Graphics g, PointF scaledItem, SidingWidget s) - { - scaledItem.X = (s.Location.X - subX) * xScale; - scaledItem.Y = DetermineSidingLocation(scaledItem.X, pbCanvas.Height - (s.Location.Y - subY) * yScale, s.Name); - if (scaledItem.Y >= 0f) //if we need to draw the siding names - { - g.DrawString(s.Name, sidingFont, sidingBrush, scaledItem); - } - return scaledItem; - } - - private PointF DrawPlatform(Graphics g, PointF scaledItem, PlatformWidget s) - { - scaledItem.X = (s.Location.X - subX) * xScale; - scaledItem.Y = DetermineSidingLocation(scaledItem.X, pbCanvas.Height - (s.Location.Y - subY) * yScale, s.Name); - if (scaledItem.Y >= 0f) //if we need to draw the siding names - { - g.DrawString(s.Name, sidingFont, sidingBrush, scaledItem); - } - return scaledItem; - } - - public Vector2[][] alignedTextY; - public int[] alignedTextNum; - public const int spacing = 12; - private void CleanVerticalCells() - { - if (alignedTextY == null || alignedTextY.Length != IM_Height / spacing) //first time to put text, or the text height has changed - { - alignedTextY = new Vector2[IM_Height / spacing][]; - alignedTextNum = new int[IM_Height / spacing]; - for (var i = 0; i < IM_Height / spacing; i++) - alignedTextY[i] = new Vector2[4]; //each line has at most 4 sidings - } - for (var i = 0; i < IM_Height / spacing; i++) - { - alignedTextNum[i] = 0; - } - } - - private float DetermineSidingLocation(float startX, float wantY, string name) - { - //out of drawing area - if (startX < -64 || startX > IM_Width || wantY < -spacing || wantY > IM_Height) return -1f; - - int position = (int)(wantY / spacing);//the cell of the text it wants in - if (position > alignedTextY.Length) return wantY;//position is larger than the number of cells - var endX = startX + name.Length * trainFont.Size; - int desiredPosition = position; - while (position < alignedTextY.Length && position >= 0) - { - //if the line contains no text yet, put it there - if (alignedTextNum[position] == 0) - { - alignedTextY[position][alignedTextNum[position]].X = startX; - alignedTextY[position][alignedTextNum[position]].Y = endX;//add info for the text (i.e. start and end location) - alignedTextNum[position]++; - return position * spacing; - } - - bool conflict = false; - //check if it is intersect any one in the cell - foreach (Vector2 v in alignedTextY[position]) - { - //check conflict with a text, v.x is the start of the text, v.y is the end of the text - if ((startX > v.X && startX < v.Y) || (endX > v.X && endX < v.Y) || (v.X > startX && v.X < endX) || (v.Y > startX && v.Y < endX)) - { - conflict = true; - break; - } - } - if (conflict == false) //no conflict - { - if (alignedTextNum[position] >= alignedTextY[position].Length) return -1f; - alignedTextY[position][alignedTextNum[position]].X = startX; - alignedTextY[position][alignedTextNum[position]].Y = endX;//add info for the text (i.e. start and end location) - alignedTextNum[position]++; - return position * spacing; - } - position--; - //cannot move up, then try to move it down - if (position - desiredPosition < -1) - { - position = desiredPosition + 2; - } - //could not find any position up or down, just return negative - if (position == desiredPosition) return -1f; - } - return position * spacing; - } - - const float SignalErrorDistance = 100; - const float SignalWarningDistance = 500; - const float DisplayDistance = 1000; - const float DisplaySegmentLength = 10; - const float MaximumSectionDistance = 10000; - - Dictionary Cache = new Dictionary(); - SignallingDebugWindow.TrackSectionCacheEntry GetCacheEntry(Traveller position) - { - SignallingDebugWindow.TrackSectionCacheEntry rv; - if (Cache.TryGetValue(position.TrackNodeIndex, out rv) && (rv.Direction == position.Direction)) - return rv; - Cache[position.TrackNodeIndex] = rv = new SignallingDebugWindow.TrackSectionCacheEntry() - { - Direction = position.Direction, - Length = 0, - Objects = new List(), - }; - var nodeIndex = position.TrackNodeIndex; - var trackNode = new Traveller(position); - while (true) - { - rv.Length += MaximumSectionDistance - trackNode.MoveInSection(MaximumSectionDistance); - if (!trackNode.NextSection()) - break; - if (trackNode.IsEnd) - rv.Objects.Add(new SignallingDebugWindow.TrackSectionEndOfLine() { Distance = rv.Length }); - else if (trackNode.IsJunction) - rv.Objects.Add(new SignallingDebugWindow.TrackSectionSwitch() { Distance = rv.Length, TrackNode = trackNode.TN, NodeIndex = nodeIndex }); - else - rv.Objects.Add(new SignallingDebugWindow.TrackSectionObject() { Distance = rv.Length }); // Always have an object at the end. - if (trackNode.TrackNodeIndex != nodeIndex) - break; - } - trackNode = new Traveller(position); - - rv.Objects = rv.Objects.OrderBy(tso => tso.Distance).ToList(); - return rv; - } - - //draw the train path if it is within the window - public void DrawTrainPath(Train train, float subX, float subY, Pen pathPen, Graphics g, PointF scaledA, PointF scaledB, float stepDist, float MaximumSectionDistance) - { - if (DrawPath != true) return; - bool ok = false; - if (train == Program.Simulator.PlayerLocomotive.Train) ok = true; - if (MPManager.IsMultiPlayer()) - { - if (MPManager.OnlineTrains.findTrain(train)) - ok = true; - } - if (train.FirstCar != null & train.FirstCar.CarID.Contains("AI")) // AI train - ok = true; - if (Math.Abs(train.SpeedMpS) > 0.001) - ok = true; - - if (ok == false) return; - - var DisplayDistance = MaximumSectionDistance; - var position = train.MUDirection != Direction.Reverse ? new Traveller(train.FrontTDBTraveller) : new Traveller(train.RearTDBTraveller, Traveller.TravellerDirection.Backward); - var caches = new List(); - // Work backwards until we end up on a different track section. - var cacheNode = new Traveller(position); - cacheNode.ReverseDirection(); - var initialNodeOffsetCount = 0; - while (cacheNode.TrackNodeIndex == position.TrackNodeIndex && cacheNode.NextSection()) - initialNodeOffsetCount++; - // Now do it again, but don't go the last track section (because it is from a different track node). - cacheNode = new Traveller(position); - cacheNode.ReverseDirection(); - for (var i = 1; i < initialNodeOffsetCount; i++) - cacheNode.NextSection(); - // Push the location right up to the end of the section. - cacheNode.MoveInSection(MaximumSectionDistance); - // Now back facing the right way, calculate the distance to the train location. - cacheNode.ReverseDirection(); - var initialNodeOffset = cacheNode.DistanceTo(position.TileX, position.TileZ, position.X, position.Y, position.Z); - // Go and collect all the cache entries for the visible range of vector nodes (straights, curves). - var totalDistance = 0f; - while (!cacheNode.IsEnd && totalDistance - initialNodeOffset < DisplayDistance) - { - if (cacheNode.IsTrack) - { - var cache = GetCacheEntry(cacheNode); - cache.Age = 0; - caches.Add(cache); - totalDistance += cache.Length; - } - var nodeIndex = cacheNode.TrackNodeIndex; - while (cacheNode.TrackNodeIndex == nodeIndex && cacheNode.NextSection()) ; - } - - var switchErrorDistance = initialNodeOffset + DisplayDistance + SignalWarningDistance; - var signalErrorDistance = initialNodeOffset + DisplayDistance + SignalWarningDistance; - var currentDistance = 0f; - foreach (var cache in caches) - { - foreach (var obj in cache.Objects) - { - var objDistance = currentDistance + obj.Distance; - if (objDistance < initialNodeOffset) - continue; - - var switchObj = obj as SignallingDebugWindow.TrackSectionSwitch; - if (switchObj != null) - { - for (var pin = switchObj.TrackNode.Inpins; pin < switchObj.TrackNode.Inpins + switchObj.TrackNode.Outpins; pin++) - { - if (switchObj.TrackNode.TrPins[pin].Link == switchObj.NodeIndex) - { - if (pin - switchObj.TrackNode.Inpins != switchObj.TrackNode.TrJunctionNode.SelectedRoute) - switchErrorDistance = objDistance; - break; - } - } - if (switchErrorDistance < DisplayDistance) - break; - } - - } - if (switchErrorDistance < DisplayDistance || signalErrorDistance < DisplayDistance) - break; - currentDistance += cache.Length; - } - - var currentPosition = new Traveller(position); - currentPosition.Move(-initialNodeOffset); - currentDistance = 0; - - foreach (var cache in caches) - { - var lastObjDistance = 0f; - foreach (var obj in cache.Objects) - { - var objDistance = currentDistance + obj.Distance; - - for (var step = lastObjDistance; step < obj.Distance; step += DisplaySegmentLength) - { - var stepDistance = currentDistance + step; - var stepLength = DisplaySegmentLength > obj.Distance - step ? obj.Distance - step : DisplaySegmentLength; - var previousLocation = currentPosition.WorldLocation; - currentPosition.Move(stepLength); - if (stepDistance + stepLength >= initialNodeOffset && stepDistance <= initialNodeOffset + DisplayDistance) - { - var currentLocation = currentPosition.WorldLocation; - scaledA.X = (float)((previousLocation.TileX * WorldLocation.TileSize + previousLocation.Location.X - subX) * xScale); - scaledA.Y = (float)(pbCanvas.Height - (previousLocation.TileZ * WorldLocation.TileSize + previousLocation.Location.Z - subY) * yScale); - scaledB.X = (float)((currentLocation.TileX * WorldLocation.TileSize + currentLocation.Location.X - subX) * xScale); - scaledB.Y = (float)(pbCanvas.Height - (currentPosition.TileZ * WorldLocation.TileSize + currentPosition.Location.Z - subY) * yScale); g.DrawLine(pathPen, scaledA, scaledB); - } - } - lastObjDistance = obj.Distance; - - if (objDistance >= switchErrorDistance) - break; - } - currentDistance += cache.Length; - if (currentDistance >= switchErrorDistance) - break; - - } - - currentPosition = new Traveller(position); - currentPosition.Move(-initialNodeOffset); - currentDistance = 0; - foreach (var cache in caches) - { - var lastObjDistance = 0f; - foreach (var obj in cache.Objects) - { - currentPosition.Move(obj.Distance - lastObjDistance); - lastObjDistance = obj.Distance; - - var objDistance = currentDistance + obj.Distance; - if (objDistance < initialNodeOffset || objDistance > initialNodeOffset + DisplayDistance) - continue; - - var switchObj = obj as SignallingDebugWindow.TrackSectionSwitch; - if (switchObj != null) - { - for (var pin = switchObj.TrackNode.Inpins; pin < switchObj.TrackNode.Inpins + switchObj.TrackNode.Outpins; pin++) - { - if (switchObj.TrackNode.TrPins[pin].Link == switchObj.NodeIndex && pin - switchObj.TrackNode.Inpins != switchObj.TrackNode.TrJunctionNode.SelectedRoute) - { - foreach (var sw in switchItemsDrawn) - { - if (sw.Item.TrJunctionNode == switchObj.TrackNode.TrJunctionNode) - { - var r = 6 * greenPen.Width; - g.DrawLine(pathPen, new PointF(sw.Location2D.X - r, sw.Location2D.Y - r), new PointF(sw.Location2D.X + r, sw.Location2D.Y + r)); - g.DrawLine(pathPen, new PointF(sw.Location2D.X - r, sw.Location2D.Y + r), new PointF(sw.Location2D.X + r, sw.Location2D.Y - r)); - break; - } - } - } - } - } - - if (objDistance >= switchErrorDistance) - break; - } - currentDistance += cache.Length; - if (currentDistance >= switchErrorDistance) - break; - } - // Clean up any cache entries who haven't been using for 30 seconds. - var oldCaches = Cache.Where(kvp => kvp.Value.Age > 30 * 4).ToArray(); - foreach (var oldCache in oldCaches) - Cache.Remove(oldCache.Key); - - } - #endregion - - /// - /// Generates a rectangle representing a dot being drawn. - /// - /// Center point of the dot, in pixels. - /// Size of the dot's diameter, in pixels - /// - static public RectangleF GetRect(PointF p, float size) - { - return new RectangleF(p.X - size / 2f, p.Y - size / 2f, size, size); - } - - /// - /// Generates line segments from an array of TrVectorSection. Also computes - /// the bounds of the entire route being drawn. - /// - /// - /// - /// - /// - /// - /// - /// - private static void AddSegments(List segments, TrackNode node, TrVectorSection[] items, ref float minX, ref float minY, ref float maxX, ref float maxY, Simulator simulator) - { - - bool occupied = false; - - double tempX1, tempX2, tempZ1, tempZ2; - - for (int i = 0; i < items.Length - 1; i++) - { - dVector A = new dVector(items[i].TileX, items[i].X, items[i].TileZ, items[i].Z); - dVector B = new dVector(items[i + 1].TileX, items[i + 1].X, items[i + 1].TileZ, items[i + 1].Z); - - tempX1 = A.TileX * 2048 + A.X; tempX2 = B.TileX * 2048 + B.X; - tempZ1 = A.TileZ * 2048 + A.Z; tempZ2 = B.TileZ * 2048 + B.Z; - CalcBounds(ref maxX, tempX1, true); - CalcBounds(ref maxY, tempZ1, true); - CalcBounds(ref maxX, tempX2, true); - CalcBounds(ref maxY, tempZ2, true); - - CalcBounds(ref minX, tempX1, false); - CalcBounds(ref minY, tempZ1, false); - CalcBounds(ref minX, tempX2, false); - CalcBounds(ref minY, tempZ2, false); - - segments.Add(new LineSegment(A, B, occupied, items[i])); - } - } - - /// - /// Given a value representing a limit, evaluate if the given value exceeds the current limit. - /// If so, expand the limit. - /// - /// The current limit. - /// The value to compare the limit to. - /// True when comparison is greater-than. False if less-than. - private static void CalcBounds(ref float limit, double v, bool gt) - { - float value = (float)v; - if (gt) - { - if (value > limit) - { - limit = value; - } - } - else - { - if (value < limit) - { - limit = value; - } - } - } - - private float ScrollSpeedX - { - get - { - return ViewWindow.Width * 0.10f; - } - } - - private float ScrollSpeedY - { - get - { - return ViewWindow.Width * 0.10f; - } - } - - private void refreshButton_Click(object sender, EventArgs e) - { - followTrain = false; - firstShow = true; - GenerateView(); - } - - private void ShiftViewUp() - { - ViewWindow.Offset(0, -ScrollSpeedY); - - GenerateView(); - } - private void ShiftViewDown() - { - ViewWindow.Offset(0, ScrollSpeedY); - - GenerateView(); - } - - private void ShiftViewRight() - { - ViewWindow.Offset(ScrollSpeedX, 0); - - GenerateView(); - } - - - private void ShiftViewLeft() - { - ViewWindow.Offset(-ScrollSpeedX, 0); - - GenerateView(); - } - - private void rmvButton_Click(object sender, EventArgs e) - { - if (!MPManager.IsServer()) return; - AvatarView.SelectedIndices.Remove(0);//remove myself is not possible. - var chosen = AvatarView.SelectedItems; - if (chosen.Count > 0) - { - for (var i = 0; i < chosen.Count; i++) - { - var tmp = chosen[i]; - var name = tmp.Text.Split(' ')[0];//the name may have (H) in it, need to filter that out - if (MPManager.OnlineTrains.Players.ContainsKey(name)) - { - MPManager.OnlineTrains.Players[name].status = OnlinePlayer.Status.Removed; - MPManager.BroadCast(new MSGMessage(name, "Error", "Sorry the server has removed you").ToString()); - } - } - } - } - - - private void windowSizeUpDown_ValueChanged(object sender, EventArgs e) - { - // this is the center, before increasing the size - PointF center = new PointF(ViewWindow.X + ViewWindow.Width / 2f, ViewWindow.Y + ViewWindow.Height / 2f); - - float newSizeH = (float)windowSizeUpDown.Value; - float verticalByHorizontal = ViewWindow.Height / ViewWindow.Width; - float newSizeV = newSizeH * verticalByHorizontal; - - ViewWindow = new RectangleF(center.X - newSizeH / 2f, center.Y - newSizeV / 2f, newSizeH, newSizeV); - - GenerateView(); - } - - - protected override void OnMouseWheel(MouseEventArgs e) - { - decimal tempValue = windowSizeUpDown.Value; - if (e.Delta < 0) tempValue /= 0.95m; - else if (e.Delta > 0) tempValue *= 0.95m; - else return; - - if (tempValue < windowSizeUpDown.Minimum) tempValue = windowSizeUpDown.Minimum; - if (tempValue > windowSizeUpDown.Maximum) tempValue = windowSizeUpDown.Maximum; - windowSizeUpDown.Value = tempValue; - } - - private bool Zooming; - private bool LeftClick; - private bool RightClick; - - private void pictureBoxMouseDown(object sender, MouseEventArgs e) - { - if (e.Button == MouseButtons.Left) LeftClick = true; - if (e.Button == MouseButtons.Right) RightClick = true; - - if (LeftClick == true && RightClick == false) - { - if (Dragging == false) - { - Dragging = true; - } - } - else if (LeftClick == true && RightClick == true) - { - if (Zooming == false) Zooming = true; - } - LastCursorPosition.X = e.X; - LastCursorPosition.Y = e.Y; - MPManager.Instance().ComposingText = false; - lblInstruction1.Visible = true; - lblInstruction2.Visible = true; - lblInstruction3.Visible = true; - lblInstruction4.Visible = true; - } - - private void pictureBoxMouseUp(object sender, MouseEventArgs e) - { - if (e.Button == MouseButtons.Left) LeftClick = false; - if (e.Button == MouseButtons.Right) RightClick = false; - - if (LeftClick == false) - { - Dragging = false; - Zooming = false; - } - - if ((ModifierKeys & Keys.Shift) == Keys.Shift) - { - PictureMoveAndZoomInOut(e.X, e.Y, 1200); - } - else if ((ModifierKeys & Keys.Alt) == Keys.Alt) - { - PictureMoveAndZoomInOut(e.X, e.Y, 30000); - } - else if ((ModifierKeys & Keys.Control) == Keys.Control) - { - PictureMoveAndZoomInOut(e.X, e.Y, windowSizeUpDown.Maximum); - } - else if (LeftClick == false) - { - if (LastCursorPosition.X == e.X && LastCursorPosition.Y == e.Y) - { - var range = 5 * (int)xScale; if (range > 10) range = 10; - var temp = findItemFromMouse(e.X, e.Y, range); - if (temp != null) - { - if (temp is SwitchWidget) - { - switchPickedItem = (SwitchWidget)temp; - signalPickedItem = null; - HandlePickedSwitch(); - } - if (temp is SignalWidget) - { - signalPickedItem = (SignalWidget)temp; - switchPickedItem = null; - HandlePickedSignal(); - } - } - else - { - switchPickedItem = null; - signalPickedItem = null; - UnHandleItemPick(); - PickedTrain = null; - } - } - - } - lblInstruction1.Visible = false; - lblInstruction2.Visible = false; - lblInstruction3.Visible = false; - lblInstruction4.Visible = false; - - } - - private void UnHandleItemPick() - { - boxSetSignal.Visible = false; - boxSetSwitch.Visible = false; - } - - private void HandlePickedSignal() - { - if (MPManager.IsClient() && !MPManager.Instance().AmAider) // normal client not server or aider - return; - boxSetSwitch.Visible = false; - if (signalPickedItem == null) return; - var y = LastCursorPosition.Y; - if (LastCursorPosition.Y < 100) y = 100; - if (LastCursorPosition.Y > pbCanvas.Size.Height - 100) y = pbCanvas.Size.Height - 100; - - if (boxSetSignal.Items.Count == 5) - boxSetSignal.Items.RemoveAt(4); - - if (signalPickedItem.Signal.enabledTrain != null && signalPickedItem.Signal.CallOnEnabled) - { - if (!signalPickedItem.Signal.CallOnManuallyAllowed) - boxSetSignal.Items.Add("Allow call on"); - } - - boxSetSignal.Location = new System.Drawing.Point(LastCursorPosition.X + 2, y); - boxSetSignal.Enabled = true; - boxSetSignal.Focus(); - boxSetSignal.SelectedIndex = -1; - boxSetSignal.Visible = true; - return; - } - - private void HandlePickedSwitch() - { - if (MPManager.IsClient() && !MPManager.Instance().AmAider) - return;//normal client not server - - boxSetSignal.Visible = false; - if (switchPickedItem == null) return; - var y = LastCursorPosition.Y + 100; - if (y < 140) y = 140; - if (y > pbCanvas.Size.Height + 100) y = pbCanvas.Size.Height + 100; - boxSetSwitch.Location = new System.Drawing.Point(LastCursorPosition.X + 2, y); - boxSetSwitch.Enabled = true; - boxSetSwitch.Focus(); - boxSetSwitch.SelectedIndex = -1; - boxSetSwitch.Visible = true; - return; - } - - private ItemWidget findItemFromMouse(int x, int y, int range) - { - if (range < 5) range = 5; - double closest = float.NaN; - ItemWidget closestItem = null; - if (chkPickSwitches.Checked == true) - { - foreach (var item in switchItemsDrawn) - { - //if out of range, continue - if (item.Location2D.X < x - range || item.Location2D.X > x + range - || item.Location2D.Y < y - range || item.Location2D.Y > y + range) - continue; - - if (closestItem != null) - { - var dist = Math.Pow(item.Location2D.X - closestItem.Location2D.X, 2) + Math.Pow(item.Location2D.Y - closestItem.Location2D.Y, 2); - if (dist < closest) - { - closest = dist; closestItem = item; - } - } - else closestItem = item; - } - if (closestItem != null) - { - switchPickedTime = simulator.GameTime; - return closestItem; - } - } - if (chkPickSignals.Checked == true) - { - foreach (var item in signalItemsDrawn) - { - //if out of range, continue - if (item.Location2D.X < x - range || item.Location2D.X > x + range - || item.Location2D.Y < y - range || item.Location2D.Y > y + range) - continue; - - if (closestItem != null) - { - var dist = Math.Pow(item.Location2D.X - closestItem.Location2D.X, 2) + Math.Pow(item.Location2D.Y - closestItem.Location2D.Y, 2); - if (dist < closest) - { - closest = dist; closestItem = item; - } - } - else closestItem = item; - } - if (closestItem != null) - { - switchPickedTime = simulator.GameTime; - return closestItem; - } - } - - //now check for trains (first car only) - TrainCar firstCar; - PickedTrain = null; float tX, tY; - closest = 100f; - - foreach (var t in Program.Simulator.Trains) - { - firstCar = null; - if (t.LeadLocomotive != null) - { - worldPos = t.LeadLocomotive.WorldPosition; - firstCar = t.LeadLocomotive; - } - else if (t.Cars != null && t.Cars.Count > 0) - { - worldPos = t.Cars[0].WorldPosition; - firstCar = t.Cars[0]; - - } - else - continue; - - worldPos = firstCar.WorldPosition; - tX = (worldPos.TileX * 2048 - subX + worldPos.Location.X) * xScale; - tY = pbCanvas.Height - (worldPos.TileZ * 2048 - subY + worldPos.Location.Z) * yScale; - float xSpeedCorr = Math.Abs(t.SpeedMpS) * xScale * 1.5f; - float ySpeedCorr = Math.Abs(t.SpeedMpS) * yScale * 1.5f; - - if (tX < x - range - xSpeedCorr || tX > x + range + xSpeedCorr || tY < y - range - ySpeedCorr || tY > y + range + ySpeedCorr) - continue; - if (PickedTrain == null) - PickedTrain = t; - } - //if a train is picked, will clear the avatar list selection - if (PickedTrain != null) - { - AvatarView.SelectedItems.Clear(); - return new TrainWidget(PickedTrain); - } - return null; - } - - private void pictureBoxMouseMove(object sender, MouseEventArgs e) - { - if (tWindow.SelectedIndex == 1) - TimetableDrag(sender, e); - else - { - if (Dragging && !Zooming) - { - int diffX = LastCursorPosition.X - e.X; - int diffY = LastCursorPosition.Y - e.Y; - - ViewWindow.Offset(diffX * ScrollSpeedX / 10, -diffY * ScrollSpeedX / 10); - GenerateView(); - } - else if (Zooming) - { - decimal tempValue = windowSizeUpDown.Value; - if (LastCursorPosition.Y - e.Y < 0) tempValue /= 0.95m; - else if (LastCursorPosition.Y - e.Y > 0) tempValue *= 0.95m; - - if (tempValue < windowSizeUpDown.Minimum) tempValue = windowSizeUpDown.Minimum; - if (tempValue > windowSizeUpDown.Maximum) tempValue = windowSizeUpDown.Maximum; - windowSizeUpDown.Value = tempValue; - GenerateView(); - } - LastCursorPosition.X = e.X; - LastCursorPosition.Y = e.Y; - } - } - - public bool AddNewMessage(double _, string msg) - { - if (messages.Items.Count > 10) - messages.Items.RemoveAt(0); - messages.Items.Add(msg); - messages.SelectedIndex = messages.Items.Count - 1; - messages.SelectedIndex = -1; - return true; - } - - private void chkAllowUserSwitch_CheckedChanged(object sender, EventArgs e) - { - MPManager.AllowedManualSwitch = chkAllowUserSwitch.Checked; - if (chkAllowUserSwitch.Checked == true) { MPManager.BroadCast(new MSGMessage("All", "SwitchOK", "OK to switch").ToString()); } - else { MPManager.BroadCast(new MSGMessage("All", "SwitchWarning", "Cannot switch").ToString()); } - } - - private void chkShowAvatars_CheckedChanged(object sender, EventArgs e) - { - Program.Simulator.Settings.ShowAvatar = chkShowAvatars.Checked; - AvatarView.Items.Clear(); - - if (avatarList != null) - avatarList.Clear(); - - if (chkShowAvatars.Checked) - AvatarView.Font = new Font(FontFamily.GenericSansSerif, 12); - else - AvatarView.Font = new Font(FontFamily.GenericSansSerif, 16); - - try - { - CheckAvatar(); - } - catch { } - } - - private const int CP_NOCLOSE_BUTTON = 0x200; - protected override CreateParams CreateParams - { - get - { - CreateParams myCp = base.CreateParams; - myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON; - return myCp; - } - } - string imagestring = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAACpJREFUOE9jYBjs4D/QgSBMNhg1ABKAFAUi2aFPNY0Ue4FiA6jmlUFsEABfyg/x8/L8/gAAAABJRU5ErkJggg=="; - - private void composeMSG_Click(object sender, EventArgs e) - { - MSG.Enabled = true; - MSG.Focus(); - MPManager.Instance().ComposingText = true; - msgAll.Enabled = true; - if (messages.SelectedItems.Count > 0) msgSelected.Enabled = true; - if (AvatarView.SelectedItems.Count > 0) reply2Selected.Enabled = true; - } - - private void msgAll_Click(object sender, EventArgs e) - { - msgDefault(); - } - - private void msgDefault() - { - msgAll.Enabled = false; - msgSelected.Enabled = false; - reply2Selected.Enabled = false; - if (!MPManager.IsMultiPlayer()) - return; - var msg = MSG.Text; - msg = msg.Replace("\r", ""); - msg = msg.Replace("\t", ""); - MPManager.Instance().ComposingText = false; - MSG.Enabled = false; - - if (msg != "") - { - if (MPManager.IsServer()) - { - var users = MPManager.OnlineTrains.Players.Keys - .Select((string u) => $"{u}\r"); - string user = string.Join("", users) + "0END"; - string msgText = new MSGText(MPManager.GetUserName(), user, msg).ToString(); - try - { - MPManager.Notify(msgText); - } - catch { } - finally - { - MSG.Text = ""; - } - } - else - { - var user = "0Server\r+0END"; - MPManager.Notify(new MSGText(MPManager.GetUserName(), user, msg).ToString()); - MSG.Text = ""; - } - } - } - private void replySelected(object sender, EventArgs e) - { - msgAll.Enabled = false; - msgSelected.Enabled = false; - reply2Selected.Enabled = false; - - if (!MPManager.IsMultiPlayer()) - return; - - var msg = MSG.Text; - msg = msg.Replace("\r", ""); - msg = msg.Replace("\t", ""); - MPManager.Instance().ComposingText = false; - MSG.Text = ""; - MSG.Enabled = false; - if (msg == "") return; - var user = ""; - if (messages.SelectedItems.Count > 0) - { - var chosen = messages.SelectedItems; - for (var i = 0; i < chosen.Count; i++) - { - var tmp = (string)chosen[i]; - var index = tmp.IndexOf(':'); - if (index < 0) continue; - tmp = tmp.Substring(0, index) + "\r"; - if (user.Contains(tmp)) continue; - user += tmp; - } - user += "0END"; - } - else - return; - - MPManager.Notify(new MSGText(MPManager.GetUserName(), user, msg).ToString()); - } - - private void MSGLeave(object sender, EventArgs e) - { - //MultiPlayer.MPManager.Instance().ComposingText = false; - } - - private void MSGEnter(object sender, EventArgs e) - { - //MultiPlayer.MPManager.Instance().ComposingText = true; - } - - private void DispatcherLeave(object sender, EventArgs e) - { - //MultiPlayer.MPManager.Instance().ComposingText = false; - } - - private void checkKeys(object sender, PreviewKeyDownEventArgs e) - { - if (e.KeyValue == 13) - { - if (e.KeyValue == 13) - { - var msg = MSG.Text; - msg = msg.Replace("\r", ""); - msg = msg.Replace("\t", ""); - msg = msg.Replace("\n", ""); - MPManager.Instance().ComposingText = false; - MSG.Enabled = false; - MSG.Text = ""; - if (msg == "") return; - var user = ""; - - if (MPManager.IsServer()) - { - var users = MPManager.OnlineTrains.Players.Keys - .Select((string u) => $"{u}\r"); - user += string.Join("", users) + "0END"; - string msgText = new MSGText(MPManager.GetUserName(), user, msg).ToString(); - try - { - MPManager.Notify(msgText); - } - catch { } - finally - { - MSG.Text = ""; - } - } - else - { - user = "0Server\r+0END"; - MPManager.Notify(new MSGText(MPManager.GetUserName(), user, msg).ToString()); - MSG.Text = ""; - } - } - } - } - - private void msgSelected_Click(object sender, EventArgs e) - { - msgAll.Enabled = false; - msgSelected.Enabled = false; - reply2Selected.Enabled = false; - MPManager.Instance().ComposingText = false; - MSG.Enabled = false; - - if (!MPManager.IsMultiPlayer()) return; - var msg = MSG.Text; - MSG.Text = ""; - msg = msg.Replace("\r", ""); - msg = msg.Replace("\t", ""); - if (msg == "") return; - var user = ""; - if (AvatarView.SelectedItems.Count > 0) - { - var chosen = AvatarView.SelectedItems; - for (var i = 0; i < chosen.Count; i++) - { - var name = chosen[i].Text.Split(' ')[0]; //text may have (H) in it, so need to filter out - if (name == MPManager.GetUserName()) - continue; - user += name + "\r"; - } - user += "0END"; - } - else - return; - - MPManager.Notify(new MSGText(MPManager.GetUserName(), user, msg).ToString()); - - } - - private void msgSelectedChanged(object sender, EventArgs e) - { - AvatarView.SelectedItems.Clear(); - msgSelected.Enabled = false; - if (MSG.Enabled == true) reply2Selected.Enabled = true; - } - - private void AvatarView_SelectedIndexChanged(object sender, EventArgs e) - { - messages.SelectedItems.Clear(); - reply2Selected.Enabled = false; - if (MSG.Enabled == true) msgSelected.Enabled = true; - if (AvatarView.SelectedItems.Count <= 0) return; - var name = AvatarView.SelectedItems[0].Text.Split(' ')[0].Trim(); - if (name == MPManager.GetUserName()) - { - if (Program.Simulator.PlayerLocomotive != null) PickedTrain = Program.Simulator.PlayerLocomotive.Train; - else if (Program.Simulator.Trains.Count > 0) PickedTrain = Program.Simulator.Trains[0]; - } - else PickedTrain = MPManager.OnlineTrains.findTrain(name); - - } - - private void chkDrawPathChanged(object sender, EventArgs e) - { - DrawPath = chkDrawPath.Checked; - } - - private void boxSetSignalChosen(object sender, EventArgs e) - { - if (signalPickedItem == null) - { - UnHandleItemPick(); - return; - } - - var signal = signalPickedItem.Signal; - var type = boxSetSignal.SelectedIndex; - if (MPManager.Instance().AmAider) - { - MPManager.Notify(new MSGSignalChange(signal, type).ToString()); - UnHandleItemPick(); - return; - } - - switch (type) - { - case 0: - signal.ClearHoldSignalDispatcher(); - break; - - case 1: - signal.RequestHoldSignalDispatcher(true); - break; - - case 2: - signal.RequestApproachAspect(); - break; - - case 3: - signal.RequestLeastRestrictiveAspect(); - break; - - case 4: - signal.SetManualCallOn(true); - break; - } - - UnHandleItemPick(); - } - - private void boxSetSwitchChosen(object sender, EventArgs e) - { - if (switchPickedItem == null) - { - UnHandleItemPick(); return; - } - var sw = switchPickedItem.Item.TrJunctionNode; - var type = boxSetSwitch.SelectedIndex; - - //aider can send message to the server for a switch - if (MPManager.IsMultiPlayer() && MPManager.Instance().AmAider) - { - var nextSwitchTrack = sw; - var Selected = 0; - switch (type) - { - case 0: - Selected = (int)switchPickedItem.main; - break; - case 1: - Selected = 1 - (int)switchPickedItem.main; - break; - } - //aider selects and throws the switch, but need to confirm by the dispatcher - MPManager.Notify(new MSGSwitch(MPManager.GetUserName(), - nextSwitchTrack.TN.UiD.WorldTileX, nextSwitchTrack.TN.UiD.WorldTileZ, nextSwitchTrack.TN.UiD.WorldId, Selected, true).ToString()); - Program.Simulator.Confirmer.Information(Viewer.Catalog.GetString("Switching Request Sent to the Server")); - - } - //server throws the switch immediately - else - { - switch (type) - { - case 0: - Program.Simulator.Signals.RequestSetSwitch(sw.TN, (int)switchPickedItem.main); - //sw.SelectedRoute = (int)switchPickedItem.main; - break; - case 1: - Program.Simulator.Signals.RequestSetSwitch(sw.TN, 1 - (int)switchPickedItem.main); - //sw.SelectedRoute = 1 - (int)switchPickedItem.main; - break; - } - } - UnHandleItemPick(); - - } - - private void chkAllowNewCheck(object sender, EventArgs e) - { - MPManager.Instance().AllowNewPlayer = chkAllowNew.Checked; - } - - private void AssistClick(object sender, EventArgs e) - { - AvatarView.SelectedIndices.Remove(0); - if (AvatarView.SelectedIndices.Count > 0) - { - var tmp = AvatarView.SelectedItems[0].Text.Split(' '); - var name = tmp[0].Trim(); - if (MPManager.Instance().aiderList.Contains(name)) return; - if (MPManager.OnlineTrains.Players.ContainsKey(name)) - { - MPManager.BroadCast(new MSGAider(name, true).ToString()); - MPManager.Instance().aiderList.Add(name); - } - AvatarView.Items.Clear(); - if (avatarList != null) avatarList.Clear(); - } - } - - private void btnNormalClick(object sender, EventArgs e) - { - if (AvatarView.SelectedIndices.Count > 0) - { - var tmp = AvatarView.SelectedItems[0].Text.Split(' '); - var name = tmp[0].Trim(); - if (MPManager.OnlineTrains.Players.ContainsKey(name)) - { - MPManager.BroadCast(new MSGAider(name, false).ToString()); - MPManager.Instance().aiderList.Remove(name); - } - AvatarView.Items.Clear(); - if (avatarList != null) avatarList.Clear(); - } - - } - - private void btnFollowClick(object sender, EventArgs e) - { - followTrain = true; - } - - private void chkOPenaltyHandle(object sender, EventArgs e) - { - MPManager.Instance().CheckSpad = chkBoxPenalty.Checked; - if (chkBoxPenalty.Checked == false) { MPManager.BroadCast(new MSGMessage("All", "OverSpeedOK", "OK to go overspeed and pass stop light").ToString()); } - else { MPManager.BroadCast(new MSGMessage("All", "NoOverSpeed", "Penalty for overspeed and passing stop light").ToString()); } - - } - - private void chkPreferGreenHandle(object sender, EventArgs e) - { - MPManager.PreferGreen = chkBoxPenalty.Checked; - - } - - public bool ClickedTrain; - private void btnSeeInGameClick(object sender, EventArgs e) - { - if (PickedTrain != null) ClickedTrain = true; - else ClickedTrain = false; - } - - private void bBackgroundColor_Click(object sender, EventArgs e) - { - if (pbCanvas.BackColor == Color.White) - pbCanvas.BackColor = Color.FromArgb(64, 128, 128); - else if (pbCanvas.BackColor == Color.FromArgb(64, 128, 128)) - pbCanvas.BackColor = Color.FromArgb(250, 234, 209); - else if (pbCanvas.BackColor == Color.FromArgb(250, 234, 209)) - pbCanvas.BackColor = Color.FromArgb(250, 240, 230); - else if (pbCanvas.BackColor == Color.FromArgb(250, 240, 230)) // Windows color "linen" - pbCanvas.BackColor = Color.White; - } - - private void PictureMoveAndZoomInOut(int x, int y, decimal scale) - { - int diffX = x - pbCanvas.Width / 2; - int diffY = y - pbCanvas.Height / 2; - ViewWindow.Offset(diffX / xScale, -diffY / yScale); - if (scale < windowSizeUpDown.Minimum) scale = windowSizeUpDown.Minimum; - if (scale > windowSizeUpDown.Maximum) scale = windowSizeUpDown.Maximum; - windowSizeUpDown.Value = scale; - GenerateView(); - } - - #region Timetable - public int DaylightOffsetHrs { get; set; } = 0; - - private void TimetableDrag(object sender, MouseEventArgs e) - { - if (Dragging && !Zooming) - { - int diffX = e.X - LastCursorPosition.X; - int diffY = e.Y - LastCursorPosition.Y; - - ClipDrag(diffX, diffY); - GenerateView(true); - } - else if (Zooming) - { - decimal tempValue = windowSizeUpDown.Value; - if (LastCursorPosition.Y - e.Y < 0) tempValue /= 0.95m; - else if (LastCursorPosition.Y - e.Y > 0) tempValue *= 0.95m; - - if (tempValue < windowSizeUpDown.Minimum) tempValue = windowSizeUpDown.Minimum; - if (tempValue > windowSizeUpDown.Maximum) tempValue = windowSizeUpDown.Maximum; - windowSizeUpDown.Value = tempValue; - GenerateView(true); - } - LastCursorPosition.X = e.X; - LastCursorPosition.Y = e.Y; - } - - private void pbCanvas_SizeChanged(object sender, EventArgs e) - { - var oldSizePxX = ViewWindow.Width * xScale; - var oldSizePxY = ViewWindow.Height * yScale; - var newSizePxX = pbCanvas.Width; - var newSizePxY = pbCanvas.Height; - var sizeIncreaseX = newSizePxX / oldSizePxX; - var sizeIncreaseY = newSizePxY / oldSizePxY; - - // Could be clever and keep all the previous view still in view and centred at the same point. - // Instead use the simplest solution: - ViewWindow.Width *= sizeIncreaseX; - ViewWindow.Height *= sizeIncreaseY; - } - - /// - /// Add or subtract hours of daylight to more easily observe activity during the night. - /// - /// - /// - private void nudDaylightOffsetHrs_ValueChanged(object sender, EventArgs e) - { - DaylightOffsetHrs = (int)nudDaylightOffsetHrs.Value; - } - - private void tWindow_SelectedIndexChanged(object sender, EventArgs e) - { - TimetableWindow.SetControls(); - } - - /// - /// Loads a relevant page from the manual maintained by James Ross's automatic build - /// - /// - /// - private void bTrainKey_Click(object sender, EventArgs e) - { - // This method is also compatible with .NET Core 3 - var psi = new ProcessStartInfo - { - FileName = "https://open-rails.readthedocs.io/en/latest/driving.html#extended-hud-for-dispatcher-information" - , - UseShellExecute = true - }; - Process.Start(psi); - } - - /// - /// Provides a clip zone to stop user from pushing track fully out of window - /// - /// - /// - private void ClipDrag(int diffX, int diffY) - { - // Moving the mouse right means moving the ViewWindow left. - var changeXm = -(float)(diffX / xScale); - // Moving the mouse up means moving the ViewWindow up. - var changeYm = +(float)(diffY / yScale); - - - const int clipPixels = 100; - var viewWindowLeftM = minX + ViewWindow.X; - var viewWindowRightM = minX + ViewWindow.X + ViewWindow.Width; - var bufferXm = clipPixels / xScale; - var viewWindowTopM = minY + ViewWindow.Y; - var viewWindowBottomM = minY + ViewWindow.Y + ViewWindow.Height; - var bufferYm = clipPixels / yScale; - - if (viewWindowRightM + changeXm < minX + bufferXm) // drag right => -ve changeX - changeXm = +(minX + bufferXm - viewWindowRightM); - else if (viewWindowLeftM + changeXm > maxX - bufferXm) - changeXm = +(maxX - bufferXm - viewWindowLeftM); - - if (viewWindowBottomM + changeYm < minY + bufferYm) - changeYm = minY + bufferYm - viewWindowBottomM; - else if (viewWindowTopM + changeYm > maxY - bufferYm) - changeYm = maxY - bufferYm - viewWindowTopM; - - ViewWindow.Offset(changeXm, changeYm); - } - #endregion - } - - #region SignalWidget - /// - /// Defines a signal being drawn in a 2D view. - /// - public class SignalWidget : ItemWidget - { - public TrItem Item; - /// - /// The underlying signal object as referenced by the TrItem. - /// - public SignalObject Signal; - - public PointF Dir; - public bool hasDir; - /// - /// For now, returns true if any of the signal heads shows any "clear" aspect. - /// This obviously needs some refinement. - /// - public int IsProceed - { - get - { - int returnValue = 2; - - foreach (var head in Signal.SignalHeads.Where(x => x.Function == SignalFunction.NORMAL)) - { - if (head.state == MstsSignalAspect.CLEAR_1 - || head.state == MstsSignalAspect.CLEAR_2) - { - returnValue = 0; - } - if (head.state == MstsSignalAspect.APPROACH_1 - || head.state == MstsSignalAspect.APPROACH_2 - || head.state == MstsSignalAspect.APPROACH_3) - { - returnValue = 1; - } - } - - return returnValue; - } - } - - /// - /// - /// - /// - /// - public SignalWidget(SignalItem item, SignalObject signal) - { - Item = item; - Signal = signal; - hasDir = false; - Location.X = item.TileX * 2048 + item.X; - Location.Y = item.TileZ * 2048 + item.Z; - var node = Program.Simulator.TDB.TrackDB.TrackNodes?[signal.trackNode]; - Vector2 v2; - if (node?.TrVectorNode != null) - { - var ts = node.TrVectorNode.TrVectorSections?.FirstOrDefault(); - if (ts == null) - return; - v2 = new Vector2(ts.TileX * 2048 + ts.X, ts.TileZ * 2048 + ts.Z); - } - else if (node?.TrJunctionNode != null) - { - var ts = node?.UiD; - if (ts == null) - return; - v2 = new Vector2(ts.TileX * 2048 + ts.X, ts.TileZ * 2048 + ts.Z); - } - else - { - return; - } - var v1 = new Vector2(Location.X, Location.Y); - var v3 = v1 - v2; - v3.Normalize(); - void copyTo(Vector2 input, ref PointF output) - { - output.X = input.X; - output.Y = input.Y; - } - copyTo(v1 - Vector2.Multiply(v3, signal.direction == 0 ? 12f : -12f), ref Dir); - //shift signal along the dir for 2m, so signals will not be overlapped - copyTo(v1 - Vector2.Multiply(v3, signal.direction == 0 ? 1.5f : -1.5f), ref Location); - hasDir = true; - } - } - #endregion - - #region SwitchWidget - /// - /// Defines a signal being drawn in a 2D view. - /// - public class SwitchWidget : ItemWidget - { - public TrackNode Item; - public uint main; - - /// - /// - /// - /// - /// - public SwitchWidget(TrackNode item) - { - Item = item; - var TS = Program.Simulator.TSectionDat.TrackShapes.Get(item.TrJunctionNode.ShapeIndex); // TSECTION.DAT tells us which is the main route - - if (TS != null) - { - main = TS.MainRoute; - } - else - { - main = 0; - } - - Location.X = Item.UiD.TileX * 2048 + Item.UiD.X; Location.Y = Item.UiD.TileZ * 2048 + Item.UiD.Z; - } - } - - #endregion - - #region BufferWidget - public class BufferWidget : ItemWidget - { - public TrackNode Item; - - /// - /// - /// - /// - /// - public BufferWidget(TrackNode item) - { - Item = item; - - Location.X = Item.UiD.TileX * 2048 + Item.UiD.X; Location.Y = Item.UiD.TileZ * 2048 + Item.UiD.Z; - } - } - #endregion - - #region ItemWidget - public class ItemWidget - { - public PointF Location; - public PointF Location2D; - - /// - /// - /// - /// - public ItemWidget() - { - - Location = new PointF(float.NegativeInfinity, float.NegativeInfinity); - Location2D = new PointF(float.NegativeInfinity, float.NegativeInfinity); - } - } - #endregion - - #region TrainWidget - public class TrainWidget : ItemWidget - { - public Train Train; - - /// - /// - /// - /// - public TrainWidget(Train t) - { - Train = t; - } - } - #endregion - - #region LineSegment - /// - /// Defines a geometric line segment. - /// - public class LineSegment - { - public dVector A; - public dVector B; - public dVector C; - //public float radius; - public bool isCurved; - - public float angle1, angle2; - - public LineSegment(dVector A, dVector B, bool Occupied, TrVectorSection Section) - { - this.A = A; - this.B = B; - - isCurved = false; - if (Section == null) return; - //MySection = Section; - uint k = Section.SectionIndex; - TrackSection ts = Program.Simulator.TSectionDat.TrackSections.Get(k); - if (ts != null) - { - if (ts.SectionCurve != null) - { - float diff = (float)(ts.SectionCurve.Radius * (1 - Math.Cos(ts.SectionCurve.Angle * 3.14f / 360))); - if (diff < 3) return; //not need to worry, curve too small - //curve = ts.SectionCurve; - Vector3 v = new Vector3((float)((B.TileX - A.TileX) * 2048 + B.X - A.X), 0, (float)((B.TileZ - A.TileZ) * 2048 + B.Z - A.Z)); - isCurved = true; - Vector3 v2 = Vector3.Cross(Vector3.Up, v); v2.Normalize(); - v = v / 2; v.X += A.TileX * 2048 + (float)A.X; v.Z += A.TileZ * 2048 + (float)A.Z; - if (ts.SectionCurve.Angle > 0) - { - v = v2 * -diff + v; - } - else v = v2 * diff + v; - C = new dVector(0, v.X, 0, v.Z); - } - } - } - } - #endregion - - #region SidingWidget - - /// - /// Defines a siding name being drawn in a 2D view. - /// - public struct SidingWidget - { - public uint Id; - public PointF Location; - public string Name; - public uint LinkId; - - /// - /// The underlying track item. - /// - public SidingItem Item; - - /// - /// - /// - /// - /// - public SidingWidget(SidingItem item) - { - Id = item.TrItemId; - LinkId = item.LinkedSidingId; - Item = item; - Name = item.ItemName; - Location = new PointF(item.TileX * 2048 + item.X, item.TileZ * 2048 + item.Z); - } - } - #endregion - - public struct PlatformWidget - { - public uint Id; - public PointF Location; - public string Name; - public PointF Extent1; - public PointF Extent2; - public uint LinkId; - public string Station; - - /// - /// The underlying track item. - /// - public PlatformItem Item; - - /// - /// - /// - /// - /// - public PlatformWidget(PlatformItem item) - { - Id = item.TrItemId; - LinkId = item.LinkedPlatformItemId; - Item = item; - Name = item.ItemName; - Station = item.Station; - Location = new PointF(item.TileX * 2048 + item.X, item.TileZ * 2048 + item.Z); - Extent1 = default; - Extent2 = default; - } - } - - public class dVector - { - public int TileX, TileZ; - public double X, Z; - - public dVector(int tilex1, double x1, int tilez1, double z1) - { - TileX = tilex1; - TileZ = tilez1; - X = x1; - Z = z1; - } - - static public double DistanceSqr(dVector v1, dVector v2) - { - return Math.Pow((v1.TileX - v2.TileX) * 2048 + v1.X - v2.X, 2) - + Math.Pow((v1.TileZ - v2.TileZ) * 2048 + v1.Z - v2.Z, 2); - } - } -} diff --git a/Source/RunActivity/Viewer3D/Debugging/TimetableWindow.cs b/Source/RunActivity/Viewer3D/Debugging/TimetableWindow.cs deleted file mode 100644 index 006a6fc05a..0000000000 --- a/Source/RunActivity/Viewer3D/Debugging/TimetableWindow.cs +++ /dev/null @@ -1,959 +0,0 @@ -// COPYRIGHT 2010 - 2020 by the Open Rails project. -// -// This file is part of Open Rails. -// -// Open Rails is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Open Rails is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Open Rails. If not, see . - -using System; -using System.Diagnostics; -using System.Drawing; -using System.Linq; -using Microsoft.Xna.Framework; -using Orts.Formats.Msts; -using Orts.MultiPlayer; -using Orts.Simulation; -using Orts.Simulation.Physics; -using Orts.Simulation.RollingStocks; -using Orts.Simulation.Signalling; -using ORTS.Common; -using Color = System.Drawing.Color; - -namespace Orts.Viewer3D.Debugging -{ - public class TimetableWindow - { - public DispatchViewer F { get; set; } // Shortest possible abbreviation so code is easier to read. - - public TimetableWindow(DispatchViewer form) - { - F = form; - } - - public void SetControls() - { - // Default is Timetable Tab, unless in Multi-Player mode - if (F.tWindow.SelectedIndex == 1) // 0 for Dispatch Window, 1 for Timetable Window - { - // Default is All Trains, unless in Timetable mode - F.rbShowActiveTrainLabels.Checked = F.simulator.TimetableMode; - F.rbShowAllTrainLabels.Checked = !(F.rbShowActiveTrainLabels.Checked); - - ShowTimetableControls(true); - ShowDispatchControls(false); - SetTimetableMedia(); - } - else - { - ShowTimetableControls(false); - ShowDispatchControls(true); - SetDispatchMedia(); - } - } - - private void ShowDispatchControls(bool dispatchView) - { - var multiPlayer = MPManager.IsMultiPlayer() && dispatchView; - F.msgAll.Visible = multiPlayer; - F.msgSelected.Visible = multiPlayer; - F.composeMSG.Visible = multiPlayer; - F.MSG.Visible = multiPlayer; - F.messages.Visible = multiPlayer; - F.AvatarView.Visible = multiPlayer; - F.composeMSG.Visible = multiPlayer; - F.reply2Selected.Visible = multiPlayer; - F.chkShowAvatars.Visible = multiPlayer; - F.chkAllowUserSwitch.Visible = multiPlayer; - F.chkAllowNew.Visible = multiPlayer; - F.chkBoxPenalty.Visible = multiPlayer; - F.chkPreferGreen.Visible = multiPlayer; - F.btnAssist.Visible = multiPlayer; - F.btnNormal.Visible = multiPlayer; - F.rmvButton.Visible = multiPlayer; - - if (multiPlayer) - { - F.chkShowAvatars.Checked = Program.Simulator.Settings.ShowAvatar; - F.pbCanvas.Location = new System.Drawing.Point(F.pbCanvas.Location.X, F.label1.Location.Y + 18); - F.refreshButton.Text = "View Self"; - } - - F.chkDrawPath.Visible = dispatchView; - F.chkPickSignals.Visible = dispatchView; - F.chkPickSwitches.Visible = dispatchView; - F.btnSeeInGame.Visible = dispatchView; - F.btnFollow.Visible = dispatchView; - F.windowSizeUpDown.Visible = dispatchView; - F.label1.Visible = dispatchView; - F.resLabel.Visible = dispatchView; - F.refreshButton.Visible = dispatchView; - } - - private void SetDispatchMedia() - { - F.trainFont = new Font("Arial", 14, FontStyle.Bold); - F.sidingFont = new Font("Arial", 12, FontStyle.Bold); - F.trainBrush = new SolidBrush(Color.Red); - F.sidingBrush = new SolidBrush(Color.Blue); - F.pbCanvas.BackColor = Color.White; - } - - private void ShowTimetableControls(bool timetableView) - { - F.lblSimulationTimeText.Visible = timetableView; - F.lblSimulationTime.Visible = timetableView; - F.lblShow.Visible = timetableView; - F.cbShowPlatforms.Visible = timetableView; - F.cbShowPlatformLabels.Visible = timetableView; - F.cbShowSidings.Visible = timetableView; - F.cbShowSwitches.Visible = timetableView; - F.cbShowSignals.Visible = timetableView; - F.cbShowSignalState.Visible = timetableView; - F.cbShowTrainLabels.Visible = timetableView; - F.cbShowTrainState.Visible = timetableView; - F.bTrainKey.Visible = timetableView; - F.gbTrainLabels.Visible = timetableView; - F.rbShowActiveTrainLabels.Visible = timetableView; - F.rbShowAllTrainLabels.Visible = timetableView; - F.lblDayLightOffsetHrs.Visible = timetableView; - F.nudDaylightOffsetHrs.Visible = timetableView; - F.bBackgroundColor.Visible = timetableView; - } - - private void SetTimetableMedia() - { - F.Name = "Timetable Window"; - F.trainFont = new Font("Segoe UI Semibold", 10, FontStyle.Regular); - F.sidingFont = new Font("Segoe UI Semibold", 10, FontStyle.Regular); - F.PlatformFont = new Font("Segoe UI Semibold", 10, FontStyle.Regular); - F.SignalFont = new Font("Segoe UI Semibold", 10, FontStyle.Regular); - F.trainBrush = new SolidBrush(Color.Red); - F.InactiveTrainBrush = new SolidBrush(Color.DarkRed); - F.sidingBrush = new SolidBrush(Color.Blue); - F.PlatformBrush = new SolidBrush(Color.DarkBlue); - F.SignalBrush = new SolidBrush(Color.DarkRed); - F.pbCanvas.BackColor = Color.FromArgb(250, 240, 230); - } - - private void AdjustControlLocations() - { - if (F.Height < 600 || F.Width < 800) return; - - if (F.oldHeight != F.Height || F.oldWidth != F.Width) //use the label "Res" as anchor point to determine the picture size - { - F.oldWidth = F.Width; F.oldHeight = F.Height; - - F.pbCanvas.Top = 50; - F.pbCanvas.Width = F.label1.Left - 25; // 25 pixels found by trial and error - F.pbCanvas.Height = F.Height - F.pbCanvas.Top - 45; // 45 pixels found by trial and error - - if (F.pbCanvas.Image != null) - F.pbCanvas.Image.Dispose(); - F.pbCanvas.Image = new Bitmap(F.pbCanvas.Width, F.pbCanvas.Height); - } - if (F.firstShow) - { - // Center the view on the player's locomotive - var pos = Program.Simulator.PlayerLocomotive.WorldPosition; - var ploc = new PointF(pos.TileX * 2048 + pos.Location.X, pos.TileZ * 2048 + pos.Location.Z); -#pragma warning disable CS1690 // Accessing a member on a field of a marshal-by-reference class may cause a runtime exception - F.ViewWindow.X = ploc.X - F.minX - F.ViewWindow.Width / 2; - F.ViewWindow.Y = ploc.Y - F.minY - F.ViewWindow.Width / 2; -#pragma warning restore CS1690 // Accessing a member on a field of a marshal-by-reference class may cause a runtime exception - F.firstShow = false; - } - - // Sufficient to accommodate the whole route plus 50% - var xRange = F.maxX - F.minX; - var yRange = F.maxY - F.minY; - var maxSize = (int)(((xRange > yRange) ? xRange : yRange) * 1.5); - F.windowSizeUpDown.Maximum = (decimal)maxSize; - } - - public void PopulateItemLists() - { - foreach (var item in F.simulator.TDB.TrackDB.TrItemTable) - { - switch (item.ItemType) - { - case TrItem.trItemType.trSIGNAL: - if (item is SignalItem si) - { - if (si.SigObj >= 0 && si.SigObj < F.simulator.Signals.SignalObjects.Length) - { - var s = F.simulator.Signals.SignalObjects[si.SigObj]; - if (s != null && s.Type == SignalObjectType.Signal && s.isSignalNormal()) - F.signals.Add(new SignalWidget(si, s)); - } - } - break; - - case TrItem.trItemType.trSIDING: - // Sidings have 2 ends but are not always listed in pairs in the *.tdb file - // Neither are their names unique (e.g. Bernina Bahn). - // Find whether this siding is a new one or the other end of an old one. - // If other end, then find the right-hand one as the location for a single label. - // Note: Find() within a foreach() loop is O(n^2) but is only done at start. - var oldSidingIndex = F.sidings.FindIndex(r => r.LinkId == item.TrItemId && r.Name == item.ItemName); - if (oldSidingIndex < 0) - { - var newSiding = new SidingWidget(item as SidingItem); - F.sidings.Add(newSiding); - } - else - { - var oldSiding = F.sidings[oldSidingIndex]; - var oldLocation = oldSiding.Location; - var newLocation = new PointF(item.TileX * 2048 + item.X, item.TileZ * 2048 + item.Z); - - // Because these are structs, not classes, compiler won't let you overwrite them. - // Instead create a single item which replaces the 2 platform items. - var replacement = new SidingWidget(item as SidingItem) - { - Location = GetMidPoint(oldLocation, newLocation) - }; - - // Replace the old siding item with the replacement - F.sidings.RemoveAt(oldSidingIndex); - F.sidings.Add(replacement); - } - break; - - case TrItem.trItemType.trPLATFORM: - // Platforms have 2 ends but are not always listed in pairs in the *.tdb file - // Neither are their names unique (e.g. Bernina Bahn). - // Find whether this platform is a new one or the other end of an old one. - // If other end, then find the right-hand one as the location for a single label. - var oldPlatformIndex = F.platforms.FindIndex(r => r.LinkId == item.TrItemId && r.Name == item.ItemName); - if (oldPlatformIndex < 0) - { - var newPlatform = new PlatformWidget(item as PlatformItem) - { - Extent1 = new PointF(item.TileX * 2048 + item.X, item.TileZ * 2048 + item.Z) - }; - F.platforms.Add(newPlatform); - } - else - { - var oldPlatform = F.platforms[oldPlatformIndex]; - var oldLocation = oldPlatform.Location; - var newLocation = new PointF(item.TileX * 2048 + item.X, item.TileZ * 2048 + item.Z); - - // Because these are structs, not classes, compiler won't let you overwrite them. - // Instead create a single item which replaces the 2 platform items. - var replacement = new PlatformWidget(item as PlatformItem) - { - Extent1 = oldLocation - , - Extent2 = newLocation - // Give it the right-hand location - , - Location = GetRightHandPoint(oldLocation, newLocation) - }; - - // Replace the old platform item with the replacement - F.platforms.RemoveAt(oldPlatformIndex); - F.platforms.Add(replacement); - } - break; - - default: - break; - } - } - - foreach (var p in F.platforms) - if (p.Extent1.IsEmpty || p.Extent2.IsEmpty) - Trace.TraceWarning("Platform '{0}' is incomplete as the two ends do not match. It will not show in full in the Timetable Tab of the Map Window", p.Name); - } - - /// - /// Returns the mid-point between two locations - /// - /// - /// - /// - /// - private PointF GetMidPoint(PointF location1, PointF location2) - { - return new PointF() - { - X = (location1.X + location2.X) / 2 - , - Y = (location1.Y + location2.Y) / 2 - }; - } - - private PointF GetRightHandPoint(PointF location1, PointF location2) - { - return (location1.X > location2.X) ? location1 : location2; - } - - public void GenerateTimetableView(bool dragging = false) - { - AdjustControlLocations(); - ShowSimulationTime(); - - if (F.pbCanvas.Image == null) - F.InitImage(); - - using (Graphics g = Graphics.FromImage(F.pbCanvas.Image)) - { - g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; - g.Clear(F.pbCanvas.BackColor); - -#pragma warning disable CS1690 // Accessing a member on a field of a marshal-by-reference class may cause a runtime exception - // Set scales. subX & subY give top-left location in meters from world origin. - F.subX = F.minX + F.ViewWindow.X; - F.subY = F.minY + F.ViewWindow.Y; - - // Get scale in pixels/meter - F.xScale = F.pbCanvas.Width / F.ViewWindow.Width; - F.yScale = F.pbCanvas.Height / F.ViewWindow.Height; - // Make X and Y scales the same to maintain correct angles. - F.xScale = F.yScale = Math.Max(F.xScale, F.yScale); -#pragma warning restore CS1690 // Accessing a member on a field of a marshal-by-reference class may cause a runtime exception - - // Set the default pen to represent 1 meter. - var scale = (float)Math.Round((double)F.xScale); // Round to nearest pixels/meter - var penWidth = (int)MathHelper.Clamp(scale, 1, 4); // Keep 1 <= width <= 4 pixels - - // Choose pens - Pen p = F.grayPen; - F.grayPen.Width = F.greenPen.Width = F.orangePen.Width = F.redPen.Width = penWidth; - F.pathPen.Width = penWidth * 2; - - // First so track is drawn over the thicker platform line - DrawPlatforms(g, penWidth); - - // Draw track - PointF scaledA, scaledB; - DrawTrack(g, p, out scaledA, out scaledB); - - if (dragging == false) - { - // Draw trains and path - DrawTrains(g, scaledA, scaledB); - - // Keep widgetWidth <= 15 pixels - var widgetWidth = Math.Min(penWidth * 6, 15); - - // Draw signals on top of path so they are easier to see. - F.signalItemsDrawn.Clear(); - ShowSignals(g, scaledB, widgetWidth); - - // Draw switches - F.switchItemsDrawn.Clear(); - ShowSwitches(g, widgetWidth); - - // Draw labels for sidings and platforms last so they go on top for readability - CleanTextCells(); // Empty the listing of labels ready for adding labels again - ShowPlatformLabels(g); // Platforms take priority over sidings and signal states - ShowSidingLabels(g); - } - DrawZoomTarget(g); - } - F.pbCanvas.Invalidate(); // Triggers a re-paint - } - - /// - /// Indicates the location around which the image is zoomed. - /// If user drags an item of interest into this target box and zooms in, the item will remain in view. - /// - /// - private void DrawZoomTarget(Graphics g) - { - if (F.Dragging) - { - const int size = 24; - var top = F.pbCanvas.Height / 2 - size / 2; - var left = (int)(F.pbCanvas.Width / 2 - size / 2); - g.DrawRectangle(F.grayPen, left, top, size, size); - } - } - - private void ShowSimulationTime() - { - var ct = TimeSpan.FromSeconds(Program.Simulator.ClockTime); - F.lblSimulationTime.Text = $"{ct:hh}:{ct:mm}:{ct:ss}"; - } - - private void DrawPlatforms(Graphics g, int penWidth) - { - if (F.cbShowPlatforms.Checked) - { - // Platforms can be obtrusive, so draw in solid blue only when zoomed in and fade them as we zoom out - switch (penWidth) - { - case 1: - F.PlatformPen.Color = Color.FromArgb(0, 0, 255); break; - case 2: - F.PlatformPen.Color = Color.FromArgb(150, 150, 255); break; - default: - F.PlatformPen.Color = Color.FromArgb(200, 200, 255); break; - } - - var width = F.grayPen.Width * 3; - F.PlatformPen.Width = width; - foreach (var p in F.platforms) - { - var scaledA = new PointF((p.Extent1.X - F.subX) * F.xScale, F.pbCanvas.Height - (p.Extent1.Y - F.subY) * F.yScale); - var scaledB = new PointF((p.Extent2.X - F.subX) * F.xScale, F.pbCanvas.Height - (p.Extent2.Y - F.subY) * F.yScale); - - FixForBadData(width, ref scaledA, ref scaledB, p.Extent1, p.Extent2); - g.DrawLine(F.PlatformPen, scaledA, scaledB); - } - } - } - - /// - /// In case of missing X,Y values, just draw a blob at the non-zero end. - /// - private void FixForBadData(float width, ref PointF scaledA, ref PointF scaledB, PointF Extent1, PointF Extent2) - { - if (Extent1.X == 0 || Extent1.Y == 0) - { - scaledA.X = scaledB.X + width; - scaledA.Y = scaledB.Y + width; - } - else if (Extent2.X == 0 || Extent2.Y == 0) - { - scaledB.X = scaledA.X + width; - scaledB.Y = scaledA.Y + width; - } - } - - private void DrawTrack(Graphics g, Pen p, out PointF scaledA, out PointF scaledB) - { - PointF[] points = new PointF[3]; - scaledA = new PointF(0, 0); - scaledB = new PointF(0, 0); - PointF scaledC = new PointF(0, 0); - foreach (var line in F.segments) - { - scaledA.X = (line.A.TileX * 2048 - F.subX + (float)line.A.X) * F.xScale; - scaledA.Y = F.pbCanvas.Height - (line.A.TileZ * 2048 - F.subY + (float)line.A.Z) * F.yScale; - scaledB.X = (line.B.TileX * 2048 - F.subX + (float)line.B.X) * F.xScale; - scaledB.Y = F.pbCanvas.Height - (line.B.TileZ * 2048 - F.subY + (float)line.B.Z) * F.yScale; - - if ((scaledA.X < 0 && scaledB.X < 0) - || (scaledA.Y < 0 && scaledB.Y < 0)) - continue; - - if (line.isCurved == true) - { - scaledC.X = ((float)line.C.X - F.subX) * F.xScale; scaledC.Y = F.pbCanvas.Height - ((float)line.C.Z - F.subY) * F.yScale; - points[0] = scaledA; points[1] = scaledC; points[2] = scaledB; - g.DrawCurve(p, points); - } - else g.DrawLine(p, scaledA, scaledB); - } - } - - private void ShowSwitches(Graphics g, float width) - { - if (F.cbShowSwitches.Checked) - for (var i = 0; i < F.switches.Count; i++) - { - SwitchWidget sw = F.switches[i]; - - var x = (sw.Location.X - F.subX) * F.xScale; - var y = F.pbCanvas.Height - (sw.Location.Y - F.subY) * F.yScale; - if (x < 0 || y < 0) - continue; - - var scaledItem = new PointF() { X = x, Y = y }; - - if (sw.Item.TrJunctionNode.SelectedRoute == sw.main) - g.FillEllipse(Brushes.Black, DispatchViewer.GetRect(scaledItem, width)); - else - g.FillEllipse(Brushes.Gray, DispatchViewer.GetRect(scaledItem, width)); - - sw.Location2D.X = scaledItem.X; sw.Location2D.Y = scaledItem.Y; - F.switchItemsDrawn.Add(sw); - } - } - - private void ShowSignals(Graphics g, PointF scaledB, float width) - { - if (F.cbShowSignals.Checked) - foreach (var s in F.signals) - { - if (float.IsNaN(s.Location.X) || float.IsNaN(s.Location.Y)) - continue; - var x = (s.Location.X - F.subX) * F.xScale; - var y = F.pbCanvas.Height - (s.Location.Y - F.subY) * F.yScale; - if (x < 0 || y < 0) - continue; - - var scaledItem = new PointF() { X = x, Y = y }; - s.Location2D.X = scaledItem.X; s.Location2D.Y = scaledItem.Y; - if (s.Signal.isSignalNormal()) - { - var color = Brushes.Lime; // bright colour for readability - var pen = F.greenPen; - if (s.IsProceed == 0) - { - } - else if (s.IsProceed == 1) - { - color = Brushes.Yellow; // bright colour for readbility - pen = F.orangePen; - } - else - { - color = Brushes.Red; - pen = F.redPen; - } - g.FillEllipse(color, DispatchViewer.GetRect(scaledItem, width)); - F.signalItemsDrawn.Add(s); - if (s.hasDir) - { - scaledB.X = (s.Dir.X - F.subX) * F.xScale; scaledB.Y = F.pbCanvas.Height - (s.Dir.Y - F.subY) * F.yScale; - g.DrawLine(pen, scaledItem, scaledB); - } - ShowSignalState(g, scaledItem, s); - } - } - } - - private void ShowSignalState(Graphics g, PointF scaledItem, SignalWidget sw) - { - if (F.cbShowSignalState.Checked) - { - var item = sw.Item as SignalItem; - var trainNumber = sw.Signal?.enabledTrain?.Train?.Number; - var trainString = (trainNumber == null) ? "" : $" train: {trainNumber}"; - var offset = 0; - var position = scaledItem; - foreach (var signalHead in sw.Signal.SignalHeads) - { - offset++; - position.X += offset * 10; - position.Y += offset * 15; - var text = $" {item?.SigObj} {signalHead.SignalTypeName} {signalHead.state} {trainString}"; - scaledItem.Y = GetUnusedYLocation(scaledItem.X, F.pbCanvas.Height - (sw.Location.Y - F.subY) * F.yScale, text); - if (scaledItem.Y >= 0f) // -1 indicates no free slot to draw label - g.DrawString(text, F.SignalFont, F.SignalBrush, scaledItem); - } - } - } - - private void ShowSidingLabels(Graphics g) - { - if (F.cbShowSidings.CheckState == System.Windows.Forms.CheckState.Checked) - foreach (var s in F.sidings) - { - var scaledItem = new PointF(); - - scaledItem.X = (s.Location.X - F.subX) * F.xScale; - scaledItem.Y = GetUnusedYLocation(scaledItem.X, F.pbCanvas.Height - (s.Location.Y - F.subY) * F.yScale, s.Name); - if (scaledItem.Y >= 0f) // -1 indicates no free slot to draw label - g.DrawString(s.Name, F.sidingFont, F.sidingBrush, scaledItem); - } - } - - private void ShowPlatformLabels(Graphics g) - { - var platformMarginPxX = 5; - - if (F.cbShowPlatformLabels.CheckState == System.Windows.Forms.CheckState.Checked) - foreach (var p in F.platforms) - { - var scaledItem = new PointF(); - scaledItem.X = (p.Location.X - F.subX) * F.xScale + platformMarginPxX; - var yPixels = F.pbCanvas.Height - (p.Location.Y - F.subY) * F.yScale; - - // If track is close to horizontal, then start label search 1 row down to minimise overwriting platform line. - if (p.Extent1.X != p.Extent2.X - && Math.Abs((p.Extent1.Y - p.Extent2.Y) / (p.Extent1.X - p.Extent2.X)) < 0.1) - yPixels += DispatchViewer.spacing; - - scaledItem.Y = GetUnusedYLocation(scaledItem.X, F.pbCanvas.Height - (p.Location.Y - F.subY) * F.yScale, p.Name); - if (scaledItem.Y >= 0f) // -1 indicates no free slot to draw label - g.DrawString(p.Name, F.PlatformFont, F.PlatformBrush, scaledItem); - } - } - - private void DrawTrains(Graphics g, PointF scaledA, PointF scaledB) - { - var margin = 30 * F.xScale; //margins to determine if we want to draw a train - var margin2 = 5000 * F.xScale; - - //variable for drawing train path - var mDist = 5000f; var pDist = 50; //segment length when drawing path - - F.selectedTrainList.Clear(); - - if (F.simulator.TimetableMode) - { - // Add the player's train - if (F.simulator.PlayerLocomotive.Train is Orts.Simulation.AIs.AITrain) - F.selectedTrainList.Add(F.simulator.PlayerLocomotive.Train as Orts.Simulation.AIs.AITrain); - - // and all the other trains - foreach (var train in F.simulator.AI.AITrains) - F.selectedTrainList.Add(train); - } - else - { - foreach (var train in F.simulator.Trains) - F.selectedTrainList.Add(train); - } - - foreach (var train in F.selectedTrainList) - { - string trainName; - WorldPosition worldPos; - TrainCar locoCar = null; - if (train.LeadLocomotive != null) - { - trainName = train.GetTrainName(train.LeadLocomotive.CarID); - locoCar = train.LeadLocomotive; - } - else if (train.Cars != null && train.Cars.Count > 0) - { - trainName = train.GetTrainName(train.Cars[0].CarID); - if (train.TrainType == Train.TRAINTYPE.AI) - trainName = train.Number.ToString() + ":" + train.Name; - - locoCar = train.Cars.Where(r => r is MSTSLocomotive).FirstOrDefault(); - - // Skip trains with no loco - if (locoCar == null) - continue; - } - else - continue; - - // Draw the path, then each car of the train, then maybe the name - var loc = train.FrontTDBTraveller.WorldLocation; - float x = (loc.TileX * 2048 + loc.Location.X - F.subX) * F.xScale; - float y = F.pbCanvas.Height - (loc.TileZ * 2048 + loc.Location.Z - F.subY) * F.yScale; - - // If train out of view then skip it. - if (x < -margin2 - || y < -margin2) - continue; - - F.DrawTrainPath(train, F.subX, F.subY, F.pathPen, g, scaledA, scaledB, pDist, mDist); - - // If zoomed out, so train occupies less than 2 * minTrainPx pixels, then - // draw the train as 2 squares of combined length minTrainPx. - const int minTrainPx = 24; - - // pen | train | Values for a good presentation - // 1 10 - // 2 12 - // 3 14 - // 4 16 - F.trainPen.Width = F.grayPen.Width * 6; - - var minTrainLengthM = minTrainPx / F.xScale; // Calculate length equivalent to a set number of pixels - bool drawEveryCar = IsDrawEveryCar(train, minTrainLengthM); - - foreach (var car in train.Cars) - DrawCar(g, train, car, locoCar, margin, minTrainPx, drawEveryCar); - - worldPos = locoCar.WorldPosition; - var scaledTrain = new PointF(); - scaledTrain.X = (worldPos.TileX * 2048 - F.subX + worldPos.Location.X) * F.xScale; - scaledTrain.Y = -25 + F.pbCanvas.Height - (worldPos.TileZ * 2048 - F.subY + worldPos.Location.Z) * F.yScale; - if (F.cbShowTrainLabels.Checked) - DrawTrainLabels(g, train, trainName, locoCar, scaledTrain); - } - } - - private void DrawCar(Graphics g, Train train, TrainCar car, TrainCar locoCar, float margin, int minTrainPx, bool drawEveryCar) - { - if (drawEveryCar == false) - // Skip the intermediate cars - if (car != train.Cars.First() && car != train.Cars.Last()) - return; - - var t = new Traveller(train.RearTDBTraveller); - var worldPos = car.WorldPosition; - var dist = t.DistanceTo(worldPos.WorldLocation.TileX, worldPos.WorldLocation.TileZ, worldPos.WorldLocation.Location.X, worldPos.WorldLocation.Location.Y, worldPos.WorldLocation.Location.Z); - if (dist > -1) - { - var scaledTrain = new PointF(); - float x; - float y; - if (drawEveryCar) - { - t.Move(dist + car.CarLengthM / 2); // Move along from centre of car to front of car - x = (t.TileX * 2048 + t.Location.X - F.subX) * F.xScale; - y = F.pbCanvas.Height - (t.TileZ * 2048 + t.Location.Z - F.subY) * F.yScale; - - // If car out of view then skip it. - if (x < -margin || y < -margin) - return; - - t.Move(-car.CarLengthM + (1 / F.xScale)); // Move from front of car to rear less 1 pixel to create a visible gap - scaledTrain.X = x; scaledTrain.Y = y; - } - else // Draw the train as 2 boxes of fixed size - { - F.trainPen.Width = minTrainPx / 2; - if (car == train.Cars.First()) - { - // Draw first half a train back from the front of the first car as abox - t.Move(dist + car.CarLengthM / 2); - x = (t.TileX * 2048 + t.Location.X - F.subX) * F.xScale; - y = F.pbCanvas.Height - (t.TileZ * 2048 + t.Location.Z - F.subY) * F.yScale; - - // If car out of view then skip it. - if (x < -margin || y < -margin) - return; - - t.Move(-(minTrainPx - 2) / F.xScale / 2); // Move from front of car to rear less 1 pixel to create a visible gap - } - else // car == t.Cars.Last() - { - // Draw half a train back from the rear of the first box - worldPos = train.Cars.First().WorldPosition; - dist = t.DistanceTo(worldPos.WorldLocation.TileX, worldPos.WorldLocation.TileZ, worldPos.WorldLocation.Location.X, worldPos.WorldLocation.Location.Y, worldPos.WorldLocation.Location.Z); - t.Move(dist + train.Cars.First().CarLengthM / 2 - minTrainPx / F.xScale / 2); - x = (t.TileX * 2048 + t.Location.X - F.subX) * F.xScale; - y = F.pbCanvas.Height - (t.TileZ * 2048 + t.Location.Z - F.subY) * F.yScale; - if (x < -margin || y < -margin) - return; - t.Move(-minTrainPx / F.xScale / 2); - } - scaledTrain.X = x; scaledTrain.Y = y; - } - x = (t.TileX * 2048 + t.Location.X - F.subX) * F.xScale; - y = F.pbCanvas.Height - (t.TileZ * 2048 + t.Location.Z - F.subY) * F.yScale; - - // If car out of view then skip it. - if (x < -margin || y < -margin) - return; - - SetTrainColor(train, locoCar, car); - g.DrawLine(F.trainPen, new PointF(x, y), scaledTrain); - } - } - - private void SetTrainColor(Train t, TrainCar locoCar, TrainCar car) - { - // Draw train in green with locos in brown - // HSL values - // Saturation: 100/100 - // Hue: if loco then H=50/360 else H=120/360 - // Lightness: if active then L=40/100 else L=30/100 - // RGB values - // active loco: RGB 204,170,0 - // inactive loco: RGB 153,128,0 - // active car: RGB 0,204,0 - // inactive car: RGB 0,153,0 - if (IsActiveTrain(t as Simulation.AIs.AITrain)) - if (car is MSTSLocomotive) - F.trainPen.Color = (car == locoCar) ? Color.FromArgb(204, 170, 0) : Color.FromArgb(153, 128, 0); - else - F.trainPen.Color = Color.FromArgb(0, 204, 0); - else - if (car is MSTSLocomotive) - F.trainPen.Color = Color.FromArgb(153, 128, 0); - else - F.trainPen.Color = Color.FromArgb(0, 153, 0); - - // Draw player train with loco in red - if (t.TrainType == Train.TRAINTYPE.PLAYER && car == locoCar) - F.trainPen.Color = Color.Red; - } - - /// - /// If the train is long enough then draw every car else just draw it as one or two blocks - /// - /// - /// - /// - private bool IsDrawEveryCar(Train train, float minTrainLengthM) - { - float trainLengthM = 0f; - foreach (var car in train.Cars) - { - trainLengthM += car.CarLengthM; - if (trainLengthM > minTrainLengthM) - { - return true; - } - } - return false; - } - - private void DrawTrainLabels(Graphics g, Train t, string trainName, TrainCar firstCar, PointF scaledTrain) - { - WorldPosition worldPos = firstCar.WorldPosition; - scaledTrain.X = (worldPos.TileX * 2048 - F.subX + worldPos.Location.X) * F.xScale; - scaledTrain.Y = -25 + F.pbCanvas.Height - (worldPos.TileZ * 2048 - F.subY + worldPos.Location.Z) * F.yScale; - if (F.rbShowActiveTrainLabels.Checked) - { - if (t is Simulation.AIs.AITrain && IsActiveTrain(t as Simulation.AIs.AITrain)) - ShowTrainNameAndState(g, scaledTrain, t, trainName); - } - else - { - ShowTrainNameAndState(g, scaledTrain, t, trainName); - } - } - - private bool IsActiveTrain(Simulation.AIs.AITrain t) - { - if (t == null) - return false; - return (t.MovementState != Simulation.AIs.AITrain.AI_MOVEMENT_STATE.AI_STATIC - && !(t.TrainType == Train.TRAINTYPE.AI_INCORPORATED && !t.IncorporatingTrain.IsPathless) - ) - || t.TrainType == Train.TRAINTYPE.PLAYER; - } - - private void ShowTrainNameAndState(Graphics g, PointF scaledItem, Train t, string trainName) - { - if (F.simulator.TimetableMode) - { - var tTTrain = t as Orts.Simulation.Timetables.TTTrain; - if (tTTrain != null) - { - // Remove name of timetable, e.g.: ":SCE" - var lastPos = trainName.LastIndexOf(":"); - var shortName = (lastPos > 0) ? trainName.Substring(0, lastPos) : trainName; - - if (IsActiveTrain(tTTrain)) - { - if (F.cbShowTrainState.Checked) - { - // 4:AI mode, 6:Mode, 7:Auth, 9:Signal, 12:Path - var status = tTTrain.GetStatus(F.Viewer.MilepostUnitsMetric); - - // Add in fields 4 and 7 - status = tTTrain.AddMovementState(status, F.Viewer.MilepostUnitsMetric); - - var statuses = $"{status[4]} {status[6]} {status[7]} {status[9]}"; - - // Add path if it contains any deadlock information - if (ContainsDeadlockIndicators(status[12])) - statuses += status[12]; - - g.DrawString($"{shortName} {statuses}", F.trainFont, F.trainBrush, scaledItem); - } - else - g.DrawString(shortName, F.trainFont, F.trainBrush, scaledItem); - } - else - g.DrawString(shortName, F.trainFont, F.InactiveTrainBrush, scaledItem); - } - } - else - g.DrawString(trainName, F.trainFont, F.trainBrush, scaledItem); - } - - /* - * # section is claimed by a train which is waiting for a signal. - * & section is occupied by more than one train. - * deadlock info (always linked to a switch node): - * · * possible deadlock location - start of a single track section shared with a train running in opposite direction. - * · ^ active deadlock - train from opposite direction is occupying or has reserved at least part of the common - * single track section. Train will be stopped at this location – generally at the last signal ahead of this node. - * · ~ active deadlock at that location for other train - can be significant as this other train can block this - * train’s path. - */ - private static readonly char[] DeadlockIndicators = "#&*^~".ToCharArray(); - - public static bool ContainsDeadlockIndicators(string text) - { - return text.IndexOfAny(DeadlockIndicators) >= 0; - } - - // The canvas is split into equally pitched rows. - // Each row has an array of 4 slots with StartX, EndX positions and a count of how many slots have been filled. - // Arrays are used instead of lists to avoid delays for memory management. - private void CleanTextCells() - { - if (F.alignedTextY == null || F.alignedTextY.Length != F.pbCanvas.Height / DispatchViewer.spacing) //first time to put text, or the text height has changed - { - F.alignedTextY = new Vector2[F.pbCanvas.Height / DispatchViewer.spacing][]; - F.alignedTextNum = new int[F.pbCanvas.Height / DispatchViewer.spacing]; - for (var i = 0; i < F.pbCanvas.Height / DispatchViewer.spacing; i++) - F.alignedTextY[i] = new Vector2[5]; //each line has at most 5 slots - } - for (var i = 0; i < F.pbCanvas.Height / DispatchViewer.spacing; i++) - F.alignedTextNum[i] = 0; - } - - // Returns a vertical position for the text that doesn't clash or returns -1 - // If the preferred space for text is occupied, then the slot above (-ve Y) is tested, then 2 sltos above, then 1 below. - private float GetUnusedYLocation(float startX, float wantY, string name) - { - const float noFreeSlotFound = -1f; - - var desiredPositionY = (int)(wantY / DispatchViewer.spacing); // The positionY of the ideal row for the text. - var endX = startX + name.Length * F.trainFont.Size; - //out of drawing area - if (endX < 0) - return noFreeSlotFound; - - int positionY = desiredPositionY; - while (positionY >= 0 && positionY < F.alignedTextY.Length) - { - //if the line contains no text yet, put it there - if (F.alignedTextNum[positionY] == 0) - return SaveLabelLocation(startX, endX, positionY); - - bool conflict = false; - - //check if it intersects with any labels already in this row - for (var col = 0; col < F.alignedTextNum[positionY]; col++) - { - var v = F.alignedTextY[positionY][col]; - //check conflict with a text, v.X is the start of the text, v.Y is the end of the text - if ((endX >= v.X && startX <= v.Y)) - { - conflict = true; - break; - } - } - - if (conflict) - { - positionY--; // Try a different row: -1, -2, +2, +1 - - if (positionY - desiredPositionY <= -2) // Cannot move up (-ve Y), so try to move it down (+ve Y) - positionY = desiredPositionY + 2; // Try +2 then +1 - - if (positionY == desiredPositionY) // Back to original position again - return noFreeSlotFound; - } - else - { - // Check that row has an unused column in its fixed size array - if (F.alignedTextNum[positionY] >= F.alignedTextY[positionY].Length) - return noFreeSlotFound; - - return SaveLabelLocation(startX, endX, positionY); - } - } - return noFreeSlotFound; - } - - private float SaveLabelLocation(float startX, float endX, int positionY) - { - // add start and end location for the new label - F.alignedTextY[positionY][F.alignedTextNum[positionY]] = new Vector2 { X = startX, Y = endX }; - - F.alignedTextNum[positionY]++; - - return positionY * DispatchViewer.spacing; - } - } -} diff --git a/Source/RunActivity/Viewer3D/Map/MapDataProvider.cs b/Source/RunActivity/Viewer3D/Map/MapDataProvider.cs new file mode 100644 index 0000000000..6a526458dc --- /dev/null +++ b/Source/RunActivity/Viewer3D/Map/MapDataProvider.cs @@ -0,0 +1,305 @@ +// COPYRIGHT 2023 by the Open Rails project. +// +// This file is part of Open Rails. +// +// Open Rails is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Open Rails is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Open Rails. If not, see . + +using System; +using System.Diagnostics; +using System.Drawing; +using Microsoft.Xna.Framework; +using Orts.Formats.Msts; +using Orts.MultiPlayer; +using Orts.Simulation.Physics; +using Orts.Simulation.Signalling; +using Orts.Viewer3D.Debugging; + +namespace Orts.Viewer3D.Map +{ + public class MapDataProvider + { + public MapViewer F { get; set; } // Shortest possible abbreviation so code is easier to read + + public MapDataProvider(MapViewer form) + { + F = form; + } + + public void SetControls() + { + UpdateControlVisibility(); + } + + private void UpdateControlVisibility() + { + var isMultiPlayer = MPManager.IsMultiPlayer(); + + if (isMultiPlayer) + { + F.playersPanel.Visible = true; + } + + if (isMultiPlayer && MPManager.IsServer()) + { + F.playerRolePanel.Visible = true; + F.messagesPanel.Visible = true; + F.multiplayerSettingsPanel.Visible = true; + //F.playersPanel.Visible = true; + } + } + + public void PopulateItemLists() + { + foreach (var item in F.simulator.TDB.TrackDB.TrItemTable) + { + switch (item.ItemType) + { + case TrItem.trItemType.trSIGNAL: + if (item is SignalItem si) + { + if (si.SigObj >= 0 && si.SigObj < F.simulator.Signals.SignalObjects.Length) + { + var s = F.simulator.Signals.SignalObjects[si.SigObj]; + if (s != null && s.Type == SignalObjectType.Signal && s.isSignalNormal()) + F.signals.Add(new SignalWidget(si, s)); + } + } + break; + + case TrItem.trItemType.trSIDING: + // Sidings have 2 ends but are not always listed in pairs in the *.tdb file + // Neither are their names unique (e.g. Bernina Bahn). + // Find whether this siding is a new one or the other end of an old one. + // If other end, then find the right-hand one as the location for a single label. + // Note: Find() within a foreach() loop is O(n^2) but is only done at start. + var oldSidingIndex = F.sidings.FindIndex(r => r.LinkId == item.TrItemId && r.Name == item.ItemName); + if (oldSidingIndex < 0) + { + var newSiding = new SidingWidget(item as SidingItem); + F.sidings.Add(newSiding); + } + else + { + var oldSiding = F.sidings[oldSidingIndex]; + var oldLocation = oldSiding.Location; + var newLocation = new PointF((item.TileX * 2048) + item.X, (item.TileZ * 2048) + item.Z); + + // Because these are structs, not classes, compiler won't let you overwrite them. + // Instead create a single item which replaces the 2 platform items. + var replacement = new SidingWidget(item as SidingItem) + { + Location = GetMidPoint(oldLocation, newLocation) + }; + + // Replace the old siding item with the replacement + F.sidings.RemoveAt(oldSidingIndex); + F.sidings.Add(replacement); + } + break; + + case TrItem.trItemType.trPLATFORM: + // Platforms have 2 ends but are not always listed in pairs in the *.tdb file + // Neither are their names unique (e.g. Bernina Bahn). + // Find whether this platform is a new one or the other end of an old one. + // If other end, then find the right-hand one as the location for a single label. + var oldPlatformIndex = F.platforms.FindIndex(r => r.LinkId == item.TrItemId && r.Name == item.ItemName); + if (oldPlatformIndex < 0) + { + var newPlatform = new PlatformWidget(item as PlatformItem) + { + Extent1 = new PointF((item.TileX * 2048) + item.X, (item.TileZ * 2048) + item.Z) + }; + F.platforms.Add(newPlatform); + } + else + { + var oldPlatform = F.platforms[oldPlatformIndex]; + var oldLocation = oldPlatform.Location; + var newLocation = new PointF((item.TileX * 2048) + item.X, (item.TileZ * 2048) + item.Z); + + // Because these are structs, not classes, compiler won't let you overwrite them. + // Instead create a single item which replaces the 2 platform items. + var replacement = new PlatformWidget(item as PlatformItem) + { + Extent1 = oldLocation, + Extent2 = newLocation, + Location = GetRightHandPoint(oldLocation, newLocation) // Give it the right-hand location + }; + + // Replace the old platform item with the replacement + F.platforms.RemoveAt(oldPlatformIndex); + F.platforms.Add(replacement); + } + break; + + default: + break; + } + } + + foreach (var p in F.platforms) + if (p.Extent1.IsEmpty || p.Extent2.IsEmpty) + Trace.TraceWarning("Platform '{0}' is incomplete as the two ends do not match. It will not show in full in the Timetable Tab of the Map Window", p.Name); + } + + /// + /// Returns the mid-point between two locations + /// + /// + /// + /// + /// + private PointF GetMidPoint(PointF location1, PointF location2) + { + return new PointF() + { + X = (location1.X + location2.X) / 2 + , + Y = (location1.Y + location2.Y) / 2 + }; + } + + private PointF GetRightHandPoint(PointF location1, PointF location2) + { + return location1.X > location2.X ? location1 : location2; + } + + public void ShowSimulationTime() + { + var ct = TimeSpan.FromSeconds(Program.Simulator.ClockTime); + F.timeLabel.Text = $"{ct:hh}:{ct:mm}:{ct:ss}"; + } + + /// + /// In case of missing X,Y values, just draw a blob at the non-zero end. + /// + public void FixForBadData(float width, ref PointF scaledA, ref PointF scaledB, PointF Extent1, PointF Extent2) + { + if (Extent1.X == 0 || Extent1.Y == 0) + { + scaledA.X = scaledB.X + width; + scaledA.Y = scaledB.Y + width; + } + else if (Extent2.X == 0 || Extent2.Y == 0) + { + scaledB.X = scaledA.X + width; + scaledB.Y = scaledA.Y + width; + } + } + + public bool IsActiveTrain(Simulation.AIs.AITrain t) + { + return t != null +&& ((t.MovementState != Simulation.AIs.AITrain.AI_MOVEMENT_STATE.AI_STATIC + && !(t.TrainType == Train.TRAINTYPE.AI_INCORPORATED && !t.IncorporatingTrain.IsPathless)) + + || t.TrainType == Train.TRAINTYPE.PLAYER); + } + + /* + * # section is claimed by a train which is waiting for a signal. + * & section is occupied by more than one train. + * deadlock info (always linked to a switch node): + * · * possible deadlock location - start of a single track section shared with a train running in opposite direction. + * · ^ active deadlock - train from opposite direction is occupying or has reserved at least part of the common + * single track section. Train will be stopped at this location – generally at the last signal ahead of this node. + * · ~ active deadlock at that location for other train - can be significant as this other train can block this + * train’s path. + */ + private static readonly char[] DeadlockIndicators = "#&*^~".ToCharArray(); + + public static bool ContainsDeadlockIndicators(string text) + { + return text.IndexOfAny(DeadlockIndicators) >= 0; + } + + // The canvas is split into equally pitched rows. + // Each row has an array of 4 slots with StartX, EndX positions and a count of how many slots have been filled. + // Arrays are used instead of lists to avoid delays for memory management. + public void CleanTextCells() + { + if (F.alignedTextY == null || F.alignedTextY.Length != F.mapCanvas.Height / MapViewer.spacing) // First time to put text, or the text height has changed + { + F.alignedTextY = new Vector2[F.mapCanvas.Height / MapViewer.spacing][]; + F.alignedTextNum = new int[F.mapCanvas.Height / MapViewer.spacing]; + for (var i = 0; i < F.mapCanvas.Height / MapViewer.spacing; i++) + F.alignedTextY[i] = new Vector2[5]; //each line has at most 5 slots + } + for (var i = 0; i < F.mapCanvas.Height / MapViewer.spacing; i++) + F.alignedTextNum[i] = 0; + } + + // Returns a vertical position for the text that doesn't clash or returns -1 + // If the preferred space for text is occupied, then the slot above (-ve Y) is tested, then 2 sltos above, then 1 below. + public float GetUnusedYLocation(float startX, float wantY, string name) + { + const float noFreeSlotFound = -1f; + + var desiredPositionY = (int)(wantY / MapViewer.spacing); // The positionY of the ideal row for the text. + var endX = startX + (name.Length * F.trainFont.Size); + + if (endX < 0) // Out of drawing area + return noFreeSlotFound; + + var positionY = desiredPositionY; + while (positionY >= 0 && positionY < F.alignedTextY.Length) + { + // If the line contains no text yet, put it there + if (F.alignedTextNum[positionY] == 0) + return SaveLabelLocation(startX, endX, positionY); + + var conflict = false; + + // Check if it intersects with any labels already in this row + for (var col = 0; col < F.alignedTextNum[positionY]; col++) + { + var v = F.alignedTextY[positionY][col]; + //check conflict with a text, v.X is the start of the text, v.Y is the end of the text + if (endX >= v.X && startX <= v.Y) + { + conflict = true; + break; + } + } + + if (conflict) + { + positionY--; // Try a different row: -1, -2, +2, +1 + + if (positionY - desiredPositionY <= -2) // Cannot move up (-ve Y), so try to move it down (+ve Y) + positionY = desiredPositionY + 2; // Try +2 then +1 + + if (positionY == desiredPositionY) // Back to original position again + return noFreeSlotFound; + } + else + { + // Check that row has an unused column in its fixed size array + return F.alignedTextNum[positionY] >= F.alignedTextY[positionY].Length ? noFreeSlotFound : SaveLabelLocation(startX, endX, positionY); + } + } + return noFreeSlotFound; + } + + private float SaveLabelLocation(float startX, float endX, int positionY) + { + // Add start and end location for the new label + F.alignedTextY[positionY][F.alignedTextNum[positionY]] = new Vector2 { X = startX, Y = endX }; + + F.alignedTextNum[positionY]++; + + return positionY * MapViewer.spacing; + } + } +} diff --git a/Source/RunActivity/Viewer3D/Map/MapForm.Designer.cs b/Source/RunActivity/Viewer3D/Map/MapForm.Designer.cs new file mode 100644 index 0000000000..3946c6fa2d --- /dev/null +++ b/Source/RunActivity/Viewer3D/Map/MapForm.Designer.cs @@ -0,0 +1,1120 @@ +namespace Orts.Viewer3D.Debugging +{ + partial class MapViewer + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] { + "Player1 (you)"}, -1, System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)))); + System.Windows.Forms.ListViewItem listViewItem2 = new System.Windows.Forms.ListViewItem("Player2"); + System.Windows.Forms.ListViewItem listViewItem3 = new System.Windows.Forms.ListViewItem("Player3"); + System.Windows.Forms.ListViewItem listViewItem4 = new System.Windows.Forms.ListViewItem("..."); + this.playerRolePanel = new System.Windows.Forms.Panel(); + this.playerRoleLink = new System.Windows.Forms.LinkLabel(); + this.playerRoleExplanation = new System.Windows.Forms.Label(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + this.messagesPanel = new System.Windows.Forms.Panel(); + this.messages = new System.Windows.Forms.ListBox(); + this.messageAllButton = new System.Windows.Forms.Button(); + this.moreReplyOptionsButton = new System.Windows.Forms.Button(); + this.messageInput = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.canvasPanel = new System.Windows.Forms.Panel(); + this.timeLabel = new System.Windows.Forms.Label(); + this.mapCustomizationButton = new System.Windows.Forms.Button(); + this.mapCustomizationPanel = new System.Windows.Forms.Panel(); + this.showAllTrainsRadio = new System.Windows.Forms.RadioButton(); + this.showActiveTrainsRadio = new System.Windows.Forms.RadioButton(); + this.showTrainStateCheckbox = new System.Windows.Forms.CheckBox(); + this.showTrainLabelsCheckbox = new System.Windows.Forms.CheckBox(); + this.showSignalStateCheckbox = new System.Windows.Forms.CheckBox(); + this.showSignalsCheckbox = new System.Windows.Forms.CheckBox(); + this.showSwitchesCheckbox = new System.Windows.Forms.CheckBox(); + this.showSidingLabelsCheckbox = new System.Windows.Forms.CheckBox(); + this.showPlatformLabelsCheckbox = new System.Windows.Forms.CheckBox(); + this.showPlatformsCheckbox = new System.Windows.Forms.CheckBox(); + this.label1 = new System.Windows.Forms.Label(); + this.rotateThemesButton = new System.Windows.Forms.Button(); + this.showTimeCheckbox = new System.Windows.Forms.CheckBox(); + this.useAntiAliasingCheckbox = new System.Windows.Forms.CheckBox(); + this.mapCanvas = new System.Windows.Forms.PictureBox(); + this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.multiplayerSettingsPanel = new System.Windows.Forms.Panel(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.penaltyCheckbox = new System.Windows.Forms.CheckBox(); + this.preferGreenCheckbox = new System.Windows.Forms.CheckBox(); + this.allowJoiningCheckbox = new System.Windows.Forms.CheckBox(); + this.mapSettingsPanel = new System.Windows.Forms.Panel(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.followMyTrainOnMap = new System.Windows.Forms.Button(); + this.centerOnMyTrainButton = new System.Windows.Forms.Button(); + this.seeTrainInGameButton = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.mapResolutionUpDown = new System.Windows.Forms.NumericUpDown(); + this.allowThrowingSwitchesCheckbox = new System.Windows.Forms.CheckBox(); + this.allowChangingSignalsCheckbox = new System.Windows.Forms.CheckBox(); + this.drawPathCheckbox = new System.Windows.Forms.CheckBox(); + this.playersPanel = new System.Windows.Forms.Panel(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.playersView = new System.Windows.Forms.ListView(); + this.messageActionsMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.messageSelectedPlayerMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.replyToSelectedPlayerMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.playerActionsMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.playerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.makeThisPlayerAnAssistantToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.jumpToThisPlayerInGameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.followToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.kickFromMultiplayerSessionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.setSwitchMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.setSwitchToToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mainRouteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.sideRouteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.setSignalMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.setSignalAspectToToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.systemControlledToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.stopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.approachToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.proceedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.allowCallOnToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.trainActionsMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.jumpToThisTrainInGameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.followThisTrainOnTheMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.playerRolePanel.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + this.tableLayoutPanel3.SuspendLayout(); + this.messagesPanel.SuspendLayout(); + this.canvasPanel.SuspendLayout(); + this.mapCustomizationPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.mapCanvas)).BeginInit(); + this.tableLayoutPanel4.SuspendLayout(); + this.multiplayerSettingsPanel.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.mapSettingsPanel.SuspendLayout(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.mapResolutionUpDown)).BeginInit(); + this.playersPanel.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.messageActionsMenu.SuspendLayout(); + this.playerActionsMenu.SuspendLayout(); + this.setSwitchMenu.SuspendLayout(); + this.setSignalMenu.SuspendLayout(); + this.trainActionsMenu.SuspendLayout(); + this.SuspendLayout(); + // + // playerRolePanel + // + this.playerRolePanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.playerRolePanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(214)))), ((int)(((byte)(234)))), ((int)(((byte)(248))))); + this.playerRolePanel.Controls.Add(this.playerRoleLink); + this.playerRolePanel.Controls.Add(this.playerRoleExplanation); + this.playerRolePanel.Location = new System.Drawing.Point(0, 0); + this.playerRolePanel.Margin = new System.Windows.Forms.Padding(0); + this.playerRolePanel.Name = "playerRolePanel"; + this.playerRolePanel.Size = new System.Drawing.Size(784, 30); + this.playerRolePanel.TabIndex = 0; + this.playerRolePanel.Visible = false; + // + // playerRoleLink + // + this.playerRoleLink.ActiveLinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(79)))), ((int)(((byte)(114))))); + this.playerRoleLink.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.playerRoleLink.AutoSize = true; + this.playerRoleLink.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(116)))), ((int)(((byte)(166))))); + this.playerRoleLink.Location = new System.Drawing.Point(714, 9); + this.playerRoleLink.Name = "playerRoleLink"; + this.playerRoleLink.Size = new System.Drawing.Size(60, 13); + this.playerRoleLink.TabIndex = 1; + this.playerRoleLink.TabStop = true; + this.playerRoleLink.Text = "Learn more"; + this.playerRoleLink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.playerRoleLink_LinkClicked); + // + // playerRoleExplanation + // + this.playerRoleExplanation.AutoSize = true; + this.playerRoleExplanation.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.playerRoleExplanation.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(116)))), ((int)(((byte)(166))))); + this.playerRoleExplanation.Location = new System.Drawing.Point(12, 9); + this.playerRoleExplanation.Name = "playerRoleExplanation"; + this.playerRoleExplanation.Size = new System.Drawing.Size(284, 13); + this.playerRoleExplanation.TabIndex = 0; + this.playerRoleExplanation.Text = "You are the dispatcher in this multiplayer session"; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.playerRolePanel, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 1; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(784, 561); + this.tableLayoutPanel1.TabIndex = 3; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 2; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 200F)); + this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel3, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel4, 1, 0); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 30); + this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 1; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(784, 531); + this.tableLayoutPanel2.TabIndex = 0; + // + // tableLayoutPanel3 + // + this.tableLayoutPanel3.ColumnCount = 1; + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel3.Controls.Add(this.messagesPanel, 0, 0); + this.tableLayoutPanel3.Controls.Add(this.canvasPanel, 0, 1); + this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel3.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel3.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + this.tableLayoutPanel3.RowCount = 2; + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel3.Size = new System.Drawing.Size(584, 531); + this.tableLayoutPanel3.TabIndex = 0; + // + // messagesPanel + // + this.messagesPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.messagesPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.messagesPanel.Controls.Add(this.messages); + this.messagesPanel.Controls.Add(this.messageAllButton); + this.messagesPanel.Controls.Add(this.moreReplyOptionsButton); + this.messagesPanel.Controls.Add(this.messageInput); + this.messagesPanel.Controls.Add(this.label2); + this.messagesPanel.Location = new System.Drawing.Point(0, 0); + this.messagesPanel.Margin = new System.Windows.Forms.Padding(0); + this.messagesPanel.Name = "messagesPanel"; + this.messagesPanel.Padding = new System.Windows.Forms.Padding(10); + this.messagesPanel.Size = new System.Drawing.Size(584, 163); + this.messagesPanel.TabIndex = 0; + this.messagesPanel.Visible = false; + // + // messages + // + this.messages.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.messages.Enabled = false; + this.messages.FormattingEnabled = true; + this.messages.IntegralHeight = false; + this.messages.Location = new System.Drawing.Point(16, 26); + this.messages.Name = "messages"; + this.messages.Size = new System.Drawing.Size(554, 97); + this.messages.TabIndex = 5; + // + // messageAllButton + // + this.messageAllButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.messageAllButton.AutoEllipsis = true; + this.messageAllButton.Location = new System.Drawing.Point(421, 128); + this.messageAllButton.Margin = new System.Windows.Forms.Padding(0); + this.messageAllButton.Name = "messageAllButton"; + this.messageAllButton.Size = new System.Drawing.Size(126, 23); + this.messageAllButton.TabIndex = 4; + this.messageAllButton.Text = "Message all players"; + this.messageAllButton.UseVisualStyleBackColor = true; + this.messageAllButton.Click += new System.EventHandler(this.messageAllButton_Click); + // + // moreReplyOptionsButton + // + this.moreReplyOptionsButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.moreReplyOptionsButton.AutoSize = true; + this.moreReplyOptionsButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.moreReplyOptionsButton.Location = new System.Drawing.Point(547, 128); + this.moreReplyOptionsButton.Margin = new System.Windows.Forms.Padding(0); + this.moreReplyOptionsButton.Name = "moreReplyOptionsButton"; + this.moreReplyOptionsButton.Size = new System.Drawing.Size(23, 23); + this.moreReplyOptionsButton.TabIndex = 3; + this.moreReplyOptionsButton.Text = ">"; + this.moreReplyOptionsButton.UseVisualStyleBackColor = true; + this.moreReplyOptionsButton.Click += new System.EventHandler(this.moreReplyOptionsButton_Click); + // + // messageInput + // + this.messageInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.messageInput.Location = new System.Drawing.Point(16, 130); + this.messageInput.Name = "messageInput"; + this.messageInput.Size = new System.Drawing.Size(402, 20); + this.messageInput.TabIndex = 2; + this.messageInput.Enter += new System.EventHandler(this.messageInput_Enter); + this.messageInput.Leave += new System.EventHandler(this.messageInput_Leave); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(13, 10); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(58, 13); + this.label2.TabIndex = 0; + this.label2.Text = "Messages:"; + // + // canvasPanel + // + this.canvasPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.canvasPanel.Controls.Add(this.timeLabel); + this.canvasPanel.Controls.Add(this.mapCustomizationButton); + this.canvasPanel.Controls.Add(this.mapCustomizationPanel); + this.canvasPanel.Controls.Add(this.mapCanvas); + this.canvasPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.canvasPanel.Location = new System.Drawing.Point(0, 163); + this.canvasPanel.Margin = new System.Windows.Forms.Padding(0); + this.canvasPanel.Name = "canvasPanel"; + this.canvasPanel.Padding = new System.Windows.Forms.Padding(13); + this.canvasPanel.Size = new System.Drawing.Size(584, 368); + this.canvasPanel.TabIndex = 1; + // + // timeLabel + // + this.timeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.timeLabel.AutoSize = true; + this.timeLabel.BackColor = System.Drawing.Color.Transparent; + this.timeLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.timeLabel.Location = new System.Drawing.Point(25, 333); + this.timeLabel.Name = "timeLabel"; + this.timeLabel.Size = new System.Drawing.Size(92, 13); + this.timeLabel.TabIndex = 1; + this.timeLabel.Text = "Simulation time"; + // + // mapCustomizationButton + // + this.mapCustomizationButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.mapCustomizationButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.mapCustomizationButton.FlatAppearance.BorderSize = 0; + this.mapCustomizationButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.mapCustomizationButton.Location = new System.Drawing.Point(443, 324); + this.mapCustomizationButton.Name = "mapCustomizationButton"; + this.mapCustomizationButton.Size = new System.Drawing.Size(120, 23); + this.mapCustomizationButton.TabIndex = 0; + this.mapCustomizationButton.Tag = "mapCustomization"; + this.mapCustomizationButton.Text = "Map customization"; + this.mapCustomizationButton.UseVisualStyleBackColor = true; + this.mapCustomizationButton.Click += new System.EventHandler(this.mapCustomizationButton_Click); + // + // mapCustomizationPanel + // + this.mapCustomizationPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.mapCustomizationPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.mapCustomizationPanel.Controls.Add(this.showAllTrainsRadio); + this.mapCustomizationPanel.Controls.Add(this.showActiveTrainsRadio); + this.mapCustomizationPanel.Controls.Add(this.showTrainStateCheckbox); + this.mapCustomizationPanel.Controls.Add(this.showTrainLabelsCheckbox); + this.mapCustomizationPanel.Controls.Add(this.showSignalStateCheckbox); + this.mapCustomizationPanel.Controls.Add(this.showSignalsCheckbox); + this.mapCustomizationPanel.Controls.Add(this.showSwitchesCheckbox); + this.mapCustomizationPanel.Controls.Add(this.showSidingLabelsCheckbox); + this.mapCustomizationPanel.Controls.Add(this.showPlatformLabelsCheckbox); + this.mapCustomizationPanel.Controls.Add(this.showPlatformsCheckbox); + this.mapCustomizationPanel.Controls.Add(this.label1); + this.mapCustomizationPanel.Controls.Add(this.rotateThemesButton); + this.mapCustomizationPanel.Controls.Add(this.showTimeCheckbox); + this.mapCustomizationPanel.Controls.Add(this.useAntiAliasingCheckbox); + this.mapCustomizationPanel.Location = new System.Drawing.Point(373, 3); + this.mapCustomizationPanel.Name = "mapCustomizationPanel"; + this.mapCustomizationPanel.Size = new System.Drawing.Size(190, 315); + this.mapCustomizationPanel.TabIndex = 0; + this.mapCustomizationPanel.Visible = false; + // + // showAllTrainsRadio + // + this.showAllTrainsRadio.AutoSize = true; + this.showAllTrainsRadio.Location = new System.Drawing.Point(10, 279); + this.showAllTrainsRadio.Name = "showAllTrainsRadio"; + this.showAllTrainsRadio.Size = new System.Drawing.Size(64, 17); + this.showAllTrainsRadio.TabIndex = 19; + this.showAllTrainsRadio.Text = "All trains"; + this.showAllTrainsRadio.UseVisualStyleBackColor = true; + // + // showActiveTrainsRadio + // + this.showActiveTrainsRadio.AutoSize = true; + this.showActiveTrainsRadio.Checked = true; + this.showActiveTrainsRadio.Location = new System.Drawing.Point(10, 260); + this.showActiveTrainsRadio.Name = "showActiveTrainsRadio"; + this.showActiveTrainsRadio.Size = new System.Drawing.Size(106, 17); + this.showActiveTrainsRadio.TabIndex = 18; + this.showActiveTrainsRadio.TabStop = true; + this.showActiveTrainsRadio.Text = "Only active trains"; + this.showActiveTrainsRadio.UseVisualStyleBackColor = true; + // + // showTrainStateCheckbox + // + this.showTrainStateCheckbox.AutoSize = true; + this.showTrainStateCheckbox.Location = new System.Drawing.Point(28, 241); + this.showTrainStateCheckbox.Name = "showTrainStateCheckbox"; + this.showTrainStateCheckbox.Size = new System.Drawing.Size(76, 17); + this.showTrainStateCheckbox.TabIndex = 17; + this.showTrainStateCheckbox.Text = "Train state"; + this.showTrainStateCheckbox.UseVisualStyleBackColor = true; + // + // showTrainLabelsCheckbox + // + this.showTrainLabelsCheckbox.AutoSize = true; + this.showTrainLabelsCheckbox.Location = new System.Drawing.Point(10, 222); + this.showTrainLabelsCheckbox.Name = "showTrainLabelsCheckbox"; + this.showTrainLabelsCheckbox.Size = new System.Drawing.Size(80, 17); + this.showTrainLabelsCheckbox.TabIndex = 16; + this.showTrainLabelsCheckbox.Text = "Train labels"; + this.showTrainLabelsCheckbox.UseVisualStyleBackColor = true; + // + // showSignalStateCheckbox + // + this.showSignalStateCheckbox.AutoSize = true; + this.showSignalStateCheckbox.Location = new System.Drawing.Point(28, 203); + this.showSignalStateCheckbox.Name = "showSignalStateCheckbox"; + this.showSignalStateCheckbox.Size = new System.Drawing.Size(81, 17); + this.showSignalStateCheckbox.TabIndex = 15; + this.showSignalStateCheckbox.Text = "Signal state"; + this.showSignalStateCheckbox.UseVisualStyleBackColor = true; + // + // showSignalsCheckbox + // + this.showSignalsCheckbox.AutoSize = true; + this.showSignalsCheckbox.Location = new System.Drawing.Point(10, 184); + this.showSignalsCheckbox.Name = "showSignalsCheckbox"; + this.showSignalsCheckbox.Size = new System.Drawing.Size(60, 17); + this.showSignalsCheckbox.TabIndex = 14; + this.showSignalsCheckbox.Text = "Signals"; + this.showSignalsCheckbox.UseVisualStyleBackColor = true; + // + // showSwitchesCheckbox + // + this.showSwitchesCheckbox.AutoSize = true; + this.showSwitchesCheckbox.Location = new System.Drawing.Point(10, 165); + this.showSwitchesCheckbox.Name = "showSwitchesCheckbox"; + this.showSwitchesCheckbox.Size = new System.Drawing.Size(69, 17); + this.showSwitchesCheckbox.TabIndex = 13; + this.showSwitchesCheckbox.Text = "Switches"; + this.showSwitchesCheckbox.UseVisualStyleBackColor = true; + // + // showSidingLabelsCheckbox + // + this.showSidingLabelsCheckbox.AutoSize = true; + this.showSidingLabelsCheckbox.Location = new System.Drawing.Point(10, 146); + this.showSidingLabelsCheckbox.Name = "showSidingLabelsCheckbox"; + this.showSidingLabelsCheckbox.Size = new System.Drawing.Size(85, 17); + this.showSidingLabelsCheckbox.TabIndex = 12; + this.showSidingLabelsCheckbox.Text = "Siding labels"; + this.showSidingLabelsCheckbox.UseVisualStyleBackColor = true; + // + // showPlatformLabelsCheckbox + // + this.showPlatformLabelsCheckbox.AutoSize = true; + this.showPlatformLabelsCheckbox.Location = new System.Drawing.Point(10, 127); + this.showPlatformLabelsCheckbox.Name = "showPlatformLabelsCheckbox"; + this.showPlatformLabelsCheckbox.Size = new System.Drawing.Size(94, 17); + this.showPlatformLabelsCheckbox.TabIndex = 11; + this.showPlatformLabelsCheckbox.Text = "Platform labels"; + this.showPlatformLabelsCheckbox.UseVisualStyleBackColor = true; + // + // showPlatformsCheckbox + // + this.showPlatformsCheckbox.AutoSize = true; + this.showPlatformsCheckbox.Location = new System.Drawing.Point(10, 108); + this.showPlatformsCheckbox.Name = "showPlatformsCheckbox"; + this.showPlatformsCheckbox.Size = new System.Drawing.Size(69, 17); + this.showPlatformsCheckbox.TabIndex = 10; + this.showPlatformsCheckbox.Text = "Platforms"; + this.showPlatformsCheckbox.UseVisualStyleBackColor = true; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(7, 91); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(81, 13); + this.label1.TabIndex = 9; + this.label1.Text = "Map features"; + // + // rotateThemesButton + // + this.rotateThemesButton.AutoSize = true; + this.rotateThemesButton.Location = new System.Drawing.Point(10, 52); + this.rotateThemesButton.Name = "rotateThemesButton"; + this.rotateThemesButton.Size = new System.Drawing.Size(167, 23); + this.rotateThemesButton.TabIndex = 8; + this.rotateThemesButton.Text = "Rotate between themes"; + this.rotateThemesButton.UseVisualStyleBackColor = true; + this.rotateThemesButton.Click += new System.EventHandler(this.rotateThemesButton_Click); + // + // showTimeCheckbox + // + this.showTimeCheckbox.AutoSize = true; + this.showTimeCheckbox.Checked = true; + this.showTimeCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; + this.showTimeCheckbox.Location = new System.Drawing.Point(10, 29); + this.showTimeCheckbox.Name = "showTimeCheckbox"; + this.showTimeCheckbox.Size = new System.Drawing.Size(124, 17); + this.showTimeCheckbox.TabIndex = 1; + this.showTimeCheckbox.Text = "Show simulation time"; + this.showTimeCheckbox.UseVisualStyleBackColor = true; + // + // useAntiAliasingCheckbox + // + this.useAntiAliasingCheckbox.AutoSize = true; + this.useAntiAliasingCheckbox.Location = new System.Drawing.Point(10, 10); + this.useAntiAliasingCheckbox.Name = "useAntiAliasingCheckbox"; + this.useAntiAliasingCheckbox.Size = new System.Drawing.Size(103, 17); + this.useAntiAliasingCheckbox.TabIndex = 0; + this.useAntiAliasingCheckbox.Text = "Use anti-aliasing"; + this.useAntiAliasingCheckbox.UseVisualStyleBackColor = true; + // + // mapCanvas + // + this.mapCanvas.Dock = System.Windows.Forms.DockStyle.Fill; + this.mapCanvas.Location = new System.Drawing.Point(13, 13); + this.mapCanvas.Margin = new System.Windows.Forms.Padding(0); + this.mapCanvas.Name = "mapCanvas"; + this.mapCanvas.Size = new System.Drawing.Size(558, 342); + this.mapCanvas.TabIndex = 0; + this.mapCanvas.TabStop = false; + this.mapCanvas.MouseDown += new System.Windows.Forms.MouseEventHandler(this.mapCanvas_MouseDown); + this.mapCanvas.MouseMove += new System.Windows.Forms.MouseEventHandler(this.mapCanvas_MouseMove); + this.mapCanvas.MouseUp += new System.Windows.Forms.MouseEventHandler(this.mapCanvas_MouseUp); + // + // tableLayoutPanel4 + // + this.tableLayoutPanel4.ColumnCount = 1; + this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel4.Controls.Add(this.panel1, 0, 0); + this.tableLayoutPanel4.Controls.Add(this.multiplayerSettingsPanel, 0, 1); + this.tableLayoutPanel4.Controls.Add(this.mapSettingsPanel, 0, 2); + this.tableLayoutPanel4.Controls.Add(this.playersPanel, 0, 3); + this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel4.Location = new System.Drawing.Point(584, 0); + this.tableLayoutPanel4.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel4.Name = "tableLayoutPanel4"; + this.tableLayoutPanel4.RowCount = 4; + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel4.Size = new System.Drawing.Size(200, 531); + this.tableLayoutPanel4.TabIndex = 1; + // + // panel1 + // + this.panel1.Location = new System.Drawing.Point(3, 3); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(194, 14); + this.panel1.TabIndex = 3; + // + // multiplayerSettingsPanel + // + this.multiplayerSettingsPanel.AutoSize = true; + this.multiplayerSettingsPanel.Controls.Add(this.groupBox2); + this.multiplayerSettingsPanel.Location = new System.Drawing.Point(0, 20); + this.multiplayerSettingsPanel.Margin = new System.Windows.Forms.Padding(0); + this.multiplayerSettingsPanel.Name = "multiplayerSettingsPanel"; + this.multiplayerSettingsPanel.Padding = new System.Windows.Forms.Padding(10, 0, 10, 0); + this.multiplayerSettingsPanel.Size = new System.Drawing.Size(200, 83); + this.multiplayerSettingsPanel.TabIndex = 1; + this.multiplayerSettingsPanel.Visible = false; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.penaltyCheckbox); + this.groupBox2.Controls.Add(this.preferGreenCheckbox); + this.groupBox2.Controls.Add(this.allowJoiningCheckbox); + this.groupBox2.Location = new System.Drawing.Point(10, 0); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(180, 80); + this.groupBox2.TabIndex = 0; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Multiplayer settings"; + // + // penaltyCheckbox + // + this.penaltyCheckbox.AutoSize = true; + this.penaltyCheckbox.Checked = true; + this.penaltyCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; + this.penaltyCheckbox.Location = new System.Drawing.Point(7, 57); + this.penaltyCheckbox.Name = "penaltyCheckbox"; + this.penaltyCheckbox.Size = new System.Drawing.Size(163, 17); + this.penaltyCheckbox.TabIndex = 2; + this.penaltyCheckbox.Text = "Penalty for speeding && SPAD"; + this.penaltyCheckbox.UseVisualStyleBackColor = true; + this.penaltyCheckbox.CheckedChanged += new System.EventHandler(this.penaltyCheckbox_CheckedChanged); + // + // preferGreenCheckbox + // + this.preferGreenCheckbox.AutoSize = true; + this.preferGreenCheckbox.Checked = true; + this.preferGreenCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; + this.preferGreenCheckbox.Location = new System.Drawing.Point(7, 38); + this.preferGreenCheckbox.Name = "preferGreenCheckbox"; + this.preferGreenCheckbox.Size = new System.Drawing.Size(119, 17); + this.preferGreenCheckbox.TabIndex = 1; + this.preferGreenCheckbox.Text = "Prefer green signals"; + this.preferGreenCheckbox.UseVisualStyleBackColor = true; + this.preferGreenCheckbox.CheckedChanged += new System.EventHandler(this.preferGreenCheckbox_CheckedChanged); + // + // allowJoiningCheckbox + // + this.allowJoiningCheckbox.AutoSize = true; + this.allowJoiningCheckbox.Checked = true; + this.allowJoiningCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; + this.allowJoiningCheckbox.Location = new System.Drawing.Point(7, 19); + this.allowJoiningCheckbox.Name = "allowJoiningCheckbox"; + this.allowJoiningCheckbox.Size = new System.Drawing.Size(141, 17); + this.allowJoiningCheckbox.TabIndex = 0; + this.allowJoiningCheckbox.Text = "Allow new players to join"; + this.allowJoiningCheckbox.UseVisualStyleBackColor = true; + this.allowJoiningCheckbox.CheckedChanged += new System.EventHandler(this.allowJoiningCheckbox_CheckedChanged); + // + // mapSettingsPanel + // + this.mapSettingsPanel.AutoSize = true; + this.mapSettingsPanel.Controls.Add(this.groupBox1); + this.mapSettingsPanel.Location = new System.Drawing.Point(0, 103); + this.mapSettingsPanel.Margin = new System.Windows.Forms.Padding(0); + this.mapSettingsPanel.Name = "mapSettingsPanel"; + this.mapSettingsPanel.Padding = new System.Windows.Forms.Padding(10, 0, 10, 0); + this.mapSettingsPanel.Size = new System.Drawing.Size(200, 191); + this.mapSettingsPanel.TabIndex = 0; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.followMyTrainOnMap); + this.groupBox1.Controls.Add(this.centerOnMyTrainButton); + this.groupBox1.Controls.Add(this.seeTrainInGameButton); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.mapResolutionUpDown); + this.groupBox1.Controls.Add(this.allowThrowingSwitchesCheckbox); + this.groupBox1.Controls.Add(this.allowChangingSignalsCheckbox); + this.groupBox1.Controls.Add(this.drawPathCheckbox); + this.groupBox1.Location = new System.Drawing.Point(10, 3); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(180, 185); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Map settings and controls"; + // + // followMyTrainOnMap + // + this.followMyTrainOnMap.AutoSize = true; + this.followMyTrainOnMap.Location = new System.Drawing.Point(7, 156); + this.followMyTrainOnMap.Name = "followMyTrainOnMap"; + this.followMyTrainOnMap.Size = new System.Drawing.Size(167, 23); + this.followMyTrainOnMap.TabIndex = 7; + this.followMyTrainOnMap.Text = "Follow my train on the map"; + this.followMyTrainOnMap.UseVisualStyleBackColor = true; + this.followMyTrainOnMap.Click += new System.EventHandler(this.followMyTrainOnMap_Click); + // + // centerOnMyTrainButton + // + this.centerOnMyTrainButton.AutoSize = true; + this.centerOnMyTrainButton.Location = new System.Drawing.Point(7, 127); + this.centerOnMyTrainButton.Name = "centerOnMyTrainButton"; + this.centerOnMyTrainButton.Size = new System.Drawing.Size(167, 23); + this.centerOnMyTrainButton.TabIndex = 6; + this.centerOnMyTrainButton.Text = "Jump to my train on the map"; + this.centerOnMyTrainButton.UseVisualStyleBackColor = true; + this.centerOnMyTrainButton.Click += new System.EventHandler(this.centerOnMyTrainButton_Click); + // + // seeTrainInGameButton + // + this.seeTrainInGameButton.AutoSize = true; + this.seeTrainInGameButton.Location = new System.Drawing.Point(7, 98); + this.seeTrainInGameButton.Name = "seeTrainInGameButton"; + this.seeTrainInGameButton.Size = new System.Drawing.Size(167, 23); + this.seeTrainInGameButton.TabIndex = 5; + this.seeTrainInGameButton.Text = "Jump to my train in game"; + this.seeTrainInGameButton.UseVisualStyleBackColor = true; + this.seeTrainInGameButton.Click += new System.EventHandler(this.seeTrainInGameButton_Click); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(4, 78); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(96, 13); + this.label3.TabIndex = 4; + this.label3.Text = "Map resolution (m):"; + // + // mapResolutionUpDown + // + this.mapResolutionUpDown.Increment = new decimal(new int[] { + 50, + 0, + 0, + 0}); + this.mapResolutionUpDown.Location = new System.Drawing.Point(102, 75); + this.mapResolutionUpDown.Margin = new System.Windows.Forms.Padding(0); + this.mapResolutionUpDown.Maximum = new decimal(new int[] { + 200000, + 0, + 0, + 0}); + this.mapResolutionUpDown.Minimum = new decimal(new int[] { + 80, + 0, + 0, + 0}); + this.mapResolutionUpDown.Name = "mapResolutionUpDown"; + this.mapResolutionUpDown.Size = new System.Drawing.Size(72, 20); + this.mapResolutionUpDown.TabIndex = 3; + this.mapResolutionUpDown.ThousandsSeparator = true; + this.mapResolutionUpDown.Value = new decimal(new int[] { + 5000, + 0, + 0, + 0}); + this.mapResolutionUpDown.ValueChanged += new System.EventHandler(this.mapResolutionUpDown_ValueChanged); + // + // allowThrowingSwitchesCheckbox + // + this.allowThrowingSwitchesCheckbox.AutoSize = true; + this.allowThrowingSwitchesCheckbox.Checked = true; + this.allowThrowingSwitchesCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; + this.allowThrowingSwitchesCheckbox.Location = new System.Drawing.Point(7, 57); + this.allowThrowingSwitchesCheckbox.Name = "allowThrowingSwitchesCheckbox"; + this.allowThrowingSwitchesCheckbox.Size = new System.Drawing.Size(138, 17); + this.allowThrowingSwitchesCheckbox.TabIndex = 2; + this.allowThrowingSwitchesCheckbox.Text = "Allow throwing switches"; + this.allowThrowingSwitchesCheckbox.UseVisualStyleBackColor = true; + // + // allowChangingSignalsCheckbox + // + this.allowChangingSignalsCheckbox.AutoSize = true; + this.allowChangingSignalsCheckbox.Checked = true; + this.allowChangingSignalsCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; + this.allowChangingSignalsCheckbox.Location = new System.Drawing.Point(7, 38); + this.allowChangingSignalsCheckbox.Name = "allowChangingSignalsCheckbox"; + this.allowChangingSignalsCheckbox.Size = new System.Drawing.Size(133, 17); + this.allowChangingSignalsCheckbox.TabIndex = 1; + this.allowChangingSignalsCheckbox.Text = "Allow changing signals"; + this.allowChangingSignalsCheckbox.UseVisualStyleBackColor = true; + // + // drawPathCheckbox + // + this.drawPathCheckbox.AutoSize = true; + this.drawPathCheckbox.Checked = true; + this.drawPathCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; + this.drawPathCheckbox.Location = new System.Drawing.Point(7, 19); + this.drawPathCheckbox.Name = "drawPathCheckbox"; + this.drawPathCheckbox.Size = new System.Drawing.Size(135, 17); + this.drawPathCheckbox.TabIndex = 0; + this.drawPathCheckbox.Text = "Draw next path section"; + this.drawPathCheckbox.UseVisualStyleBackColor = true; + this.drawPathCheckbox.CheckedChanged += new System.EventHandler(this.drawPathCheckbox_CheckedChanged); + // + // playersPanel + // + this.playersPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.playersPanel.Controls.Add(this.groupBox3); + this.playersPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.playersPanel.Location = new System.Drawing.Point(0, 294); + this.playersPanel.Margin = new System.Windows.Forms.Padding(0); + this.playersPanel.Name = "playersPanel"; + this.playersPanel.Padding = new System.Windows.Forms.Padding(10, 0, 10, 10); + this.playersPanel.Size = new System.Drawing.Size(200, 237); + this.playersPanel.TabIndex = 2; + this.playersPanel.Visible = false; + // + // groupBox3 + // + this.groupBox3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.groupBox3.Controls.Add(this.playersView); + this.groupBox3.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox3.Location = new System.Drawing.Point(10, 0); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(180, 227); + this.groupBox3.TabIndex = 0; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Players"; + // + // playersView + // + this.playersView.Activation = System.Windows.Forms.ItemActivation.OneClick; + this.playersView.Alignment = System.Windows.Forms.ListViewAlignment.Left; + this.playersView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.playersView.HideSelection = false; + this.playersView.HoverSelection = true; + this.playersView.Items.AddRange(new System.Windows.Forms.ListViewItem[] { + listViewItem1, + listViewItem2, + listViewItem3, + listViewItem4}); + this.playersView.Location = new System.Drawing.Point(7, 19); + this.playersView.Name = "playersView"; + this.playersView.Size = new System.Drawing.Size(167, 202); + this.playersView.TabIndex = 1; + this.playersView.UseCompatibleStateImageBehavior = false; + this.playersView.View = System.Windows.Forms.View.List; + this.playersView.MouseClick += new System.Windows.Forms.MouseEventHandler(this.playersView_MouseClick); + // + // messageActionsMenu + // + this.messageActionsMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.messageSelectedPlayerMenuItem, + this.replyToSelectedPlayerMenuItem}); + this.messageActionsMenu.Name = "contextMenuStrip2"; + this.messageActionsMenu.ShowImageMargin = false; + this.messageActionsMenu.Size = new System.Drawing.Size(197, 48); + this.messageActionsMenu.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.messageActionsMenu_ItemClicked); + // + // messageSelectedPlayerMenuItem + // + this.messageSelectedPlayerMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.messageSelectedPlayerMenuItem.Name = "messageSelectedPlayerMenuItem"; + this.messageSelectedPlayerMenuItem.Size = new System.Drawing.Size(196, 22); + this.messageSelectedPlayerMenuItem.Tag = "message"; + this.messageSelectedPlayerMenuItem.Text = "Message the selected player"; + // + // replyToSelectedPlayerMenuItem + // + this.replyToSelectedPlayerMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.replyToSelectedPlayerMenuItem.Name = "replyToSelectedPlayerMenuItem"; + this.replyToSelectedPlayerMenuItem.Size = new System.Drawing.Size(196, 22); + this.replyToSelectedPlayerMenuItem.Tag = "reply"; + this.replyToSelectedPlayerMenuItem.Text = "Reply to the selected player"; + // + // playerActionsMenu + // + this.playerActionsMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.playerToolStripMenuItem, + this.makeThisPlayerAnAssistantToolStripMenuItem, + this.jumpToThisPlayerInGameToolStripMenuItem, + this.followToolStripMenuItem, + this.kickFromMultiplayerSessionToolStripMenuItem}); + this.playerActionsMenu.Name = "contextMenuStrip3"; + this.playerActionsMenu.Size = new System.Drawing.Size(230, 114); + this.playerActionsMenu.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.playerActionsMenu_ItemClicked); + // + // playerToolStripMenuItem + // + this.playerToolStripMenuItem.Enabled = false; + this.playerToolStripMenuItem.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.playerToolStripMenuItem.Name = "playerToolStripMenuItem"; + this.playerToolStripMenuItem.Size = new System.Drawing.Size(229, 22); + this.playerToolStripMenuItem.Text = "Player"; + // + // makeThisPlayerAnAssistantToolStripMenuItem + // + this.makeThisPlayerAnAssistantToolStripMenuItem.Name = "makeThisPlayerAnAssistantToolStripMenuItem"; + this.makeThisPlayerAnAssistantToolStripMenuItem.Size = new System.Drawing.Size(229, 22); + this.makeThisPlayerAnAssistantToolStripMenuItem.Tag = "assistant"; + this.makeThisPlayerAnAssistantToolStripMenuItem.Text = "Make this player an assistant"; + // + // jumpToThisPlayerInGameToolStripMenuItem + // + this.jumpToThisPlayerInGameToolStripMenuItem.Name = "jumpToThisPlayerInGameToolStripMenuItem"; + this.jumpToThisPlayerInGameToolStripMenuItem.Size = new System.Drawing.Size(229, 22); + this.jumpToThisPlayerInGameToolStripMenuItem.Tag = "seeInGame"; + this.jumpToThisPlayerInGameToolStripMenuItem.Text = "Jump to this player in game"; + // + // followToolStripMenuItem + // + this.followToolStripMenuItem.Name = "followToolStripMenuItem"; + this.followToolStripMenuItem.Size = new System.Drawing.Size(229, 22); + this.followToolStripMenuItem.Tag = "followOnMap"; + this.followToolStripMenuItem.Text = "Follow on the map"; + // + // kickFromMultiplayerSessionToolStripMenuItem + // + this.kickFromMultiplayerSessionToolStripMenuItem.Name = "kickFromMultiplayerSessionToolStripMenuItem"; + this.kickFromMultiplayerSessionToolStripMenuItem.Size = new System.Drawing.Size(229, 22); + this.kickFromMultiplayerSessionToolStripMenuItem.Tag = "kick"; + this.kickFromMultiplayerSessionToolStripMenuItem.Text = "Kick from multiplayer session"; + // + // setSwitchMenu + // + this.setSwitchMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.setSwitchToToolStripMenuItem, + this.mainRouteToolStripMenuItem, + this.sideRouteToolStripMenuItem}); + this.setSwitchMenu.Name = "contextMenuStrip1"; + this.setSwitchMenu.Size = new System.Drawing.Size(157, 70); + this.setSwitchMenu.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.setSwitchMenu_ItemClicked); + // + // setSwitchToToolStripMenuItem + // + this.setSwitchToToolStripMenuItem.Enabled = false; + this.setSwitchToToolStripMenuItem.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.setSwitchToToolStripMenuItem.Name = "setSwitchToToolStripMenuItem"; + this.setSwitchToToolStripMenuItem.Size = new System.Drawing.Size(156, 22); + this.setSwitchToToolStripMenuItem.Text = "Set switch to..."; + // + // mainRouteToolStripMenuItem + // + this.mainRouteToolStripMenuItem.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(64)))), ((int)(((byte)(55))))); + this.mainRouteToolStripMenuItem.ForeColor = System.Drawing.Color.White; + this.mainRouteToolStripMenuItem.Name = "mainRouteToolStripMenuItem"; + this.mainRouteToolStripMenuItem.Size = new System.Drawing.Size(156, 22); + this.mainRouteToolStripMenuItem.Tag = "mainRoute"; + this.mainRouteToolStripMenuItem.Text = "Main route"; + // + // sideRouteToolStripMenuItem + // + this.sideRouteToolStripMenuItem.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(161)))), ((int)(((byte)(136)))), ((int)(((byte)(127))))); + this.sideRouteToolStripMenuItem.Name = "sideRouteToolStripMenuItem"; + this.sideRouteToolStripMenuItem.Size = new System.Drawing.Size(156, 22); + this.sideRouteToolStripMenuItem.Tag = "sideRoute"; + this.sideRouteToolStripMenuItem.Text = "Side route"; + // + // setSignalMenu + // + this.setSignalMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.setSignalAspectToToolStripMenuItem, + this.systemControlledToolStripMenuItem, + this.stopToolStripMenuItem, + this.approachToolStripMenuItem, + this.proceedToolStripMenuItem, + this.toolStripSeparator1, + this.allowCallOnToolStripMenuItem}); + this.setSignalMenu.Name = "contextMenuStrip1"; + this.setSignalMenu.Size = new System.Drawing.Size(191, 164); + this.setSignalMenu.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.setSignalMenu_ItemClicked); + // + // setSignalAspectToToolStripMenuItem + // + this.setSignalAspectToToolStripMenuItem.Enabled = false; + this.setSignalAspectToToolStripMenuItem.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.setSignalAspectToToolStripMenuItem.Name = "setSignalAspectToToolStripMenuItem"; + this.setSignalAspectToToolStripMenuItem.Size = new System.Drawing.Size(190, 22); + this.setSignalAspectToToolStripMenuItem.Text = "Set signal aspect to..."; + // + // systemControlledToolStripMenuItem + // + this.systemControlledToolStripMenuItem.Name = "systemControlledToolStripMenuItem"; + this.systemControlledToolStripMenuItem.Size = new System.Drawing.Size(190, 22); + this.systemControlledToolStripMenuItem.Tag = "system"; + this.systemControlledToolStripMenuItem.Text = "System controlled"; + // + // stopToolStripMenuItem + // + this.stopToolStripMenuItem.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(203)))), ((int)(((byte)(67)))), ((int)(((byte)(53))))); + this.stopToolStripMenuItem.ForeColor = System.Drawing.Color.White; + this.stopToolStripMenuItem.Name = "stopToolStripMenuItem"; + this.stopToolStripMenuItem.Size = new System.Drawing.Size(190, 22); + this.stopToolStripMenuItem.Tag = "stop"; + this.stopToolStripMenuItem.Text = "Stop"; + // + // approachToolStripMenuItem + // + this.approachToolStripMenuItem.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(241)))), ((int)(((byte)(196)))), ((int)(((byte)(15))))); + this.approachToolStripMenuItem.Name = "approachToolStripMenuItem"; + this.approachToolStripMenuItem.Size = new System.Drawing.Size(190, 22); + this.approachToolStripMenuItem.Tag = "approach"; + this.approachToolStripMenuItem.Text = "Approach"; + // + // proceedToolStripMenuItem + // + this.proceedToolStripMenuItem.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(34)))), ((int)(((byte)(153)))), ((int)(((byte)(84))))); + this.proceedToolStripMenuItem.ForeColor = System.Drawing.Color.White; + this.proceedToolStripMenuItem.Name = "proceedToolStripMenuItem"; + this.proceedToolStripMenuItem.Size = new System.Drawing.Size(190, 22); + this.proceedToolStripMenuItem.Tag = "proceed"; + this.proceedToolStripMenuItem.Text = "Proceed"; + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(187, 6); + // + // allowCallOnToolStripMenuItem + // + this.allowCallOnToolStripMenuItem.Enabled = false; + this.allowCallOnToolStripMenuItem.Name = "allowCallOnToolStripMenuItem"; + this.allowCallOnToolStripMenuItem.Size = new System.Drawing.Size(190, 22); + this.allowCallOnToolStripMenuItem.Tag = "callOn"; + this.allowCallOnToolStripMenuItem.Text = "Allow call on"; + // + // trainActionsMenu + // + this.trainActionsMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.jumpToThisTrainInGameToolStripMenuItem, + this.followThisTrainOnTheMapToolStripMenuItem}); + this.trainActionsMenu.Name = "trainActionsMenu"; + this.trainActionsMenu.Size = new System.Drawing.Size(223, 48); + this.trainActionsMenu.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.trainActionsMenu_ItemClicked); + // + // jumpToThisTrainInGameToolStripMenuItem + // + this.jumpToThisTrainInGameToolStripMenuItem.Name = "jumpToThisTrainInGameToolStripMenuItem"; + this.jumpToThisTrainInGameToolStripMenuItem.Size = new System.Drawing.Size(222, 22); + this.jumpToThisTrainInGameToolStripMenuItem.Tag = "seeInGame"; + this.jumpToThisTrainInGameToolStripMenuItem.Text = "Jump to this train in game"; + // + // followThisTrainOnTheMapToolStripMenuItem + // + this.followThisTrainOnTheMapToolStripMenuItem.Name = "followThisTrainOnTheMapToolStripMenuItem"; + this.followThisTrainOnTheMapToolStripMenuItem.Size = new System.Drawing.Size(222, 22); + this.followThisTrainOnTheMapToolStripMenuItem.Tag = "followOnMap"; + this.followThisTrainOnTheMapToolStripMenuItem.Text = "Follow this train on the map"; + // + // MapViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(784, 561); + this.Controls.Add(this.tableLayoutPanel1); + this.MinimumSize = new System.Drawing.Size(600, 400); + this.Name = "MapViewer"; + this.Text = "Map window"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MapViewer_FormClosing); + this.Resize += new System.EventHandler(this.MapViewer_Resize); + this.playerRolePanel.ResumeLayout(false); + this.playerRolePanel.PerformLayout(); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel2.ResumeLayout(false); + this.tableLayoutPanel3.ResumeLayout(false); + this.messagesPanel.ResumeLayout(false); + this.messagesPanel.PerformLayout(); + this.canvasPanel.ResumeLayout(false); + this.canvasPanel.PerformLayout(); + this.mapCustomizationPanel.ResumeLayout(false); + this.mapCustomizationPanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.mapCanvas)).EndInit(); + this.tableLayoutPanel4.ResumeLayout(false); + this.tableLayoutPanel4.PerformLayout(); + this.multiplayerSettingsPanel.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.mapSettingsPanel.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.mapResolutionUpDown)).EndInit(); + this.playersPanel.ResumeLayout(false); + this.groupBox3.ResumeLayout(false); + this.messageActionsMenu.ResumeLayout(false); + this.playerActionsMenu.ResumeLayout(false); + this.setSwitchMenu.ResumeLayout(false); + this.setSignalMenu.ResumeLayout(false); + this.trainActionsMenu.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + public System.Windows.Forms.Panel playerRolePanel; + private System.Windows.Forms.Label playerRoleExplanation; + private System.Windows.Forms.LinkLabel playerRoleLink; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; + public System.Windows.Forms.Panel messagesPanel; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button messageAllButton; + private System.Windows.Forms.Button moreReplyOptionsButton; + private System.Windows.Forms.TextBox messageInput; + private System.Windows.Forms.ContextMenuStrip messageActionsMenu; + private System.Windows.Forms.ToolStripMenuItem messageSelectedPlayerMenuItem; + private System.Windows.Forms.ToolStripMenuItem replyToSelectedPlayerMenuItem; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4; + private System.Windows.Forms.Panel mapSettingsPanel; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.CheckBox allowThrowingSwitchesCheckbox; + private System.Windows.Forms.CheckBox allowChangingSignalsCheckbox; + private System.Windows.Forms.CheckBox drawPathCheckbox; + public System.Windows.Forms.Panel multiplayerSettingsPanel; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.CheckBox penaltyCheckbox; + private System.Windows.Forms.CheckBox preferGreenCheckbox; + private System.Windows.Forms.CheckBox allowJoiningCheckbox; + private System.Windows.Forms.NumericUpDown mapResolutionUpDown; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Button followMyTrainOnMap; + private System.Windows.Forms.Button centerOnMyTrainButton; + private System.Windows.Forms.Button seeTrainInGameButton; + public System.Windows.Forms.Panel playersPanel; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.ListView playersView; + private System.Windows.Forms.ContextMenuStrip playerActionsMenu; + private System.Windows.Forms.ToolStripMenuItem makeThisPlayerAnAssistantToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem followToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem jumpToThisPlayerInGameToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem kickFromMultiplayerSessionToolStripMenuItem; + private System.Windows.Forms.Panel canvasPanel; + public System.Windows.Forms.PictureBox mapCanvas; + private System.Windows.Forms.Button mapCustomizationButton; + private System.Windows.Forms.Panel mapCustomizationPanel; + private System.Windows.Forms.CheckBox useAntiAliasingCheckbox; + private System.Windows.Forms.ListBox messages; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.CheckBox showTimeCheckbox; + private System.Windows.Forms.Button rotateThemesButton; + public System.Windows.Forms.Label timeLabel; + private System.Windows.Forms.CheckBox showSignalsCheckbox; + private System.Windows.Forms.CheckBox showSwitchesCheckbox; + private System.Windows.Forms.CheckBox showSidingLabelsCheckbox; + private System.Windows.Forms.CheckBox showPlatformLabelsCheckbox; + private System.Windows.Forms.CheckBox showPlatformsCheckbox; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.CheckBox showSignalStateCheckbox; + private System.Windows.Forms.RadioButton showActiveTrainsRadio; + private System.Windows.Forms.CheckBox showTrainStateCheckbox; + private System.Windows.Forms.CheckBox showTrainLabelsCheckbox; + private System.Windows.Forms.RadioButton showAllTrainsRadio; + private System.Windows.Forms.ContextMenuStrip setSwitchMenu; + private System.Windows.Forms.ToolStripMenuItem setSwitchToToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem mainRouteToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem sideRouteToolStripMenuItem; + private System.Windows.Forms.ContextMenuStrip setSignalMenu; + private System.Windows.Forms.ToolStripMenuItem setSignalAspectToToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem systemControlledToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem stopToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem approachToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem proceedToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem allowCallOnToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem playerToolStripMenuItem; + private System.Windows.Forms.ContextMenuStrip trainActionsMenu; + private System.Windows.Forms.ToolStripMenuItem jumpToThisTrainInGameToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem followThisTrainOnTheMapToolStripMenuItem; + } +} + diff --git a/Source/RunActivity/Viewer3D/Map/MapForm.cs b/Source/RunActivity/Viewer3D/Map/MapForm.cs new file mode 100644 index 0000000000..f5d8c08cc3 --- /dev/null +++ b/Source/RunActivity/Viewer3D/Map/MapForm.cs @@ -0,0 +1,2303 @@ +// COPYRIGHT 2023 by the Open Rails project. +// +// This file is part of Open Rails. +// +// Open Rails is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Open Rails is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Open Rails. If not, see . + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.Linq; +using System.Text.RegularExpressions; +using System.Windows.Forms; +using GNU.Gettext; +using GNU.Gettext.WinForms; +using Microsoft.Xna.Framework; +using Orts.Formats.Msts; +using Orts.MultiPlayer; +using Orts.Simulation; +using Orts.Simulation.AIs; +using Orts.Simulation.Physics; +using Orts.Simulation.RollingStocks; +using Orts.Simulation.Signalling; +using Orts.Simulation.Timetables; +using Orts.Viewer3D.Map; +using Orts.Viewer3D.Popups; +using ORTS.Common; +using Color = System.Drawing.Color; + +namespace Orts.Viewer3D.Debugging +{ + public partial class MapViewer : Form + { + #region Variables + /// + /// Reference to the main simulator object. + /// + public readonly Simulator simulator; + private GettextResourceManager catalog = new GettextResourceManager("RunActivity"); + private readonly MapDataProvider MapDataProvider; + private readonly MapThemeProvider MapThemeProvider; + private string ThemeName = "light"; + private ThemeStyle Theme; + /// + /// Used to periodically check if we should shift the view when the user is holding down a "shift view" button. + /// + private readonly Timer UITimer; + public Viewer Viewer; + + /// + /// True when the user is dragging the route view + /// + public bool Dragging; + private WorldPosition worldPos; + public float xScale = 1; // pixels / metre + public float yScale = 1; // pixels / metre + + public List switchItemsDrawn; + public List signalItemsDrawn; + public SwitchWidget switchPickedItem; + public SignalWidget signalPickedItem; + public TrainWidget trainPickedItem; + public bool switchPickedItemHandled; + public double switchPickedTime; + public bool signalPickedItemHandled; + public double signalPickedTime; + public bool DrawPath = true; // Whether the train path should be drawn + readonly TrackNode[] nodes; + + public List selectedTrainList; + /// + /// Contains the last position of the mouse + /// + private System.Drawing.Point LastCursorPosition = new System.Drawing.Point(); + + public Pen redPen = new Pen(Color.FromArgb(244, 67, 54)); + public Pen greenPen = new Pen(Color.FromArgb(76, 175, 80)); + public Pen orangePen = new Pen(Color.FromArgb(255, 235, 59)); + public Pen trainPen = new Pen(Color.DarkGreen); + public Pen pathPen = new Pen(Color.FromArgb(52, 152, 219)); + public Pen grayPen = new Pen(Color.Gray); + public Pen PlatformPen = new Pen(Color.Blue); + public Pen TrackPen = new Pen(Color.FromArgb(46, 64, 83)); + public Pen ZoomTargetPen = new Pen(Color.FromArgb(46, 64, 83)); + + public Font trainFont = new Font("Segoe UI Semibold", 10, FontStyle.Bold); + public Font sidingFont = new Font("Segoe UI Semibold", 10, FontStyle.Regular); + public Font PlatformFont = new Font("Segoe UI Semibold", 10, FontStyle.Regular); + public Font SignalFont = new Font("Segoe UI Semibold", 10, FontStyle.Regular); + private readonly SolidBrush trainBrush = new SolidBrush(Color.Red); + public SolidBrush sidingBrush = new SolidBrush(Color.Blue); + public SolidBrush PlatformBrush = new SolidBrush(Color.DarkBlue); + public SolidBrush SignalBrush = new SolidBrush(Color.DarkRed); + public SolidBrush InactiveTrainBrush = new SolidBrush(Color.DarkRed); + private Color MapCanvasColor = Color.White; + + // The train selected by clicking on it on the map or indirectly via the "follow" or "jump to" train options + public Train PickedTrain = Program.Simulator.PlayerLocomotive.Train; + /// + /// Defines the area to view, in meters. The left edge is meters from the leftmost extent of the route. + /// + public RectangleF ViewWindow; + + // Extents of the route in meters measured from the World origin + public float minX = float.MaxValue; + public float minY = float.MaxValue; + public float maxX = float.MinValue; + public float maxY = float.MinValue; + + public int RedrawCount; + private double lastUpdateTime; + + private bool MapCustomizationVisible = false; + #endregion + + public MapViewer(Simulator simulator, Viewer viewer) + { + InitializeComponent(); + + Localizer.Localize(this, catalog); + + if (simulator == null) + throw new ArgumentNullException("simulator", "Simulator object cannot be null."); + + this.simulator = simulator; + Viewer = viewer; + MapDataProvider = new MapDataProvider(this); + MapThemeProvider = new MapThemeProvider(); + nodes = simulator.TDB.TrackDB.TrackNodes; + + InitializeForm(); + + ViewWindow = new RectangleF(0, 0, 5000f, 5000f); + mapResolutionUpDown.Accelerations.Add(new NumericUpDownAcceleration(1, 100)); + selectedTrainList = new List(); + + InitializeData(); + InitializeImage(); + + MPManager.Instance().MessageReceived += (sender, e) => + { + AddNewMessage(e.Time, e.Message); + }; + + // Initialise the timer used to handle user input + UITimer = new Timer(); + UITimer.Interval = 100; + UITimer.Tick += new System.EventHandler(UITimer_Tick); + UITimer.Start(); + } + + void InitializeForm() + { + MapDataProvider.SetControls(); + MapThemeProvider.InitializeThemes(); + Theme = MapThemeProvider.GetTheme(ThemeName); + + // It appears that `GNU.gettext` fails to apply translations to dropdown menus (ContextMenuStrip). + // Therefore, we must use `Viewer.Catalog.GetString()` to manually apply them for now. + messageSelectedPlayerMenuItem.Text = Viewer.Catalog.GetString("Message the selected player"); + replyToSelectedPlayerMenuItem.Text = Viewer.Catalog.GetString("Reply to the selected player"); + + playerToolStripMenuItem.Text = Viewer.Catalog.GetString("Player"); + makeThisPlayerAnAssistantToolStripMenuItem.Text = Viewer.Catalog.GetString("Make this player an assistant"); + jumpToThisPlayerInGameToolStripMenuItem.Text = Viewer.Catalog.GetString("Jump to this player in game"); + followToolStripMenuItem.Text = Viewer.Catalog.GetString("Follow on the map"); + kickFromMultiplayerSessionToolStripMenuItem.Text = Viewer.Catalog.GetString("Kick from multiplayer session"); + + setSwitchToToolStripMenuItem.Text = Viewer.Catalog.GetString("Set switch to..."); + mainRouteToolStripMenuItem.Text = Viewer.Catalog.GetString("Main route"); + sideRouteToolStripMenuItem.Text = Viewer.Catalog.GetString("Side route"); + + setSignalAspectToToolStripMenuItem.Text = Viewer.Catalog.GetString("Set signal aspect to..."); + systemControlledToolStripMenuItem.Text = Viewer.Catalog.GetString("System controlled"); + stopToolStripMenuItem.Text = Viewer.Catalog.GetString("Stop"); + approachToolStripMenuItem.Text = Viewer.Catalog.GetString("Approach"); + proceedToolStripMenuItem.Text = Viewer.Catalog.GetString("Proceed"); + + jumpToThisTrainInGameToolStripMenuItem.Text = Viewer.Catalog.GetString("Jump to this train in game"); + followThisTrainOnTheMapToolStripMenuItem.Text = Viewer.Catalog.GetString("Follow this train on the map"); + + float[] dashPattern = { 4, 2 }; + ZoomTargetPen.DashPattern = dashPattern; + pathPen.DashPattern = dashPattern; + } + + #region initData + private void InitializeData() + { + switchItemsDrawn = new List(); + signalItemsDrawn = new List(); + switches = new List(); + for (int i = 0; i < nodes.Length; i++) + { + TrackNode currNode = nodes[i]; + + if (currNode != null) + { + if (currNode.TrEndNode) + { + //buffers.Add(new PointF(currNode.UiD.TileX * 2048 + currNode.UiD.X, currNode.UiD.TileZ * 2048 + currNode.UiD.Z)); + } + else if (currNode.TrVectorNode != null) + { + + if (currNode.TrVectorNode.TrVectorSections.Length > 1) + { + AddSegments(segments, currNode, currNode.TrVectorNode.TrVectorSections, ref minX, ref minY, ref maxX, ref maxY, simulator); + } + else + { + TrVectorSection s = currNode.TrVectorNode.TrVectorSections[0]; + + foreach (TrPin pin in currNode.TrPins) + { + + TrackNode connectedNode = nodes[pin.Link]; + + dVector A = new dVector(s.TileX, s.X, s.TileZ, +s.Z); + dVector B = new dVector(connectedNode.UiD.TileX, connectedNode.UiD.X, connectedNode.UiD.TileZ, connectedNode.UiD.Z); + segments.Add(new LineSegment(A, B, /*s.InterlockingTrack.IsOccupied*/ false, null)); + } + } + } + else if (currNode.TrJunctionNode != null) + { + foreach (TrPin pin in currNode.TrPins) + { + var vectorSections = nodes[pin.Link]?.TrVectorNode?.TrVectorSections; + if (vectorSections == null || vectorSections.Length < 1) + continue; + TrVectorSection item = pin.Direction == 1 ? vectorSections.First() : vectorSections.Last(); + dVector A = new dVector(currNode.UiD.TileX, currNode.UiD.X, currNode.UiD.TileZ, +currNode.UiD.Z); + dVector B = new dVector(item.TileX, +item.X, item.TileZ, +item.Z); + var x = dVector.DistanceSqr(A, B); + if (x < 0.1) continue; + segments.Add(new LineSegment(B, A, /*s.InterlockingTrack.IsOccupied*/ false, item)); + } + switches.Add(new SwitchWidget(currNode)); + } + } + } + + var maxsize = maxX - minX > maxY - minY ? maxX - minX : maxY - minY; + // Take up to next 500 + maxsize = (int)((maxsize / 100) + 1) * 500; + mapResolutionUpDown.Maximum = (decimal)maxsize; + Inited = true; + + if (simulator.TDB == null || simulator.TDB.TrackDB == null || simulator.TDB.TrackDB.TrItemTable == null) + return; + + MapDataProvider.PopulateItemLists(); + } + + bool Inited; + public List segments = new List(); + public List switches; + public List signals = new List(); + public List sidings = new List(); + public List platforms = new List(); + + /// + /// Initialises the picturebox and the image it contains. + /// + public void InitializeImage() + { + // When minimizing the window, `mapCanvas.Width` gets reported as 0 + // This crashes `System.Drawing.dll`, hence the check below + if (mapCanvas.Width <= 0 || mapCanvas.Height <= 0) return; + + mapCanvas.Image?.Dispose(); + mapCanvas.Image = new Bitmap(mapCanvas.Width, mapCanvas.Height); + } + #endregion + + #region playersList + readonly List PlayersList = new List(); + + public void AddPlayer(string name) + { + PlayersList.Add(name); + } + + int DisconnectedPlayersCount = 0; + int AssistantPlayersCount = 0; + public void CheckPlayers() + { + if (Dragging || !MPManager.IsMultiPlayer() || MPManager.OnlineTrains == null || MPManager.OnlineTrains.Players == null) return; + var players = MPManager.OnlineTrains.Players; + var username = MPManager.GetUserName(); + players = players.Concat(MPManager.Instance().lostPlayer).ToDictionary(x => x.Key, x => x.Value); + if (playersView.Items.Count == players.Count + 1 && DisconnectedPlayersCount == MPManager.Instance().lostPlayer.Count && AssistantPlayersCount == MPManager.Instance().aiderList.Count) return; + + DisconnectedPlayersCount = MPManager.Instance().lostPlayer.Count; + AssistantPlayersCount = MPManager.Instance().aiderList.Count; + + // Repopuale `PlayersList` + PlayersList.Clear(); + AddPlayer(username); + foreach (var p in players) + { + if (PlayersList.Contains(p.Key)) continue; + AddPlayer(p.Key); + } + + playersView.Items.Clear(); + foreach (var p in PlayersList) + { + ListViewItem item = new ListViewItem(p); + + if (p == username) + { + item.Text += " [" + Viewer.Catalog.GetString("You") + "]"; + item.Font = new Font(item.Font, FontStyle.Bold); + playersView.Items.Add(item); + + } + else if (MPManager.Instance().aiderList.Contains(p)) + { + item.Text += " [" + Viewer.Catalog.GetString("Helper") + "]"; + item.ForeColor = Color.FromArgb(40, 116, 166); + playersView.Items.Add(item); + } + else if (MPManager.Instance().lostPlayer.ContainsKey(p)) + { + item.Text += " [" + Viewer.Catalog.GetString("Disconnected") + "]"; + item.ForeColor = SystemColors.GrayText; + playersView.Items.Add(item); + } + else + { + playersView.Items.Add(item); + } + } + } + + static string TrimBracketsFromEnd(string input) + { + string pattern = @"\s\[[^\]]*\]\s*$"; + string result = Regex.Replace(input, pattern, ""); + + return result; + } + #endregion + + #region Draw + public bool FirstShow = true; + public bool FollowTrain; + public float subX, subY; + public float oldWidth; + public float oldHeight; + + /// + /// Regenerates the 2D view. At the moment, examines the track network + /// each time the view is drawn. Later, the traversal and drawing can be separated. + /// + public void GenerateView() + { + if (!Inited) return; + + timeLabel.Visible = showTimeCheckbox.Checked; + if (showTimeCheckbox.Checked) + MapDataProvider.ShowSimulationTime(); + + if (mapCanvas.Image == null || FirstShow) InitializeImage(); + + if (FirstShow || FollowTrain) + { + WorldPosition pos = PickedTrain?.Cars?.FirstOrDefault()?.WorldPosition; + + if (pos != null) + { + var ploc = new PointF((pos.TileX * 2048) + pos.Location.X, (pos.TileZ * 2048) + pos.Location.Z); + ViewWindow.X = ploc.X - minX - (ViewWindow.Width / 2); ViewWindow.Y = ploc.Y - minY - (ViewWindow.Width / 2); + FirstShow = false; + } + } + + CheckPlayers(); + + using (Graphics g = Graphics.FromImage(mapCanvas.Image)) + { + // Optional anti-aliasing + if (useAntiAliasingCheckbox.Checked == true) + g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + + subX = minX + ViewWindow.X; subY = minY + ViewWindow.Y; + g.Clear(MapCanvasColor); + + xScale = mapCanvas.Width / ViewWindow.Width; + yScale = mapCanvas.Height / ViewWindow.Height; + xScale = yScale = Math.Max(xScale, yScale); // Make X and Y scales the same to maintain correct angles + + // Set the default pen to represent 1 meter + var scale = (float)Math.Round(xScale); // Round to nearest pixels/meter + var penWidth = (int)MathHelper.Clamp(scale, 1, 4); // Keep 1 <= width <= 4 pixels + + PointF[] points = new PointF[3]; + Pen p = grayPen; + + // TODO: Refactor + p.Width = MathHelper.Clamp(xScale, 1, 3); + greenPen.Width = orangePen.Width = redPen.Width = p.Width; pathPen.Width = 2 * p.Width; + trainPen.Width = p.Width * 6; + + grayPen.Width = greenPen.Width = orangePen.Width = redPen.Width = penWidth; + pathPen.Width = penWidth * 2; + + var forwardDist = 100 / xScale; if (forwardDist < 5) forwardDist = 5; + + // Draw platforms first because track is drawn over the thicker platform line + DrawPlatforms(g, penWidth); + + PointF scaledA, scaledB; + DrawTrack(g, p, out scaledA, out scaledB); + + // Draw trains and path + DrawTrains(g, scaledA, scaledB); + + // Keep widgetWidth <= 15 pixels + var widgetWidth = Math.Min(penWidth * 6, 15); + + // Draw signals on top of path so they are easier to see. + signalItemsDrawn.Clear(); + ShowSignals(g, scaledB, widgetWidth); + + // Draw switches + switchItemsDrawn.Clear(); + ShowSwitches(g, widgetWidth); + + // Draw labels for sidings and platforms last so they go on top for readability + MapDataProvider.CleanTextCells(); // Empty the listing of labels ready for adding labels again + ShowPlatformLabels(g); // Platforms take priority over sidings and signal states + ShowSidingLabels(g); + + DrawZoomTarget(g); + } + + mapCanvas.Invalidate(); // Triggers a re-paint + } + + private void DrawPlatforms(Graphics g, int penWidth) + { + if (!showPlatformsCheckbox.Checked) + return; + + // Platforms can be obtrusive, so draw in solid blue only when zoomed in and fade them as we zoom out + switch (penWidth) + { + case 1: + PlatformPen.Color = Color.FromArgb(174, 214, 241); break; + case 2: + PlatformPen.Color = Color.FromArgb(93, 173, 226); break; + default: + PlatformPen.Color = Color.FromArgb(46, 134, 193); break; + } + + var width = grayPen.Width * 3; + PlatformPen.Width = width; + foreach (var p in platforms) + { + var scaledA = new PointF((p.Extent1.X - subX) * xScale, mapCanvas.Height - ((p.Extent1.Y - subY) * yScale)); + var scaledB = new PointF((p.Extent2.X - subX) * xScale, mapCanvas.Height - ((p.Extent2.Y - subY) * yScale)); + + MapDataProvider.FixForBadData(width, ref scaledA, ref scaledB, p.Extent1, p.Extent2); + g.DrawLine(PlatformPen, scaledA, scaledB); + } + } + + private void DrawTrack(Graphics g, Pen p, out PointF scaledA, out PointF scaledB) + { + + PointF[] points = new PointF[3]; + scaledA = new PointF(0, 0); + scaledB = new PointF(0, 0); + PointF scaledC = new PointF(0, 0); + foreach (var line in segments) + { + scaledA.X = ((line.A.TileX * 2048) - subX + (float)line.A.X) * xScale; + scaledA.Y = mapCanvas.Height - (((line.A.TileZ * 2048) - subY + (float)line.A.Z) * yScale); + scaledB.X = ((line.B.TileX * 2048) - subX + (float)line.B.X) * xScale; + scaledB.Y = mapCanvas.Height - (((line.B.TileZ * 2048) - subY + (float)line.B.Z) * yScale); + + if ((scaledA.X < 0 && scaledB.X < 0) + || (scaledA.Y < 0 && scaledB.Y < 0)) + continue; + + if (line.isCurved == true) + { + scaledC.X = ((float)line.C.X - subX) * xScale; scaledC.Y = mapCanvas.Height - (((float)line.C.Z - subY) * yScale); + points[0] = scaledA; points[1] = scaledC; points[2] = scaledB; + g.DrawCurve(TrackPen, points); + } + else g.DrawLine(TrackPen, scaledA, scaledB); + } + } + + private void DrawTrains(Graphics g, PointF scaledA, PointF scaledB) + { + var margin = 30 * xScale; // Margins to determine if we want to draw a train + var margin2 = 5000 * xScale; + + // Variable for drawing train path + var mDist = 5000f; var pDist = 50; // Segment length when drawing path + + selectedTrainList.Clear(); + + foreach (var train in simulator.Trains) + selectedTrainList.Add(train); + + foreach (var train in selectedTrainList) + { + string trainName; + WorldPosition worldPos; + TrainCar locoCar = null; + if (train.LeadLocomotive != null) + { + trainName = train.GetTrainName(train.LeadLocomotive.CarID); + locoCar = train.LeadLocomotive; + } + else if (train.Cars != null && train.Cars.Count > 0) + { + trainName = train.GetTrainName(train.Cars[0].CarID); + if (train.TrainType == Train.TRAINTYPE.AI || train.TrainType == Train.TRAINTYPE.STATIC) + trainName = train.Number.ToString() + ":" + train.Name; + + locoCar = train.Cars.Where(r => r is MSTSLocomotive).FirstOrDefault(); + + // Skip trains with no loco + if (locoCar == null) + locoCar = train.Cars[0]; + } + else + continue; + + // Draw the path, then each car of the train, then maybe the name + var loc = train.FrontTDBTraveller.WorldLocation; + float x = ((loc.TileX * 2048) + loc.Location.X - subX) * xScale; + float y = mapCanvas.Height - (((loc.TileZ * 2048) + loc.Location.Z - subY) * yScale); + + // If train out of view then skip it. + if (x < -margin2 || y < -margin2) + continue; + + DrawTrainPath(train, subX, subY, pathPen, g, scaledA, scaledB, pDist, mDist); + + // If zoomed out, so train occupies less than 2 * minTrainPx pixels, then + // draw the train as 2 squares of combined length minTrainPx. + const int minTrainPx = 24; + + // pen | train | Values for a good presentation + // 1 10 + // 2 12 + // 3 14 + // 4 16 + trainPen.Width = grayPen.Width * 6; + + var minTrainLengthM = minTrainPx / xScale; // Calculate length equivalent to a set number of pixels + bool drawEveryCar = IsDrawEveryCar(train, minTrainLengthM); + + foreach (var car in train.Cars) + DrawCar(g, train, car, locoCar, margin, minTrainPx, drawEveryCar); + + worldPos = locoCar.WorldPosition; + var scaledTrain = new PointF + { + X = ((worldPos.TileX * 2048) - subX + worldPos.Location.X) * xScale, + Y = -25 + mapCanvas.Height - (((worldPos.TileZ * 2048) - subY + worldPos.Location.Z) * yScale) + }; + if (showTrainLabelsCheckbox.Checked) + DrawTrainLabels(g, train, trainName, scaledTrain); + } + } + + private void DrawCar(Graphics g, Train train, TrainCar car, TrainCar locoCar, float margin, int minTrainPx, bool drawEveryCar) + { + if (drawEveryCar == false) + // Skip the intermediate cars + if (car != train.Cars.First() && car != train.Cars.Last()) + return; + + var t = new Traveller(train.RearTDBTraveller); + var worldPos = car.WorldPosition; + var dist = t.DistanceTo(worldPos.WorldLocation.TileX, worldPos.WorldLocation.TileZ, worldPos.WorldLocation.Location.X, worldPos.WorldLocation.Location.Y, worldPos.WorldLocation.Location.Z); + if (dist > -1) + { + var scaledTrain = new PointF(); + float x; + float y; + if (drawEveryCar) + { + t.Move(dist + (car.CarLengthM / 2)); // Move along from centre of car to front of car + x = ((t.TileX * 2048) + t.Location.X - subX) * xScale; + y = mapCanvas.Height - (((t.TileZ * 2048) + t.Location.Z - subY) * yScale); + + // If car out of view then skip it. + if (x < -margin || y < -margin) + return; + + t.Move(-car.CarLengthM + (2 / xScale)); // Move from front of car to rear less 1 pixel to create a visible gap // TODO: investigate `(1 / xScale)` ==> `(2 / xScale)` car gap consequences + scaledTrain.X = x; scaledTrain.Y = y; + } + else // Draw the train as 2 boxes of fixed size + { + trainPen.Width = minTrainPx / 2; + if (car == train.Cars.First()) + { + // Draw first half a train back from the front of the first car as abox + t.Move(dist + (car.CarLengthM / 2)); + x = ((t.TileX * 2048) + t.Location.X - subX) * xScale; + y = mapCanvas.Height - (((t.TileZ * 2048) + t.Location.Z - subY) * yScale); + + // If car out of view then skip it. + if (x < -margin || y < -margin) + return; + + t.Move(-(minTrainPx - 2) / xScale / 2); // Move from front of car to rear less 1 pixel to create a visible gap + } + else // car == t.Cars.Last() + { + // Draw half a train back from the rear of the first box + worldPos = train.Cars.First().WorldPosition; + dist = t.DistanceTo(worldPos.WorldLocation.TileX, worldPos.WorldLocation.TileZ, worldPos.WorldLocation.Location.X, worldPos.WorldLocation.Location.Y, worldPos.WorldLocation.Location.Z); + t.Move(dist + (train.Cars.First().CarLengthM / 2) - (minTrainPx / xScale / 2)); + x = ((t.TileX * 2048) + t.Location.X - subX) * xScale; + y = mapCanvas.Height - (((t.TileZ * 2048) + t.Location.Z - subY) * yScale); + if (x < -margin || y < -margin) + return; + t.Move(-minTrainPx / xScale / 2); + } + scaledTrain.X = x; scaledTrain.Y = y; + } + x = ((t.TileX * 2048) + t.Location.X - subX) * xScale; + y = mapCanvas.Height - (((t.TileZ * 2048) + t.Location.Z - subY) * yScale); + + // If car out of view then skip it. + if (x < -margin || y < -margin) + return; + + SetTrainColor(train, locoCar, car); + g.DrawLine(trainPen, new PointF(x, y), scaledTrain); + } + } + + private void SetTrainColor(Train t, TrainCar locoCar, TrainCar car) + { + // Draw train in green with locos in brown + // HSL values + // Saturation: 100/100 + // Hue: if loco then H=50/360 else H=120/360 + // Lightness: if active then L=40/100 else L=30/100 + // RGB values + // active loco: RGB 204,170,0 + // inactive loco: RGB 153,128,0 + // active car: RGB 0,204,0 + // inactive car: RGB 0,153,0 + trainPen.Color = MapDataProvider.IsActiveTrain(t as AITrain) + ? car is MSTSLocomotive + ? (car == locoCar) ? Color.FromArgb(204, 170, 0) : Color.FromArgb(153, 128, 0) + : Color.FromArgb(0, 204, 0) + : car is MSTSLocomotive ? Color.FromArgb(153, 128, 0) : Color.FromArgb(0, 153, 0); + + if (t.TrainType == Train.TRAINTYPE.STATIC || (t.TrainType == Train.TRAINTYPE.AI && t.GetAIMovementState() == AITrain.AI_MOVEMENT_STATE.AI_STATIC)) + { + trainPen.Color = car is MSTSLocomotive ? Color.FromArgb(19, 185, 160) : Color.FromArgb(83, 237, 214); + } + + // Draw player train with loco in red + if (t.TrainType == Train.TRAINTYPE.PLAYER && car == locoCar) + trainPen.Color = Color.Red; + } + + private void DrawTrainLabels(Graphics g, Train t, string trainName, PointF scaledTrain) + { + if (showActiveTrainsRadio.Checked) + { + if (t is AITrain && MapDataProvider.IsActiveTrain(t as AITrain)) + ShowTrainNameAndState(g, scaledTrain, t, trainName); + } + else + { + ShowTrainNameAndState(g, scaledTrain, t, trainName); + } + } + + private void ShowTrainNameAndState(Graphics g, PointF scaledItem, Train t, string trainName) + { + if (simulator.TimetableMode) + { + if (t is TTTrain tTTrain) + { + // Remove name of timetable, e.g.: ":SCE" + var lastPos = trainName.LastIndexOf(":"); + var shortName = (lastPos > 0) ? trainName.Substring(0, lastPos) : trainName; + + if (MapDataProvider.IsActiveTrain(tTTrain)) + { + if (showTrainStateCheckbox.Checked) + { + // 4:AI mode, 6:Mode, 7:Auth, 9:Signal, 12:Path + var status = tTTrain.GetStatus(Viewer.MilepostUnitsMetric); + + // Add in fields 4 and 7 + status = tTTrain.AddMovementState(status, Viewer.MilepostUnitsMetric); + + var statuses = $"{status[4]} {status[6]} {status[7]} {status[9]}"; + + // Add path if it contains any deadlock information + if (MapDataProvider.ContainsDeadlockIndicators(status[12])) + statuses += status[12]; + + g.DrawString($"{shortName} {statuses}", trainFont, trainBrush, scaledItem); + } + else + g.DrawString(shortName, trainFont, trainBrush, scaledItem); + } + else + g.DrawString(shortName, trainFont, InactiveTrainBrush, scaledItem); + } + } + else + g.DrawString(trainName, trainFont, trainBrush, scaledItem); + } + + private void ShowSwitches(Graphics g, float width) + { + if (!showSwitchesCheckbox.Checked) + return; + + for (var i = 0; i < switches.Count; i++) + { + SwitchWidget sw = switches[i]; + + var x = (sw.Location.X - subX) * xScale; + var y = mapCanvas.Height - ((sw.Location.Y - subY) * yScale); + if (x < 0 || y < 0) + continue; + + var scaledItem = new PointF() { X = x, Y = y }; + + if (sw.Item.TrJunctionNode.SelectedRoute == sw.main) + g.FillEllipse(new SolidBrush(Color.FromArgb(93, 64, 55)), GetRect(scaledItem, width)); + else + g.FillEllipse(new SolidBrush(Color.FromArgb(161, 136, 127)), GetRect(scaledItem, width)); + + sw.Location2D.X = scaledItem.X; sw.Location2D.Y = scaledItem.Y; + switchItemsDrawn.Add(sw); + } + } + + private void ShowSignals(Graphics g, PointF scaledB, float width) + { + if (!showSignalsCheckbox.Checked) + return; + + foreach (var s in signals) + { + if (float.IsNaN(s.Location.X) || float.IsNaN(s.Location.Y)) + continue; + var x = (s.Location.X - subX) * xScale; + var y = mapCanvas.Height - ((s.Location.Y - subY) * yScale); + if (x < 0 || y < 0) + continue; + + var scaledItem = new PointF() { X = x, Y = y }; + s.Location2D.X = scaledItem.X; s.Location2D.Y = scaledItem.Y; + if (s.Signal.isSignalNormal()) + { + var color = new SolidBrush(Color.FromArgb(76, 175, 80)); + var pen = greenPen; + if (s.IsProceed == 0) + { + } + else if (s.IsProceed == 1) + { + color = new SolidBrush(Color.FromArgb(255, 235, 59)); + pen = orangePen; + } + else + { + color = new SolidBrush(Color.FromArgb(244, 67, 54)); + pen = redPen; + } + g.FillEllipse(color, GetRect(scaledItem, width)); + signalItemsDrawn.Add(s); + if (s.hasDir) + { + scaledB.X = (s.Dir.X - subX) * xScale; scaledB.Y = mapCanvas.Height - ((s.Dir.Y - subY) * yScale); + g.DrawLine(pen, scaledItem, scaledB); + } + ShowSignalState(g, scaledItem, s); + } + } + } + + private void ShowSignalState(Graphics g, PointF scaledItem, SignalWidget sw) + { + if (!showSignalStateCheckbox.Checked) + return; + + var item = sw.Item as SignalItem; + var trainNumber = sw.Signal?.enabledTrain?.Train?.Number; + var trainString = (trainNumber == null) ? "" : $" train: {trainNumber}"; + var offset = 0; + var position = scaledItem; + foreach (var signalHead in sw.Signal.SignalHeads) + { + offset++; + position.X += offset * 10; + position.Y += offset * 15; + var text = $" {item?.SigObj} {signalHead.SignalTypeName} {signalHead.state} {trainString}"; + scaledItem.Y = MapDataProvider.GetUnusedYLocation(scaledItem.X, mapCanvas.Height - ((sw.Location.Y - subY) * yScale), text); + if (scaledItem.Y >= 0f) // -1 indicates no free slot to draw label + g.DrawString(text, SignalFont, SignalBrush, scaledItem); + } + + } + + private void ShowSidingLabels(Graphics g) + { + if (!showSidingLabelsCheckbox.Checked) + return; + + foreach (var s in sidings) + { + var scaledItem = new PointF(); + + scaledItem.X = (s.Location.X - subX) * xScale; + scaledItem.Y = MapDataProvider.GetUnusedYLocation(scaledItem.X, mapCanvas.Height - ((s.Location.Y - subY) * yScale), s.Name); + if (scaledItem.Y >= 0f) // -1 indicates no free slot to draw label + g.DrawString(s.Name, sidingFont, sidingBrush, scaledItem); + } + } + + private void ShowPlatformLabels(Graphics g) + { + var platformMarginPxX = 5; + + if (!showPlatformLabelsCheckbox.Checked) + return; + + foreach (var p in platforms) + { + var scaledItem = new PointF(); + scaledItem.X = ((p.Location.X - subX) * xScale) + platformMarginPxX; + var yPixels = mapCanvas.Height - ((p.Location.Y - subY) * yScale); + + // If track is close to horizontal, then start label search 1 row down to minimise overwriting platform line. + if (p.Extent1.X != p.Extent2.X + && Math.Abs((p.Extent1.Y - p.Extent2.Y) / (p.Extent1.X - p.Extent2.X)) < 0.1) + yPixels += spacing; + + scaledItem.Y = MapDataProvider.GetUnusedYLocation(scaledItem.X, mapCanvas.Height - ((p.Location.Y - subY) * yScale), p.Name); + if (scaledItem.Y >= 0f) // -1 indicates no free slot to draw label + g.DrawString(p.Name, PlatformFont, PlatformBrush, scaledItem); + } + } + + /// + /// If the train is long enough then draw every car else just draw it as one or two blocks + /// + /// + /// + /// + private bool IsDrawEveryCar(Train train, float minTrainLengthM) + { + float trainLengthM = 0f; + foreach (var car in train.Cars) + { + trainLengthM += car.CarLengthM; + if (trainLengthM > minTrainLengthM) + { + return true; + } + } + return false; + } + + /// + /// Indicates the location around which the image is zoomed. + /// If user drags an item of interest into this target box and zooms in, the item will remain in view. + /// + /// + private void DrawZoomTarget(Graphics g) + { + if (!Dragging) + return; + + const int size = 24; + var top = (mapCanvas.Height / 2) - (size / 2); + var left = (mapCanvas.Width / 2) - (size / 2); + g.DrawRectangle(ZoomTargetPen, left, top, size, size); + + } + + public Vector2[][] alignedTextY; + public int[] alignedTextNum; + public const int spacing = 12; // TODO: Rename to clarify the meaning of this variable + + const float SignalErrorDistance = 100; + const float SignalWarningDistance = 500; + const float DisplayDistance = 1000; + const float DisplaySegmentLength = 10; + const float MaximumSectionDistance = 10000; + + readonly Dictionary Cache = new Dictionary(); + SignallingDebugWindow.TrackSectionCacheEntry GetCacheEntry(Traveller position) + { + SignallingDebugWindow.TrackSectionCacheEntry rv; + if (Cache.TryGetValue(position.TrackNodeIndex, out rv) && (rv.Direction == position.Direction)) + return rv; + Cache[position.TrackNodeIndex] = rv = new SignallingDebugWindow.TrackSectionCacheEntry() + { + Direction = position.Direction, + Length = 0, + Objects = new List(), + }; + var nodeIndex = position.TrackNodeIndex; + var trackNode = new Traveller(position); + while (true) + { + rv.Length += MaximumSectionDistance - trackNode.MoveInSection(MaximumSectionDistance); + if (!trackNode.NextSection()) + break; + if (trackNode.IsEnd) + rv.Objects.Add(new SignallingDebugWindow.TrackSectionEndOfLine() { Distance = rv.Length }); + else if (trackNode.IsJunction) + rv.Objects.Add(new SignallingDebugWindow.TrackSectionSwitch() { Distance = rv.Length, TrackNode = trackNode.TN, NodeIndex = nodeIndex }); + else + rv.Objects.Add(new SignallingDebugWindow.TrackSectionObject() { Distance = rv.Length }); // Always have an object at the end. + if (trackNode.TrackNodeIndex != nodeIndex) + break; + } + trackNode = new Traveller(position); + + rv.Objects = rv.Objects.OrderBy(tso => tso.Distance).ToList(); + return rv; + } + + // Draw the train path if it is within the window + public void DrawTrainPath(Train train, float subX, float subY, Pen pathPen, Graphics g, PointF scaledA, PointF scaledB, float stepDist, float MaximumSectionDistance) + { + if (DrawPath != true) return; + bool ok = false; + if (train == Program.Simulator.PlayerLocomotive.Train) ok = true; + if (MPManager.IsMultiPlayer()) + { + if (MPManager.OnlineTrains.findTrain(train)) + ok = true; + } + if (train.FirstCar != null & train.FirstCar.CarID.Contains("AI")) // AI train + ok = true; + if (Math.Abs(train.SpeedMpS) > 0.001) + ok = true; + + if (ok == false) return; + + var DisplayDistance = MaximumSectionDistance; + var position = train.MUDirection != Direction.Reverse ? new Traveller(train.FrontTDBTraveller) : new Traveller(train.RearTDBTraveller, Traveller.TravellerDirection.Backward); + var caches = new List(); + // Work backwards until we end up on a different track section. + var cacheNode = new Traveller(position); + cacheNode.ReverseDirection(); + var initialNodeOffsetCount = 0; + while (cacheNode.TrackNodeIndex == position.TrackNodeIndex && cacheNode.NextSection()) + initialNodeOffsetCount++; + // Now do it again, but don't go the last track section (because it is from a different track node). + cacheNode = new Traveller(position); + cacheNode.ReverseDirection(); + for (var i = 1; i < initialNodeOffsetCount; i++) + cacheNode.NextSection(); + // Push the location right up to the end of the section. + cacheNode.MoveInSection(MaximumSectionDistance); + // Now back facing the right way, calculate the distance to the train location. + cacheNode.ReverseDirection(); + var initialNodeOffset = cacheNode.DistanceTo(position.TileX, position.TileZ, position.X, position.Y, position.Z); + // Go and collect all the cache entries for the visible range of vector nodes (straights, curves). + var totalDistance = 0f; + while (!cacheNode.IsEnd && totalDistance - initialNodeOffset < DisplayDistance) + { + if (cacheNode.IsTrack) + { + var cache = GetCacheEntry(cacheNode); + cache.Age = 0; + caches.Add(cache); + totalDistance += cache.Length; + } + var nodeIndex = cacheNode.TrackNodeIndex; + while (cacheNode.TrackNodeIndex == nodeIndex && cacheNode.NextSection()) ; + } + + var switchErrorDistance = initialNodeOffset + DisplayDistance + SignalWarningDistance; + var signalErrorDistance = initialNodeOffset + DisplayDistance + SignalWarningDistance; + var currentDistance = 0f; + foreach (var cache in caches) + { + foreach (var obj in cache.Objects) + { + var objDistance = currentDistance + obj.Distance; + if (objDistance < initialNodeOffset) + continue; + + if (obj is SignallingDebugWindow.TrackSectionSwitch switchObj) + { + for (var pin = switchObj.TrackNode.Inpins; pin < switchObj.TrackNode.Inpins + switchObj.TrackNode.Outpins; pin++) + { + if (switchObj.TrackNode.TrPins[pin].Link == switchObj.NodeIndex) + { + if (pin - switchObj.TrackNode.Inpins != switchObj.TrackNode.TrJunctionNode.SelectedRoute) + switchErrorDistance = objDistance; + break; + } + } + if (switchErrorDistance < DisplayDistance) + break; + } + + } + if (switchErrorDistance < DisplayDistance || signalErrorDistance < DisplayDistance) + break; + currentDistance += cache.Length; + } + + var currentPosition = new Traveller(position); + currentPosition.Move(-initialNodeOffset); + currentDistance = 0; + + foreach (var cache in caches) + { + var lastObjDistance = 0f; + foreach (var obj in cache.Objects) + { + var objDistance = currentDistance + obj.Distance; + + for (var step = lastObjDistance; step < obj.Distance; step += DisplaySegmentLength) + { + var stepDistance = currentDistance + step; + var stepLength = DisplaySegmentLength > obj.Distance - step ? obj.Distance - step : DisplaySegmentLength; + var previousLocation = currentPosition.WorldLocation; + currentPosition.Move(stepLength); + if (stepDistance + stepLength >= initialNodeOffset && stepDistance <= initialNodeOffset + DisplayDistance) + { + var currentLocation = currentPosition.WorldLocation; + scaledA.X = (float)(((previousLocation.TileX * WorldLocation.TileSize) + previousLocation.Location.X - subX) * xScale); + scaledA.Y = (float)(mapCanvas.Height - (((previousLocation.TileZ * WorldLocation.TileSize) + previousLocation.Location.Z - subY) * yScale)); + scaledB.X = (float)(((currentLocation.TileX * WorldLocation.TileSize) + currentLocation.Location.X - subX) * xScale); + scaledB.Y = (float)(mapCanvas.Height - (((currentPosition.TileZ * WorldLocation.TileSize) + currentPosition.Location.Z - subY) * yScale)); g.DrawLine(pathPen, scaledA, scaledB); + } + } + lastObjDistance = obj.Distance; + + if (objDistance >= switchErrorDistance) + break; + } + currentDistance += cache.Length; + if (currentDistance >= switchErrorDistance) + break; + + } + + currentPosition = new Traveller(position); + currentPosition.Move(-initialNodeOffset); + currentDistance = 0; + foreach (var cache in caches) + { + var lastObjDistance = 0f; + foreach (var obj in cache.Objects) + { + currentPosition.Move(obj.Distance - lastObjDistance); + lastObjDistance = obj.Distance; + + var objDistance = currentDistance + obj.Distance; + if (objDistance < initialNodeOffset || objDistance > initialNodeOffset + DisplayDistance) + continue; + + if (obj is SignallingDebugWindow.TrackSectionSwitch switchObj) + { + for (var pin = switchObj.TrackNode.Inpins; pin < switchObj.TrackNode.Inpins + switchObj.TrackNode.Outpins; pin++) + { + if (switchObj.TrackNode.TrPins[pin].Link == switchObj.NodeIndex && pin - switchObj.TrackNode.Inpins != switchObj.TrackNode.TrJunctionNode.SelectedRoute) + { + foreach (var sw in switchItemsDrawn) + { + if (sw.Item.TrJunctionNode == switchObj.TrackNode.TrJunctionNode) + { + var r = 6 * greenPen.Width; + g.DrawLine(pathPen, new PointF(sw.Location2D.X - r, sw.Location2D.Y - r), new PointF(sw.Location2D.X + r, sw.Location2D.Y + r)); + g.DrawLine(pathPen, new PointF(sw.Location2D.X - r, sw.Location2D.Y + r), new PointF(sw.Location2D.X + r, sw.Location2D.Y - r)); + break; + } + } + } + } + } + + if (objDistance >= switchErrorDistance) + break; + } + currentDistance += cache.Length; + if (currentDistance >= switchErrorDistance) + break; + } + // Clean up any cache entries who haven't been using for 30 seconds. + var oldCaches = Cache.Where(kvp => kvp.Value.Age > 30 * 4).ToArray(); + foreach (var oldCache in oldCaches) + Cache.Remove(oldCache.Key); + + } + #endregion + + #region themes + private void ApplyThemeRecursively(System.Windows.Forms.Control parent) + { + foreach (System.Windows.Forms.Control c in parent.Controls) + { + if (c is Button button && c?.Tag?.ToString() != "mapCustomization") + { + Button b = button; + b.BackColor = Theme.BackColor; + b.ForeColor = Theme.ForeColor; + b.FlatStyle = Theme.FlatStyle; + } + else if (c is GroupBox || c is Panel) + { + c.BackColor = Theme.PanelBackColor; + c.ForeColor = Theme.ForeColor; + } + else + { + c.BackColor = Theme.PanelBackColor; + c.ForeColor = Theme.ForeColor; + } + + ApplyThemeRecursively(c); + } + } + #endregion + + /// + /// Generates a rectangle representing a dot being drawn. + /// + /// Center point of the dot, in pixels. + /// Size of the dot's diameter, in pixels + /// + public static RectangleF GetRect(PointF p, float size) + { + return new RectangleF(p.X - (size / 2f), p.Y - (size / 2f), size, size); + } + + /// + /// Generates line segments from an array of TrVectorSection. Also computes + /// the bounds of the entire route being drawn. + /// + /// + /// + /// + /// + /// + /// + /// + private static void AddSegments(List segments, TrackNode node, TrVectorSection[] items, ref float minX, ref float minY, ref float maxX, ref float maxY, Simulator simulator) + { + + bool occupied = false; + + double tempX1, tempX2, tempZ1, tempZ2; + + for (int i = 0; i < items.Length - 1; i++) + { + dVector A = new dVector(items[i].TileX, items[i].X, items[i].TileZ, items[i].Z); + dVector B = new dVector(items[i + 1].TileX, items[i + 1].X, items[i + 1].TileZ, items[i + 1].Z); + + tempX1 = (A.TileX * 2048) + A.X; tempX2 = (B.TileX * 2048) + B.X; + tempZ1 = (A.TileZ * 2048) + A.Z; tempZ2 = (B.TileZ * 2048) + B.Z; + CalcBounds(ref maxX, tempX1, true); + CalcBounds(ref maxY, tempZ1, true); + CalcBounds(ref maxX, tempX2, true); + CalcBounds(ref maxY, tempZ2, true); + + CalcBounds(ref minX, tempX1, false); + CalcBounds(ref minY, tempZ1, false); + CalcBounds(ref minX, tempX2, false); + CalcBounds(ref minY, tempZ2, false); + + segments.Add(new LineSegment(A, B, occupied, items[i])); + } + } + + /// + /// Given a value representing a limit, evaluate if the given value exceeds the current limit. + /// If so, expand the limit. + /// + /// The current limit. + /// The value to compare the limit to. + /// True when comparison is greater-than. False if less-than. + private static void CalcBounds(ref float limit, double v, bool gt) + { + float value = (float)v; + if (gt) + { + if (value > limit) + { + limit = value; + } + } + else + { + if (value < limit) + { + limit = value; + } + } + } + + void UITimer_Tick(object sender, EventArgs e) + { + if (Viewer.MapViewerEnabled == false) // Ctrl+9 sets this true to initialise the window and make it visible + { + Visible = false; + return; + } + Visible = true; + + if (Program.Simulator.GameTime - lastUpdateTime < 1) + return; + + lastUpdateTime = Program.Simulator.GameTime; + + GenerateView(); + } + + private void allowJoiningCheckbox_CheckedChanged(object sender, EventArgs e) + { + MPManager.Instance().AllowNewPlayer = allowJoiningCheckbox.Checked; + } + + private void drawPathCheckbox_CheckedChanged(object sender, EventArgs e) + { + DrawPath = drawPathCheckbox.Checked; + } + + private void mapResolutionUpDown_ValueChanged(object sender, EventArgs e) + { + // Center point of the map viewport before the change in resolution + PointF center = new PointF(ViewWindow.X + (ViewWindow.Width / 2f), ViewWindow.Y + (ViewWindow.Height / 2f)); + + float newSizeH = (float)mapResolutionUpDown.Value; + float verticalByHorizontal = ViewWindow.Height / ViewWindow.Width; + float newSizeV = newSizeH * verticalByHorizontal; + + ViewWindow = new RectangleF(center.X - (newSizeH / 2f), center.Y - (newSizeV / 2f), newSizeH, newSizeV); + + GenerateView(); + } + + private float ScrollSpeedX + { + get + { + return ViewWindow.Width * 0.10f; + } + } + + private float ScrollSpeedY + { + get + { + return ViewWindow.Width * 0.10f; + } + } + + protected override void OnMouseWheel(MouseEventArgs e) + { + decimal tempValue = mapResolutionUpDown.Value; + if (e.Delta < 0) tempValue /= 0.95m; + else if (e.Delta > 0) tempValue *= 0.95m; + else return; + + if (tempValue < mapResolutionUpDown.Minimum) tempValue = mapResolutionUpDown.Minimum; + if (tempValue > mapResolutionUpDown.Maximum) tempValue = mapResolutionUpDown.Maximum; + mapResolutionUpDown.Value = tempValue; + } + + private bool Zooming; + private bool LeftClick; + private bool RightClick; + + private void mapCanvas_MouseDown(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) LeftClick = true; + if (e.Button == MouseButtons.Right) RightClick = true; + + if (LeftClick == true && RightClick == false) + { + if (Dragging == false) + { + Dragging = true; + FollowTrain = false; + Cursor.Current = Cursors.NoMove2D; + } + } + else if (LeftClick == true && RightClick == true) + { + if (Zooming == false) Zooming = true; + } + LastCursorPosition.X = e.X; + LastCursorPosition.Y = e.Y; + MPManager.Instance().ComposingText = false; + } + + private void mapCanvas_MouseUp(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) LeftClick = false; + if (e.Button == MouseButtons.Right) RightClick = false; + + if (LeftClick == false) + { + Dragging = false; + Zooming = false; + } + + if ((ModifierKeys & Keys.Shift) == Keys.Shift) + { + CanvasMoveAndZoomInOut(e.X, e.Y, 1200); + } + else if ((ModifierKeys & Keys.Alt) == Keys.Alt) + { + CanvasMoveAndZoomInOut(e.X, e.Y, 30000); + } + else if ((ModifierKeys & Keys.Control) == Keys.Control) + { + CanvasMoveAndZoomInOut(e.X, e.Y, mapResolutionUpDown.Maximum); + } + else if (LeftClick == false) + { + if (LastCursorPosition.X == e.X && LastCursorPosition.Y == e.Y) + { + var range = 5 * (int)xScale; if (range > 10) range = 10; + var temp = findItemFromMouse(e.X, e.Y, range); + if (temp != null) + { + if (temp is SwitchWidget widget) + { + switchPickedItem = widget; + signalPickedItem = null; + trainPickedItem = null; + HandlePickedSwitch(); + } + if (temp is SignalWidget widget1) + { + signalPickedItem = widget1; + switchPickedItem = null; + trainPickedItem = null; + HandlePickedSignal(); + } + if (temp is TrainWidget widget2) + { + trainPickedItem = widget2; + signalPickedItem = null; + switchPickedItem = null; + HandlePickedTrain(); + } + } + else + { + switchPickedItem = null; + signalPickedItem = null; + UnHandleItemPick(); + PickedTrain = null; + } + } + + } + } + + private void UnHandleItemPick() + { + setSignalMenu.Visible = false; + setSwitchMenu.Visible = false; + } + + private void HandlePickedSignal() + { + if (MPManager.IsClient() && !MPManager.Instance().AmAider) // Normal client (not server nor aider) + return; + + setSwitchMenu.Visible = false; + if (signalPickedItem == null) return; + + allowCallOnToolStripMenuItem.Enabled = false; + if (signalPickedItem.Signal.enabledTrain != null && signalPickedItem.Signal.CallOnEnabled && !signalPickedItem.Signal.CallOnManuallyAllowed) + allowCallOnToolStripMenuItem.Enabled = true; + + setSignalMenu.Show(Cursor.Position); + setSignalMenu.Enabled = true; + setSignalMenu.Focus(); + setSignalMenu.Visible = true; + return; + } + + private void HandlePickedSwitch() + { + if (MPManager.IsClient() && !MPManager.Instance().AmAider) // Normal client (not server nor aider) + return; + + setSignalMenu.Visible = false; + if (switchPickedItem == null) return; + setSwitchMenu.Show(Cursor.Position); + setSwitchMenu.Enabled = true; + setSwitchMenu.Focus(); + setSwitchMenu.Visible = true; + return; + } + + private void HandlePickedTrain() + { + trainActionsMenu.Visible = false; + if (trainPickedItem == null) return; + PickedTrain = trainPickedItem.Train; + trainActionsMenu.Show(Cursor.Position); + trainActionsMenu.Enabled = true; + trainActionsMenu.Focus(); + trainActionsMenu.Visible = true; + return; + } + + private void setSignalMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + if (signalPickedItem == null) + { + UnHandleItemPick(); + return; + } + + var signal = signalPickedItem.Signal; + var type = e.ClickedItem.Tag.ToString(); + + string[] signalAspects = { "system", "stop", "approach", "proceed", "callOn" }; + int numericSignalAspect = Array.IndexOf(signalAspects, type); + + if (MPManager.Instance().AmAider) + { + MPManager.Notify(new MSGSignalChange(signal, numericSignalAspect).ToString()); + UnHandleItemPick(); + return; + } + + switch (type) + { + case "system": + signal.ClearHoldSignalDispatcher(); + break; + + case "stop": + signal.RequestHoldSignalDispatcher(true); + break; + + case "approach": + signal.RequestApproachAspect(); + break; + + case "proceed": + signal.RequestLeastRestrictiveAspect(); + break; + + case "callOn": + signal.SetManualCallOn(true); + break; + } + + UnHandleItemPick(); + } + + private void setSwitchMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + if (switchPickedItem == null) + { + UnHandleItemPick(); return; + } + var sw = switchPickedItem.Item.TrJunctionNode; + var type = e.ClickedItem.Tag.ToString(); + + // Aider can send message to the server for a switch + if (MPManager.IsMultiPlayer() && MPManager.Instance().AmAider) + { + var nextSwitchTrack = sw; + var Selected = 0; + switch (type) + { + case "mainRoute": + Selected = (int)switchPickedItem.main; + break; + case "sideRoute": + Selected = 1 - (int)switchPickedItem.main; + break; + } + // Aider selects and throws the switch, but need to confirm by the dispatcher + MPManager.Notify(new MSGSwitch(MPManager.GetUserName(), + nextSwitchTrack.TN.UiD.WorldTileX, nextSwitchTrack.TN.UiD.WorldTileZ, nextSwitchTrack.TN.UiD.WorldId, Selected, true).ToString()); + Program.Simulator.Confirmer.Information(Viewer.Catalog.GetString("Switching Request Sent to the Server")); + + } + else // Server throws the switch immediately + { + switch (type) + { + case "mainRoute": + Program.Simulator.Signals.RequestSetSwitch(sw.TN, (int)switchPickedItem.main); + break; + case "sideRoute": + Program.Simulator.Signals.RequestSetSwitch(sw.TN, 1 - (int)switchPickedItem.main); + break; + } + } + UnHandleItemPick(); + } + + private ItemWidget findItemFromMouse(int x, int y, int range) + { + if (range < 5) range = 5; + double closest = float.NaN; + ItemWidget closestItem = null; + if (allowThrowingSwitchesCheckbox.Checked == true) + { + foreach (var item in switchItemsDrawn) + { + // If out of range, continue + if (item.Location2D.X < x - range || item.Location2D.X > x + range + || item.Location2D.Y < y - range || item.Location2D.Y > y + range) + continue; + + if (closestItem != null) + { + var dist = Math.Pow(item.Location2D.X - closestItem.Location2D.X, 2) + Math.Pow(item.Location2D.Y - closestItem.Location2D.Y, 2); + if (dist < closest) + { + closest = dist; closestItem = item; + } + } + else closestItem = item; + } + if (closestItem != null) + { + switchPickedTime = simulator.GameTime; + return closestItem; + } + } + if (allowChangingSignalsCheckbox.Checked == true) + { + foreach (var item in signalItemsDrawn) + { + // If out of range, continue + if (item.Location2D.X < x - range || item.Location2D.X > x + range + || item.Location2D.Y < y - range || item.Location2D.Y > y + range) + continue; + + if (closestItem != null) + { + var dist = Math.Pow(item.Location2D.X - closestItem.Location2D.X, 2) + Math.Pow(item.Location2D.Y - closestItem.Location2D.Y, 2); + if (dist < closest) + { + closest = dist; closestItem = item; + } + } + else closestItem = item; + } + if (closestItem != null) + { + switchPickedTime = simulator.GameTime; + return closestItem; + } + } + + // Now check for trains (first car only) + TrainCar firstCar; + PickedTrain = null; float tX, tY; + closest = 100f; + + foreach (var t in Program.Simulator.Trains) + { + firstCar = null; + if (t.LeadLocomotive != null) + { + worldPos = t.LeadLocomotive.WorldPosition; + firstCar = t.LeadLocomotive; + } + else if (t.Cars != null && t.Cars.Count > 0) + { + worldPos = t.Cars[0].WorldPosition; + firstCar = t.Cars[0]; + + } + else + continue; + + worldPos = firstCar.WorldPosition; + tX = ((worldPos.TileX * 2048) - subX + worldPos.Location.X) * xScale; + tY = mapCanvas.Height - (((worldPos.TileZ * 2048) - subY + worldPos.Location.Z) * yScale); + float xSpeedCorr = Math.Abs(t.SpeedMpS) * xScale * 1.5f; + float ySpeedCorr = Math.Abs(t.SpeedMpS) * yScale * 1.5f; + + if (tX < x - range - xSpeedCorr || tX > x + range + xSpeedCorr || tY < y - range - ySpeedCorr || tY > y + range + ySpeedCorr) + continue; + if (PickedTrain == null) + PickedTrain = t; + } + // If a train is picked, will clear the player list selection + if (PickedTrain != null) + { + //AvatarView.SelectedItems.Clear(); + return new TrainWidget(PickedTrain); + } + return null; + } + + // TODO: Use this function to show additional data about hovered train + private ItemWidget searchForTrainOnMouseMove(int x, int y, int range) + { + if (range < 5) range = 5; + Train hoveredTrain = null; + TrainCar firstCar; + float tX, tY; + + foreach (var t in Program.Simulator.Trains) + { + firstCar = null; + if (t.LeadLocomotive != null) + { + worldPos = t.LeadLocomotive.WorldPosition; + firstCar = t.LeadLocomotive; + } + else if (t.Cars != null && t.Cars.Count > 0) + { + worldPos = t.Cars[0].WorldPosition; + firstCar = t.Cars[0]; + } + else + { + continue; + } + + worldPos = firstCar.WorldPosition; + tX = ((worldPos.TileX * 2048) - subX + worldPos.Location.X) * xScale; + tY = mapCanvas.Height - (((worldPos.TileZ * 2048) - subY + worldPos.Location.Z) * yScale); + float xSpeedCorr = Math.Abs(t.SpeedMpS) * xScale * 1.5f; + float ySpeedCorr = Math.Abs(t.SpeedMpS) * yScale * 1.5f; + + if (tX < x - range - xSpeedCorr || tX > x + range + xSpeedCorr || tY < y - range - ySpeedCorr || tY > y + range + ySpeedCorr) + continue; + + if (hoveredTrain == null) + hoveredTrain = t; + } + + return hoveredTrain != null ? new TrainWidget(hoveredTrain) : null; + } + + private void mapCanvas_MouseMove(object sender, MouseEventArgs e) + { + if (Dragging && !Zooming) + { + int diffX = LastCursorPosition.X - e.X; + int diffY = LastCursorPosition.Y - e.Y; + + ViewWindow.Offset(diffX * ScrollSpeedX / 10, -diffY * ScrollSpeedY / 10); + GenerateView(); + } + else if (Zooming) + { + decimal tempValue = mapResolutionUpDown.Value; + if (LastCursorPosition.Y - e.Y < 0) tempValue /= 0.95m; + else if (LastCursorPosition.Y - e.Y > 0) tempValue *= 0.95m; + + if (tempValue < mapResolutionUpDown.Minimum) tempValue = mapResolutionUpDown.Minimum; + if (tempValue > mapResolutionUpDown.Maximum) tempValue = mapResolutionUpDown.Maximum; + mapResolutionUpDown.Value = tempValue; + GenerateView(); + } + LastCursorPosition.X = e.X; + LastCursorPosition.Y = e.Y; + } + + private void CanvasMoveAndZoomInOut(int x, int y, decimal scale) + { + int diffX = x - (mapCanvas.Width / 2); + int diffY = y - (mapCanvas.Height / 2); + ViewWindow.Offset(diffX / xScale, -diffY / yScale); + if (scale < mapResolutionUpDown.Minimum) scale = mapResolutionUpDown.Minimum; + if (scale > mapResolutionUpDown.Maximum) scale = mapResolutionUpDown.Maximum; + mapResolutionUpDown.Value = scale; + GenerateView(); + } + + private void playerRoleLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + Process.Start("https://open-rails.readthedocs.io/en/latest/multiplayer.html#in-game-controls"); + } + + private void mapCustomizationButton_Click(object sender, EventArgs e) + { + MapCustomizationVisible = !MapCustomizationVisible; + mapCustomizationPanel.Visible = MapCustomizationVisible; + + if (MapCustomizationVisible == true) + { + mapCustomizationButton.BackColor = Color.FromArgb(214, 234, 248); + mapCustomizationButton.ForeColor = Color.FromArgb(40, 116, 166); + } + else + { + mapCustomizationButton.BackColor = SystemColors.Control; + mapCustomizationButton.ForeColor = SystemColors.ControlText; + } + } + + private void playersView_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button != MouseButtons.Right || playersView.FocusedItem == null || playersView.SelectedItems.Count != 1) return; + + var focusedItem = playersView.FocusedItem; + var player = TrimBracketsFromEnd(focusedItem.Text); + + if (focusedItem.Bounds.Contains(e.Location) && player != MPManager.GetUserName()) + { + makeThisPlayerAnAssistantToolStripMenuItem.Text = MPManager.Instance().aiderList.Contains(player) ? Viewer.Catalog.GetString("Demote this player") : Viewer.Catalog.GetString("Make this player an assistant"); + var isDisconnected = MPManager.Instance().lostPlayer.ContainsKey(player); + makeThisPlayerAnAssistantToolStripMenuItem.Enabled = !isDisconnected; + jumpToThisPlayerInGameToolStripMenuItem.Enabled = !isDisconnected; + followToolStripMenuItem.Enabled = !isDisconnected; + // TODO: Figure out a way to allow removing disconnected players + + playerActionsMenu.Show(Cursor.Position); + playerToolStripMenuItem.Text = player; + } + + } + + public bool ClickedTrain; + private void seeTrainInGameButton_Click(object sender, EventArgs e) + { + PickedTrain = Program.Simulator.PlayerLocomotive.Train; + ClickedTrain = true; + } + + private void centerOnMyTrainButton_Click(object sender, EventArgs e) + { + PickedTrain = Program.Simulator.PlayerLocomotive.Train; + FollowTrain = false; + FirstShow = true; + GenerateView(); + } + + private void penaltyCheckbox_CheckedChanged(object sender, EventArgs e) + { + MPManager.Instance().CheckSpad = penaltyCheckbox.Checked; + if (penaltyCheckbox.Checked == false) { MPManager.BroadCast(new MSGMessage("All", "OverSpeedOK", "OK to go overspeed and pass stop light").ToString()); } + else { MPManager.BroadCast(new MSGMessage("All", "NoOverSpeed", "Penalty for overspeed and passing stop light").ToString()); } + } + + private void MapViewer_Resize(object sender, EventArgs e) + { + InitializeImage(); + } + + private void rotateThemesButton_Click(object sender, EventArgs e) + { + // Cycles through the array of available themes + string[] themes = MapThemeProvider.GetThemes(); + int i = Array.IndexOf(themes, ThemeName); + ThemeName = i >= 0 && i < themes.Length - 1 ? themes[i + 1] : themes[0]; + + Theme = MapThemeProvider.GetTheme(ThemeName); + + ApplyThemeRecursively(this); + MapCanvasColor = Theme.MapCanvasColor; + TrackPen.Color = Theme.TrackColor; + InitializeImage(); + } + + private void playerActionsMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + var type = e.ClickedItem.Tag.ToString(); + var player = playerToolStripMenuItem.Text; + + switch (type) + { + case "assistant": + if (!MPManager.OnlineTrains.Players.ContainsKey(player)) break; + + if (MPManager.Instance().aiderList.Contains(player)) + { + // Selected player is already an assistant, so the intent is to demote them + MPManager.BroadCast(new MSGAider(player, false).ToString()); + MPManager.Instance().aiderList.Remove(player); + } + else + { + // Promote player to be an assistant + MPManager.BroadCast(new MSGAider(player, true).ToString()); + MPManager.Instance().aiderList.Add(player); + } + + break; + + case "seeInGame": + MPManager.OnlineTrains.Players.TryGetValue(player, out OnlinePlayer p); + PickedTrain = p?.Train; + ClickedTrain = true; + break; + + case "followOnMap": + MPManager.OnlineTrains.Players.TryGetValue(player, out OnlinePlayer p1); + PickedTrain = p1?.Train; + FollowTrain = true; + break; + + case "kick": + if (!MPManager.IsServer() || !MPManager.OnlineTrains.Players.ContainsKey(player)) return; + + MPManager.OnlineTrains.Players[player].status = OnlinePlayer.Status.Removed; + MPManager.BroadCast(new MSGMessage(player, "Error", "Sorry the server has removed you").ToString()); + + break; + } + } + + private void followMyTrainOnMap_Click(object sender, EventArgs e) + { + PickedTrain = Program.Simulator.PlayerLocomotive.Train; + FollowTrain = true; + } + + private void trainActionsMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + var type = e.ClickedItem.Tag.ToString(); + + switch (type) + { + case "seeInGame": + ClickedTrain = true; + break; + + case "followOnMap": + FollowTrain = true; + break; + } + } + + private void preferGreenCheckbox_CheckedChanged(object sender, EventArgs e) + { + MPManager.PreferGreen = preferGreenCheckbox.Checked; + } + + public bool AddNewMessage(double _, string msg) + { + if (messages.Items.Count > 30) messages.Items.RemoveAt(0); + + messages.Items.Add(msg); + messages.SelectedIndex = messages.Items.Count - 1; + messages.SelectedIndex = -1; + + return true; + } + + private void messageAllButton_Click(object sender, EventArgs e) + { + if (!MPManager.IsMultiPlayer()) return; + + var message = messageInput.Text; + message = message.Replace("\r", ""); + message = message.Replace("\t", ""); + MPManager.Instance().ComposingText = false; + + if (message == "") return; + + if (MPManager.IsServer()) + { + var users = MPManager.OnlineTrains.Players.Keys + .Select((string u) => $"{u}\r"); + string user = string.Join("", users) + "0END"; + string msgText = new MSGText(MPManager.GetUserName(), user, message).ToString(); + try + { + MPManager.Notify(msgText); + } + catch { } + finally + { + messageInput.Text = ""; + } + } + else + { + var user = "0Server\r+0END"; + MPManager.Notify(new MSGText(MPManager.GetUserName(), user, message).ToString()); + messageInput.Text = ""; + } + } + + private void messageInput_Enter(object sender, EventArgs e) + { + MPManager.Instance().ComposingText = true; + } + + private void messageInput_Leave(object sender, EventArgs e) + { + MPManager.Instance().ComposingText = false; + } + + private void moreReplyOptionsButton_Click(object sender, EventArgs e) + { + messageActionsMenu.Show(Cursor.Position); + messageActionsMenu.Enabled = true; + messageActionsMenu.Focus(); + messageActionsMenu.Visible = true; + } + + private void messageActionsMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + var type = e.ClickedItem.Tag.ToString(); + + switch (type) + { + case "message": + if (!MPManager.IsMultiPlayer()) return; + + var message = messageInput.Text; + messageInput.Text = ""; + message = message.Replace("\r", ""); + message = message.Replace("\t", ""); + if (message == "") return; + var users = ""; + + if (playersView.SelectedItems.Count > 0) + { + var chosen = playersView.SelectedItems; + for (var i = 0; i < chosen.Count; i++) + { + var name = TrimBracketsFromEnd(chosen[i].Text); + if (name == MPManager.GetUserName()) + continue; + users += name + "\r"; + } + users += "0END"; + } + else { return; } + + MPManager.Notify(new MSGText(MPManager.GetUserName(), users, message).ToString()); + break; + + case "reply": + if (!MPManager.IsMultiPlayer()) return; + + var message1 = messageInput.Text; + message1 = message1.Replace("\r", ""); + message1 = message1.Replace("\t", ""); + MPManager.Instance().ComposingText = false; + messageInput.Text = ""; + if (message1 == "") return; + var users1 = ""; + + if (messages.SelectedItems.Count > 0) + { + var chosen = messages.SelectedItems; + for (var i = 0; i < chosen.Count; i++) + { + var tmp = (string)chosen[i]; + var index = tmp.IndexOf(':'); + if (index < 0) continue; + tmp = tmp.Substring(0, index) + "\r"; + if (users1.Contains(tmp)) continue; + users1 += tmp; + } + users1 += "0END"; + } + else { return; } + + MPManager.Notify(new MSGText(MPManager.GetUserName(), users1, message1).ToString()); + break; + } + } + + private void MapViewer_FormClosing(object sender, FormClosingEventArgs e) + { + // Prevent the window from closing; instead, hide it + e.Cancel = true; + Viewer.MapViewerEnabled = false; + } + } + + #region SignalWidget + /// + /// Defines a signal being drawn in a 2D view. + /// + public class SignalWidget : ItemWidget + { + public TrItem Item; + /// + /// The underlying signal object as referenced by the TrItem. + /// + public SignalObject Signal; + + public PointF Dir; + public bool hasDir; + /// + /// For now, returns true if any of the signal heads shows any "clear" aspect. + /// This obviously needs some refinement. + /// + public int IsProceed + { + get + { + int returnValue = 2; + + foreach (var head in Signal.SignalHeads.Where(x => x.Function == SignalFunction.NORMAL)) + { + if (head.state == MstsSignalAspect.CLEAR_1 + || head.state == MstsSignalAspect.CLEAR_2) + { + returnValue = 0; + } + if (head.state == MstsSignalAspect.APPROACH_1 + || head.state == MstsSignalAspect.APPROACH_2 + || head.state == MstsSignalAspect.APPROACH_3) + { + returnValue = 1; + } + } + + return returnValue; + } + } + + /// + /// + /// + /// + /// + public SignalWidget(SignalItem item, SignalObject signal) + { + Item = item; + Signal = signal; + hasDir = false; + Location.X = (item.TileX * 2048) + item.X; + Location.Y = (item.TileZ * 2048) + item.Z; + var node = Program.Simulator.TDB.TrackDB.TrackNodes?[signal.trackNode]; + Vector2 v2; + if (node?.TrVectorNode != null) + { + var ts = node.TrVectorNode.TrVectorSections?.FirstOrDefault(); + if (ts == null) + return; + v2 = new Vector2((ts.TileX * 2048) + ts.X, (ts.TileZ * 2048) + ts.Z); + } + else if (node?.TrJunctionNode != null) + { + var ts = node?.UiD; + if (ts == null) + return; + v2 = new Vector2((ts.TileX * 2048) + ts.X, (ts.TileZ * 2048) + ts.Z); + } + else + { + return; + } + var v1 = new Vector2(Location.X, Location.Y); + var v3 = v1 - v2; + v3.Normalize(); + void copyTo(Vector2 input, ref PointF output) + { + output.X = input.X; + output.Y = input.Y; + } + copyTo(v1 - Vector2.Multiply(v3, signal.direction == 0 ? 12f : -12f), ref Dir); + //shift signal along the dir for 2m, so signals will not be overlapped + copyTo(v1 - Vector2.Multiply(v3, signal.direction == 0 ? 1.5f : -1.5f), ref Location); + hasDir = true; + } + } + #endregion + + #region SwitchWidget + /// + /// Defines a signal being drawn in a 2D view. + /// + public class SwitchWidget : ItemWidget + { + public TrackNode Item; + public uint main; + + /// + /// + /// + /// + /// + public SwitchWidget(TrackNode item) + { + Item = item; + var TS = Program.Simulator.TSectionDat.TrackShapes.Get(item.TrJunctionNode.ShapeIndex); // TSECTION.DAT tells us which is the main route + + main = TS != null ? TS.MainRoute : 0; + + Location.X = (Item.UiD.TileX * 2048) + Item.UiD.X; Location.Y = (Item.UiD.TileZ * 2048) + Item.UiD.Z; + } + } + + #endregion + + #region BufferWidget + public class BufferWidget : ItemWidget + { + public TrackNode Item; + + /// + /// + /// + /// + /// + public BufferWidget(TrackNode item) + { + Item = item; + + Location.X = (Item.UiD.TileX * 2048) + Item.UiD.X; Location.Y = (Item.UiD.TileZ * 2048) + Item.UiD.Z; + } + } + #endregion + + #region ItemWidget + public class ItemWidget + { + public PointF Location; + public PointF Location2D; + + /// + /// + /// + /// + public ItemWidget() + { + + Location = new PointF(float.NegativeInfinity, float.NegativeInfinity); + Location2D = new PointF(float.NegativeInfinity, float.NegativeInfinity); + } + } + #endregion + + #region TrainWidget + public class TrainWidget : ItemWidget + { + public Train Train; + + /// + /// + /// + /// + public TrainWidget(Train t) + { + Train = t; + } + } + #endregion + + #region LineSegment + /// + /// Defines a geometric line segment. + /// + public class LineSegment + { + public dVector A; + public dVector B; + public dVector C; + //public float radius; + public bool isCurved; + + public float angle1, angle2; + + public LineSegment(dVector A, dVector B, bool Occupied, TrVectorSection Section) + { + this.A = A; + this.B = B; + + isCurved = false; + if (Section == null) return; + //MySection = Section; + uint k = Section.SectionIndex; + TrackSection ts = Program.Simulator.TSectionDat.TrackSections.Get(k); + if (ts != null) + { + if (ts.SectionCurve != null) + { + float diff = (float)(ts.SectionCurve.Radius * (1 - Math.Cos(ts.SectionCurve.Angle * 3.14f / 360))); + if (diff < 3) return; //not need to worry, curve too small + //curve = ts.SectionCurve; + Vector3 v = new Vector3((float)(((B.TileX - A.TileX) * 2048) + B.X - A.X), 0, (float)(((B.TileZ - A.TileZ) * 2048) + B.Z - A.Z)); + isCurved = true; + Vector3 v2 = Vector3.Cross(Vector3.Up, v); v2.Normalize(); + v /= 2; v.X += (A.TileX * 2048) + (float)A.X; v.Z += (A.TileZ * 2048) + (float)A.Z; + v = ts.SectionCurve.Angle > 0 ? (v2 * -diff) + v : (v2 * diff) + v; + C = new dVector(0, v.X, 0, v.Z); + } + } + } + } + #endregion + + #region SidingWidget + + /// + /// Defines a siding name being drawn in a 2D view. + /// + public struct SidingWidget + { + public uint Id; + public PointF Location; + public string Name; + public uint LinkId; + + /// + /// The underlying track item. + /// + public SidingItem Item; + + /// + /// + /// + /// + /// + public SidingWidget(SidingItem item) + { + Id = item.TrItemId; + LinkId = item.LinkedSidingId; + Item = item; + Name = item.ItemName; + Location = new PointF((item.TileX * 2048) + item.X, (item.TileZ * 2048) + item.Z); + } + } + #endregion + + public struct PlatformWidget + { + public uint Id; + public PointF Location; + public string Name; + public PointF Extent1; + public PointF Extent2; + public uint LinkId; + public string Station; + + /// + /// The underlying track item. + /// + public PlatformItem Item; + + /// + /// + /// + /// + /// + public PlatformWidget(PlatformItem item) + { + Id = item.TrItemId; + LinkId = item.LinkedPlatformItemId; + Item = item; + Name = item.ItemName; + Station = item.Station; + Location = new PointF((item.TileX * 2048) + item.X, (item.TileZ * 2048) + item.Z); + Extent1 = default; + Extent2 = default; + } + } + + public class dVector + { + public int TileX, TileZ; + public double X, Z; + + public dVector(int tilex1, double x1, int tilez1, double z1) + { + TileX = tilex1; + TileZ = tilez1; + X = x1; + Z = z1; + } + + public static double DistanceSqr(dVector v1, dVector v2) + { + return Math.Pow(((v1.TileX - v2.TileX) * 2048) + v1.X - v2.X, 2) + + Math.Pow(((v1.TileZ - v2.TileZ) * 2048) + v1.Z - v2.Z, 2); + } + } +} diff --git a/Source/RunActivity/Viewer3D/Debugging/DebugViewerForm.resx b/Source/RunActivity/Viewer3D/Map/MapForm.resx similarity index 82% rename from Source/RunActivity/Viewer3D/Debugging/DebugViewerForm.resx rename to Source/RunActivity/Viewer3D/Map/MapForm.resx index 6b977da3bb..5bb9c0e51d 100644 --- a/Source/RunActivity/Viewer3D/Debugging/DebugViewerForm.resx +++ b/Source/RunActivity/Viewer3D/Map/MapForm.resx @@ -1,4 +1,4 @@ - +