private void InitNetPlayMenus() { mnuConnect.Click += (s, e) => { NetPlayHelper.Connect(); }; mnuStartServer.Click += (s, e) => { NetPlayHelper.ToggleServer(); }; mnuProfile.Click += (s, e) => { using (frmPlayerProfile frm = new frmPlayerProfile()) { frm.ShowDialog(mnuProfile, this); } }; mnuNetPlayPlayer1.Click += (s, e) => { NetplayApi.NetPlaySelectController(0); }; mnuNetPlayPlayer2.Click += (s, e) => { NetplayApi.NetPlaySelectController(1); }; mnuNetPlayPlayer3.Click += (s, e) => { NetplayApi.NetPlaySelectController(2); }; mnuNetPlayPlayer4.Click += (s, e) => { NetplayApi.NetPlaySelectController(3); }; mnuNetPlayPlayer5.Click += (s, e) => { NetplayApi.NetPlaySelectController(4); }; mnuNetPlaySpectator.Click += (s, e) => { NetplayApi.NetPlaySelectController(0xFF); }; mnuNetPlay.DropDownOpening += (s, e) => { bool runAheadDisabled = ConfigManager.Config.Emulation.RunAheadFrames == 0; bool isClient = NetplayApi.IsConnected(); bool isServer = NetplayApi.IsServerRunning(); mnuConnect.Text = ResourceHelper.GetMessage(isClient ? "Disconnect" : "ConnectToServer"); mnuConnect.Enabled = runAheadDisabled && !isServer; mnuStartServer.Text = ResourceHelper.GetMessage(isServer ? "StopServer" : "StartServer"); mnuStartServer.Enabled = runAheadDisabled && !isClient; mnuNetPlaySelectController.Enabled = isClient || isServer; }; mnuNetPlaySelectController.DropDownOpening += (s, e) => { int availableControllers = NetplayApi.NetPlayGetAvailableControllers(); int currentControllerPort = NetplayApi.NetPlayGetControllerPort(); mnuNetPlayPlayer1.Enabled = (availableControllers & 0x01) == 0x01; mnuNetPlayPlayer2.Enabled = (availableControllers & 0x02) == 0x02; mnuNetPlayPlayer3.Enabled = (availableControllers & 0x04) == 0x04; mnuNetPlayPlayer4.Enabled = (availableControllers & 0x08) == 0x08; mnuNetPlayPlayer5.Enabled = (availableControllers & 0x10) == 0x10; Func <int, string> getControllerName = (int port) => { ControllerType type = ConfigApi.GetControllerType(port); if (type == ControllerType.Multitap) { type = ControllerType.SnesController; } return(ResourceHelper.GetEnumText(type)); }; mnuNetPlayPlayer1.Text = ResourceHelper.GetMessage("PlayerNumber", "1") + " (" + getControllerName(0) + ")"; mnuNetPlayPlayer2.Text = ResourceHelper.GetMessage("PlayerNumber", "2") + " (" + getControllerName(1) + ")"; mnuNetPlayPlayer3.Text = ResourceHelper.GetMessage("PlayerNumber", "3") + " (" + getControllerName(2) + ")"; mnuNetPlayPlayer4.Text = ResourceHelper.GetMessage("PlayerNumber", "4") + " (" + getControllerName(3) + ")"; mnuNetPlayPlayer5.Text = ResourceHelper.GetMessage("PlayerNumber", "5") + " (" + getControllerName(4) + ")"; mnuNetPlayPlayer1.Checked = (currentControllerPort == 0); mnuNetPlayPlayer2.Checked = (currentControllerPort == 1); mnuNetPlayPlayer3.Checked = (currentControllerPort == 2); mnuNetPlayPlayer4.Checked = (currentControllerPort == 3); mnuNetPlayPlayer5.Checked = (currentControllerPort == 4); mnuNetPlaySpectator.Checked = (currentControllerPort == 0xFF); }; }
public static void ToggleServer() { if (NetplayApi.IsServerRunning()) { Task.Run(() => NetplayApi.StopServer()); } else { using (frmServerConfig frm = new frmServerConfig()) { if (frm.ShowDialog(frmMain.Instance) == DialogResult.OK) { NetplayConfig cfg = ConfigManager.Config.Netplay; NetplayApi.StartServer(cfg.ServerPort, cfg.ServerPassword, cfg.PlayerName); } } } }