Skip to content

Commit f0f2a72

Browse files
committed
Added signal controls
1 parent 079300b commit f0f2a72

File tree

3 files changed

+198
-70
lines changed

3 files changed

+198
-70
lines changed

Source/RunActivity/Viewer3D/Debugging/DebugViewerBetaForm.Designer.cs

Lines changed: 90 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Source/RunActivity/Viewer3D/Debugging/DebugViewerBetaForm.cs

Lines changed: 105 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1025,7 +1025,7 @@ private void ShowSignalState(Graphics g, PointF scaledItem, SignalWidget sw)
10251025
{
10261026
if (!showSignalStateCheckbox.Checked)
10271027
return;
1028-
1028+
10291029
var item = sw.Item as SignalItem;
10301030
var trainNumber = sw.Signal?.enabledTrain?.Train?.Number;
10311031
var trainString = (trainNumber == null) ? "" : $" train: {trainNumber}";
@@ -1041,7 +1041,7 @@ private void ShowSignalState(Graphics g, PointF scaledItem, SignalWidget sw)
10411041
if (scaledItem.Y >= 0f) // -1 indicates no free slot to draw label
10421042
g.DrawString(text, SignalFont, SignalBrush, scaledItem);
10431043
}
1044-
1044+
10451045
}
10461046

10471047
private void ShowSidingLabels(Graphics g)
@@ -1674,7 +1674,7 @@ private void mapCanvas_MouseUp(object sender, MouseEventArgs e)
16741674

16751675
private void UnHandleItemPick()
16761676
{
1677-
//boxSetSignal.Visible = false;
1677+
setSignalMenu.Visible = false;
16781678
setSwitchMenu.Visible = false;
16791679
}
16801680

@@ -1684,33 +1684,24 @@ private void HandlePickedSignal()
16841684
return;
16851685
setSwitchMenu.Visible = false;
16861686
if (signalPickedItem == null) return;
1687-
var y = LastCursorPosition.Y;
1688-
if (LastCursorPosition.Y < 100) y = 100;
1689-
if (LastCursorPosition.Y > mapCanvas.Size.Height - 100) y = mapCanvas.Size.Height - 100;
16901687

1691-
/*if (boxSetSignal.Items.Count == 5)
1692-
boxSetSignal.Items.RemoveAt(4);
1693-
1694-
if (signalPickedItem.Signal.enabledTrain != null && signalPickedItem.Signal.CallOnEnabled)
1695-
{
1696-
if (!signalPickedItem.Signal.CallOnManuallyAllowed)
1697-
boxSetSignal.Items.Add("Allow call on");
1698-
}
1688+
allowCallOnToolStripMenuItem.Enabled = false;
1689+
if (signalPickedItem.Signal.enabledTrain != null && signalPickedItem.Signal.CallOnEnabled && !signalPickedItem.Signal.CallOnManuallyAllowed)
1690+
allowCallOnToolStripMenuItem.Enabled = true;
16991691

1700-
boxSetSignal.Location = new System.Drawing.Point(LastCursorPosition.X + 2, y);
1701-
boxSetSignal.Enabled = true;
1702-
boxSetSignal.Focus();
1703-
boxSetSignal.SelectedIndex = -1;
1704-
boxSetSignal.Visible = true;
1705-
return;*/
1692+
setSignalMenu.Show(Cursor.Position);
1693+
setSignalMenu.Enabled = true;
1694+
setSignalMenu.Focus();
1695+
setSignalMenu.Visible = true;
1696+
return;
17061697
}
17071698

17081699
private void HandlePickedSwitch()
17091700
{
17101701
if (MPManager.IsClient() && !MPManager.Instance().AmAider)
17111702
return;//normal client not server
17121703

1713-
//boxSetSignal.Visible = false;
1704+
setSignalMenu.Visible = false;
17141705
if (switchPickedItem == null) return;
17151706
setSwitchMenu.Show(Cursor.Position);
17161707
setSwitchMenu.Enabled = true;
@@ -1719,6 +1710,99 @@ private void HandlePickedSwitch()
17191710
return;
17201711
}
17211712

