Assembly.Metro.Controls.PageTemplates.Games.Components.MetaData.MetaReader.VisitEnum C# (CSharp) Method

VisitEnum() public method

public VisitEnum ( Assembly.Metro.Controls.PageTemplates.Games.Components.MetaData.EnumData field ) : void
field Assembly.Metro.Controls.PageTemplates.Games.Components.MetaData.EnumData
return void
        public void VisitEnum(EnumData field)
        {
            SeekToOffset(field.Offset);
            switch (field.Type)
            {
                case EnumType.Enum8:
                    field.Value = _reader.ReadSByte();
                    break;
                case EnumType.Enum16:
                    field.Value = _reader.ReadInt16();
                    break;
                case EnumType.Enum32:
                    field.Value = _reader.ReadInt32();
                    break;
            }

            // Search for the corresponding option and select it
            EnumValue selected = null;
            foreach (EnumValue option in field.Values)
            {
                // Typecast the field value and the option value based upon the enum type
                switch (field.Type)
                {
                    case EnumType.Enum8:
                        if ((sbyte) option.Value == (sbyte) field.Value)
                            selected = option;
                        break;
                    case EnumType.Enum16:
                        if ((short) option.Value == (short) field.Value)
                            selected = option;
                        break;
                    case EnumType.Enum32:
                        if (option.Value == field.Value)
                            selected = option;
                        break;
                }
                if (selected != null)
                    break;
            }
            if (selected == null)
            {
                // Nothing matched, so just add an option for it
                selected = new EnumValue(field.Value.ToString(), field.Value);
                field.Values.Add(selected);
            }
            field.SelectedValue = selected;
        }