/// <inheritdoc /> protected override void Startup() { base.Startup(); _snapGrid.OnPositionChanged += SnapGridOnPositionChanged; Owner.EntityManager.EventBus.RaiseEvent(EventSource.Local, new WindowSmoothDirtyEvent(Owner)); var state0 = $"{_stateBase}0"; const string cracksRSIPath = "/Textures/Constructible/Structures/Windows/cracks.rsi"; _sprite.LayerMapSet(CornerLayers.SE, _sprite.AddLayerState(state0)); _sprite.LayerSetDirOffset(CornerLayers.SE, SpriteComponent.DirectionOffset.None); _sprite.LayerMapSet(WindowDamageLayers.DamageSE, _sprite.AddLayerState("0_1", cracksRSIPath)); _sprite.LayerSetVisible(WindowDamageLayers.DamageSE, false); _sprite.LayerMapSet(CornerLayers.NE, _sprite.AddLayerState(state0)); _sprite.LayerSetDirOffset(CornerLayers.NE, SpriteComponent.DirectionOffset.CounterClockwise); _sprite.LayerMapSet(WindowDamageLayers.DamageNE, _sprite.AddLayerState("0_1", cracksRSIPath)); _sprite.LayerSetDirOffset(WindowDamageLayers.DamageNE, SpriteComponent.DirectionOffset.CounterClockwise); _sprite.LayerSetVisible(WindowDamageLayers.DamageNE, false); _sprite.LayerMapSet(CornerLayers.NW, _sprite.AddLayerState(state0)); _sprite.LayerSetDirOffset(CornerLayers.NW, SpriteComponent.DirectionOffset.Flip); _sprite.LayerMapSet(WindowDamageLayers.DamageNW, _sprite.AddLayerState("0_1", cracksRSIPath)); _sprite.LayerSetDirOffset(WindowDamageLayers.DamageNW, SpriteComponent.DirectionOffset.Flip); _sprite.LayerSetVisible(WindowDamageLayers.DamageNW, false); _sprite.LayerMapSet(CornerLayers.SW, _sprite.AddLayerState(state0)); _sprite.LayerSetDirOffset(CornerLayers.SW, SpriteComponent.DirectionOffset.Clockwise); _sprite.LayerMapSet(WindowDamageLayers.DamageSW, _sprite.AddLayerState("0_1", cracksRSIPath)); _sprite.LayerSetDirOffset(WindowDamageLayers.DamageSW, SpriteComponent.DirectionOffset.Clockwise); _sprite.LayerSetVisible(WindowDamageLayers.DamageSW, false); }
private void _setHand(string hand, IEntity entity) { if (_sprite == null) { return; } if (entity == null) { _sprite.LayerSetVisible($"hand-{hand}", false); return; } var item = entity.GetComponent <ItemComponent>(); var maybeInhands = item.GetInHandStateInfo(hand); if (!maybeInhands.HasValue) { _sprite.LayerSetVisible($"hand-{hand}", false); } else { var(rsi, state) = maybeInhands.Value; _sprite.LayerSetVisible($"hand-{hand}", true); _sprite.LayerSetState($"hand-{hand}", state, rsi); } }
private void _setHand(string hand, IEntity entity) { if (_sprite == null) { return; } if (entity == null) { _sprite.LayerSetVisible($"hand-{hand}", false); return; } SetInHands(hand, entity); }
internal void SetSlotVisuals(Slots slot, IEntity entity) { if (_sprite == null) { return; } if (entity != null && entity.TryGetComponent(out ClothingComponent clothing)) { var flag = SlotMasks[slot]; var data = clothing.GetEquippedStateInfo(flag); if (data != null) { var(rsi, state) = data.Value; _sprite.LayerSetVisible(slot, true); _sprite.LayerSetState(slot, state, rsi); if (slot == Slots.INNERCLOTHING) { _sprite.LayerSetState(HumanoidVisualLayers.StencilMask, clothing.FemaleMask switch { FemaleClothingMask.NoMask => "female_none", FemaleClothingMask.UniformTop => "female_top", _ => "female_full", }); }
private void HideLayers(ISpriteComponent spriteComponent) { foreach (var layer in spriteComponent.AllLayers) { layer.Visible = false; } spriteComponent.LayerSetVisible(VendingMachineVisualLayers.Unlit, true); }
private void _setSlot(Slots slot, IEntity entity) { if (_sprite != null && entity.TryGetComponent(out ClothingComponent clothing)) { var flag = SlotMasks[slot]; var data = clothing.GetEquippedStateInfo(flag); if (data == null) { _sprite.LayerSetVisible(slot, false); } else { var(rsi, state) = data.Value; _sprite.LayerSetVisible(slot, true); _sprite.LayerSetRSI(slot, rsi); _sprite.LayerSetState(slot, state); } } InterfaceController?.AddToSlot(slot, entity); }
private void ActivateAnimation(ISpriteComponent spriteComponent, AnimationPlayerComponent animationPlayer, string key) { if (!_animations.TryGetValue(key, out var animation)) { return; } if (!animationPlayer.HasRunningAnimation(key)) { spriteComponent.LayerSetVisible(LayerMap[key], true); animationPlayer.Play(animation, key); } }
// Helper methods just to avoid all of that hard-to-read-indented code private void ActivateState(ISpriteComponent spriteComponent, string stateId) { // No state for it on the rsi :( if (!_baseStates[stateId]) { return; } var stateLayer = LayerMap[stateId]; spriteComponent.LayerSetVisible(stateLayer, true); spriteComponent.LayerSetState(stateLayer, stateId); }
internal void SetSlotVisuals(Slots slot, IEntity entity) { if (_sprite == null) { return; } if (entity != null && entity.TryGetComponent(out ClothingComponent clothing)) { var flag = SlotMasks[slot]; var data = clothing.GetEquippedStateInfo(flag); if (data != null) { var(rsi, state) = data.Value; _sprite.LayerSetVisible(slot, true); _sprite.LayerSetRSI(slot, rsi); _sprite.LayerSetState(slot, state); return; } } _sprite.LayerSetVisible(slot, false); }
private void HideHand(Hand hand) { _sprite?.LayerSetVisible($"hand-{hand.Name}", false); }
private void _clearSlot(Slots slot) { InterfaceController?.RemoveFromSlot(slot); _sprite?.LayerSetVisible(slot, false); }