private void OnExpLightInit(EntityUid uid, ExpendableLightComponent component, ComponentInit args) { if (TryComp <SharedItemComponent?>(uid, out var item)) { item.EquippedPrefix = "unlit"; } component.CurrentState = ExpendableLightState.BrandNew; EntityManager.EnsureComponent <PointLightComponent>(uid); }
private void OnExpLightInit(EntityUid uid, ExpendableLightComponent component, ComponentInit args) { if (TryComp <ItemComponent?>(uid, out var item)) { _item.SetHeldPrefix(uid, "unlit", item); } component.CurrentState = ExpendableLightState.BrandNew; EntityManager.EnsureComponent <PointLightComponent>(uid); }
private void OnExpLightUse(EntityUid uid, ExpendableLightComponent component, UseInHandEvent args) { if (args.Handled) { return; } if (TryActivate(component)) { args.Handled = true; } }
private void UpdateSpriteAndSounds(ExpendableLightComponent component) { if (TryComp <SpriteComponent>(component.Owner, out var sprite)) { switch (component.CurrentState) { case ExpendableLightState.Lit: { SoundSystem.Play(component.LitSound.GetSound(), Filter.Pvs(component.Owner), component.Owner); if (component.IconStateLit != string.Empty) { sprite.LayerSetState(2, component.IconStateLit); sprite.LayerSetShader(2, "shaded"); } sprite.LayerSetVisible(1, true); break; } case ExpendableLightState.Fading: { break; } default: case ExpendableLightState.Dead: { if (component.DieSound != null) { SoundSystem.Play(component.DieSound.GetSound(), Filter.Pvs(component.Owner), component.Owner); } sprite.LayerSetState(0, component.IconStateSpent); sprite.LayerSetShader(0, "shaded"); sprite.LayerSetVisible(1, false); break; } } } if (TryComp <ClothingComponent>(component.Owner, out var clothing)) { clothing.EquippedPrefix = component.Activated ? "Activated" : string.Empty; } }
/// <summary> /// Enables the light if it is not active. Once active it cannot be turned off. /// </summary> public bool TryActivate(ExpendableLightComponent component) { if (!component.Activated && component.CurrentState == ExpendableLightState.BrandNew) { if (TryComp <SharedItemComponent>(component.Owner, out var item)) { item.EquippedPrefix = "lit"; } component.CurrentState = ExpendableLightState.Lit; component.StateExpiryTime = component.GlowDuration; UpdateSpriteAndSounds(component); UpdateVisualizer(component); return(true); } return(false); }
private void AddIgniteVerb(EntityUid uid, ExpendableLightComponent component, GetActivationVerbsEvent args) { if (!args.CanAccess || !args.CanInteract) { return; } if (component.CurrentState != ExpendableLightState.BrandNew) { return; } // Ignite the flare or make the glowstick glow. // Also hot damn, those are some shitty glowsticks, we need to get a refund. Verb verb = new(); verb.Text = Loc.GetString("expendable-light-start-verb"); verb.IconTexture = "/Textures/Interface/VerbIcons/light.svg.192dpi.png"; verb.Act = () => component.TryActivate(); args.Verbs.Add(verb); }
private void UpdateLight(ExpendableLightComponent component, float frameTime) { if (!component.Activated) { return; } component.StateExpiryTime -= frameTime; if (component.StateExpiryTime <= 0f) { switch (component.CurrentState) { case ExpendableLightState.Lit: component.CurrentState = ExpendableLightState.Fading; component.StateExpiryTime = component.FadeOutDuration; UpdateVisualizer(component); break; default: case ExpendableLightState.Fading: component.CurrentState = ExpendableLightState.Dead; var meta = MetaData(component.Owner); meta.EntityName = component.SpentName; meta.EntityDescription = component.SpentDesc; UpdateSpriteAndSounds(component); UpdateVisualizer(component); if (TryComp <SharedItemComponent>(component.Owner, out var item)) { item.EquippedPrefix = "unlit"; } break; } } }
private void UpdateVisualizer(ExpendableLightComponent component, AppearanceComponent?appearance = null) { if (!Resolve(component.Owner, ref appearance, false)) { return; } appearance.SetData(ExpendableLightVisuals.State, component.CurrentState); switch (component.CurrentState) { case ExpendableLightState.Lit: appearance.SetData(ExpendableLightVisuals.Behavior, component.TurnOnBehaviourID); break; case ExpendableLightState.Fading: appearance.SetData(ExpendableLightVisuals.Behavior, component.FadeOutBehaviourID); break; case ExpendableLightState.Dead: appearance.SetData(ExpendableLightVisuals.Behavior, string.Empty); break; } }