//
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
//
namespace MUnique.OpenMU.GameLogic;
///
/// Interface for a skill list of a character.
///
public interface ISkillList
{
///
/// Gets the skills.
///
IEnumerable Skills { get; }
///
/// Gets the number of skills in the skill list.
///
byte SkillCount { get; }
///
/// Gets the skill with the specified id.
///
/// The skill identifier.
/// The skill with the specified id.
SkillEntry? GetSkill(ushort skillId);
///
/// Adds the learned skill.
///
/// The skill.
ValueTask AddLearnedSkillAsync(Skill skill);
///
/// Removes the item skill.
///
/// The skill identifier.
/// The success of removing the skill.
ValueTask RemoveItemSkillAsync(ushort skillId);
///
/// Determines whether the list contains the specified skill of the specified id.
///
/// The skill identifier.
/// True, if the skill with the specified id is contained in this list; Otherwise, false.
bool ContainsSkill(ushort skillId);
}