#!/usr/bin/env bash
# ============================================================
# xx.sh — 以 RAMDISK 開種子 (絕不污染種子)
# 用法:  ./xx.sh HK      開 HK 種子
#        ./xx.sh US      開 US 種子
#        ./xx.sh HK save 把當前 RAM 內容存回 HK 種子 (要更新種子先用)
# ============================================================
set -uo pipefail

MARKET="${1:-}"
ACTION="${2:-}"

case "$MARKET" in
  HK|hk) SEED_DIR="/root/redroid_1hk" ;;
  US|us) SEED_DIR="/root/redroid_1us" ;;
  *) echo "用法: ./xx.sh <HK|US> [save]"; exit 1 ;;
esac

CN="redroid_1"
PORT="5555"
DEVICE="127.0.0.1:$PORT"
RAM_DIR="/dev/shm/${CN}_ram"      # 容器 /data (由種子複製而來)
TMP_DIR="/dev/shm/${CN}"          # 容器 /data/local/tmp

# ─────────────────────────────────────────────
# save 模式：把 RAM 存回種子 (先乾淨停機再存)
# ─────────────────────────────────────────────
if [ "$ACTION" = "save" ]; then
  echo "💾 [SAVE] 將 RAM 內容存回種子 $SEED_DIR ..."
  docker stop -t 20 "$CN" 2>/dev/null
  docker rm "$CN" 2>/dev/null
  rm -rf "$SEED_DIR"
  mkdir -p "$SEED_DIR"
  cp -a "$RAM_DIR"/. "$SEED_DIR"/
  echo "✅ 已存回種子。體積:"
  du -sh "$SEED_DIR"
  exit 0
fi

[ -d "$SEED_DIR" ] || { echo "❌ 找不到種子 $SEED_DIR"; exit 1; }

# 1. 清理背景進程
echo "🧹 1. 清理背景進程..."
pkill -9 x11vnc 2>/dev/null
pkill -9 scrcpy 2>/dev/null
pkill -9 openbox 2>/dev/null
pkill -9 Xvfb 2>/dev/null

# 2. 移除舊容器
echo "🗑️ 2. 移除舊容器..."
docker rm -f "$CN" 2>/dev/null
fuser -k ${PORT}/tcp 2>/dev/null

# 3. 種子 → RAMDISK (CoW 優先，種子本體零改動)
echo "📁 3. 複製種子 ($SEED_DIR → $RAM_DIR)..."
rm -rf "$RAM_DIR" "$TMP_DIR"
mkdir -p "$RAM_DIR" "$TMP_DIR"
chmod 777 "$RAM_DIR" "$TMP_DIR"
cp --reflink=auto -a "$SEED_DIR"/. "$RAM_DIR"/ 2>/dev/null || \
cp -a "$SEED_DIR"/. "$RAM_DIR"/
echo "   ✅ RAM copy 完成: $(du -sh $RAM_DIR | cut -f1)"

# 4. 啟動容器 (掛 RAM，不掛種子)
echo "🚀 4. 啟動容器 ($MARKET)..."
docker run -itd --privileged --name "$CN" -p ${PORT}:5555 \
    --dns 1.1.1.1 --dns 8.8.8.8 --shm-size=2g --memory=6g --memory-swap=6g --cpus=1 \
    --log-opt max-size=50m --log-opt max-file=3 \
    -v "$TMP_DIR":/data/local/tmp \
    -v "$RAM_DIR":/data \
    redroid/redroid:12.0.0_64only-latest \
    androidboot.redroid_width=480 androidboot.redroid_height=1280 androidboot.redroid_dpi=72 \
    androidboot.redroid_fps=30 androidboot.redroid_gpu_mode=guest androidboot.use_memfd=true \
    persist.sys.timezone=Asia/Hong_Kong persist.sys.locale=zh-HK debug.sf.nobootanimation=1 \
    ro.sys.fw.bg_apps_limit=10 dalvik.vm.heapstartsize=256m dalvik.vm.heapgrowthlimit=2048m \
    dalvik.vm.heapsize=4096m dalvik.vm.dex2oat-filter=speed dalvik.vm.image-dex2oat-filter=speed \
    dalvik.vm.dex2oat-threads=1

# 5. ADB 連線 + 效能 BUFF
echo "⚡ 5. 注入效能 BUFF..."
adb start-server
for i in $(seq 1 30); do
    adb connect $DEVICE >/dev/null 2>&1
    BOOT=$(adb -s $DEVICE shell getprop sys.boot_completed 2>/dev/null | tr -d '\r')
    [ "$BOOT" = "1" ] && break
    sleep 2
done
echo "   ✅ Android 已開機"

adb -s $DEVICE shell "settings put global window_animation_scale 0"
adb -s $DEVICE shell "settings put global transition_animation_scale 0"
adb -s $DEVICE shell "settings put global animator_duration_scale 0"
adb -s $DEVICE shell "settings put system sound_effects_enabled 0"
adb -s $DEVICE shell "settings put global low_battery_sound_timeout 0"
adb -s $DEVICE shell "settings put secure immersive_mode_confirmations 0"
adb -s $DEVICE shell "settings put global ble_scan_always_enabled 0"
adb -s $DEVICE shell "settings put global wifi_scan_always_enabled 0"
echo "   ✅ BUFF 完成"

# 6. Xvfb + openbox + scrcpy + VNC
echo "🖥️ 6. 啟動 VNC 觀看環境..."
nohup Xvfb :1 -screen 0 960x1280x24 -ac +extension GLX +render -noreset > /dev/null 2>&1 &
sleep 2
export DISPLAY=:1
nohup openbox > /dev/null 2>&1 &
sleep 1
export LIBGL_ALWAYS_SOFTWARE=1

nohup scrcpy -s $DEVICE \
    --bit-rate 2M --max-fps 15 \
    --window-x 0 --window-y 0 \
    --window-width 480 --window-height 1280 \
    --window-borderless > /dev/null 2>&1 &
sleep 2

nohup x11vnc -display :1 -nopw -listen 0.0.0.0 -rfbport 5901 -forever -shared > /dev/null 2>&1 &
iptables -I INPUT -p tcp --dport 5901 -j ACCEPT 2>/dev/null

echo ""
echo "🎉 完成！$MARKET 種子已在 RAMDISK 運行"
echo "   VNC:  <你的IP>:5901"
echo "   ⚠️ 所有改動只存在 RAM，重開即消失，種子 $SEED_DIR 保持乾淨"
echo "   💾 如想把改動存回種子: ./xx.sh $MARKET save"
