# Copyright (C) 2020 by ÿnérant, eichhornchen, nicomarg, charlse # SPDX-License-Identifier: GPL-3.0-or-later import curses from ..display.display import Box, Display from ..game import Game from ..resources import ResourceManager from ..translations import gettext as _ class CreditsDisplay(Display): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.box = Box(*args, **kwargs) self.pad = self.newpad(1, 1) self.ascii_art_displayed = False def display(self) -> None: self.box.refresh(self.y, self.x, self.height, self.width) self.box.display() self.pad.erase() messages = [ _("Credits"), "", "Squirrel Battle", "", _("Developers:"), "Yohann \"ÿnérant\" D'ANELLO", "Mathilde \"eichhornchen\" DÉPRÉS", "Nicolas \"nicomarg\" MARGULIES", "Charles \"charsle\" PEYRAT", "", _("Translators:"), "Hugo \"ifugao\" JACOB (español)", ] for i, msg in enumerate(messages): self.addstr(self.pad, i + (self.height - len(messages)) // 2, (self.width - len(msg)) // 2, msg, bold=(i == 0), italic=(":" in msg)) if self.ascii_art_displayed: self.display_ascii_art() self.refresh_pad(self.pad, 0, 0, self.y + 1, self.x + 1, self.height + self.y - 2, self.width + self.x - 2) def display_ascii_art(self): with open(ResourceManager.get_asset_path("ascii-art-ecureuil.txt"))\ as f: ascii_art = f.read().split("\n") height, width = len(ascii_art), len(ascii_art[0]) y_offset, x_offset = (self.height - height) // 2,\ (self.width - width) // 2 for i, line in enumerate(ascii_art): for j, c in enumerate(line): bg_color = curses.COLOR_WHITE fg_color = curses.COLOR_BLACK bold = False if c == ' ': bg_color = curses.COLOR_BLACK elif c == '━' or c == '┃' or c == '⋀': bold = True fg_color = curses.COLOR_WHITE bg_color = curses.COLOR_BLACK elif c == '|': bold = True # c = '┃' fg_color = (100, 700, 1000) bg_color = curses.COLOR_BLACK elif c == '▓': fg_color = (700, 300, 0) elif c == '▒': fg_color = (700, 300, 0) bg_color = curses.COLOR_BLACK elif c == '░': fg_color = (350, 150, 0) elif c == '█': fg_color = (0, 0, 0) bg_color = curses.COLOR_BLACK elif c == '▬': c = '█' fg_color = (1000, 1000, 1000) bg_color = curses.COLOR_BLACK self.addstr(self.pad, y_offset + i, x_offset + j, c, fg_color, bg_color, bold=bold) def handle_click(self, y: int, x: int, game: Game) -> None: if self.pad.inch(y - 1, x - 1) != ord(" "): self.ascii_art_displayed = True