Example #1
0
 def test_rebuild(self, _init_pygame, default_ui_manager,
                  _display_surface_return_none):
     label = UILabel(relative_rect=pygame.Rect(100, 100, 150, 30),
                     text="Test Label",
                     manager=default_ui_manager)
     label.rebuild()
     assert label.image is not None
Example #2
0
    def test_hide(self, _init_pygame, default_ui_manager,
                  _display_surface_return_none):
        label = UILabel(relative_rect=pygame.Rect(100, 100, 150, 30),
                        text="Test Label",
                        manager=default_ui_manager)

        assert label.visible == 1
        label.hide()
        assert label.visible == 0
Example #3
0
    def test_disable(self, _init_pygame: None, default_ui_manager: UIManager,
                     _display_surface_return_none: None):
        label = UILabel(relative_rect=pygame.Rect(100, 100, 150, 30),
                        text="Test Label",
                        manager=default_ui_manager)

        label.disable()

        assert label.is_enabled is False
Example #4
0
    def start(self):
        self.title_label = UILabel(pygame.Rect((87, 40), (850, 178)),
                                   "Turret Warfare",
                                   self.ui_manager,
                                   object_id="#game_title")

        self.play_game_button = UIButton(
            pygame.Rect((437, 515), (150, 35)),
            "Start Game",
            self.ui_manager,
            tool_tip_text="<b>Click to Start.</b>")
Example #5
0
    def test_set_dimensions(self, _init_pygame, default_ui_manager):
        test_container = UIContainer(relative_rect=pygame.Rect(
            100, 100, 300, 60),
                                     manager=default_ui_manager)
        label = UILabel(relative_rect=pygame.Rect(100, 100, 150, 30),
                        text="Test Label",
                        container=test_container,
                        manager=default_ui_manager)

        label.set_dimensions((200, 50))

        assert label.rect.size == (200, 50)
Example #6
0
    def test_set_relative_position(self, _init_pygame, default_ui_manager):
        test_container = UIContainer(relative_rect=pygame.Rect(
            100, 100, 300, 60),
                                     manager=default_ui_manager)
        label = UILabel(relative_rect=pygame.Rect(100, 100, 150, 30),
                        text="Test Label",
                        container=test_container,
                        manager=default_ui_manager)

        label.set_relative_position((50, 50))

        assert label.rect.topleft == (150, 150)
Example #7
0
    def test_set_position(self, _init_pygame, default_ui_manager,
                          _display_surface_return_none):
        test_container = UIContainer(relative_rect=pygame.Rect(
            100, 100, 300, 60),
                                     manager=default_ui_manager)
        label = UILabel(relative_rect=pygame.Rect(100, 100, 150, 30),
                        text="Test Label",
                        container=test_container,
                        manager=default_ui_manager)

        label.set_position(pygame.math.Vector2(150.0, 30.0))

        assert label.relative_rect.topleft == (50, -70)
Example #8
0
class MainMenu(BaseAppState):
    def __init__(self, ui_manager: pygame_gui.UIManager, state_manger):
        super().__init__('main_menu', 'select_level', state_manger)

        self.ui_manager = ui_manager
        self.background_image = pygame.image.load(
            "images/menu_background.png").convert()

        self.title_label = None
        self.play_game_button = None

    def start(self):
        self.title_label = UILabel(pygame.Rect((87, 40), (850, 178)),
                                   "Turret Warfare",
                                   self.ui_manager,
                                   object_id="#game_title")

        self.play_game_button = UIButton(
            pygame.Rect((437, 515), (150, 35)),
            "Start Game",
            self.ui_manager,
            tool_tip_text="<b>Click to Start.</b>")

    def end(self):
        self.title_label.kill()
        self.play_game_button.kill()

    def run(self, surface, time_delta):
        for event in pygame.event.get():
            if event.type == QUIT:
                self.set_target_state_name('quit')
                self.trigger_transition()

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    self.set_target_state_name('quit')
                    self.trigger_transition()

            self.ui_manager.process_events(event)

            if event.type == pygame.USEREVENT:
                if event.user_type == "ui_button_pressed":
                    if event.ui_element == self.play_game_button:
                        self.set_target_state_name('select_level')
                        self.trigger_transition()

        self.ui_manager.update(time_delta)

        surface.blit(self.background_image, (0, 0))  # draw the background

        self.ui_manager.draw_ui(surface)
