# Copilot Instructions for Target Simulator

## Project Overview
- **Target Simulator** is a Python desktop application (Tkinter GUI) for simulating radar targets and scenarios, with communication via TFTP and serial protocols.
- Main entry: `target_simulator/__main__.py` launches the GUI (`MainView`).
- Core logic is split into:
  - `core/`: simulation engine, communication interfaces, scenario models
  - `gui/`: Tkinter windows, frames, and widgets
  - `utils/`: logging, config management, TFTP client

## Architecture & Data Flow
- **Simulation** runs in a background thread (`SimulationEngine`) and updates target states/scenarios.
- **Communication**: Supports both TFTP and serial, abstracted via `CommunicatorInterface` and implemented in `serial_communicator.py` and `tftp_communicator.py`.
- **Configuration**: Settings and scenarios are stored in `settings.json` (read/write via `ConfigManager`).
- **Logging**: Centralized, routed to both console and GUI (`logger.py`). GUI log widget uses colored levels.
- **Scenarios**: Defined in `settings.json` under `scenarios`, loaded and managed via GUI and core logic.

## Developer Workflows
- **Run app**: `python -m target_simulator` (from project root)
- **Debug**: Use Python debugger on `__main__.py` or GUI modules
- **Settings**: Edit `settings.json` for global config, connection, and scenario data
- **Logging**: Adjust `LOGGING_CONFIG` in `config.py` for format/colors

## Patterns & Conventions
- **Absolute imports** are used throughout (e.g., `from target_simulator.core...`).
- **PEP8** style, English for code/comments/docstrings
- **One statement per line**; concise, essential comments only
- **Modularization**: If a file grows >1000 lines, split by topic into new modules
- **Scenario/Settings**: All persistent config is managed via `ConfigManager` and stored in `settings.json`
- **GUI**: All Tkinter windows/frames are in `gui/`, main window is `MainView`
- **Logging**: Use `get_logger`, `setup_basic_logging`, and `add_tkinter_handler` for consistent logging

## Integration Points
- **External dependencies**: Tkinter, threading, TFTP/serial (no third-party packages required)
- **Temp files**: Written to `Temp/` for live updates and scenario init logs
- **C++ code**: `BupTFTP.cpp/h` present but not integrated with Python app

## Examples
- To add a new communication protocol, implement `CommunicatorInterface` in `core/` and update GUI logic in `main_view.py`.
- To add a new scenario, update `settings.json` and use `ConfigManager` methods.
- To extend logging, add new handlers in `logger.py` and update `config.py` for color/format.

## References
- Main entry: `target_simulator/__main__.py`
- Simulation: `core/simulation_engine.py`
- GUI: `gui/main_view.py`, other `gui/` modules
- Config: `utils/config_manager.py`, `settings.json`
- Logging: `utils/logger.py`, `config.py`

---

If any section is unclear or missing, please provide feedback to improve these instructions.