"""
Suggestions d'options de lancement pour forcer certains jeux à utiliser l'IP
virtuelle Meshamoto plutôt que la carte réseau physique. Certains moteurs (Source,
GoldSrc...) se lient par défaut sur la première interface détectée par l'OS, pas
forcément celle du tunnel WireGuard — les autres joueurs ne voient alors jamais la
partie hébergée, même avec un tunnel parfaitement fonctionnel.

Logique pure, aucune dépendance GUI : gui.py récupère le texte rendu et le copie
dans le presse-papier.
"""

from __future__ import annotations

from dataclasses import dataclass


@dataclass(frozen=True)
class LaunchOptionTemplate:
    engine: str
    description: str
    template: str  # contient "{ip}"

    def render(self, virtual_ip: str) -> str:
        return self.template.format(ip=virtual_ip)


LAUNCH_OPTION_TEMPLATES: list[LaunchOptionTemplate] = [
    LaunchOptionTemplate(
        engine="Source / GoldSrc (Half-Life, CS 1.6, TF2, L4D/L4D2, Garry's Mod...)",
        description=(
            "Option de lancement Steam : clic droit sur le jeu -> Propriétés -> "
            "Options de lancement, coller tel quel."
        ),
        template="-ip {ip}",
    ),
    LaunchOptionTemplate(
        engine="Générique (jeu sans option -ip native)",
        description=(
            "Outil tiers ForceBindIP (non fourni par Meshamoto) : force n'importe "
            "quel exécutable à se lier sur une IP précise. Adapter le chemin vers "
            "l'exécutable du jeu avant de coller."
        ),
        template=r'ForceBindIP.exe {ip} "C:\chemin\vers\le\jeu.exe"',
    ),
]
