ACR_ServerCommunicator.ACR_ServerCommunicator.ACR_PopulateChatSelect C# (CSharp) Method

ACR_PopulateChatSelect() private method

Populate the chat select GUI. This may be called as part of the enter event or the opening of the chat select GUI
private ACR_PopulateChatSelect ( uint PlayerObject ) : void
PlayerObject uint Supplies the sender player object. ///
return void
        private void ACR_PopulateChatSelect(uint PlayerObject)
        {
            PlayerState Player = TryGetPlayerState(PlayerObject);

            if (Player == null)
                return;

            Player.CharacterIdsShown.Clear();
            Player.ChatSelectLocalPlayersShown = 0;
            Player.ChatSelectLocalDMsShown = 0;
            Player.ChatSelectRemotePlayersShown = 0;
            Player.ChatSelectRemoteDMsShown = 0;

            ClearListBox(Player.ObjectId, "ChatSelect", "LocalPlayerList");
            ClearListBox(Player.ObjectId, "ChatSelect", "LocalDMList");
            ClearListBox(Player.ObjectId, "ChatSelect", "RemotePlayerList");
            ClearListBox(Player.ObjectId, "ChatSelect", "RemoteDMList");

            int bExpanded = GetLocalInt(Player.ObjectId, "chatselect_expanded");

            lock (WorldManager)
            {
                var OnlineServers = from S in WorldManager.Servers
                                    where S.Online &&
                                    S.Characters.Count > 0
                                    select S;

                foreach (GameServer Server in OnlineServers)
                {
                    if (Server.DatabaseId == GetDatabase().ACR_GetServerID() || bExpanded == FALSE)
                    {
                        if (Server.DatabaseId == GetDatabase().ACR_GetServerID())
                        {
                            foreach (GameCharacter Character in Server.Characters)
                            {
                                if (Character.Player.IsDM)
                                {
                                    AddListBoxRow(Player.ObjectId, "ChatSelect", "LocalDMList", Character.CharacterName, "RosterData=/t \"" + Character.CharacterName + "\"", "", "5=/t \"" + Character.CharacterName + "\" ", "");
                                    Player.CharacterIdsShown.Add(Character.CharacterId);
                                    Player.ChatSelectLocalDMsShown += 1;
                                }
                                else
                                {
                                    AddListBoxRow(Player.ObjectId, "ChatSelect", "LocalPlayerList", Character.CharacterName, "RosterData=/t \"" + Character.CharacterName + "\"", "", "5=/t \"" + Character.CharacterName + "\" ", "");
                                    Player.CharacterIdsShown.Add(Character.CharacterId);
                                    Player.ChatSelectLocalPlayersShown += 1;
                                }
                            }
                        }
                        else
                        {
                            if (Player.Flags.HasFlag(PlayerStateFlags.ChatSelectShowLocalPlayersOnlyWhenCollapsed))
                                continue;

                            foreach (GameCharacter Character in Server.Characters)
                            {
                                if (Character.Player.IsDM)
                                {
                                    AddListBoxRow(Player.ObjectId, "ChatSelect", "LocalDMList", Character.CharacterName, "RosterData=#t \"" + Character.CharacterName + "\"", "", "5=#t \"" + Character.CharacterName + "\" ", "");
                                    Player.CharacterIdsShown.Add(Character.CharacterId);
                                    Player.ChatSelectLocalDMsShown += 1;
                                }
                                else
                                {
                                    AddListBoxRow(Player.ObjectId, "ChatSelect", "LocalPlayerList", Character.CharacterName, "RosterData=#t \"" + Character.CharacterName + "\"", "", "5=#t \"" + Character.CharacterName + "\" ", "");
                                    Player.CharacterIdsShown.Add(Character.CharacterId);
                                    Player.ChatSelectLocalPlayersShown += 1;
                                }
                            }
                        }
                    }
                    else
                    {
                        foreach (GameCharacter Character in Server.Characters)
                        {
                            if (Character.Player.IsDM)
                            {
                                AddListBoxRow(Player.ObjectId, "ChatSelect", "RemoteDMList", Character.CharacterName, "RosterData=#t \"" + Character.CharacterName + "\"", "", "5=#t \"" + Character.CharacterName + "\" ", "");
                                Player.CharacterIdsShown.Add(Character.CharacterId);
                                Player.ChatSelectRemoteDMsShown += 1;
                            }
                            else
                            {
                                AddListBoxRow(Player.ObjectId, "ChatSelect", "RemotePlayerList", Character.CharacterName, "RosterData=#t \"" + Character.CharacterName + "\"", "", "5=#t \"" + Character.CharacterName + "\" ", "");
                                Player.CharacterIdsShown.Add(Character.CharacterId);
                                Player.ChatSelectRemotePlayersShown += 1;
                            }
                        }
                    }
                }
            }

            Player.UpdateChatSelectGUIHeaders();
        }
ACR_ServerCommunicator