// 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(); }
// 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
// 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
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
// 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
// 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
// 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