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); } } }
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); }
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); } }