# LoveGameSystem **Repository Path**: GProReat_admin/love-game-system ## Basic Information - **Project Name**: LoveGameSystem - **Description**: 这是一个love game 管理系统,按照这个框架可以加载对应的项目。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-08 - **Last Updated**: 2026-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LoveGameSystem 🎮 基于 **Love2D 11.5 (LuaJIT)** 的游戏工具模块加载器。将多个独立的 Love2D 项目(地图编辑器、装备系统、背包系统等)以零侵入方式注册为模块,通过统一的侧边栏菜单进行切换和管理。 ## 演示 ![LoveGameSystem 演示](snapshot/1.gif) *左侧菜单栏 + 模块内容区域示意* ## 功能特性 ### 模块加载器 - 通过 `modules.lua` 注册任意 Love2D 项目为模块 - **零侵入**:不改原始 `main.lua`,通过 `module.lua` 包装一层就接入 - 按需加载/卸载,内存自动清理 - 异步加载动画(旋转粒子 + 最少 0.6 秒) ### 左侧菜单系统 - **分组过滤**:ComboBox 下拉选择(全部 / 游戏 / 软件) - **搜索过滤**:支持中英文搜索,匹配模块名称和描述 - **悬浮提示**:鼠标悬停时右侧弹出面板,显示模块详细信息 - **活动状态**:当前模块标记绿色圆点 ### 图形隔离 - 模块 `draw()` 包裹 `lg.push("all") / lg.pop()` - `lg.setScissor()` 裁剪,防止模块内容溢出到菜单区域 - 全局 `_sys_offset_x` 自动修正模块鼠标坐标 ### 错误处理 - 所有模块回调均用 `pcall` 包裹 - 模块崩溃不影响系统,屏幕底部显示红色错误信息 - 模块可定义 `cleanup()` 在卸载时清理资源 ### 多显示器支持 - 通过 LuaJIT FFI 调用 Win32 `GetWindowRect` 读取真实窗口坐标 - 多显示器下窗口切换位置正确,不回弹主屏 ## 快速开始 ### 环境要求 - Windows 7+ - Love2D 11.5 ([下载](https://love2d.org/)) ### 启动 ```batch # 方式一:直接运行 D:\softdir\love-11.5-win64\love.exe H:\lovegame\LoveGameSystem # 方式二:使用 start.bat cd H:\lovegame\LoveGameSystem start.bat ``` ### 操作 | 操作 | 说明 | |------|------| | 点击模块 | 加载并切换到目标模块 | | 分组下拉 | 筛选显示特定分组的模块 | | 搜索框 | 按名称或描述搜索模块 | | 悬停模块 | 显示模块名称、分组、描述、路径 | | B 键 | 显示/隐藏系统菜单 | | Esc | 菜单关闭搜索焦点 | ## 项目结构 ``` LoveGameSystem/ ├── main.lua # 系统内核:启动、事件路由、菜单渲染 ├── conf.lua # Love2D 配置(窗口标题/尺寸/控制台等) ├── modules.lua # 模块注册表 [{name, path, desc, group}] ├── start.bat # 启动脚本 ├── update.md # 更新日志 ├── README.md # 本文件 ├── snapshot/ # 演示截图 │ └── 1.gif └── .gitignore ``` ## 注册你自己的模块 在 `modules.lua` 中添加一条记录: ```lua { name = "我的模块", path = "H:/myproject/module.lua", desc = "模块功能描述", group = "游戏", -- 分组标签,用于过滤 } ``` 你的项目根目录需要有一个 `module.lua`,返回包含以下回调的表: ```lua return { load = function() end, -- 模块加载时调用 draw = function() end, -- 每帧渲染 update = function(dt) end, -- 每帧更新 mousepressed = function(x, y, button) end, mousereleased = function(x, y, button) end, mousemoved = function(x, y, dx, dy) end, keypressed = function(key, scancode, isrepeat) end, cleanup = function() end, -- 模块卸载时清理 } ``` ### 模块窗口配置 每个模块可以在其根目录放一个 `conf.lua`,定义窗口大小: ```lua function love.conf(t) t.window.width = 1920 t.window.height = 1080 end ``` 系统会在切换时自动读取并应用 `conf.lua` 中的窗口参数。 ## 内置模块 | 模块 | 分组 | 说明 | |------|------|------| | 地图编辑器 | 软件 | 拖拽放置地图物体的编辑器,支持刷子/擦除/矩形填充/缩放/平移 | | 装备系统 | 软件 | 刺客信条奥德赛装备管理系统,支持装备/铭刻/等级提升 | | 背包系统 | 游戏 | 背包与仓库物品管理系统,支持拖拽转移/堆叠/搜索 | ## 已知限制 - 切换模块时窗口尺寸变化会导致窗口闪跳一次(SDL 窗口重建的固有行为) - Love2D 11.5 基于 LuaJIT (Lua 5.1),需手动处理 UTF-8 中文 ## 许可 MIT