using System;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;

public class PlaceingObj : MonoBehaviour
{
    [SerializeField]
    private InputManager InputManager;
    private transparentMovement transparentMovement;
    [SerializeField]
    private DatabaseSO database;
    private int selectedObjectIndex=-1;
    [SerializeField]
    private transparentMovement preview;

    
    void Start()
    {
         StopPlacement();
    }
    public void StartPlacement(int ID)
    {
        StopPlacement();
        selectedObjectIndex =database.objectsData.FindIndex(data => data.ID==ID);
         preview.StartShowingPlacementPreview(
            database.objectsData[selectedObjectIndex].Prefab);
        InputManager.OnClicked += PlaceStructure;
        InputManager.OnExit += StopPlacement;
       
    }
    private void PlaceStructure()
    {
        
        GameObject newObject = Instantiate(database.objectsData[selectedObjectIndex].Prefab);
        newObject.transform.position=InputManager.SelectMapPosition();
         Vector3 mousePosition = InputManager.SelectMapPosition();
        preview.UpdatePosition(mousePosition);

    }
   
     private void StopPlacement()
    {
       
        selectedObjectIndex =-1;
        
       
        InputManager.OnClicked -= PlaceStructure;
        InputManager.OnExit -= StopPlacement;
       
       
    }
    // Update is called once per frame
    
    void Update()
    {
        if(selectedObjectIndex <0)
            return;
        Vector3 mousePosition = InputManager.SelectMapPosition();
        preview.UpdatePosition(mousePosition);

    }
}