using System;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using SlugBase;
using SlugBase.Features;
using static SlugBase.Features.FeatureTypes;

namespace JilloSlug.Story;

internal static class Pebbles {
    public static readonly PlayerFeature<string[]> PebblesLines = PlayerStrings("jillo/pebbles_lines");

    public static void AddHooks() {
        On.SSOracleBehavior.PebblesConversation.AddEvents += PebblesConversation_AddEvents;
    }

    private static void PebblesConversation_AddEvents(On.SSOracleBehavior.PebblesConversation.orig_AddEvents orig, SSOracleBehavior.PebblesConversation self) {
        if (PebblesLines.TryGet(self.convBehav.player, out var lines)) {
            foreach (string line in lines) {
                if (line.StartsWith("!wait ")) {
                    int wait = int.Parse(line.Split(' ')[1]);
                    self.events.Add(new SSOracleBehavior.PebblesConversation.PauseAndWaitForStillEvent(self, self.convBehav, wait));
                } else {
                    self.events.Add(new Conversation.TextEvent(self, 0, self.Translate(line), 0));
                }
            }
            return;
        }
        orig(self);
    }
}
