120 lines
2.6 KiB
Python
120 lines
2.6 KiB
Python
# --- DESK ---
|
|
from typing import Mapping, Literal, Tuple
|
|
|
|
from src.map import tile_size
|
|
|
|
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)
|
|
COLOR_HP_BAR_GREEN = (0, 255, 0)
|
|
COLOR_HP_BAR_BG = (50, 50, 50)
|
|
|
|
# Players Constants / Settings
|
|
# Valid movement/animation directions.
|
|
Direction = Literal["down", "left", "right", "up"]
|
|
|
|
|
|
# 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
|
|
|
|
|
|
# --- 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
|