# -*- coding: utf-8 -*-
"""並行で作る（ショート専用・舞台型・2026-11-06）
エイイチの言葉: 動画を何本も並行して作ることが多くなったので、一覧で見て簡単に進めたい（2026-10-15）／ハコブくんの声のお知らせは、うるさくならない程度にし、止められるように（仕事のMTG中に喋られると困る）"""
from butai_parts import *
OUTRO_K = 6   # 締めの文の番号（narration.py の最後に足した文）

NAME, VER = "並行で作る", 3
HEAD = "何本も同時に<br>どこまで進んだ？"
T_ON = (0, 1.3)
VIDS = [("入口の待ちが減らない", "C"), ("AIあるある", "E"), ("研究のスキル一覧", "E"), ("現場で扱えるか", "C"), ("どこまでいじっていい", "C")]


def rows(t_in, step, t_turn=None, scatter=False):
    out = ""
    for k, (nm, who) in enumerate(VIDS):
        if scatter:
            pos = f"left:{[60, 330, 140, 420, 230][k]}px;top:{[110, 160, 270, 330, 420][k]}px;transform:rotate({[-6, 4, -3, 7, -5][k]}deg);width:420px;"
        else:
            pos = f"left:48px;top:{110 + k * 92}px;width:804px;"
        badge = ""
        if t_turn is not None:
            ei = who == "E"
            badge = (f'<div style="position:absolute;right:16px;top:12px;width:190px;height:56px;border-radius:8px;display:flex;align-items:center;justify-content:center;'
                     f'font-size:26px;font-weight:900;background:{FACE_2};color:{DIM};{"animation:" + a("on", t_turn + 0.2 * k, .25) if ei else ""}">'
                     f'{"エイイチの番" if ei else "Claude の番"}</div>')
        out += (f'<div class="card" style="{pos}height:80px;font-size:32px;justify-content:center;opacity:0;animation:{a("up", t_in + k * step)}">{nm}{badge}</div>')
    return out


def speaker(left, top, on=True):
    col = ORANGE if on else "#5C6678"
    return (f'<div style="position:absolute;left:{left}px;top:{top + 40}px;width:60px;height:80px;border-radius:8px;background:{col}"></div>'
            f'<div style="position:absolute;left:{left + 40}px;top:{top}px;width:0;height:0;border-top:80px solid transparent;border-bottom:80px solid transparent;border-right:90px solid {col}"></div>')


def scene(T, S):
    h = CSS
    # 0: どれがどこまでか分からない（カードがばらばら）
    h += win(T(0, 1.3), T(1, 0), kick("同時に作っている動画") + rows(T(0, 1.35), 0.15, scatter=True))
    # 1: 進み具合のページに会話ごとに書き込む（そろった一覧）
    t1 = T(1, 0)
    h += win(t1, T(2, 0), kick("進み具合のページ") + rows(t1 + 0.2, 0.18))
    # 2: いま誰の番か、ひと目で分かる
    t2 = T(2, 0)
    h += win(t2, T(3, 0), kick("いま誰の番？") + rows(t2 - 5, 0, t_turn=t2 + 0.3))
    # 3: エイイチさんの番になったら、僕の声でお知らせ
    t3 = T(3, 0)
    waves = "".join(f'<div style="position:absolute;left:{360 + k * 70}px;top:{300 - k * 40}px;width:{60 + k * 40}px;height:{140 + k * 80}px;border:12px solid {ORANGE};'
                    f'border-left:none;border-top-color:transparent;border-bottom-color:transparent;border-radius:0 50% 50% 0;opacity:0;animation:wv2 1s ease-out {t3 + 0.3 + k * 0.2:.3f}s infinite"></div>' for k in range(3))
    h += win(t3, T(4, 0), kick("お知らせ") + "<style>@keyframes wv2 { 0% { opacity:0; } 30% { opacity:1; } 100% { opacity:0; } }</style>"
             + speaker(200, 290) + waves
             + f'<div class="card or" style="left:480px;top:160px;width:370px;height:110px;font-size:36px;white-space:nowrap;align-items:center;opacity:0;animation:{a("pop", t3 + 0.6)}">エイイチの番です</div>')
    # 4: 会議中に喋られると困る
    t4 = T(4, 0)
    h += win(t4, T(5, 0), kick("でも") + speaker(200, 290, on=False)
             + f'<div class="stamp" style="left:420px;top:300px;font-size:70px;animation:{a("slam", t4 + 0.3)}">会議中</div>')
    # 5: うるさくならないように、控えめに（音量が下がる）
    t5, s5 = T(5, 0), S(5)
    h += win(t5, None, kick("音量") + speaker(120, 290, on=True)
             + f'<div class="card" style="left:300px;top:340px;width:552px;height:60px;padding:0"></div>'
             + f'<div style="position:absolute;left:300px;top:340px;width:552px;height:60px;border-radius:12px;background:{ORANGE};transform-origin:left;animation:{a("vol", t5 + 0.8, 1.2)}"></div>'
             + "<style>@keyframes vol { to { transform:scaleX(.3); } }</style>"
             + f'<div class="msg" style="left:300px;top:200px;font-size:50px;opacity:0;animation:{a("up", t5 + 1.6)}">控えめに</div>')
    h += outro(T, OUTRO_K)   # 締め：サイトへの入口
    return h


def OVER(T):
    return stage_fx(T, fx=[dict(kind="shock", t=T(3, 0.3), d=2.2, c="#E2683A")], shakes=[(T(4, 0.3), 0.4)])


FACE = [(-1, 0.0, 1.0, "smile"), (1, 0.0, 3.0, "joy"), (3, 0.0, 2.9, "joy"), (4, 0.0, 2.1, "surprise"), (5, 0.0, 3.3, "trouble"), ("end", 0.0, 3.0, "trouble")]
POSE = [(-1, 0.0, 3), (1, 0.0, 1), (2, 0.0, 2), (4, 0.0, 2), (5, 1.2, 4)]
LEAN = []
INTRO = "spin"
MOVES = [(1, 0.3, "dash", 1.0), (3, 0.2, "hop", 1.4), (4, 0.3, "back", 1.0), (5, 0.2, "bow", 1.6)]
SE = [(-1, 0.0, "se_spin", -10), (0, 1.3, "se_boot", -12), (1, 0.0, "se_whoosh", -12), (2, 0.0, "se_whoosh", -12),
      (2, 0.5, "se_ding", -12), (3, 0.0, "se_whoosh", -12), (3, 0.3, "se_chapter_glock", -10), (4, 0.3, "se_pechin", -8), (5, 0.0, "se_whoosh", -13)]
ENDING = dict(kind="none", at=(5, 2.6))
