Exemplo n.º 1
0
        public static PopupWindow CreateOkCancelPopup(Transform parent, string title, string message, PopupWindowCallback onOk, PopupWindowCallback onCancel)
        {
            var okDesc     = new ButtonDescriptor(ButtonType.Ok, onOk);
            var cancelDesc = new ButtonDescriptor(ButtonType.Cancel, onCancel);

            return(CreatePopupWindow(parent, title, message, okDesc, cancelDesc));
        }
Exemplo n.º 2
0
        public override void PreOpen()
        {
            base.PreOpen();

            /*
             * note: this code is in PreOpen() rather than in the ctor because otherwise RimWorld would crash (more precisely, Unity crashes).
             * I can't remember exactly where, but it deals with Unity calculating the text size of a floating menu.
             * So better to let this code here rather than in the ctor.
             */
            if (Enumerable.Any(_bottomButtonsDescriptorList, buttonDescriptor => buttonDescriptor.Label == "PLMWBB_LoadSave".Translate()))
            {
                return;
            }

            var buttonSaveLoadPreset = new ButtonDescriptor("PLMWBB_LoadSave".Translate(),
                                                            "PLMWBB_LoadOrSaveFilterPresets".Translate());

            buttonSaveLoadPreset.AddFloatMenuOption("PLMWLODSAV_Save".Translate(), delegate /* action click */
            {
                if (!(TabController.TabById("LoadSave") is TabLoadSave tab))
                {
                    return;
                }

                tab.LoadSaveMode = LoadSaveMode.Save;
                TabController.SetSelectedTabById("LoadSave");
            }, delegate     /* action mouse over */
Exemplo n.º 3
0
 private async ValueTask OnButtonClickAsync(ButtonDescriptor button)
 {
     if (button.ClickHandler != null)
     {
         await button.ClickHandler.Value.InvokeAsync(new ButtonClickEventArgs(button));
     }
 }
Exemplo n.º 4
0
        public void AddButton(ButtonDescriptor descriptor)
        {
            if (ButtonConflicts(descriptor))
            {
                throw new System.ArgumentException("There is a conflict adding this button.");
            }

            var button = Instantiate(OpenTibiaUnity.GameManager.DefaultButtonWithLabel, _buttonsPanel.transform);

            button.onClick.AddListener(() => {
                OnButtonClick(descriptor);
            });

            var label = button.GetComponentInChildren <TMPro.TextMeshProUGUI>();

            label.SetText(descriptor.text);

            var labelSize = label.GetPreferredValues();

            var layoutElement = button.gameObject.AddComponent <LayoutElement>();

            layoutElement.minWidth = labelSize.x + 20;

            _buttons.Add(descriptor);

            _buttonsPanel.gameObject.SetActive(true);
            _separatorPanel.gameObject.SetActive(true);
        }
Exemplo n.º 5
0
        public TabFilteredTiles(float columnSizePercent) : base(columnSizePercent)
        {
            #region MINIMIZED_WINDOW_BUTTONS

            var buttonListStart = new ButtonDescriptor("<<", delegate
            {
                // reset starting display index
                _tileDisplayIndexStart = 0;
            }, "PLMWFTIL_GoToStartOfTileList".Translate());

            var buttonPreviousPage = new ButtonDescriptor("<", delegate
            {
                if (_tileDisplayIndexStart >= MaxDisplayedTileWhenMinimized)
                {
                    _tileDisplayIndexStart -= MaxDisplayedTileWhenMinimized;
                }
                else
                {
                    Messages.Message("PLMWFTIL_ReachedListStart".Translate(), MessageTypeDefOf.RejectInput);
                }
            }, "PLMWFTIL_GoToPreviousListPage".Translate());

            var buttonNextPage = new ButtonDescriptor(">", delegate
            {
                var matchingTilesCount  = PrepareLanding.Instance.TileFilter.AllMatchingTiles.Count;
                _tileDisplayIndexStart += MaxDisplayedTileWhenMinimized;
                if (_tileDisplayIndexStart > matchingTilesCount)
                {
                    Messages.Message($"{"PLMWFTIL_NoMoreTilesAvailable".Translate()} {matchingTilesCount}).",
                                     MessageTypeDefOf.RejectInput);
                    _tileDisplayIndexStart -= MaxDisplayedTileWhenMinimized;
                }
            }, "PLMWFTIL_GoToNextListPage".Translate());

            var buttonListEnd = new ButtonDescriptor(">>", delegate
            {
                var matchingTilesCount    = PrepareLanding.Instance.TileFilter.AllMatchingTiles.Count;
                var tileDisplayIndexStart = matchingTilesCount - matchingTilesCount % MaxDisplayedTileWhenMinimized;
                if (tileDisplayIndexStart == _tileDisplayIndexStart)
                {
                    Messages.Message($"{"PLMWFTIL_NoMoreTilesAvailable".Translate()} {matchingTilesCount}).",
                                     MessageTypeDefOf.RejectInput);
                }

                _tileDisplayIndexStart = tileDisplayIndexStart;
            }, "PLMWFTIL_GoToEndOfList".Translate());

            _minimizedWindowButtonsDescriptorList =
                new List <ButtonDescriptor> {
                buttonListStart, buttonPreviousPage, buttonNextPage, buttonListEnd
            };

            #endregion MINIMIZED_WINDOW_BUTTONS
        }
Exemplo n.º 6
0
        public TabFilteredTiles(float columnSizePercent) : base(columnSizePercent)
        {
            #region MINIMIZED_WINDOW_BUTTONS

            var buttonListStart = new ButtonDescriptor("<<", delegate
            {
                // reset starting display index
                _tileDisplayIndexStart = 0;
            }, "Go to start of tile list.");

            var buttonPreviousPage = new ButtonDescriptor("<", delegate
            {
                if (_tileDisplayIndexStart >= MaxDisplayedTileWhenMinimized)
                {
                    _tileDisplayIndexStart -= MaxDisplayedTileWhenMinimized;
                }
                else
                {
                    Messages.Message("Reached start of tile list.", MessageSound.RejectInput);
                }
            }, "Go to previous list page.");

            var buttonNextPage = new ButtonDescriptor(">", delegate
            {
                var matchingTilesCount  = PrepareLanding.Instance.TileFilter.AllMatchingTiles.Count;
                _tileDisplayIndexStart += MaxDisplayedTileWhenMinimized;
                if (_tileDisplayIndexStart > matchingTilesCount)
                {
                    Messages.Message($"No more tiles available to display (max: {matchingTilesCount}).",
                                     MessageSound.RejectInput);
                    _tileDisplayIndexStart -= MaxDisplayedTileWhenMinimized;
                }
            }, "Go to next list page.");

            var buttonListEnd = new ButtonDescriptor(">>", delegate
            {
                var matchingTilesCount    = PrepareLanding.Instance.TileFilter.AllMatchingTiles.Count;
                var tileDisplayIndexStart = matchingTilesCount - matchingTilesCount % MaxDisplayedTileWhenMinimized;
                if (tileDisplayIndexStart == _tileDisplayIndexStart)
                {
                    Messages.Message($"No more tiles available to display (max: {matchingTilesCount}).",
                                     MessageSound.RejectInput);
                }

                _tileDisplayIndexStart = tileDisplayIndexStart;
            }, "Go to end of list.");

            _minimizedWindowButtonsDescriptorList =
                new List <ButtonDescriptor> {
                buttonListStart, buttonPreviousPage, buttonNextPage, buttonListEnd
            };

            #endregion MINIMIZED_WINDOW_BUTTONS
        }
Exemplo n.º 7
0
        private bool FindDescriptor(ref ButtonDescriptor descriptor, KeyCode keyCode)
        {
            int index = _buttons.FindIndex((x) => x.keyCodes.Contains(keyCode));

            if (index == -1)
            {
                return(false);
            }

            descriptor = _buttons[index];
            return(true);
        }
Exemplo n.º 8
0
 public bool ButtonConflicts(ButtonDescriptor other)
 {
     foreach (var buttonDescriptor in _buttons)
     {
         foreach (var keyCode in other.keyCodes)
         {
             if (buttonDescriptor.keyCodes.Contains(keyCode))
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Exemplo n.º 9
0
        private void OnKeyDown(Event e, bool _)
        {
            if (!InputHandler.IsHighlighted(this))
            {
                return;
            }

            ButtonDescriptor descriptor = default;

            if (FindDescriptor(ref descriptor, e.keyCode))
            {
                e.Use();
                OnButtonClick(descriptor);
            }
        }
Exemplo n.º 10
0
 public ButtonClickEventArgs(ButtonDescriptor button)
 {
     Button = button;
 }
Exemplo n.º 11
0
        public TabLoadSave(UserData userData, float columnSizePercent = 0.25f) :
            base(columnSizePercent)
        {
            _userData    = userData;
            LoadSaveMode = LoadSaveMode.Unknown;

            _stylePresetInfo = new GUIStyle(Text.textFieldStyles[1])
            {
                alignment = TextAnchor.UpperLeft,
                wordWrap  = true,
                richText  = true
            };

            // setup default name
            if (SteamManager.Initialized)
            {
                _presetAuthorSave = SteamUtility.SteamPersonaName;
            }
            // TODO check if possible to get logged in user if non steam rimworld

            #region LIST_BUTTONS

            var buttonListStart = new ButtonDescriptor("<<", delegate
            {
                // reset starting display index
                _listDisplayStartIndex = 0;
            }, "Go to start of item list.");

            var buttonPreviousPage = new ButtonDescriptor("<", delegate
            {
                if (_listDisplayStartIndex >= MaxItemsToDisplay)
                {
                    _listDisplayStartIndex -= MaxItemsToDisplay;
                }
                else
                {
                    Messages.Message("Reached start of item list.", MessageSound.RejectInput);
                }
            }, "Go to previous list page.");

            var buttonNextPage = new ButtonDescriptor(">", delegate
            {
                var presetFilesCount    = _userData.PresetManager.AllPresetFiles.Count;
                _listDisplayStartIndex += MaxItemsToDisplay;
                if (_listDisplayStartIndex > presetFilesCount)
                {
                    Messages.Message($"No more available items to display (max: {presetFilesCount}).",
                                     MessageSound.RejectInput);
                    _listDisplayStartIndex -= MaxItemsToDisplay;
                }
            }, "Go to next list page.");

            var buttonListEnd = new ButtonDescriptor(">>", delegate
            {
                var presetFilesCount  = _userData.PresetManager.AllPresetFiles.Count;
                var displayIndexStart = presetFilesCount - presetFilesCount % MaxItemsToDisplay;
                if (displayIndexStart == _listDisplayStartIndex)
                {
                    Messages.Message($"No more available items to display (max: {presetFilesCount}).",
                                     MessageSound.RejectInput);
                }

                _listDisplayStartIndex = displayIndexStart;
            }, "Go to end of list.");

            _buttonList =
                new List <ButtonDescriptor> {
                buttonListStart, buttonPreviousPage, buttonNextPage, buttonListEnd
            };

            #endregion
        }
Exemplo n.º 12
0
        public MainWindow(UserData userData)
        {
            _userData = userData;

            doCloseButton = false; // explicitly disable close button, we'll draw it ourselves
            doCloseX      = true;
            optionalTitle = "Prepare Landing";
            MinimizedWindow.WindowLabel = optionalTitle;
            MinimizedWindow.AddMinimizedWindowContent += AddMinimizedWindowContent;

            /*
             * GUI utilities (tabs)
             */
            _tabGuiUtilities.Clear();
            _tabGuiUtilities.Add(new TabTerrain(userData, 0.30f));
            _tabGuiUtilities.Add(new TabTemperature(userData, 0.30f));
            _tabGuiUtilities.Add(new TabFilteredTiles(0.48f));
            _tabGuiUtilities.Add(new TabInfo(userData, 0.48f));
            _tabGuiUtilities.Add(new TabOptions(userData, 0.30f));
            _tabGuiUtilities.Add(new TabLoadSave(userData, 0.48f));

            TabController.Clear();
            TabController.AddTabRange(_tabGuiUtilities);

            /*
             * Bottom buttons
             */

            #region BOTTOM_BUTTONS

            var buttonFilterTiles = new ButtonDescriptor("Filter Tiles",
                                                         delegate
            {
                SoundDefOf.TickLow.PlayOneShotOnCamera();

                // reset starting display index
                _tileDisplayIndexStart = 0;

                // reset selected index
                _selectedTileIndex = -1;

                // do the tile filtering
                PrepareLanding.Instance.TileFilter.Filter();
            });

            var buttonResetFilters = new ButtonDescriptor("Reset Filters",
                                                          delegate
            {
                SoundDefOf.TickLow.PlayOneShotOnCamera();
                userData.ResetAllFields();
            });

            var buttonMinimize = new ButtonDescriptor("Minimize",
                                                      delegate
            {
                SoundDefOf.TickHigh.PlayOneShotOnCamera();
                Minimize();
            });

            _buttonCloseDescriptor = new ButtonDescriptor("CloseButton".Translate(),
                                                          delegate
            {
                SoundDefOf.TickHigh.PlayOneShotOnCamera();

                // reset starting display index
                _tileDisplayIndexStart = 0;

                // reset selected index
                _selectedTileIndex = -1;

                ForceClose();
            }, displayState: DisplayState.Entry | DisplayState.MapInitializing);


            _bottomButtonsDescriptorList =
                new List <ButtonDescriptor> {
                buttonFilterTiles, buttonResetFilters, buttonMinimize, _buttonCloseDescriptor
            };

            #endregion BOTTOM_BUTTONS

            /*
             * Minimized window buttons
             */

            #region MINIMIZED_WINDOW_BUTTONS

            var buttonListStart = new ButtonDescriptor("<<", delegate
            {
                // reset starting display index
                _tileDisplayIndexStart = 0;
            }, "Go to start of tile list.");

            var buttonPreviousPage = new ButtonDescriptor("<", delegate
            {
                if (_tileDisplayIndexStart >= MaxDisplayedTileWhenMinimized)
                {
                    _tileDisplayIndexStart -= MaxDisplayedTileWhenMinimized;
                }
                else
                {
                    Messages.Message("Reached start of tile list.", MessageSound.RejectInput);
                }
            }, "Go to previous list page.");

            var buttonNextPage = new ButtonDescriptor(">", delegate
            {
                var matchingTilesCount  = PrepareLanding.Instance.TileFilter.AllMatchingTiles.Count;
                _tileDisplayIndexStart += MaxDisplayedTileWhenMinimized;
                if (_tileDisplayIndexStart > matchingTilesCount)
                {
                    Messages.Message($"No more tiles available to display (max: {matchingTilesCount}).",
                                     MessageSound.RejectInput);
                    _tileDisplayIndexStart -= MaxDisplayedTileWhenMinimized;
                }
            }, "Go to next list page.");

            var buttonListEnd = new ButtonDescriptor(">>", delegate
            {
                var matchingTilesCount    = PrepareLanding.Instance.TileFilter.AllMatchingTiles.Count;
                var tileDisplayIndexStart = matchingTilesCount - matchingTilesCount % MaxDisplayedTileWhenMinimized;
                if (tileDisplayIndexStart == _tileDisplayIndexStart)
                {
                    Messages.Message($"No more tiles available to display (max: {matchingTilesCount}).",
                                     MessageSound.RejectInput);
                }

                _tileDisplayIndexStart = tileDisplayIndexStart;
            }, "Go to end of list.");

            _minimizedWindowButtonsDescriptorList =
                new List <ButtonDescriptor> {
                buttonListStart, buttonPreviousPage, buttonNextPage, buttonListEnd
            };

            #endregion MINIMIZED_WINDOW_BUTTONS
        }
Exemplo n.º 13
0
 private void OnButtonClick(ButtonDescriptor descriptor)
 {
     Destroy();
     descriptor.pressedCallback.Invoke();
 }
Exemplo n.º 14
0
        public MainWindow(GameData.GameData gameData)
        {
            doCloseButton = false;             // explicitly disable close button, we'll draw it ourselves
            doCloseX      = true;
            optionalTitle = "Prepare Landing"; // Do not translate
            MinimizedWindow.WindowLabel = optionalTitle;
            MinimizedWindow.AddMinimizedWindowContent += AddMinimizedWindowContent;

            /*
             * GUI utilities (tabs)
             */
            _tabGuiUtilities.Clear();
            _tabGuiUtilities.Add(new TabTerrain(gameData, 0.30f));
            _tabGuiUtilities.Add(new TabTemperature(gameData, 0.30f));
            _tabGuiUtilities.Add(new TabFilteredTiles(0.48f));
            _tabGuiUtilities.Add(new TabInfo(gameData, 0.48f));
            _tabGuiUtilities.Add(new TabOptions(gameData, 0.35f));
            _tabGuiUtilities.Add(new TabLoadSave(gameData, 0.48f));
#if TAB_OVERLAYS
            _tabGuiUtilities.Add(new TabOverlays(gameData, 0.50f));
#endif
            _tabGuiUtilities.Add(new TabGodMode(gameData, 0.30f));

            TabController.Clear();
            TabController.AddTabRange(_tabGuiUtilities);

            /*
             * Bottom buttons
             */

            #region BOTTOM_BUTTONS

            var buttonFilterTiles = new ButtonDescriptor("PLMWBB_FilterTiles".Translate(),
                                                         delegate
            {
                SoundDefOf.TickLow.PlayOneShotOnCamera();

                // reset starting display index
                _tileDisplayIndexStart = 0;

                // reset selected index
                _selectedTileIndex = -1;

                // do the tile filtering
                PrepareLanding.Instance.TileFilter.Filter();
            });

            var buttonResetFilters = new ButtonDescriptor("PLMWBB_ResetFilters".Translate(),
                                                          delegate
            {
                SoundDefOf.TickLow.PlayOneShotOnCamera();
                gameData.UserData.ResetAllFields();
            });

            var buttonMinimize = new ButtonDescriptor("PLMWBB_Minimize".Translate(),
                                                      delegate
            {
                SoundDefOf.TickHigh.PlayOneShotOnCamera();
                Minimize();
            });

            var buttonSelectRandomSite = new ButtonDescriptor("PLMWBB_SelectRandom".Translate(),
                                                              delegate
            {
                SoundDefOf.Click.PlayOneShotOnCamera();
                var tileId = PrepareLanding.Instance.TileFilter.RandomFilteredTile();
                if (tileId == Tile.Invalid)
                {
                    return;
                }

                Find.WorldInterface.SelectedTile = tileId;
                Find.WorldCameraDriver.JumpTo(Find.WorldGrid.GetTileCenter(Find.WorldInterface.SelectedTile));
            });

            _buttonCloseDescriptor = new ButtonDescriptor("CloseButton".Translate(),
                                                          delegate
            {
                SoundDefOf.TickHigh.PlayOneShotOnCamera();

                // reset starting display index
                _tileDisplayIndexStart = 0;

                // reset selected index
                _selectedTileIndex = -1;

                ForceClose();
            }, displayState: DisplayState.Entry | DisplayState.MapInitializing);


            _bottomButtonsDescriptorList =
                new List <ButtonDescriptor> {
                buttonFilterTiles, buttonResetFilters, buttonSelectRandomSite, buttonMinimize, _buttonCloseDescriptor
            };

            #endregion BOTTOM_BUTTONS

            /*
             * Minimized window buttons
             */

            #region MINIMIZED_WINDOW_BUTTONS

            //TODO: this is exactly the same code than in TabFilterTiles.cs: find a way to refactor the code.

            var buttonListStart = new ButtonDescriptor("<<", delegate
            {
                // reset starting display index
                _tileDisplayIndexStart = 0;
            }, "PLMWFTIL_GoToStartOfTileList".Translate());

            var buttonPreviousPage = new ButtonDescriptor("<", delegate
            {
                if (_tileDisplayIndexStart >= MaxDisplayedTileWhenMinimized)
                {
                    _tileDisplayIndexStart -= MaxDisplayedTileWhenMinimized;
                }
                else
                {
                    Messages.Message("PLMWFTIL_ReachedListStart".Translate(), MessageTypeDefOf.RejectInput);
                }
            }, "PLMWFTIL_GoToPreviousListPage".Translate());

            var buttonNextPage = new ButtonDescriptor(">", delegate
            {
                var matchingTilesCount  = PrepareLanding.Instance.TileFilter.AllMatchingTiles.Count;
                _tileDisplayIndexStart += MaxDisplayedTileWhenMinimized;
                if (_tileDisplayIndexStart > matchingTilesCount)
                {
                    Messages.Message($"{"PLMWFTIL_NoMoreTilesAvailable".Translate()} {matchingTilesCount}).",
                                     MessageTypeDefOf.RejectInput);
                    _tileDisplayIndexStart -= MaxDisplayedTileWhenMinimized;
                }
            }, "PLMWFTIL_GoToNextListPage".Translate());

            var buttonListEnd = new ButtonDescriptor(">>", delegate
            {
                var matchingTilesCount    = PrepareLanding.Instance.TileFilter.AllMatchingTiles.Count;
                var tileDisplayIndexStart = matchingTilesCount - matchingTilesCount % MaxDisplayedTileWhenMinimized;
                if (tileDisplayIndexStart == _tileDisplayIndexStart)
                {
                    Messages.Message($"{"PLMWFTIL_NoMoreTilesAvailable".Translate()} {matchingTilesCount}).",
                                     MessageTypeDefOf.RejectInput);
                }

                _tileDisplayIndexStart = tileDisplayIndexStart;
            }, "PLMWFTIL_GoToEndOfList".Translate());

            _minimizedWindowButtonsDescriptorList =
                new List <ButtonDescriptor> {
                buttonListStart, buttonPreviousPage, buttonNextPage, buttonListEnd
            };

            #endregion MINIMIZED_WINDOW_BUTTONS
        }
Exemplo n.º 15
0
        public override void PreOpen()
        {
            base.PreOpen();

            /*
             * note: this code is in PreOpen() rather than in the ctor because otherwise RimWorld would crash (more precisely, Unity crashes).
             * I can't remember exactly where, but it deals with Unity calculating the text size of a floating menu.
             * So better to let this code here rather than in the ctor.
             */
            if (Enumerable.Any(_bottomButtonsDescriptorList, buttonDesctipor => buttonDesctipor.Label == "Load / Save"))
            {
                return;
            }

            var buttonSaveLoadPreset = new ButtonDescriptor("Load / Save", "Load or Save Filter Presets");

            buttonSaveLoadPreset.AddFloatMenuOption("Save", delegate
            {
                //_userData.PresetManager.TestSave();
                var tab = TabController.TabById("LoadSave") as TabLoadSave;
                if (tab == null)
                {
                    return;
                }

                tab.LoadSaveMode = LoadSaveMode.Save;
                TabController.SetSelectedTabById("LoadSave");
            }, delegate
            {
                var mousePos = Event.current.mousePosition;
                var rect     = new Rect(mousePos.x, mousePos.y, 30f, 30f);

                TooltipHandler.TipRegion(rect, "Save current filter states to a preset.");
            }
                                                    );
            buttonSaveLoadPreset.AddFloatMenuOption("Load", delegate
            {
                //_userData.PresetManager.TestLoad();
                var tab = TabController.TabById("LoadSave") as TabLoadSave;
                if (tab == null)
                {
                    return;
                }

                tab.LoadSaveMode = LoadSaveMode.Load;
                TabController.SetSelectedTabById("LoadSave");
            }, delegate
            {
                var mousePos = Event.current.mousePosition;
                var rect     = new Rect(mousePos.x, mousePos.y, 30f, 30f);

                TooltipHandler.TipRegion(rect, "Load a preset.");
            }
                                                    );
            buttonSaveLoadPreset.AddFloatMenu("Select Action");
            _bottomButtonsDescriptorList.Add(buttonSaveLoadPreset);

            // do not display the "close" button while playing (the "World" button on bottom menu bar was clicked)
            //    otherwise there's no way to get the window back...
            if (Current.ProgramState == ProgramState.Playing)
            {
                if (_bottomButtonsDescriptorList.Contains(_buttonCloseDescriptor))
                {
                    _bottomButtonsDescriptorList.Remove(_buttonCloseDescriptor);
                }
            }
            else
            {
                if (!_bottomButtonsDescriptorList.Contains(_buttonCloseDescriptor))
                {
                    _bottomButtonsDescriptorList.Add(_buttonCloseDescriptor);
                }
            }
        }
        /// <summary>
        /// This method creates the ButtonDescriptors for each ResposneType that could end up as a button click.
        /// This separates the presentation layer from the implementation of the response request in case it chances.
        /// </summary>
        internal static List <ButtonDescriptor> CreateButtonDescriptors(List <ResponseTypeEnum> allowResponseTypes)
        {
            // initial value
            List <ButtonDescriptor> buttonDescriptors = null;

            // If the allowResponseTypes collection exists and has one or more items
            if (ListHelper.HasOneOrMoreItems(allowResponseTypes))
            {
                // Create the return collection
                buttonDescriptors = new List <ButtonDescriptor>();

                // Iterate the collection of ResponseTypeEnum objects
                foreach (ResponseTypeEnum allowedResponseType in allowResponseTypes)
                {
                    switch (allowedResponseType)
                    {
                    case ResponseTypeEnum.PlaceBet:

                        // Create the buttonDescriptor
                        ButtonDescriptor placeBetButtonDescriptor = new ButtonDescriptor("Place Bet", DefaultButtonWidth);

                        // Add this item
                        buttonDescriptors.Add(placeBetButtonDescriptor);

                        // required
                        break;

                    case ResponseTypeEnum.SitOut:

                        // Create the buttonDescriptor
                        ButtonDescriptor sitOutButtonDescriptor = new ButtonDescriptor("Sit Out", DefaultButtonWidth);

                        // Add this item
                        buttonDescriptors.Add(sitOutButtonDescriptor);

                        // required
                        break;

                    case ResponseTypeEnum.Hit:

                        // Create the buttonDescriptor
                        ButtonDescriptor hitButtonDescriptor = new ButtonDescriptor("Hit", DefaultButtonWidth);

                        // Add this item
                        buttonDescriptors.Add(hitButtonDescriptor);

                        // required
                        break;

                    case ResponseTypeEnum.Stand:

                        // Create the buttonDescriptor
                        ButtonDescriptor standButtonDescriptor = new ButtonDescriptor("Stand", DefaultButtonWidth);

                        // Add this item
                        buttonDescriptors.Add(standButtonDescriptor);

                        // required
                        break;

                    case ResponseTypeEnum.Insurance:

                        // Create the buttonDescriptor
                        ButtonDescriptor insuranceButtonDescriptor = new ButtonDescriptor("Insurance?", ExtraWideButtonWidth);

                        // Add this item
                        buttonDescriptors.Add(insuranceButtonDescriptor);

                        // required
                        break;

                    case ResponseTypeEnum.No:

                        // Create the buttonDescriptor
                        ButtonDescriptor noButtonDescriptor = new ButtonDescriptor("No", SlimButtonWidth);

                        // Add this item
                        buttonDescriptors.Add(noButtonDescriptor);

                        // required
                        break;
                    }
                }
            }

            // return value
            return(buttonDescriptors);
        }
Exemplo n.º 17
0
        public TabLoadSave(GameData.GameData gameData, float columnSizePercent = 0.25f) :
            base(columnSizePercent)
        {
            _gameData    = gameData;
            LoadSaveMode = LoadSaveMode.Unknown;

            _stylePresetInfo = new GUIStyle(Text.textFieldStyles[1])
            {
                alignment = TextAnchor.UpperLeft,
                wordWrap  = true,
                richText  = true
            };

            // setup default name
            // TODO check if possible to get logged in user if non steam rimworld
            _presetAuthorSave = SteamManager.Initialized ? SteamUtility.SteamPersonaName : "Your_Name";

            #region LIST_BUTTONS

            var buttonListStart = new ButtonDescriptor("<<", delegate
            {
                // reset starting display index
                _listDisplayStartIndex = 0;
            }, "PLMWLODSAV_GoToStartOfItemList".Translate());

            var buttonPreviousPage = new ButtonDescriptor("<", delegate
            {
                if (_listDisplayStartIndex >= MaxItemsToDisplay)
                {
                    _listDisplayStartIndex -= MaxItemsToDisplay;
                }
                else
                {
                    Messages.Message("PLMWLODSAV_ReachedListStart".Translate(), MessageTypeDefOf.RejectInput);
                }
            }, "PLMWLODSAV_GoToPreviousListPage".Translate());

            var buttonNextPage = new ButtonDescriptor(">", delegate
            {
                var presetFilesCount    = _gameData.PresetManager.AllPresetFiles.Count;
                _listDisplayStartIndex += MaxItemsToDisplay;
                if (_listDisplayStartIndex > presetFilesCount)
                {
                    Messages.Message($"{"PLMWLODSAV_NoMoreItemsAvailable".Translate()} {presetFilesCount}).",
                                     MessageTypeDefOf.RejectInput);
                    _listDisplayStartIndex -= MaxItemsToDisplay;
                }
            }, "PLMWLODSAV_GoToNextListPage".Translate());

            var buttonListEnd = new ButtonDescriptor(">>", delegate
            {
                var presetFilesCount  = _gameData.PresetManager.AllPresetFiles.Count;
                var displayIndexStart = presetFilesCount - presetFilesCount % MaxItemsToDisplay;
                if (displayIndexStart == _listDisplayStartIndex)
                {
                    Messages.Message($"{"PLMWLODSAV_NoMoreItemsAvailable".Translate()} {presetFilesCount}).",
                                     MessageTypeDefOf.RejectInput);
                }

                _listDisplayStartIndex = displayIndexStart;
            }, "PLMWLODSAV_GoToEndOfList".Translate());

            _buttonList =
                new List <ButtonDescriptor> {
                buttonListStart, buttonPreviousPage, buttonNextPage, buttonListEnd
            };

            #endregion
        }