PlantList

This commit is contained in:
ThomasCharester committed 2026-03-05 11:27:10 +03:00
1 parent ba49ef5015
commit 7c207ef5b9
44 files changed
+2795 -1147

No files matched your search

@@ -0,0 +1,82 @@
using System;
using System.Collections.Generic;
using Code.Calendar.DataStructures;
using Code.Infrastructure.EventBus;
using Code.Infrastructure.Loadings;
using Code.Infrastructure.UI;
using Reflex.Attributes;
using UnityEngine;
namespace Code.Calendar.Panels
{
public class PlantsListPanel : UIPanel, IUIPanelLoaded
{
[SerializeField] private Transform contentParent;
private IPlantService _plantService;
private IUIService _uiService;
private EventBus _eventBus;
private List<PlantAsListElement> _plantsPanels = new();
private Stack<Plant> _plantsToCreate;
[Inject]
private void Construct(EventBus eventBus, IPlantService plantService, IUIService uiService)
{
_eventBus = eventBus;
_plantService = plantService;
_uiService = uiService;
eventBus.Subscribe(this);
}
public override void Open(Action callback = null)
{
_plantsToCreate = new(_plantService.GetPlants());
for (var i = _plantsToCreate.Count; i > 0 ; i--) _uiService.TryLoadCreatePanel(UIPanelType.PlantAsList, contentParent);
callback?.Invoke();
}
public override void Close(Action callback = null)
{
ClearPlants(callback);
}
private Loading _panelClosureLoading;
private void ClearPlants(Action callback = null)
{
if(_panelClosureLoading != null)
_panelClosureLoading = new(_plantsPanels.Count + _panelClosureLoading.CurrentProgress, callback);
else
_panelClosureLoading = new(_plantsPanels.Count, callback);
foreach (var plantPanel in _plantsPanels) _uiService.TryRemovePanel(plantPanel);
}
public void UISinglePanelLoaded(UIPanelType uiPanelType)
{
}
public void UIMultiplePanelLoaded(UIPanelType uiPanelType, UIPanel panel)
{
if (uiPanelType != UIPanelType.PlantAsList) return;
_plantsPanels.Add((PlantAsListElement)panel);
((PlantAsListElement)panel).SetPlant(_plantsToCreate.Pop());
if(_plantsToCreate.Count == 0) PlantPanelsLoaded();
}
private void PlantPanelsLoaded()
{
foreach (var panel in _plantsPanels)
{
panel.Open();
}
Debug.LogWarning("PlantPanelsLoaded");
}
}
}