using System;
using System.Collections.Generic;
using UnityEngine;

public class PlayerManager : MonoBehaviour
{
    public static PlayerManager Instance { get; private set; }

    void Awake() => Instance = this;

    [SerializeField] Battler _battlerPrefab;
    [SerializeField] Transform _offScreenSpawnPoint;
    Dictionary<string, Battler> _battlers = new();

    public Battler Get(string playerName)
    {
        if (_battlers.TryGetValue(playerName, out var battler))
            return battler;

        var newBattler = CreateForPlayer(playerName);
        _battlers.Add(playerName, newBattler);
        return newBattler;
    }
    
    Battler CreateForPlayer(string playerName)
    {
        Battler battler = Instantiate(_battlerPrefab, _offScreenSpawnPoint);
        Debug.LogWarning($"Spawned battler at {battler.transform.position}", transform.gameObject);
        //battler.transform.position = new Vector3(1000, 1000, 1000); // move this to the playermanager offset
        battler.name = playerName;
        battler.BindToData(Players.Get(playerName));
        battler.ResetBattler();
        return battler;
    }
}