Exemple #1
0
        private static void ApplyProperty(byte action, byte[] data, string ownerId, IPropertyHandler handler)
        {
            var actions = (PropertyAction)action;

            var property = new PropertyData();

            GsSerializer.Object.CallReadStream(property, data);

            switch (actions)
            {
            case PropertyAction.SetOrUpdateMemberProperty:
                handler.ApplyMemberProperty(ownerId, new Property(property.Name, property.Data));
                GsLiveRealtime.Callbacks.OnPropertyEvent?.Invoke(null, new OnPropertyEvent(property.Name, ownerId, actions, property.Data));
                break;

            case PropertyAction.RemoveMemberProperty:
                handler.RemoveMemberProperty(ownerId, property.Name);
                GsLiveRealtime.Callbacks.OnPropertyEvent?.Invoke(null, new OnPropertyEvent(property.Name, ownerId, actions));
                break;

            case PropertyAction.SetOrUpdateRoomProperty:
                handler.ApplyRoomProperty(new Property(property.Name, property.Data));
                GsLiveRealtime.Callbacks.OnPropertyEvent?.Invoke(null, new OnPropertyEvent(property.Name, ownerId, actions, property.Data));
                break;

            case PropertyAction.RemoveRoomProperty:
                handler.RemoveRoomProperty(property.Name);
                GsLiveRealtime.Callbacks.OnPropertyEvent?.Invoke(null, new OnPropertyEvent(property.Name, ownerId, actions));
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Exemple #2
0
        /// <summary>
        /// Remove a Room Property With propertyName
        /// </summary>
        /// <param name="propertyName">The name of a Property You Want To Remove it</param>
        public static void RemoveRoomProperty(string propertyName)
        {
            if (!IsAvailable)
            {
                throw new GameServiceException("GsLiveRealtime is Not Available");
            }

            if (!FiroozehGameService.Core.GameService.GSLive.IsRealTimeAvailable())
            {
                throw new GameServiceException("RealTime is Not Available");
            }

            _propertyHandler.RemoveRoomProperty(propertyName);

            var property = new PropertyData(propertyName);

            SenderUtil.NetworkProperty(property, PropertyAction.RemoveRoomProperty);
        }