public SpectateSessionDialog(ServerWindow parent, ISession session) { TransientFor = parent; this.Build(); this.session = session; }
public ReplacePlayerDialog(ServerWindow parent, ISession session, IPlayer player) { TransientFor = parent; this.Build(); this.session = session; this.player = player; }
public SessionWindow(ServerWindow parent) : base(Gtk.WindowType.Toplevel) { TransientFor = parent; this.Build(); this.chatSendButton.TooltipMarkup = Catalog.GetString("Sends the message"); this.startGameButton.TooltipMarkup = Catalog.GetString("Starts the game in this session"); this.disconnectButton.TooltipMarkup = Catalog.GetString("Disconnects from the session"); this.endSessionButton.TooltipMarkup = Catalog.GetString("Ends the session"); listener = new EventListener(this); ConnectionManager.SessionEventListener.AddListener((IPlayerSessionEventListener)listener); ConnectionManager.SessionEventListener.AddListener((ISpectatorSessionEventListener)listener); ConnectionManager.OnGameConnected += () => { Gdk.Threads.Enter(); startGameButton.Sensitive = false; Gdk.Threads.Leave(); }; ISession session = ConnectionManager.Session; IPlayerSessionControl playerControl = ConnectionManager.PlayerSessionControl; if(playerControl != null && playerControl.Player.IsCreator) { if(session.State != SessionState.Playing && session.State != SessionState.Ended) startGameButton.Sensitive = true; else startGameButton.Sensitive = false; endSessionButton.Sensitive = true; } else { startGameButton.Sensitive = false; endSessionButton.Sensitive = false; } Gtk.TextTag playerTag = new Gtk.TextTag("player"); playerTag.Weight = Pango.Weight.Bold; playerTag.Foreground = "blue"; Gtk.TextTag spectatorTag = new Gtk.TextTag("spectator"); spectatorTag.Weight = Pango.Weight.Bold; spectatorTag.Foreground = "yellow"; chatView.Buffer.TagTable.Add(playerTag); chatView.Buffer.TagTable.Add(spectatorTag); sessionInfoWidget.Session = ConnectionManager.Session; }
public CreateSessionDialog(ServerWindow parent) { TransientFor = parent; this.Build(); }
public MainWindow() : base(Gtk.WindowType.Toplevel) { this.Build(); ConnectionManager.OnServerConnected += () => { serverWindow = new ServerWindow(this); serverWindow.DeleteEvent += (o, args) => { serverWindowAction.Active = false; args.RetVal = true; }; serverWindow.Show(); connectAction.Sensitive = false; disconnectAction.Sensitive = true; serverWindowAction.Sensitive = true; serverWindowAction.Active = true; }; ConnectionManager.OnServerDisconnected += () => { Gtk.Application.Invoke(delegate { Gdk.Threads.Enter(); serverWindow.Destroy(); serverWindow = null; connectAction.Sensitive = true; disconnectAction.Sensitive = false; serverWindowAction.Sensitive = false; serverWindowAction.Active = false; Gdk.Threads.Leave(); }); }; ConnectionManager.OnSessionConnected += () => { Gtk.Application.Invoke(delegate { Gdk.Threads.Enter(); sessionWindow = new SessionWindow(serverWindow); sessionWindow.DeleteEvent += (o, args) => { sessionWindowAction.Active = false; args.RetVal = true; }; sessionWindowAction.Sensitive = true; sessionWindowAction.Active = true; serverWindowAction.Active = false; sessionDisconnectAction.Sensitive = true; ISession session = ConnectionManager.Session; IPlayerSessionControl playerControl = ConnectionManager.PlayerSessionControl; if(playerControl != null && playerControl.Player.IsCreator) { if(session.State != SessionState.Playing && session.State != SessionState.Ended) startGameAction.Sensitive = true; else startGameAction.Sensitive = false; endSessionAction.Sensitive = true; } else { startGameAction.Sensitive = false; endSessionAction.Sensitive = false; } Gdk.Threads.Leave(); }); }; ConnectionManager.OnSessionDisconnected += () => { Gtk.Application.Invoke(delegate { Gdk.Threads.Enter(); sessionWindow.Destroy(); sessionWindow = null; sessionWindowAction.Sensitive = false; sessionWindowAction.Active = false; serverWindowAction.Active = true; sessionDisconnectAction.Sensitive = false; startGameAction.Sensitive = false; endSessionAction.Sensitive = false; Gdk.Threads.Leave(); }); }; ConnectionManager.OnGameConnected += () => { if(Config.Instance.GetBoolean("Client.AutoHideSWWhilePlaying", true)) Gtk.Application.Invoke(delegate { Gdk.Threads.Enter(); sessionWindowAction.Active = false; NotifyUrgent(); Gdk.Threads.Leave(); }); }; listener = new EventListener(this); ConnectionManager.SessionEventListener.AddListener((IPlayerSessionEventListener)listener); }