Exemple #1
0
        private void SelectType(int typeIndex)
        {
            selectedType = typeIndex;

            if (selectedType == -1)
            {
                SaveType("TypesWindowSelectedType", -1);
                return;
            }

            SaveType("TypesWindowSelectedType", selectedType);

            if (!recentTypes.Contains(typeIndex))
            {
                // If our recent type queue is full, remove an item before adding another.
                if (recentTypes.Count == recentTypeCount)
                {
                    recentTypes.RemoveAt(0);
                }
                recentTypes.Add(typeIndex);
                for (int j = 0; j < recentTypes.Count; j++)
                {
                    SaveType("TypesWindowRecentType" + j, recentTypes[j]);
                }
            }

            var type = types[selectedType].type;

            fields        = ES3Reflection.GetSerializableMembers(type, false);
            fieldSelected = new bool[fields.Length];

            var es3Type = ES3TypeMgr.GetES3Type(type);

            // If there's no ES3Type for this, only select fields which are supported by reflection.
            if (es3Type == null)
            {
                var safeFields = ES3Reflection.GetSerializableMembers(type, true);
                for (int i = 0; i < fields.Length; i++)
                {
                    fieldSelected[i] = safeFields.Any(item => item.Name == fields[i].Name);
                }
                return;
            }

            // Get fields and whether they're selected.
            var selectedFields     = new List <string>();
            var propertyAttributes = es3Type.GetType().GetCustomAttributes(typeof(ES3PropertiesAttribute), false);

            if (propertyAttributes.Length > 0)
            {
                selectedFields.AddRange(((ES3PropertiesAttribute)propertyAttributes[0]).members);
            }

            fieldSelected = new bool[fields.Length];

            for (int i = 0; i < fields.Length; i++)
            {
                fieldSelected[i] = selectedFields.Contains(fields[i].Name);
            }
        }
Exemple #2
0
        protected void GetMembers(bool safe, string[] memberNames)
        {
            var serializedMembers = ES3Reflection.GetSerializableMembers(type, safe, memberNames);

            members = new ES3Member[serializedMembers.Length];
            for (int i = 0; i < serializedMembers.Length; i++)
            {
                members[i] = new ES3Member(serializedMembers[i]);
            }
        }