コード例 #1
0
 public override void Read(Library.Collections.BitStream stream, out TEnum value, MySerializeInfo info)
 {
     if (m_valueCount == 1)
     {
         value = m_firstValue;
     }
     else if (m_valueCount == 2)
     {
         value = stream.ReadBool() ? m_firstValue : m_secondValue;
     }
     else if (m_valueCount > 2)
     {
         if (HasNegativeValues)
         {
             value = MyEnum <TEnum> .SetValue((ulong)stream.ReadInt64Variant());
         }
         else
         {
             value = MyEnum <TEnum> .SetValue(stream.ReadUInt64(m_bitCount));
         }
     }
     else
     {
         value = default(TEnum);
     }
 }
コード例 #2
0
        protected MyGuiControlCombobox AddCombo <TEnum>(
            TEnum selectedItem,
            Action <TEnum> valueChanged,
            bool enabled = true,
            List <MyGuiControlBase> controlGroup = null, Vector4?color = null)
            where TEnum : struct, IComparable, IFormattable, IConvertible
        {
            Debug.Assert(typeof(TEnum).IsEnum);

            var combobox = AddCombo(controlGroup, color);

            foreach (var value in MyEnum <TEnum> .Values)
            {
                combobox.AddItem((int)(object)value, new StringBuilder(value.ToString()));
            }
            combobox.SelectItemByKey((int)(object)selectedItem);
            combobox.ItemSelected += delegate()
            {
                valueChanged(MyEnum <TEnum> .SetValue((ulong)combobox.GetSelectedKey()));
            };

            return(combobox);
        }