game_qu.gui_components.navigation_screen API documentation

# Module `game_qu.gui_components.navigation_screen`

Expand source code

    from math import sqrt

    from game_qu.base.colors import pleasing_green, white
    from game_qu.gui_components.dimensions import Dimensions
    from game_qu.base.utility_functions import button_is_clicked, mouse_is_clicked
    from game_qu.gui_components.grid import Grid
    from game_qu.gui_components.screen import Screen
    from game_qu.gui_components.text_box import TextBox
    from game_qu.base.important_variables import *
    from game_qu.base.utility_functions import game_button_is_clicked

    class NavigationScreen(Screen):
        """ A screen that allows you to select different screens (navigate between different screens).
            By default, hitting escape brings you back to the main screen"""

        buttons = []
        screens = []
        selected_screen = None
        back_to_main_screen_game_button = KEY_ESCAPE
        button_color = pleasing_green
        screen_shortcut_game_buttons = {}

        def __init__(self, screen_names, screens, screen_shortcut_game_buttons={}, back_to_main_screen_game_button=KEY_ESCAPE, path_to_background_image="", button_color=button_color):
            """ Initializes the object with the values provided. It will create a grid with text boxes each containing a screen_name
                That will link to a specific screen (screen_names[0] -> screens[0])

                Args:
                    screen_names (str[]): the names of the screens that will be displayed
                    screens (Screen[]): the screens, which the screen_names are referencing
                    screen_shortcut_game_buttons (dict): {game_button: Screen}. Game button can either be a key or
                    button depending on whether IS_USING_CONTROLLER is true or not (if it is True game_button is a button otherwise it is a key)
                    back_to_main_screen_game_button (game_button): the game_button that will bring the user back to the main screen
                    path_to_background_image (str): the path to the background image of the navigation screen
                    button_color (int[]): {red, green, blue} the rgb values of the buttons
            """

            super().__init__(path_to_background_image)
            self.screens = screens
            self.button_color = button_color
            self.screen_shortcut_game_buttons = screen_shortcut_game_buttons
            self.buttons = []

            for screen_name in screen_names:
                self.buttons.append(TextBox(screen_name, 18, pleasing_green, white, True))

            columns = int(sqrt(len(screen_names)))
            button_grid = Grid(Dimensions(0, 0, SCREEN_LENGTH, SCREEN_HEIGHT), columns, None)
            button_grid.turn_into_grid(self.buttons, None, None)

            self.components = self.buttons
            self.selected_screen = self
            self.back_to_main_screen_game_button = back_to_main_screen_game_button

        def run(self):
            """ Changes the currently displayed screen if the buttons were clicked, or the back_to_main_screen_game_button is clicked.
                It will also run the currently selected_screen's run method"""

            for x in range(len(self.buttons)):
                if self.buttons[x].got_clicked() and self.selected_screen == self:
                    self.selected_screen = self.screens[x]

            for game_button in self.screen_shortcut_game_buttons.keys():
                if game_button_is_clicked(game_button):
                    self.selected_screen = self.screen_shortcut_game_buttons.get(game_button)

            if game_button_is_clicked(self.back_to_main_screen_game_button):
                self.selected_screen = self

            if self.selected_screen != self:
                self.selected_screen.run()

        def render_background(self):
            """Renders the background of the currently selected screen"""

            if self.selected_screen != self:
                self.selected_screen.render_background()

            else:
                super().render_background()

        def get_components(self):
            """
                 Returns:
                    list[Component]: the components of the currently selected_screen"""

            return self.components if self.selected_screen == self else self.selected_screen.get_components()

        def run_on_close(self):
            """Makes sure all the screen's run_on_close methods are called"""

            for screen in self.screens:
                screen.run_on_close()

        def modify_values(self, button_color=button_color, back_to_main_screen_game_button=back_to_main_screen_game_button):
            """Gives the ability to modify the values of the NavigationScreen"""

            self.button_color = button_color
            self.back_to_main_screen_game_button = back_to_main_screen_game_button

            for button in self.buttons:
                button.set_background_color(button_color)

