Ejemplo n.º 1
0
 /// <summary>
 /// Returns the admin menu creator for this asteroid object type.
 /// </summary>
 /// <returns>The admin menu creator or null, if it should not be added to the plugins admin spawn and edit menu</returns>
 public IMyAsteroidAdminMenuCreator GetAdminMenuCreator()
 {
     if (m_adminMenuCreator == null)
     {
         m_adminMenuCreator = CreateAdminMenuCreatorInstance();
     }
     return(m_adminMenuCreator);
 }
        /// <summary>
        /// Creates the sub menu for the currently selected system object, that contains the
        /// elements to edit it.
        /// </summary>
        private void BuildEditingSubMenu()
        {
            if (m_scrollTable != null)
            {
                Controls.Remove(m_scrollPane);
            }

            m_scrollTable             = new MyGuiControlParentTableLayout(1, false, Vector2.Zero, m_usableWidth);
            m_scrollTable.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;

            m_scrollTable.AddTableSeparator();

            if (m_scrollTable == null)
            {
                m_scrollTable = new MyGuiControlParentTableLayout(1, false, Vector2.Zero, m_usableWidth);
            }
            else
            {
                m_scrollTable.ClearTable();
            }

            m_currentAsteroidAdminMenu = null;

            if (m_selectedObject != null)
            {
                if (m_selectedObject.Type == MySystemObjectType.PLANET || m_selectedObject.Type == MySystemObjectType.MOON)
                {
                    BuildPlanetEditingMenu(m_scrollTable, m_selectedObject as MySystemPlanet);
                    m_scrollTable.AddTableSeparator();

                    CameraLookAt(m_selectedObject.CenterPosition, (float)(m_selectedObject as MySystemPlanet).Diameter * 1.5f);
                }
                else if (m_selectedObject.Type == MySystemObjectType.ASTEROIDS)
                {
                    var asteroidObject = m_selectedObject as MySystemAsteroids;

                    if (!MyAsteroidObjectsManager.Static.AsteroidObjectProviders.ContainsKey(asteroidObject.AsteroidTypeName))
                    {
                        return;
                    }

                    var provider = MyAsteroidObjectsManager.Static.AsteroidObjectProviders[asteroidObject.AsteroidTypeName];
                    var creator  = provider.GetAdminMenuCreator();

                    if (creator != null)
                    {
                        if (!creator.OnEditMenuSelectItem(m_usableWidth, m_scrollTable, this, asteroidObject, m_fetchedStarSytem))
                        {
                            m_scrollTable.AddTableRow(new MyGuiControlLabel(null, null, "This object cant be edited.", font: "Red"));

                            m_scrollTable.AddTableSeparator();
                        }

                        m_currentAsteroidAdminMenu = creator;
                    }
                }
            }

            m_scrollTable.ApplyRows();

            var     topCombo = GetCombo();
            Vector2 start    = m_systemObjectsBox.Position + new Vector2(-0.001f, MARGIN_VERT * 2 + m_systemObjectsBox.Size.Y);
            Vector2 end      = new Vector2(topCombo.Size.X, 0.5f - MARGIN_VERT);

            m_scrollPane                   = new MyGuiControlScrollablePanel(m_scrollTable);
            m_scrollPane.OriginAlign       = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP;
            m_scrollPane.ScrollbarVEnabled = true;
            m_scrollPane.Size              = end - start;
            m_scrollPane.Size              = new Vector2(0.315f, m_scrollPane.Size.Y);
            m_scrollPane.Position          = new Vector2(0, start.Y);

            Controls.Add(m_scrollPane);
        }