// c'tor
        public ColorPalette()
        {
            // Create elements for the color buttons.
            // Start with a blob of common parameters.
            UIGridElement.ParamBlob blob = new UIGridElement.ParamBlob();
            blob.width           = 1.0f;
            blob.height          = 1.0f;
            blob.edgeSize        = 0.5f;
            blob.selectedColor   = Color.White;
            blob.unselectedColor = Color.White;
            blob.normalMapName   = @"QuarterRound4NormalMap";

            int numColors = (int)Classification.Colors.SIZEOF - 1;

            buttonHitBoxes = new AABB2D[numColors];
            for (int i = 0; i < numEntries; i++)
            {
                buttonHitBoxes[i] = new AABB2D();
            }

            for (int i = 0; i < numEntries; i++)
            {
                buttons[i]     = new UIGrid2DTextureElement(blob, null);
                buttons[i].NoZ = false;

                // Set initial size.
                textureSize[i] = inactiveSize;

                buttons[i].BaseColor = Classification.ColorVector4(GetColorFromIndex(i));
            }

            camera = new UiCamera();
        }
Example #2
0
            // c'tor
            public Shared(MiniHub parent)
            {
                // Create text elements.
                // Start with a blob of common parameters.
                UIGridElement.ParamBlob blob = new UIGridElement.ParamBlob();
                blob.width            = 5.0f;
                blob.height           = 0.75f;
                blob.edgeSize         = 0.06f;
                blob.Font             = UI2D.Shared.GetGameFont30Bold;
                blob.textColor        = Color.White;
                blob.dropShadowColor  = Color.Black;
                blob.useDropShadow    = true;
                blob.invertDropShadow = false;
                blob.unselectedColor  = new Color(new Vector3(4, 100, 90) / 255.0f);
                blob.selectedColor    = new Color(new Vector3(5, 180, 160) / 255.0f);
                blob.normalMapName    = @"Slant0Smoothed5NormalMap";
                blob.justify          = UIGrid2DTextElement.Justification.Center;

                menu             = new ModularMenu(blob, Strings.Localize("miniHub.minihub"));
                menu.OnChange    = parent.OnChange;
                menu.OnCancel    = parent.OnCancel;
                menu.OnSelect    = parent.OnSelect;
                menu.WorldMatrix = Matrix.CreateScale(1.4f);
                //menu.AcceptStartForCancel = true;
                menu.UseRtCoords = false;
                menu.HelpOverlay = "MiniHub";

                BuildMenu();
            }
        // c'tor
        public BrushPicker()
            : base(null, null)
        {
            helpOverlay    = @"BrushPicker";
            altHelpOverlay = @"BrushPickerMaterial";

            // Create brush elements for the grid.
            // Start with a blob of common parameters.
            UIGridElement.ParamBlob blob = new UIGridElement.ParamBlob();
            blob.width           = 1.0f;
            blob.height          = 1.0f;
            blob.edgeSize        = 0.1f;
            blob.selectedColor   = Color.Transparent;
            blob.unselectedColor = Color.Transparent;
            blob.normalMapName   = @"QuarterRound4NormalMap";
            blob.altShader       = true;
            blob.ignorePowerOf2  = true;

            // Create and fill the list.
            int maxBrushes = Brush2DManager.NumBrushes;

            brushList = new List <UIGrid2DBrushElement>(maxBrushes);

            UIGrid2DBrushElement e = null;

            for (int i = 0; i < maxBrushes; i++)
            {
                Brush2DManager.Brush2D brush = Brush2DManager.GetBrush(i);
                e     = new UIGrid2DBrushElement(blob, brush.TileTextureName, i);
                e.NoZ = true;
                e.Tag = brush.HelpOverlay;
                brushList.Add(e);
            }

            // Create and populate grid.  By default we'll start with the full set of brushes.
            grid = new BrushPickerUIGrid(OnSelect, OnCancel, new Point(maxBrushes, 1), "TerrainEdit.BrushPicker");

            for (int i = 0; i < maxBrushes; i++)
            {
                grid.Add(brushList[i], i, 0);
            }

            // Set grid properties.
            //grid.AlwaysReadInput = true;
            grid.Scrolling    = false;
            grid.IgnoreInput  = true;
            grid.Spacing      = new Vector2(0.25f, 0.0f);
            grid.UseLeftStick = false;
            grid.UseTriggers  = true;
            grid.Wrap         = false;
            grid.LocalMatrix  = Matrix.CreateTranslation(0.0f, -2.2f, -10.0f);
        }   // end of BrushPicker c'tor
        // c'tor
        public WaterPicker(OnSetMaterial onSet, OnGetMaterial onGet)
            : base(onSet, onGet)
        {
            helpOverlay = @"WaterPicker";

            // Create material elements for the grid.
            // Start with a blob of common parameters.
            UIGridElement.ParamBlob blob = new UIGridElement.ParamBlob();
            blob.width         = 1.0f;
            blob.height        = 1.0f;
            blob.edgeSize      = 0.1f;
            blob.selectedColor = Color.White;
            Vector4 transparentWhite = new Vector4(1.0f, 1.0f, 1.0f, 0.5f);

            blob.unselectedColor = new Color(transparentWhite);
            blob.normalMapName   = @"QuarterRound4NormalMap";

            // Create and populate grid.
            int maxMaterials = Water.Types.Count;

            grid = new UIGrid(OnSelect, OnCancel, new Point(maxMaterials, 1), "TerrainEdit.WaterPicker");

            numMaterials = 0;

            UIGridWaterElement e = null;

            for (int i = 0; i < maxMaterials; i++)
            {
                e = new UIGridWaterElement(i);
                e.SelectedScale   = 0.8f;
                e.UnselectedScale = 0.5f;
                grid.Add(e, numMaterials++, 0);
            }

            // Set grid properties.
            grid.IgnoreInput = true;    // We'll control the grid selection from here instead of internally.
            grid.Spacing     = new Vector2(0.25f, 0.0f);
            grid.Scrolling   = true;
            grid.Wrap        = false;
            grid.LocalMatrix = Matrix.CreateTranslation(0.0f, -2.5f, 0.0f);

            OnSampleType = SampleType;
        }   // end of WaterPicker c'tor
            public AABB2D rightStickBox = new AABB2D(); // Mouse hit box around right stick icon.

            #endregion

            #region Accessors
            #endregion

            #region Public

            // c'tor
            public Shared(AddItemHelpCard parent)
            {
                this.parent = parent;

                GraphicsDevice device = BokuGame.bokuGame.GraphicsDevice;

                descBlob = new TextBlob(UI2D.Shared.GetGameFont24, "replace me", descWidth);

                // We're rendering the camera specific parts into a 1024x768 rendertarget and
                // then copying (with masking) into the 1280x720 rt and finally cropping it
                // as needed for 4:3 display.
                camera              = new PerspectiveUICamera();
                camera.Resolution   = new Point(1280, 720);
                camera1k            = new PerspectiveUICamera();
                camera1k.Resolution = new Point(1024, 768);

                // Create examples grid.
                examplesGrid = new UIGrid(parent.OnSelect, parent.OnCancel, new Point(1, maxExamples), @"AddItemHelpCard.ExamplesGrid");
                Matrix mat = Matrix.CreateTranslation(0.4f, 0.0f, 0.0f);

                examplesGrid.LocalMatrix         = mat;
                examplesGrid.Scrolling           = true;
                examplesGrid.UseMouseScrollWheel = true;
                examplesGrid.Spacing             = new Vector2(0.0f, 0.0f);

                // Set up the blob for info common to all preprogrammed bots.
                examplesBlob                  = new UIGridElement.ParamBlob();
                examplesBlob.width            = 7.5f;
                examplesBlob.height           = 1.35f;
                examplesBlob.edgeSize         = 0.2f;
                examplesBlob.selectedColor    = Color.Transparent;
                examplesBlob.unselectedColor  = Color.Transparent;
                examplesBlob.textColor        = Color.White;
                examplesBlob.dropShadowColor  = Color.Black;
                examplesBlob.useDropShadow    = false;
                examplesBlob.invertDropShadow = false;
                examplesBlob.justify          = UIGridElement.Justification.Left;
                examplesBlob.normalMapName    = @"QuarterRound4NormalMap";
                examplesBlob.ignorePowerOf2   = true;
                examplesBlob.greyFlatShader   = true;
            }   // end of Shared c'tor
