/// <summary>
        /// Writes the fields to be sync on an outgoing message.
        /// </summary>
        /// <param name="message">The outgoing message</param>
        /// <param name="forceAllFields">Indicates if all fields must be forced to sync</param>
        internal void WriteSyncMessage(OutgoingMessage message, bool forceAllFields = false)
        {
            if (forceAllFields)
            {
                this.pendingSyncFields = RoomFieldsFlags.All;
            }
            else if (this.CustomProperties.NeedSync)
            {
                this.pendingSyncFields |= RoomFieldsFlags.CustomProperties;
            }

            this.WriteToMessage(message, this.pendingSyncFields);

            this.pendingSyncFields = RoomFieldsFlags.None;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Writes the specified fields to an outgoing message.
        /// </summary>
        /// <param name="message">The outgoing message</param>
        /// <param name="includedFields">Indicates the fields that must synchronized</param>
        protected void WriteToMessage(OutgoingMessage message, RoomFieldsFlags includedFields)
        {
            message.Write((byte)includedFields);

            if (includedFields.HasFlag(RoomFieldsFlags.IsVisible))
            {
                message.Write(this.IsVisible);
            }

            if (includedFields.HasFlag(RoomFieldsFlags.MaxPlayers))
            {
                message.Write(this.MaxPlayers);
            }

            if (includedFields.HasFlag(RoomFieldsFlags.CustomProperties))
            {
                this.CustomProperties.WriteToMessage(message);
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Called when one or more properties are refreshed.
 /// </summary>
 /// <param name="changedFields">Flag indicating what fields have been changed</param>
 protected virtual void OnChange(RoomFieldsFlags changedFields)
 {
 }