Files
WulaFallenEmpireRW/Source/WulaFallenEmpire/EventSystem/Effect/Effect_OpenAIConversation.cs
2025-12-27 20:00:13 +08:00

73 lines
2.4 KiB
C#

using System;
using RimWorld;
using Verse;
using WulaFallenEmpire.EventSystem.AI;
using WulaFallenEmpire.EventSystem.AI.UI;
namespace WulaFallenEmpire
{
public class Effect_OpenAIConversation : EffectBase
{
public string defName;
public override void Execute(Window dialog = null)
{
// Check if API Key is configured in local settings
if (string.IsNullOrEmpty(WulaFallenEmpireMod.settings.apiKey))
{
Messages.Message("AI API Key is not configured in Mod Settings. AI conversation cannot be started.", MessageTypeDefOf.RejectInput, false);
return;
}
EventDef eventDef = DefDatabase<EventDef>.GetNamed(defName, false);
if (eventDef != null)
{
var existing = Find.WindowStack.WindowOfType<Dialog_AIConversation>();
if (existing != null)
{
Find.WindowStack.Notify_ManuallySetFocus(existing);
}
else
{
Find.WindowStack.Add(new Dialog_AIConversation(eventDef));
}
}
else
{
WulaLog.Debug($"[WulaFallenEmpire] Effect_OpenAIConversation could not find EventDef named '{defName}'");
}
}
}
public class Effect_OpenWulaLink : EffectBase
{
public string defName;
public override void Execute(Window dialog = null)
{
if (string.IsNullOrEmpty(WulaFallenEmpireMod.settings.apiKey))
{
Messages.Message("AI API Key is not configured in Mod Settings. AI conversation cannot be started.", MessageTypeDefOf.RejectInput, false);
return;
}
EventDef eventDef = DefDatabase<EventDef>.GetNamed(defName, false);
if (eventDef != null)
{
var existing = Find.WindowStack.WindowOfType<Overlay_WulaLink>();
if (existing != null)
{
existing.Expand();
}
else
{
Find.WindowStack.Add(new Overlay_WulaLink(eventDef));
}
}
else
{
WulaLog.Debug($"[WulaFallenEmpire] Effect_OpenWulaLink could not find EventDef named '{defName}'");
}
}
}
}