"""Xodex settings for {{ project_name_upper }} project.

Generated by '{{ xodex_argv }}' using Xodex version {{ xodex_version }}.

This file contains all configuration for your Xodex game project.
You can customize game window, physics, assets, debugging, audio, localization, and more.

For advanced settings and detailed explanations, see the Xodex documentation or this file's comments.
"""
from pathlib import Path

PROJECT = "{{ project_name }}"

# --- Paths ---
# Root directory of your project
BASE_DIR = Path(__file__).resolve().parent.parent

# --- Window & Display ---
FPS = 60  # Target frames per second
WIDTH = 720  # Window width in pixels
HEIGHT = 560  # Window height in pixels
WINDOW_SIZE = (WIDTH, HEIGHT)
TITLE = "Xodex Game Engine"  # Window title
VERSION = "{{ xodex_version }}"  # Game version string
FULLSCREEN = False  # Set to True for fullscreen mode
ICON_PATH = None  # Set to a path to your window icon, e.g. "asset/icon.png"

# --- Physics & Gameplay ---
GRAVITY = 1.2  # Gravity constant for physics calculations
MAX_SPEED = 6  # Maximum speed for moving objects
FRICTION = 0.1  # Friction coefficient for movement
JUMP_FORCE = 15  # Force applied when jumping
PLAYER_START_POS = (100, 100)  # Default player spawn position (x, y)
ENABLE_COLLISIONS = True  # Enable or disable collision detection

# --- Debugging & Development ---
DEBUG = True  # Enable debug mode (shows extra info, disables some optimizations)
SHOW_FPS = True  # Display FPS counter on screen
SHOW_OBJECT_COUNT = True  # Display number of active objects
LOG_LEVEL = "INFO"  # Options: "DEBUG", "INFO", "WARNING", "ERROR"
ENABLE_PROFILER = False  # Enable performance profiler overlay
HOT_RELOAD = True  # Reload assets/scenes on file change (for rapid development)

# --- Internationalization ---
LANGUAGE_CODE = "en-us"  # Default language code
TIME_ZONE = "UTC"  # Default time zone
USE_I18N = True  # Enable internationalization (i18n)
USE_TZ = True  # Enable timezone-aware datetimes
SUPPORTED_LANGUAGES = ["en-us", "es", "fr", "de"]  # List of supported languages

# --- Assets ---
ASSET_DIR = "asset/"  # Root directory for all assets
IMAGE_DIR = ASSET_DIR + "images/"  # Directory for images
SOUND_DIR = ASSET_DIR + "sounds/"  # Directory for sounds
FONT_DIR = ASSET_DIR + "fonts/"  # Directory for fonts
LEVEL_DIR = ASSET_DIR + "levels/"  # Directory for level data
SAVE_DIR = BASE_DIR / "save/"  # Directory for save files

# --- Audio ---
MUSIC_VOLUME = 0.7  # Default music volume (0.0 to 1.0)
SFX_VOLUME = 0.8  # Default sound effects volume (0.0 to 1.0)
MUTE = False  # Mute all audio

# --- Controls ---
KEY_BINDINGS = {
    "move_left": "a",  # Move left
    "move_right": "d",  # Move right
    "jump": "space",  # Jump
    "pause": "p",  # Pause the game
    "quit": "escape",  # Quit the game
}

GAMEPAD_ENABLED = False  # Enable gamepad/controller support

# --- Networking (for multiplayer or online features) ---
ENABLE_NETWORK = False  # Enable networking features
SERVER_HOST = "localhost"  # Default server host
SERVER_PORT = 5000  # Default server port

# --- Advanced/Experimental ---
ENABLE_PARTICLE_SYSTEM = True  # Enable particle effects
ENABLE_SCREEN_SHAKE = True  # Enable camera shake effect
ENABLE_POST_PROCESSING = (
    False  # Enable advanced visual effects (may impact performance)
)

# --- Custom User Settings (add your own below) ---
CUSTOM_SETTINGS = {
    # Example: "my_setting": 123,
}


# Main Scene
MAIN_SCENE = "XodexMainScene"

# --- Documentation ---
"""
Settings Reference:

- FPS: Target frames per second.
- WIDTH, HEIGHT: Window size in pixels.
- FULLSCREEN: Set to True for fullscreen mode.
- VSYNC: Enable vertical sync.
- GRAVITY: Gravity constant for physics.
- MAX_SPEED: Maximum speed for moving objects.
- DEBUG: Enable debug mode (shows extra info, disables some optimizations).
- SHOW_FPS: Display FPS counter on screen.
- ASSET_DIR: Root directory for all assets.
- MUSIC_VOLUME, SFX_VOLUME: Default audio volumes.
- KEY_BINDINGS: Dict of action names to keys.
- ENABLE_NETWORK: Enable networking features.
- ENABLE_PARTICLE_SYSTEM: Enable particle effects.
- ENABLE_SCREEN_SHAKE: Enable camera shake effect.
- ENABLE_POST_PROCESSING: Enable advanced visual effects.

Tips:
- You can override any setting here in your local or production environment.
- Add your own custom settings to CUSTOM_SETTINGS and access them in your code.
- For more details, see the Xodex documentation or ask for help in the community!
"""
