#!/usr/bin/env python3 """Interactive simulation entry point - runs simulation with UI.""" import sys import argparse from pathlib import Path # Add project root to path project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root)) from config import ConfigLoader from core.simulation_engine import SimulationEngine def main(): """Main entry point for interactive simulation.""" parser = argparse.ArgumentParser(description="Run interactive simulation with UI") parser.add_argument( "--config", "-c", type=str, help="Path to configuration file (JSON/YAML)", default=None ) parser.add_argument( "--create-sample-configs", action="store_true", help="Create sample configuration files and exit" ) args = parser.parse_args() # Create sample configs if requested if args.create_sample_configs: ConfigLoader.create_sample_configs() return # Load configuration try: if args.config: config = ConfigLoader.load_interactive_config(args.config) else: config = ConfigLoader.get_default_interactive_config() except Exception as e: print(f"Error loading configuration: {e}") sys.exit(1) # Run simulation try: print("Starting interactive simulation...") engine = SimulationEngine(config) engine.run() except KeyboardInterrupt: print("\nSimulation interrupted by user") sys.exit(0) except Exception as e: print(f"Simulation error: {e}") import traceback traceback.print_exc() sys.exit(1) if __name__ == "__main__": main()