#!/bin/bash

# 机械臂客户端启动脚本
# 包含虚拟环境激活和客户端启动

# 设置脚本目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 打印彩色消息
print_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

print_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

print_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 显示标题
echo "================================================"
echo "    🦾 机械臂客户端启动器"
echo "================================================"
echo ""

# 检查虚拟环境是否存在
if [ ! -d "venv" ]; then
    print_error "虚拟环境不存在，请先运行 ./start_service.sh 创建虚拟环境"
    exit 1
fi

# 激活虚拟环境
print_info "正在激活虚拟环境..."
source venv/bin/activate

if [ $? -eq 0 ]; then
    print_success "虚拟环境已激活"
else
    print_error "虚拟环境激活失败"
    exit 1
fi

# 检查必要文件是否存在
print_info "检查必要文件..."
if [ ! -f "src/robot_client.py" ]; then
    print_error "缺少必要文件: src/robot_client.py"
    exit 1
fi
print_success "所有必要文件存在"

# 解析命令行参数
SERVER="http://192.168.114.26:5000"
MOCK=""

while [[ $# -gt 0 ]]; do
    case $1 in
        --server)
            SERVER="$2"
            shift 2
            ;;
        --real)
            MOCK=""
            shift
            ;;
        --mock)
            MOCK="--mock"
            shift
            ;;
        -h|--help)
            echo "用法: $0 [选项]"
            echo ""
            echo "选项:"
            echo "  --server SERVER      服务器地址 (默认: http://localhost:5000)"
            echo "  --mock               使用模拟控制器 (默认)"
            echo "  --real               使用真实机械臂控制器"
            echo "  -h, --help           显示帮助信息"
            echo ""
            echo "示例:"
            echo "  $0                                    # 基本启动(模拟模式)"
            echo "  $0 --server http://192.168.1.100:5000 # 连接远程服务器"
            echo "  $0 --real                             # 真实机械臂模式"
            exit 0
            ;;
        *)
            print_error "未知参数: $1"
            echo "使用 $0 --help 查看帮助"
            exit 1
            ;;
    esac
done

# 显示启动信息
echo ""
print_info "启动配置:"
echo "  - 服务器地址: $SERVER"
if [ ! -z "$MOCK" ]; then
    echo "  - 控制模式: 模拟模式"
    print_warning "当前使用模拟控制器，不会控制真实机械臂"
else
    echo "  - 控制模式: 真实机械臂"
    print_warning "当前使用真实机械臂控制器"
fi
echo ""

print_info "按 Ctrl+C 停止客户端"
echo "================================================"
echo ""

# 切换到src目录
cd src

# 启动客户端
print_info "正在启动机械臂客户端..."
python3 robot_client.py --server "$SERVER" $MOCK