private void AddGameToList(GenericHostedGame hg) { int lgTextWidth = hg.IsLoadedGame ? loadedGameTextWidth : 0; int maxTextWidth = Width - hg.Game.Texture.Width - (hg.Incompatible ? txIncompatibleGame.Width : 0) - (hg.Locked ? txLockedGame.Width : 0) - (hg.Passworded ? txPasswordedGame.Width : 0) - (ICON_MARGIN * 3) - GetScrollBarWidth() - lgTextWidth; var lbItem = new XNAListBoxItem(); lbItem.Tag = hg; lbItem.Text = Renderer.GetStringWithLimitedWidth(Renderer.GetSafeString( hg.RoomName, FontIndex), FontIndex, maxTextWidth); if (hg.Game.InternalName != localGameIdentifier.ToLower()) { lbItem.TextColor = UISettings.ActiveSettings.TextColor; } //else // made unnecessary by new Rampastring.XNAUI // lbItem.TextColor = UISettings.ActiveSettings.AltColor; if (hg.Incompatible || hg.Locked) { lbItem.TextColor = Color.Gray; } AddItem(lbItem); }
private void ConnectionManager_UserAdded(object sender, UserEventArgs e) { var pmUser = privateMessageUsers.Find(pmsgUser => pmsgUser.IrcUser.Name == e.User.Name); ChatMessage joinMessage = null; if (pmUser != null) { joinMessage = new ChatMessage(null, Color.White, DateTime.Now, e.User.Name + " is now online."); pmUser.Messages.Add(joinMessage); } if (tabControl.SelectedTab == ALL_PLAYERS_VIEW_INDEX) { RefreshAllUsers(); } else // if (tabControl.SelectedTab == 0 or 1) { XNAListBoxItem lbItem = lbUserList.Items.Find(i => i.Text == e.User.Name); if (lbItem != null) { lbItem.TextColor = UISettings.AltColor; lbItem.Tag = true; lbItem.Texture = GetUserTexture(e.User); if (lbItem == lbUserList.SelectedItem) { tbMessageInput.Enabled = true; lbMessages.AddMessage(joinMessage); } } } }
private void TunnelHandler_TunnelPinged(int tunnelIndex) { XNAListBoxItem lbItem = lbTunnelList.GetItem(2, tunnelIndex); CnCNetTunnel tunnel = tunnelHandler.Tunnels[tunnelIndex]; if (tunnel.PingInMs == -1) { lbItem.Text = "Unknown"; } else { lbItem.Text = tunnel.PingInMs + " ms"; int rating = GetTunnelRating(tunnel); if (isManuallySelectedTunnel) { return; } if ((tunnel.Recommended || tunnel.Official) && rating < lowestTunnelRating) { bestTunnelIndex = tunnelIndex; lowestTunnelRating = rating; lbTunnelList.SelectedIndex = tunnelIndex; } } }
public void AddUser(ChannelUser user) { XNAListBoxItem item = new XNAListBoxItem(); UpdateItemInfo(user, item); AddItem(item); }
public void AddMessage(ChatMessage message) { var listBoxItem = new XNAListBoxItem { TextColor = message.Color, Selectable = true, Tag = message }; if (message.SenderName == null) { listBoxItem.Text = Renderer.GetSafeString(string.Format("[{0}] {1}", message.DateTime.ToShortTimeString(), message.Message), FontIndex); } else { listBoxItem.Text = Renderer.GetSafeString(string.Format("[{0}] {1}: {2}", message.DateTime.ToShortTimeString(), message.SenderName, message.Message), FontIndex); } AddItem(listBoxItem); if (LastIndex >= Items.Count - 2) { ScrollToBottom(); } }
private void AddUserToList(ChannelUser user) { XNAListBoxItem item = new XNAListBoxItem(); item.Tag = user; if (user.IsAdmin) { item.Text = user.IRCUser.Name + " (Admin)"; item.TextColor = Color.Red; item.Texture = adminGameIcon; } else { item.Text = user.IRCUser.Name; item.TextColor = UISettings.AltColor; if (user.IRCUser.GameID < 0 || user.IRCUser.GameID >= gameCollection.GameList.Count) { item.Texture = unknownGameIcon; } else { item.Texture = gameCollection.GameList[user.IRCUser.GameID].Texture; } } AddItem(item); }
/// <summary> /// Compares each listed XNAListBoxItem item in the GameListBox to the refernece XNAListBoxItem item for equality. /// </summary> /// <param name="referencedItem">The XNAListBoxItem to compare against</param> /// <returns>bool</returns> private static Predicate <XNAListBoxItem> GameListMatch(XNAListBoxItem referencedItem) => listedItem => { var referencedGame = (HostedCnCNetGame)referencedItem?.Tag; var listedGame = (HostedCnCNetGame)listedItem?.Tag; if (referencedGame == null || listedGame == null) { return(false); } return(string.Equals(referencedGame.ChannelName, listedGame.ChannelName, StringComparison.InvariantCultureIgnoreCase)); };
/// <summary> /// Compares each listed XNAListBoxItem item in the GameListBox to the refernece XNAListBoxItem item for equality. /// </summary> /// <param name="referencedItem">The XNAListBoxItem to compare against</param> /// <returns>bool</returns> private static Predicate <XNAListBoxItem> GameListMatch(XNAListBoxItem referencedItem) => listedItem => { var referencedGame = (GenericHostedGame)referencedItem?.Tag; var listedGame = (GenericHostedGame)listedItem?.Tag; if (referencedGame == null || listedGame == null) { return(false); } return(referencedGame.Equals(listedGame)); };
private void AddPlayerToList(IRCUser user, bool isOnline, string label = null) { XNAListBoxItem lbItem = new XNAListBoxItem(); lbItem.Text = label ?? user.Name; lbItem.TextColor = isOnline ? UISettings.ActiveSettings.AltColor : UISettings.ActiveSettings.DisabledItemColor; lbItem.Tag = user; lbItem.Texture = isOnline ? GetUserTexture(user) : null; lbUserList.AddItem(lbItem); }
private void AddPlayerToList(IRCUser user, bool isOnline) { XNAListBoxItem lbItem = new XNAListBoxItem(); lbItem.Text = user.Name; lbItem.TextColor = isOnline ? UISettings.AltColor : UISettings.DisabledButtonColor; lbItem.Tag = isOnline; lbItem.Texture = isOnline ? GetUserTexture(user) : null; lbUserList.AddItem(lbItem); }
private void ConnectionManager_UserRemoved(object sender, UserNameIndexEventArgs e) { var pmUser = privateMessageUsers.Find(pmsgUser => pmsgUser.IrcUser.Name == e.UserName); ChatMessage leaveMessage = null; if (pmUser != null) { leaveMessage = new ChatMessage(Color.White, e.UserName + " is now offline."); pmUser.Messages.Add(leaveMessage); } if (tabControl.SelectedTab == ALL_PLAYERS_VIEW_INDEX) { if (e.UserIndex >= lbUserList.Items.Count || e.UserIndex < 0) { return; } if (e.UserIndex == lbUserList.SelectedIndex) { lbUserList.SelectedIndex = -1; } else if (e.UserIndex < lbUserList.SelectedIndex) { lbUserList.SelectedIndexChanged -= LbUserList_SelectedIndexChanged; lbUserList.SelectedIndex--; lbUserList.SelectedIndexChanged += LbUserList_SelectedIndexChanged; } lbUserList.Items.RemoveAt(e.UserIndex); } else { XNAListBoxItem lbItem = lbUserList.Items.Find(i => i.Text == e.UserName); if (lbItem != null) { lbItem.TextColor = UISettings.ActiveSettings.DisabledItemColor; lbItem.Texture = null; lbItem.Tag = false; if (lbItem == lbUserList.SelectedItem && leaveMessage != null) { tbMessageInput.Enabled = false; lbMessages.AddMessage(leaveMessage); } } } }
private void AddGameToList(GenericHostedGame hg) { var lbItem = new XNAListBoxItem(); lbItem.Tag = hg; lbItem.Text = Renderer.GetSafeString(hg.RoomName, FontIndex); if (hg.Game.InternalName == localGameIdentifier.ToLower()) { lbItem.TextColor = UISettings.AltColor; } else { lbItem.TextColor = UISettings.TextColor; } if (hg.Incompatible || hg.Locked) { lbItem.TextColor = Color.Gray; } AddItem(lbItem); }
public void ListBattles() { lbCampaignList.Clear(); CampaignHandler.Instance.BattleList.ForEach(mission => { XNAListBoxItem item = new XNAListBoxItem(); item.Tag = mission; item.Text = mission.GUIName; if (!mission.Enabled) { item.TextColor = UISettings.ActiveSettings.DisabledItemColor; } else if (string.IsNullOrEmpty(mission.Scenario) && string.IsNullOrWhiteSpace(mission.CampaignInternalName)) { item.TextColor = AssetLoader.GetColorFromString( ClientConfiguration.Instance.ListBoxHeaderColor); item.IsHeader = true; item.Selectable = false; } else if (mission.RequiresUnlocking && !mission.IsUnlocked) { item.TextColor = UISettings.ActiveSettings.DisabledItemColor; item.Text = "Locked Mission"; item.Texture = AssetLoader.LoadTexture("randomicon.png"); } else { item.TextColor = lbCampaignList.DefaultItemColor; } if (item.Texture == null && !string.IsNullOrEmpty(mission.IconPath)) { item.Texture = AssetLoader.LoadTexture(mission.IconPath); } lbCampaignList.AddItem(item); }); }
private void RefreshAllUsers() { lbUserList.SelectedIndexChanged -= LbUserList_SelectedIndexChanged; string selectedUserName = string.Empty; var selectedItem = lbUserList.SelectedItem; if (selectedItem != null) { selectedUserName = selectedItem.Text; } lbUserList.Clear(); foreach (var ircUser in connectionManager.UserList) { var item = new XNAListBoxItem(ircUser.Name, UISettings.AltColor); item.Tag = true; item.Texture = GetUserTexture(ircUser); lbUserList.AddItem(item); } lbUserList.SelectedIndex = lbUserList.Items.FindIndex(item => item.Text == selectedUserName); if (lbUserList.SelectedIndex == -1) { // If we previously had an user selected and they now went offline, // clear the messages and message input tbMessageInput.Text = string.Empty; tbMessageInput.Enabled = false; lbMessages.Clear(); lbMessages.SelectedIndex = -1; lbMessages.TopIndex = 0; } lbUserList.SelectedIndexChanged += LbUserList_SelectedIndexChanged; }
private void UpdateItemInfo(ChannelUser user, XNAListBoxItem item) { item.Tag = user; if (user.IsAdmin) { item.Text = user.IRCUser.Name + " (Admin)"; item.TextColor = Color.Red; item.Texture = adminGameIcon; } else { item.Text = user.IRCUser.Name; if (user.IRCUser.GameID < 0 || user.IRCUser.GameID >= gameCollection.GameList.Count) { item.Texture = unknownGameIcon; } else { item.Texture = gameCollection.GameList[user.IRCUser.GameID].Texture; } } }
private void LbGameList_SelectedIndexChanged(object sender, EventArgs e) { lbGameStatistics.ClearItems(); if (lbGameList.SelectedIndex == -1) { return; } MatchStatistics ms = sm.GetMatchByIndex(listedGameIndexes[lbGameList.SelectedIndex]); List <PlayerStatistics> players = new List <PlayerStatistics>(); for (int i = 0; i < ms.GetPlayerCount(); i++) { players.Add(ms.GetPlayer(i)); } players = players.OrderBy(p => p.Score).Reverse().ToList(); Color textColor = UISettings.AltColor; for (int i = 0; i < ms.GetPlayerCount(); i++) { PlayerStatistics ps = players[i]; //List<string> items = new List<string>(); List <XNAListBoxItem> items = new List <XNAListBoxItem>(); if (ps.Color > -1 && ps.Color < mpColors.Count) { textColor = mpColors[ps.Color].XnaColor; } if (ps.IsAI) { items.Add(new XNAListBoxItem(AILevelToString(ps.AILevel), textColor)); } else { items.Add(new XNAListBoxItem(ps.Name, textColor)); } if (ps.WasSpectator) { // Player was a spectator items.Add(new XNAListBoxItem("-", textColor)); items.Add(new XNAListBoxItem("-", textColor)); items.Add(new XNAListBoxItem("-", textColor)); items.Add(new XNAListBoxItem("-", textColor)); items.Add(new XNAListBoxItem("-", textColor)); XNAListBoxItem spectatorItem = new XNAListBoxItem(); spectatorItem.Text = "Spectator"; spectatorItem.TextColor = textColor; spectatorItem.Texture = sideTextures[sideTextures.Length - 1]; items.Add(spectatorItem); items.Add(new XNAListBoxItem("-", textColor)); } else { if (!ms.SawCompletion) { // The game wasn't completed - we don't know the stats items.Add(new XNAListBoxItem("-", textColor)); items.Add(new XNAListBoxItem("-", textColor)); items.Add(new XNAListBoxItem("-", textColor)); items.Add(new XNAListBoxItem("-", textColor)); items.Add(new XNAListBoxItem("-", textColor)); } else { // The game was completed and the player was actually playing items.Add(new XNAListBoxItem(ps.Kills.ToString(), textColor)); items.Add(new XNAListBoxItem(ps.Losses.ToString(), textColor)); items.Add(new XNAListBoxItem(ps.Economy.ToString(), textColor)); items.Add(new XNAListBoxItem(ps.Score.ToString(), textColor)); items.Add(new XNAListBoxItem( Conversions.BooleanToString(ps.Won, BooleanStringStyle.YESNO), textColor)); } if (ps.Side == 0 || ps.Side > sides.Length) { items.Add(new XNAListBoxItem("Unknown", textColor)); } else { XNAListBoxItem sideItem = new XNAListBoxItem(); sideItem.Text = sides[ps.Side - 1]; sideItem.TextColor = textColor; sideItem.Texture = sideTextures[ps.Side - 1]; items.Add(sideItem); } items.Add(new XNAListBoxItem(TeamIndexToString(ps.Team), textColor)); } if (!ps.IsLocalPlayer) { lbGameStatistics.AddItem(items); items.ForEach(item => item.Selectable = false); } else { lbGameStatistics.AddItem(items); lbGameStatistics.SelectedIndex = i; } } }
public void UpdateUserInfo(ChannelUser user) { XNAListBoxItem item = Items.Find(x => x.Tag == user); UpdateItemInfo(user, item); }
/// <summary> /// Parses a Battle(E).ini file. Returns true if succesful (file found), otherwise false. /// </summary> /// <param name="path">The path of the file, relative to the game directory.</param> /// <returns>True if succesful, otherwise false.</returns> private bool ParseBattleIni(string path) { Logger.Log("Attempting to parse " + path + " to populate mission list."); string battleIniPath = ProgramConstants.GamePath + path; if (!File.Exists(battleIniPath)) { Logger.Log("File " + path + " not found. Ignoring."); return(false); } IniFile battleIni = new IniFile(battleIniPath); List <string> battleKeys = battleIni.GetSectionKeys("Battles"); if (battleKeys == null) { return(false); // File exists but [Battles] doesn't } foreach (string battleEntry in battleKeys) { string battleSection = battleIni.GetStringValue("Battles", battleEntry, "NOT FOUND"); if (!battleIni.SectionExists(battleSection)) { continue; } var mission = new Mission(battleIni, battleSection); Missions.Add(mission); XNAListBoxItem item = new XNAListBoxItem(); item.Text = mission.GUIName; if (!mission.Enabled) { item.TextColor = UISettings.ActiveSettings.DisabledItemColor; } else if (string.IsNullOrEmpty(mission.Scenario)) { item.TextColor = AssetLoader.GetColorFromString( ClientConfiguration.Instance.ListBoxHeaderColor); item.IsHeader = true; item.Selectable = false; } else { item.TextColor = lbCampaignList.DefaultItemColor; } if (!string.IsNullOrEmpty(mission.IconPath)) { item.Texture = AssetLoader.LoadTexture(mission.IconPath + "icon.png"); } lbCampaignList.AddItem(item); } Logger.Log("Finished parsing " + path + "."); return(true); }
public override void Draw(GameTime gameTime) { DrawPanel(); int height = 2 - (ViewTop % LineHeight); for (int i = TopIndex; i < Items.Count; i++) { XNAListBoxItem lbItem = Items[i]; var user = (ChannelUser)lbItem.Tag; if (height > Height) { break; } int x = TextBorderDistance; if (i == SelectedIndex) { int drawnWidth; if (DrawSelectionUnderScrollbar || !ScrollBar.IsDrawn() || !EnableScrollbar) { drawnWidth = Width - 2; } else { drawnWidth = Width - 2 - ScrollBar.Width; } FillRectangle(new Rectangle(1, height, drawnWidth, lbItem.TextLines.Count * LineHeight), FocusColor); } DrawTexture(user.IsAdmin ? adminGameIcon : lbItem.Texture, new Rectangle(x, height, adminGameIcon.Width, adminGameIcon.Height), Color.White); x += adminGameIcon.Width + MARGIN; // Friend Icon if (user.IRCUser.IsFriend) { DrawTexture(friendIcon, new Rectangle(x, height, friendIcon.Width, friendIcon.Height), Color.White); x += friendIcon.Width + MARGIN; } // Ignore Icon else if (user.IRCUser.IsIgnored && !user.IsAdmin) { DrawTexture(ignoreIcon, new Rectangle(x, height, ignoreIcon.Width, ignoreIcon.Height), Color.White); x += ignoreIcon.Width + MARGIN; } // Badge Icon - coming soon /* * Renderer.DrawTexture(badgeGameIcon, * new Rectangle(windowRectangle.X + x, windowRectangle.Y + height, * badgeGameIcon.Width, badgeGameIcon.Height), Color.White); * * x += badgeGameIcon.Width + margin; */ // Player Name string name = user.IsAdmin ? user.IRCUser.Name + " (Admin)" : user.IRCUser.Name; x += lbItem.TextXPadding; DrawStringWithShadow(name, FontIndex, new Vector2(x, height), user.IsAdmin ? Color.Red : lbItem.TextColor); height += LineHeight; } if (DrawBorders) { DrawPanelBorders(); } DrawChildren(gameTime); }