Example #9
0
 def test_rebuild_from_theme_data_bad_values(self, _init_pygame):
     manager = UIManager((800, 600),
                         os.path.join("tests", "data", "themes",
                                      "ui_label_bad_values.json"))
     label = UILabel(relative_rect=pygame.Rect(100, 100, 10, 30),
                     text="Test Label",
                     manager=manager)
     assert label.image is not None
Example #10
0
    def test_show_hide_rendering(self, _init_pygame, default_ui_manager,
                                 _display_surface_return_none):
        resolution = (400, 400)
        empty_surface = pygame.Surface(resolution)
        empty_surface.fill(pygame.Color(0, 0, 0))

        surface = empty_surface.copy()
        manager = UIManager(resolution)
        label = UILabel(relative_rect=pygame.Rect(25, 25, 375, 150),
                        text="Test Button",
                        manager=manager,
                        visible=0)
        manager.update(0.01)
        manager.draw_ui(surface)
        assert compare_surfaces(empty_surface, surface)

        surface.fill(pygame.Color(0, 0, 0))
        label.show()
        manager.update(0.01)
        manager.draw_ui(surface)
        assert not compare_surfaces(empty_surface, surface)

        surface.fill(pygame.Color(0, 0, 0))
        label.hide()
        manager.update(0.01)
        manager.draw_ui(surface)
        assert compare_surfaces(empty_surface, surface)
Example #11
0
    def start(self):
        self.level_group_y_start = 100
        self.selected_level_path = self.all_level_paths[0].path

        self.background_image = pygame.image.load(
            "images/menu_background.png").convert()

        self.title_label = UILabel(pygame.Rect((400, 25), (229, 60)),
                                   "Select Level",
                                   self.ui_manager,
                                   object_id="#game_sub_title")

        self.play_game_button = UIButton(
            pygame.Rect((437, 515), (150, 35)),
            "Start Level",
            self.ui_manager,
            tool_tip_text="<b>Click to start level.</b>")

        self.edit_map_button = UIButton(
            pygame.Rect((437, 555), (150, 35)),
            "Edit Level",
            self.ui_manager,
            tool_tip_text="<b>Click to enter the level editor.</b>")

        for level_data in self.all_level_paths:
            self.level_button_group.append(
                UIButton(pygame.Rect((437, self.level_group_y_start),
                                     (150, 20)),
                         level_data.display_name,
                         self.ui_manager,
                         tool_tip_text="<b>Select this level.</b>",
                         object_id="#choose_level_button"))
            self.level_group_y_start += 25

        if len(self.level_button_group) > 0:
            self.ui_manager.set_focus_element(self.level_button_group[0])
    def __init__(self, rect, ui_manager):

        element_ids = ['everything_window']

        super().__init__(rect, ui_manager, element_ids=element_ids)

        # create shadow
        shadow_padding = (2, 2)

        self.image = self.ui_manager.get_shadow(self.rect.size)
        self.image.fill(self.ui_manager.get_theme().get_colour(self.object_ids, self.element_ids, 'dark_bg'),
                        pygame.Rect(shadow_padding,
                                    (self.rect.width - shadow_padding[0] * 2,
                                     self.rect.height - shadow_padding[1] * 2)
                                    ))

        self.get_container().relative_rect.width = self.rect.width - shadow_padding[0] * 2
        self.get_container().relative_rect.height = self.rect.height - shadow_padding[1] * 2
        self.get_container().relative_rect.x = self.get_container().relative_rect.x + shadow_padding[0]
        self.get_container().relative_rect.y = self.get_container().relative_rect.y + shadow_padding[1]
        self.get_container().update_containing_rect_position()

        self.close_window_button = UIButton(relative_rect=pygame.Rect((self.get_container().rect.width-20, 0),
                                                                      (20, 20)),
                                            text='╳',
                                            manager=ui_manager,
                                            container=self.get_container(),
                                            parent_element=self
                                            )
        self.menu_bar = UIButton(relative_rect=pygame.Rect((0, 0),
                                                           (self.get_container().rect.width-20, 20)),
                                 text='Everything Container',
                                 manager=ui_manager,
                                 container=self.get_container(),
                                 parent_element=self,
                                 object_id='#message_window_title_bar'
                                 )
        self.menu_bar.set_hold_range((100, 100))

        self.grabbed_window = False
        self.starting_grab_difference = (0, 0)

        self.test_slider = UIHorizontalSlider(pygame.Rect((int(self.rect.width / 2),
                                                           int(self.rect.height * 0.70)),
                                                          (240, 25)),
                                              50.0,
                                              (0.0, 100.0),
                                              self.ui_manager,
                                              container=self.get_container(),
                                              parent_element=self)

        self.slider_label = UILabel(pygame.Rect((int(self.rect.width / 2) + 250,
                                                 int(self.rect.height * 0.70)),
                                                (27, 25)),
                                    str(int(self.test_slider.get_current_value())),
                                    self.ui_manager,
                                    container=self.get_container(),
                                    parent_element=self)

        self.test_text_entry = UITextEntryLine(pygame.Rect((int(self.rect.width / 2),
                                                            int(self.rect.height * 0.50)),
                                                           (200, -1)),
                                               self.ui_manager,
                                               container=self.get_container(),
                                               parent_element=self)
        self.test_text_entry.set_forbidden_characters('numbers')

        current_resolution_string = 'Item 1'
        self.test_drop_down_menu = UIDropDownMenu(['Item 1',
                                                   'Item 2',
                                                   'Item 3',
                                                   'Item 4',
                                                   'Item 5',
                                                   'Item 6'],
                                                  current_resolution_string,
                                                  pygame.Rect((int(self.rect.width / 2),
                                                               int(self.rect.height * 0.3)),
                                                              (200, 25)),
                                                  self.ui_manager,
                                                  container=self.get_container(),
                                                  parent_element=self)

        self.health_bar = UIScreenSpaceHealthBar(pygame.Rect((int(self.rect.width / 9),
                                                              int(self.rect.height * 0.7)),
                                                             (200, 20)),
                                                 self.ui_manager,
                                                 container=self.get_container(),
                                                 parent_element=self)

        loaded_test_image = pygame.image.load('data/images/splat.png').convert_alpha()

        self.test_image = UIImage(pygame.Rect((int(self.rect.width / 9),
                                               int(self.rect.height * 0.3)),
                                              loaded_test_image.get_rect().size),
                                  loaded_test_image, self.ui_manager,
                                  container=self.get_container(),
                                  parent_element=self)
        self.is_selected = False
