// Open buildings layout, displaying N buildings
    public void OpenClosePanel(int panelIndex, bool open, int buildingsNb = 0)
    {
        Debug.Log("OpenClosePanel | PanelIndex [" + panelIndex + "] | Open [" + open + "] | BuildingsNb [" + buildingsNb + "]");
        BuildingShopPanel bsp = FindBuildingShopPanelByIndex(panelIndex);

        if (bsp != null && (buildingsNb <= bsp.maxSlots))
        {
            if (!open || buildingsNb > 0)
            {
                Animator anim = bsp.panel.GetComponent <Animator>();
                if (anim != null)
                {
                    if (open)
                    {
                        anim.SetTrigger("Open" + buildingsNb);
                        anim.SetInteger("OpenLevel", buildingsNb);
                        bsp.currentOpenLevel = buildingsNb;
                    }
                    else
                    {
                        anim.SetTrigger("Close");
                        anim.SetInteger("OpenLevel", 0);
                        bsp.currentOpenLevel = 0;
                    }

                    bsp.currentlyOpen = open;
                }
            }
        }
    }
    public void AddBuildingShopItem(BuildingManager.BuildingType buildingType)
    {
        BuildingShopPanel buildingShopPanel = null;

        switch (buildingType.buildingCategory)   // Attack, Defense, Production
        {
        case BuildingManager.BuildingCategory.Attack:
        {
            buildingShopPanel = FindBuildingShopPanelByIndex(attackBuildingTypeIndex);
            break;
        }

        case BuildingManager.BuildingCategory.Defense:
        {
            buildingShopPanel = FindBuildingShopPanelByIndex(defenseBuildingTypeIndex);
            break;
        }

        case BuildingManager.BuildingCategory.Production:
        {
            buildingShopPanel = FindBuildingShopPanelByIndex(productionBuildingTypeIndex);
            break;
        }

        default:
        {
            Debug.LogError("AddBuildingShopItem | Wrong Building Type");
            break;
        }
        }

        if (buildingShopPanel != null)
        {
            if (buildingShopPanel.currentUsedSlots < buildingShopPanel.maxSlots)
            {
                // Instantiation
                GameObject instantiatedBuildingShopItem = Instantiate(buildingShopItemPrefab, Vector3.zero, Quaternion.identity);
                instantiatedBuildingShopItem.transform.SetParent(buildingShopPanel.panel.transform, false);

                // Configuration
                instantiatedBuildingShopItem.GetComponent <BuildingShopItemV2>().SetInfo(buildingType);

                // Panel update
                buildingShopPanel.buildingShopItemsList.Add(instantiatedBuildingShopItem);
                buildingShopPanel.currentUsedSlots++;
            }
            else
            {
                Debug.LogError("AddBuildingShopItem | Max nb of BuildingItem in panel reached");
            }
        }
        else
        {
            Debug.LogError("AddBuildingShopItem | No BuildingShopPanel selected");
        }
    }
    public BuildingShopPanel FindBuildingShopPanelByIndex(int id)
    {
        BuildingShopPanel bsp = null;

        foreach (BuildingShopPanel buildingShopPanel in buildingShopPanelsList)
        {
            if (buildingShopPanel.buildingTypeIndex == id)
            {
                bsp = buildingShopPanel;
                break;
            }
        }
        return(bsp);
    }