private void changeTeamButton_Click(object sender, EventArgs e) { ContextMenu menu = new ContextMenu(); if (Program.TasClient.MyBattle != null) { int freeAllyTeam; bool iAmSpectator = Program.TasClient.MyBattleStatus.IsSpectator; foreach (var allyTeam in ZeroKLobby.MicroLobby.ContextMenus.GetExistingTeams(out freeAllyTeam).Distinct()) { if (iAmSpectator || allyTeam != Program.TasClient.MyBattleStatus.AllyNumber) { var item = new System.Windows.Forms.MenuItem("Join Team " + (allyTeam + 1)); item.Click += (s, e2) => ActionHandler.JoinAllyTeam(allyTeam); menu.MenuItems.Add(item); } } menu.MenuItems.Add("-"); var newTeamItem = new System.Windows.Forms.MenuItem("Start New Team"); newTeamItem.Click += (s, e2) => ActionHandler.JoinAllyTeam(freeAllyTeam); menu.MenuItems.Add(newTeamItem); if (!Program.TasClient.MyBattleStatus.IsSpectator) { var specItem = new System.Windows.Forms.MenuItem("Spectate"); specItem.Click += (s, e2) => ActionHandler.Spectate(); menu.MenuItems.Add(specItem); } } menu.Show(btnChangeTeam, new Point(0, 0)); }
public static MenuItem[] GetSetAllyItems() { var setAllyItems = new List <MenuItem>(); int freeAllyTeam; foreach (var allyTeam in GetExistingTeams(out freeAllyTeam).Distinct()) { var at = allyTeam; if (allyTeam != Program.TasClient.MyBattleStatus.AllyNumber) { var item = new MenuItem("Join Team " + (allyTeam + 1)); item.Click += (s, e) => ActionHandler.JoinAllyTeam(at); setAllyItems.Add(item); } } setAllyItems.Add(new MenuItem("-")); var newTeamItem = new MenuItem("Start New Team"); newTeamItem.Click += (s, e) => ActionHandler.JoinAllyTeam(freeAllyTeam); setAllyItems.Add(newTeamItem); if (!Program.TasClient.MyBattleStatus.IsSpectator) { var specItem = new System.Windows.Forms.MenuItem("Spectate"); specItem.Click += (s, e) => ActionHandler.Spectate(); setAllyItems.Add(specItem); } return(setAllyItems.ToArray()); }
static System.Windows.Forms.MenuItem GetSetAllyTeamItem(User user) { var setAllyTeamItem = new System.Windows.Forms.MenuItem("Select Team"); if (Program.TasClient.MyBattle == null || user.Name != Program.TasClient.UserName) { setAllyTeamItem.Enabled = false; } else if (Program.TasClient.MyBattle != null) { int freeAllyTeam; foreach (var allyTeam in GetExistingTeams(out freeAllyTeam).Distinct()) { var at = allyTeam; if (allyTeam != Program.TasClient.MyBattleStatus.AllyNumber) { var item = new System.Windows.Forms.MenuItem("Join Team " + (allyTeam + 1)); item.Click += (s, e) => ActionHandler.JoinAllyTeam(at); setAllyTeamItem.MenuItems.Add(item); } } setAllyTeamItem.MenuItems.Add("-"); var newTeamItem = new System.Windows.Forms.MenuItem("Start New Team"); newTeamItem.Click += (s, e) => ActionHandler.JoinAllyTeam(freeAllyTeam); setAllyTeamItem.MenuItems.Add(newTeamItem); if (!Program.TasClient.MyBattleStatus.IsSpectator) { var specItem = new System.Windows.Forms.MenuItem("Spectate"); specItem.Click += (s, e) => ActionHandler.Spectate(); setAllyTeamItem.MenuItems.Add(specItem); } } return(setAllyTeamItem); }
void playerBox_MouseDown(object sender, MouseEventArgs mea) { if (mea.Button == MouseButtons.Left) { if (playerBox.HoverItem != null) { if (playerBox.HoverItem.IsSpectatorsTitle) { ActionHandler.Spectate(); } else if (playerBox.HoverItem.SlotButton != null) { ActionHandler.JoinSlot(playerBox.HoverItem.MissionSlot); } else if (playerBox.HoverItem.AllyTeam.HasValue) { ActionHandler.JoinAllyTeam(playerBox.HoverItem.AllyTeam.Value); } } } if (mea.Button == MouseButtons.Right || !Program.Conf.LeftClickSelectsPlayer) { if (playerBox.HoverItem == null && mea.Button == MouseButtons.Right) { var cm = ContextMenus.GetPlayerContextMenu(Program.TasClient.MyUser, true); Program.ToolTip.Visible = false; try { cm.Show(playerBox, mea.Location); } catch (Exception ex) { Trace.TraceError("Error displaying tooltip: {0}", ex); } finally { Program.ToolTip.Visible = true; } } } if (playerBox.HoverItem != null) { if (playerBox.HoverItem.BotBattleStatus != null) { playerBox.SelectedItem = playerBox.HoverItem; var cm = ContextMenus.GetBotContextMenu(playerBox.HoverItem.BotBattleStatus.Name); Program.ToolTip.Visible = false; try { cm.Show(playerBox, mea.Location); } catch (Exception ex) { Trace.TraceError("Error displaying tooltip: {0}", ex); } finally { Program.ToolTip.Visible = true; } } /* * if (playerBox.HoverItem.UserBattleStatus != null) { * playerBox.SelectedItem = playerBox.HoverItem; * var cm = ContextMenus.GetPlayerContextMenu(playerBox.HoverItem.User, true); * Program.ToolTip.Visible = false; * cm.Show(playerBox, mea.Location); * Program.ToolTip.Visible = true; * }*/ } }
protected override void PlayerBox_MouseClick(object sender, MouseEventArgs mea) { if (mea.Button == MouseButtons.Left) { if (this.playerBox.HoverItem != null) { if (this.playerBox.HoverItem.IsSpectatorsTitle) { ActionHandler.Spectate(); } else if (this.playerBox.HoverItem.Button != null) { ActionHandler.JoinAllyTeam(this.playerBox.HoverItem.AllyTeam.Value); } } } if (mea.Button == MouseButtons.Right || !Program.Conf.LeftClickSelectsPlayer) { if (this.playerBox.HoverItem == null && mea.Button == MouseButtons.Right) { //right click on empty space var cm = ContextMenus.GetPlayerContextMenu(Program.TasClient.MyUser, true); Program.ToolTip.Visible = false; try { cm.Show(playerBox, mea.Location); } catch (Exception ex) { Trace.TraceError("Error displaying tooltip: {0}", ex); } finally { Program.ToolTip.Visible = true; } return; } //NOTE: code that display player's context menu on Left-mouse-click is in ChatControl.playerBox_MouseClick(); } if (this.playerBox.HoverItem != null) { if (this.playerBox.HoverItem.BotBattleStatus != null) { playerBox.SelectedItem = this.playerBox.HoverItem; var cm = ContextMenus.GetBotContextMenu(this.playerBox.HoverItem.BotBattleStatus.Name); Program.ToolTip.Visible = false; try { cm.Show(playerBox, mea.Location); } catch (Exception ex) { Trace.TraceError("Error displaying tooltip: {0}", ex); } finally { Program.ToolTip.Visible = true; } return; } /* * if (playerBox.HoverItem.UserBattleStatus != null) { * playerBox.SelectedItem = playerBox.HoverItem; * var cm = ContextMenus.GetPlayerContextMenu(playerBox.HoverItem.User, true); * Program.ToolTip.Visible = false; * cm.Show(playerBox, mea.Location); * Program.ToolTip.Visible = true; * }*/ } base.PlayerBox_MouseClick(sender, mea); }
public static ContextMenu GetPlayerContextMenu(User user, bool isBattle) { var contextMenu = new ContextMenu(); try { var headerItem = new System.Windows.Forms.MenuItem("Player - " + user.Name) { Enabled = false, DefaultItem = true }; // default is to make it appear bold contextMenu.MenuItems.Add(headerItem); if (user.Name != Program.TasClient.UserName) { contextMenu.MenuItems.Add("-"); var details = new System.Windows.Forms.MenuItem("Details"); details.Click += (s, e) => NavigationControl.Instance.Path = "http://zero-k.info/Users/LobbyDetail/" + user.LobbyID; contextMenu.MenuItems.Add(details); var pmItem = new System.Windows.Forms.MenuItem("Send Message"); pmItem.Click += (s, e) => NavigationControl.Instance.Path = "chat/user/" + user.Name; contextMenu.MenuItems.Add(pmItem); if (Program.FriendManager.Friends.Contains(user.Name)) { var pinItem = new System.Windows.Forms.MenuItem("Unfriend"); pinItem.Click += (s, e) => Program.FriendManager.RemoveFriend(user.Name); contextMenu.MenuItems.Add(pinItem); } else { var pinItem = new System.Windows.Forms.MenuItem("Friend"); pinItem.Click += (s, e) => Program.FriendManager.AddFriend(user.Name); contextMenu.MenuItems.Add(pinItem); } var joinItem = new System.Windows.Forms.MenuItem("Join Same Battle") { Enabled = Program.TasClient.ExistingUsers[user.Name].IsInBattleRoom }; joinItem.Click += (s, e) => ActionHandler.JoinPlayer(user.Name); contextMenu.MenuItems.Add(joinItem); var ignoreUser = new System.Windows.Forms.MenuItem("Ignore User") { Checked = Program.Conf.IgnoredUsers.Contains(user.Name) }; ignoreUser.Click += (s, e) => { ignoreUser.Checked = !ignoreUser.Checked; if (ignoreUser.Checked) { Program.Conf.IgnoredUsers.Add(user.Name); } else { Program.Conf.IgnoredUsers.Remove(user.Name); } }; contextMenu.MenuItems.Add(ignoreUser); var reportUser = new System.Windows.Forms.MenuItem("Report User"); reportUser.Click += (s, e) => NavigationControl.Instance.Path = "http://zero-k.info/Users/ReportToAdminFromLobby/" + user.Name; contextMenu.MenuItems.Add(reportUser); } if (Program.TasClient.MyBattle != null) { var battleStatus = Program.TasClient.MyBattle.Users.SingleOrDefault(u => u.Name == user.Name); var myStatus = Program.TasClient.MyBattleStatus; if (isBattle) { contextMenu.MenuItems.Add("-"); if (user.Name != Program.TasClient.UserName) { var allyWith = new System.Windows.Forms.MenuItem("Ally") { Enabled = !battleStatus.IsSpectator && (battleStatus.AllyNumber != myStatus.AllyNumber || myStatus.IsSpectator) }; allyWith.Click += (s, e) => ActionHandler.JoinAllyTeam(battleStatus.AllyNumber); contextMenu.MenuItems.Add(allyWith); } var colorItem = new System.Windows.Forms.MenuItem("Select Color") { Enabled = Program.TasClient.UserName == user.Name && !myStatus.IsSpectator }; colorItem.Click += (s, e) => { if (Program.TasClient.MyBattle == null) { return; } var myColor = Program.TasClient.MyBattleStatus.TeamColorRGB; var colorDialog = new ColorDialog { Color = Color.FromArgb(myColor[0], myColor[1], myColor[2]) }; // fixme: set site // colorDialog.Site = Program.MainWindow.ChatTab.Site; if (colorDialog.ShowDialog() == DialogResult.OK) { var newColor = (int)(MyCol)colorDialog.Color; Program.Conf.DefaultPlayerColorInt = newColor; Program.SaveConfig(); var newStatus = Program.TasClient.MyBattleStatus.Clone(); newStatus.TeamColor = newColor; Program.TasClient.SendMyBattleStatus(newStatus); } }; contextMenu.MenuItems.Add(colorItem); contextMenu.MenuItems.Add(GetSetAllyTeamItem(user)); contextMenu.MenuItems.Add("-"); contextMenu.MenuItems.Add(GetShowOptions()); contextMenu.MenuItems.Add(GetAddBotItem()); } } } catch (Exception e) { Trace.WriteLine("Error generating player context menu: " + e); } return(contextMenu); }
public static ContextMenu GetPlayerContextMenu(User user, bool isBattle) { var contextMenu = new ContextMenu(); try { var headerItem = new System.Windows.Forms.MenuItem("Player - " + user.Name) { Enabled = false, DefaultItem = true }; // default is to make it appear bold contextMenu.MenuItems.Add(headerItem); if (user.Name != Program.TasClient.UserName) { contextMenu.MenuItems.Add("-"); var details = new MenuItem("Details"); details.Click += (s, e) => NavigationControl.Instance.Path = string.Format("{1}/Users/LobbyDetail/{0}", user.AccountID, GlobalConst.BaseSiteUrl); contextMenu.MenuItems.Add(details); var pmItem = new MenuItem("Send Message"); pmItem.Click += (s, e) => NavigationControl.Instance.Path = "chat/user/" + user.Name; contextMenu.MenuItems.Add(pmItem); if (Program.FriendManager.Friends.Contains(user.Name)) { var pinItem = new MenuItem("Unfriend"); pinItem.Click += (s, e) => Program.FriendManager.RemoveFriend(user.Name); contextMenu.MenuItems.Add(pinItem); } else { var pinItem = new MenuItem("Friend"); pinItem.Click += (s, e) => Program.FriendManager.AddFriend(user.Name); contextMenu.MenuItems.Add(pinItem); } var joinItem = new MenuItem("Join Same Battle") { Enabled = Program.TasClient.ExistingUsers[user.Name].IsInBattleRoom }; joinItem.Click += (s, e) => ActionHandler.JoinPlayer(user.Name); contextMenu.MenuItems.Add(joinItem); var ignoreUser = new MenuItem("Ignore User") { Checked = Program.Conf.IgnoredUsers.Contains(user.Name) }; ignoreUser.Click += (s, e) => { ignoreUser.Checked = !ignoreUser.Checked; if (ignoreUser.Checked) { Program.Conf.IgnoredUsers.Add(user.Name); } else { Program.Conf.IgnoredUsers.Remove(user.Name); } }; contextMenu.MenuItems.Add(ignoreUser); var reportUser = new MenuItem("Report User"); reportUser.Click += (s, e) => NavigationControl.Instance.Path = string.Format("{1}/Users/ReportToAdminFromLobby/{0}", user.Name, GlobalConst.BaseSiteUrl); contextMenu.MenuItems.Add(reportUser); } if (Program.TasClient.MyBattle != null) { var battleStatus = Program.TasClient.MyBattle.Users[user.Name]; var myStatus = Program.TasClient.MyBattleStatus; if (isBattle) { contextMenu.MenuItems.Add("-"); if (!Program.TasClient.MyBattle.IsQueue) { if (user.Name != Program.TasClient.UserName) { var allyWith = new MenuItem("Ally") { Enabled = !battleStatus.IsSpectator && (battleStatus.AllyNumber != myStatus.AllyNumber || myStatus.IsSpectator) }; allyWith.Click += (s, e) => ActionHandler.JoinAllyTeam(battleStatus.AllyNumber); contextMenu.MenuItems.Add(allyWith); } contextMenu.MenuItems.Add(GetSetAllyTeam(user)); contextMenu.MenuItems.Add("-"); contextMenu.MenuItems.Add(GetShowGameOptionsItem()); contextMenu.MenuItems.Add(GetAddBot()); } } } } catch (Exception e) { Trace.WriteLine("Error generating player context menu: " + e); } return(contextMenu); }