From 705ee8c3dbd35100469097259d8b5e902686ab0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A6=E5=90=9B?= <73606411+setube@users.noreply.github.com> Date: Thu, 11 Dec 2025 14:49:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=BB=93=E6=9E=84=E4=B8=8E=E6=A0=B8=E5=BF=83=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 引入项目基础目录结构,包含多语言支持、主要页面与组件、核心游戏逻辑、UI 组件库、加密与本地持久化、自动化 Docker 构建流程、GitHub issue 模板(中英文)、README(中英文)、LICENSE 及开发配置文件。实现 OGame 单机版主要功能模块,为后续开发和扩展奠定基础。 --- .github/ISSUE_TEMPLATE/BUG反馈.md | 31 + .github/ISSUE_TEMPLATE/bug-report.md | 31 + .../documentation-improvement.md | 19 + .github/ISSUE_TEMPLATE/feature-request.md | 19 + .github/ISSUE_TEMPLATE/feedback-suggestion.md | 19 + .github/ISSUE_TEMPLATE/功能请求.md | 19 + .github/ISSUE_TEMPLATE/反馈建议.md | 19 + .github/ISSUE_TEMPLATE/文档改进.md | 19 + .github/workflows/ogame-vue-ts.yml | 105 ++ .gitignore | 26 + .vscode/extensions.json | 3 + Dockerfile | 17 + LICENSE | 32 + README.md | 241 +++ README.zh-CN.md | 243 +++ components.json | 21 + docs/assets/AlertDialog-BbpHh-RO.js | 1 + docs/assets/BattleSimulatorView-DI2C9KJc.js | 1 + docs/assets/BuildingsView-B00w_iux.js | 1 + docs/assets/CardDescription-Cb9v68Xa.js | 1 + docs/assets/CardUnlockOverlay-tiSNfyF3.js | 2 + docs/assets/DefenseView-4OcM0vVE.js | 1 + docs/assets/FleetView-DY7yR25i.js | 1 + docs/assets/GalaxyView-C-Ue9wLo.js | 1 + docs/assets/MessagesView-sKxpYFTS.js | 1 + docs/assets/OfficersView-D9JTCZE2.js | 1 + docs/assets/OverviewView-BBQfV6K0.js | 1 + docs/assets/ResearchView-Do1WxfNH.js | 1 + docs/assets/SettingsView-IZn-5kW1.js | 1 + docs/assets/ShipyardView-BGb4XhA2.js | 1 + docs/assets/UnlockRequirement-DeOUxO_t.js | 1 + docs/assets/eye-BrZrKlSB.js | 1 + docs/assets/index-BXmZ_V9Y.css | 2 + docs/assets/index-BpOElaf9.js | 53 + docs/assets/logo-Cz0cNqhe.svg | 1 + docs/assets/shipValidation-BZIVAW1v.js | 1 + docs/assets/useGameConfig-DqswvIth.js | 1 + docs/index.html | 17 + docs/logo.svg | 1 + index.html | 20 + package.json | 48 + pnpm-lock.yaml | 1443 +++++++++++++++++ public/logo.svg | 1 + src/App.vue | 556 +++++++ src/assets/logo.svg | 1 + src/components/AlertDialog.vue | 51 + src/components/CardUnlockOverlay.vue | 77 + src/components/ConfirmDialog.vue | 51 + src/components/DetailDialog.vue | 84 + src/components/ResourceIcon.vue | 28 + src/components/UnlockRequirement.vue | 73 + .../detail-views/BuildingDetailView.vue | 195 +++ .../detail-views/DefenseDetailView.vue | 168 ++ .../detail-views/ShipDetailView.vue | 204 +++ .../detail-views/TechnologyDetailView.vue | 154 ++ .../ui/alert-dialog/AlertDialog.vue | 15 + .../ui/alert-dialog/AlertDialogAction.vue | 18 + .../ui/alert-dialog/AlertDialogCancel.vue | 18 + .../ui/alert-dialog/AlertDialogContent.vue | 39 + .../alert-dialog/AlertDialogDescription.vue | 21 + .../ui/alert-dialog/AlertDialogFooter.vue | 14 + .../ui/alert-dialog/AlertDialogHeader.vue | 14 + .../ui/alert-dialog/AlertDialogTitle.vue | 17 + .../ui/alert-dialog/AlertDialogTrigger.vue | 12 + src/components/ui/alert-dialog/index.ts | 9 + src/components/ui/badge/Badge.vue | 24 + src/components/ui/badge/index.ts | 23 + src/components/ui/button/Button.vue | 24 + src/components/ui/button/index.ts | 35 + src/components/ui/card/Card.vue | 14 + src/components/ui/card/CardAction.vue | 14 + src/components/ui/card/CardContent.vue | 14 + src/components/ui/card/CardDescription.vue | 14 + src/components/ui/card/CardFooter.vue | 14 + src/components/ui/card/CardHeader.vue | 22 + src/components/ui/card/CardTitle.vue | 14 + src/components/ui/card/index.ts | 7 + src/components/ui/dialog/Dialog.vue | 15 + src/components/ui/dialog/DialogClose.vue | 12 + src/components/ui/dialog/DialogContent.vue | 49 + .../ui/dialog/DialogDescription.vue | 19 + src/components/ui/dialog/DialogFooter.vue | 12 + src/components/ui/dialog/DialogHeader.vue | 14 + src/components/ui/dialog/DialogOverlay.vue | 26 + .../ui/dialog/DialogScrollContent.vue | 51 + src/components/ui/dialog/DialogTitle.vue | 19 + src/components/ui/dialog/DialogTrigger.vue | 12 + src/components/ui/dialog/index.ts | 10 + src/components/ui/input/Input.vue | 35 + src/components/ui/input/index.ts | 1 + src/components/ui/label/Label.vue | 26 + src/components/ui/label/index.ts | 1 + src/components/ui/popover/Popover.vue | 19 + src/components/ui/popover/PopoverAnchor.vue | 15 + src/components/ui/popover/PopoverContent.vue | 45 + src/components/ui/popover/PopoverTrigger.vue | 15 + src/components/ui/popover/index.ts | 4 + src/components/ui/progress/Progress.vue | 27 + src/components/ui/progress/index.ts | 1 + src/components/ui/select/Select.vue | 15 + src/components/ui/select/SelectContent.vue | 51 + src/components/ui/select/SelectGroup.vue | 12 + src/components/ui/select/SelectItem.vue | 39 + src/components/ui/select/SelectItemText.vue | 12 + src/components/ui/select/SelectLabel.vue | 14 + .../ui/select/SelectScrollDownButton.vue | 26 + .../ui/select/SelectScrollUpButton.vue | 26 + src/components/ui/select/SelectSeparator.vue | 19 + src/components/ui/select/SelectTrigger.vue | 34 + src/components/ui/select/SelectValue.vue | 12 + src/components/ui/select/index.ts | 11 + src/components/ui/sonner/Sonner.vue | 42 + src/components/ui/sonner/index.ts | 1 + src/components/ui/table/Table.vue | 16 + src/components/ui/table/TableBody.vue | 14 + src/components/ui/table/TableCaption.vue | 14 + src/components/ui/table/TableCell.vue | 17 + src/components/ui/table/TableEmpty.vue | 29 + src/components/ui/table/TableFooter.vue | 14 + src/components/ui/table/TableHead.vue | 22 + src/components/ui/table/TableHeader.vue | 14 + src/components/ui/table/TableRow.vue | 14 + src/components/ui/table/index.ts | 9 + src/components/ui/table/utils.ts | 8 + src/composables/useGameConfig.ts | 173 ++ src/composables/useI18n.ts | 38 + src/composables/useTheme.ts | 49 + src/config/gameConfig.ts | 570 +++++++ src/env.d.ts | 7 + src/lib/utils.ts | 7 + src/locales/de.ts | 536 ++++++ src/locales/en.ts | 533 ++++++ src/locales/index.ts | 53 + src/locales/ja.ts | 531 ++++++ src/locales/ko.ts | 532 ++++++ src/locales/ru.ts | 536 ++++++ src/locales/zh-CN.ts | 531 ++++++ src/locales/zh-TW.ts | 531 ++++++ src/logic/battleLogic.ts | 353 ++++ src/logic/buildingLogic.ts | 194 +++ src/logic/buildingValidation.ts | 161 ++ src/logic/fleetLogic.ts | 374 +++++ src/logic/gameLogic.ts | 132 ++ src/logic/moonLogic.ts | 111 ++ src/logic/moonValidation.ts | 58 + src/logic/officerLogic.ts | 96 ++ src/logic/planetLogic.ts | 193 +++ src/logic/pointsLogic.ts | 137 ++ src/logic/publicLogic.ts | 102 ++ src/logic/researchLogic.ts | 96 ++ src/logic/researchValidation.ts | 81 + src/logic/resourceLogic.ts | 161 ++ src/logic/shipLogic.ts | 231 +++ src/logic/shipValidation.ts | 168 ++ src/main.ts | 16 + src/router/index.ts | 20 + src/stores/detailDialogStore.ts | 52 + src/stores/gameStore.ts | 47 + src/style.css | 193 +++ src/types/game.ts | 340 ++++ src/utils/battleSimulator.ts | 447 +++++ src/utils/crypto.ts | 25 + src/utils/format.ts | 71 + src/views/BattleSimulatorView.vue | 569 +++++++ src/views/BuildingsView.vue | 254 +++ src/views/DefenseView.vue | 263 +++ src/views/FleetView.vue | 569 +++++++ src/views/GalaxyView.vue | 264 +++ src/views/MessagesView.vue | 252 +++ src/views/OfficersView.vue | 269 +++ src/views/OverviewView.vue | 166 ++ src/views/ResearchView.vue | 161 ++ src/views/SettingsView.vue | 281 ++++ src/views/ShipyardView.vue | 239 +++ tsconfig.app.json | 18 + tsconfig.json | 10 + tsconfig.node.json | 26 + vite.config.ts | 11 + 178 files changed, 17258 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/BUG反馈.md create mode 100644 .github/ISSUE_TEMPLATE/bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/documentation-improvement.md create mode 100644 .github/ISSUE_TEMPLATE/feature-request.md create mode 100644 .github/ISSUE_TEMPLATE/feedback-suggestion.md create mode 100644 .github/ISSUE_TEMPLATE/功能请求.md create mode 100644 .github/ISSUE_TEMPLATE/反馈建议.md create mode 100644 .github/ISSUE_TEMPLATE/文档改进.md create mode 100644 .github/workflows/ogame-vue-ts.yml create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 README.md create mode 100644 README.zh-CN.md create mode 100644 components.json create mode 100644 docs/assets/AlertDialog-BbpHh-RO.js create mode 100644 docs/assets/BattleSimulatorView-DI2C9KJc.js create mode 100644 docs/assets/BuildingsView-B00w_iux.js create mode 100644 docs/assets/CardDescription-Cb9v68Xa.js create mode 100644 docs/assets/CardUnlockOverlay-tiSNfyF3.js create mode 100644 docs/assets/DefenseView-4OcM0vVE.js create mode 100644 docs/assets/FleetView-DY7yR25i.js create mode 100644 docs/assets/GalaxyView-C-Ue9wLo.js create mode 100644 docs/assets/MessagesView-sKxpYFTS.js create mode 100644 docs/assets/OfficersView-D9JTCZE2.js create mode 100644 docs/assets/OverviewView-BBQfV6K0.js create mode 100644 docs/assets/ResearchView-Do1WxfNH.js create mode 100644 docs/assets/SettingsView-IZn-5kW1.js create mode 100644 docs/assets/ShipyardView-BGb4XhA2.js create mode 100644 docs/assets/UnlockRequirement-DeOUxO_t.js create mode 100644 docs/assets/eye-BrZrKlSB.js create mode 100644 docs/assets/index-BXmZ_V9Y.css create mode 100644 docs/assets/index-BpOElaf9.js create mode 100644 docs/assets/logo-Cz0cNqhe.svg create mode 100644 docs/assets/shipValidation-BZIVAW1v.js create mode 100644 docs/assets/useGameConfig-DqswvIth.js create mode 100644 docs/index.html create mode 100644 docs/logo.svg create mode 100644 index.html create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 public/logo.svg create mode 100644 src/App.vue create mode 100644 src/assets/logo.svg create mode 100644 src/components/AlertDialog.vue create mode 100644 src/components/CardUnlockOverlay.vue create mode 100644 src/components/ConfirmDialog.vue create mode 100644 src/components/DetailDialog.vue create mode 100644 src/components/ResourceIcon.vue create mode 100644 src/components/UnlockRequirement.vue create mode 100644 src/components/detail-views/BuildingDetailView.vue create mode 100644 src/components/detail-views/DefenseDetailView.vue create mode 100644 src/components/detail-views/ShipDetailView.vue create mode 100644 src/components/detail-views/TechnologyDetailView.vue create mode 100644 src/components/ui/alert-dialog/AlertDialog.vue create mode 100644 src/components/ui/alert-dialog/AlertDialogAction.vue create mode 100644 src/components/ui/alert-dialog/AlertDialogCancel.vue create mode 100644 src/components/ui/alert-dialog/AlertDialogContent.vue create mode 100644 src/components/ui/alert-dialog/AlertDialogDescription.vue create mode 100644 src/components/ui/alert-dialog/AlertDialogFooter.vue create mode 100644 src/components/ui/alert-dialog/AlertDialogHeader.vue create mode 100644 src/components/ui/alert-dialog/AlertDialogTitle.vue create mode 100644 src/components/ui/alert-dialog/AlertDialogTrigger.vue create mode 100644 src/components/ui/alert-dialog/index.ts create mode 100644 src/components/ui/badge/Badge.vue create mode 100644 src/components/ui/badge/index.ts create mode 100644 src/components/ui/button/Button.vue create mode 100644 src/components/ui/button/index.ts create mode 100644 src/components/ui/card/Card.vue create mode 100644 src/components/ui/card/CardAction.vue create mode 100644 src/components/ui/card/CardContent.vue create mode 100644 src/components/ui/card/CardDescription.vue create mode 100644 src/components/ui/card/CardFooter.vue create mode 100644 src/components/ui/card/CardHeader.vue create mode 100644 src/components/ui/card/CardTitle.vue create mode 100644 src/components/ui/card/index.ts create mode 100644 src/components/ui/dialog/Dialog.vue create mode 100644 src/components/ui/dialog/DialogClose.vue create mode 100644 src/components/ui/dialog/DialogContent.vue create mode 100644 src/components/ui/dialog/DialogDescription.vue create mode 100644 src/components/ui/dialog/DialogFooter.vue create mode 100644 src/components/ui/dialog/DialogHeader.vue create mode 100644 src/components/ui/dialog/DialogOverlay.vue create mode 100644 src/components/ui/dialog/DialogScrollContent.vue create mode 100644 src/components/ui/dialog/DialogTitle.vue create mode 100644 src/components/ui/dialog/DialogTrigger.vue create mode 100644 src/components/ui/dialog/index.ts create mode 100644 src/components/ui/input/Input.vue create mode 100644 src/components/ui/input/index.ts create mode 100644 src/components/ui/label/Label.vue create mode 100644 src/components/ui/label/index.ts create mode 100644 src/components/ui/popover/Popover.vue create mode 100644 src/components/ui/popover/PopoverAnchor.vue create mode 100644 src/components/ui/popover/PopoverContent.vue create mode 100644 src/components/ui/popover/PopoverTrigger.vue create mode 100644 src/components/ui/popover/index.ts create mode 100644 src/components/ui/progress/Progress.vue create mode 100644 src/components/ui/progress/index.ts create mode 100644 src/components/ui/select/Select.vue create mode 100644 src/components/ui/select/SelectContent.vue create mode 100644 src/components/ui/select/SelectGroup.vue create mode 100644 src/components/ui/select/SelectItem.vue create mode 100644 src/components/ui/select/SelectItemText.vue create mode 100644 src/components/ui/select/SelectLabel.vue create mode 100644 src/components/ui/select/SelectScrollDownButton.vue create mode 100644 src/components/ui/select/SelectScrollUpButton.vue create mode 100644 src/components/ui/select/SelectSeparator.vue create mode 100644 src/components/ui/select/SelectTrigger.vue create mode 100644 src/components/ui/select/SelectValue.vue create mode 100644 src/components/ui/select/index.ts create mode 100644 src/components/ui/sonner/Sonner.vue create mode 100644 src/components/ui/sonner/index.ts create mode 100644 src/components/ui/table/Table.vue create mode 100644 src/components/ui/table/TableBody.vue create mode 100644 src/components/ui/table/TableCaption.vue create mode 100644 src/components/ui/table/TableCell.vue create mode 100644 src/components/ui/table/TableEmpty.vue create mode 100644 src/components/ui/table/TableFooter.vue create mode 100644 src/components/ui/table/TableHead.vue create mode 100644 src/components/ui/table/TableHeader.vue create mode 100644 src/components/ui/table/TableRow.vue create mode 100644 src/components/ui/table/index.ts create mode 100644 src/components/ui/table/utils.ts create mode 100644 src/composables/useGameConfig.ts create mode 100644 src/composables/useI18n.ts create mode 100644 src/composables/useTheme.ts create mode 100644 src/config/gameConfig.ts create mode 100644 src/env.d.ts create mode 100644 src/lib/utils.ts create mode 100644 src/locales/de.ts create mode 100644 src/locales/en.ts create mode 100644 src/locales/index.ts create mode 100644 src/locales/ja.ts create mode 100644 src/locales/ko.ts create mode 100644 src/locales/ru.ts create mode 100644 src/locales/zh-CN.ts create mode 100644 src/locales/zh-TW.ts create mode 100644 src/logic/battleLogic.ts create mode 100644 src/logic/buildingLogic.ts create mode 100644 src/logic/buildingValidation.ts create mode 100644 src/logic/fleetLogic.ts create mode 100644 src/logic/gameLogic.ts create mode 100644 src/logic/moonLogic.ts create mode 100644 src/logic/moonValidation.ts create mode 100644 src/logic/officerLogic.ts create mode 100644 src/logic/planetLogic.ts create mode 100644 src/logic/pointsLogic.ts create mode 100644 src/logic/publicLogic.ts create mode 100644 src/logic/researchLogic.ts create mode 100644 src/logic/researchValidation.ts create mode 100644 src/logic/resourceLogic.ts create mode 100644 src/logic/shipLogic.ts create mode 100644 src/logic/shipValidation.ts create mode 100644 src/main.ts create mode 100644 src/router/index.ts create mode 100644 src/stores/detailDialogStore.ts create mode 100644 src/stores/gameStore.ts create mode 100644 src/style.css create mode 100644 src/types/game.ts create mode 100644 src/utils/battleSimulator.ts create mode 100644 src/utils/crypto.ts create mode 100644 src/utils/format.ts create mode 100644 src/views/BattleSimulatorView.vue create mode 100644 src/views/BuildingsView.vue create mode 100644 src/views/DefenseView.vue create mode 100644 src/views/FleetView.vue create mode 100644 src/views/GalaxyView.vue create mode 100644 src/views/MessagesView.vue create mode 100644 src/views/OfficersView.vue create mode 100644 src/views/OverviewView.vue create mode 100644 src/views/ResearchView.vue create mode 100644 src/views/SettingsView.vue create mode 100644 src/views/ShipyardView.vue create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.github/ISSUE_TEMPLATE/BUG反馈.md b/.github/ISSUE_TEMPLATE/BUG反馈.md new file mode 100644 index 0000000..217e6f5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/BUG反馈.md @@ -0,0 +1,31 @@ +--- +name: BUG反馈 +about: 报告项目中发现的缺陷或问题 +title: '[BUG] 简要描述问题' +labels: 'bug' +assignees: '' +--- + +**问题描述** +清晰准确地描述遇到的问题 + +**重现步骤** + +1. 第一步操作 +2. 第二步操作 +3. 出现问题的操作 + +**期望行为** +描述您认为正确的行为应该是怎样的 + +**实际行为** +描述实际发生的错误行为 + +**环境信息** + +- 操作系统: +- 浏览器(如适用): +- 项目版本: + +**截图或日志(可选)** +如果有错误截图或日志,请提供 diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 0000000..bc8916a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,31 @@ +--- +name: Bug Report +about: Report defects or issues found in the project +title: '[BUG] Brief description of the issue' +labels: 'bug' +assignees: '' +--- + +**Issue Description** +Clearly and accurately describe the problem you encountered + +**Steps to Reproduce** + +1. First operation step +2. Second operation step +3. Operation where the issue occurs + +**Expected Behavior** +Describe what you think the correct behavior should be + +**Actual Behavior** +Describe the actual erroneous behavior that occurred + +**Environment Information** + +- Operating System: +- Browser (if applicable): +- Project Version: + +**Screenshots or Logs (optional)** +If you have error screenshots or logs, please provide them diff --git a/.github/ISSUE_TEMPLATE/documentation-improvement.md b/.github/ISSUE_TEMPLATE/documentation-improvement.md new file mode 100644 index 0000000..68913de --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation-improvement.md @@ -0,0 +1,19 @@ +--- +name: Documentation Improvement +about: Report documentation issues or suggest improvements +title: '[Docs] Brief description of the issue' +labels: 'documentation' +assignees: '' +--- + +**Documentation Location** +Point out the documentation path or URL that needs improvement + +**Current Issue** +Describe the current problem or unclear areas in the documentation + +**Improvement Suggestions** +Provide specific improvement suggestions + +**Additional Information (optional)** +Any other information that helps improve the documentation diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 0000000..2b12919 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,19 @@ +--- +name: Feature Request +about: Request to add new features or improve existing ones +title: '[Feature] Brief description of the feature' +labels: 'enhancement' +assignees: '' +--- + +**Feature Description** +Clearly describe the feature you would like to see added + +**Feature Background** +Explain why this feature is needed and what problem it solves + +**Suggested Implementation (optional)** +If you have specific implementation ideas, you can describe them here + +**Additional Information** +Any other information that helps understand this feature diff --git a/.github/ISSUE_TEMPLATE/feedback-suggestion.md b/.github/ISSUE_TEMPLATE/feedback-suggestion.md new file mode 100644 index 0000000..6d6fa7f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feedback-suggestion.md @@ -0,0 +1,19 @@ +--- +name: Feedback & Suggestion +about: Propose feature suggestions or improvements for this project +title: '[Suggestion] Brief description of your suggestion' +labels: 'enhancement' +assignees: '' +--- + +**What is your suggestion?** +Please clearly describe the feature or improvement you would like to see + +**Why is this feature/improvement needed?** +Explain what problem this suggestion solves or what value it brings + +**Your expected implementation (optional)** +If you have specific implementation ideas, you can describe them here + +**Additional information (optional)** +Any other information that helps understand this suggestion diff --git a/.github/ISSUE_TEMPLATE/功能请求.md b/.github/ISSUE_TEMPLATE/功能请求.md new file mode 100644 index 0000000..ea39f99 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/功能请求.md @@ -0,0 +1,19 @@ +--- +name: 功能请求 +about: 请求添加新功能或改进现有功能 +title: '[功能] 简要描述功能' +labels: 'enhancement' +assignees: '' +--- + +**功能描述** +清晰描述您希望添加的功能 + +**功能背景** +说明为什么需要这个功能,它能解决什么问题 + +**建议实现方案(可选)** +如果有具体的实现想法,可以在这里描述 + +**附加信息** +任何其他有助于理解这个功能的信息 diff --git a/.github/ISSUE_TEMPLATE/反馈建议.md b/.github/ISSUE_TEMPLATE/反馈建议.md new file mode 100644 index 0000000..493ee03 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/反馈建议.md @@ -0,0 +1,19 @@ +--- +name: 反馈建议 +about: 为这个项目提出功能建议或改进意见 +title: '[建议] 简要描述您的建议' +labels: 'enhancement' +assignees: '' +--- + +**您的建议是什么?** +请清晰描述您希望添加的功能或改进点 + +**为什么需要这个功能/改进?** +说明这个建议会解决什么问题或带来什么价值 + +**您期望的实现方式(可选)** +如果有具体的实现想法,可以在这里描述 + +**附加信息(可选)** +任何其他有助于理解这个建议的信息 diff --git a/.github/ISSUE_TEMPLATE/文档改进.md b/.github/ISSUE_TEMPLATE/文档改进.md new file mode 100644 index 0000000..b89f864 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/文档改进.md @@ -0,0 +1,19 @@ +--- +name: 文档改进 +about: 报告文档问题或建议改进 +title: '[文档] 简要描述问题' +labels: 'documentation' +assignees: '' +--- + +**文档位置** +指出需要改进的文档路径或 URL + +**当前问题** +描述当前文档存在的问题或不清晰的地方 + +**改进建议** +提出具体的改进建议 + +**附加信息(可选)** +任何其他有助于改进文档的信息 diff --git a/.github/workflows/ogame-vue-ts.yml b/.github/workflows/ogame-vue-ts.yml new file mode 100644 index 0000000..60b5022 --- /dev/null +++ b/.github/workflows/ogame-vue-ts.yml @@ -0,0 +1,105 @@ +name: 自动化创建Docker镜像 + +on: + push: + branches: + - main + +jobs: + build-amd64: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: 检查代码 + uses: actions/checkout@v2 + + - name: 登录 GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GHCR_TOKEN }} + + - name: 登录 Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: 构建并推送 amd64 Docker镜像 + uses: docker/build-push-action@v3 + with: + context: . + platforms: linux/amd64 + push: true + tags: | + ghcr.io/${{ github.repository_owner }}/blist:amd64 + ${{ secrets.DOCKERHUB_USERNAME }}/blist:amd64 + + build-arm64: + runs-on: ubuntu-22.04-arm + permissions: + contents: read + packages: write + steps: + - name: 检查代码 + uses: actions/checkout@v2 + + - name: 登录 GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GHCR_TOKEN }} + + - name: 登录 Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: 构建并推送 arm64 Docker镜像 + uses: docker/build-push-action@v3 + with: + context: . + platforms: linux/arm64 + push: true + tags: | + ghcr.io/${{ github.repository_owner }}/blist:arm64 + ${{ secrets.DOCKERHUB_USERNAME }}/blist:arm64 + + create-manifest: + needs: [build-amd64, build-arm64] + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: 登录 GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GHCR_TOKEN }} + + - name: 登录 Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: 创建并推送多架构清单 + run: | + # GitHub Container Registry + docker manifest create ghcr.io/${{ github.repository_owner }}/blist:latest \ + ghcr.io/${{ github.repository_owner }}/blist:amd64 \ + ghcr.io/${{ github.repository_owner }}/blist:arm64 + docker manifest push ghcr.io/${{ github.repository_owner }}/blist:latest + + # Docker Hub + docker manifest create ${{ secrets.DOCKERHUB_USERNAME }}/blist:latest \ + ${{ secrets.DOCKERHUB_USERNAME }}/blist:amd64 \ + ${{ secrets.DOCKERHUB_USERNAME }}/blist:arm64 + docker manifest push ${{ secrets.DOCKERHUB_USERNAME }}/blist:latest \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..73f996e --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* +CLAUDE.md + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.claude/* +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..a7cea0b --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6ec9e2a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM node:latest + +RUN mkdir -p /workspace + +WORKDIR /workspace + +RUN npm config set registry https://registry.npmmirror.com + +RUN cd /workspace + +RUN git clone https://github.com/setube/ogame-vue-ts.git + +RUN mv ./ogame-vue-ts/* . ; rm -rf ./ogame-vue-ts/ + +RUN npm install -g pnpm ; pnpm install ; npx vite build + +CMD ["npx", "vite", "preview", "--host", "0.0.0.0", "--port", "25121"] \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..bf4a0a1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,32 @@ +Creative Commons Attribution-NonCommercial 4.0 International Public License + +This work is licensed under the Creative Commons Attribution-NonCommercial 4.0 +International Public License. To view a copy of this license, visit +https://creativecommons.org/licenses/by-nc/4.0/legalcode. + +You are free to: +Share — copy and redistribute the material in any medium or format +Adapt — remix, transform, and build upon the material + +Under the following terms: +Attribution — You must give appropriate credit, provide a link to the license, +and indicate if changes were made. You may do so in any reasonable manner, +but not in any way that suggests the licensor endorses you or your use. + +NonCommercial — You may not use the material for commercial purposes. + +No additional restrictions — You may not apply legal terms or technological +measures that legally restrict others from doing anything the license permits. + +Notice: +This work is the original creation of Jun Qian (谦君). Source code available at: +https://github.com/setube/ogame-vue-ts +This license does not constitute a waiver of any copyright or related rights. + +When you share adaptations of this work, you must: +- Provide prominent attribution to the original author +- Retain this license document +- Clearly indicate modifications made and dates +- Distribute under the same CC BY-NC 4.0 license + +© 2025 Jun Qian - All rights reserved (except those granted by this license) \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..a55c80d --- /dev/null +++ b/README.md @@ -0,0 +1,241 @@ +