Пример #1
0
        private static MyEditPropertyEnum GetEditProperties(List <MyEntity> entities)
        {
            Array allEditProperties = Enum.GetValues(typeof(MyEditPropertyEnum));

            int[] editPropertiesCount = new int[MyMwcUtils.GetMaxValueFromEnum <MyEditPropertyEnum>() + 1];
            foreach (MyEntity entity in entities)
            {
                MyEditPropertyEnum editPropertyForEntity = GetEditProperties(entity);
                foreach (MyEditPropertyEnum editProperty in allEditProperties)
                {
                    if ((entities.Count == 1 || m_editPropertiesForMultiEdit.Contains(editProperty)) &&
                        (editPropertyForEntity & editProperty) != 0)
                    {
                        editPropertiesCount[(int)editProperty]++;
                    }
                }
            }

            MyEditPropertyEnum result = MyEditPropertyEnum.None;

            foreach (MyEditPropertyEnum editProperty in allEditProperties)
            {
                if (editPropertiesCount[(int)editProperty] == entities.Count)
                {
                    result |= editProperty;
                }
            }

            return(result);
        }
Пример #2
0
        private static MyEditPropertyEnum GetEditProperties(MyEntity entity)
        {
            MyEditPropertyEnum result = MyEditPropertyEnum.None;

            foreach (KeyValuePair <Type, MyEditPropertyEnum> keyValuePair in m_editPropertiesPerEntityType)
            {
                if (keyValuePair.Key.IsInstanceOfType(entity))
                {
                    result |= keyValuePair.Value;
                }
            }
            return(result);
        }
Пример #3
0
        public MyGuiScreenEditorEditProperties(List <MyEntity> entities)
            : base(new Vector2(0.5f, 0.5f), new Vector2(0.75f, 1f))
        {
            Debug.Assert(entities.Count > 0);
            Debug.Assert(CanEditProperties(entities));

            AddCaption(new StringBuilder("Edit properties"), MyGuiConstants.LABEL_TEXT_COLOR);

            m_entities                        = entities;
            m_editProperties                  = new MyEditProperties();
            m_editProperties.Name             = m_entities[0].Name;
            m_editProperties.DisplayName      = m_entities[0].DisplayName;
            m_editProperties.Faction          = m_entities[0].Faction;
            m_editProperties.HealthRatio      = m_entities[0].HealthRatio;
            m_editProperties.MaxHealth        = m_entities[0].MaxHealth;
            m_editProperties.IsIndestructible = !m_entities[0].IsDestructible;
            m_editProperties.RequiresEnergy   = m_entities[0] is MyPrefabBase ? ((MyPrefabBase)m_entities[0]).RequiresEnergy : null;
            m_editProperties.UseProperties    = m_entities[0] is IMyUseableEntity ? ((IMyUseableEntity)m_entities[0]).UseProperties : null;
            m_editProperties.IsActivated      = m_entities[0].Activated;
            m_editProperties.DisplayHud       = m_entities[0].DisplayOnHud;
            m_editProperties.Difficulty       = m_entities[0].MaxDifficultyToActivated;
            if (m_entities[0] is MyPrefabKinematic)
            {
                MyPrefabKinematic prefabKinematic = m_entities[0] as MyPrefabKinematic;
                MyPrefabConfigurationKinematic prefabKinematicConfig = prefabKinematic.GetConfiguration() as MyPrefabConfigurationKinematic;
                m_editProperties.KinematicPartsHealthAndMaxHealth = new MyHealthAndMaxHealth[prefabKinematicConfig.KinematicParts.Count];
                for (int i = 0; i < m_editProperties.KinematicPartsHealthAndMaxHealth.Length; i++)
                {
                    MyPrefabKinematicPart kinematicPart = prefabKinematic.Parts[i];
                    if (kinematicPart != null)
                    {
                        float health    = kinematicPart.Health;
                        float maxHealth = kinematicPart.MaxHealth;
                        m_editProperties.KinematicPartsHealthAndMaxHealth[i] = new MyHealthAndMaxHealth(health, maxHealth);
                    }
                }
            }

            m_editPropertiesFlags = GetEditProperties(m_entities);

            DetectNotSameProperties();
            InitControls();

            m_errorMessages = new List <StringBuilder>();
            m_errorMessage  = new StringBuilder();
        }
        public MyGuiScreenEditorEditProperties(List<MyEntity> entities)
            : base(new Vector2(0.5f, 0.5f), new Vector2(0.75f, 1f))
        {
            Debug.Assert(entities.Count > 0);
            Debug.Assert(CanEditProperties(entities));            

            AddCaption(new StringBuilder("Edit properties"), MyGuiConstants.LABEL_TEXT_COLOR);
            
            m_entities = entities;            
            m_editProperties = new MyEditProperties();
            m_editProperties.Name = m_entities[0].Name;
            m_editProperties.DisplayName = m_entities[0].DisplayName;
            m_editProperties.Faction = m_entities[0].Faction;
            m_editProperties.HealthRatio = m_entities[0].HealthRatio;
            m_editProperties.MaxHealth = m_entities[0].MaxHealth;
            m_editProperties.IsIndestructible = !m_entities[0].IsDestructible;
            m_editProperties.RequiresEnergy = m_entities[0] is MyPrefabBase ? ((MyPrefabBase)m_entities[0]).RequiresEnergy : null;
            m_editProperties.UseProperties = m_entities[0] is IMyUseableEntity ? ((IMyUseableEntity)m_entities[0]).UseProperties : null;
            m_editProperties.IsActivated = m_entities[0].Activated;
            m_editProperties.DisplayHud = m_entities[0].DisplayOnHud;
            m_editProperties.Difficulty = m_entities[0].MaxDifficultyToActivated;
            if (m_entities[0] is MyPrefabKinematic)
            {
                MyPrefabKinematic prefabKinematic = m_entities[0] as MyPrefabKinematic;
                MyPrefabConfigurationKinematic prefabKinematicConfig = prefabKinematic.GetConfiguration() as MyPrefabConfigurationKinematic;
                m_editProperties.KinematicPartsHealthAndMaxHealth = new MyHealthAndMaxHealth[prefabKinematicConfig.KinematicParts.Count];
                for (int i = 0; i < m_editProperties.KinematicPartsHealthAndMaxHealth.Length; i++) 
                {
                    MyPrefabKinematicPart kinematicPart = prefabKinematic.Parts[i];                    
                    if (kinematicPart != null)
                    {
                        float health = kinematicPart.Health;
                        float maxHealth = kinematicPart.MaxHealth;
                        m_editProperties.KinematicPartsHealthAndMaxHealth[i] = new MyHealthAndMaxHealth(health, maxHealth);
                    }                    
                }
            }

            m_editPropertiesFlags = GetEditProperties(m_entities);

            DetectNotSameProperties();
            InitControls();

            m_errorMessages = new List<StringBuilder>();
            m_errorMessage = new StringBuilder();
        }