1713+
private void setSignalMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
1714+
{
1715+
if (signalPickedItem == null)
1716+
{
1717+
UnHandleItemPick();
1718+
return;
1719+
}
1720+
1721+
var signal = signalPickedItem.Signal;
1722+
var type = e.ClickedItem.Tag.ToString();
1723+
1724+
string[] signalAspects = { "system", "stop", "approach", "proceed" };
1725+
int numericSignalAspect = Array.IndexOf(signalAspects, "stop");
1726+
1727+
if (MPManager.Instance().AmAider)
1728+
{
1729+
MPManager.Notify(new MSGSignalChange(signal, numericSignalAspect).ToString());
1730+
UnHandleItemPick();
1731+
return;
1732+
}
1733+
1734+
switch (type)
1735+
{
1736+
case "system":
1737+
signal.ClearHoldSignalDispatcher();
1738+
break;
1739+
1740+
case "stop":
1741+
signal.RequestHoldSignalDispatcher(true);
1742+
break;
1743+
1744+
case "approach":
1745+
signal.RequestApproachAspect();
1746+
break;
1747+
1748+
case "proceed":
1749+
signal.RequestLeastRestrictiveAspect();
1750+
break;
1751+
1752+
case "callOn":
1753+
signal.SetManualCallOn(true);
1754+
break;
1755+
}
1756+
1757+
UnHandleItemPick();
1758+
}
1759+
1760+
private void setSwitchMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
1761+
{
1762+
if (switchPickedItem == null)
1763+
{
1764+
UnHandleItemPick(); return;
1765+
}
1766+
var sw = switchPickedItem.Item.TrJunctionNode;
1767+
var type = e.ClickedItem.Tag.ToString();
1768+
1769+
// Aider can send message to the server for a switch
1770+
if (MPManager.IsMultiPlayer() && MPManager.Instance().AmAider)
1771+
{
1772+
var nextSwitchTrack = sw;
1773+
var Selected = 0;
1774+
switch (type)
1775+
{
1776+
case "mainRoute":
1777+
Selected = (int)switchPickedItem.main;
1778+
break;
1779+
case "sideRoute":
1780+
Selected = 1 - (int)switchPickedItem.main;
1781+
break;
1782+
}
1783+
// Aider selects and throws the switch, but need to confirm by the dispatcher
1784+
MPManager.Notify(new MSGSwitch(MPManager.GetUserName(),
1785+
nextSwitchTrack.TN.UiD.WorldTileX, nextSwitchTrack.TN.UiD.WorldTileZ, nextSwitchTrack.TN.UiD.WorldId, Selected, true).ToString());
1786+
Program.Simulator.Confirmer.Information(Viewer.Catalog.GetString("Switching Request Sent to the Server"));
1787+
1788+
}
1789+
else // Server throws the switch immediately
1790+
{
1791+
switch (type)
1792+
{
1793+
case "mainRoute":
1794+
Program.Simulator.Signals.RequestSetSwitch(sw.TN, (int)switchPickedItem.main);
1795+
//sw.SelectedRoute = (int)switchPickedItem.main;
1796+
break;
1797+
case "sideRoute":
1798+
Program.Simulator.Signals.RequestSetSwitch(sw.TN, 1 - (int)switchPickedItem.main);
1799+
//sw.SelectedRoute = 1 - (int)switchPickedItem.main;
1800+
break;
1801+
}
1802+
}
1803+
UnHandleItemPick();
1804+
}
1805+
17221806
private ItemWidget findItemFromMouse(int x, int y, int range)
17231807
{
17241808
if (range < 5) range = 5;
@@ -1909,51 +1993,6 @@ private void penaltyCheckbox_CheckedChanged(object sender, EventArgs e)
19091993
}
19101994

19111995

1912-
private void setSwitchMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
1913-
{
1914-
if (switchPickedItem == null)
1915-
{
1916-
UnHandleItemPick(); return;
1917-
}
1918-
var sw = switchPickedItem.Item.TrJunctionNode;
1919-
var type = e.ClickedItem.Tag.ToString();
1920-
1921-
// Aider can send message to the server for a switch
1922-
if (MPManager.IsMultiPlayer() && MPManager.Instance().AmAider)
1923-
{
1924-
var nextSwitchTrack = sw;
1925-
var Selected = 0;
1926-
switch (type)
1927-
{
1928-
case "mainRoute":
1929-
Selected = (int)switchPickedItem.main;
1930-
break;
1931-
case "sideRoute":
1932-
Selected = 1 - (int)switchPickedItem.main;
1933-
break;
1934-
}
1935-
// Aider selects and throws the switch, but need to confirm by the dispatcher
1936-
MPManager.Notify(new MSGSwitch(MPManager.GetUserName(),
1937-
nextSwitchTrack.TN.UiD.WorldTileX, nextSwitchTrack.TN.UiD.WorldTileZ, nextSwitchTrack.TN.UiD.WorldId, Selected, true).ToString());
1938-
Program.Simulator.Confirmer.Information(Viewer.Catalog.GetString("Switching Request Sent to the Server"));
1939-
1940-
}
1941-
else // Server throws the switch immediately
1942-
{
1943-
switch (type)
1944-
{
1945-
case "mainRoute":
1946-
Program.Simulator.Signals.RequestSetSwitch(sw.TN, (int)switchPickedItem.main);
1947-
//sw.SelectedRoute = (int)switchPickedItem.main;
1948-
break;
1949-
case "sideRoute":
1950-
Program.Simulator.Signals.RequestSetSwitch(sw.TN, 1 - (int)switchPickedItem.main);
1951-
//sw.SelectedRoute = 1 - (int)switchPickedItem.main;
1952-
break;
1953-
}
1954-
}
1955-
UnHandleItemPick();
1956-
}
19571996

19581997
private void DispatchViewerBeta_FormClosing(object sender, FormClosingEventArgs e)
19591998
{

Source/RunActivity/Viewer3D/Debugging/DebugViewerBetaForm.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,9 @@
126126
<metadata name="setSwitchMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
127127
<value>331, 16</value>
128128
</metadata>
129+
<metadata name="setSignalMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
130+
<value>486, 16</value>
131+
</metadata>
129132
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
130133
<value>110</value>
131134
</metadata>

0 commit comments

Comments
 (0)