Scriptum/Assets/Scripts/REFACTORING/Application/Item/Effects/ItemEffectsManager.cs

81 lines
2.1 KiB
C#
Raw Normal View History

2022-12-22 03:38:00 +01:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
public class ItemEffectsManager : MonoBehaviour
{
public static ItemEffectsManager Instance { get; private set; }
public UseItemEvent itemEvent;
public virtual void Awake()
{
if(Instance == null)
{
Instance = this;
}
else
{
Destroy(gameObject);
}
}
public virtual void UseItemEffect(ItemSlot itemSlot, PanelTypeEnum originPanel)
{
DetectItemActionGroup(itemSlot, originPanel);
// origin panel is passed for script to be able to recognize from witch list remove object etc...
// use other actions binded to item - not here becaues here item should be removed from chest xd
}
public void DetectItemActionGroup(ItemSlot itemSlot, PanelTypeEnum originPanel)
{
var type = itemSlot?.Item.EquipmentType;
switch (type)
{
case EquipmentTypeEnum.Potion:
{
(PotionEffectsManager.Instance).UseItemEffect(itemSlot, originPanel);
break;
}
default:
{
Debug.LogError($"Event for item of type - {type} - is not implemented");
break;
}
// TODO add case for next type to handle action for other items ;)
}
}
public UIWarehouseManager DetectOriginPanel(PanelTypeEnum originPanel)
{
// don't handle other types because there effects aren't allowed (and source class type is different xd - complicated)
switch(originPanel)
{
case PanelTypeEnum.Inventory:
{
return InventoryUIManager.Instance;
}
case PanelTypeEnum.Equippment:
{
return EquipmentUIManager.Instance;
}
default:
{
Debug.LogError($"Event for item of type - {originPanel} - is not implemented");
break;
}
}
return UIWarehouseManager.Instance;
}
}