コード例 #1
0
        private void Disconnected([NotNull] UnturnedPlayer player)
        {
            var playerId = player.CSteamID.m_SteamID;

            if (BarricadeManager.regions == null)
            {
                return;
            }

            var buildables = BarricadeManager.regions.Cast <BarricadeRegion>().Concat(BarricadeManager.vehicleRegions)
                             .SelectMany(k => k.drops)
                             .Select(k =>
                                     !Configuration.Instance.ItemsToDisable.Contains(k.asset.id) ||
                                     k.GetServersideData().owner != playerId
                        ? null
                        : k.interactable).Where(k => k != null).ToList();

            foreach (var interactable in buildables)
            {
                switch (interactable)
                {
                case InteractableSafezone saf:
                    BarricadeManager.ServerSetSafezonePowered(saf, false);
                    break;

                case InteractableOxygenator oxy:
                    BarricadeManager.ServerSetOxygenatorPowered(oxy, false);
                    break;

                case InteractableSpot spot:
                    BarricadeManager.ServerSetSpotPowered(spot, false);
                    break;

                case InteractableGenerator gen:
                    BarricadeManager.ServerSetGeneratorPowered(gen, false);
                    break;

                case InteractableFire fire:
                    BarricadeManager.ServerSetFireLit(fire, false);
                    break;

                case InteractableOven oven:
                    BarricadeManager.ServerSetOvenLit(oven, false);
                    break;

                case InteractableStereo stereo:
                    BarricadeManager.ServerSetStereoTrack(stereo, Guid.Empty);
                    break;
                }
            }

            Logger.Log($"Turned off {buildables.Count} barricades.");
        }