Files
WulaFallenEmpireRW/Source/WulaFallenEmpire/EventSystem/Letter_EventChoice.cs
2025-07-31 15:06:36 +08:00

68 lines
2.3 KiB
C#

using RimWorld;
using RimWorld.QuestGen;
using System;
using System.Collections.Generic;
using Verse;
namespace WulaFallenEmpire
{
public class Letter_EventChoice : ChoiceLetter
{
// These fields are now inherited from the base Letter class
// public string letterLabel;
// public string letterTitle;
// public string letterText;
public List<QuestNode_Root_EventLetter.Option> options;
public new Quest quest;
public override IEnumerable<DiaOption> Choices
{
get
{
if (options.NullOrEmpty())
{
yield break;
}
foreach (var optionDef in options)
{
var currentOption = optionDef;
Action choiceAction = delegate
{
if (!currentOption.effects.NullOrEmpty())
{
foreach (var effect in currentOption.effects)
{
effect.Execute(null);
}
}
if (quest != null && !quest.hidden && !quest.Historical)
{
quest.End(QuestEndOutcome.Success);
}
Find.LetterStack.RemoveLetter(this);
};
var diaOption = new DiaOption(currentOption.label)
{
action = choiceAction,
resolveTree = true
};
yield return diaOption;
}
}
}
public override bool CanDismissWithRightClick => false;
public override void ExposeData()
{
base.ExposeData();
// Scribe_Values.Look(ref letterLabel, "letterLabel"); // Now uses base.label
// Scribe_Values.Look(ref letterTitle, "letterTitle"); // Now uses base.title
// Scribe_Values.Look(ref letterText, "letterText"); // Now uses base.text
Scribe_Collections.Look(ref options, "options", LookMode.Deep);
Scribe_References.Look(ref quest, "quest");
}
}
}