Example #1
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();
        }