class EverythingWindow(UIWindow):
    def __init__(self, rect, ui_manager):

        element_ids = ['everything_window']

        super().__init__(rect, ui_manager, element_ids=element_ids)

        # create shadow
        shadow_padding = (2, 2)

        self.image = self.ui_manager.get_shadow(self.rect.size)
        self.image.fill(self.ui_manager.get_theme().get_colour(self.object_ids, self.element_ids, 'dark_bg'),
                        pygame.Rect(shadow_padding,
                                    (self.rect.width - shadow_padding[0] * 2,
                                     self.rect.height - shadow_padding[1] * 2)
                                    ))

        self.get_container().relative_rect.width = self.rect.width - shadow_padding[0] * 2
        self.get_container().relative_rect.height = self.rect.height - shadow_padding[1] * 2
        self.get_container().relative_rect.x = self.get_container().relative_rect.x + shadow_padding[0]
        self.get_container().relative_rect.y = self.get_container().relative_rect.y + shadow_padding[1]
        self.get_container().update_containing_rect_position()

        self.close_window_button = UIButton(relative_rect=pygame.Rect((self.get_container().rect.width-20, 0),
                                                                      (20, 20)),
                                            text='╳',
                                            manager=ui_manager,
                                            container=self.get_container(),
                                            parent_element=self
                                            )
        self.menu_bar = UIButton(relative_rect=pygame.Rect((0, 0),
                                                           (self.get_container().rect.width-20, 20)),
                                 text='Everything Container',
                                 manager=ui_manager,
                                 container=self.get_container(),
                                 parent_element=self,
                                 object_id='#message_window_title_bar'
                                 )
        self.menu_bar.set_hold_range((100, 100))

        self.grabbed_window = False
        self.starting_grab_difference = (0, 0)

        self.test_slider = UIHorizontalSlider(pygame.Rect((int(self.rect.width / 2),
                                                           int(self.rect.height * 0.70)),
                                                          (240, 25)),
                                              50.0,
                                              (0.0, 100.0),
                                              self.ui_manager,
                                              container=self.get_container(),
                                              parent_element=self)

        self.slider_label = UILabel(pygame.Rect((int(self.rect.width / 2) + 250,
                                                 int(self.rect.height * 0.70)),
                                                (27, 25)),
                                    str(int(self.test_slider.get_current_value())),
                                    self.ui_manager,
                                    container=self.get_container(),
                                    parent_element=self)

        self.test_text_entry = UITextEntryLine(pygame.Rect((int(self.rect.width / 2),
                                                            int(self.rect.height * 0.50)),
                                                           (200, -1)),
                                               self.ui_manager,
                                               container=self.get_container(),
                                               parent_element=self)
        self.test_text_entry.set_forbidden_characters('numbers')

        current_resolution_string = 'Item 1'
        self.test_drop_down_menu = UIDropDownMenu(['Item 1',
                                                   'Item 2',
                                                   'Item 3',
                                                   'Item 4',
                                                   'Item 5',
                                                   'Item 6'],
                                                  current_resolution_string,
                                                  pygame.Rect((int(self.rect.width / 2),
                                                               int(self.rect.height * 0.3)),
                                                              (200, 25)),
                                                  self.ui_manager,
                                                  container=self.get_container(),
                                                  parent_element=self)

        self.health_bar = UIScreenSpaceHealthBar(pygame.Rect((int(self.rect.width / 9),
                                                              int(self.rect.height * 0.7)),
                                                             (200, 20)),
                                                 self.ui_manager,
                                                 container=self.get_container(),
                                                 parent_element=self)

        loaded_test_image = pygame.image.load('data/images/splat.png').convert_alpha()

        self.test_image = UIImage(pygame.Rect((int(self.rect.width / 9),
                                               int(self.rect.height * 0.3)),
                                              loaded_test_image.get_rect().size),
                                  loaded_test_image, self.ui_manager,
                                  container=self.get_container(),
                                  parent_element=self)
        self.is_selected = False

    def select(self):
        self.is_selected = True

    def unselect(self):
        self.is_selected = False

    def process_event(self, event):
        processed_event = False
        if self.is_selected:
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_p:
                    self.test_slider.set_current_value(50)

        if event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 1:
                mouse_x, mouse_y = event.pos
                if self.rect.collidepoint(mouse_x, mouse_y):
                    processed_event = True
                    self.window_stack.move_window_to_front(self)

        return processed_event

    def update(self, time_delta):
        if self.alive():
            if self.test_slider.has_moved_recently:
                self.slider_label.set_text(str(int(self.test_slider.get_current_value())))

            if self.menu_bar.held:
                mouse_x, mouse_y = pygame.mouse.get_pos()
                if not self.grabbed_window:
                    self.window_stack.move_window_to_front(self)
                    self.grabbed_window = True
                    self.starting_grab_difference = (mouse_x - self.rect.x,
                                                     mouse_y - self.rect.y)

                current_grab_difference = (mouse_x - self.rect.x,
                                           mouse_y - self.rect.y)

                adjustment_required = (current_grab_difference[0] - self.starting_grab_difference[0],
                                       current_grab_difference[1] - self.starting_grab_difference[1])

                self.rect.x += adjustment_required[0]
                self.rect.y += adjustment_required[1]
                self.get_container().relative_rect.x += adjustment_required[0]
                self.get_container().relative_rect.y += adjustment_required[1]
                self.get_container().update_containing_rect_position()

            else:
                self.grabbed_window = False

            if self.close_window_button.check_pressed():
                self.kill()

        super().update(time_delta)
