Пример #1
0
        private void OnComponentStart(EntityUid uid, RgbLightControllerComponent rgb, ComponentStartup args)
        {
            GetOriginalColors(uid, rgb);

            // trigger visuals updated events
            _itemSystem.VisualsChanged(uid);
        }
Пример #2
0
        private void OnHeldVisualsUpdated(EntityUid uid, RgbLightControllerComponent rgb, HeldVisualsUpdatedEvent args)
        {
            if (args.RevealedLayers.Count == 0)
            {
                rgb.Holder       = null;
                rgb.HolderLayers = null;
                return;
            }

            rgb.Holder       = args.User;
            rgb.HolderLayers = new();

            if (!TryComp(args.User, out SpriteComponent? sprite))
            {
                return;
            }

            foreach (var key in args.RevealedLayers)
            {
                if (!sprite.LayerMapTryGet(key, out var index) || sprite[index] is not Layer layer)
                {
                    continue;
                }

                if (layer.ShaderPrototype == "unshaded")
                {
                    rgb.HolderLayers.Add(key);
                }
            }
        }
Пример #3
0
        private void OnComponentShutdown(EntityUid uid, RgbLightControllerComponent rgb, ComponentShutdown args)
        {
            ResetOriginalColors(uid, rgb);

            // and reset any in-hands or clothing sprites
            _itemSystem.VisualsChanged(uid);
        }
Пример #4
0
 public static Color GetCurrentRgbColor(TimeSpan curTime, TimeSpan offset, RgbLightControllerComponent rgb)
 {
     return(Color.FromHsv(new Vector4(
                              (float)(((curTime.TotalSeconds - offset.TotalSeconds) * rgb.CycleRate + Math.Abs(rgb.Owner.GetHashCode() * 0.1)) % 1),
                              1.0f,
                              1.0f,
                              1.0f
                              )));
 }
Пример #5
0
        private void OnHandleState(EntityUid uid, RgbLightControllerComponent rgb, ref ComponentHandleState args)
        {
            if (args.Current is not RgbLightControllerState state)
            {
                return;
            }

            ResetOriginalColors(uid, rgb);
            rgb.CycleRate = state.CycleRate;
            rgb.Layers    = state.Layers;
            GetOriginalColors(uid, rgb);
        }
Пример #6
0
        private void OnHandleState(EntityUid uid, RgbLightControllerComponent rgb, ref ComponentHandleState args)
        {
            if (args.Current is not RgbLightControllerState state)
            {
                return;
            }

            ResetSpriteColors(uid, rgb);
            rgb.CycleRate = state.CycleRate;
            rgb.Layers    = state.Layers;

            // get the new original sprite colors (necessary if rgb.Layers was updated).
            GetOriginalSpriteColors(uid, rgb);
        }
Пример #7
0
        private void OnComponentShutdown(EntityUid uid, RgbLightControllerComponent rgb, ComponentShutdown args)
        {
            if (TryComp(uid, out PointLightComponent? light))
            {
                light.Color = rgb.OriginalLightColor;
            }

            if (TryComp(uid, out SharedItemComponent? item))
            {
                item.Color = rgb.OriginalItemColor;
            }

            ResetSpriteColors(uid, rgb);
        }
Пример #8
0
        private void OnComponentStart(EntityUid uid, RgbLightControllerComponent rgb, ComponentStartup args)
        {
            if (TryComp(uid, out PointLightComponent? light))
            {
                rgb.OriginalLightColor = light.Color;
            }

            if (TryComp(uid, out SharedItemComponent? item))
            {
                rgb.OriginalItemColor = item.Color;
            }

            GetOriginalSpriteColors(uid, rgb);
        }
Пример #9
0
 private void OnGetState(EntityUid uid, RgbLightControllerComponent component, ref ComponentGetState args)
 {
     args.State = new RgbLightControllerState(component.CycleRate, component.Layers);
 }
Пример #10
0
 private void OnGotUnequipped(EntityUid uid, RgbLightControllerComponent rgb, GotUnequippedEvent args)
 {
     rgb.Holder       = null;
     rgb.HolderLayers = null;
 }