protected override bool TryGetContainer(ContainerModifiedMessage msg, ItemCounterComponent itemCounter, out IReadOnlyList <string> showLayers) { if (msg.Container.Owner.TryGetComponent(out ServerStorageComponent? component)) { var containedLayers = component.StoredEntities ?? new List <IEntity>(); var list = new List <string>(); foreach (var mapLayerData in itemCounter.MapLayers.Values) { foreach (var entity in containedLayers) { if (mapLayerData.Whitelist.IsValid(entity)) { list.Add(mapLayerData.Layer); break; } } } showLayers = list; return(true); } showLayers = new List <string>(); return(false); }
protected override int?GetCount(ContainerModifiedMessage msg, ItemCounterComponent itemCounter) { if (!msg.Container.Owner.TryGetComponent(out ServerStorageComponent? component) || component.StoredEntities == null) { return(null); } var count = 0; foreach (var entity in component.StoredEntities) { if (itemCounter.Count.IsValid(entity)) { count++; } } return(count); }
private void CounterEntityRemoved(EntityUid uid, ItemCounterComponent itemCounter, EntRemovedFromContainerMessage args) { if (!EntityManager.TryGetComponent(itemCounter.Owner, out AppearanceComponent? appearanceComponent)) { return; } var count = GetCount(args, itemCounter); if (count == null) { return; } appearanceComponent.SetData(StackVisuals.Actual, count); if (itemCounter.MaxAmount != null) { appearanceComponent.SetData(StackVisuals.MaxCount, itemCounter.MaxAmount); } }
private void CounterEntityInserted(EntityUid uid, ItemCounterComponent itemCounter, EntInsertedIntoContainerMessage args) { if (!itemCounter.Owner.TryGetComponent(out SharedAppearanceComponent? appearanceComponent)) { return; } var count = GetCount(args, itemCounter); if (count == null) { return; } appearanceComponent.SetData(StackVisuals.Actual, count); if (itemCounter.MaxAmount != null) { appearanceComponent.SetData(StackVisuals.MaxCount, itemCounter.MaxAmount); } }
protected abstract int?GetCount(ContainerModifiedMessage msg, ItemCounterComponent itemCounter);