Example #14
0
class SelectLevelMenu(BaseAppState):
    def __init__(self, ui_manager: pygame_gui.UIManager, state_manager):
        super().__init__('select_level', 'game', state_manager)
        self.ui_manager = ui_manager
        self.all_level_paths = []
        self.selected_level_path = None
        self.background_image = None
        self.title_label = None
        self.play_game_button = None
        self.edit_map_button = None
        self.level_button_group = []
        self.level_group_y_start = 100
        self.reload_levels()

    def start(self):
        self.level_group_y_start = 100
        self.selected_level_path = self.all_level_paths[0].path

        self.background_image = pygame.image.load(
            "images/menu_background.png").convert()

        self.title_label = UILabel(pygame.Rect((400, 25), (229, 60)),
                                   "Select Level",
                                   self.ui_manager,
                                   object_id="#game_sub_title")

        self.play_game_button = UIButton(
            pygame.Rect((437, 515), (150, 35)),
            "Start Level",
            self.ui_manager,
            tool_tip_text="<b>Click to start level.</b>")

        self.edit_map_button = UIButton(
            pygame.Rect((437, 555), (150, 35)),
            "Edit Level",
            self.ui_manager,
            tool_tip_text="<b>Click to enter the level editor.</b>")

        for level_data in self.all_level_paths:
            self.level_button_group.append(
                UIButton(pygame.Rect((437, self.level_group_y_start),
                                     (150, 20)),
                         level_data.display_name,
                         self.ui_manager,
                         tool_tip_text="<b>Select this level.</b>",
                         object_id="#choose_level_button"))
            self.level_group_y_start += 25

        if len(self.level_button_group) > 0:
            self.ui_manager.set_focus_element(self.level_button_group[0])

    def end(self):
        self.title_label.kill()
        self.play_game_button.kill()
        self.edit_map_button.kill()
        for button in self.level_button_group:
            button.kill()
        self.level_button_group.clear()

    def reload_levels(self):
        self.all_level_paths[:] = []
        for level_file in os.listdir("data/levels/"):
            full_file_name = "data/levels/" + level_file
            level_data = LevelUIData(full_file_name)
            self.all_level_paths.append(level_data)

    def run(self, surface, time_delta):
        for event in pygame.event.get():
            if event.type == QUIT:
                self.set_target_state_name('quit')
                self.trigger_transition()

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    self.trigger_transition()

            self.ui_manager.process_events(event)

            if event.type == pygame.USEREVENT:
                if event.user_type == "ui_button_pressed":
                    if event.ui_element == self.play_game_button:
                        self.set_target_state_name('game')
                        self.outgoing_transition_data[
                            'selected_level_path'] = self.selected_level_path
                        self.trigger_transition()

                    if event.ui_element == self.edit_map_button:
                        self.set_target_state_name('editor')
                        self.outgoing_transition_data[
                            'selected_level_path'] = self.selected_level_path
                        self.trigger_transition()

                    if event.ui_object_id == "#choose_level_button":
                        self.ui_manager.set_focus_element(event.ui_element)
                        for level_data in self.all_level_paths:
                            if level_data.display_name == event.ui_element.text:
                                self.selected_level_path = level_data.path

        self.ui_manager.update(time_delta)

        surface.blit(self.background_image, (0, 0))  # draw the background
        self.ui_manager.draw_ui(surface)
