Files
whale-town-front/tools/serve_web.sh
王浩 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

188 lines
5.0 KiB
Bash
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.
#!/bin/bash
# 鲸鱼镇 本地Web服务器 (Linux/macOS)
# 版本: 1.0.0
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 配置变量
BUILD_DIR="build/web"
PORT=8000
FALLBACK_PORT=8080
echo "========================================"
echo " 鲸鱼镇 本地Web服务器 v1.0"
echo "========================================"
echo
# 检查导出文件
echo -e "${BLUE}[检查]${NC} 验证Web导出文件..."
if [ ! -f "$BUILD_DIR/index.html" ]; then
echo -e "${RED}[错误]${NC} 未找到Web导出文件"
echo
echo "请先运行以下命令导出项目:"
echo " ./scripts/build_web.sh"
echo
echo "或在Godot编辑器中导出Web版本到: $BUILD_DIR/"
echo
exit 1
fi
# 检查必要文件
echo -e "${BLUE}[验证]${NC} 检查必要文件..."
REQUIRED_FILES="index.html index.js index.wasm index.pck"
MISSING_FILES=""
for file in $REQUIRED_FILES; do
if [ ! -f "$BUILD_DIR/$file" ]; then
MISSING_FILES="$MISSING_FILES $file"
fi
done
if [ -n "$MISSING_FILES" ]; then
echo -e "${RED}[错误]${NC} 缺少必要文件:$MISSING_FILES"
echo "请重新导出项目"
echo
exit 1
fi
# 检查Python
echo -e "${BLUE}[检查]${NC} 验证Python环境..."
if ! command -v python3 &> /dev/null && ! command -v python &> /dev/null; then
echo -e "${RED}[错误]${NC} 未找到Python"
echo
echo "请安装Python 3.x:"
echo " macOS: brew install python"
echo " Ubuntu: sudo apt install python3"
echo " 或访问: https://python.org/downloads"
echo
exit 1
fi
# 确定Python命令
PYTHON_CMD="python3"
if ! command -v python3 &> /dev/null; then
PYTHON_CMD="python"
fi
# 获取Python版本
PYTHON_VERSION=$($PYTHON_CMD --version 2>&1 | cut -d' ' -f2)
echo -e "${GREEN}[信息]${NC} Python版本: $PYTHON_VERSION"
# 显示文件信息
echo
echo -e "${GREEN}[信息]${NC} Web文件统计:"
TOTAL_SIZE=$(du -sb "$BUILD_DIR" | cut -f1)
TOTAL_MB=$((TOTAL_SIZE / 1024 / 1024))
for file in "$BUILD_DIR"/*; do
if [ -f "$file" ]; then
filename=$(basename "$file")
size=$(stat -f%z "$file" 2>/dev/null || stat -c%s "$file" 2>/dev/null)
size_mb=$((size / 1024 / 1024))
if [ $size_mb -gt 0 ]; then
echo " $filename: ${size_mb} MB"
else
size_kb=$((size / 1024))
echo " $filename: ${size_kb} KB"
fi
fi
done
echo " 总大小: ${TOTAL_MB} MB"
# 检查端口占用
echo
echo -e "${BLUE}[网络]${NC} 检查端口占用..."
if lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
echo -e "${YELLOW}[警告]${NC} 端口 $PORT 已被占用,尝试使用 $FALLBACK_PORT"
PORT=$FALLBACK_PORT
if lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
echo -e "${RED}[错误]${NC} 端口 $PORT 也被占用!"
echo "请手动指定端口: $PYTHON_CMD -m http.server [端口号]"
echo
exit 1
fi
fi
# 获取本机IP地址
LOCAL_IP=$(ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -1)
if [ -z "$LOCAL_IP" ]; then
LOCAL_IP=$(hostname -I | cut -d' ' -f1 2>/dev/null)
fi
if [ -z "$LOCAL_IP" ]; then
LOCAL_IP="localhost"
fi
# 显示启动信息
echo
echo -e "${GREEN}[启动]${NC} 启动HTTP服务器..."
echo " 端口: $PORT"
echo " 目录: $BUILD_DIR"
echo " Python: $PYTHON_VERSION"
echo
echo "========================================"
echo -e "${GREEN} 访问地址${NC}"
echo "========================================"
echo " 本地访问: http://localhost:$PORT"
echo " 局域网访问: http://$LOCAL_IP:$PORT"
echo
echo -e "${YELLOW}[控制]${NC} 服务器控制:"
echo " 停止服务器: Ctrl+C"
echo " 重启服务器: 关闭后重新运行脚本"
echo
echo -e "${BLUE}[调试]${NC} 调试工具:"
echo " 开发者工具: F12"
echo " 控制台日志: 查看浏览器Console"
echo " 网络请求: 查看Network标签"
echo
echo "========================================"
# 尝试自动打开浏览器
echo -e "${BLUE}[浏览器]${NC} 尝试打开默认浏览器..."
if command -v open &> /dev/null; then
# macOS
open "http://localhost:$PORT" 2>/dev/null
elif command -v xdg-open &> /dev/null; then
# Linux
xdg-open "http://localhost:$PORT" 2>/dev/null
else
echo -e "${YELLOW}[提示]${NC} 无法自动打开浏览器,请手动访问上述地址"
fi
echo
echo -e "${GREEN}[就绪]${NC} 服务器启动中..."
echo
# 切换到构建目录并启动服务器
cd "$BUILD_DIR"
# 创建简单的服务器日志
echo "[$(date)] 服务器启动 - 端口:$PORT" >> server.log
# 设置信号处理
trap 'echo -e "\n${YELLOW}[停止]${NC} 服务器已停止"; echo "[$(date)] 服务器停止" >> server.log; exit 0' INT
# 启动Python HTTP服务器
$PYTHON_CMD -m http.server $PORT
# 服务器停止后的清理
echo
echo -e "${YELLOW}[停止]${NC} 服务器已停止"
echo "[$(date)] 服务器停止" >> server.log
# 返回原目录
cd ../..
echo
echo -e "${GREEN}[完成]${NC} 感谢使用鲸鱼镇Web服务器"
echo