public void UpdateState(NukeUiState state) { string firstMsg, secondMsg; switch (state.Status) { case NukeStatus.AWAIT_DISK: firstMsg = Loc.GetString("nuke-user-interface-first-status-device-locked"); secondMsg = Loc.GetString("nuke-user-interface-second-status-await-disk"); break; case NukeStatus.AWAIT_CODE: firstMsg = Loc.GetString("nuke-user-interface-first-status-input-code"); secondMsg = Loc.GetString("nuke-user-interface-second-status-current-code", ("code", VisualizeCode(state.EnteredCodeLength, state.MaxCodeLength))); break; case NukeStatus.AWAIT_ARM: firstMsg = Loc.GetString("nuke-user-interface-first-status-device-ready"); secondMsg = Loc.GetString("nuke-user-interface-second-status-time", ("time", state.RemainingTime)); break; case NukeStatus.ARMED: firstMsg = Loc.GetString("nuke-user-interface-first-status-device-armed"); secondMsg = Loc.GetString("nuke-user-interface-second-status-time", ("time", state.RemainingTime)); break; case NukeStatus.COOLDOWN: firstMsg = Loc.GetString("nuke-user-interface-first-status-device-cooldown"); secondMsg = Loc.GetString("nuke-user-interface-second-status-cooldown-time", ("time", state.CooldownTime)); break; default: // shouldn't normally be here firstMsg = Loc.GetString("nuke-user-interface-status-error"); secondMsg = Loc.GetString("nuke-user-interface-status-error"); break; } FirstStatusLabel.Text = firstMsg; SecondStatusLabel.Text = secondMsg; EjectButton.Disabled = !state.DiskInserted || state.Status == NukeStatus.ARMED; AnchorButton.Disabled = state.Status == NukeStatus.ARMED; AnchorButton.Pressed = state.IsAnchored; ArmButton.Disabled = !state.AllowArm || !state.IsAnchored; }
private void UpdateUserInterface(EntityUid uid, NukeComponent?component = null) { if (!Resolve(uid, ref component)) { return; } var ui = component.Owner.GetUIOrNull(NukeUiKey.Key); if (ui == null) { return; } var anchored = false; if (EntityManager.TryGetComponent(uid, out TransformComponent transform)) { anchored = transform.Anchored; } var allowArm = component.DiskSlot.HasItem && (component.Status == NukeStatus.AWAIT_ARM || component.Status == NukeStatus.ARMED); var state = new NukeUiState() { Status = component.Status, RemainingTime = (int)component.RemainingTime, DiskInserted = component.DiskSlot.HasItem, IsAnchored = anchored, AllowArm = allowArm, EnteredCodeLength = component.EnteredCode.Length, MaxCodeLength = _codes.Code.Length, CooldownTime = (int)component.CooldownTime }; ui.SetState(state); }