using System.Collections.Generic;
using UnityEngine.Events;
namespace CleverCrow.Fluid.StatsSystem.StatsContainers {
public interface IStatsContainer {
///
/// ID of the container
///
string Id { get; }
///
/// All available records. Modify directly with extreme caution
///
StatRecordCollection Records { get; }
StatsContainer CreateRuntimeCopy ();
StatRecord GetRecord (string definitionId);
StatRecord GetRecord (StatDefinition definition);
bool HasRecord (string definitionId);
bool HasRecord (StatDefinition definition);
float GetStat (StatRecord record, float index = 0);
float GetStat (StatDefinition definition, float index = 0);
float GetStat (string definitionId, float index = 0);
int GetStatInt (StatRecord record, float index = 0);
int GetStatInt (StatDefinition definition, float index = 0);
int GetStatInt (string definitionId, float index = 0);
void SetModifier (OperatorType operation, StatRecord record, string modifierId, float value);
void SetModifier (OperatorType operation, StatDefinition definition, string modifierId, float value);
void SetModifier (OperatorType operation, string definitionId, string modifierId, float value);
float GetModifier (OperatorType operation, string definitionId, string modifierId);
float GetModifier (OperatorType operation, StatDefinition definition, string modifierId);
bool RemoveModifier (OperatorType operation, StatRecord record, string modifierId);
bool RemoveModifier (OperatorType operation, StatDefinition definition, string modifierId);
bool RemoveModifier (OperatorType operation, string definitionId, string modifierId);
void ClearAllModifiers (StatRecord record, string modifierId);
void ClearAllModifiers (string modifierId);
void ClearAllModifiers (List modifierIds);
void OnStatChangeSubscribe (StatDefinition definition, UnityAction callback);
void OnStatChangeSubscribe (string definitionId, UnityAction callback);
void OnStatChangeSubscribe (StatRecord record, UnityAction callback);
void OnStatChangeUnsubscribe (StatRecord record, UnityAction callback);
void OnStatChangeUnsubscribe (StatDefinition definition, UnityAction callback);
void OnStatChangeUnsubscribe (string definitionId, UnityAction callback);
}
}