#!/bin/bash
# 安装自定义路径功能脚本

echo "=========================================="
echo "  AGV 自定义路径功能安装脚本"
echo "=========================================="

# 1. 检查必要文件
if [ ! -f "src/path_curve_custom.cpp" ]; then
    echo "错误: 找不到 src/path_curve_custom.cpp"
    exit 1
fi

# 2. 备份原始头文件
echo "备份原始头文件..."
cp include/path_curve.h include/path_curve.h.backup

# 3. 修改头文件
echo "更新头文件..."

# 添加 string 头文件
sed -i '5 a #include <string>' include/path_curve.h

# 在 setPathPoints 方法后添加新方法声明
sed -i '/void setPathPoints/a \
\
    /**\
     * @brief 从CSV文件加载路径点\
     * @param filename CSV文件路径\
     * @param has_header 是否包含表头（默认true）\
     * @return 是否加载成功\
     */\
    bool loadFromCSV(const std::string& filename, bool has_header = true);\
\
    /**\
     * @brief 将路径点保存到CSV文件\
     * @param filename CSV文件路径\
     * @return 是否保存成功\
     */\
    bool saveToCSV(const std::string& filename) const;\
\
    /**\
     * @brief 使用样条插值生成路径\
     * @param key_points 关键路径点\
     * @param num_points 生成的路径点总数\
     * @param tension 张力参数\
     */\
    void generateSpline(const std::vector<PathPoint>& key_points,\
                       int num_points = 100,\
                       double tension = 0.5);' include/path_curve.h

# 4. 修改 CMakeLists.txt
echo "更新 CMakeLists.txt..."
cp CMakeLists.txt CMakeLists.txt.backup

sed -i '/src\/path_curve.cpp/a \    src/path_curve_custom.cpp' CMakeLists.txt

# 5. 重新编译
echo "重新编译项目..."
mkdir -p build
cd build
cmake ..
cmake --build .

echo "=========================================="
echo "  安装完成！"
echo "=========================================="
echo "备份文件："
echo "  - include/path_curve.h.backup"
echo "  - CMakeLists.txt.backup"
echo ""
echo "使用指南: CUSTOM_PATH_GUIDE.md"
echo "示例文件: examples/custom_path.csv"
