private void OnCaseTriggered(EntityUid uid, PayloadCaseComponent component, TriggerEvent args) { if (!TryComp(uid, out ContainerManagerComponent? contMan)) { return; } // Pass trigger event onto all contained payloads. Payload capacity configurable by construction graphs. foreach (var ent in GetAllPayloads(uid, contMan)) { RaiseLocalEvent(ent, args, false); } }
private void OnEntityRemoved(EntityUid uid, PayloadCaseComponent component, EntRemovedFromContainerMessage args) { if (!TryComp(args.Entity, out PayloadTriggerComponent? trigger)) { return; } trigger.Active = false; foreach (var type in trigger.GrantedComponents) { EntityManager.RemoveComponent(uid, type); } trigger.GrantedComponents.Clear(); }
private void OnExamined(EntityUid uid, PayloadCaseComponent component, ExaminedEvent args) { if (!args.IsInDetailsRange) { args.PushMarkup(Loc.GetString("payload-case-not-close-enough", ("ent", uid))); return; } if (GetAllPayloads(uid).Any()) { args.PushMarkup(Loc.GetString("payload-case-has-payload", ("ent", uid))); } else { args.PushMarkup(Loc.GetString("payload-case-does-not-have-payload", ("ent", uid))); } }
private void OnCaseTriggered(EntityUid uid, PayloadCaseComponent component, TriggerEvent args) { if (!TryComp(uid, out ContainerManagerComponent? contMan)) { return; } // Pass trigger event onto all contained payloads. Payload capacity configurable by construction graphs. foreach (var container in contMan.Containers.Values) { foreach (var entity in container.ContainedEntities) { if (_tagSystem.HasTag(entity, "Payload")) { RaiseLocalEvent(entity, args, false); } } } }
private void OnEntityInserted(EntityUid uid, PayloadCaseComponent _, EntInsertedIntoContainerMessage args) { if (!TryComp(args.Entity, out PayloadTriggerComponent? trigger)) { return; } trigger.Active = true; if (trigger.Components == null) { return; } // ANY payload trigger that gets inserted can grant components. It is up to the construction graphs to determine trigger capacity. foreach (var(name, data) in trigger.Components) { if (!_componentFactory.TryGetRegistration(name, out var registration)) { continue; } if (HasComp(uid, registration.Type)) { continue; } if (_componentFactory.GetComponent(registration.Type) is not Component component) { continue; } component.Owner = uid; if (_serializationManager.Copy(data, component, null) is Component copied) { EntityManager.AddComponent(uid, copied); } trigger.GrantedComponents.Add(registration.Type); } }