Example #6
0
        // c'tor
        public ToolMenu()
        {
            // Create elements for the grid.
            // Start with a blob of common parameters.
            UIGridElement.ParamBlob blob = new UIGridElement.ParamBlob();
            blob.width    = 1.1f;
            blob.height   = 1.1f;
            blob.edgeSize = 0.1f;
            Color tileColor = new Color(110, 150, 140, 170);

            blob.selectedColor   = tileColor;
            blob.unselectedColor = tileColor;
            blob.textColor       = Color.Red; // Shouldn't need this.
            blob.dropShadowColor = Color.Black;
            blob.normalMapName   = @"QuarterRound4NormalMap";
            blob.altShader       = true;
            blob.ignorePowerOf2  = true;

            // Create and populate grid.
            int maxTools = 20;

            numTools = 0;
            grid     = new ToolMenuUIGrid(OnSelect, OnCancel, new Point(maxTools, 1), "ToolMenuGrid");

            UIGrid2DTextureElement e = null;

            // JW - The toolmenu elements are now assigned names so that they can be disabled by the
            // same strings as the Mouse/Touch "ToolBar" elements.
            blob.elementName = Strings.Localize("toolBar.runGame");
            e     = new UIGrid2DTextureElement(blob, @"ToolMenu\Play");
            e.Tag = InGame.UpdateMode.RunSim;
            grid.Add(e, numTools++, 0);

            blob.elementName = Strings.Localize("toolBar.home");
            e     = new UIGrid2DTextureElement(blob, @"ToolMenu\Home");
            e.Tag = InGame.UpdateMode.MiniHub;
            grid.Add(e, numTools++, 0);

            blob.elementName = Strings.Localize("toolBar.objectEdit");
            e     = new UIGrid2DTextureElement(blob, @"ToolMenu\ObjectEdit");
            e.Tag = InGame.UpdateMode.EditObject;
            grid.Add(e, numTools++, 0);

            blob.elementName = Strings.Localize("toolBar.terrainPaint");
            e     = new UIGrid2DTextureElement(blob, @"ToolMenu\TerrainMaterial");
            e.Tag = InGame.UpdateMode.TerrainMaterial;
            grid.Add(e, numTools++, 0);

            blob.elementName = Strings.Localize("toolBar.terrainRaiseLower");
            e     = new UIGrid2DTextureElement(blob, @"ToolMenu\TerrainUpDown");
            e.Tag = InGame.UpdateMode.TerrainUpDown;
            grid.Add(e, numTools++, 0);

            blob.elementName = Strings.Localize("toolBar.terrainSmoothLevel");
            e     = new UIGrid2DTextureElement(blob, @"ToolMenu\TerrainFlatten");
            e.Tag = InGame.UpdateMode.TerrainFlatten;
            grid.Add(e, numTools++, 0);

            blob.elementName = Strings.Localize("toolBar.terrainSpikeyHilly");
            e     = new UIGrid2DTextureElement(blob, @"ToolMenu\TerrainRoughHill");
            e.Tag = InGame.UpdateMode.TerrainRoughHill;
            grid.Add(e, numTools++, 0);

            blob.elementName = Strings.Localize("toolBar.waterRaiseLower");
            e     = new UIGrid2DTextureElement(blob, @"ToolMenu\TerrainWater");
            e.Tag = InGame.UpdateMode.TerrainWater;
            grid.Add(e, numTools++, 0);

            blob.elementName = Strings.Localize("toolBar.deleteObjects");
            e     = new UIGrid2DTextureElement(blob, @"ToolMenu\DeleteObject");
            e.Tag = InGame.UpdateMode.DeleteObjects;
            grid.Add(e, numTools++, 0);

            //e = new UIGrid2DTextureElement(blob, @"ToolMenu\ObjectTweak");
            //e.Object = InGame.UpdateMode.TweakObject;
            //grid.Add(e, numTools++, 0);

            blob.elementName = Strings.Localize("toolBar.worldTweak");
            e     = new UIGrid2DTextureElement(blob, @"ToolMenu\WorldSettings");
            e.Tag = InGame.UpdateMode.EditWorldParameters;
            grid.Add(e, numTools++, 0);

            Debug.Assert(numTools <= maxTools, "If this fires, just up maxTools.");

            // Set grid properties.
            grid.Spacing      = new Vector2(0.1f, 0.0f);
            grid.Scrolling    = false;
            grid.Wrap         = false;
            grid.UseLeftStick = false;
            grid.UseTriggers  = true;

            Matrix mat = Matrix.Identity;

            mat.Translation  = new Vector3(0.0f, -2.2f, -10.0f);
            grid.LocalMatrix = mat;
        }   // end of ToolMenu c'tor
