using Lumina;
using Lumina.Data;
using Lumina.Excel;
namespace Dalamud.Plugin.Services;
///
/// This class provides data for Dalamud-internal features, but can also be used by plugins if needed.
///
public interface IDataManager
{
///
/// Gets the current game client language.
///
public ClientLanguage Language { get; }
///
/// Gets a object which gives access to any excel/game data.
///
public GameData GameData { get; }
///
/// Gets an object which gives access to any of the game's sheet data.
///
public ExcelModule Excel { get; }
///
/// Gets a value indicating whether the game data files have been modified by another third-party tool.
///
public bool HasModifiedGameDataFiles { get; }
///
/// Get an with the given Excel sheet row type.
///
/// The excel sheet type to get.
/// The , giving access to game rows.
public ExcelSheet? GetExcelSheet() where T : ExcelRow;
///
/// Get an with the given Excel sheet row type with a specified language.
///
/// Language of the sheet to get.
/// The excel sheet type to get.
/// The , giving access to game rows.
public ExcelSheet? GetExcelSheet(ClientLanguage language) where T : ExcelRow;
///
/// Get a with the given path.
///
/// The path inside of the game files.
/// The of the file.
public FileResource? GetFile(string path);
///
/// Get a with the given path, of the given type.
///
/// The type of resource.
/// The path inside of the game files.
/// The of the file.
public T? GetFile(string path) where T : FileResource;
///
/// Check if the file with the given path exists within the game's index files.
///
/// The path inside of the game files.
/// True if the file exists.
public bool FileExists(string path);
}