using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// ============================================================================
// COST CALCULATION CONTEXT - Holds user stats for cost calculations
// ============================================================================
///
/// Context containing user stats needed for cost calculations
/// Allows ability cost calculation without direct user reference
///
public struct CostCalculationContext
{
public float maxMana;
public float maxHealth;
public float currentMana;
public float currentHealth;
public float currentClassResource;
public static CostCalculationContext FromUser(Taggable user)
{
var context = new CostCalculationContext();
var mana = user.GetComponent();
if (mana != null)
{
context.maxMana = mana.GetMaxValue();
context.currentMana = mana.GetCurrentValue();
}
var health = user.GetComponent();
if (health != null)
{
context.maxHealth = health.GetMaxValue();
context.currentHealth = health.GetCurrentValue();
}
var classResource = user.GetComponent();
if (classResource != null)
{
context.currentClassResource = classResource.GetCurrentValue();
}
return context;
}
public static CostCalculationContext CreateMockContext(float maxMana = 100f, float maxHealth = 100f)
{
return new CostCalculationContext
{
maxMana = maxMana,
maxHealth = maxHealth,
currentMana = maxMana,
currentHealth = maxHealth,
currentClassResource = 100f
};
}
}