96 lines
2.6 KiB
Python

# config/constants.py
"""Configuration constants for the simulation."""
# Screen settings
SCREEN_WIDTH = 1920
SCREEN_HEIGHT = 1080
# Colors
BLACK = (0, 0, 0)
DARK_GRAY = (64, 64, 64)
GRAY = (128, 128, 128)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
GREEN = (0, 255, 0)
ORANGE = (255, 165, 0)
LIGHT_BLUE = (52, 134, 235)
SELECTION_BLUE = (0, 128, 255)
SELECTION_GRAY = (128, 128, 128, 80)
SELECTION_BORDER = (80, 80, 90)
# Grid settings
GRID_WIDTH = 50
GRID_HEIGHT = 50
CELL_SIZE = 20
RENDER_BUFFER = 50
# Performance settings
DEFAULT_TPS = 40
MAX_FPS = 180
TURBO_MULTIPLIER = 8
# Camera settings
DEFAULT_CAMERA_SPEED = 700
CAMERA_SPEED_INCREMENT = 350
MIN_CAMERA_SPEED = 350
MAX_CAMERA_SPEED = 2100
# UI settings
FONT_SIZE = 16
LEGEND_FONT_SIZE = 14
HUD_MARGIN = 10
LINE_HEIGHT = 20
SELECTION_THRESHOLD = 3 # pixels
# Unified Panel Styling System (based on tree widget design)
PANEL_BACKGROUND_COLOR = (30, 30, 40) # Dark blue-gray background
PANEL_SELECTED_COLOR = (50, 100, 150) # Blue highlight for selected elements
PANEL_HOVER_COLOR = (60, 60, 80) # Dark blue highlight for interactive elements
PANEL_TEXT_COLOR = (200, 200, 200) # Light gray text
PANEL_ICON_COLOR = (150, 150, 150) # Medium gray icons
PANEL_BORDER_COLOR = (220, 220, 220) # Light gray borders/dividers
# Panel spacing and dimensions
PANEL_DIVIDER_WIDTH = 0 # No divider lines between panels
PANEL_BORDER_WIDTH = 2 # Border width for emphasis elements
PANEL_INTERNAL_PADDING = 8 # Standard padding inside panels
PANEL_TIGHT_SPACING = 4 # Tight spacing between components
PANEL_NODE_HEIGHT = 20 # Height for list/grid items
PANEL_INDENTATION = 20 # Indentation per hierarchy level
# Simulation settings
FOOD_SPAWNING = True
FOOD_OBJECTS_COUNT = 500
RANDOM_SEED = 0
# Vector visualization settings
ACCELERATION_SCALE = 100
VELOCITY_SCALE = 50
ANGULAR_ACCELERATION_SCALE = 50
ARROW_TIP_SIZE = 5
ANGULAR_TIP_SIZE = 2.5
DIRECTION_TIP_SIZE = 3
# Cell physics settings
MAX_ACCELERATION = 0.125
MAX_ANGULAR_ACCELERATION = 0.25
MAX_VELOCITY = 1
MAX_ROTATIONAL_VELOCITY = 3 # degrees per tick
KEYMAP_LEGEND = [
("WASD", "Move camera"),
("Mouse wheel", "Zoom in/out"),
("Middle mouse", "Pan camera"),
("R", "Reset camera"),
("G", "Toggle grid"),
("I", "Toggle interaction radius"),
("ESC", "Deselect/Exit"),
("Left click", "Select object(s)"),
("Drag select", "Select multiple objects"),
("Click on object", "Select closest object in range"),
("Up/Down", "Increase/Decrease camera speed"),
("Shift", "Double TPS (for testing)"),
("L", "Toggle this legend"),
("Space", "Pause/Resume simulation"),
]