75 lines
2.7 KiB
Bash
75 lines
2.7 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# BT39 검증 — 로비 → 보스전 → 필드 이동(맵마다) → 보스전 → 로비 복귀를 돌며 화면 구성을 찍고 상태를 적는다.
|
||
|
|
# bash hud_tour.sh <꼬리표> [맵 이름 ...] 맵 이름을 주지 않으면 여섯 맵 모두
|
||
|
|
# Entry 씬에서 Play 를 띄우고, 끝나면 바로 끈다(내가 띄운 Play 를 남기지 않는다). 오류는 에디터 로그 기준으로 센다.
|
||
|
|
SP="C:/Users/sw/AppData/Local/Temp/claude/E--BurningTimes/3562a2c1-e88a-4143-b7ec-e74c317778d8/scratchpad"
|
||
|
|
source "$SP/bt.sh"
|
||
|
|
source "$SP/shot.sh"
|
||
|
|
export PYTHONIOENCODING=utf-8
|
||
|
|
TAG="${1:-v}"; shift
|
||
|
|
MAPS="$*"
|
||
|
|
[ -z "$MAPS" ] && MAPS="Graveyard RuinedKeep SpiderCave PlagueCatacomb HarborExecution ScorchedDesert"
|
||
|
|
# 필드마다 상대할 보스(전용 필드의 짝과 같은 테마)
|
||
|
|
boss_of() { case "$1" in Graveyard) echo R1;; RuinedKeep) echo R2;; SpiderCave) echo R3;; PlagueCatacomb) echo R4;; HarborExecution) echo R5;; ScorchedDesert) echo C1;; *) echo R1;; esac; }
|
||
|
|
|
||
|
|
# 옮겨 가기가 끝날 때까지 기다린다(최대 60초)
|
||
|
|
wait_travel() {
|
||
|
|
for k in $(seq 1 30); do
|
||
|
|
sleep 2
|
||
|
|
local s=$(ev travel state 2>&1 | head -1)
|
||
|
|
case "$s" in *"traveling=False"*"player=True"*) echo " 도착 ${k}회째: $(echo "$s" | cut -c1-150)"; return 0;; esac
|
||
|
|
done
|
||
|
|
echo " (주의) 옮겨 가기가 60초 안에 끝나지 않음: $s"; return 1
|
||
|
|
}
|
||
|
|
|
||
|
|
# 보스전에 들어가 화면을 찍고 나온다
|
||
|
|
boss_round() {
|
||
|
|
local name="$1" boss="$2"
|
||
|
|
echo " 보스전 입장 $boss: $(ev arena enter $boss | head -1)"
|
||
|
|
sleep 6
|
||
|
|
ev hud_probe | head -3
|
||
|
|
shot "hud_${name}_boss_${TAG}"
|
||
|
|
echo " 보스전 퇴장: $(ev arena exit | head -1)"
|
||
|
|
sleep 3
|
||
|
|
ev hud_probe | sed -n '3p'
|
||
|
|
}
|
||
|
|
|
||
|
|
st
|
||
|
|
python "$SP/logscan.py" mark
|
||
|
|
unity command clear_console --project-path "$P" --format json --no-banner >/dev/null 2>&1
|
||
|
|
unity command editor_play --project-path "$P" --format json --no-banner 2>&1 | grep -E '"success"' | head -1
|
||
|
|
for i in $(seq 1 40); do
|
||
|
|
sleep 3
|
||
|
|
r=$(ev lobby_ready 2>&1 | head -1)
|
||
|
|
case "$r" in *"scene=Lobby"*"player=True"*"config=True"*) echo "ready $i"; break;; esac
|
||
|
|
done
|
||
|
|
sleep 6
|
||
|
|
|
||
|
|
echo "== 로비(숲)"
|
||
|
|
ev hud_probe
|
||
|
|
shot "hud_Lobby_${TAG}"
|
||
|
|
boss_round Lobby R1
|
||
|
|
|
||
|
|
for m in $MAPS; do
|
||
|
|
echo "== $m"
|
||
|
|
echo " 이동: $(ev travel go $m | head -1 | cut -c1-160)"
|
||
|
|
wait_travel
|
||
|
|
sleep 4
|
||
|
|
ev hud_probe
|
||
|
|
shot "hud_${m}_${TAG}"
|
||
|
|
boss_round "$m" "$(boss_of $m)"
|
||
|
|
done
|
||
|
|
|
||
|
|
echo "== 로비로 복귀"
|
||
|
|
echo " 이동: $(ev travel go Lobby | head -1 | cut -c1-160)"
|
||
|
|
wait_travel
|
||
|
|
sleep 4
|
||
|
|
ev hud_probe
|
||
|
|
shot "hud_LobbyBack_${TAG}"
|
||
|
|
sleep 12
|
||
|
|
|
||
|
|
unity command editor_stop --project-path "$P" --format json --no-banner 2>&1 | grep -E '"success"' | head -1
|
||
|
|
sleep 5
|
||
|
|
st
|
||
|
|
python "$SP/logscan.py" scan "hud-tour-$TAG"
|