# -*- coding: utf-8 -*-
"""Claudeに覚えてもらう（ショート専用・舞台型・2026-11-06）
エイイチの言葉: 「同じチャットは同じlog番号にしてください（いい加減覚えてください）」"""
from butai_parts import *
OUTRO_K = 6   # 締めの文の番号（narration.py の最後に足した文）

NAME, VER = "Claudeに覚えてもらう", 4
HEAD = "AIに<br>覚えてもらうには？"
T_ON = (0, 1.2)
SAY = "同じチャットは、同じLog番号に"


def bubbles(t0, step, t_out=None):
    out = ""
    for k in range(3):
        an = a("up", t0 + k * step)
        if t_out is not None:
            an += ", " + a("blurOut", t_out + k * 0.12, .6)
        out += (f'<div class="bubble" style="top:{150 + k * 120}px;animation:{an}">'
                f'<span style="font-size:22px;color:{DIM};margin-right:16px">{k + 1}回目</span>{SAY}</div>')
    return out


def scene(T, S):
    h = CSS
    # 0: 同じことを3回言っている
    t0 = T(0, 0)
    h += win(T(0, 1.2), T(1, 0), kick("エイイチがClaudeに言ったこと") + bubbles(T(0, 1.25), 0.35))
    # 1: 会話が変わると忘れる（吹き出しがぼやけて消える）
    t1 = T(1, 0)
    h += win(t1, T(2, 0), kick("会話が変わると")
             + "".join(f'<div class="bubble" style="top:{150 + k * 120}px;opacity:1;animation:{a("blurOut", t1 + 0.8 + k * 0.25, .7)}">'
                       f'<span style="font-size:22px;color:{DIM};margin-right:16px">{k + 1}回目</span>{SAY}</div>' for k in range(3)))
    # 2: 決めたことは、ルールの本に書き足す
    t2, s2 = T(2, 0), S(2)
    book_lines = "".join(f'<div class="line" style="left:92px;top:{252 + k * 40}px;width:{w}px;transform-origin:left;transform:scaleX(0);'
                         f'animation:{a("grow", t2 + 0.5 + k * (s2 - 0.8) / 6, .3)}{";background:" + ORANGE if k == 5 else ""}"></div>'
                         for k, w in enumerate([240, 200, 250, 180, 230, 210]))
    h += win(t2, T(3, 0), kick("ルールの本")
             + '<div class="card" style="left:48px;top:120px;width:340px;height:440px;justify-content:flex-start;padding-top:30px"><small>動画のルール</small>'
               '<span style="font-size:34px">video_rules.md</span></div>' + book_lines
             + '<div class="msg" style="left:430px;top:220px;font-size:52px">決めたことを、<br>本に<br>書き足す</div>')
    # 3: もう105回書き足した（数え上げ）
    t3, s3 = T(3, 0), S(3)
    h += win(t3, T(4, 0), kick("動画のルールを書き足した回数")
             + f'<div class="hero" style="left:0;right:0;text-align:center;top:150px;font-size:300px"><b id="cnt" style="font-weight:900">0</b><span>回</span></div>'
             + counter_js("cnt", t3 + 0.3, t3 + s3 - 0.6, 105, 0))
    # 4: いい加減、覚えてください（4つ目の吹き出しを叩きつける）
    t4 = T(4, 0)
    h += win(t4, T(5, 0), kick("4回目")
             + "".join(f'<div class="bubble" style="top:{150 + k * 100}px;opacity:.25;font-size:26px">{SAY}</div>' for k in range(3))
             + f'<div class="stamp" style="left:70px;top:330px;font-size:56px;animation:{a("slam", t4 + 0.15)}">いい加減、覚えてください</div>')
    # 5: 次の会話は、まず本を読むところから
    t5, s5 = T(5, 0), S(5)
    st = "".join(f'<div class="card{" or" if k == 0 else ""}" style="left:{48 + k * 276}px;top:300px;width:252px;height:170px;opacity:0;animation:{a("up", t5 + 0.3 + k * 0.35)}">'
                 f'<small>{k + 1}</small><span style="font-size:46px">{nm}</span></div>' for k, nm in enumerate(["本を読む", "作る", "書き足す"]))
    h += win(t5, None, kick("次の会話は") + '<div class="msg">まず、本を読む<br>ところから</div>' + st)
    h += outro(T, OUTRO_K)   # 締め：サイトへの入口
    return h


def OVER(T):
    return stage_fx(T, fx=[dict(kind="speed", t=T(4, 0.15), d=0.9), dict(kind="shock", t=T(5, 0.3), d=1.6, c="#57B5F8")], shakes=[(T(4, 0.15), 0.5)])


FACE = [(-1, 0.0, 1.0, "smile"), (1, 0.0, 3.0, "trouble"), (3, 0.0, 3.4, "joy"), (4, 0.0, 2.0, "surprise"), (5, 0.0, 3.0, "joy"), ("end", 0.0, 3.0, "smile")]
POSE = [(-1, 0.0, 2), (1, 0.0, 2), (3, 2.8, 3), (4, 0.0, 2), (5, 0.4, 4)]
LEAN = []
INTRO = "drop"
MOVES = [(1, 0.5, "bow", 1.4), (3, 2.6, "jump", 1.0), (4, 0.2, "shake", 1.0), (5, 0.3, "hop", 1.2)]
SE = [(-1, 0.0, "se_rise", -9), (0, 1.2, "se_boot", -12), (0, 1.25, "se_pop", -12), (0, 1.6, "se_pop", -12), (0, 1.95, "se_pop", -12),
      (1, 0.8, "se_steam", -14), (2, 0.0, "se_whoosh", -12), (3, 0.0, "se_whoosh", -12), (3, 2.8, "se_ding", -9),
      (4, 0.15, "se_pechin", -6), (5, 0.0, "se_whoosh", -12)]
ENDING = dict(kind="fall", at=(5, 2.9))   # ハコブくんの元気な返事でエイイチがコケる
