Exemplo n.º 1
0
        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);
                    }
                }
            }
        }
Exemplo n.º 3
0
        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;
                }
            }
        }
Exemplo n.º 4
0
        public void AddUser(ChannelUser user)
        {
            XNAListBoxItem item = new XNAListBoxItem();

            UpdateItemInfo(user, item);
            AddItem(item);
        }
Exemplo n.º 5
0
        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();
            }
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        /// <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));
        };
Exemplo n.º 8
0
        /// <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));
        };
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 11
0
        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);
                    }
                }
            }
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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;
        }
Exemplo n.º 15
0
        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;
                }
            }
        }
Exemplo n.º 16
0
        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;
                }
            }
        }
Exemplo n.º 17
0
        public void UpdateUserInfo(ChannelUser user)
        {
            XNAListBoxItem item = Items.Find(x => x.Tag == user);

            UpdateItemInfo(user, item);
        }
Exemplo n.º 18
0
        /// <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);
        }
Exemplo n.º 19
0
        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);
        }