Scriptum/Assets/Scripts/REFACTORING/Application/Item/Effects/PotionEffectsManager.cs
2022-12-29 14:25:07 +01:00

99 lines
2.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
class PotionEffectsManager : ItemEffectsManager
{
public static new PotionEffectsManager Instance;
public override void Awake()
{
if (Instance == null)
{
Instance = this;
}
else
{
Destroy(gameObject);
}
}
public override void UseItemEffect(ItemSlot itemSlot, PanelTypeEnum originPanel)
{
// origin panel is passed for script to be able to recognize from which list to remove the object etc...
DetectPotionType(itemSlot);
// use other action binded to item 2
itemSlot.Item?.InvokeEffectAction();
// remove potion from a slot in specific panel...
var panelUiManager = DetectOriginPanel(originPanel);
panelUiManager.RemoveByPosition(itemSlot.Number);
panelUiManager.UpdateList(); // refresh view
}
public void DetectPotionType(ItemSlot itemSlot)
{
var item = itemSlot.Item;
// detect potion and use matched action
if (item.name == "Full Health Potion")
{
HealthBigPotion();
}
else if(item.name == "Medium Health Potion")
{
HealthMediumPotion();
}
else if(item.name == "Small Health Potion")
{
HealthSmallPotion();
}
}
// use below function in one above - depending on the condition
public void HealthBigPotion()
{
var playerMaxHealth = PlayerPrefs.GetFloat("maxHealth");
var playerCurrentHealth = PlayerPrefs.GetFloat("health");
playerCurrentHealth = playerMaxHealth;
PlayerPrefs.SetFloat("health", playerCurrentHealth);
}
public void HealthMediumPotion()
{
var playerMaxHealth = PlayerPrefs.GetFloat("maxHealth");
var playerCurrentHealth = PlayerPrefs.GetFloat("health");
if(playerCurrentHealth < playerMaxHealth / 2)
{
playerCurrentHealth = playerCurrentHealth + playerMaxHealth / 2;
}
else
{
playerCurrentHealth = playerMaxHealth;
}
PlayerPrefs.SetFloat("health", playerCurrentHealth);
}
public void HealthSmallPotion()
{
var playerMaxHealth = PlayerPrefs.GetFloat("maxHealth");
var playerCurrentHealth = PlayerPrefs.GetFloat("health");
if(playerCurrentHealth < playerMaxHealth*3/4)
{
playerCurrentHealth = playerCurrentHealth + playerMaxHealth / 4;
}
else
{
playerCurrentHealth = playerMaxHealth;
}
PlayerPrefs.SetFloat("health", playerCurrentHealth);
}
// Add and invoke your own functions
}