import {
  defineVQTimeline,
  say,
  still,
  wait,
  type VQSpeechEvent,
  type VQTimelineEvent,
  type VQTimelineInputEvent,
} from "../../lib/VQRemotionLib/timeline";
import type {CharacterId, VoicevoxVoice} from "./characters";

export {characters} from "./characters";
export type {CharacterDefinition, CharacterId, VoicevoxVoice} from "./characters";

export type SpeechEvent = VQSpeechEvent<CharacterId, VoicevoxVoice>;
export type TimelineEvent = VQTimelineEvent<CharacterId, VoicevoxVoice>;
export type TimelineInputEvent = VQTimelineInputEvent<
  CharacterId,
  VoicevoxVoice
>;

export const timeline = defineVQTimeline([
  say("pizza-oven-project-01-sayo-001", "sayo", "こんにちは。小夜です。"),
  say("pizza-oven-project-01-sayo-002", "sayo", "ピザって美味しいじゃないですか。"),
  say("pizza-oven-project-01-sayo-003", "sayo", "だから、作る事にしたんですよね。"),
  still(
    "pizza-oven-project-01-oven-still-001",
    "image/still/blender-oven-still01.png",
    {
      durationSeconds: 1.0,
      fit: "cover",
    }
  ),
  say("pizza-oven-project-01-sayo-004", "sayo", "ピザ窯を。", {
    readAs: "ぴざがまを。",
  }),
  wait(1),
  say("pizza-oven-project-01-sayo-005", "sayo", "まずはblender上で、耐熱レンガの寸法を元に積み方を設計することにしました。"),
  say("pizza-oven-project-01-sayo-006", "sayo", "使うレンガの数がこれでわかります。"),
  say("pizza-oven-project-01-sayo-007", "sayo", "通常サイズのレンガが91個、\n半分にしたレンガが8個必要ですね。"),
  say("pizza-oven-project-01-sayo-008", "sayo", "レンガを割って半分にするので、合計95個の耐熱レンガを買うことにしました。"),
  say("pizza-oven-project-01-sayo-009", "sayo", "次に、レンガを積む土台を作ります。"),
  say("pizza-oven-project-01-sayo-010", "sayo", "ホームセンターで、コンクリートブロックを8個買ってきました。"),
  say("pizza-oven-project-01-sayo-011", "sayo", "これを平らに固めた地面に置いて、その上にレンガを積んでいきます。"),
  say("pizza-oven-project-01-sayo-012", "sayo", "後は設計図通りに……　3.5kg×95個の耐熱レンガを積んでいくだけですね。"),
  say("pizza-oven-project-01-sayo-013", "sayo", "……合計332.5kgですね。"),
] satisfies readonly TimelineInputEvent[]);
