More of reusing objects in SexStatusViewModel

This commit is contained in:
amevarashi 2023-07-24 20:47:00 +05:00
parent bed83e1eca
commit ffe6a9b7f7
6 changed files with 212 additions and 209 deletions

View file

@ -5,29 +5,43 @@ using Verse;
namespace RJWSexperience.SexHistory.UI
{
public readonly struct PartnerPortraitInfo
public class PartnerPortraitInfo
{
public readonly SexPartnerHistoryRecord partnerRecord;
public readonly bool lover;
public readonly Func<Vector2, Texture> portraitGetter;
private readonly Pawn _pawn;
public SexPartnerHistoryRecord PartnerRecord { get; private set; }
public bool Lover { get; private set; }
public Func<Vector2, Texture> PortraitGetter { get; private set; }
public PartnerPortraitInfo(Pawn pawn)
{
_pawn = pawn;
}
public PartnerPortraitInfo(Pawn pawn, SexPartnerHistoryRecord partnerRecord)
{
this.partnerRecord = partnerRecord;
lover = false;
_pawn = pawn;
UpdatePartnerRecord(partnerRecord);
}
public void UpdatePartnerRecord(SexPartnerHistoryRecord partnerRecord)
{
PartnerRecord = partnerRecord;
if (partnerRecord?.Partner != null)
{
portraitGetter = (size) => PortraitsCache.Get(partnerRecord.Partner, size, Rot4.South, default, 1, true, true, false, false);
lover = LovePartnerRelationUtility.LovePartnerRelationExists(pawn, partnerRecord.Partner);
PortraitGetter = (size) => PortraitsCache.Get(partnerRecord.Partner, size, Rot4.South, default, 1, true, true, false, false);
Lover = LovePartnerRelationUtility.LovePartnerRelationExists(_pawn, partnerRecord.Partner);
}
else if (partnerRecord?.Race?.uiIcon != null)
{
portraitGetter = (_) => partnerRecord.Race.uiIcon;
PortraitGetter = (_) => partnerRecord.Race.uiIcon;
Lover = false;
}
else
{
portraitGetter = (_) => HistoryUtility.UnknownPawn;
PortraitGetter = (_) => HistoryUtility.UnknownPawn;
Lover = false;
}
}
}