"""Globale Konstanten für Labyrinth Quest."""
import pyxel

# ─── Bildschirm & Tiles ──────────────────────────────────────────────────────
SCREEN_W = 256
SCREEN_H = 256
DISPLAY_SCALE = 2   # 1=klein, 2=512px Fenster, 3=768px, 4=1024px, 0=auto
TILE     = 16
COLS     = SCREEN_W // TILE
ROWS     = SCREEN_H // TILE

# ─── Spieler-Richtungen ──────────────────────────────────────────────────────
DIR_DOWN  = 0
DIR_LEFT  = 1
DIR_RIGHT = 2
DIR_UP    = 3
DIR_GHOST = 4

# ─── Hitbox-Konstanten ────────────────────────────────────────────────────────
PLAYER_HITBOX_INSET = 2
PLAYER_HITBOX_SIZE  = TILE - 2 * PLAYER_HITBOX_INSET  # 12
WALL_INNER_INSET    = 1
WALL_INNER_SIZE     = TILE - 2 * WALL_INNER_INSET     # 14
PLAYER_SPEED        = 2

# ─── Flugphasen-Balancing ─────────────────────────────────────────────────────
START_SHIELD_FRAMES = 120         # 4 Sekunden Startschutz
WAVE_COUNT          = 5           # Mehr Wellen = längere Flugphase
WAVE_PAUSE_FRAMES   = 75         # ~2.5s Pause zwischen Wellen
WAVE_SCATTER_FRAMES = 30         # Mehr Streuung innerhalb einer Welle

# ─── Safe-Zone ────────────────────────────────────────────────────────────────
SAFE_ZONE_RADIUS    = 20         # Pixel-Radius um die Truhe (safe)

# ─── Truhen-Stufen ────────────────────────────────────────────────────────────
CHEST_STAGE_1_PCT   = 0.0        # 0%    – Kleine Truhe
CHEST_STAGE_2_PCT   = 0.33       # 33%   – Mittlere Truhe
CHEST_STAGE_3_PCT   = 0.66       # 66%   – Grosse Truhe

# ─── Sprite-Koordinaten – Bank 0 ─────────────────────────────────────────────
PLAYER_U_BASE      = 0;   PLAYER_V = 0
KEY_U,   KEY_V     = 0, 16
CHEST_S_U, CHEST_S_V = 8, 16    # Truhe KLEIN
CHEST_M_U, CHEST_M_V = 40, 16   # Truhe MITTEL
CHEST_L_U, CHEST_L_V = 56, 16   # Truhe GROSS
TILE_U,  TILE_V    = 24, 16
SHIELD_U, SHIELD_V = 80, 0

# ─── Bank 1 ──────────────────────────────────────────────────────────────────
HEDGE_U, HEDGE_V = 0, 0

# ─── Sounds ───────────────────────────────────────────────────────────────────
SND_KEY = 0;  SND_WIN = 1;  SND_DIE = 2;  SND_ALARM = 3
SND_WIN_BASS = 4;  SND_WIN_SPARKLE = 5
SND_STEP_L = 6;  SND_STEP_R = 7

# Sound-Kanaele
CH_SFX   = 0
CH_MUSIC = 1
CH_BASS  = 2
CH_ALARM = 3

# Schritt-Timing
STEP_INTERVAL = 9   # Frames zwischen Schritten (schnell genug fuer Speed 2)

# ─── Palette ──────────────────────────────────────────────────────────────────
COL_DARK   = 1;  COL_GREEN  = 3;  COL_BROWN  = 4;  COL_WHITE  = 7
COL_RED    = 8;  COL_GOLD   = 9;  COL_YELLOW = 10;  COL_LGREEN = 11
COL_LBLUE  = 12; COL_BLUE   = 5;  COL_PINK   = 14;  COL_SKIN   = 15

# ─── Combo-Multiplikatoren ────────────────────────────────────────────────────
COMBO_MULTIPLIERS = {
    1: 1.0,
    2: 1.2,
    3: 1.5,
}
COMBO_MULTIPLIER_MAX = 2.0

# ─── Jubel-Animation ──────────────────────────────────────────────────────────
CELEBRATE_DURATION  = 120    # 4 Sekunden Jubel
CELEBRATE_JUMP_H    = 12     # Sprunghoehe in Pixel
CELEBRATE_JUMP_SPD  = 0.15   # Sprunggeschwindigkeit
SPARKLE_COUNT       = 20     # Anzahl Glitzer-Partikel


# ─── Hilfsfunktionen ─────────────────────────────────────────────────────────
def rect_overlap(ax, ay, aw, ah, bx, by, bw, bh):
    """Prüft ob zwei Rechtecke sich überlappen."""
    if ax + aw > bx and bx + bw > ax and ay + ah > by and by + bh > ay:
        return True
    return False