Files
whale-town-front/tools/build_web.bat
王浩 0b533189ec refactor:重构项目架构为分层结构
## 🏗️ 主要变更

### 目录结构重构
- 将 core/ 迁移到 _Core/(框架层)
- 将 scenes/ 重构为 Scenes/(玩法层)和 UI/(界面层)
- 将 data/ 迁移到 Config/(配置层)
- 添加 Assets/ 资源层和 Utils/ 工具层
- 将 scripts/ 迁移到 tools/(开发工具)

### 架构分层
- **_Core/**: 框架层 - 全局单例和管理器
- **Scenes/**: 玩法层 - 游戏场景和实体
- **UI/**: 界面层 - HUD、窗口、对话系统
- **Assets/**: 资源层 - 精灵图、音频、字体
- **Config/**: 配置层 - 游戏配置和本地化
- **Utils/**: 工具层 - 通用辅助脚本

### 文件更新
- 更新 project.godot 中的所有路径引用
- 更新自动加载脚本路径
- 更新测试文件的引用路径
- 添加 REFACTORING.md 详细说明
- 添加 MIGRATION_COMPLETE.md 迁移完成标记
- 更新 README.md 反映新架构

### 设计原则
-  清晰的分层(框架/玩法/界面)
-  场景内聚(脚本紧邻场景文件)
-  组件化设计(可复用组件)
-  职责单一(每个目录职责明确)

## 📋 详细信息
查看 REFACTORING.md 了解完整的重构说明和迁移映射表

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 11:36:01 +08:00

235 lines
7.0 KiB
Batchfile
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@echo off
setlocal enabledelayedexpansion
echo ========================================
echo 鲸鱼镇 Web版本导出工具 v1.0
echo ========================================
echo.
REM 配置变量 - 请根据实际情况修改
set "PROJECT_NAME=whaleTown"
set "BUILD_DIR=build\web"
set "GODOT_PATH=D:\technology\biancheng\Godot\Godot_v4.5.1-stable_win64.exe"
set "EXPORT_PRESET=Web"
set "VERSION=1.0.0"
REM 颜色代码Windows 10+
set "RED=[91m"
set "GREEN=[92m"
set "YELLOW=[93m"
set "BLUE=[94m"
set "RESET=[0m"
REM 检查Godot是否存在
echo %BLUE%[检查]%RESET% 验证Godot安装...
if not exist "%GODOT_PATH%" (
echo %RED%[错误]%RESET% 未找到Godot可执行文件: %GODOT_PATH%
echo 请修改脚本中的GODOT_PATH变量或安装Godot 4.5+
echo 下载地址: https://godotengine.org/download
echo.
pause
exit /b 1
)
REM 检查项目文件
echo %BLUE%[检查]%RESET% 验证项目文件...
if not exist "project.godot" (
echo %RED%[错误]%RESET% 未找到project.godot文件
echo 请在项目根目录运行此脚本
echo.
pause
exit /b 1
)
REM 显示项目信息
echo %GREEN%[信息]%RESET% 项目信息:
echo 项目名称: %PROJECT_NAME%
echo 版本号: %VERSION%
echo Godot路径: %GODOT_PATH%
echo 导出预设: %EXPORT_PRESET%
echo 输出目录: %BUILD_DIR%
echo.
REM 创建构建目录结构
echo %BLUE%[构建]%RESET% 准备构建环境...
if not exist "build" mkdir "build"
if not exist "%BUILD_DIR%" mkdir "%BUILD_DIR%"
if not exist "scripts" mkdir "scripts"
REM 备份旧版本(如果存在)
if exist "%BUILD_DIR%\index.html" (
echo %YELLOW%[备份]%RESET% 备份旧版本...
set "BACKUP_DIR=build\backup\%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%"
set "BACKUP_DIR=!BACKUP_DIR: =0!"
mkdir "!BACKUP_DIR!" 2>nul
xcopy "%BUILD_DIR%\*" "!BACKUP_DIR%\" /Y /Q >nul 2>&1
echo 备份位置: !BACKUP_DIR!\
)
REM 清理旧文件
echo %BLUE%[清理]%RESET% 清理旧的导出文件...
if exist "%BUILD_DIR%\*" del /q "%BUILD_DIR%\*" >nul 2>&1
REM 检查导出预设
echo %BLUE%[验证]%RESET% 检查导出预设...
"%GODOT_PATH%" --headless --export-debug "%EXPORT_PRESET%" --check-only >nul 2>&1
if %ERRORLEVEL% neq 0 (
echo %RED%[错误]%RESET% 导出预设 "%EXPORT_PRESET%" 不存在或配置错误!
echo 请在Godot编辑器中创建Web导出预设
echo.
pause
exit /b 1
)
REM 导出项目
echo %GREEN%[导出]%RESET% 开始导出Web版本...
echo 目标文件: %BUILD_DIR%\index.html
echo 请稍候...
echo.
"%GODOT_PATH%" --headless --export-release "%EXPORT_PRESET%" "%BUILD_DIR%\index.html"
if %ERRORLEVEL% neq 0 (
echo %RED%[失败]%RESET% 导出失败!错误代码: %ERRORLEVEL%
echo.
echo 可能的原因:
echo 1. 导出模板未安装
echo 2. 项目配置错误
echo 3. 资源文件损坏
echo.
pause
exit /b %ERRORLEVEL%
)
REM 验证导出文件
echo %BLUE%[验证]%RESET% 验证导出文件...
set "REQUIRED_FILES=index.html index.js index.wasm index.pck"
set "MISSING_FILES="
for %%f in (%REQUIRED_FILES%) do (
if not exist "%BUILD_DIR%\%%f" (
set "MISSING_FILES=!MISSING_FILES! %%f"
)
)
if not "!MISSING_FILES!"=="" (
echo %RED%[错误]%RESET% 缺少必要文件:!MISSING_FILES!
echo 导出可能不完整请检查Godot配置
echo.
pause
exit /b 1
)
REM 复制额外资源
echo %BLUE%[复制]%RESET% 复制额外资源...
if exist "assets\web\favicon.ico" copy "assets\web\favicon.ico" "%BUILD_DIR%\" >nul 2>&1
if exist "assets\web\manifest.json" copy "assets\web\manifest.json" "%BUILD_DIR%\" >nul 2>&1
if exist "assets\web\service-worker.js" copy "assets\web\service-worker.js" "%BUILD_DIR%\" >nul 2>&1
if exist "assets\web\custom_shell.html" copy "assets\web\custom_shell.html" "%BUILD_DIR%\" >nul 2>&1
REM 生成部署信息
echo %BLUE%[生成]%RESET% 生成部署信息...
(
echo {
echo "project": "%PROJECT_NAME%",
echo "version": "%VERSION%",
echo "build_time": "%date% %time%",
echo "platform": "web",
echo "godot_version": "4.5",
echo "export_preset": "%EXPORT_PRESET%",
echo "build_machine": "%COMPUTERNAME%",
echo "build_user": "%USERNAME%"
echo }
) > "%BUILD_DIR%\deploy_info.json"
REM 生成.htaccess文件
echo %BLUE%[配置]%RESET% 生成Apache配置文件...
(
echo # 鲸鱼镇 Web版本 Apache配置
echo # 自动生成于 %date% %time%
echo.
echo # MIME类型配置
echo AddType application/wasm .wasm
echo AddType application/octet-stream .pck
echo AddType application/javascript .js
echo.
echo # 启用压缩
echo ^<IfModule mod_deflate.c^>
echo AddOutputFilterByType DEFLATE text/html text/css application/javascript application/wasm
echo AddOutputFilterByType DEFLATE application/json application/xml
echo ^</IfModule^>
echo.
echo # 缓存控制
echo ^<IfModule mod_expires.c^>
echo ExpiresActive On
echo ExpiresByType application/wasm "access plus 1 month"
echo ExpiresByType application/octet-stream "access plus 1 month"
echo ExpiresByType application/javascript "access plus 1 week"
echo ExpiresByType text/html "access plus 1 hour"
echo ^</IfModule^>
echo.
echo # CORS配置
echo ^<IfModule mod_headers.c^>
echo Header set Access-Control-Allow-Origin "*"
echo Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
echo Header set Access-Control-Allow-Headers "Content-Type, Authorization"
echo Header set Cross-Origin-Embedder-Policy "require-corp"
echo Header set Cross-Origin-Opener-Policy "same-origin"
echo ^</IfModule^>
) > "%BUILD_DIR%\.htaccess"
REM 计算文件大小
echo %BLUE%[统计]%RESET% 计算文件大小...
set "TOTAL_SIZE=0"
for %%f in ("%BUILD_DIR%\*") do (
set /a "TOTAL_SIZE+=%%~zf"
)
set /a "TOTAL_MB=TOTAL_SIZE/1024/1024"
REM 显示构建结果
echo.
echo ========================================
echo %GREEN% 导出成功!%RESET%
echo ========================================
echo.
echo %GREEN%[完成]%RESET% 构建统计:
echo 导出位置: %BUILD_DIR%\
echo 总文件大小: %TOTAL_MB% MB
echo 构建时间: %date% %time%
echo.
echo %BLUE%[文件]%RESET% 导出文件列表:
for %%f in ("%BUILD_DIR%\*") do (
set "size=%%~zf"
set /a "size_mb=!size!/1024/1024"
if !size_mb! gtr 0 (
echo %%~nxf: !size_mb! MB
) else (
set /a "size_kb=!size!/1024"
echo %%~nxf: !size_kb! KB
)
)
echo.
echo %YELLOW%[下一步]%RESET% 部署选项:
echo 1. 本地测试: scripts\serve_web.bat
echo 2. 上传到服务器: 将 %BUILD_DIR%\ 目录上传
echo 3. 查看文档: docs\web_deployment_guide.md
echo.
echo %GREEN%[提示]%RESET% 部署前请确保:
echo - 服务器支持WASM MIME类型
echo - 配置了正确的CORS头
echo - 启用了文件压缩
echo.
REM 询问是否启动本地服务器
set /p "START_SERVER=是否启动本地测试服务器?(y/N): "
if /i "!START_SERVER!"=="y" (
echo.
echo %GREEN%[启动]%RESET% 启动本地服务器...
call "scripts\serve_web.bat"
) else (
echo.
echo 构建完成!可以手动运行 scripts\serve_web.bat 进行测试
)
pause