public void Show(string title, VehicleParked.Flags checkedFlags, OnParkedFlagsSet callback) { m_callback1 = null; m_callback2 = callback; m_label.text = title; m_flagsPanel.isVisible = false; m_parkedFlagsPanel.isVisible = true; var flags = (VehicleParked.Flags[])Enum.GetValues(typeof(VehicleParked.Flags)); for (int i = 0; i < flags.Length; i++) { if ((checkedFlags & flags[i]) > 0) { m_flagBoxDictAlt[flags[i]].isChecked = true; } else { m_flagBoxDictAlt[flags[i]].isChecked = false; } } isVisible = true; m_label.relativePosition = new Vector3(WIDTH / 2 - m_label.width / 2, 10); }
private void Done() { if (m_callback1 != null) { Vehicle.Flags flags = 0; foreach (var v in m_boxFlagDict) { if (v.Key.isChecked) { flags |= v.Value; } } Debug.LogWarning(flags.ToString()); m_callback1.Invoke(flags); } else if (m_callback2 != null) { VehicleParked.Flags flags = 0; foreach (var v in m_boxFlagDictAlt) { if (v.Key.isChecked) { flags |= v.Value; } } Debug.LogWarning(flags.ToString()); m_callback2.Invoke(flags); } isVisible = false; }
internal static bool IsFlagSet(this VehicleParked.Flags value, VehicleParked.Flags flag) => (value & flag) != 0;