ACR_ServerCommunicator.PlayerState.UpdateChatSelectGUIHeaders C# (CSharp) Method

UpdateChatSelectGUIHeaders() public method

This method updates the chat select GUI headers if the player had the GUI active. It is called after the count of players displayed has changed. N.B. This routine is assumed to be called in-thread-context on the main thread.
public UpdateChatSelectGUIHeaders ( ) : void
return void
        public void UpdateChatSelectGUIHeaders()
        {
            bool Expanded = ChatSelectGUIExpanded;

            string LocalPlayerListHeading = (!Expanded ? "Players" : "Local Players");
            string LocalDMListHeading = (!Expanded ? "DMs" : "Local DMs");
            string RemotePlayerListHeading = "Remote Players";
            string RemoteDMListHeading = "Remote DMs";

            LocalPlayerListHeading += String.Format(" ({0})", ChatSelectLocalPlayersShown);
            LocalDMListHeading += String.Format(" ({0})", ChatSelectLocalDMsShown);

            Communicator.SetGUIObjectText(ObjectId, "ChatSelect", "HEADER_LPL", -1, LocalPlayerListHeading);
            Communicator.SetGUIObjectText(ObjectId, "ChatSelect", "HEADER_LDM", -1, LocalDMListHeading);

            if (!Expanded)
                return;

            RemotePlayerListHeading += String.Format(" ({0})", ChatSelectRemotePlayersShown);
            RemoteDMListHeading += String.Format(" ({0})", ChatSelectRemoteDMsShown);

            Communicator.SetGUIObjectText(ObjectId, "ChatSelect", "HEADER_RPL", -1, RemotePlayerListHeading);
            Communicator.SetGUIObjectText(ObjectId, "ChatSelect", "HEADER_RDM", -1, RemoteDMListHeading);
        }

Usage Example

        /// <summary>
        /// This method is called to resynchronize the GUI state of a player
        /// that executed a server to server portal, if the player is in an
        /// area.
        /// </summary>
        /// <param name="ResyncInfo">Supplies the resync block for the
        /// player.  This contains the deserialized resynchronization command
        /// data.</param>
        /// <param name="PCObject">Supplies the player object id.</param>
        /// <param name="Script">Supplies the script object.</param>
        /// <param name="Tries">Supplies the count of retries.</param>
        private static void ResynchronizePlayerState(ResyncState ResyncInfo, uint PCObject, ACR_ServerCommunicator Script, int Tries = 0)
        {
            if (Script.GetIsObjectValid(PCObject) == ACR_ServerCommunicator.FALSE)
            {
                //
                // The player logged out while a resync request was pending.
                // Throw away the state as it is no longer needed on a full log
                // out and log in sequence.
                //

                return;
            }

            if ((Script.GetArea(PCObject) == ACR_ServerCommunicator.OBJECT_INVALID) ||
                (Script.GetScriptHidden(PCObject) != ACR_ServerCommunicator.FALSE))
            {
                //
                // The player may still be in transition or is not yet loaded.
                // Queue the request.
                //

                if (Tries < MAX_RESYNC_RETRIES)
                {
                    Script.DelayCommand(RESYNC_RETRY_INTERVAL, delegate()
                    {
                        ResynchronizePlayerState(ResyncInfo, PCObject, Script, Tries + 1);
                    });
                }

                return;
            }

            PlayerState State = Script.TryGetPlayerState(PCObject);

            if (State == null)
            {
                return;
            }

            //
            // Area transition has finished.  Apply the GUI state now.
            //

            State.ChatSelectGUIExpanded = ((ResyncInfo.ResyncFlags & RESYNC_FLAG_CHAT_SELECT_EXPANDED) != 0);
            State.UpdateChatSelectGUIHeaders();

            Script.SendMessageToPC(PCObject, "Server to server portal completed.");
            Script.WriteTimestampedLogEntry(String.Format(
                                                "ACR_ServerCommunicator.GUIResynchronizer.ResynchronizePlayerState: Resynchronized player GUI state for player {0} after server-to-server portal.",
                                                Script.GetName(PCObject)));
        }
All Usage Examples Of ACR_ServerCommunicator.PlayerState::UpdateChatSelectGUIHeaders