Example #7
0
        private void InitGrid()
        {
            grid                     = new UIGrid(OnSelect, OnCancel, new Point(1, 10), "OptionsMenuGrid");
            grid.LocalMatrix         = Matrix.CreateTranslation(0.25f / 96.0f, 0.25f / 96.0f, 0.0f);
            grid.RenderEndsIn        = true;
            grid.UseMouseScrollWheel = true;

            // Create a blob of common parameters.
            UIGridElement.ParamBlob blob = new UIGridElement.ParamBlob();
            //blob.width = 5.0f;
            //blob.height = 1.0f;
            blob.width            = 512.0f / 96.0f;
            blob.height           = blob.width / 5.0f;
            blob.edgeSize         = 0.06f;
            blob.Font             = UI2D.Shared.GetGameFont24Bold;
            blob.textColor        = Color.White;
            blob.dropShadowColor  = Color.Black;
            blob.useDropShadow    = true;
            blob.invertDropShadow = false;
            blob.unselectedColor  = new Color(new Vector3(4, 100, 90) / 255.0f);
            blob.selectedColor    = new Color(new Vector3(5, 180, 160) / 255.0f);
            blob.normalMapName    = @"Slant0Smoothed5NormalMap";
            blob.justify          = UIGridModularCheckboxElement.Justification.Left;


            //
            // Create elements here.
            //

            int index = 0;

            {
                showToolTips         = new UIGridModularCheckboxElement(blob, Strings.Localize("optionsParams.showToolTips"));
                showToolTips.OnCheck = delegate() { XmlOptionsData.ShowToolTips = true; };
                showToolTips.OnClear = delegate() { XmlOptionsData.ShowToolTips = false; };
                showToolTips.HelpID  = "ShowToolTips";
                // Add to grid.
                grid.Add(showToolTips, 0, index++);
            }

            {
                showHints         = new UIGridModularCheckboxElement(blob, Strings.Localize("optionsParams.showHints"));
                showHints.OnCheck = delegate() { XmlOptionsData.ShowHints = true; };
                showHints.OnClear = delegate() { XmlOptionsData.ShowHints = false; };
                showHints.HelpID  = "ShowHints";
                // Add to grid.
                grid.Add(showHints, 0, index++);
            }

            {
                restoreDisabledHints         = new UIGridModularCheckboxElement(blob, Strings.Localize("optionsParams.restoreDisabledHints"));
                restoreDisabledHints.OnCheck = delegate() { XmlOptionsData.RestoreDisabledHints(); };
                restoreDisabledHints.OnClear = delegate() { restoreDisabledHints.Check = true; };
                restoreDisabledHints.HelpID  = "RestoreDisabledHints";
                // Add to grid.
                grid.Add(restoreDisabledHints, 0, index++);
            }

            {
                showFramerate         = new UIGridModularCheckboxElement(blob, Strings.Localize("optionsParams.showFramerate"));
                showFramerate.OnCheck = delegate() { XmlOptionsData.ShowFramerate = true; };
                showFramerate.OnClear = delegate() { XmlOptionsData.ShowFramerate = false; };
                showFramerate.HelpID  = "ShowFramerate";
                // Add to grid.
                grid.Add(showFramerate, 0, index++);
            }

            /*
             * {
             *  helpLevel = new UIGridModularRadioBoxElement(blob, Strings.Localize("optionsParams.helpLevel"));
             *  helpLevel.AddText(Strings.Localize("optionsParams.lowHelp"));
             *  helpLevel.AddText(Strings.Localize("optionsParams.midHelp"));
             *  helpLevel.AddText(Strings.Localize("optionsParams.highHelp"));
             *  helpLevel.CurIndex = XmlOptionsData.HelpLevel;
             *  helpLevel.OnChange = delegate(UIGridModularRadioBoxElement.ListEntry entry)
             *  {
             *      XmlOptionsData.HelpLevel = helpLevel.CurIndex;
             *  };
             *  helpLevel.HelpID = "HelpOverlayAmount";
             *  // Add to grid.
             *  grid.Add(helpLevel, 0, index++);
             * }
             */

            {
                float oldWidth = blob.width;
                blob.width += 0.5f;
                language    = new UIGridModularRadioBoxElement(blob, Strings.Localize("optionsParams.language"));
                blob.width  = oldWidth;
                IEnumerable <LocalizationResourceManager.SupportedLanguage> langs = LocalizationResourceManager.SupportedLanguages;

                // Copy to a List so we can sort.
                List <LocalizationResourceManager.SupportedLanguage> languageList = new List <LocalizationResourceManager.SupportedLanguage>();
                foreach (LocalizationResourceManager.SupportedLanguage lang in langs)
                {
                    languageList.Add(lang);
                }
                languageList.Sort(LanguageSortComp);

                // Add the sorted languages to the UI element.
                foreach (LocalizationResourceManager.SupportedLanguage lang in languageList)
                {
#if NETFX_CORE
                    if (lang.NameInEnglish.Equals("hebrew", StringComparison.OrdinalIgnoreCase))
#else
                    if (lang.NameInEnglish.Equals("hebrew", StringComparison.InvariantCultureIgnoreCase))
#endif
                    {
                        // RtoL code seems to have trouble with NSM characters 0x05b0 and 0x05b4.
                        // Strip them out.
                        string native = "";
                        char[] a      = lang.NameInNative.ToCharArray();
                        foreach (char c in a)
                        {
                            if (c != 0x05b0 && c != 0x05b4)
                            {
                                native += c;
                            }
                        }

                        language.AddText(lang.NameInEnglish + " : " + native, lang.Language);
                    }
                    else
                    {
                        language.AddText(lang.NameInEnglish + " : " + lang.NameInNative, lang.Language);
                    }
                }
                language.NumColumns = 2;
                language.SetValueByKey(XmlOptionsData.Language);

                language.OnChange = delegate(UIGridModularRadioBoxElement.ListEntry entry)
                {
                    // Note we can only get away with this since the language won't change for real until restart.
                    XmlOptionsData.Language = language.CurKey;
                };
                language.HelpID = "Language";
                // Add to grid.
                grid.Add(language, 0, index++);
            }

            {
                modalToolMenu         = new UIGridModularCheckboxElement(blob, Strings.Localize("optionsParams.ModalToolMenu"));
                modalToolMenu.OnCheck = delegate() { XmlOptionsData.ModalToolMenu = true; };
                modalToolMenu.OnClear = delegate() { XmlOptionsData.ModalToolMenu = false; };
                modalToolMenu.HelpID  = "ModalToolMenu";
                // Add to grid.
                grid.Add(modalToolMenu, 0, index++);
            }

            #region Stick Inverting
            {
                invertYAxis         = new UIGridModularCheckboxElement(blob, Strings.Localize("optionsParams.invertYAxis"));
                invertYAxis.OnCheck = delegate()
                {
                    PlayerIndex lastTouched = GamePadInput.RealToLogical(GamePadInput.LastTouched);
                    GamePadInput.SetInvertYAxis(lastTouched, true);
                };
                invertYAxis.OnClear = delegate()
                {
                    PlayerIndex lastTouched = GamePadInput.RealToLogical(GamePadInput.LastTouched);
                    GamePadInput.SetInvertYAxis(lastTouched, false);
                };
                invertYAxis.HelpID = "InvertYAxis";
                grid.Add(invertYAxis, 0, index++);
            }

            {
                invertXAxis         = new UIGridModularCheckboxElement(blob, Strings.Localize("optionsParams.invertXAxis"));
                invertXAxis.OnCheck = delegate()
                {
                    PlayerIndex lastTouched = GamePadInput.RealToLogical(GamePadInput.LastTouched);
                    GamePadInput.SetInvertXAxis(lastTouched, true);
                };
                invertXAxis.OnClear = delegate()
                {
                    PlayerIndex lastTouched = GamePadInput.RealToLogical(GamePadInput.LastTouched);
                    GamePadInput.SetInvertXAxis(lastTouched, false);
                };
                invertXAxis.HelpID = "InvertXAxis";
                grid.Add(invertXAxis, 0, index++);
            }
            {
                invertCamY         = new UIGridModularCheckboxElement(blob, Strings.Localize("optionsParams.invertCamY"));
                invertCamY.OnCheck = delegate()
                {
                    PlayerIndex lastTouched = GamePadInput.RealToLogical(GamePadInput.LastTouched);
                    GamePadInput.SetInvertCamY(lastTouched, true);
                };
                invertCamY.OnClear = delegate()
                {
                    PlayerIndex lastTouched = GamePadInput.RealToLogical(GamePadInput.LastTouched);
                    GamePadInput.SetInvertCamY(lastTouched, false);
                };
                invertCamY.HelpID = "InvertCamY";
                grid.Add(invertCamY, 0, index++);
            }

            {
                invertCamX         = new UIGridModularCheckboxElement(blob, Strings.Localize("optionsParams.invertCamX"));
                invertCamX.OnCheck = delegate()
                {
                    PlayerIndex lastTouched = GamePadInput.RealToLogical(GamePadInput.LastTouched);
                    GamePadInput.SetInvertCamX(lastTouched, true);
                };
                invertCamX.OnClear = delegate()
                {
                    PlayerIndex lastTouched = GamePadInput.RealToLogical(GamePadInput.LastTouched);
                    GamePadInput.SetInvertCamX(lastTouched, false);
                };
                invertCamX.HelpID = "InvertCamX";
                grid.Add(invertCamX, 0, index++);
            }
            #endregion Stick Inverting

            #region Terrain Edit Speed
            {
                // Restore default.
                blob.height                        = blob.width / 5.0f;
                terrainSpeed                       = new UIGridModularFloatSliderElement(blob, Strings.Localize("optionsParams.terrainSpeed"));
                terrainSpeed.MinValue              = 0.25f;
                terrainSpeed.MaxValue              = 4.0f;
                terrainSpeed.IncrementByAmount     = 0.25f;
                terrainSpeed.NumberOfDecimalPlaces = 2;
                terrainSpeed.OnChange              = delegate(float speed) { XmlOptionsData.TerrainSpeed = speed; };
                terrainSpeed.HelpID                = "TerrainSpeed";
                grid.Add(terrainSpeed, 0, index++);
            }
            #endregion Terrain Edit Speed

            #region Audio Volumes
            {
                // Restore default.
                blob.height                    = blob.width / 5.0f;
                uiVolume                       = new UIGridModularFloatSliderElement(blob, Strings.Localize("optionsParams.uiVolume"));
                uiVolume.MinValue              = 0.0f;
                uiVolume.MaxValue              = 100.0f;
                uiVolume.IncrementByAmount     = 5.0f;
                uiVolume.NumberOfDecimalPlaces = 0;
                uiVolume.OnChange              = delegate(float volume) { XmlOptionsData.UIVolume = volume * 0.01f; };
                uiVolume.HelpID                = "UIVolume";
                grid.Add(uiVolume, 0, index++);
            }
            {
                foleyVolume                       = new UIGridModularFloatSliderElement(blob, Strings.Localize("optionsParams.foleyVolume"));
                foleyVolume.MinValue              = 0.0f;
                foleyVolume.MaxValue              = 100.0f;
                foleyVolume.IncrementByAmount     = 5.0f;
                foleyVolume.NumberOfDecimalPlaces = 0;
                foleyVolume.OnChange              = delegate(float volume) { XmlOptionsData.FoleyVolume = volume * 0.01f; };
                foleyVolume.HelpID                = "EffectsVolume";
                grid.Add(foleyVolume, 0, index++);
            }
            {
                musicVolume                       = new UIGridModularFloatSliderElement(blob, Strings.Localize("optionsParams.musicVolume"));
                musicVolume.MinValue              = 0.0f;
                musicVolume.MaxValue              = 100.0f;
                musicVolume.IncrementByAmount     = 5.0f;
                musicVolume.NumberOfDecimalPlaces = 0;
                musicVolume.OnChange              = delegate(float volume) { XmlOptionsData.MusicVolume = volume * 0.01f; };
                musicVolume.HelpID                = "MusicVolume";
                grid.Add(musicVolume, 0, index++);
            }
            #endregion Audio Volumes

            #region Privacy Settings
            {
                checkForUpdates         = new UIGridModularCheckboxElement(blob, Strings.Localize("optionsParams.checkForUpdates"));
                checkForUpdates.OnCheck = delegate() { XmlOptionsData.CheckForUpdates = true; };
                checkForUpdates.OnClear = delegate() { XmlOptionsData.CheckForUpdates = false; };
                checkForUpdates.HelpID  = "CheckForUpdates";
                // Add to grid.
                grid.Add(checkForUpdates, 0, index++);
            }
            {
                sendInstrumentation         = new UIGridModularCheckboxElement(blob, Strings.Localize("optionsParams.sendInstrumentation"));
                sendInstrumentation.OnCheck = delegate() { XmlOptionsData.SendInstrumentation = true; };
                sendInstrumentation.OnClear = delegate() { XmlOptionsData.SendInstrumentation = false; };
                sendInstrumentation.HelpID  = "SendInstrumentation";
                // Add to grid.
                grid.Add(sendInstrumentation, 0, index++);
            }
            {
                UIGridModularButtonElement.UIButtonElementEvent onA = delegate()
                {
                    Process.Start(Program2.SiteOptions.KGLUrl + @"/EULA#code_of_conduct");
                };

                showCodeOfConduct        = new UIGridModularButtonElement(blob, Strings.Localize("optionsParams.viewCodeOfConduct"), Strings.Localize("optionsParams.viewButtonLabel"), onA, null, null);
                showCodeOfConduct.HelpID = "ShowCodeOfConduct";
                grid.Add(showCodeOfConduct, 0, index++);
            }
            {
                UIGridModularButtonElement.UIButtonElementEvent onA = delegate()
                {
                    Process.Start(Program2.SiteOptions.KGLUrl + @"/privacy");
                };

                showPrivacyStatement        = new UIGridModularButtonElement(blob, Strings.Localize("optionsParams.viewPrivacyStatement"), Strings.Localize("optionsParams.viewButtonLabel"), onA, null, null);
                showPrivacyStatement.HelpID = "ShowPrivacyStatement";
                grid.Add(showPrivacyStatement, 0, index++);
            }
            {
                UIGridModularButtonElement.UIButtonElementEvent onA = delegate()
                {
                    Process.Start(Program2.SiteOptions.KGLUrl + @"/EULA#eula");
                };

                showEULA        = new UIGridModularButtonElement(blob, Strings.Localize("optionsParams.viewEULA"), Strings.Localize("optionsParams.viewButtonLabel"), onA, null, null);
                showEULA.HelpID = "ShowEULA";
                grid.Add(showEULA, 0, index++);
            }
            #endregion

            #region ShowIntroVideo
            {
                showIntroVideo         = new UIGridModularCheckboxElement(blob, Strings.Localize("optionsParams.showIntroVideo"));
                showIntroVideo.OnCheck = delegate() { XmlOptionsData.ShowIntroVideo = true; };
                showIntroVideo.OnClear = delegate() { XmlOptionsData.ShowIntroVideo = false; };
                showIntroVideo.HelpID  = "ShowIntroVideo";
                // Add to grid.
                grid.Add(showIntroVideo, 0, index++);
            }
            #endregion

            #region ShowTutorialDebug
            {
                showTutorialDebug         = new UIGridModularCheckboxElement(blob, Strings.Localize("optionsParams.showTutorialDebug"));
                showTutorialDebug.OnCheck = delegate() { XmlOptionsData.ShowTutorialDebug = true; };
                showTutorialDebug.OnClear = delegate() { XmlOptionsData.ShowTutorialDebug = false; };
                showTutorialDebug.HelpID  = "ShowTutorialDebug";
                // Add to grid.
                grid.Add(showTutorialDebug, 0, index++);
            }
            #endregion


            showVersion        = new UIGridModularButtonElement(blob, Strings.Localize("shareHub.appName") + " (" + Program2.ThisVersion.ToString() + ", " + Program2.SiteOptions.Product + ")", null, null, null, null);
            showVersion.HelpID = "Version";
            grid.Add(showVersion, 0, index++);


            //
            // Set grid properties.
            //
            grid.Spacing     = new Vector2(0.0f, 0.1f); // The first number doesn't really matter since we're doing a 1d column.
            grid.Scrolling   = true;
            grid.Wrap        = false;
            grid.LocalMatrix = Matrix.Identity;

            // Loop over al the elements in the grid.  For any that have
            // help, set the flag so they display Y button for help.
            for (int i = 0; i < grid.ActualDimensions.Y; i++)
            {
                UIGridElement e        = grid.Get(0, i);
                string        helpID   = e.HelpID;
                string        helpText = TweakScreenHelp.GetHelp(helpID);
                if (helpText != null)
                {
                    e.ShowHelpButton = true;
                }
            }
        }   // end of InitGrid
