コード例 #1
0
        private static void OnResetScriptToggled(object sender, PropertyChangedEventArgs args)
        {
            if (args.PropertyName == nameof(ScriptManagerConfig.ResetScriptEnabled))
            {
                var action = ListUpdateAction.REMOVE;
                if (ScriptManagerPlugin.Instance.Config.ResetScriptEnabled)
                {
                    action = ListUpdateAction.ADD;
                }

                bool isAlreadyActive = m_scripts.ContainsKey(ResetPBScript.Id);
                if ((isAlreadyActive && action == ListUpdateAction.ADD) ||
                    (!isAlreadyActive && action == ListUpdateAction.REMOVE))
                {
                    return;
                }

                if (messagingReady)
                {
                    var request = new WhitelistActionRequest(
                        MyAPIGateway.Multiplayer.MyId,
                        action, new Dictionary <long, string> {
                        { ResetPBScript.Id, ResetPBScript.Name }
                    });
                    Broadcast(request);
                }
            }
        }
コード例 #2
0
        public static void SendWhitelistToClient(ulong clientId)
        {
            Log.Info("Sending whitelist to client '{0}'...", clientId);

            var request = new WhitelistActionRequest(
                MyAPIGateway.Multiplayer.MyId,
                ListUpdateAction.ADD,
                m_scripts);

            NetworkUtil.SendToClient(clientId, request);
        }
コード例 #3
0
        private static void UpdateWhitelist(object sender, NotifyCollectionChangedEventArgs e)
        {
            ListUpdateAction          action  = ListUpdateAction.ADD;
            Dictionary <long, string> scripts = new Dictionary <long, string>();

            if (e.Action == NotifyCollectionChangedAction.Remove || e.Action == NotifyCollectionChangedAction.Reset)
            {
                foreach (var item in e.OldItems)
                {
                    var script = (item as ScriptEntry);
                    if (m_scripts.ContainsKey(script.Id))
                    {
                        m_scripts.Remove(script.Id);
                        scripts[script.Id] = script.Name;
                    }
                }
                action = ListUpdateAction.REMOVE;
            }
            else if (e.Action == NotifyCollectionChangedAction.Add || e.Action == NotifyCollectionChangedAction.Replace)
            {
                foreach (var item in e.NewItems)
                {
                    var script = (item as ScriptEntry);
                    if (script.Enabled)
                    {
                        m_scripts[script.Id] = script.Name;
                        scripts[script.Id]   = script.Name;
                    }
                }
                action = ListUpdateAction.ADD;
            }
            else
            {
                return;
            }

            if (scripts.Count == 0)
            {
                return;
            }

            if (messagingReady)
            {
                var request = new WhitelistActionRequest(
                    MyAPIGateway.Multiplayer.MyId,
                    action, scripts);
                Broadcast(request);
            }
        }