## Classes

`class NavigationScreen (screen_names, screens, screen_shortcut_game_buttons={}, back_to_main_screen_game_button=37, path_to_background_image='', button_color=[51, 178, 73])`

  A screen that allows you to select different screens (navigate between different screens). By default, hitting escape brings you back to the main screen

  Initializes the object with the values provided. It will create a grid with text boxes each containing a screen_name That will link to a specific screen (screen_names[0] -> screens[0])

  ## Args

  `screen_names` :`str[]`
    the names of the screens that will be displayed
  `screens` :`Screen[]`
    the screens, which the screen_names are referencing
  `screen_shortcut_game_buttons` :`dict`
    {game_button: Screen}. Game button can either be a key or
  button depending on whether IS_USING_CONTROLLER is true or not (if it is True game_button is a button otherwise it is a key)
  `back_to_main_screen_game_button` :`game_button`
    the game_button that will bring the user back to the main screen
  `path_to_background_image` :`str`
    the path to the background image of the navigation screen
  `button_color` :`int[]`
    {red, green, blue} the rgb values of the buttons
  Expand source code

      class NavigationScreen(Screen):
          """ A screen that allows you to select different screens (navigate between different screens).
              By default, hitting escape brings you back to the main screen"""

          buttons = []
          screens = []
          selected_screen = None
          back_to_main_screen_game_button = KEY_ESCAPE
          button_color = pleasing_green
          screen_shortcut_game_buttons = {}

          def __init__(self, screen_names, screens, screen_shortcut_game_buttons={}, back_to_main_screen_game_button=KEY_ESCAPE, path_to_background_image="", button_color=button_color):
              """ Initializes the object with the values provided. It will create a grid with text boxes each containing a screen_name
                  That will link to a specific screen (screen_names[0] -> screens[0])

                  Args:
                      screen_names (str[]): the names of the screens that will be displayed
                      screens (Screen[]): the screens, which the screen_names are referencing
                      screen_shortcut_game_buttons (dict): {game_button: Screen}. Game button can either be a key or
                      button depending on whether IS_USING_CONTROLLER is true or not (if it is True game_button is a button otherwise it is a key)
                      back_to_main_screen_game_button (game_button): the game_button that will bring the user back to the main screen
                      path_to_background_image (str): the path to the background image of the navigation screen
                      button_color (int[]): {red, green, blue} the rgb values of the buttons
              """

              super().__init__(path_to_background_image)
              self.screens = screens
              self.button_color = button_color
              self.screen_shortcut_game_buttons = screen_shortcut_game_buttons
              self.buttons = []

              for screen_name in screen_names:
                  self.buttons.append(TextBox(screen_name, 18, pleasing_green, white, True))

              columns = int(sqrt(len(screen_names)))
              button_grid = Grid(Dimensions(0, 0, SCREEN_LENGTH, SCREEN_HEIGHT), columns, None)
              button_grid.turn_into_grid(self.buttons, None, None)

              self.components = self.buttons
              self.selected_screen = self
              self.back_to_main_screen_game_button = back_to_main_screen_game_button

          def run(self):
              """ Changes the currently displayed screen if the buttons were clicked, or the back_to_main_screen_game_button is clicked.
                  It will also run the currently selected_screen's run method"""

              for x in range(len(self.buttons)):
                  if self.buttons[x].got_clicked() and self.selected_screen == self:
                      self.selected_screen = self.screens[x]

              for game_button in self.screen_shortcut_game_buttons.keys():
                  if game_button_is_clicked(game_button):
                      self.selected_screen = self.screen_shortcut_game_buttons.get(game_button)

              if game_button_is_clicked(self.back_to_main_screen_game_button):
                  self.selected_screen = self

              if self.selected_screen != self:
                  self.selected_screen.run()

          def render_background(self):
              """Renders the background of the currently selected screen"""

              if self.selected_screen != self:
                  self.selected_screen.render_background()

              else:
                  super().render_background()

          def get_components(self):
              """
                   Returns:
                      list[Component]: the components of the currently selected_screen"""

              return self.components if self.selected_screen == self else self.selected_screen.get_components()

          def run_on_close(self):
              """Makes sure all the screen's run_on_close methods are called"""

              for screen in self.screens:
                  screen.run_on_close()

          def modify_values(self, button_color=button_color, back_to_main_screen_game_button=back_to_main_screen_game_button):
              """Gives the ability to modify the values of the NavigationScreen"""

              self.button_color = button_color
              self.back_to_main_screen_game_button = back_to_main_screen_game_button

              for button in self.buttons:
                  button.set_background_color(button_color)

  ### Ancestors

  - Screen
  - Component
  - Dimensions

  ### Class variables

  `var back_to_main_screen_game_button`
  `var button_color`
  `var buttons`
  `var screen_shortcut_game_buttons`
  `var screens`
  `var selected_screen`

  ### Methods

  `def get_components(self)`

    ## Returns

    `list[Component]`
      the components of the currently selected_screen
    Expand source code

        def get_components(self):
            """
                 Returns:
                    list[Component]: the components of the currently selected_screen"""

            return self.components if self.selected_screen == self else self.selected_screen.get_components()

  `def modify_values(self, button_color=[51, 178, 73], back_to_main_screen_game_button=37)`

    Gives the ability to modify the values of the NavigationScreen

    Expand source code

        def modify_values(self, button_color=button_color, back_to_main_screen_game_button=back_to_main_screen_game_button):
            """Gives the ability to modify the values of the NavigationScreen"""

            self.button_color = button_color
            self.back_to_main_screen_game_button = back_to_main_screen_game_button

            for button in self.buttons:
                button.set_background_color(button_color)

  `def render_background(self)`

    Renders the background of the currently selected screen

    Expand source code

        def render_background(self):
            """Renders the background of the currently selected screen"""

            if self.selected_screen != self:
                self.selected_screen.render_background()

            else:
                super().render_background()

  `def run(self)`

    Changes the currently displayed screen if the buttons were clicked, or the back_to_main_screen_game_button is clicked. It will also run the currently selected_screen's run method

    Expand source code

        def run(self):
            """ Changes the currently displayed screen if the buttons were clicked, or the back_to_main_screen_game_button is clicked.
                It will also run the currently selected_screen's run method"""

            for x in range(len(self.buttons)):
                if self.buttons[x].got_clicked() and self.selected_screen == self:
                    self.selected_screen = self.screens[x]

            for game_button in self.screen_shortcut_game_buttons.keys():
                if game_button_is_clicked(game_button):
                    self.selected_screen = self.screen_shortcut_game_buttons.get(game_button)

            if game_button_is_clicked(self.back_to_main_screen_game_button):
                self.selected_screen = self

            if self.selected_screen != self:
                self.selected_screen.run()

  `def run_on_close(self)`

    Makes sure all the screen's run_on_close methods are called

    Expand source code

        def run_on_close(self):
            """Makes sure all the screen's run_on_close methods are called"""

            for screen in self.screens:
                screen.run_on_close()

  ### Inherited members

  - `Screen`:
    - `bottom_edge`
    - `get_scaled_dimensions`
    - `got_clicked`
    - `hide`
    - `horizontal_midpoint`
    - `mouse_enter_function`
    - `mouse_exit_function`
    - `number_set_dimensions`
    - `percentage_set_dimensions`
    - `render`
    - `right_edge`
    - `set_background_color`
    - `set_color`
    - `set_is_visible`
    - `set_mouse_enter_function`
    - `set_mouse_exit_function`
    - `set_mouse_functions`
    - `set_path_to_background_image`
    - `show`
    - `vertical_midpoint`