from typing import Mapping, Literal, Tuple from src.map import tile_size from tower import projectile_size # --- DESK --- DESK_WIDTH = 70 DESK_HEIGHT = 40 # --- DOOR --- DOOR_WIDTH = 20 DOOR_HEIGHT = 100 DOOR_BORDER_WIDTH = 3 COLOR_DOOR_BEIGE = (245, 245, 220) COLOR_DOOR_BORDER = (100, 90, 80) # --- PLAYER --- # Players Constants / Settings # Valid movement/animation directions. Direction = Literal["down", "left", "right", "up"] # --- SPRITE --- # Sprite files are grouped by direction. # Example: "down" uses sprite_01.png, sprite_02.png, sprite_03.png. DIRECTION_FRAMES: Mapping[Direction, Tuple[int, int, int]] = { "down": (1, 2, 3), "left": (4, 5, 6), "right": (7, 8, 9), "up": (10, 11, 12), } # Default drawing size and animation speed. DEFAULT_SPRITE_HEIGHT: int = 138 DEFAULT_FRAME_TIME: float = 0.16 # --- ECTS --- START_ECTS_VALUE = 1 # how many ECTS are generated at the beginning ECTS_UPDATE_INTERVAL = 1000 # time in ms (1000 = 1 sec) BEER_BOTTLE_ECTS_VALUE = 2 BEER_COST = 50 # --- BUTTONS --- COLOR_BUTTON = (0, 255, 0) COLOR_BUTTON_HOVER = (200, 255, 0) # --- STARTSCREEN --- COLOR_STARTSCREEN_BACKGROUND = (0, 0, 0) COLOR_STARTSCREEN_FONT_TITLE = (0, 255, 0) COLOR_STARTSCREEN_FONT_LABEL = (0, 255, 255) # --- ENDSCREEN --- COLOR_ENDSCREEN_BACKGROUND = (0, 0, 0) COLOR_ENDSCREEN_TEXT = (255, 255, 255) COLOR_ENDSCREEN_WIN = (0, 255, 0) COLOR_ENDSCREEN_LOSE = (255, 0, 0) FONT_ENDSCREEN = "Arial" # --- COFFEE --- COFFEE_COST = 30 COFFEE_HEAL_VALUE = 30 # --- TOWER --- TOWER_COST = 150 PROJECTILE_DMG = 15 PROJECTILE_SPEED = 7 COLOR_PROJECTILE = (200, 200, 0) TOWER_TIMER = 30000 # how long the tower stays and attack before it disappears tower_size = 30 projectile_size = 8 fire_interval = 1000 # ms respawn_delay = 10000 # ms # --- ITEM SPAWN TIMER --- ITEM_SPAWN_INTERVAL = 5000 # ms until a new item spawns ITEM_SHOPPING_TIMER = 10000 # how long you have time to buy items before they despawn ITEM_SIZE = 30 # --- ZOMBIE --- ZOMBIE_EASY_HP = 30 ZOMBIE_EASY_DMG = 3 ZOMBIE_MEDIUM_HP = 60 ZOMBIE_MEDIUM_DMG = 7 ZOMBIE_HARD_HP = 120 ZOMBIE_HARD_DMG = 12 # --- HUD --- HUD_FONT = "Arial" HUD_FONT_SIZE = 22 HUD_FONT_BOLD = True COLOR_HUD_TEXT = (255, 255, 255) COLOR_HUD_SHOP_TEXT = (200, 200, 200) COLOR_HP_BAR_GREEN = (0, 255, 0) COLOR_HP_BAR_BG = (50, 50, 50) COLOR_HP_BAR_RED = (200, 0, 0) COLOR_HP_BAR_YELLOW = (255, 255, 0) HUD_BAR_WIDTH = 100 HUD_BAR_HEIGHT = 15 PLAYER_SPEED = 180.0 DEMO_ACTOR_HEIGHT = tile_size * 3 FPS = 60 HUD_X_OFFSET = 20 # left startpoint for texts HUD_BAR_X = 150 # left startpoint for hp bars HUD_Y_DOOR = 20 HUD_Y_ZOMBIE = 50 HUD_Y_ECTS = 85 # --- MAP --- # Fenstergröße und Tile Größe (Felder) tile_size = 30 screen_w = 1900 screen_h = 900 # Farben für die einzelnen Tiles color_wall = (30, 20, 40) # black like color_room = (75, 40, 55) # dark red-violet color_hall = (35, 65, 45) # dark green color_door = (40, 90, 110) # dark blue color_void = (10, 10, 15) # a little more black color_text = (220, 180, 210) # rose color_border = (55, 35, 70) color_start = (255, 0, 0)# dark violet