Example #8
0
            // c'tor
            public Shared(OldLoadLevelMenu parent)
            {
                this.parent = parent;
                GraphicsDevice device = BokuGame.bokuGame.GraphicsDevice;

                // Create grids for each tabbed page.
                UIGridWorldTile.SharedRenderTarget.ResetAll();
                missionsGrid      = CreateGrid(BokuGame.Settings.MediaPath + @"Xml\Levels" + @"\" + missionsPath, @"*.Xml");
                myWorldsGrid      = CreateGrid(BokuGame.Settings.MediaPath + @"Xml\Levels" + @"\" + myWorldsPath, @"*.Xml");
                starterWorldsGrid = CreateGrid(BokuGame.Settings.MediaPath + @"Xml\Levels" + @"\" + starterWorldsPath, @"*.Xml");
                downloadsGrid     = CreateGrid(BokuGame.Settings.MediaPath + @"Xml\Levels" + @"\" + downloadsPath, @"*.Xml");

                // Create tabs.
                // Create text elements.
                // Start with a blob of common parameters.
                UIGridElement.ParamBlob blob = new UIGridElement.ParamBlob();
                blob.width            = 2.0f;
                blob.height           = 0.5f;
                blob.edgeSize         = 0.25f;
                blob.font             = BokuGame.fontBerlinSansFBDemiBold24;
                blob.textColor        = Color.White;
                blob.dropShadowColor  = Color.Black;
                blob.useDropShadow    = true;
                blob.invertDropShadow = false;
                blob.normalMapName    = @"QuarterRoundNormalMap";
                blob.justify          = UIGrid2DTextElement.Justification.Center;

                blob.selectedColor   = selectedColor;
                blob.unselectedColor = unselectedColor;
                missionsTab          = new UIGrid2DTextElement(blob, Strings.Instance.loadLevelMenu.missionsTab);
                missionsTab.Position = new Vector3(-3.75f, 3.25f, 0.0f);

                float offset = 0.0f;

#if HIDE_MISSIONS
                // Provide offset to center remaining tabs.
                offset = -0.75f;
#endif

                blob.selectedColor   = selectedColor;
                blob.unselectedColor = unselectedColor;
                myWorldsTab          = new UIGrid2DTextElement(blob, Strings.Instance.loadLevelMenu.myWorldsTab);
                myWorldsTab.Position = new Vector3(-1.25f + offset, 3.25f, 0.0f);

                blob.selectedColor        = selectedColor;
                blob.unselectedColor      = unselectedColor;
                starterWorldsTab          = new UIGrid2DTextElement(blob, Strings.Instance.loadLevelMenu.starterWorldsTab);
                starterWorldsTab.Position = new Vector3(1.25f + offset, 3.25f, 0.0f);

                blob.selectedColor    = selectedColor;
                blob.unselectedColor  = unselectedColor;
                downloadsTab          = new UIGrid2DTextElement(blob, Strings.Instance.loadLevelMenu.downloadsTab);
                downloadsTab.Position = new Vector3(3.75f + offset, 3.25f, 0.0f);

                // Create the backdrop.

                // And the bottom bar.
                bottomBar               = new UIGrid2DTextElement(8.5f, 0.5f, 0.25f, @"QuarterRoundNormalMap", selectedColor, @"", BokuGame.fontBerlinSansFBDemiBold20, UIGrid2DTextElement.Justification.Center, Color.White, Color.Black, false);
                bottomBar.Position      = new Vector3(0.5f, -3.35f, 0.0f);
                bottomBar.SpecularColor = Color.Gray;
            }   // end of Shared c'tor
        public MicrobitPatternEditor()
        {
            // Create a blob of common parameters.
            UIGridElement.ParamBlob blob = new UIGridElement.ParamBlob();
            blob.width            = 512.0f / 96.0f;    // 5.33333
            blob.height           = blob.width / 5.0f; // 1.06667
            blob.edgeSize         = 0.06f;
            blob.Font             = UI2D.Shared.GetGameFont24Bold;
            blob.textColor        = Color.White;
            blob.dropShadowColor  = Color.Black;
            blob.useDropShadow    = true;
            blob.invertDropShadow = false;
            blob.unselectedColor  = new Color(new Vector3(4, 100, 90) / 255.0f);
            blob.selectedColor    = new Color(new Vector3(5, 180, 160) / 255.0f);
            blob.normalMapName    = @"Slant0Smoothed5NormalMap";
            blob.justify          = UIGridModularCheckboxElement.Justification.Left;

            brightnessSlider                   = new UIGridModularIntegerSliderElement(blob, Strings.Localize("microbitPatternEditor.brightness"));
            brightnessSlider.Position          = new Vector3(1.06667f, 1.01f, 0);
            brightnessSlider.MinValue          = 0;
            brightnessSlider.MaxValue          = 255;
            brightnessSlider.IncrementByAmount = 1;
            brightnessSlider.FastScrollScalar  = 10;
            brightnessSlider.UseRightStick     = true;
            brightnessSlider.OnChange          = delegate(int brightness) { pattern.Brightness = brightness; };
            brightnessSlider.SetHelpOverlay    = false;

            durationSlider                       = new UIGridModularFloatSliderElement(blob, Strings.Localize("microbitPatternEditor.duration"));
            durationSlider.Position              = new Vector3(1.06667f, 0.0f, 0);
            durationSlider.MinValue              = 0.0f;
            durationSlider.MaxValue              = 5.0f;
            durationSlider.IncrementByAmount     = 0.1f;
            durationSlider.CurrentValueImmediate = 0.1f;
            durationSlider.UseRightStick         = true;
            durationSlider.OnChange              = delegate(float duration) { pattern.Duration = duration; };
            durationSlider.SetHelpOverlay        = false;

            blob.width             = 2.06777f;
            blob.height            = blob.width;
            ledGrid                = new UIGrid2DLEDArrayElement(blob);
            ledGrid.Position       = new Vector3(-2.58f, 0.51f, 0);
            ledGrid.SetHelpOverlay = false;

            blob.width         = brightnessSlider.Width + ledGrid.Width - 0.04f;
            blob.height        = brightnessSlider.Height * 0.75f;
            bar                = new UIGrid2DButtonBarElement(blob);
            bar.Position       = new Vector3(0.055f, -0.875f, 0);
            bar.SetHelpOverlay = false;

            camera = new PerspectiveUICamera();

            leftStickPosition            = new Vector2(-3.9f, 0.5f);
            rightStickPositionBrightness = new Vector2(4.0f, 1.0f);
            rightStickPositionDuration   = new Vector2(4.0f, 0.0f);
            rightStickPosition           = rightStickPositionBrightness;

            // Buttons
            {
                GetTexture getTexture = delegate() { return(ButtonTextures.BButton); };
                cancelButton = new Button(Strings.Localize("saveLevelDialog.cancel"), labelColor, getTexture, UI2D.Shared.GetGameFont20);
            }
            {
                GetTexture getTexture = delegate() { return(ButtonTextures.AButton); };
                saveButton = new Button(Strings.Localize("saveLevelDialog.save"), labelColor, getTexture, UI2D.Shared.GetGameFont20);
            }
            {
                GetTexture getTexture = delegate() { return(ButtonTextures.YButton); };
                toggleLEDButton = new Button(Strings.Localize("microbitPatternEditor.toggleLED"), labelColor, getTexture, UI2D.Shared.GetGameFont20);
            }
        }   // end of c'tor
Example #10
0
            // c'tor
            public Shared(MainMenu parent)
            {
                // Set up the options menu.
                optionsMenu = new OptionsMenu();
                liveFeed    = new LiveFeedDisplay();

                if (BokuGame.bMarsMode)
                {
                    boku = ActorManager.GetActor("RoverGreeter").CreateNewInstance() as BokuGreeter;
                }
                else
                {
                    boku = ActorManager.GetActor("BokuGreeter").CreateNewInstance() as BokuGreeter;
                }
                boku.SetColor(Classification.Colors.White);

                bokuCamera.NearClip = 0.1f;
                bokuCamera.FarClip  = 20.0f;
                // These are the values for the model when its translation off the ground has been thrown away (and added back via constant)
                bokuCamera.From = 1.3f * new Vector3(1.5f, 0.3f, 0.5f);
                bokuCamera.At   = new Vector3(0.0f, -0.5f, 0.0f);
                // These are the values for a "correct" model - that is raised off the ground in Max and whose translation is intact
                // bokuCamera.From = new Vector3(1.5f, 0.3f, 1.4f);
                // bokuCamera.At = new Vector3(0.0f, -0.5f, 0.7f);

                // Move camera to look at menu from an angle.
                //camera.From = 0.9f * camera.From;
                camera.At = new Vector3(-0.6f, 0, 0);
                Matrix foo = Matrix.CreateRotationY(-0.3f) * Matrix.CreateTranslation(new Vector3(1.0f, 0.0f, -2.0f));

                camera.At   = Vector3.Transform(camera.At, foo);
                camera.From = Vector3.Transform(camera.From, foo);

                // We'll be using a 1280x720 rendertarget for all rendering.
                camera.Resolution     = new Point(1280, 720);
                bokuCamera.Resolution = new Point(1280, 720);

                timer = new Boku.Base.GameTimer(Boku.Base.GameTimer.ClockType.WallClock, 3.1415927);
                timer.TimerElapsed += ChangeExpression;

                // Create text elements.
                // Start with a blob of common parameters.
                UIGridElement.ParamBlob blob = new UIGridElement.ParamBlob();
                blob.width            = 3.4f;
                blob.height           = 0.5f;
                blob.edgeSize         = 0.06f;
                blob.Font             = UI2D.Shared.GetGameFont24Bold;
                blob.textColor        = Color.White;
                blob.dropShadowColor  = Color.Black;
                blob.useDropShadow    = true;
                blob.invertDropShadow = true;
                blob.unselectedColor  = new Color(new Vector3(4, 100, 90) / 255.0f);
                blob.selectedColor    = new Color(new Vector3(5, 180, 160) / 255.0f);
                blob.normalMapName    = @"Slant0Smoothed5NormalMap";
                blob.justify          = UIGrid2DTextElement.Justification.Left;

                menu             = new ModularMenu(blob, null /*Strings.Localize("mainMenu.mainMenu")*/);
                menu.OnSelect    = parent.OnSelect;
                menu.OnCancel    = parent.OnCancel;
                menu.UseRtCoords = true;


                menu.AddText(Strings.Localize("mainMenu.new"));
                menu.AddText(Strings.Localize("mainMenu.play"));
#if NETFX_CORE
                menu.AddText(Strings.Localize("mainMenu.import"));
#else
                if (WinStoreHelpers.RunningAsUWP)
                {
                    menu.AddText(Strings.Localize("mainMenu.import"));
                }
#endif
                menu.AddText(Strings.Localize("mainMenu.community"));
                menu.AddText(Strings.Localize("mainMenu.options"));
                menu.AddText(Strings.Localize("mainMenu.help"));
#if !NETFX_CORE
                // Once you run an app in Win8, you are never allowed to kill it.
                // Only the system can kill it.
                menu.AddText(Strings.Localize("mainMenu.exit"));
#endif

                // And then remove what we don't want.
                if (!Program2.SiteOptions.CommunityEnabled)
                {
                    menu.DeleteText(Strings.Localize("mainMenu.community"));
                }

                menu.WorldMatrix = Matrix.CreateScale(0.9f, 1.0f, 1.0f);

                string signOutStr = Strings.Localize("textDialog.signOut");
                signOutButton = new Button(signOutStr, Color.White, null, UI2D.Shared.GetGameFont20);

                //Because this button has no texture and we can't set the width of the texture passed in explicitly. Just use the fixed size based on text size.
                UI2D.Shared.GetFont Font = UI2D.Shared.GetGameFont20;
                Vector2             size = (null != Font) ? Font().MeasureString(signOutStr) : new Vector2(60.0f, 20.0f);
                signOutButton.FixedSize    = size;
                signOutButton.UseFixedSize = true;

                textBlob = new TextBlob(UI2D.Shared.GetGameFont24, "", 340);
            }   // end of Shared c'tor
Example #11
0
        // c'tor
        public TexturePicker()
        {
            InitFileList();

            // Create the back plate.
            backPlate          = new UIGrid2DTextureElement(7.0f, 1.25f, 0.625f, @"QuarterRound4NormalMap", backPlateColor, null);
            backPlate.Position = new Vector3(0.0f, 0.0f, 0.0f);
            backPlate.NoZ      = true;

            // Create the selection plate.
            selectionPlate          = new UIGrid2DTextureElement(1.125f, 1.125f, 0.5625f, @"QuarterRound4NormalMap", selectionPlateColor, null);
            selectionPlate.NoZ      = true;
            selectionPlate.Position = new Vector3(-2.25f, 0.0f, 0.0f);

            // Create texture elements for the grids.
            // Start with a blob of common parameters.
            UIGridElement.ParamBlob blob = new UIGridElement.ParamBlob();
            blob.width           = 1.0f;
            blob.height          = 1.0f;
            blob.edgeSize        = 0.5f;
            blob.selectedColor   = Color.White;
            blob.unselectedColor = Color.LightGray;
            blob.normalMapName   = @"QuarterRound4NormalMap";

            // Create and populate grid.
            int numElements = files.Count;

            grid0 = new UIGrid(OnSelect, OnCancel, new Point(1, numElements), "TerrainEdit.TextureGrid0");
            grid1 = new UIGrid(OnSelect, OnCancel, new Point(1, numElements), "TerrainEdit.TextureGrid1");
            grid2 = new UIGrid(OnSelect, OnCancel, new Point(1, numElements), "TerrainEdit.TextureGrid2");
            grid3 = new UIGrid(OnSelect, OnCancel, new Point(1, numElements), "TerrainEdit.TextureGrid3");
            for (int i = 0; i < numElements; i++)
            {
                // Note, we could probably have the grid share elements except that the element positions
                // are set during Update() so unless we interleaved Update() and Render() calls we would
                // end up seeing everything rendered in the wrong place.
                TextureFile            file = (TextureFile)files[i];
                UIGrid2DTextureElement e    = new UIGrid2DTextureElement(blob, @"Terrain\GroundTextures\" + file.filename);
                e.NoZ = true;
                grid0.Add(e, 0, i);

                file  = (TextureFile)files[i];
                e     = new UIGrid2DTextureElement(blob, @"Terrain\GroundTextures\" + file.filename);
                e.NoZ = true;
                grid1.Add(e, 0, i);

                file  = (TextureFile)files[i];
                e     = new UIGrid2DTextureElement(blob, @"Terrain\GroundTextures\" + file.filename);
                e.NoZ = true;
                grid2.Add(e, 0, i);

                file  = (TextureFile)files[i];
                e     = new UIGrid2DTextureElement(blob, @"Terrain\GroundTextures\" + file.filename);
                e.NoZ = true;
                grid3.Add(e, 0, i);
            }

            // Set grid properties.
            grid0.Spacing     = new Vector2(0.0f, 0.25f); // The first number doesn't really matter since we're doing a 1d column.
            grid0.Scrolling   = true;
            grid0.Wrap        = false;
            grid0.LocalMatrix = Matrix.CreateTranslation(new Vector3(-2.25f, 0.0f, 0.0f));

            grid1.Spacing     = new Vector2(0.0f, 0.25f); // The first number doesn't really matter since we're doing a 1d column.
            grid1.Scrolling   = true;
            grid1.Wrap        = false;
            grid1.LocalMatrix = Matrix.CreateTranslation(new Vector3(-0.75f, 0.0f, 0.0f));

            grid2.Spacing     = new Vector2(0.0f, 0.25f); // The first number doesn't really matter since we're doing a 1d column.
            grid2.Scrolling   = true;
            grid2.Wrap        = false;
            grid2.LocalMatrix = Matrix.CreateTranslation(new Vector3(0.75f, 0.0f, 0.0f));

            grid3.Spacing     = new Vector2(0.0f, 0.25f); // The first number doesn't really matter since we're doing a 1d column.
            grid3.Scrolling   = true;
            grid3.Wrap        = false;
            grid3.LocalMatrix = Matrix.CreateTranslation(new Vector3(2.25f, 0.0f, 0.0f));
        }   // end of TexturePicker c'tor