public string SlotGroup => SlotDef.SlotGroup;
public string SlotDisplayName => SlotDef.DisplayName;
public string TextureName => "Slots/" + SlotDef.TextureName;
+ public string FullTextureName => SlotDef.FullTextureName;
public SlotData(SlotDefinition slotDef, ContainerSlot? container = null, bool highlighted = false,
bool blocked = false)
if (entity == null)
{
- button.SpriteView.SetEntity(null);
+ button.SetEntity(null);
return;
}
else
return;
- button.SpriteView.SetEntity(viewEnt);
+ button.SetEntity(viewEnt);
}
}
}
public SlotButton(SlotData slotData)
{
ButtonTexturePath = slotData.TextureName;
+ FullButtonTexturePath = slotData.FullTextureName;
Blocked = slotData.Blocked;
Highlight = slotData.Highlighted;
StorageTexturePath = "Slots/back";
public TextureRect ButtonRect { get; }
public TextureRect BlockedRect { get; }
public TextureRect HighlightRect { get; }
- public SpriteView SpriteView { get; }
public SpriteView HoverSpriteView { get; }
public TextureButton StorageButton { get; }
public CooldownGraphic CooldownDisplay { get; }
+ private SpriteView SpriteView { get; }
+
public EntityUid? Entity => SpriteView.Entity;
private bool _slotNameSet;
set
{
_buttonTexturePath = value;
- ButtonRect.Texture = Theme.ResolveTextureOrNull(_buttonTexturePath)?.Texture;
+ UpdateButtonTexture();
+ }
+ }
+
+ private string? _fullButtonTexturePath;
+ public string? FullButtonTexturePath
+ {
+ get => _fullButtonTexturePath;
+ set
+ {
+ _fullButtonTexturePath = value;
+ UpdateButtonTexture();
}
}
HoverSpriteView.SetEntity(null);
}
+ public void SetEntity(EntityUid? ent)
+ {
+ SpriteView.SetEntity(ent);
+ UpdateButtonTexture();
+ }
+
+ private void UpdateButtonTexture()
+ {
+ var fullTexture = Theme.ResolveTextureOrNull(_fullButtonTexturePath);
+ var texture = Entity.HasValue && fullTexture != null
+ ? fullTexture.Texture
+ : Theme.ResolveTextureOrNull(_buttonTexturePath)?.Texture;
+ ButtonRect.Texture = texture;
+ }
+
private void OnButtonPressed(GUIBoundKeyEventArgs args)
{
Pressed?.Invoke(args, this);
base.OnThemeUpdated();
StorageButton.TextureNormal = Theme.ResolveTextureOrNull(_storageTexturePath)?.Texture;
- ButtonRect.Texture = Theme.ResolveTextureOrNull(_buttonTexturePath)?.Texture;
HighlightRect.Texture = Theme.ResolveTextureOrNull(_highlightTexturePath)?.Texture;
+ UpdateButtonTexture();
}
EntityUid? IEntityControl.UiEntity => Entity;
if (_entities.TryGetComponent(hand.HeldEntity, out VirtualItemComponent? virt))
{
- handButton.SpriteView.SetEntity(virt.BlockingEntity);
+ handButton.SetEntity(virt.BlockingEntity);
handButton.Blocked = true;
}
else
{
- handButton.SpriteView.SetEntity(hand.HeldEntity);
+ handButton.SetEntity(hand.HeldEntity);
handButton.Blocked = false;
}
}
if (_entities.TryGetComponent(entity, out VirtualItemComponent? virt))
{
- hand.SpriteView.SetEntity(virt.BlockingEntity);
+ hand.SetEntity(virt.BlockingEntity);
hand.Blocked = true;
}
else
{
- hand.SpriteView.SetEntity(entity);
+ hand.SetEntity(entity);
hand.Blocked = false;
}
if (hand == null)
return;
- hand.SpriteView.SetEntity(null);
+ hand.SetEntity(null);
if (_playerHandsComponent?.ActiveHand?.Name == name)
HandsGui?.UpdatePanelEntity(null);
}
if (_strippingWindow?.InventoryButtons.GetButton(update.Name) is { } inventoryButton)
{
- inventoryButton.SpriteView.SetEntity(entity);
+ inventoryButton.SetEntity(entity);
inventoryButton.StorageButton.Visible = showStorage;
}
if (_entities.TryGetComponent(entity, out VirtualItemComponent? virtb))
{
- button.SpriteView.SetEntity(virtb.BlockingEntity);
+ button.SetEntity(virtb.BlockingEntity);
button.Blocked = true;
}
else
{
- button.SpriteView.SetEntity(entity);
+ button.SetEntity(entity);
button.Blocked = false;
button.StorageButton.Visible = showStorage;
}
{
[DataField("name", required: true)] public string Name { get; private set; } = string.Empty;
[DataField("slotTexture")] public string TextureName { get; private set; } = "pocket";
+ /// <summary>
+ /// The texture displayed in a slot when it has an item inside of it.
+ /// </summary>
+ [DataField] public string FullTextureName { get; private set; } = "SlotBackground";
[DataField("slotFlags")] public SlotFlags SlotFlags { get; private set; } = SlotFlags.PREVENTEQUIP;
[DataField("showInWindow")] public bool ShowInWindow { get; private set; } = true;
[DataField("slotGroup")] public string SlotGroup { get; private set; } = "Default";
displayName: ID
- name: id
slotTexture: id
+ fullTextureName: template_small
slotFlags: IDCARD
slotGroup: SecondHotbar
stripTime: 6
displayName: Head
- name: id
slotTexture: id
+ fullTextureName: template_small
slotFlags: IDCARD
slotGroup: SecondHotbar
stripTime: 6
displayName: ID
- name: belt
slotTexture: belt
+ fullTextureName: template_small
slotFlags: BELT
slotGroup: SecondHotbar
stripTime: 6
displayName: Belt
- name: back
slotTexture: back
+ fullTextureName: template_small
slotFlags: BACK
slotGroup: SecondHotbar
stripTime: 6
- name: pocket4
slotTexture: web
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
displayName: Pocket 4
- name: pocket3
slotTexture: web
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
displayName: Suit
- name: pocket1
slotTexture: pocket
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
stripHidden: true
- name: pocket2
slotTexture: pocket
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
displayName: Head
- name: pocket1
slotTexture: pocket
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
stripHidden: true
- name: pocket2
slotTexture: pocket
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
displayName: Suit Storage
- name: belt
slotTexture: belt
+ fullTextureName: template_small
slotFlags: BELT
slotGroup: SecondHotbar
stripTime: 6
displayName: Head
- name: pocket1
slotTexture: pocket
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
stripHidden: true
- name: pocket2
slotTexture: pocket
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
displayName: Suit Storage
- name: id
slotTexture: id
+ fullTextureName: template_small
slotFlags: IDCARD
slotGroup: SecondHotbar
stripTime: 6
displayName: ID
- name: belt
slotTexture: belt
+ fullTextureName: template_small
slotFlags: BELT
slotGroup: SecondHotbar
stripTime: 6
displayName: Belt
- name: back
slotTexture: back
+ fullTextureName: template_small
slotFlags: BACK
slotGroup: SecondHotbar
stripTime: 6
slots:
- name: pocket1
slotTexture: pocket
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
stripHidden: true
- name: pocket2
slotTexture: pocket
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
displayName: Head
- name: pocket1
slotTexture: pocket
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
stripHidden: true
- name: pocket2
slotTexture: pocket
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
displayName: Suit Storage
- name: id
slotTexture: id
+ fullTextureName: template_small
slotFlags: IDCARD
slotGroup: SecondHotbar
stripTime: 6
displayName: ID
- name: belt
slotTexture: belt
+ fullTextureName: template_small
slotFlags: BELT
slotGroup: SecondHotbar
stripTime: 6
displayName: Belt
- name: back
slotTexture: back
+ fullTextureName: template_small
slotFlags: BACK
slotGroup: SecondHotbar
stripTime: 6
- name: belt
slotTexture: belt
+ fullTextureName: template_small
slotFlags: BELT
slotGroup: SecondHotbar
stripTime: 6
- name: pocket1
slotTexture: pocket
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
slots:
- name: pocket1
slotTexture: pocket
+ fullTextureName: template_small
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
displayName: Jumpsuit
- name: id
slotTexture: id
+ fullTextureName: template_small
slotFlags: IDCARD
slotGroup: SecondHotbar
stripTime: 6