public void QueueTeleport(CargoTelepadComponent component, CargoOrderData order) { for (var i = 0; i < order.Amount; i++) { component.TeleportQueue.Push(order); } }
/// <summary> /// Spawn the product and a piece of paper. Attempt to attach the paper to the product. /// </summary> private void SpawnProduct(CargoTelepadComponent component, CargoOrderData data) { // spawn the order if (!_protoMan.TryIndex(data.ProductId, out CargoProductPrototype? prototype)) { return; } var xform = Transform(component.Owner); var product = EntityManager.SpawnEntity(prototype.Product, xform.Coordinates); Transform(product).Anchored = false; // spawn a piece of paper. var printed = EntityManager.SpawnEntity(component.PrinterOutput, xform.Coordinates); if (!TryComp <PaperComponent>(printed, out var paper)) { return; } // fill in the order data var val = Loc.GetString("cargo-console-paper-print-name", ("orderNumber", data.OrderNumber)); MetaData(printed).EntityName = val; _paperSystem.SetContent(printed, Loc.GetString( "cargo-console-paper-print-text", ("orderNumber", data.OrderNumber), ("itemName", prototype.Name), ("requester", data.Requester), ("reason", data.Reason), ("approver", data.Approver ?? string.Empty)), paper); // attempt to attach the label if (TryComp <PaperLabelComponent>(product, out var label)) { _slots.TryInsert(product, label.LabelSlot, printed, null); } }
private void SetEnabled(CargoTelepadComponent component, ApcPowerReceiverComponent?receiver = null, TransformComponent?xform = null) { // False due to AllCompsOneEntity test where they may not have the powerreceiver. if (!Resolve(component.Owner, ref receiver, ref xform, false)) { return; } var disabled = !receiver.Powered || !xform.Anchored; // Setting idle state should be handled by Update(); if (disabled) { return; } TryComp <AppearanceComponent>(component.Owner, out var appearance); component.CurrentState = CargoTelepadState.Unpowered; appearance?.SetData(CargoTelepadVisuals.State, CargoTelepadState.Unpowered); }
private void OnInit(EntityUid uid, CargoTelepadComponent telepad, ComponentInit args) { _linker.EnsureReceiverPorts(uid, telepad.ReceiverPort); }
private void OnTelepadAnchorChange(EntityUid uid, CargoTelepadComponent component, ref AnchorStateChangedEvent args) { SetEnabled(component); }
private void OnTelepadPowerChange(EntityUid uid, CargoTelepadComponent component, PowerChangedEvent args) { SetEnabled(component); }