private void UpdatePDAUserInterface(PDAComponent pda) { var ownerInfo = new PDAIdInfoText { ActualOwnerName = pda.OwnerName, IdOwner = pda.ContainedID?.FullName, JobTitle = pda.ContainedID?.JobTitle }; var hasUplink = EntityManager.HasComponent <UplinkComponent>(pda.Owner); var ui = pda.Owner.GetUIOrNull(PDAUiKey.Key); ui?.SetState(new PDAUpdateState(pda.FlashlightOn, pda.PenSlot.HasItem, ownerInfo, hasUplink)); }
private void UpdatePDAUserInterface(PDAComponent pda) { var ownerInfo = new PDAIdInfoText { ActualOwnerName = pda.OwnerName, IdOwner = pda.ContainedID?.FullName, JobTitle = pda.ContainedID?.JobTitle }; if (!_uiSystem.TryGetUi(pda.Owner, PDAUiKey.Key, out var ui)) { return; } var hasInstrument = HasComp <InstrumentComponent>(pda.Owner); var state = new PDAUpdateState(pda.FlashlightOn, pda.PenSlot.HasItem, ownerInfo, false, hasInstrument); ui.SetState(state); // TODO UPLINK RINGTONES/SECRETS This is just a janky placeholder way of hiding uplinks from non syndicate // players. This should really use a sort of key-code entry system that selects an account which is not directly tied to // a player entity. if (!HasComp <UplinkComponent>(pda.Owner)) { return; } var uplinkState = new PDAUpdateState(pda.FlashlightOn, pda.PenSlot.HasItem, ownerInfo, true, hasInstrument); foreach (var session in ui.SubscribedSessions) { if (session.AttachedEntity is not EntityUid { Valid: true } user) { continue; } if (_uplinkAccounts.HasAccount(user)) { ui.SetState(uplinkState, session); } } }
private void UpdatePDAUserInterface(PDAComponent pda, EntityUid?user = null) { var ownerInfo = new PDAIdInfoText { ActualOwnerName = pda.OwnerName, IdOwner = pda.ContainedID?.FullName, JobTitle = pda.ContainedID?.JobTitle }; var ui = pda.Owner.GetUIOrNull(PDAUiKey.Key); if (ui == null) { return; } ui.SetState(new PDAUpdateState(pda.FlashlightOn, pda.PenSlot.HasItem, ownerInfo, ShouldShowUplink(pda.Owner, ui, user))); }
private void UpdatePDAUserInterface() { var ownerInfo = new PDAIdInfoText { ActualOwnerName = OwnerMob?.Name, IdOwner = ContainedID?.FullName, JobTitle = ContainedID?.JobTitle }; //Do we have an account? If so provide the info. if (_syndicateUplinkAccount != null) { var accData = new UplinkAccountData(_syndicateUplinkAccount.AccountHolder, _syndicateUplinkAccount.Balance); var listings = _uplinkManager.FetchListings.ToArray(); _interface.SetState(new PDAUpdateState(_lightOn, ownerInfo, accData, listings)); } else { _interface.SetState(new PDAUpdateState(_lightOn, ownerInfo)); } UpdatePDAAppearance(); }
private void AfterUIOpen(EntityUid uid, PDAComponent pda, AfterActivatableUIOpenEvent args) { // A new user opened the UI --> Check if they are a traitor and should get a user specific UI state override. if (!HasComp <UplinkComponent>(pda.Owner) || !_uplinkAccounts.HasAccount(args.User)) { return; } if (!_uiSystem.TryGetUi(pda.Owner, PDAUiKey.Key, out var ui)) { return; } var ownerInfo = new PDAIdInfoText { ActualOwnerName = pda.OwnerName, IdOwner = pda.ContainedID?.FullName, JobTitle = pda.ContainedID?.JobTitle }; var state = new PDAUpdateState(pda.FlashlightOn, pda.PenSlot.HasItem, ownerInfo, true, HasComp <InstrumentComponent>(pda.Owner)); ui.SetState(state, args.Session); }