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", }); }
void UpdateIcon() { // Try to turn this into a loop without hard to understand bit fuckery or 20 lines of helper functions. // Challenge: do it in less lines. // I dare you. // No cheating like putting everything on a single line. Proper code conventions. // This comment does not count, btw. Sprite.LayerSetState(CornerLayers.NE, $"{StateBase}{(int)CornerNE}"); Sprite.LayerSetState(CornerLayers.SE, $"{StateBase}{(int)CornerSE}"); Sprite.LayerSetState(CornerLayers.SW, $"{StateBase}{(int)CornerSW}"); Sprite.LayerSetState(CornerLayers.NW, $"{StateBase}{(int)CornerNW}"); }
public void UpdateSprite() { var lowWall = FindLowWall(); if (lowWall == null) { return; } _sprite.LayerSetState(CornerLayers.NE, $"{_stateBase}{(int) lowWall.LastCornerNE}"); _sprite.LayerSetState(CornerLayers.SE, $"{_stateBase}{(int) lowWall.LastCornerSE}"); _sprite.LayerSetState(CornerLayers.SW, $"{_stateBase}{(int) lowWall.LastCornerSW}"); _sprite.LayerSetState(CornerLayers.NW, $"{_stateBase}{(int) lowWall.LastCornerNW}"); }
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); } }
// 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); }
private void UpdateAppearance(AppearanceComponent component, ISpriteComponent sprite) { var state = _stateOff; if (component.TryGetData(ConveyorVisuals.State, out ConveyorState conveyorState) && conveyorState != ConveyorState.Off) { state = _stateOn; } if (component.TryGetData(RecyclerVisuals.Bloody, out bool bloody) && bloody) { state += "bld"; } sprite.LayerSetState(RecyclerVisualLayers.Main, state); }
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); }
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); }
internal override void CalculateNewSprite() { base.CalculateNewSprite(); var(n, nl) = MatchingWall(SnapGrid.GetInDir(Direction.North)); var(ne, nel) = MatchingWall(SnapGrid.GetInDir(Direction.NorthEast)); var(e, el) = MatchingWall(SnapGrid.GetInDir(Direction.East)); var(se, sel) = MatchingWall(SnapGrid.GetInDir(Direction.SouthEast)); var(s, sl) = MatchingWall(SnapGrid.GetInDir(Direction.South)); var(sw, swl) = MatchingWall(SnapGrid.GetInDir(Direction.SouthWest)); var(w, wl) = MatchingWall(SnapGrid.GetInDir(Direction.West)); var(nw, nwl) = MatchingWall(SnapGrid.GetInDir(Direction.NorthWest)); // ReSharper disable InconsistentNaming var cornerNE = CornerFill.None; var cornerSE = CornerFill.None; var cornerSW = CornerFill.None; var cornerNW = CornerFill.None; var lowCornerNE = CornerFill.None; var lowCornerSE = CornerFill.None; var lowCornerSW = CornerFill.None; var lowCornerNW = CornerFill.None; // ReSharper restore InconsistentNaming if (n) { cornerNE |= CornerFill.CounterClockwise; cornerNW |= CornerFill.Clockwise; if (!nl) { lowCornerNE |= CornerFill.CounterClockwise; lowCornerNW |= CornerFill.Clockwise; } } if (ne) { cornerNE |= CornerFill.Diagonal; if (!nel && (nl || el || n && e)) { lowCornerNE |= CornerFill.Diagonal; } } if (e) { cornerNE |= CornerFill.Clockwise; cornerSE |= CornerFill.CounterClockwise; if (!el) { lowCornerNE |= CornerFill.Clockwise; lowCornerSE |= CornerFill.CounterClockwise; } } if (se) { cornerSE |= CornerFill.Diagonal; if (!sel && (sl || el || s && e)) { lowCornerSE |= CornerFill.Diagonal; } } if (s) { cornerSE |= CornerFill.Clockwise; cornerSW |= CornerFill.CounterClockwise; if (!sl) { lowCornerSE |= CornerFill.Clockwise; lowCornerSW |= CornerFill.CounterClockwise; } } if (sw) { cornerSW |= CornerFill.Diagonal; if (!swl && (sl || wl || s && w)) { lowCornerSW |= CornerFill.Diagonal; } } if (w) { cornerSW |= CornerFill.Clockwise; cornerNW |= CornerFill.CounterClockwise; if (!wl) { lowCornerSW |= CornerFill.Clockwise; lowCornerNW |= CornerFill.CounterClockwise; } } if (nw) { cornerNW |= CornerFill.Diagonal; if (!nwl && (nl || wl || n && w)) { lowCornerNW |= CornerFill.Diagonal; } } Sprite.LayerSetState(CornerLayers.NE, $"{StateBase}{(int) cornerNE}"); Sprite.LayerSetState(CornerLayers.SE, $"{StateBase}{(int) cornerSE}"); Sprite.LayerSetState(CornerLayers.SW, $"{StateBase}{(int) cornerSW}"); Sprite.LayerSetState(CornerLayers.NW, $"{StateBase}{(int) cornerNW}"); _overlaySprite.LayerSetState(OverCornerLayers.NE, $"{StateBase}over_{(int) lowCornerNE}"); _overlaySprite.LayerSetState(OverCornerLayers.SE, $"{StateBase}over_{(int) lowCornerSE}"); _overlaySprite.LayerSetState(OverCornerLayers.SW, $"{StateBase}over_{(int) lowCornerSW}"); _overlaySprite.LayerSetState(OverCornerLayers.NW, $"{StateBase}over_{(int) lowCornerNW}"); LastCornerNE = cornerNE; LastCornerSE = cornerSE; LastCornerSW = cornerSW; LastCornerNW = cornerNW; foreach (var entity in SnapGrid.GetLocal()) { if (entity.TryGetComponent(out WindowComponent window)) { window.UpdateSprite(); } } }