using System.IO;
using AIImages.Components;
using UnityEngine;
using Verse;
namespace AIImages.Helpers
{
///
/// Вспомогательный класс для работы с портретами персонажей
///
public static class PawnPortraitHelper
{
///
/// Получить компонент портрета пешки
///
public static PawnPortraitComp GetPortraitComp(Pawn pawn)
{
return pawn?.TryGetComp();
}
///
/// Сохранить путь к портрету на пешке
///
public static void SavePortraitPath(Pawn pawn, string path)
{
var comp = GetPortraitComp(pawn);
if (comp != null)
{
comp.PortraitPath = path;
Log.Message($"[AI Images] Saved portrait path for {pawn.Name}: {path}");
}
}
///
/// Получить путь к портрету пешки
///
public static string GetPortraitPath(Pawn pawn)
{
var comp = GetPortraitComp(pawn);
return comp?.PortraitPath;
}
///
/// Есть ли у пешки сохраненный портрет
///
public static bool HasPortrait(Pawn pawn)
{
var comp = GetPortraitComp(pawn);
return comp != null && comp.HasPortrait;
}
///
/// Загрузить портрет пешки как текстуру
///
public static Texture2D LoadPortrait(Pawn pawn)
{
string path = GetPortraitPath(pawn);
if (string.IsNullOrEmpty(path) || !File.Exists(path))
{
return null;
}
try
{
byte[] imageData = File.ReadAllBytes(path);
Texture2D texture = new Texture2D(2, 2);
texture.LoadImage(imageData);
return texture;
}
catch (System.Exception ex)
{
Log.Warning($"[AI Images] Failed to load portrait for {pawn.Name}: {ex.Message}");
return null;
}
}
///
/// Очистить портрет пешки
///
public static void ClearPortrait(Pawn pawn)
{
var comp = GetPortraitComp(pawn);
if (comp != null)
{
comp.PortraitPath = null;
}
}
}
}