Example #15
0
screen = pygame.display.set_mode((600, 450))

background = pygame.Surface((800, 600))
background.fill(pygame.Color("#000000"))

manager = pygame_gui.UIManager((600, 450))

menu = UIDropDownMenu(
    options_list=["схема", "спутник", "гибрид"],
    starting_option="схема",
    relative_rect=pygame.Rect(0, 0, 200, 30),
    manager=manager,
)

label = UILabel(relative_rect=pygame.Rect(0, 420, 600, 30),
                text=full_adress(json),
                manager=manager)

text_entry = UITextEntryLine(relative_rect=pygame.Rect(0, 30, 150, 30),
                             manager=manager)

search_button = pygame_gui.elements.UIButton(relative_rect=pygame.Rect(
    (150, 30), (50, 30)),
                                             text="find",
                                             manager=manager)

cancel_button = pygame_gui.elements.UIButton(relative_rect=pygame.Rect(
    (0, 60), (200, 30)),
                                             text="cancel",
                                             manager=manager)
Example #16
0
 def test_set_text(self, _init_pygame, default_ui_manager):
     label = UILabel(relative_rect=pygame.Rect(100, 100, 150, 30),
                     text="Test Label",
                     manager=default_ui_manager)
     label.set_text("new text")
     assert label.image is not None