Exemplo n.º 1
0
    def draw(self, position: Point, selected: bool = False) -> None:
        draw_text(
            position.offset(
                self._get_position(GuiPosition.LEVEL_ITEM_TITLE_POS)),
            f"LEVEL {self.level_num}", self.text_style)

        if not self.level_unlocked:
            self._get_sprite(GuiSprite.LOCKED_ICON).draw(
                position.offset(
                    self._get_position(GuiPosition.LEVEL_LOCKED_ICON_POS)))
        else:
            self._draw_level_thumbnail(
                position.offset(
                    self._get_position(GuiPosition.LEVEL_THUMBNAIL_POS)))

        if self.level_completed:
            self._get_sprite(GuiSprite.CHECKED_ICON).draw(
                position.offset(
                    self._get_position(GuiPosition.LEVEL_COMPLETED_ICON_POS)))

        if selected:
            self._draw_level_score(
                self._get_position(GuiPosition.LEVEL_SCORE_POS))

        self._draw_frame(position, selected)
Exemplo n.º 2
0
 def draw(self, position: Point, selected: bool = False) -> None:
     if self.disabled:
         style = MENU_TEXT_DISABLED
     elif selected:
         style = MENU_TEXT_SELECTED
     else:
         style = MENU_TEXT_NORMAL
     draw_text(position, self._get_item_text(selected), style)
Exemplo n.º 3
0
    def _draw_level_score(self, position: Point) -> None:
        level_score = self.player_profile.levels_scores[self.level_num]

        if self.level_completed:
            text = f"TIME: {level_score.time}  " \
                   f"PUSHES: {level_score.pushes: >4}  " \
                   f"STEPS: {level_score.steps: >4}"
        else:
            text = "LEVEL NOT COMPLETED" if self.level_unlocked else "LEVEL LOCKED"

        draw_text(position, text,
                  self._get_text_style(GuiColor.LEVEL_SELECTED_COLOR))
Exemplo n.º 4
0
    def _draw_level_statistics(self) -> None:
        new_record = "(NEW RECORD)"
        time_beaten = self.level_score.time_in_ms < self.prev_level_score.time_in_ms
        pushes_beaten = self.level_score.pushes < self.prev_level_score.pushes
        steps_beaten = self.level_score.steps < self.prev_level_score.steps
        first_completion = not self.prev_level_score.completed

        draw_text(
            LEVEL_TIME_POS, "#0{:>7s} #8{:s}".format(
                self.level_score.time,
                new_record if time_beaten or first_completion else ""))
        draw_text(
            LEVEL_PUSHES_POS, "#0{:>7d} #8{:s}".format(
                self.level_score.pushes,
                new_record if pushes_beaten or first_completion else ""))
        draw_text(
            LEVEL_STEPS_POS, "#0{:>7d} #8{:s}".format(
                self.level_score.steps,
                new_record if steps_beaten or first_completion else ""))
Exemplo n.º 5
0
 def draw(self, draw_as_secondary: bool = False) -> None:
     super().draw(draw_as_secondary)
     draw_text(Point(79, 240), "(c) 2020 KRZYSZTOF FURTAK", TextStyle(color=7, shadow_color=1))
     draw_text(Point(11, 240), f"v{__version__}", TextStyle(color=1))
Exemplo n.º 6
0
 def _draw_frame(self) -> None:
     pyxel.rectb(self.frame_rect.x, self.frame_rect.y, self.frame_rect.w,
                 self.frame_rect.h, 8)
     pyxel.rect(self.frame_rect.x + 1, self.frame_rect.y + 1,
                self.frame_rect.w - 2, self.frame_rect.h - 2, 2)
     draw_text(self.frame_rect.position.offset(PADDING), self.error_message)
Exemplo n.º 7
0
 def draw(self) -> None:
     """Draw screen element at its defined position."""
     if self.sprite:
         self.sprite.draw(self.position)
     elif self.text:
         draw_text(self.position, self.text)