# Copyright (C) 2020 by ΓΏnΓ©rant, eichhornchen, nicomarg, charlse
# SPDX-License-Identifier: GPL-3.0-or-later

import curses
from typing import Any


class TexturePack:
    _packs = dict()

    name: str
    tile_width: int
    tile_fg_color: int
    tile_bg_color: int
    entity_fg_color: int
    entity_bg_color: int

    BODY_SNATCH_POTION: str
    BOMB: str
    HEART: str
    HEDGEHOG: str
    EMPTY: str
    FLOOR: str
    HAZELNUT: str
    MERCHANT: str
    PLAYER: str
    RABBIT: str
    SUNFLOWER: str
    SWORD: str
    TEDDY_BEAR: str
    TIGER: str
    WALL: str

    ASCII_PACK: "TexturePack"
    SQUIRREL_PACK: "TexturePack"

    def __init__(self, name: str, **kwargs):
        self.name = name
        self.__dict__.update(**kwargs)
        TexturePack._packs[name] = self

    def __getitem__(self, item: str) -> Any:
        return self.__dict__[item]

    @classmethod
    def get_pack(cls, name: str) -> "TexturePack":
        return cls._packs[name.lower()]

    @classmethod
    def get_next_pack_name(cls, name: str) -> str:
        return "squirrel" if name == "ascii" else "ascii"


TexturePack.ASCII_PACK = TexturePack(
    name="ascii",
    tile_width=1,
    tile_fg_color=curses.COLOR_WHITE,
    tile_bg_color=curses.COLOR_BLACK,
    entity_fg_color=curses.COLOR_WHITE,
    entity_bg_color=curses.COLOR_BLACK,

    BODY_SNATCH_POTION='S',
    BOMB='o',
    EMPTY=' ',
    EXPLOSION='%',
    FLOOR='.',
    LADDER='H',
    HAZELNUT='Β€',
    HEART='❀',
    HEDGEHOG='*',
    MERCHANT='M',
    PLAYER='@',
    RABBIT='Y',
    SUNFLOWER='I',
    SWORD='\u2020',
    TEDDY_BEAR='8',
    TIGER='n',
    WALL='#',
)

TexturePack.SQUIRREL_PACK = TexturePack(
    name="squirrel",
    tile_width=2,
    tile_fg_color=curses.COLOR_WHITE,
    tile_bg_color=curses.COLOR_BLACK,
    entity_fg_color=curses.COLOR_WHITE,
    entity_bg_color=curses.COLOR_WHITE,

    BODY_SNATCH_POTION='πŸ”€',
    BOMB='πŸ’£',
    EMPTY='  ',
    EXPLOSION='πŸ’₯',
    FLOOR='β–ˆβ–ˆ',
    LADDER=('πŸͺœ', curses.COLOR_WHITE, curses.COLOR_WHITE),
    HAZELNUT='🌰',
    HEART='πŸ’œ',
    HEDGEHOG='πŸ¦”',
    PLAYER='🐿️ ️',
    MERCHANT='🦜',
    RABBIT='πŸ‡',
    SUNFLOWER='🌻',
    SWORD='πŸ—‘οΈ ',
    TEDDY_BEAR='🧸',
    TIGER='πŸ…',
    WALL='🧱',
)