├── .creator └── asset-template │ └── typescript │ └── Custom Script Template Help Documentation.url ├── .gitignore ├── LICENSE ├── README.md ├── assets ├── libs.meta ├── main.scene ├── main.scene.meta ├── resources.meta ├── resources │ ├── audios.meta │ ├── audios │ │ ├── Gravel.mp3 │ │ ├── Gravel.mp3.meta │ │ ├── nocturne.mp3 │ │ └── nocturne.mp3.meta │ ├── avatar.meta │ ├── common.meta │ ├── common │ │ ├── anim.meta │ │ ├── anim │ │ │ ├── button_scale_end.anim │ │ │ ├── button_scale_end.anim.meta │ │ │ ├── button_scale_start.anim │ │ │ ├── button_scale_start.anim.meta │ │ │ ├── notify.anim │ │ │ └── notify.anim.meta │ │ ├── prefab.meta │ │ ├── prefab │ │ │ ├── alert.prefab │ │ │ ├── alert.prefab.meta │ │ │ ├── confirm.prefab │ │ │ ├── confirm.prefab.meta │ │ │ ├── mask.prefab │ │ │ ├── mask.prefab.meta │ │ │ ├── notify.prefab │ │ │ ├── notify.prefab.meta │ │ │ ├── wait.prefab │ │ │ └── wait.prefab.meta │ │ ├── texture.meta │ │ └── texture │ │ │ ├── auto-atlas.pac │ │ │ ├── auto-atlas.pac.meta │ │ │ ├── bg_window.png │ │ │ ├── bg_window.png.meta │ │ │ ├── btn_ok.png │ │ │ ├── btn_ok.png.meta │ │ │ ├── loading.png │ │ │ ├── loading.png.meta │ │ │ ├── role.meta │ │ │ ├── toast.png │ │ │ └── toast.png.meta │ ├── config.json │ ├── config.json.meta │ ├── config.meta │ ├── config │ │ ├── game.meta │ │ └── game │ │ │ ├── Language.json │ │ │ ├── Language.json.meta │ │ │ ├── NetCode.json │ │ │ ├── NetCode.json.meta │ │ │ ├── PromptWindow.json │ │ │ ├── PromptWindow.json.meta │ │ │ ├── RoleJob.json │ │ │ ├── RoleJob.json.meta │ │ │ ├── RoleLevelUp.json │ │ │ └── RoleLevelUp.json.meta │ ├── content.meta │ ├── content │ │ ├── role.meta │ │ └── role │ │ │ ├── model1.atlas │ │ │ ├── model1.atlas.meta │ │ │ ├── model1.json │ │ │ ├── model1.json.meta │ │ │ ├── model1.png │ │ │ └── model1.png.meta │ ├── game.meta │ ├── game │ │ ├── animator.meta │ │ ├── battle.meta │ │ ├── battle │ │ │ ├── animation.anim.meta │ │ │ ├── animator.meta │ │ │ ├── animator │ │ │ │ ├── role.json │ │ │ │ ├── role.json.meta │ │ │ │ ├── role_edit.json │ │ │ │ └── role_edit.json.meta │ │ │ ├── role.prefab │ │ │ └── role.prefab.meta │ │ ├── product.meta │ │ └── product │ │ │ ├── oops-guide.png │ │ │ ├── oops-guide.png.meta │ │ │ ├── oops-hot-update.png │ │ │ ├── oops-hot-update.png.meta │ │ │ ├── oops-moba.png │ │ │ ├── oops-moba.png.meta │ │ │ ├── oops-net.png │ │ │ ├── oops-net.png.meta │ │ │ ├── oops-rpg-player2d.png │ │ │ ├── oops-rpg-player2d.png.meta │ │ │ ├── oops-rpg-player3d.png │ │ │ ├── oops-rpg-player3d.png.meta │ │ │ ├── oops-tiledmap.png │ │ │ ├── oops-tiledmap.png.meta │ │ │ ├── oops-turn-battle.png │ │ │ ├── oops-turn-battle.png.meta │ │ │ ├── oops-tutorial.png │ │ │ ├── oops-tutorial.png.meta │ │ │ ├── oops-war-chess.png │ │ │ └── oops-war-chess.png.meta │ ├── gui.meta │ ├── gui │ │ ├── prefab.meta │ │ └── prefab │ │ │ ├── demo.prefab │ │ │ ├── demo.prefab.meta │ │ │ ├── role_info.prefab │ │ │ ├── role_info.prefab.meta │ │ │ ├── role_info_base.prefab │ │ │ └── role_info_base.prefab.meta │ ├── language.meta │ ├── language │ │ ├── font.meta │ │ ├── json.meta │ │ ├── json │ │ │ ├── en.json │ │ │ ├── en.json.meta │ │ │ ├── zh.json │ │ │ └── zh.json.meta │ │ ├── spine.meta │ │ ├── spine │ │ │ ├── en.meta │ │ │ └── zh.meta │ │ ├── texture.meta │ │ └── texture │ │ │ ├── en.meta │ │ │ ├── en │ │ │ ├── image.jpg │ │ │ ├── image.jpg.meta │ │ │ └── loading.meta │ │ │ ├── zh.meta │ │ │ └── zh │ │ │ ├── image.jpg │ │ │ ├── image.jpg.meta │ │ │ └── loading.meta │ ├── loading.meta │ ├── loading │ │ ├── loading.meta │ │ ├── loading │ │ │ ├── texture.meta │ │ │ └── texture │ │ │ │ ├── bg.png │ │ │ │ ├── bg.png.meta │ │ │ │ ├── icon_loading_bar.png │ │ │ │ ├── icon_loading_bar.png.meta │ │ │ │ ├── panel_loading_bottom_frame.png │ │ │ │ └── panel_loading_bottom_frame.png.meta │ │ ├── prefab.meta │ │ └── prefab │ │ │ ├── loading.prefab │ │ │ └── loading.prefab.meta │ ├── project.manifest │ ├── project.manifest.meta │ ├── version.manifest │ └── version.manifest.meta ├── script.meta └── script │ ├── Main.ts │ ├── Main.ts.meta │ ├── game.meta │ └── game │ ├── account.meta │ ├── account │ ├── Account.ts │ ├── Account.ts.meta │ ├── AccountModelComp.ts.meta │ ├── AccountNetDataComp.ts.meta │ ├── bll.meta │ ├── bll │ │ ├── AccountNetData.ts │ │ └── AccountNetData.ts.meta │ ├── model.meta │ ├── model │ │ ├── AccountModelComp.ts │ │ └── AccountModelComp.ts.meta │ └── view.meta │ ├── backup.meta │ ├── common.meta │ ├── common │ ├── GameUIBase.ts.meta │ ├── config.meta │ ├── config │ │ ├── GameEvent.ts │ │ ├── GameEvent.ts.meta │ │ ├── GameResPath.ts │ │ ├── GameResPath.ts.meta │ │ ├── GameUIConfig.ts │ │ ├── GameUIConfig.ts.meta │ │ ├── QueryConfig.ts.meta │ │ └── UIConfig.ts.meta │ ├── ecs.meta │ ├── ecs │ │ ├── SingletonModuleComp.ts │ │ ├── SingletonModuleComp.ts.meta │ │ ├── position.meta │ │ └── position │ │ │ ├── EcsPositionSystem.ts │ │ │ ├── EcsPositionSystem.ts.meta │ │ │ ├── MoveTo.ts │ │ │ └── MoveTo.ts.meta │ ├── prompt.meta │ ├── prompt │ │ ├── TipsManager.ts │ │ └── TipsManager.ts.meta │ ├── table.meta │ └── table │ │ ├── TableLanguage.ts │ │ ├── TableLanguage.ts.meta │ │ ├── TablePromptWindow.ts │ │ ├── TablePromptWindow.ts.meta │ │ ├── TableRoleJob.ts │ │ ├── TableRoleJob.ts.meta │ │ ├── TableRoleLevelUp.ts │ │ └── TableRoleLevelUp.ts.meta │ ├── demo.meta │ ├── demo │ ├── Demo.ts │ ├── Demo.ts.meta │ └── GameEvent.ts.meta │ ├── initialize.meta │ ├── initialize │ ├── Initialize.ts │ ├── Initialize.ts.meta │ ├── LoadingViewComp.ts.meta │ ├── bll.meta │ ├── bll │ │ ├── InitRes.ts │ │ └── InitRes.ts.meta │ ├── view.meta │ └── view │ │ ├── Hot.ts │ │ ├── Hot.ts.meta │ │ ├── HotUpdate.ts │ │ ├── HotUpdate.ts.meta │ │ ├── LoadingViewComp.ts │ │ └── LoadingViewComp.ts.meta │ ├── role.meta │ ├── role │ ├── Role.ts │ ├── Role.ts.meta │ ├── RoleEvent.ts │ ├── RoleEvent.ts.meta │ ├── bll.meta │ ├── bll │ │ ├── RoleBattle.ts.meta │ │ ├── RoleChangeJob.ts │ │ ├── RoleChangeJob.ts.meta │ │ ├── RoleUpgrade.ts │ │ ├── RoleUpgrade.ts.meta │ │ ├── action.meta │ │ ├── ai.meta │ │ └── skill.meta │ ├── model.meta │ ├── model │ │ ├── RoleCharacteristicModelComp.ts.meta │ │ ├── RoleDescentModelComp.ts.meta │ │ ├── RoleDrawSixModelComp.ts.meta │ │ ├── RoleEnum.ts │ │ ├── RoleEnum.ts.meta │ │ ├── RoleEquipModelComp.ts.meta │ │ ├── RoleFamilyModelComp.ts.meta │ │ ├── RoleModelBaseComp.ts │ │ ├── RoleModelBaseComp.ts.meta │ │ ├── RoleModelComp.ts │ │ ├── RoleModelComp.ts.meta │ │ ├── RoleModelJobComp.ts │ │ ├── RoleModelJobComp.ts.meta │ │ ├── RoleModelLevelComp.ts │ │ ├── RoleModelLevelComp.ts.meta │ │ ├── RoleNobilityModelComp.ts.meta │ │ ├── RoleSkillModelComp.ts.meta │ │ ├── attribute.meta │ │ └── attribute │ │ │ ├── RoleNumeric.ts │ │ │ ├── RoleNumeric.ts.meta │ │ │ ├── RoleNumericMap.ts │ │ │ └── RoleNumericMap.ts.meta │ ├── view.meta │ └── view │ │ ├── AnimationEventHandler.ts.meta │ │ ├── RoleStateAttack.ts.meta │ │ ├── RoleStateDead.ts.meta │ │ ├── RoleStateHit.ts.meta │ │ ├── RoleViewAnimator.ts │ │ ├── RoleViewAnimator.ts.meta │ │ ├── RoleViewComp.ts │ │ ├── RoleViewComp.ts.meta │ │ ├── RoleViewController.ts │ │ ├── RoleViewController.ts.meta │ │ ├── RoleViewInfoComp.ts │ │ ├── RoleViewInfoComp.ts.meta │ │ ├── RoleViewLoader.ts │ │ ├── RoleViewLoader.ts.meta │ │ ├── animator.meta │ │ ├── animator │ │ ├── AnimationEventHandler.ts │ │ ├── AnimationEventHandler.ts.meta │ │ ├── RoleStateAttack.ts │ │ ├── RoleStateAttack.ts.meta │ │ ├── RoleStateDead.ts │ │ ├── RoleStateDead.ts.meta │ │ ├── RoleStateHit.ts │ │ └── RoleStateHit.ts.meta │ │ └── component.meta │ └── skill.meta ├── doc ├── images │ ├── editor1.png │ ├── example1.gif │ ├── operate1.gif │ ├── operate2.gif │ ├── operate3.gif │ ├── operate4.gif │ ├── runtime1.png │ └── runtime2.png ├── img │ ├── module.png │ ├── oops-plug-in1.jpg │ ├── oops-plug-in2.jpg │ └── tools.jpg └── using.md ├── excel ├── Language.xlsx ├── PromptWindow.xlsx ├── RoleJob.xlsx └── RoleLevelUp.xlsx ├── package-lock.json ├── package.json ├── settings ├── logo.png └── v2 │ └── packages │ ├── builder.json │ ├── cocos-service.json │ ├── device.json │ ├── engine.json │ ├── information.json │ ├── oops-plugin-excel-to-json.json │ ├── program.json │ ├── project.json │ └── scene.json ├── tsconfig.json ├── update-oops-plugin-excel-to-json.bat ├── update-oops-plugin-excel-to-json.sh ├── update-oops-plugin-framework.bat ├── update-oops-plugin-framework.sh ├── update-oops-plugin-hot-update.bat ├── update-oops-plugin-hot-update.sh └── yarn.lock /.creator/asset-template/typescript/Custom Script Template Help Documentation.url: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | URL=https://docs.cocos.com/creator/manual/en/scripting/setup.html#custom-script-template -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | #/////////////////////////// 3 | # Cocos Creator 3D Project 4 | #/////////////////////////// 5 | oops-plugin-bundle/ 6 | oops-plugin-framework/ 7 | oops-plugin-hot-update/ 8 | oops-plugin-excel-to-json/ 9 | oops_framework_remote/ 10 | library/ 11 | temp/ 12 | local/ 13 | build/ 14 | profiles/ 15 | native 16 | #////////////////////////// 17 | # NPM 18 | #////////////////////////// 19 | # node_modules/ 20 | 21 | #////////////////////////// 22 | # VSCode 23 | #////////////////////////// 24 | .vscode/ 25 | 26 | #////////////////////////// 27 | # WebStorm 28 | #////////////////////////// 29 | .idea/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 dgflash 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | star 17 | 18 |
19 | 20 | ### 概览 21 | Oops Framework 是一款基于 Cocos Creator 3.x 开发的游戏框架。自 2021 年 7 月开源起,它始终与 Cocos Creator 3.x 的各个版本保持同步更新。与此同时,该框架也在持续迭代版本,不断提升稳定性与易用性。 22 | 23 | ### 设计理念 24 | Oops Framework 致力于提供一个拥有游戏开发常用技术的框架,从而提高开发效率、降低开发门槛、专注于内容设计、促进技术共享和交流。 25 | 26 | ### 框架特点 27 | - 提供较为全面的游戏开发常用技术 28 | - 提供可提高开发效率的插件工具 29 | - 提供教学项目以及不同类型的解决方案项目 30 | - 拥有稳定可靠的框架技术 31 | - 对新人极为友好,操作简单且易于上手 32 | 33 | ### 官方推荐 34 | - Cocos 官方推荐框架 35 | - Cocos 官方2022年TOP10的插件工具 36 | - Cocos Creator 3.x 优秀开源框架 37 | - Cocos Creator 3.x 优秀开源框架盘点 38 | 39 | ### 框架文档 40 | 41 | ### 相关产品 42 | 43 | ### QQ群 44 | - 798575969(1群 - 满) 45 | - 621415300(2群 - 满) 46 | - 628575875(3群 - 满) 47 | - 226524184(4群 - 满) 48 | - 741197640(5群 - 满) 49 | - 438995424(6群 - 推荐) 50 | 51 | ### QQ频道:q366856bf5 -------------------------------------------------------------------------------- /assets/libs.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "717943ce-20e3-40c1-8de9-0d4df0757ddf", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/main.scene.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.50", 3 | "importer": "scene", 4 | "imported": true, 5 | "uuid": "ba0b085f-f8d5-40b0-9964-2fd25728d707", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": {} 11 | } 12 | -------------------------------------------------------------------------------- /assets/resources.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "11349493-059b-466d-8a63-bc29a4d895cd", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "isBundle": true, 10 | "bundleName": "resources", 11 | "priority": 8, 12 | "bundleConfigID": "auto_f0AlDAnxZIYrfsGv4UgfFf" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /assets/resources/audios.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "0fcfc2fc-e17a-4f43-a59b-8b97fc052429", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/audios/Gravel.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/audios/Gravel.mp3 -------------------------------------------------------------------------------- /assets/resources/audios/Gravel.mp3.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "importer": "audio-clip", 4 | "imported": true, 5 | "uuid": "b389ba94-1b8c-4e51-84c4-0ae55a3d5c99", 6 | "files": [ 7 | ".json", 8 | ".mp3" 9 | ], 10 | "subMetas": {}, 11 | "userData": { 12 | "downloadMode": 0 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /assets/resources/audios/nocturne.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/audios/nocturne.mp3 -------------------------------------------------------------------------------- /assets/resources/audios/nocturne.mp3.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "importer": "audio-clip", 4 | "imported": true, 5 | "uuid": "d0d4d969-8db9-4024-86e4-527d8b354ead", 6 | "files": [ 7 | ".json", 8 | ".mp3" 9 | ], 10 | "subMetas": {}, 11 | "userData": { 12 | "downloadMode": 0 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /assets/resources/avatar.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "0.0.1", 3 | "importer": "*", 4 | "imported": true, 5 | "uuid": "e702ec14-4b07-4a05-9908-de47767ed821", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/resources/common.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "b9dc5d89-1070-4f62-8a31-5b96306c192b", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/common/anim.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "0b70ab49-9f2b-4cbb-b4cb-849b2e477598", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/common/anim/button_scale_end.anim.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.3", 3 | "importer": "animation-clip", 4 | "imported": true, 5 | "uuid": "0430e564-9665-435e-9895-7b8e19fcb0b9", 6 | "files": [ 7 | ".cconb" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "name": "button_scale_end" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/common/anim/button_scale_start.anim.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.3", 3 | "importer": "animation-clip", 4 | "imported": true, 5 | "uuid": "99c3c7ad-3086-4333-81e6-19b82da0c89d", 6 | "files": [ 7 | ".cconb" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "name": "button_scale_start" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/common/anim/notify.anim.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.3", 3 | "importer": "animation-clip", 4 | "imported": true, 5 | "uuid": "4cecde51-d46d-4b20-b02e-e58f063ec56f", 6 | "files": [ 7 | ".cconb" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "name": "notify" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/common/prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "853ce1af-fb40-4f30-aebb-f12234f3d7fe", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/common/prefab/alert.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.50", 3 | "importer": "prefab", 4 | "imported": true, 5 | "uuid": "51127053-183b-41dc-b9d5-de54f6774526", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "syncNodeName": "alert" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/common/prefab/confirm.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.50", 3 | "importer": "prefab", 4 | "imported": true, 5 | "uuid": "b2c7551a-2cd9-4ef0-beef-fdce5988ff03", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "syncNodeName": "confirm" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/common/prefab/mask.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.50", 3 | "importer": "prefab", 4 | "imported": true, 5 | "uuid": "142393a8-2641-4775-a79c-cbfe1bd9e5ca", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "syncNodeName": "mask" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/common/prefab/notify.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.50", 3 | "importer": "prefab", 4 | "imported": true, 5 | "uuid": "80f1f6cc-e3c7-4c99-8b81-1083aa66330a", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "syncNodeName": "notify" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/common/prefab/wait.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.50", 3 | "importer": "prefab", 4 | "imported": true, 5 | "uuid": "9498d064-7cb5-4005-b470-3af693c28cc7", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "syncNodeName": "wait" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/common/texture.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "0489d8e2-9e0b-4c7e-b5ec-647a864e9214", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/common/texture/auto-atlas.pac: -------------------------------------------------------------------------------- 1 | { 2 | "__type__": "cc.SpriteAtlas" 3 | } 4 | -------------------------------------------------------------------------------- /assets/resources/common/texture/auto-atlas.pac.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "importer": "auto-atlas", 4 | "imported": true, 5 | "uuid": "9fa4ce44-23c1-4a20-9b6c-29623ff951af", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "maxWidth": 1024, 12 | "maxHeight": 1024, 13 | "padding": 2, 14 | "allowRotation": true, 15 | "forceSquared": false, 16 | "powerOfTwo": false, 17 | "algorithm": "MaxRects", 18 | "format": "png", 19 | "quality": 80, 20 | "contourBleed": true, 21 | "paddingBleed": true, 22 | "filterUnused": false, 23 | "compressSettings": {}, 24 | "textureSetting": { 25 | "wrapModeS": "clamp-to-edge", 26 | "wrapModeT": "clamp-to-edge", 27 | "minfilter": "linear", 28 | "magfilter": "linear", 29 | "mipfilter": "none", 30 | "anisotropy": 1 31 | }, 32 | "removeTextureInBundle": false, 33 | "removeImageInBundle": false, 34 | "removeSpriteAtlasInBundle": false 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /assets/resources/common/texture/bg_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/common/texture/bg_window.png -------------------------------------------------------------------------------- /assets/resources/common/texture/bg_window.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "f9cfbca9-9f35-4dda-8925-64e34e6e9802", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "f9cfbca9-9f35-4dda-8925-64e34e6e9802@6c48a", 14 | "displayName": "bg_window", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "ver": "1.0.22", 18 | "imported": true, 19 | "files": [ 20 | ".json" 21 | ], 22 | "subMetas": {}, 23 | "userData": { 24 | "wrapModeS": "clamp-to-edge", 25 | "wrapModeT": "clamp-to-edge", 26 | "minfilter": "linear", 27 | "magfilter": "linear", 28 | "mipfilter": "none", 29 | "premultiplyAlpha": false, 30 | "anisotropy": 1, 31 | "isUuid": true, 32 | "imageUuidOrDatabaseUri": "f9cfbca9-9f35-4dda-8925-64e34e6e9802", 33 | "visible": false 34 | } 35 | }, 36 | "f9941": { 37 | "importer": "sprite-frame", 38 | "uuid": "f9cfbca9-9f35-4dda-8925-64e34e6e9802@f9941", 39 | "displayName": "bg_window", 40 | "id": "f9941", 41 | "name": "spriteFrame", 42 | "ver": "1.0.12", 43 | "imported": true, 44 | "files": [ 45 | ".json" 46 | ], 47 | "subMetas": {}, 48 | "userData": { 49 | "trimType": "auto", 50 | "trimThreshold": 1, 51 | "rotated": false, 52 | "offsetX": 0, 53 | "offsetY": 0, 54 | "trimX": 0, 55 | "trimY": 0, 56 | "width": 478, 57 | "height": 320, 58 | "rawWidth": 478, 59 | "rawHeight": 320, 60 | "borderTop": 0, 61 | "borderBottom": 0, 62 | "borderLeft": 0, 63 | "borderRight": 0, 64 | "isUuid": true, 65 | "imageUuidOrDatabaseUri": "f9cfbca9-9f35-4dda-8925-64e34e6e9802@6c48a", 66 | "atlasUuid": "", 67 | "packable": true, 68 | "pixelsToUnit": 100, 69 | "pivotX": 0.5, 70 | "pivotY": 0.5, 71 | "meshType": 0, 72 | "vertices": { 73 | "rawPosition": [ 74 | -239, 75 | -160, 76 | 0, 77 | 239, 78 | -160, 79 | 0, 80 | -239, 81 | 160, 82 | 0, 83 | 239, 84 | 160, 85 | 0 86 | ], 87 | "indexes": [ 88 | 0, 89 | 1, 90 | 2, 91 | 2, 92 | 1, 93 | 3 94 | ], 95 | "uv": [ 96 | 0, 97 | 320, 98 | 478, 99 | 320, 100 | 0, 101 | 0, 102 | 478, 103 | 0 104 | ], 105 | "nuv": [ 106 | 0, 107 | 0, 108 | 1, 109 | 0, 110 | 0, 111 | 1, 112 | 1, 113 | 1 114 | ], 115 | "minPos": [ 116 | -239, 117 | -160, 118 | 0 119 | ], 120 | "maxPos": [ 121 | 239, 122 | 160, 123 | 0 124 | ] 125 | } 126 | } 127 | } 128 | }, 129 | "userData": { 130 | "type": "sprite-frame", 131 | "redirect": "f9cfbca9-9f35-4dda-8925-64e34e6e9802@6c48a", 132 | "hasAlpha": true, 133 | "fixAlphaTransparencyArtifacts": false 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /assets/resources/common/texture/btn_ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/common/texture/btn_ok.png -------------------------------------------------------------------------------- /assets/resources/common/texture/btn_ok.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "56a0bfc3-686d-4e85-bb26-5f5a6855ae06", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "56a0bfc3-686d-4e85-bb26-5f5a6855ae06@6c48a", 14 | "displayName": "btn_ok", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "ver": "1.0.22", 18 | "imported": true, 19 | "files": [ 20 | ".json" 21 | ], 22 | "subMetas": {}, 23 | "userData": { 24 | "wrapModeS": "clamp-to-edge", 25 | "wrapModeT": "clamp-to-edge", 26 | "minfilter": "linear", 27 | "magfilter": "linear", 28 | "mipfilter": "none", 29 | "premultiplyAlpha": false, 30 | "anisotropy": 1, 31 | "isUuid": true, 32 | "imageUuidOrDatabaseUri": "56a0bfc3-686d-4e85-bb26-5f5a6855ae06", 33 | "visible": false 34 | } 35 | }, 36 | "f9941": { 37 | "importer": "sprite-frame", 38 | "uuid": "56a0bfc3-686d-4e85-bb26-5f5a6855ae06@f9941", 39 | "displayName": "btn_ok", 40 | "id": "f9941", 41 | "name": "spriteFrame", 42 | "ver": "1.0.12", 43 | "imported": true, 44 | "files": [ 45 | ".json" 46 | ], 47 | "subMetas": {}, 48 | "userData": { 49 | "trimType": "auto", 50 | "trimThreshold": 1, 51 | "rotated": false, 52 | "offsetX": 0, 53 | "offsetY": 0, 54 | "trimX": 0, 55 | "trimY": 0, 56 | "width": 117, 57 | "height": 53, 58 | "rawWidth": 117, 59 | "rawHeight": 53, 60 | "borderTop": 0, 61 | "borderBottom": 0, 62 | "borderLeft": 0, 63 | "borderRight": 0, 64 | "isUuid": true, 65 | "imageUuidOrDatabaseUri": "56a0bfc3-686d-4e85-bb26-5f5a6855ae06@6c48a", 66 | "atlasUuid": "", 67 | "packable": true, 68 | "pixelsToUnit": 100, 69 | "pivotX": 0.5, 70 | "pivotY": 0.5, 71 | "meshType": 0, 72 | "vertices": { 73 | "rawPosition": [ 74 | -58.5, 75 | -26.5, 76 | 0, 77 | 58.5, 78 | -26.5, 79 | 0, 80 | -58.5, 81 | 26.5, 82 | 0, 83 | 58.5, 84 | 26.5, 85 | 0 86 | ], 87 | "indexes": [ 88 | 0, 89 | 1, 90 | 2, 91 | 2, 92 | 1, 93 | 3 94 | ], 95 | "uv": [ 96 | 0, 97 | 53, 98 | 117, 99 | 53, 100 | 0, 101 | 0, 102 | 117, 103 | 0 104 | ], 105 | "nuv": [ 106 | 0, 107 | 0, 108 | 1, 109 | 0, 110 | 0, 111 | 1, 112 | 1, 113 | 1 114 | ], 115 | "minPos": [ 116 | -58.5, 117 | -26.5, 118 | 0 119 | ], 120 | "maxPos": [ 121 | 58.5, 122 | 26.5, 123 | 0 124 | ] 125 | } 126 | } 127 | } 128 | }, 129 | "userData": { 130 | "type": "sprite-frame", 131 | "redirect": "56a0bfc3-686d-4e85-bb26-5f5a6855ae06@6c48a", 132 | "hasAlpha": true, 133 | "fixAlphaTransparencyArtifacts": false 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /assets/resources/common/texture/loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/common/texture/loading.png -------------------------------------------------------------------------------- /assets/resources/common/texture/loading.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "06942a20-0474-4385-9a85-293366d2473e", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "06942a20-0474-4385-9a85-293366d2473e@6c48a", 14 | "displayName": "loading", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "ver": "1.0.22", 18 | "imported": true, 19 | "files": [ 20 | ".json" 21 | ], 22 | "subMetas": {}, 23 | "userData": { 24 | "wrapModeS": "clamp-to-edge", 25 | "wrapModeT": "clamp-to-edge", 26 | "minfilter": "linear", 27 | "magfilter": "linear", 28 | "mipfilter": "none", 29 | "premultiplyAlpha": false, 30 | "anisotropy": 1, 31 | "isUuid": true, 32 | "imageUuidOrDatabaseUri": "06942a20-0474-4385-9a85-293366d2473e", 33 | "visible": false 34 | } 35 | }, 36 | "f9941": { 37 | "importer": "sprite-frame", 38 | "uuid": "06942a20-0474-4385-9a85-293366d2473e@f9941", 39 | "displayName": "loading", 40 | "id": "f9941", 41 | "name": "spriteFrame", 42 | "ver": "1.0.12", 43 | "imported": true, 44 | "files": [ 45 | ".json" 46 | ], 47 | "subMetas": {}, 48 | "userData": { 49 | "trimType": "auto", 50 | "trimThreshold": 1, 51 | "rotated": false, 52 | "offsetX": 0, 53 | "offsetY": 0, 54 | "trimX": 0, 55 | "trimY": 0, 56 | "width": 138, 57 | "height": 138, 58 | "rawWidth": 138, 59 | "rawHeight": 138, 60 | "borderTop": 0, 61 | "borderBottom": 0, 62 | "borderLeft": 0, 63 | "borderRight": 0, 64 | "isUuid": true, 65 | "imageUuidOrDatabaseUri": "06942a20-0474-4385-9a85-293366d2473e@6c48a", 66 | "atlasUuid": "", 67 | "packable": true, 68 | "pixelsToUnit": 100, 69 | "pivotX": 0.5, 70 | "pivotY": 0.5, 71 | "meshType": 0, 72 | "vertices": { 73 | "rawPosition": [ 74 | -69, 75 | -69, 76 | 0, 77 | 69, 78 | -69, 79 | 0, 80 | -69, 81 | 69, 82 | 0, 83 | 69, 84 | 69, 85 | 0 86 | ], 87 | "indexes": [ 88 | 0, 89 | 1, 90 | 2, 91 | 2, 92 | 1, 93 | 3 94 | ], 95 | "uv": [ 96 | 0, 97 | 138, 98 | 138, 99 | 138, 100 | 0, 101 | 0, 102 | 138, 103 | 0 104 | ], 105 | "nuv": [ 106 | 0, 107 | 0, 108 | 1, 109 | 0, 110 | 0, 111 | 1, 112 | 1, 113 | 1 114 | ], 115 | "minPos": [ 116 | -69, 117 | -69, 118 | 0 119 | ], 120 | "maxPos": [ 121 | 69, 122 | 69, 123 | 0 124 | ] 125 | } 126 | } 127 | } 128 | }, 129 | "userData": { 130 | "type": "sprite-frame", 131 | "redirect": "06942a20-0474-4385-9a85-293366d2473e@6c48a", 132 | "hasAlpha": true, 133 | "fixAlphaTransparencyArtifacts": false 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /assets/resources/common/texture/role.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "d7a109d3-8659-4487-a915-2c38b3d88f58", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/common/texture/toast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/common/texture/toast.png -------------------------------------------------------------------------------- /assets/resources/common/texture/toast.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "ef58b575-d5bd-4b6b-ac05-6364e90ff8fc", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "ef58b575-d5bd-4b6b-ac05-6364e90ff8fc@6c48a", 14 | "displayName": "toast", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "ver": "1.0.22", 18 | "imported": true, 19 | "files": [ 20 | ".json" 21 | ], 22 | "subMetas": {}, 23 | "userData": { 24 | "wrapModeS": "clamp-to-edge", 25 | "wrapModeT": "clamp-to-edge", 26 | "minfilter": "linear", 27 | "magfilter": "linear", 28 | "mipfilter": "none", 29 | "premultiplyAlpha": false, 30 | "anisotropy": 1, 31 | "isUuid": true, 32 | "imageUuidOrDatabaseUri": "ef58b575-d5bd-4b6b-ac05-6364e90ff8fc", 33 | "visible": false 34 | } 35 | }, 36 | "f9941": { 37 | "importer": "sprite-frame", 38 | "uuid": "ef58b575-d5bd-4b6b-ac05-6364e90ff8fc@f9941", 39 | "displayName": "toast", 40 | "id": "f9941", 41 | "name": "spriteFrame", 42 | "ver": "1.0.12", 43 | "imported": true, 44 | "files": [ 45 | ".json" 46 | ], 47 | "subMetas": {}, 48 | "userData": { 49 | "trimType": "auto", 50 | "trimThreshold": 1, 51 | "rotated": false, 52 | "offsetX": 0.5, 53 | "offsetY": 0, 54 | "trimX": 6, 55 | "trimY": 0, 56 | "width": 528, 57 | "height": 90, 58 | "rawWidth": 539, 59 | "rawHeight": 90, 60 | "borderTop": 0, 61 | "borderBottom": 0, 62 | "borderLeft": 0, 63 | "borderRight": 0, 64 | "isUuid": true, 65 | "imageUuidOrDatabaseUri": "ef58b575-d5bd-4b6b-ac05-6364e90ff8fc@6c48a", 66 | "atlasUuid": "", 67 | "packable": true, 68 | "pixelsToUnit": 100, 69 | "pivotX": 0.5, 70 | "pivotY": 0.5, 71 | "meshType": 0, 72 | "vertices": { 73 | "rawPosition": [ 74 | -264, 75 | -45, 76 | 0, 77 | 264, 78 | -45, 79 | 0, 80 | -264, 81 | 45, 82 | 0, 83 | 264, 84 | 45, 85 | 0 86 | ], 87 | "indexes": [ 88 | 0, 89 | 1, 90 | 2, 91 | 2, 92 | 1, 93 | 3 94 | ], 95 | "uv": [ 96 | 6, 97 | 90, 98 | 534, 99 | 90, 100 | 6, 101 | 0, 102 | 534, 103 | 0 104 | ], 105 | "nuv": [ 106 | 0.011131725417439703, 107 | 0, 108 | 0.9907235621521335, 109 | 0, 110 | 0.011131725417439703, 111 | 1, 112 | 0.9907235621521335, 113 | 1 114 | ], 115 | "minPos": [ 116 | -264, 117 | -45, 118 | 0 119 | ], 120 | "maxPos": [ 121 | 264, 122 | 45, 123 | 0 124 | ] 125 | } 126 | } 127 | } 128 | }, 129 | "userData": { 130 | "type": "sprite-frame", 131 | "redirect": "ef58b575-d5bd-4b6b-ac05-6364e90ff8fc@6c48a", 132 | "hasAlpha": true, 133 | "fixAlphaTransparencyArtifacts": false 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /assets/resources/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "version": "1.0.5", 4 | "package": "com.oops.game", 5 | "localDataKey": "oops", 6 | "localDataIv": "framework", 7 | "httpServer": "http://192.168.0.150/main/", 8 | "httpTimeout": 10000, 9 | "frameRate": "60", 10 | "loadingTimeoutGui": 1000, 11 | "webSocketIp": "127.0.0.1", 12 | "webSocketProt": "8081", 13 | "webSocketHeartTime": 6000, 14 | "webSocketReceiveTime": 10000, 15 | "webSocketReconnetTimeOut": 3000 16 | }, 17 | "gui": [ 18 | { 19 | "name": "LayerGame", 20 | "type": "Node" 21 | }, 22 | { 23 | "name": "LayerUI", 24 | "type": "UI" 25 | }, 26 | { 27 | "name": "LayerPopUp", 28 | "type": "PopUp" 29 | }, 30 | { 31 | "name": "LayerDialog", 32 | "type": "Dialog" 33 | }, 34 | { 35 | "name": "LayerSystem", 36 | "type": "Dialog" 37 | }, 38 | { 39 | "name": "LayerNotify", 40 | "type": "Notify" 41 | }, 42 | { 43 | "name": "LayerGuide", 44 | "type": "Node" 45 | } 46 | ], 47 | "language": { 48 | "default": "zh", 49 | "type": [ 50 | "zh", 51 | "en" 52 | ], 53 | "path": { 54 | "json": "language/json", 55 | "texture": "language/texture", 56 | "spine": "" 57 | } 58 | }, 59 | "bundle": { 60 | "enable": false, 61 | "server": "http://localhost", 62 | "default": "resources", 63 | "packages": { 64 | "bundle": "" 65 | } 66 | } 67 | } -------------------------------------------------------------------------------- /assets/resources/config.json.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.1", 3 | "importer": "json", 4 | "imported": true, 5 | "uuid": "0f8f84c7-5a96-49fe-a127-f66d9c90c822", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": {} 11 | } 12 | -------------------------------------------------------------------------------- /assets/resources/config.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "11938e97-a8b3-4375-9632-5313d684e918", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/config/game.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "a2c06fee-9cbe-4e3b-b9ff-a29cdd9e6646", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/config/game/Language.json: -------------------------------------------------------------------------------- 1 | {"role_level_up":{"zh":"升级","en":"Upgrade"},"role_attack":{"zh":"攻击","en":"Attack"}} -------------------------------------------------------------------------------- /assets/resources/config/game/Language.json.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.1", 3 | "importer": "json", 4 | "imported": true, 5 | "uuid": "b92e9be8-b6df-4e15-8b4b-16326a243229", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": {} 11 | } 12 | -------------------------------------------------------------------------------- /assets/resources/config/game/NetCode.json: -------------------------------------------------------------------------------- 1 | { 2 | "1": { 3 | "describe": "成功" 4 | }, 5 | "2": { 6 | "describe": "服务器错误" 7 | }, 8 | "3": { 9 | "describe": "数据库错误" 10 | } 11 | } -------------------------------------------------------------------------------- /assets/resources/config/game/NetCode.json.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.1", 3 | "importer": "json", 4 | "imported": true, 5 | "uuid": "632275d6-db6d-4335-9d55-31da137fb8f6", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": {} 11 | } 12 | -------------------------------------------------------------------------------- /assets/resources/config/game/PromptWindow.json: -------------------------------------------------------------------------------- 1 | {"1":{"2":{"3":{"title":"系统提示","describe":"服务器正在更新,请稍后!","array":{"a":1,"b":"abc"},"hp":1}}},"2":{"1":{"1":{"title":"断网提示","describe":"网络异常","array":{"a":1},"hp":2}}}} -------------------------------------------------------------------------------- /assets/resources/config/game/PromptWindow.json.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.1", 3 | "importer": "json", 4 | "imported": true, 5 | "uuid": "f563a1f3-e357-40cf-9fdb-28ad8b1b1d1d", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": {} 11 | } 12 | -------------------------------------------------------------------------------- /assets/resources/config/game/RoleJob.json: -------------------------------------------------------------------------------- 1 | {"1":{"armsName":"剑客","weaponType":[1],"power":8,"agile":2},"5":{"armsName":"刺客","weaponType":[10,11,12],"power":5,"agile":10},"9":{"armsName":"长弓手","weaponType":[5],"power":5,"agile":8}} -------------------------------------------------------------------------------- /assets/resources/config/game/RoleJob.json.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.1", 3 | "importer": "json", 4 | "imported": true, 5 | "uuid": "ff18f0c9-550b-4e48-aca8-d37fe1d2b510", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": {} 11 | } 12 | -------------------------------------------------------------------------------- /assets/resources/config/game/RoleLevelUp.json: -------------------------------------------------------------------------------- 1 | {"1":{"needexp":0,"hp":5},"2":{"needexp":10,"hp":6},"3":{"needexp":30,"hp":6},"4":{"needexp":70,"hp":7},"5":{"needexp":110,"hp":7},"6":{"needexp":170,"hp":8},"7":{"needexp":240,"hp":8},"8":{"needexp":320,"hp":9},"9":{"needexp":420,"hp":9},"10":{"needexp":520,"hp":10},"11":{"needexp":640,"hp":10},"12":{"needexp":770,"hp":11},"13":{"needexp":920,"hp":11},"14":{"needexp":1080,"hp":12},"15":{"needexp":1250,"hp":13},"16":{"needexp":1440,"hp":14},"17":{"needexp":1640,"hp":15},"18":{"needexp":1860,"hp":16},"19":{"needexp":2090,"hp":17},"20":{"needexp":2330,"hp":18},"21":{"needexp":2590,"hp":19},"22":{"needexp":2870,"hp":20},"23":{"needexp":3150,"hp":21},"24":{"needexp":3460,"hp":22},"25":{"needexp":3770,"hp":23},"26":{"needexp":4110,"hp":24},"27":{"needexp":4450,"hp":25},"28":{"needexp":4820,"hp":26},"29":{"needexp":5190,"hp":27},"30":{"needexp":5590,"hp":28},"31":{"needexp":5990,"hp":29},"32":{"needexp":6420,"hp":31},"33":{"needexp":6860,"hp":32},"34":{"needexp":7310,"hp":34},"35":{"needexp":7780,"hp":35},"36":{"needexp":8270,"hp":37},"37":{"needexp":8770,"hp":38},"38":{"needexp":9290,"hp":40},"39":{"needexp":9820,"hp":41},"40":{"needexp":10370,"hp":43},"41":{"needexp":10940,"hp":44},"42":{"needexp":11520,"hp":46},"43":{"needexp":12120,"hp":47},"44":{"needexp":12730,"hp":49},"45":{"needexp":13360,"hp":50},"46":{"needexp":14010,"hp":52},"47":{"needexp":14670,"hp":53},"48":{"needexp":15350,"hp":55},"49":{"needexp":16050,"hp":56},"50":{"needexp":16760,"hp":58},"51":{"needexp":17490,"hp":59},"52":{"needexp":18240,"hp":61},"53":{"needexp":19000,"hp":63},"54":{"needexp":19780,"hp":64},"55":{"needexp":20580,"hp":66},"56":{"needexp":21390,"hp":68},"57":{"needexp":22220,"hp":69},"58":{"needexp":23070,"hp":71},"59":{"needexp":23930,"hp":73},"60":{"needexp":24810,"hp":74},"61":{"needexp":25710,"hp":76},"62":{"needexp":26620,"hp":78},"63":{"needexp":27560,"hp":79},"64":{"needexp":28500,"hp":81},"65":{"needexp":29470,"hp":83},"66":{"needexp":30450,"hp":84},"67":{"needexp":31460,"hp":86},"68":{"needexp":32470,"hp":88},"69":{"needexp":33510,"hp":90},"70":{"needexp":34560,"hp":92},"71":{"needexp":35630,"hp":94},"72":{"needexp":36720,"hp":96},"73":{"needexp":37830,"hp":98},"74":{"needexp":38950,"hp":100},"75":{"needexp":40090,"hp":102},"76":{"needexp":41250,"hp":104},"77":{"needexp":42420,"hp":106},"78":{"needexp":43620,"hp":108},"79":{"needexp":44830,"hp":110},"80":{"needexp":46060,"hp":112},"81":{"needexp":47300,"hp":114},"82":{"needexp":48570,"hp":116},"83":{"needexp":49850,"hp":118},"84":{"needexp":51150,"hp":120},"85":{"needexp":52470,"hp":122},"86":{"needexp":53810,"hp":125},"87":{"needexp":55160,"hp":128},"88":{"needexp":56530,"hp":131},"89":{"needexp":57920,"hp":134},"90":{"needexp":59330,"hp":137},"91":{"needexp":60760,"hp":140},"92":{"needexp":62200,"hp":143},"93":{"needexp":63670,"hp":146},"94":{"needexp":65150,"hp":149},"95":{"needexp":66650,"hp":152},"96":{"needexp":68160,"hp":155},"97":{"needexp":69700,"hp":158},"98":{"needexp":71250,"hp":161},"99":{"needexp":72830,"hp":164},"100":{"needexp":74420,"hp":167}} -------------------------------------------------------------------------------- /assets/resources/config/game/RoleLevelUp.json.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.1", 3 | "importer": "json", 4 | "imported": true, 5 | "uuid": "11a2f047-e929-4f50-8df1-d31311013e88", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": {} 11 | } 12 | -------------------------------------------------------------------------------- /assets/resources/content.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "6c5ced24-3b16-49f5-9161-12d9073266f1", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/content/role.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "9bea5434-14f3-46ad-aa83-5bb06d7450a9", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/content/role/model1.atlas.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "importer": "*", 4 | "imported": true, 5 | "uuid": "34c4dead-1166-4a46-ab10-efba80c0e2ed", 6 | "files": [ 7 | ".atlas", 8 | ".json" 9 | ], 10 | "subMetas": {}, 11 | "userData": {} 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/content/role/model1.json.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.6", 3 | "importer": "spine-data", 4 | "imported": true, 5 | "uuid": "04254b30-9771-4e13-b7cc-888a0f812a1d", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": {} 11 | } 12 | -------------------------------------------------------------------------------- /assets/resources/content/role/model1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/content/role/model1.png -------------------------------------------------------------------------------- /assets/resources/content/role/model1.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "f1358af2-8b3d-4816-ae38-bc2a2d38105f", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "f1358af2-8b3d-4816-ae38-bc2a2d38105f@6c48a", 14 | "displayName": "model1", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "userData": { 18 | "wrapModeS": "clamp-to-edge", 19 | "wrapModeT": "clamp-to-edge", 20 | "imageUuidOrDatabaseUri": "f1358af2-8b3d-4816-ae38-bc2a2d38105f", 21 | "minfilter": "linear", 22 | "magfilter": "linear", 23 | "mipfilter": "none", 24 | "anisotropy": 0, 25 | "isUuid": true, 26 | "visible": false 27 | }, 28 | "ver": "1.0.22", 29 | "imported": true, 30 | "files": [ 31 | ".json" 32 | ], 33 | "subMetas": {} 34 | }, 35 | "f9941": { 36 | "importer": "sprite-frame", 37 | "uuid": "f1358af2-8b3d-4816-ae38-bc2a2d38105f@f9941", 38 | "displayName": "model1", 39 | "id": "f9941", 40 | "name": "spriteFrame", 41 | "userData": { 42 | "trimType": "auto", 43 | "trimThreshold": 1, 44 | "rotated": false, 45 | "offsetX": 0, 46 | "offsetY": 0, 47 | "trimX": 0, 48 | "trimY": 0, 49 | "width": 1078, 50 | "height": 221, 51 | "rawWidth": 1078, 52 | "rawHeight": 221, 53 | "borderTop": 0, 54 | "borderBottom": 0, 55 | "borderLeft": 0, 56 | "borderRight": 0, 57 | "packable": true, 58 | "isUuid": true, 59 | "imageUuidOrDatabaseUri": "f1358af2-8b3d-4816-ae38-bc2a2d38105f@6c48a", 60 | "atlasUuid": "", 61 | "pixelsToUnit": 100, 62 | "pivotX": 0.5, 63 | "pivotY": 0.5, 64 | "meshType": 0, 65 | "vertices": { 66 | "rawPosition": [ 67 | -539, 68 | -110.5, 69 | 0, 70 | 539, 71 | -110.5, 72 | 0, 73 | -539, 74 | 110.5, 75 | 0, 76 | 539, 77 | 110.5, 78 | 0 79 | ], 80 | "indexes": [ 81 | 0, 82 | 1, 83 | 2, 84 | 2, 85 | 1, 86 | 3 87 | ], 88 | "uv": [ 89 | 0, 90 | 221, 91 | 1078, 92 | 221, 93 | 0, 94 | 0, 95 | 1078, 96 | 0 97 | ], 98 | "nuv": [ 99 | 0, 100 | 0, 101 | 1, 102 | 0, 103 | 0, 104 | 1, 105 | 1, 106 | 1 107 | ], 108 | "minPos": [ 109 | -539, 110 | -110.5, 111 | 0 112 | ], 113 | "maxPos": [ 114 | 539, 115 | 110.5, 116 | 0 117 | ] 118 | } 119 | }, 120 | "ver": "1.0.12", 121 | "imported": true, 122 | "files": [ 123 | ".json" 124 | ], 125 | "subMetas": {} 126 | } 127 | }, 128 | "userData": { 129 | "type": "sprite-frame", 130 | "hasAlpha": true, 131 | "redirect": "f1358af2-8b3d-4816-ae38-bc2a2d38105f@6c48a", 132 | "fixAlphaTransparencyArtifacts": false 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /assets/resources/game.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "ce4f2740-a8dc-47cd-a6a0-2f1b5b45128a", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/game/animator.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "b7e0d1ee-a6fc-4457-b909-6aa5b3a12c58", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/game/battle.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "b7e2a06d-a8e7-4208-bbda-b4ad8affd938", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/game/battle/animation.anim.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.11", 3 | "importer": "animation-clip", 4 | "imported": true, 5 | "uuid": "8fbe8871-9894-4a43-8997-64adfbec8422", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "name": "animation" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/game/battle/animator.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "befdfac8-df73-46ea-b225-e7e878cccebc", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/game/battle/animator/role.json: -------------------------------------------------------------------------------- 1 | {"defaultState":"Idle","anyState":{"transitions":[]},"states":[{"state":"Idle","motion":"Idle","speed":1,"multiplier":"","loop":true,"transitions":[{"toState":"Dead","hasExitTime":false,"conditions":[{"param":"Dead","value":0,"logic":0}]},{"toState":"Attack","hasExitTime":false,"conditions":[{"param":"Attack","value":0,"logic":0}]},{"toState":"AttackSpecial","hasExitTime":false,"conditions":[{"param":"AttackSpecial","value":0,"logic":0}]},{"toState":"AttackCritical","hasExitTime":false,"conditions":[{"param":"AttackCritical","value":0,"logic":0}]},{"toState":"Magic","hasExitTime":false,"conditions":[{"param":"Magic","value":0,"logic":0}]},{"toState":"Parry","hasExitTime":false,"conditions":[{"param":"Parry","value":0,"logic":0}]},{"toState":"Block","hasExitTime":false,"conditions":[{"param":"Block","value":0,"logic":0}]},{"toState":"Skew","hasExitTime":false,"conditions":[{"param":"Skew","value":0,"logic":0}]},{"toState":"Hurt","hasExitTime":false,"conditions":[{"param":"Hurt","value":0,"logic":0}]}]},{"state":"Attack","motion":"Attack","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"state":"AttackSpecial","motion":"AttackSpecial","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"state":"AttackCritical","motion":"AttackCritical","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"state":"Magic","motion":"Magic","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"state":"Parry","motion":"Parry","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"state":"Block","motion":"Block","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"state":"Hurt","motion":"Hurt","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"state":"Skew","motion":"Skew","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"state":"Dead","motion":"Dead","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":false,"conditions":[{"param":"Idle","value":0,"logic":0}]}]}],"parameters":[{"param":"Idle","type":3,"init":0},{"param":"Attack","type":3,"init":0},{"param":"AttackSpecial","type":3,"init":0},{"param":"AttackCritical","type":3,"init":0},{"param":"Magic","type":3,"init":0},{"param":"Parry","type":3,"init":0},{"param":"Block","type":3,"init":0},{"param":"Skew","type":3,"init":0},{"param":"Hurt","type":3,"init":0},{"param":"Dead","type":3,"init":0}]} -------------------------------------------------------------------------------- /assets/resources/game/battle/animator/role.json.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.1", 3 | "importer": "json", 4 | "imported": true, 5 | "uuid": "6ee5f40e-b1b2-47a9-b428-4147a1bd955a", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": {} 11 | } 12 | -------------------------------------------------------------------------------- /assets/resources/game/battle/animator/role_edit.json: -------------------------------------------------------------------------------- 1 | {"animator":"1.0.0","mainStateMachine":{"layerPos":[0,0],"layerScale":1,"anyStatePos":[-690,30],"subStates":["Idle","Attack","AttackSpecial","AttackCritical","Magic","Parry","Block","Hurt","Skew","Dead"],"subStateMachines":[]},"subStateMachines":[],"defaultState":"Idle","anyState":{"transitions":[]},"states":[{"position":[-300,30],"upStateMachine":"BaseLayer","state":"Idle","motion":"Idle","speed":1,"multiplier":"","loop":true,"transitions":[{"toState":"Dead","hasExitTime":false,"conditions":[{"param":"Dead","value":0,"logic":0}]},{"toState":"Attack","hasExitTime":false,"conditions":[{"param":"Attack","value":0,"logic":0}]},{"toState":"AttackSpecial","hasExitTime":false,"conditions":[{"param":"AttackSpecial","value":0,"logic":0}]},{"toState":"AttackCritical","hasExitTime":false,"conditions":[{"param":"AttackCritical","value":0,"logic":0}]},{"toState":"Magic","hasExitTime":false,"conditions":[{"param":"Magic","value":0,"logic":0}]},{"toState":"Parry","hasExitTime":false,"conditions":[{"param":"Parry","value":0,"logic":0}]},{"toState":"Block","hasExitTime":false,"conditions":[{"param":"Block","value":0,"logic":0}]},{"toState":"Skew","hasExitTime":false,"conditions":[{"param":"Skew","value":0,"logic":0}]},{"toState":"Hurt","hasExitTime":false,"conditions":[{"param":"Hurt","value":0,"logic":0}]}]},{"position":[-300,-150],"upStateMachine":"BaseLayer","state":"Attack","motion":"Attack","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"position":[60,-150],"upStateMachine":"BaseLayer","state":"AttackSpecial","motion":"AttackSpecial","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"position":[420,-150],"upStateMachine":"BaseLayer","state":"AttackCritical","motion":"AttackCritical","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"position":[-660,-150],"upStateMachine":"BaseLayer","state":"Magic","motion":"Magic","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"position":[-300,210],"upStateMachine":"BaseLayer","state":"Parry","motion":"Parry","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"position":[60,210],"upStateMachine":"BaseLayer","state":"Block","motion":"Block","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"position":[-660,210],"upStateMachine":"BaseLayer","state":"Hurt","motion":"Hurt","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"position":[420,210],"upStateMachine":"BaseLayer","state":"Skew","motion":"Skew","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":true,"conditions":[]}]},{"position":[240,30],"upStateMachine":"BaseLayer","state":"Dead","motion":"Dead","speed":1,"multiplier":"","loop":false,"transitions":[{"toState":"Idle","hasExitTime":false,"conditions":[{"param":"Idle","value":0,"logic":0}]}]}],"parameters":[{"param":"Idle","type":3,"init":0},{"param":"Attack","type":3,"init":0},{"param":"AttackSpecial","type":3,"init":0},{"param":"AttackCritical","type":3,"init":0},{"param":"Magic","type":3,"init":0},{"param":"Parry","type":3,"init":0},{"param":"Block","type":3,"init":0},{"param":"Skew","type":3,"init":0},{"param":"Hurt","type":3,"init":0},{"param":"Dead","type":3,"init":0}]} -------------------------------------------------------------------------------- /assets/resources/game/battle/animator/role_edit.json.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.1", 3 | "importer": "json", 4 | "imported": true, 5 | "uuid": "98a3dad2-3c6c-48ba-a625-1f065ef308cd", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": {} 11 | } 12 | -------------------------------------------------------------------------------- /assets/resources/game/battle/role.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.50", 3 | "importer": "prefab", 4 | "imported": true, 5 | "uuid": "6b14b71e-74ef-4af5-9375-546472b45751", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "syncNodeName": "role" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/game/product.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "14998ae6-7e09-451e-bfa7-63ff55647567", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/resources/game/product/oops-guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/game/product/oops-guide.png -------------------------------------------------------------------------------- /assets/resources/game/product/oops-guide.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "225a80ed-d82f-416a-900d-438675d18170", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "225a80ed-d82f-416a-900d-438675d18170@6c48a", 14 | "displayName": "oops-guide", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "userData": { 18 | "wrapModeS": "clamp-to-edge", 19 | "wrapModeT": "clamp-to-edge", 20 | "minfilter": "linear", 21 | "magfilter": "linear", 22 | "mipfilter": "none", 23 | "anisotropy": 0, 24 | "isUuid": true, 25 | "imageUuidOrDatabaseUri": "225a80ed-d82f-416a-900d-438675d18170", 26 | "visible": false 27 | }, 28 | "ver": "1.0.22", 29 | "imported": true, 30 | "files": [ 31 | ".json" 32 | ], 33 | "subMetas": {} 34 | }, 35 | "f9941": { 36 | "importer": "sprite-frame", 37 | "uuid": "225a80ed-d82f-416a-900d-438675d18170@f9941", 38 | "displayName": "oops-guide", 39 | "id": "f9941", 40 | "name": "spriteFrame", 41 | "userData": { 42 | "trimType": "auto", 43 | "trimThreshold": 1, 44 | "rotated": false, 45 | "offsetX": 0, 46 | "offsetY": 0, 47 | "trimX": 0, 48 | "trimY": 0, 49 | "width": 256, 50 | "height": 256, 51 | "rawWidth": 256, 52 | "rawHeight": 256, 53 | "borderTop": 0, 54 | "borderBottom": 0, 55 | "borderLeft": 0, 56 | "borderRight": 0, 57 | "packable": true, 58 | "pixelsToUnit": 100, 59 | "pivotX": 0.5, 60 | "pivotY": 0.5, 61 | "meshType": 0, 62 | "vertices": { 63 | "rawPosition": [ 64 | -128, 65 | -128, 66 | 0, 67 | 128, 68 | -128, 69 | 0, 70 | -128, 71 | 128, 72 | 0, 73 | 128, 74 | 128, 75 | 0 76 | ], 77 | "indexes": [ 78 | 0, 79 | 1, 80 | 2, 81 | 2, 82 | 1, 83 | 3 84 | ], 85 | "uv": [ 86 | 0, 87 | 256, 88 | 256, 89 | 256, 90 | 0, 91 | 0, 92 | 256, 93 | 0 94 | ], 95 | "nuv": [ 96 | 0, 97 | 0, 98 | 1, 99 | 0, 100 | 0, 101 | 1, 102 | 1, 103 | 1 104 | ], 105 | "minPos": [ 106 | -128, 107 | -128, 108 | 0 109 | ], 110 | "maxPos": [ 111 | 128, 112 | 128, 113 | 0 114 | ] 115 | }, 116 | "isUuid": true, 117 | "imageUuidOrDatabaseUri": "225a80ed-d82f-416a-900d-438675d18170@6c48a", 118 | "atlasUuid": "" 119 | }, 120 | "ver": "1.0.12", 121 | "imported": true, 122 | "files": [ 123 | ".json" 124 | ], 125 | "subMetas": {} 126 | } 127 | }, 128 | "userData": { 129 | "hasAlpha": true, 130 | "type": "sprite-frame", 131 | "fixAlphaTransparencyArtifacts": false, 132 | "redirect": "225a80ed-d82f-416a-900d-438675d18170@6c48a" 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /assets/resources/game/product/oops-hot-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/game/product/oops-hot-update.png -------------------------------------------------------------------------------- /assets/resources/game/product/oops-hot-update.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "d3de4991-3456-4787-8186-1b548039579c", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "d3de4991-3456-4787-8186-1b548039579c@6c48a", 14 | "displayName": "oops-hot-update", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "userData": { 18 | "wrapModeS": "clamp-to-edge", 19 | "wrapModeT": "clamp-to-edge", 20 | "minfilter": "linear", 21 | "magfilter": "linear", 22 | "mipfilter": "none", 23 | "anisotropy": 0, 24 | "isUuid": true, 25 | "imageUuidOrDatabaseUri": "d3de4991-3456-4787-8186-1b548039579c", 26 | "visible": false 27 | }, 28 | "ver": "1.0.22", 29 | "imported": true, 30 | "files": [ 31 | ".json" 32 | ], 33 | "subMetas": {} 34 | }, 35 | "f9941": { 36 | "importer": "sprite-frame", 37 | "uuid": "d3de4991-3456-4787-8186-1b548039579c@f9941", 38 | "displayName": "oops-hot-update", 39 | "id": "f9941", 40 | "name": "spriteFrame", 41 | "userData": { 42 | "trimType": "auto", 43 | "trimThreshold": 1, 44 | "rotated": false, 45 | "offsetX": 0, 46 | "offsetY": 0, 47 | "trimX": 0, 48 | "trimY": 0, 49 | "width": 600, 50 | "height": 450, 51 | "rawWidth": 600, 52 | "rawHeight": 450, 53 | "borderTop": 0, 54 | "borderBottom": 0, 55 | "borderLeft": 0, 56 | "borderRight": 0, 57 | "packable": true, 58 | "pixelsToUnit": 100, 59 | "pivotX": 0.5, 60 | "pivotY": 0.5, 61 | "meshType": 0, 62 | "vertices": { 63 | "rawPosition": [ 64 | -300, 65 | -225, 66 | 0, 67 | 300, 68 | -225, 69 | 0, 70 | -300, 71 | 225, 72 | 0, 73 | 300, 74 | 225, 75 | 0 76 | ], 77 | "indexes": [ 78 | 0, 79 | 1, 80 | 2, 81 | 2, 82 | 1, 83 | 3 84 | ], 85 | "uv": [ 86 | 0, 87 | 450, 88 | 600, 89 | 450, 90 | 0, 91 | 0, 92 | 600, 93 | 0 94 | ], 95 | "nuv": [ 96 | 0, 97 | 0, 98 | 1, 99 | 0, 100 | 0, 101 | 1, 102 | 1, 103 | 1 104 | ], 105 | "minPos": [ 106 | -300, 107 | -225, 108 | 0 109 | ], 110 | "maxPos": [ 111 | 300, 112 | 225, 113 | 0 114 | ] 115 | }, 116 | "isUuid": true, 117 | "imageUuidOrDatabaseUri": "d3de4991-3456-4787-8186-1b548039579c@6c48a", 118 | "atlasUuid": "" 119 | }, 120 | "ver": "1.0.12", 121 | "imported": true, 122 | "files": [ 123 | ".json" 124 | ], 125 | "subMetas": {} 126 | } 127 | }, 128 | "userData": { 129 | "hasAlpha": true, 130 | "type": "sprite-frame", 131 | "fixAlphaTransparencyArtifacts": false, 132 | "redirect": "d3de4991-3456-4787-8186-1b548039579c@6c48a" 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /assets/resources/game/product/oops-moba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/game/product/oops-moba.png -------------------------------------------------------------------------------- /assets/resources/game/product/oops-moba.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "6c1b17dd-cee8-411b-a947-91300be76807", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "6c1b17dd-cee8-411b-a947-91300be76807@6c48a", 14 | "displayName": "oops-moba", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "userData": { 18 | "wrapModeS": "clamp-to-edge", 19 | "wrapModeT": "clamp-to-edge", 20 | "minfilter": "linear", 21 | "magfilter": "linear", 22 | "mipfilter": "none", 23 | "anisotropy": 0, 24 | "isUuid": true, 25 | "imageUuidOrDatabaseUri": "6c1b17dd-cee8-411b-a947-91300be76807", 26 | "visible": false 27 | }, 28 | "ver": "1.0.22", 29 | "imported": true, 30 | "files": [ 31 | ".json" 32 | ], 33 | "subMetas": {} 34 | }, 35 | "f9941": { 36 | "importer": "sprite-frame", 37 | "uuid": "6c1b17dd-cee8-411b-a947-91300be76807@f9941", 38 | "displayName": "oops-moba", 39 | "id": "f9941", 40 | "name": "spriteFrame", 41 | "userData": { 42 | "trimType": "auto", 43 | "trimThreshold": 1, 44 | "rotated": false, 45 | "offsetX": 0, 46 | "offsetY": 0, 47 | "trimX": 0, 48 | "trimY": 0, 49 | "width": 400, 50 | "height": 300, 51 | "rawWidth": 400, 52 | "rawHeight": 300, 53 | "borderTop": 0, 54 | "borderBottom": 0, 55 | "borderLeft": 0, 56 | "borderRight": 0, 57 | "packable": true, 58 | "pixelsToUnit": 100, 59 | "pivotX": 0.5, 60 | "pivotY": 0.5, 61 | "meshType": 0, 62 | "vertices": { 63 | "rawPosition": [ 64 | -200, 65 | -150, 66 | 0, 67 | 200, 68 | -150, 69 | 0, 70 | -200, 71 | 150, 72 | 0, 73 | 200, 74 | 150, 75 | 0 76 | ], 77 | "indexes": [ 78 | 0, 79 | 1, 80 | 2, 81 | 2, 82 | 1, 83 | 3 84 | ], 85 | "uv": [ 86 | 0, 87 | 300, 88 | 400, 89 | 300, 90 | 0, 91 | 0, 92 | 400, 93 | 0 94 | ], 95 | "nuv": [ 96 | 0, 97 | 0, 98 | 1, 99 | 0, 100 | 0, 101 | 1, 102 | 1, 103 | 1 104 | ], 105 | "minPos": [ 106 | -200, 107 | -150, 108 | 0 109 | ], 110 | "maxPos": [ 111 | 200, 112 | 150, 113 | 0 114 | ] 115 | }, 116 | "isUuid": true, 117 | "imageUuidOrDatabaseUri": "6c1b17dd-cee8-411b-a947-91300be76807@6c48a", 118 | "atlasUuid": "" 119 | }, 120 | "ver": "1.0.12", 121 | "imported": true, 122 | "files": [ 123 | ".json" 124 | ], 125 | "subMetas": {} 126 | } 127 | }, 128 | "userData": { 129 | "hasAlpha": true, 130 | "type": "sprite-frame", 131 | "fixAlphaTransparencyArtifacts": false, 132 | "redirect": "6c1b17dd-cee8-411b-a947-91300be76807@6c48a" 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /assets/resources/game/product/oops-net.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/game/product/oops-net.png -------------------------------------------------------------------------------- /assets/resources/game/product/oops-net.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "4b10079c-763d-40a9-b288-199e0a08bbef", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "4b10079c-763d-40a9-b288-199e0a08bbef@6c48a", 14 | "displayName": "oops-net", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "userData": { 18 | "wrapModeS": "clamp-to-edge", 19 | "wrapModeT": "clamp-to-edge", 20 | "minfilter": "linear", 21 | "magfilter": "linear", 22 | "mipfilter": "none", 23 | "anisotropy": 0, 24 | "isUuid": true, 25 | "imageUuidOrDatabaseUri": "4b10079c-763d-40a9-b288-199e0a08bbef", 26 | "visible": false 27 | }, 28 | "ver": "1.0.22", 29 | "imported": true, 30 | "files": [ 31 | ".json" 32 | ], 33 | "subMetas": {} 34 | }, 35 | "f9941": { 36 | "importer": "sprite-frame", 37 | "uuid": "4b10079c-763d-40a9-b288-199e0a08bbef@f9941", 38 | "displayName": "oops-net", 39 | "id": "f9941", 40 | "name": "spriteFrame", 41 | "userData": { 42 | "trimType": "auto", 43 | "trimThreshold": 1, 44 | "rotated": false, 45 | "offsetX": 0, 46 | "offsetY": 0, 47 | "trimX": 0, 48 | "trimY": 0, 49 | "width": 400, 50 | "height": 300, 51 | "rawWidth": 400, 52 | "rawHeight": 300, 53 | "borderTop": 0, 54 | "borderBottom": 0, 55 | "borderLeft": 0, 56 | "borderRight": 0, 57 | "packable": true, 58 | "pixelsToUnit": 100, 59 | "pivotX": 0.5, 60 | "pivotY": 0.5, 61 | "meshType": 0, 62 | "vertices": { 63 | "rawPosition": [ 64 | -200, 65 | -150, 66 | 0, 67 | 200, 68 | -150, 69 | 0, 70 | -200, 71 | 150, 72 | 0, 73 | 200, 74 | 150, 75 | 0 76 | ], 77 | "indexes": [ 78 | 0, 79 | 1, 80 | 2, 81 | 2, 82 | 1, 83 | 3 84 | ], 85 | "uv": [ 86 | 0, 87 | 300, 88 | 400, 89 | 300, 90 | 0, 91 | 0, 92 | 400, 93 | 0 94 | ], 95 | "nuv": [ 96 | 0, 97 | 0, 98 | 1, 99 | 0, 100 | 0, 101 | 1, 102 | 1, 103 | 1 104 | ], 105 | "minPos": [ 106 | -200, 107 | -150, 108 | 0 109 | ], 110 | "maxPos": [ 111 | 200, 112 | 150, 113 | 0 114 | ] 115 | }, 116 | "isUuid": true, 117 | "imageUuidOrDatabaseUri": "4b10079c-763d-40a9-b288-199e0a08bbef@6c48a", 118 | "atlasUuid": "" 119 | }, 120 | "ver": "1.0.12", 121 | "imported": true, 122 | "files": [ 123 | ".json" 124 | ], 125 | "subMetas": {} 126 | } 127 | }, 128 | "userData": { 129 | "hasAlpha": true, 130 | "type": "sprite-frame", 131 | "fixAlphaTransparencyArtifacts": false, 132 | "redirect": "4b10079c-763d-40a9-b288-199e0a08bbef@6c48a" 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /assets/resources/game/product/oops-rpg-player2d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/game/product/oops-rpg-player2d.png -------------------------------------------------------------------------------- /assets/resources/game/product/oops-rpg-player2d.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "0e3767b1-41b1-4dd6-ba8e-9afac0027ca5", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "0e3767b1-41b1-4dd6-ba8e-9afac0027ca5@6c48a", 14 | "displayName": "oops-rpg-player2d", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "userData": { 18 | "wrapModeS": "clamp-to-edge", 19 | "wrapModeT": "clamp-to-edge", 20 | "minfilter": "linear", 21 | "magfilter": "linear", 22 | "mipfilter": "none", 23 | "anisotropy": 0, 24 | "isUuid": true, 25 | "imageUuidOrDatabaseUri": "0e3767b1-41b1-4dd6-ba8e-9afac0027ca5", 26 | "visible": false 27 | }, 28 | "ver": "1.0.22", 29 | "imported": true, 30 | "files": [ 31 | ".json" 32 | ], 33 | "subMetas": {} 34 | }, 35 | "f9941": { 36 | "importer": "sprite-frame", 37 | "uuid": "0e3767b1-41b1-4dd6-ba8e-9afac0027ca5@f9941", 38 | "displayName": "oops-rpg-player2d", 39 | "id": "f9941", 40 | "name": "spriteFrame", 41 | "userData": { 42 | "trimType": "auto", 43 | "trimThreshold": 1, 44 | "rotated": false, 45 | "offsetX": 0, 46 | "offsetY": 0, 47 | "trimX": 0, 48 | "trimY": 0, 49 | "width": 600, 50 | "height": 450, 51 | "rawWidth": 600, 52 | "rawHeight": 450, 53 | "borderTop": 0, 54 | "borderBottom": 0, 55 | "borderLeft": 0, 56 | "borderRight": 0, 57 | "packable": true, 58 | "pixelsToUnit": 100, 59 | "pivotX": 0.5, 60 | "pivotY": 0.5, 61 | "meshType": 0, 62 | "vertices": { 63 | "rawPosition": [ 64 | -300, 65 | -225, 66 | 0, 67 | 300, 68 | -225, 69 | 0, 70 | -300, 71 | 225, 72 | 0, 73 | 300, 74 | 225, 75 | 0 76 | ], 77 | "indexes": [ 78 | 0, 79 | 1, 80 | 2, 81 | 2, 82 | 1, 83 | 3 84 | ], 85 | "uv": [ 86 | 0, 87 | 450, 88 | 600, 89 | 450, 90 | 0, 91 | 0, 92 | 600, 93 | 0 94 | ], 95 | "nuv": [ 96 | 0, 97 | 0, 98 | 1, 99 | 0, 100 | 0, 101 | 1, 102 | 1, 103 | 1 104 | ], 105 | "minPos": [ 106 | -300, 107 | -225, 108 | 0 109 | ], 110 | "maxPos": [ 111 | 300, 112 | 225, 113 | 0 114 | ] 115 | }, 116 | "isUuid": true, 117 | "imageUuidOrDatabaseUri": "0e3767b1-41b1-4dd6-ba8e-9afac0027ca5@6c48a", 118 | "atlasUuid": "" 119 | }, 120 | "ver": "1.0.12", 121 | "imported": true, 122 | "files": [ 123 | ".json" 124 | ], 125 | "subMetas": {} 126 | } 127 | }, 128 | "userData": { 129 | "hasAlpha": true, 130 | "type": "sprite-frame", 131 | "fixAlphaTransparencyArtifacts": false, 132 | "redirect": "0e3767b1-41b1-4dd6-ba8e-9afac0027ca5@6c48a" 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /assets/resources/game/product/oops-rpg-player3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/game/product/oops-rpg-player3d.png -------------------------------------------------------------------------------- /assets/resources/game/product/oops-rpg-player3d.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "d034d979-447a-4772-9c6f-670cf9ad8e8d", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "d034d979-447a-4772-9c6f-670cf9ad8e8d@6c48a", 14 | "displayName": "oops-rpg-player3d", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "userData": { 18 | "wrapModeS": "clamp-to-edge", 19 | "wrapModeT": "clamp-to-edge", 20 | "minfilter": "linear", 21 | "magfilter": "linear", 22 | "mipfilter": "none", 23 | "anisotropy": 0, 24 | "isUuid": true, 25 | "imageUuidOrDatabaseUri": "d034d979-447a-4772-9c6f-670cf9ad8e8d", 26 | "visible": false 27 | }, 28 | "ver": "1.0.22", 29 | "imported": true, 30 | "files": [ 31 | ".json" 32 | ], 33 | "subMetas": {} 34 | }, 35 | "f9941": { 36 | "importer": "sprite-frame", 37 | "uuid": "d034d979-447a-4772-9c6f-670cf9ad8e8d@f9941", 38 | "displayName": "oops-rpg-player3d", 39 | "id": "f9941", 40 | "name": "spriteFrame", 41 | "userData": { 42 | "trimType": "auto", 43 | "trimThreshold": 1, 44 | "rotated": false, 45 | "offsetX": 0, 46 | "offsetY": 0, 47 | "trimX": 0, 48 | "trimY": 0, 49 | "width": 400, 50 | "height": 300, 51 | "rawWidth": 400, 52 | "rawHeight": 300, 53 | "borderTop": 0, 54 | "borderBottom": 0, 55 | "borderLeft": 0, 56 | "borderRight": 0, 57 | "packable": true, 58 | "pixelsToUnit": 100, 59 | "pivotX": 0.5, 60 | "pivotY": 0.5, 61 | "meshType": 0, 62 | "vertices": { 63 | "rawPosition": [ 64 | -200, 65 | -150, 66 | 0, 67 | 200, 68 | -150, 69 | 0, 70 | -200, 71 | 150, 72 | 0, 73 | 200, 74 | 150, 75 | 0 76 | ], 77 | "indexes": [ 78 | 0, 79 | 1, 80 | 2, 81 | 2, 82 | 1, 83 | 3 84 | ], 85 | "uv": [ 86 | 0, 87 | 300, 88 | 400, 89 | 300, 90 | 0, 91 | 0, 92 | 400, 93 | 0 94 | ], 95 | "nuv": [ 96 | 0, 97 | 0, 98 | 1, 99 | 0, 100 | 0, 101 | 1, 102 | 1, 103 | 1 104 | ], 105 | "minPos": [ 106 | -200, 107 | -150, 108 | 0 109 | ], 110 | "maxPos": [ 111 | 200, 112 | 150, 113 | 0 114 | ] 115 | }, 116 | "isUuid": true, 117 | "imageUuidOrDatabaseUri": "d034d979-447a-4772-9c6f-670cf9ad8e8d@6c48a", 118 | "atlasUuid": "" 119 | }, 120 | "ver": "1.0.12", 121 | "imported": true, 122 | "files": [ 123 | ".json" 124 | ], 125 | "subMetas": {} 126 | } 127 | }, 128 | "userData": { 129 | "hasAlpha": true, 130 | "type": "sprite-frame", 131 | "fixAlphaTransparencyArtifacts": false, 132 | "redirect": "d034d979-447a-4772-9c6f-670cf9ad8e8d@6c48a" 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /assets/resources/game/product/oops-tiledmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/game/product/oops-tiledmap.png -------------------------------------------------------------------------------- /assets/resources/game/product/oops-tiledmap.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "dda672ed-158b-414d-96e3-07e5cd5aca1e", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "dda672ed-158b-414d-96e3-07e5cd5aca1e@6c48a", 14 | "displayName": "oops-tiledmap", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "userData": { 18 | "wrapModeS": "clamp-to-edge", 19 | "wrapModeT": "clamp-to-edge", 20 | "minfilter": "linear", 21 | "magfilter": "linear", 22 | "mipfilter": "none", 23 | "anisotropy": 0, 24 | "isUuid": true, 25 | "imageUuidOrDatabaseUri": "dda672ed-158b-414d-96e3-07e5cd5aca1e", 26 | "visible": false 27 | }, 28 | "ver": "1.0.22", 29 | "imported": true, 30 | "files": [ 31 | ".json" 32 | ], 33 | "subMetas": {} 34 | }, 35 | "f9941": { 36 | "importer": "sprite-frame", 37 | "uuid": "dda672ed-158b-414d-96e3-07e5cd5aca1e@f9941", 38 | "displayName": "oops-tiledmap", 39 | "id": "f9941", 40 | "name": "spriteFrame", 41 | "userData": { 42 | "trimType": "auto", 43 | "trimThreshold": 1, 44 | "rotated": false, 45 | "offsetX": 0, 46 | "offsetY": 0, 47 | "trimX": 0, 48 | "trimY": 0, 49 | "width": 400, 50 | "height": 300, 51 | "rawWidth": 400, 52 | "rawHeight": 300, 53 | "borderTop": 0, 54 | "borderBottom": 0, 55 | "borderLeft": 0, 56 | "borderRight": 0, 57 | "packable": true, 58 | "pixelsToUnit": 100, 59 | "pivotX": 0.5, 60 | "pivotY": 0.5, 61 | "meshType": 0, 62 | "vertices": { 63 | "rawPosition": [ 64 | -200, 65 | -150, 66 | 0, 67 | 200, 68 | -150, 69 | 0, 70 | -200, 71 | 150, 72 | 0, 73 | 200, 74 | 150, 75 | 0 76 | ], 77 | "indexes": [ 78 | 0, 79 | 1, 80 | 2, 81 | 2, 82 | 1, 83 | 3 84 | ], 85 | "uv": [ 86 | 0, 87 | 300, 88 | 400, 89 | 300, 90 | 0, 91 | 0, 92 | 400, 93 | 0 94 | ], 95 | "nuv": [ 96 | 0, 97 | 0, 98 | 1, 99 | 0, 100 | 0, 101 | 1, 102 | 1, 103 | 1 104 | ], 105 | "minPos": [ 106 | -200, 107 | -150, 108 | 0 109 | ], 110 | "maxPos": [ 111 | 200, 112 | 150, 113 | 0 114 | ] 115 | }, 116 | "isUuid": true, 117 | "imageUuidOrDatabaseUri": "dda672ed-158b-414d-96e3-07e5cd5aca1e@6c48a", 118 | "atlasUuid": "" 119 | }, 120 | "ver": "1.0.12", 121 | "imported": true, 122 | "files": [ 123 | ".json" 124 | ], 125 | "subMetas": {} 126 | } 127 | }, 128 | "userData": { 129 | "hasAlpha": true, 130 | "type": "sprite-frame", 131 | "fixAlphaTransparencyArtifacts": false, 132 | "redirect": "dda672ed-158b-414d-96e3-07e5cd5aca1e@6c48a" 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /assets/resources/game/product/oops-turn-battle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/game/product/oops-turn-battle.png -------------------------------------------------------------------------------- /assets/resources/game/product/oops-turn-battle.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "85df24a3-5dd8-4e14-a427-060b2e841f53", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "85df24a3-5dd8-4e14-a427-060b2e841f53@6c48a", 14 | "displayName": "oops-turn-battle", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "userData": { 18 | "wrapModeS": "clamp-to-edge", 19 | "wrapModeT": "clamp-to-edge", 20 | "minfilter": "linear", 21 | "magfilter": "linear", 22 | "mipfilter": "none", 23 | "anisotropy": 0, 24 | "isUuid": true, 25 | "imageUuidOrDatabaseUri": "85df24a3-5dd8-4e14-a427-060b2e841f53", 26 | "visible": false 27 | }, 28 | "ver": "1.0.22", 29 | "imported": true, 30 | "files": [ 31 | ".json" 32 | ], 33 | "subMetas": {} 34 | }, 35 | "f9941": { 36 | "importer": "sprite-frame", 37 | "uuid": "85df24a3-5dd8-4e14-a427-060b2e841f53@f9941", 38 | "displayName": "oops-turn-battle", 39 | "id": "f9941", 40 | "name": "spriteFrame", 41 | "userData": { 42 | "trimType": "auto", 43 | "trimThreshold": 1, 44 | "rotated": false, 45 | "offsetX": 0, 46 | "offsetY": 0, 47 | "trimX": 0, 48 | "trimY": 0, 49 | "width": 660, 50 | "height": 495, 51 | "rawWidth": 660, 52 | "rawHeight": 495, 53 | "borderTop": 0, 54 | "borderBottom": 0, 55 | "borderLeft": 0, 56 | "borderRight": 0, 57 | "packable": true, 58 | "pixelsToUnit": 100, 59 | "pivotX": 0.5, 60 | "pivotY": 0.5, 61 | "meshType": 0, 62 | "vertices": { 63 | "rawPosition": [ 64 | -330, 65 | -247.5, 66 | 0, 67 | 330, 68 | -247.5, 69 | 0, 70 | -330, 71 | 247.5, 72 | 0, 73 | 330, 74 | 247.5, 75 | 0 76 | ], 77 | "indexes": [ 78 | 0, 79 | 1, 80 | 2, 81 | 2, 82 | 1, 83 | 3 84 | ], 85 | "uv": [ 86 | 0, 87 | 495, 88 | 660, 89 | 495, 90 | 0, 91 | 0, 92 | 660, 93 | 0 94 | ], 95 | "nuv": [ 96 | 0, 97 | 0, 98 | 1, 99 | 0, 100 | 0, 101 | 1, 102 | 1, 103 | 1 104 | ], 105 | "minPos": [ 106 | -330, 107 | -247.5, 108 | 0 109 | ], 110 | "maxPos": [ 111 | 330, 112 | 247.5, 113 | 0 114 | ] 115 | }, 116 | "isUuid": true, 117 | "imageUuidOrDatabaseUri": "85df24a3-5dd8-4e14-a427-060b2e841f53@6c48a", 118 | "atlasUuid": "" 119 | }, 120 | "ver": "1.0.12", 121 | "imported": true, 122 | "files": [ 123 | ".json" 124 | ], 125 | "subMetas": {} 126 | } 127 | }, 128 | "userData": { 129 | "hasAlpha": true, 130 | "type": "sprite-frame", 131 | "fixAlphaTransparencyArtifacts": false, 132 | "redirect": "85df24a3-5dd8-4e14-a427-060b2e841f53@6c48a" 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /assets/resources/game/product/oops-tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/game/product/oops-tutorial.png -------------------------------------------------------------------------------- /assets/resources/game/product/oops-tutorial.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "3f3e5a01-8a46-4aec-affb-e23d403fc166", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "3f3e5a01-8a46-4aec-affb-e23d403fc166@6c48a", 14 | "displayName": "oops-tutorial", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "userData": { 18 | "wrapModeS": "clamp-to-edge", 19 | "wrapModeT": "clamp-to-edge", 20 | "minfilter": "linear", 21 | "magfilter": "linear", 22 | "mipfilter": "none", 23 | "anisotropy": 0, 24 | "isUuid": true, 25 | "imageUuidOrDatabaseUri": "3f3e5a01-8a46-4aec-affb-e23d403fc166", 26 | "visible": false 27 | }, 28 | "ver": "1.0.22", 29 | "imported": true, 30 | "files": [ 31 | ".json" 32 | ], 33 | "subMetas": {} 34 | }, 35 | "f9941": { 36 | "importer": "sprite-frame", 37 | "uuid": "3f3e5a01-8a46-4aec-affb-e23d403fc166@f9941", 38 | "displayName": "oops-tutorial", 39 | "id": "f9941", 40 | "name": "spriteFrame", 41 | "userData": { 42 | "trimType": "auto", 43 | "trimThreshold": 1, 44 | "rotated": false, 45 | "offsetX": 0, 46 | "offsetY": 0, 47 | "trimX": 0, 48 | "trimY": 0, 49 | "width": 600, 50 | "height": 450, 51 | "rawWidth": 600, 52 | "rawHeight": 450, 53 | "borderTop": 0, 54 | "borderBottom": 0, 55 | "borderLeft": 0, 56 | "borderRight": 0, 57 | "packable": true, 58 | "pixelsToUnit": 100, 59 | "pivotX": 0.5, 60 | "pivotY": 0.5, 61 | "meshType": 0, 62 | "vertices": { 63 | "rawPosition": [ 64 | -300, 65 | -225, 66 | 0, 67 | 300, 68 | -225, 69 | 0, 70 | -300, 71 | 225, 72 | 0, 73 | 300, 74 | 225, 75 | 0 76 | ], 77 | "indexes": [ 78 | 0, 79 | 1, 80 | 2, 81 | 2, 82 | 1, 83 | 3 84 | ], 85 | "uv": [ 86 | 0, 87 | 450, 88 | 600, 89 | 450, 90 | 0, 91 | 0, 92 | 600, 93 | 0 94 | ], 95 | "nuv": [ 96 | 0, 97 | 0, 98 | 1, 99 | 0, 100 | 0, 101 | 1, 102 | 1, 103 | 1 104 | ], 105 | "minPos": [ 106 | -300, 107 | -225, 108 | 0 109 | ], 110 | "maxPos": [ 111 | 300, 112 | 225, 113 | 0 114 | ] 115 | }, 116 | "isUuid": true, 117 | "imageUuidOrDatabaseUri": "3f3e5a01-8a46-4aec-affb-e23d403fc166@6c48a", 118 | "atlasUuid": "" 119 | }, 120 | "ver": "1.0.12", 121 | "imported": true, 122 | "files": [ 123 | ".json" 124 | ], 125 | "subMetas": {} 126 | } 127 | }, 128 | "userData": { 129 | "hasAlpha": true, 130 | "type": "sprite-frame", 131 | "fixAlphaTransparencyArtifacts": false, 132 | "redirect": "3f3e5a01-8a46-4aec-affb-e23d403fc166@6c48a" 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /assets/resources/game/product/oops-war-chess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/game/product/oops-war-chess.png -------------------------------------------------------------------------------- /assets/resources/game/product/oops-war-chess.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "0caa8593-eab0-4c16-9262-edb4f671bada", 6 | "files": [ 7 | ".json", 8 | ".png" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "0caa8593-eab0-4c16-9262-edb4f671bada@6c48a", 14 | "displayName": "oops-war-chess", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "userData": { 18 | "wrapModeS": "clamp-to-edge", 19 | "wrapModeT": "clamp-to-edge", 20 | "minfilter": "linear", 21 | "magfilter": "linear", 22 | "mipfilter": "none", 23 | "anisotropy": 0, 24 | "isUuid": true, 25 | "imageUuidOrDatabaseUri": "0caa8593-eab0-4c16-9262-edb4f671bada", 26 | "visible": false 27 | }, 28 | "ver": "1.0.22", 29 | "imported": true, 30 | "files": [ 31 | ".json" 32 | ], 33 | "subMetas": {} 34 | }, 35 | "f9941": { 36 | "importer": "sprite-frame", 37 | "uuid": "0caa8593-eab0-4c16-9262-edb4f671bada@f9941", 38 | "displayName": "oops-war-chess", 39 | "id": "f9941", 40 | "name": "spriteFrame", 41 | "userData": { 42 | "trimType": "auto", 43 | "trimThreshold": 1, 44 | "rotated": false, 45 | "offsetX": 0, 46 | "offsetY": 0, 47 | "trimX": 0, 48 | "trimY": 0, 49 | "width": 400, 50 | "height": 300, 51 | "rawWidth": 400, 52 | "rawHeight": 300, 53 | "borderTop": 0, 54 | "borderBottom": 0, 55 | "borderLeft": 0, 56 | "borderRight": 0, 57 | "packable": true, 58 | "pixelsToUnit": 100, 59 | "pivotX": 0.5, 60 | "pivotY": 0.5, 61 | "meshType": 0, 62 | "vertices": { 63 | "rawPosition": [ 64 | -200, 65 | -150, 66 | 0, 67 | 200, 68 | -150, 69 | 0, 70 | -200, 71 | 150, 72 | 0, 73 | 200, 74 | 150, 75 | 0 76 | ], 77 | "indexes": [ 78 | 0, 79 | 1, 80 | 2, 81 | 2, 82 | 1, 83 | 3 84 | ], 85 | "uv": [ 86 | 0, 87 | 300, 88 | 400, 89 | 300, 90 | 0, 91 | 0, 92 | 400, 93 | 0 94 | ], 95 | "nuv": [ 96 | 0, 97 | 0, 98 | 1, 99 | 0, 100 | 0, 101 | 1, 102 | 1, 103 | 1 104 | ], 105 | "minPos": [ 106 | -200, 107 | -150, 108 | 0 109 | ], 110 | "maxPos": [ 111 | 200, 112 | 150, 113 | 0 114 | ] 115 | }, 116 | "isUuid": true, 117 | "imageUuidOrDatabaseUri": "0caa8593-eab0-4c16-9262-edb4f671bada@6c48a", 118 | "atlasUuid": "" 119 | }, 120 | "ver": "1.0.12", 121 | "imported": true, 122 | "files": [ 123 | ".json" 124 | ], 125 | "subMetas": {} 126 | } 127 | }, 128 | "userData": { 129 | "hasAlpha": true, 130 | "type": "sprite-frame", 131 | "fixAlphaTransparencyArtifacts": false, 132 | "redirect": "0caa8593-eab0-4c16-9262-edb4f671bada@6c48a" 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /assets/resources/gui.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "8082dcd2-510f-4867-b2f1-c377843e16b4", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/gui/prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "e05e3ca3-6657-4d57-8c14-544b16c49d9f", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/gui/prefab/demo.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.50", 3 | "importer": "prefab", 4 | "imported": true, 5 | "uuid": "5b6511a4-181b-4c81-9f9c-51e4c21b4d64", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "syncNodeName": "demo" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/gui/prefab/role_info.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.50", 3 | "importer": "prefab", 4 | "imported": true, 5 | "uuid": "5d143d96-858f-4478-8bb4-f8279e87b509", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "syncNodeName": "role_info" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/gui/prefab/role_info_base.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.50", 3 | "importer": "prefab", 4 | "imported": true, 5 | "uuid": "3ca889da-d664-4591-a123-063073c6609b", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "syncNodeName": "role_info_base" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/language.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "212e9f36-3089-49a2-80d3-28e93d0d19f1", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/language/font.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "4e04435b-8879-4f78-9114-21d89189a7b9", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/language/json.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "92204c5e-0e0d-437c-9b83-4bc1d2994a5d", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/language/json/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "common_prompt_ok": "ok", 3 | "common_prompt_cancal": "cancal", 4 | "common_prompt_title_sys": "System Prompt", 5 | "common_prompt_content": "System Prompt Cpmtemt", 6 | "common_prompt": "common_prompt", 7 | "notify_show": "notify_show", 8 | "btn_rich_text": "RichText", 9 | "btn_demo_lang": "English", 10 | "btn_common_prompt": "Public Pop", 11 | "btn_notify_show": "Prompt", 12 | "netInstableOpen": "Waiting ", 13 | "btn_audio_open1": "Music", 14 | "btn_audio_open2": "Effect", 15 | "btn_long": "Long Press", 16 | "loading_load_json": "Load Json", 17 | "loading_load_game": "Load Content", 18 | "loading_load_player": "Get user information", 19 | "role_name": "Name", 20 | "role_lv": "Level", 21 | "role_hp": "HP", 22 | "role_power": "Power", 23 | "role_physical": "Physical", 24 | "role_agile": "Agile" 25 | } -------------------------------------------------------------------------------- /assets/resources/language/json/en.json.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.1", 3 | "importer": "json", 4 | "imported": true, 5 | "uuid": "2c0f4643-d84a-49b9-9069-8efe9434304c", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": {} 11 | } 12 | -------------------------------------------------------------------------------- /assets/resources/language/json/zh.json: -------------------------------------------------------------------------------- 1 | { 2 | "common_prompt_ok": "确定", 3 | "common_prompt_cancal": "取消", 4 | "common_prompt_title_sys": "系统提示", 5 | "common_prompt_content": "系统提示内容", 6 | "common_prompt": "公共弹窗", 7 | "notify_show": "信息显示", 8 | "update_tips_force": "当前版本过旧,需要下载新的安装包才能进行游戏,是否更新?", 9 | "update_tips_load_config": "加载配置中", 10 | "update_tips_load_game": "加载游戏中", 11 | "update_tips_check_update": "检查更新中", 12 | "update_tips_new_version": "发现新版本资源", 13 | "update_tips_success": "更新完成,点击确定重启游戏", 14 | "update_tips_update": "更新中:", 15 | "update_tips_update_fail": "更新失败", 16 | "update_tips_update_fail_click_retry": "更新失败,点击重试", 17 | "update_tips_update_success": "更新成功", 18 | "btn_rich_text": "文本", 19 | "btn_demo_lang": "中文", 20 | "btn_common_prompt": "公共弹窗", 21 | "btn_notify_show": "提示信息", 22 | "netInstableOpen": "等待动画", 23 | "btn_audio_open1": "音乐播放", 24 | "btn_audio_open2": "音效播放", 25 | "btn_long": "长按按钮", 26 | "loading_load_json": "加载游戏本地数据", 27 | "loading_load_game": "加载游戏内容", 28 | "loading_load_player": "获取用户信息", 29 | "role_name": "名字", 30 | "role_lv": "等级", 31 | "role_hp": "生命", 32 | "role_power": "力量", 33 | "role_physical": "体质", 34 | "role_agile": "敏捷" 35 | } -------------------------------------------------------------------------------- /assets/resources/language/json/zh.json.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.1", 3 | "importer": "json", 4 | "imported": true, 5 | "uuid": "f39d9bde-aff1-4255-846f-cbc4169d5d45", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": {} 11 | } 12 | -------------------------------------------------------------------------------- /assets/resources/language/spine.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "d4b2745d-3af5-4ffa-8b11-b0ac6a927551", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/language/spine/en.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "e8088a3d-b4df-4b8a-9f19-0d827bfdc88c", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/language/spine/zh.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "f5d2cf6b-9a62-473b-9284-cb90c020409e", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/language/texture.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "b67a859f-640d-4a5a-825e-51971fed24a5", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/language/texture/en.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "ec976edd-f0a0-4f29-a3f9-c803b92ef9be", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/language/texture/en/image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/language/texture/en/image.jpg -------------------------------------------------------------------------------- /assets/resources/language/texture/en/image.jpg.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "3d5b607a-face-426b-8200-acf8384108db", 6 | "files": [ 7 | ".jpg", 8 | ".json" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "3d5b607a-face-426b-8200-acf8384108db@6c48a", 14 | "displayName": "image", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "userData": { 18 | "wrapModeS": "clamp-to-edge", 19 | "wrapModeT": "clamp-to-edge", 20 | "minfilter": "linear", 21 | "magfilter": "linear", 22 | "mipfilter": "none", 23 | "anisotropy": 0, 24 | "isUuid": true, 25 | "imageUuidOrDatabaseUri": "3d5b607a-face-426b-8200-acf8384108db", 26 | "visible": false 27 | }, 28 | "ver": "1.0.22", 29 | "imported": true, 30 | "files": [ 31 | ".json" 32 | ], 33 | "subMetas": {} 34 | }, 35 | "f9941": { 36 | "importer": "sprite-frame", 37 | "uuid": "3d5b607a-face-426b-8200-acf8384108db@f9941", 38 | "displayName": "image", 39 | "id": "f9941", 40 | "name": "spriteFrame", 41 | "userData": { 42 | "trimType": "auto", 43 | "trimThreshold": 1, 44 | "rotated": false, 45 | "offsetX": 0, 46 | "offsetY": 0, 47 | "trimX": 0, 48 | "trimY": 0, 49 | "width": 110, 50 | "height": 50, 51 | "rawWidth": 110, 52 | "rawHeight": 50, 53 | "borderTop": 0, 54 | "borderBottom": 0, 55 | "borderLeft": 0, 56 | "borderRight": 0, 57 | "packable": true, 58 | "isUuid": true, 59 | "imageUuidOrDatabaseUri": "3d5b607a-face-426b-8200-acf8384108db@6c48a", 60 | "atlasUuid": "", 61 | "pixelsToUnit": 100, 62 | "pivotX": 0.5, 63 | "pivotY": 0.5, 64 | "meshType": 0, 65 | "vertices": { 66 | "rawPosition": [ 67 | -55, 68 | -25, 69 | 0, 70 | 55, 71 | -25, 72 | 0, 73 | -55, 74 | 25, 75 | 0, 76 | 55, 77 | 25, 78 | 0 79 | ], 80 | "indexes": [ 81 | 0, 82 | 1, 83 | 2, 84 | 2, 85 | 1, 86 | 3 87 | ], 88 | "uv": [ 89 | 0, 90 | 50, 91 | 110, 92 | 50, 93 | 0, 94 | 0, 95 | 110, 96 | 0 97 | ], 98 | "nuv": [ 99 | 0, 100 | 0, 101 | 1, 102 | 0, 103 | 0, 104 | 1, 105 | 1, 106 | 1 107 | ], 108 | "minPos": [ 109 | -55, 110 | -25, 111 | 0 112 | ], 113 | "maxPos": [ 114 | 55, 115 | 25, 116 | 0 117 | ] 118 | } 119 | }, 120 | "ver": "1.0.12", 121 | "imported": true, 122 | "files": [ 123 | ".json" 124 | ], 125 | "subMetas": {} 126 | } 127 | }, 128 | "userData": { 129 | "hasAlpha": true, 130 | "type": "sprite-frame", 131 | "redirect": "3d5b607a-face-426b-8200-acf8384108db@6c48a", 132 | "fixAlphaTransparencyArtifacts": false 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /assets/resources/language/texture/en/loading.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "e79d002c-c98c-4322-a4dd-6245ee40a7cc", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/language/texture/zh.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "c03f86e4-9b94-4703-a944-93c83c0c07fd", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/language/texture/zh/image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/language/texture/zh/image.jpg -------------------------------------------------------------------------------- /assets/resources/language/texture/zh/image.jpg.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.27", 3 | "importer": "image", 4 | "imported": true, 5 | "uuid": "a65eaaec-d315-4134-a79e-23bb817d1939", 6 | "files": [ 7 | ".jpg", 8 | ".json" 9 | ], 10 | "subMetas": { 11 | "6c48a": { 12 | "importer": "texture", 13 | "uuid": "a65eaaec-d315-4134-a79e-23bb817d1939@6c48a", 14 | "displayName": "image", 15 | "id": "6c48a", 16 | "name": "texture", 17 | "userData": { 18 | "wrapModeS": "clamp-to-edge", 19 | "wrapModeT": "clamp-to-edge", 20 | "minfilter": "linear", 21 | "magfilter": "linear", 22 | "mipfilter": "none", 23 | "anisotropy": 0, 24 | "isUuid": true, 25 | "imageUuidOrDatabaseUri": "a65eaaec-d315-4134-a79e-23bb817d1939", 26 | "visible": false 27 | }, 28 | "ver": "1.0.22", 29 | "imported": true, 30 | "files": [ 31 | ".json" 32 | ], 33 | "subMetas": {} 34 | }, 35 | "f9941": { 36 | "importer": "sprite-frame", 37 | "uuid": "a65eaaec-d315-4134-a79e-23bb817d1939@f9941", 38 | "displayName": "image", 39 | "id": "f9941", 40 | "name": "spriteFrame", 41 | "userData": { 42 | "trimType": "auto", 43 | "trimThreshold": 1, 44 | "rotated": false, 45 | "offsetX": 0, 46 | "offsetY": 0, 47 | "trimX": 0, 48 | "trimY": 0, 49 | "width": 110, 50 | "height": 50, 51 | "rawWidth": 110, 52 | "rawHeight": 50, 53 | "borderTop": 0, 54 | "borderBottom": 0, 55 | "borderLeft": 0, 56 | "borderRight": 0, 57 | "packable": true, 58 | "isUuid": true, 59 | "imageUuidOrDatabaseUri": "a65eaaec-d315-4134-a79e-23bb817d1939@6c48a", 60 | "atlasUuid": "", 61 | "pixelsToUnit": 100, 62 | "pivotX": 0.5, 63 | "pivotY": 0.5, 64 | "meshType": 0, 65 | "vertices": { 66 | "rawPosition": [ 67 | -55, 68 | -25, 69 | 0, 70 | 55, 71 | -25, 72 | 0, 73 | -55, 74 | 25, 75 | 0, 76 | 55, 77 | 25, 78 | 0 79 | ], 80 | "indexes": [ 81 | 0, 82 | 1, 83 | 2, 84 | 2, 85 | 1, 86 | 3 87 | ], 88 | "uv": [ 89 | 0, 90 | 50, 91 | 110, 92 | 50, 93 | 0, 94 | 0, 95 | 110, 96 | 0 97 | ], 98 | "nuv": [ 99 | 0, 100 | 0, 101 | 1, 102 | 0, 103 | 0, 104 | 1, 105 | 1, 106 | 1 107 | ], 108 | "minPos": [ 109 | -55, 110 | -25, 111 | 0 112 | ], 113 | "maxPos": [ 114 | 55, 115 | 25, 116 | 0 117 | ] 118 | } 119 | }, 120 | "ver": "1.0.12", 121 | "imported": true, 122 | "files": [ 123 | ".json" 124 | ], 125 | "subMetas": {} 126 | } 127 | }, 128 | "userData": { 129 | "hasAlpha": true, 130 | "type": "sprite-frame", 131 | "redirect": "a65eaaec-d315-4134-a79e-23bb817d1939@6c48a", 132 | "fixAlphaTransparencyArtifacts": false 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /assets/resources/language/texture/zh/loading.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "cd00637d-4593-42b4-be01-711e6920e88b", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/loading.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "c2392cff-8a0b-4baa-95de-e3bfe2999f3c", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": { 10 | "wechatgame": "zip" 11 | }, 12 | "isRemoteBundle": { 13 | "wechatgame": true, 14 | "web-mobile": true, 15 | "web-desktop": true 16 | }, 17 | "isBundle": false 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /assets/resources/loading/loading.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "989ba6a5-5936-4360-802e-82a5a22158da", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/loading/loading/texture.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "9df30361-6dbb-444f-8809-df0b7fd3f29e", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/loading/loading/texture/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/loading/loading/texture/bg.png -------------------------------------------------------------------------------- /assets/resources/loading/loading/texture/icon_loading_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/loading/loading/texture/icon_loading_bar.png -------------------------------------------------------------------------------- /assets/resources/loading/loading/texture/panel_loading_bottom_frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/assets/resources/loading/loading/texture/panel_loading_bottom_frame.png -------------------------------------------------------------------------------- /assets/resources/loading/prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "9e4a59af-22c3-4c0b-b864-98193db88d5f", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/loading/prefab/loading.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.50", 3 | "importer": "prefab", 4 | "imported": true, 5 | "uuid": "b3142304-c27f-4492-b94f-551d154a2bf4", 6 | "files": [ 7 | ".json" 8 | ], 9 | "subMetas": {}, 10 | "userData": { 11 | "syncNodeName": "loading" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/resources/project.manifest.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "importer": "*", 4 | "imported": true, 5 | "uuid": "acbe03ba-4e92-43cf-a521-c5337c12e38b", 6 | "files": [ 7 | ".json", 8 | ".manifest" 9 | ], 10 | "subMetas": {}, 11 | "userData": {} 12 | } 13 | -------------------------------------------------------------------------------- /assets/resources/version.manifest: -------------------------------------------------------------------------------- 1 | {"packageUrl":"http://127.0.0.1/android/1.0.0.1","version":"1.0.0.1","remoteManifestUrl":"http://127.0.0.1/android/project.manifest","remoteVersionUrl":"http://127.0.0.1/android/version.manifest"} -------------------------------------------------------------------------------- /assets/resources/version.manifest.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "importer": "*", 4 | "imported": true, 5 | "uuid": "4eada1a4-cb98-4e24-ba67-fa8126531d52", 6 | "files": [ 7 | ".json", 8 | ".manifest" 9 | ], 10 | "subMetas": {}, 11 | "userData": {} 12 | } 13 | -------------------------------------------------------------------------------- /assets/script.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "c71845dc-9d65-4d6d-8aca-dcb8079e4aae", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/Main.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-07-03 16:13:17 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2023-01-19 15:28:28 6 | */ 7 | import { DynamicAtlasManager, _decorator, macro, profiler } from 'cc'; 8 | import { DEBUG, JSB } from 'cc/env'; 9 | import { oops } from '../../extensions/oops-plugin-framework/assets/core/Oops'; 10 | import { Root } from '../../extensions/oops-plugin-framework/assets/core/Root'; 11 | import { ecs } from '../../extensions/oops-plugin-framework/assets/libs/ecs/ECS'; 12 | import { UIConfigData } from './game/common/config/GameUIConfig'; 13 | import { smc } from './game/common/ecs/SingletonModuleComp'; 14 | import { EcsPositionSystem } from './game/common/ecs/position/EcsPositionSystem'; 15 | import { Initialize } from './game/initialize/Initialize'; 16 | 17 | const { ccclass, property } = _decorator; 18 | 19 | macro.CLEANUP_IMAGE_CACHE = false; 20 | DynamicAtlasManager.instance.enabled = true; 21 | DynamicAtlasManager.instance.maxFrameSize = 512; 22 | 23 | @ccclass('Main') 24 | export class Main extends Root { 25 | start() { 26 | if (DEBUG) profiler.showStats(); 27 | } 28 | 29 | protected run() { 30 | smc.initialize = ecs.getEntity(Initialize); 31 | if (JSB) { 32 | oops.gui.toast("热更新后新程序的提示"); 33 | } 34 | } 35 | 36 | protected initGui() { 37 | oops.gui.init(UIConfigData); 38 | } 39 | 40 | protected async initEcsSystem() { 41 | oops.ecs.add(new EcsPositionSystem()) 42 | // oops.ecs.add(new EcsAccountSystem()); 43 | // oops.ecs.add(new EcsRoleSystem()); 44 | // oops.ecs.add(new EcsInitializeSystem()); 45 | } 46 | } -------------------------------------------------------------------------------- /assets/script/Main.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "0eec0b38-aab6-45ee-89cf-95806b0fecbe", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "moduleId": "project:///assets/script/Main.js", 10 | "importerSettings": 4, 11 | "simulateGlobals": [] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/script/game.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "b8688d91-9274-40b5-a605-23ee4e5a4eec", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/account.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "a4fb13ea-4a93-40fd-adbd-bb220cfe8336", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/account/Account.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-11-11 17:45:23 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-08-01 13:49:37 6 | */ 7 | 8 | import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops"; 9 | import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 10 | import { GameEvent } from "../common/config/GameEvent"; 11 | import { AccountNetDataComp, AccountNetDataSystem } from "./bll/AccountNetData"; 12 | import { AccountModelComp } from "./model/AccountModelComp"; 13 | 14 | /** 15 | * 账号模块 16 | * 1、连接游戏服务器 17 | * 2、登录玩家帐号,获取玩家信息 18 | * 3、断线重连接 19 | */ 20 | @ecs.register('Account') 21 | export class Account extends ecs.Entity { 22 | AccountModel!: AccountModelComp; 23 | AccountNetData!: AccountNetDataComp; 24 | 25 | protected init() { 26 | this.addComponents(AccountModelComp); 27 | this.addEvent(); 28 | } 29 | 30 | destroy(): void { 31 | this.removeEvent(); 32 | super.destroy(); 33 | } 34 | 35 | /** 添加全局消息事件 */ 36 | private addEvent() { 37 | oops.message.on(GameEvent.GameServerConnected, this.onHandler, this); 38 | } 39 | 40 | /** 移除全局消息事件 */ 41 | private removeEvent() { 42 | oops.message.off(GameEvent.GameServerConnected, this.onHandler, this); 43 | } 44 | 45 | private onHandler(event: string, args: any) { 46 | switch (event) { 47 | case GameEvent.GameServerConnected: 48 | this.getPlayer(); 49 | break; 50 | } 51 | } 52 | 53 | /** 连接游戏服务器 */ 54 | connect() { 55 | // netChannel.gameCreate(); 56 | // netChannel.gameConnect(); 57 | 58 | // 无网状态下测试代码,有网络时会通过触发网络连接成功事件对接后续流程 59 | oops.message.dispatchEvent(GameEvent.GameServerConnected) 60 | } 61 | 62 | /** 获取玩家信息 */ 63 | getPlayer() { 64 | this.add(AccountNetDataComp); 65 | } 66 | } 67 | 68 | // export class EcsAccountSystem extends ecs.System { 69 | // constructor() { 70 | // super(); 71 | 72 | // this.add(new AccountNetDataSystem()); 73 | // } 74 | // } 75 | -------------------------------------------------------------------------------- /assets/script/game/account/Account.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "33c06a92-3daf-4c45-b4d4-39fd6efbb491", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/account/AccountModelComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "8f35d0a4-3ee2-4a90-a175-f49e9515e7f1", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/account/AccountNetDataComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "cd124d00-d854-4283-baf8-9c9d463ef23b", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/account/bll.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "829c1899-3552-4c56-8e03-5d056c1001f3", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/account/bll/AccountNetData.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-11-23 15:51:15 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-07-25 17:03:54 6 | */ 7 | 8 | import { v3 } from "cc"; 9 | import { oops } from "../../../../../extensions/oops-plugin-framework/assets/core/Oops"; 10 | import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 11 | import { GameEvent } from "../../common/config/GameEvent"; 12 | import { Role } from "../../role/Role"; 13 | import { Account } from "../Account"; 14 | import { AccountModelComp } from "../model/AccountModelComp"; 15 | 16 | /** 请求玩家游戏数据 */ 17 | @ecs.register('AccountNetData') 18 | export class AccountNetDataComp extends ecs.Comp { 19 | reset() { } 20 | } 21 | 22 | /** 请求玩家游戏数据 */ 23 | @ecs.register('Account') 24 | export class AccountNetDataSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem { 25 | filter(): ecs.IMatcher { 26 | return ecs.allOf(AccountNetDataComp, AccountModelComp); 27 | } 28 | 29 | entityEnter(e: Account): void { 30 | let onComplete = { 31 | target: this, 32 | callback: (data: any) => { 33 | // 设置本地存储的用户标识(用于下次登录不输入帐号) 34 | this.setLocalStorage(data.id); 35 | 36 | // 创建玩家角色对象 37 | this.createRole(e, data); 38 | 39 | // 玩家登录成功事件 40 | oops.message.dispatchEvent(GameEvent.LoginSuccess); 41 | } 42 | } 43 | 44 | // 离线测试代码开始 45 | var data = { 46 | id: 1, 47 | name: "Oops", 48 | power: 10, 49 | agile: 10, 50 | physical: 10, 51 | lv: 1, 52 | jobId: 1 53 | } 54 | onComplete.callback(data); 55 | // 离线测试代码结束 56 | 57 | e.remove(AccountNetDataComp); 58 | } 59 | 60 | /** 创建角色对象(自定义逻辑) */ 61 | private createRole(e: Account, data: any) { 62 | var role = ecs.getEntity(Role); 63 | 64 | // 角色数据 65 | role.RoleModel.id = data.id; 66 | role.RoleModel.name = data.name; 67 | 68 | // 角色初始战斗属性 69 | role.RoleModelBase.power = data.power; 70 | role.RoleModelBase.agile = data.agile; 71 | role.RoleModelBase.physical = data.physical; 72 | 73 | // 角色等级数据 74 | role.upgrade(data.lv); 75 | 76 | // 角色职业数据 77 | role.RoleModelJob.id = data.jobId; 78 | 79 | // 角色基础属性绑定到界面上显示 80 | role.RoleModel.vmAdd(); 81 | // 角色等级属性绑定到界面上显示 82 | role.RoleModelLevel.vmAdd(); 83 | // 角色初始基础属性绑定到界面上显示 84 | role.RoleModelBase.vmAdd(); 85 | 86 | // 角色动画显示对象 87 | role.load(oops.gui.game, v3(0, -300, 0)); 88 | 89 | e.AccountModel.role = role; 90 | } 91 | 92 | /** 设置本地存储的用户标识 */ 93 | private setLocalStorage(uid: string) { 94 | oops.storage.setUser(uid); 95 | oops.storage.set("account", uid); 96 | } 97 | } -------------------------------------------------------------------------------- /assets/script/game/account/bll/AccountNetData.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "699d5d4d-783e-4d45-bebd-93cd46f999f1", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/account/model.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "35161e65-2087-41b4-b51d-1130a52e6207", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/account/model/AccountModelComp.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* 4 | * @Author: dgflash 5 | * @Date: 2021-11-12 10:02:31 6 | * @LastEditors: dgflash 7 | * @LastEditTime: 2022-07-25 17:03:45 8 | */ 9 | 10 | import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 11 | import { Role } from "../../role/Role"; 12 | 13 | /** 14 | * 游戏帐号数据 15 | */ 16 | @ecs.register('AccountModel') 17 | export class AccountModelComp extends ecs.Comp { 18 | /** 资源列表 */ 19 | currency: any = {}; 20 | /** 角色对象 */ 21 | role: Role = null!; 22 | 23 | reset() { 24 | 25 | } 26 | } -------------------------------------------------------------------------------- /assets/script/game/account/model/AccountModelComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "48e31ef6-0516-40f9-92de-856053566b00", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/account/view.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "2c878291-495b-4425-8c81-d3613cfd5ccc", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/backup.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "0.0.1", 3 | "importer": "*", 4 | "imported": true, 5 | "uuid": "058e3947-1549-4999-be3f-5417729d9c1c", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/common.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "357b1816-e65d-47e7-938e-a74526a54b65", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/common/GameUIBase.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "88cd6342-234d-42f8-a10a-4b5b1d33a745", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/common/config.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "7775e602-1231-4777-a927-a5cbb41c8518", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/common/config/GameEvent.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-11-23 15:28:39 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-01-26 16:42:00 6 | */ 7 | 8 | /** 游戏事件 */ 9 | export enum GameEvent { 10 | /** 游戏服务器连接成功 */ 11 | GameServerConnected = "GameServerConnected", 12 | /** 登陆成功 */ 13 | LoginSuccess = "LoginSuccess" 14 | } -------------------------------------------------------------------------------- /assets/script/game/common/config/GameEvent.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "28ac0ad6-53bf-471a-9256-ae7c8ad351a7", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/common/config/GameResPath.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2022-08-05 17:05:23 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-08-05 17:05:52 6 | */ 7 | 8 | /** 游戏资源路径 */ 9 | export class GameResPath { 10 | /** 游戏配置路径 */ 11 | static getConfigPath(relative_path: string) { 12 | return "config/game/" + relative_path; 13 | } 14 | 15 | /** 角色资源路径 */ 16 | static getRolePath(name: string) { 17 | return `content/role/${name}`; 18 | } 19 | } -------------------------------------------------------------------------------- /assets/script/game/common/config/GameResPath.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "da7c0e11-124d-41dc-8484-379e09c981b5", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/common/config/GameUIConfig.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Date: 2021-08-12 09:33:37 3 | * @LastEditors: dgflash 4 | * @LastEditTime: 2022-11-11 17:41:53 5 | */ 6 | 7 | import { LayerType } from "db://oops-framework/core/gui/layer/LayerEnum"; 8 | import { UIConfig } from "db://oops-framework/core/gui/layer/UIConfig"; 9 | 10 | 11 | /** 界面唯一标识(方便服务器通过编号数据触发界面打开) */ 12 | export enum UIID { 13 | /** 资源加载界面 */ 14 | Loading = 1, 15 | /** 提示弹出窗口 */ 16 | Alert, 17 | /** 确认弹出窗口 */ 18 | Confirm, 19 | /** DEMO */ 20 | Demo, 21 | /** 角色信息 */ 22 | Demo_Role_Info, 23 | } 24 | 25 | /** 打开界面方式的配置数据 */ 26 | export var UIConfigData: { [key: number]: UIConfig } = { 27 | [UIID.Loading]: { layer: LayerType.UI, prefab: "loading/prefab/loading", bundle: "resources" }, 28 | [UIID.Alert]: { layer: LayerType.Dialog, prefab: "common/prefab/alert", mask: true }, 29 | [UIID.Confirm]: { layer: LayerType.Dialog, prefab: "common/prefab/confirm", mask: true }, 30 | [UIID.Demo]: { layer: LayerType.UI, prefab: "gui/prefab/demo" }, 31 | [UIID.Demo_Role_Info]: { layer: LayerType.UI, prefab: "gui/prefab/role_info" } 32 | } -------------------------------------------------------------------------------- /assets/script/game/common/config/GameUIConfig.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "ffa5cdbb-3d85-42be-80bb-63b60eca5ffc", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/common/config/QueryConfig.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "1f8651a4-0870-4475-ae85-d7e8b93c53b4", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "moduleId": "project:///assets/script/game/config/QueryConfig.js", 10 | "importerSettings": 4, 11 | "simulateGlobals": [] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/script/game/common/config/UIConfig.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "084510dd-1c52-44e1-9bce-00633e73f0fc", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/common/ecs.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "63977702-a1b8-44dd-954a-9903b5ce3872", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/common/ecs/SingletonModuleComp.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-11-18 14:20:46 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-07-25 17:06:15 6 | */ 7 | 8 | import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 9 | import { Account } from "../../account/Account"; 10 | import { Initialize } from "../../initialize/Initialize"; 11 | 12 | /** 游戏模块 */ 13 | @ecs.register('SingletonModule') 14 | export class SingletonModuleComp extends ecs.Comp { 15 | /** 游戏初始化模块 */ 16 | initialize: Initialize = null!; 17 | /** 游戏账号模块 */ 18 | get account(): Account { 19 | return this.initialize.account; 20 | } 21 | 22 | reset() { } 23 | } 24 | 25 | export var smc: SingletonModuleComp = ecs.getSingleton(SingletonModuleComp); -------------------------------------------------------------------------------- /assets/script/game/common/ecs/SingletonModuleComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "c1147d9a-3dcd-4fd0-ad87-f4d964ee62a8", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/common/ecs/position.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "d2d775f5-1dc0-455e-89d7-4a17f43170e0", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/common/ecs/position/EcsPositionSystem.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-08-11 16:41:12 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-07-25 17:05:02 6 | */ 7 | import { ecs } from "../../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 8 | import { MoveToSystem } from "./MoveTo"; 9 | 10 | export class EcsPositionSystem extends ecs.System { 11 | constructor() { 12 | super(); 13 | this.add(new MoveToSystem()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /assets/script/game/common/ecs/position/EcsPositionSystem.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "b44c446b-ce5f-4079-ac42-269837dbf580", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/common/ecs/position/MoveTo.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "eb55eb50-dace-4e75-8965-3475c0b11835", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/common/prompt.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "74d4a589-399e-401e-96c4-9abd888d7266", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/common/prompt/TipsManager.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "9748eae2-11c2-4ea7-a392-76767faa1b39", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/common/table.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "cec5d176-d9f1-4cf6-95bc-e862683a7c2b", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/common/table/TableLanguage.ts: -------------------------------------------------------------------------------- 1 | 2 | import { JsonUtil } from "../../../../../extensions/oops-plugin-framework/assets/core/utils/JsonUtil"; 3 | 4 | export class TableLanguage { 5 | static TableName: string = "Language"; 6 | 7 | private data: any; 8 | 9 | init(id: number) { 10 | var table = JsonUtil.get(TableLanguage.TableName); 11 | this.data = table[id]; 12 | this.id = id; 13 | } 14 | 15 | /** 编号【KEY】 */ 16 | id: number = 0; 17 | 18 | /** 简体中文 */ 19 | get zh(): string { 20 | return this.data.zh; 21 | } 22 | /** 英文 */ 23 | get en(): string { 24 | return this.data.en; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /assets/script/game/common/table/TableLanguage.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "290f6330-3789-4738-a324-70369ca98be5", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/common/table/TablePromptWindow.ts: -------------------------------------------------------------------------------- 1 | 2 | import { JsonUtil } from "../../../../../extensions/oops-plugin-framework/assets/core/utils/JsonUtil"; 3 | 4 | export class TablePromptWindow { 5 | static TableName: string = "PromptWindow"; 6 | 7 | private data: any; 8 | 9 | init(id: number, id1: number, id2: number) { 10 | var table = JsonUtil.get(TablePromptWindow.TableName); 11 | this.data = table[id][id1][id2]; 12 | this.id = id; this.id1 = id1; this.id2 = id2; 13 | } 14 | 15 | /** 编号【KEY】 */ 16 | id: number = 0; /** 双主键【KEY】 */ 17 | id1: number = 0; /** 双主键【KEY】 */ 18 | id2: number = 0; 19 | 20 | /** 标题 */ 21 | get title(): string { 22 | return this.data.title; 23 | } 24 | /** 描述 */ 25 | get describe(): string { 26 | return this.data.describe; 27 | } 28 | /** 描述 */ 29 | get array(): any { 30 | return this.data.array; 31 | } 32 | /** 生命 */ 33 | get hp(): number { 34 | return this.data.hp; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /assets/script/game/common/table/TablePromptWindow.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "0e0091bc-db56-4a18-8669-334ddff61370", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/common/table/TableRoleJob.ts: -------------------------------------------------------------------------------- 1 | 2 | import { JsonUtil } from "../../../../../extensions/oops-plugin-framework/assets/core/utils/JsonUtil"; 3 | 4 | export class TableRoleJob { 5 | static TableName: string = "RoleJob"; 6 | 7 | private data: any; 8 | 9 | init(id: number) { 10 | var table = JsonUtil.get(TableRoleJob.TableName); 11 | this.data = table[id]; 12 | this.id = id; 13 | } 14 | 15 | /** 编号【KEY】 */ 16 | id: number = 0; 17 | 18 | /** 职业名 */ 19 | get armsName(): string { 20 | return this.data.armsName; 21 | } 22 | /** 武器类型 */ 23 | get weaponType(): any { 24 | return this.data.weaponType; 25 | } 26 | /** 力量 */ 27 | get power(): number { 28 | return this.data.power; 29 | } 30 | /** 敏捷 */ 31 | get agile(): number { 32 | return this.data.agile; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /assets/script/game/common/table/TableRoleJob.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "45753233-f907-41fd-952a-f40d7e31396b", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/common/table/TableRoleLevelUp.ts: -------------------------------------------------------------------------------- 1 | 2 | import { JsonUtil } from "../../../../../extensions/oops-plugin-framework/assets/core/utils/JsonUtil"; 3 | 4 | export class TableRoleLevelUp { 5 | static TableName: string = "RoleLevelUp"; 6 | 7 | private data: any; 8 | 9 | init(id: number) { 10 | var table = JsonUtil.get(TableRoleLevelUp.TableName); 11 | this.data = table[id]; 12 | this.id = id; 13 | } 14 | 15 | /** 编号【KEY】 */ 16 | id: number = 0; 17 | 18 | /** 升级所需经验 */ 19 | get needexp(): number { 20 | return this.data.needexp; 21 | } 22 | /** 升级增加生命 */ 23 | get hp(): number { 24 | return this.data.hp; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /assets/script/game/common/table/TableRoleLevelUp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "f71b8a82-d129-4e56-80ab-16c0ba1ca8a8", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/demo.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "877de6e7-ad53-4ed6-9410-6948b470660c", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/demo/Demo.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "46770dbb-ecc5-4250-99ad-b71fcaaadfda", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "moduleId": "project:///assets/script/game/gui/Demo.js", 10 | "importerSettings": 4, 11 | "simulateGlobals": [] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/script/game/demo/GameEvent.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "31e1bb3d-ea38-4ab0-a574-2dcbab7b310a", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/initialize.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "b005e8c9-418f-4529-8b5c-862aeb5977b1", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/initialize/Initialize.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-11-11 17:45:23 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-08-01 13:49:35 6 | */ 7 | import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 8 | import { Account } from "../account/Account"; 9 | import { InitResComp, InitResSystem } from "./bll/InitRes"; 10 | 11 | /** 12 | * 游戏进入初始化模块 13 | * 1、热更新 14 | * 2、加载默认资源 15 | */ 16 | @ecs.register('Initialize') 17 | export class Initialize extends ecs.Entity { 18 | /** 帐号管理 */ 19 | account: Account = null!; 20 | 21 | protected init() { 22 | // 帐号模块为初始化模块的子实体对象 23 | this.account = ecs.getEntity(Account); 24 | this.addChild(this.account); 25 | 26 | // 初始化游戏公共资源 27 | this.add(InitResComp); 28 | } 29 | } 30 | 31 | // export class EcsInitializeSystem extends ecs.System { 32 | // constructor() { 33 | // super(); 34 | 35 | // this.add(new InitResSystem()); 36 | // } 37 | // } -------------------------------------------------------------------------------- /assets/script/game/initialize/Initialize.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "ffbce42c-e99f-48a0-8e73-ea6b756af330", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/initialize/LoadingViewComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "e316d2a4-1d8a-4f55-994c-f00db0076e7f", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/initialize/bll.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "de5401a8-45c8-4249-aa4c-933102551227", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/initialize/bll/InitRes.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2022-07-22 17:06:22 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-09-22 14:41:58 6 | */ 7 | 8 | import { oops } from "../../../../../extensions/oops-plugin-framework/assets/core/Oops"; 9 | import { AsyncQueue, NextFunction } from "../../../../../extensions/oops-plugin-framework/assets/libs/collection/AsyncQueue"; 10 | import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 11 | import { UIID } from "../../common/config/GameUIConfig"; 12 | import { Initialize } from "../Initialize"; 13 | import { LoadingViewComp } from "../view/LoadingViewComp"; 14 | 15 | /** 初始化游戏公共资源 */ 16 | @ecs.register('InitRes') 17 | export class InitResComp extends ecs.Comp { 18 | reset() { } 19 | } 20 | 21 | @ecs.register('Initialize') 22 | export class InitResSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem { 23 | filter(): ecs.IMatcher { 24 | return ecs.allOf(InitResComp); 25 | } 26 | 27 | entityEnter(e: Initialize): void { 28 | var queue: AsyncQueue = new AsyncQueue(); 29 | 30 | // 加载自定义资源 31 | this.loadCustom(queue); 32 | // 加载多语言包 33 | this.loadLanguage(queue); 34 | // 加载公共资源 35 | this.loadCommon(queue); 36 | // 加载游戏内容加载进度提示界面 37 | this.onComplete(queue, e); 38 | 39 | queue.play(); 40 | } 41 | 42 | /** 加载自定义内容(可选) */ 43 | private loadCustom(queue: AsyncQueue) { 44 | queue.push(async (next: NextFunction, params: any, args: any) => { 45 | // 加载多语言对应字体 46 | oops.res.load("language/font/" + oops.language.current, next); 47 | }); 48 | } 49 | 50 | /** 加载化语言包(可选) */ 51 | private loadLanguage(queue: AsyncQueue) { 52 | queue.push((next: NextFunction, params: any, args: any) => { 53 | // 设置默认语言 54 | let lan = oops.storage.get("language"); 55 | if (lan == null || lan == "") { 56 | lan = "zh"; 57 | oops.storage.set("language", lan); 58 | } 59 | 60 | // 加载语言包资源 61 | oops.language.setLanguage(lan, next); 62 | }); 63 | } 64 | 65 | /** 加载公共资源(必备) */ 66 | private loadCommon(queue: AsyncQueue) { 67 | queue.push((next: NextFunction, params: any, args: any) => { 68 | oops.res.loadDir("common", next); 69 | }); 70 | } 71 | 72 | /** 加载完成进入游戏内容加载界面 */ 73 | private onComplete(queue: AsyncQueue, e: Initialize) { 74 | queue.complete = async () => { 75 | var node = await oops.gui.openAsync(UIID.Loading); 76 | if (node) e.add(node.getComponent(LoadingViewComp) as ecs.Comp); 77 | e.remove(InitResComp); 78 | }; 79 | } 80 | } -------------------------------------------------------------------------------- /assets/script/game/initialize/bll/InitRes.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "2ee0cf3e-ed1f-4414-a41b-f8e3e7f66964", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/initialize/view.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "a36c4006-66a4-4a3e-9f87-e64b179de4e5", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/initialize/view/Hot.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "f63770a4-6dbf-4283-9476-ca015630e0af", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/initialize/view/HotUpdate.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "f64de890-2c08-4b87-91c6-a94a9a23da00", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/initialize/view/LoadingViewComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "92429ca4-4e7c-450a-b706-c96e7c2568e3", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "ffdd5a80-e057-4f91-92af-a86e1b26cbc6", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/role/Role.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "deb5a90b-5729-4a03-9f73-28ed96202f8a", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/RoleEvent.ts: -------------------------------------------------------------------------------- 1 | /** 角色模块全局事件 */ 2 | export enum RoleEvent { 3 | /** 修改职业事件 */ 4 | ChangeJob = "ChangeJob" 5 | } -------------------------------------------------------------------------------- /assets/script/game/role/RoleEvent.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "a2e7abd7-21aa-4dfc-ab5c-6dd0dfba2a7c", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/bll.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "8164d96e-0467-4bd2-9123-8a490de8c68f", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/role/bll/RoleBattle.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "5130ca90-66bd-4c87-8db9-f9f847396454", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/bll/RoleChangeJob.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2022-01-25 17:49:26 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-07-21 16:49:00 6 | */ 7 | 8 | import { oops } from "../../../../../extensions/oops-plugin-framework/assets/core/Oops"; 9 | import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 10 | import { RoleModelJobComp } from "../model/RoleModelJobComp"; 11 | import { Role } from "../Role"; 12 | import { RoleEvent } from "../RoleEvent"; 13 | 14 | /** 15 | * 角色转职 16 | * 17 | * 实现功能 18 | * 1、修改角色职业子模块的职业数据 19 | * 2、自动通过战斗属性框架更新角色战斗属性多模块的叠加值 20 | * 3、切换角色动画的职业武器 21 | * 22 | * 技术分析 23 | * 1、使用ecs.Comp做为业务输入参数的接口,可理解为一个对象成员方法接收了方法参数,通过ecs框架的特点,ecs.System 系统会监控自己关注的数据组件变化后,做对应的业务处理 24 | * 2、在角色实体上添加职业切换组件时触发业务逻辑的处理,完成后从角色实体上移除业务组件完成业务的生命周期。 25 | */ 26 | @ecs.register('RoleChangeJob') 27 | export class RoleChangeJobComp extends ecs.Comp { 28 | /** 职业编号 */ 29 | jobId: number = -1; 30 | 31 | reset() { 32 | this.jobId = -1; 33 | } 34 | } 35 | 36 | @ecs.register('Role') 37 | export class RoleChangeJobSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem { 38 | filter(): ecs.IMatcher { 39 | return ecs.allOf(RoleChangeJobComp, RoleModelJobComp); 40 | } 41 | 42 | entityEnter(e: Role): void { 43 | // 数值更新 44 | e.RoleModelJob.id = e.RoleChangeJob.jobId; 45 | 46 | // 转职事件,通知视图层逻辑刷新界面效果,实现两层逻辑分离 47 | oops.message.dispatchEvent(RoleEvent.ChangeJob); 48 | 49 | e.remove(RoleChangeJobComp); 50 | } 51 | } -------------------------------------------------------------------------------- /assets/script/game/role/bll/RoleChangeJob.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "7ab8a7b3-4c1d-4650-8134-cc549b1bd814", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/bll/RoleUpgrade.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2022-06-02 09:38:48 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-06-14 19:55:46 6 | */ 7 | import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 8 | import { RoleAttributeType } from "../model/RoleEnum"; 9 | import { RoleModelLevelComp } from "../model/RoleModelLevelComp"; 10 | import { Role } from "../Role"; 11 | 12 | /** 13 | * 角色升级 14 | */ 15 | @ecs.register('RoleUpgrade') 16 | export class RoleUpgradeComp extends ecs.Comp { 17 | /** 当前等级 */ 18 | lv: number = 0; 19 | 20 | reset() { 21 | this.lv = 0; 22 | } 23 | } 24 | 25 | @ecs.register('Role') 26 | export class RoleUpgradeSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem { 27 | filter(): ecs.IMatcher { 28 | return ecs.allOf(RoleUpgradeComp, RoleModelLevelComp); 29 | } 30 | 31 | entityEnter(e: Role): void { 32 | let rm = e.RoleModel; 33 | let rlm = e.RoleModelLevel; 34 | let ru = e.RoleUpgrade; 35 | 36 | if (ru.lv == 0) 37 | rlm.vm.lv++; // 提升一级 38 | else 39 | rlm.vm.lv = ru.lv; // 设置等级 40 | 41 | // 当前等级配置 42 | rlm.rtluCurrent.init(rlm.vm.lv); 43 | // 等级附加属性 44 | rm.attributes.get(RoleAttributeType.hp).level = rlm.rtluCurrent.hp; 45 | 46 | // 下个等级配置 47 | rlm.rtluNext.init(rlm.vm.lv + 1); 48 | rlm.vm.expNext = rlm.rtluNext.needexp; 49 | 50 | e.remove(RoleUpgradeComp); 51 | } 52 | } -------------------------------------------------------------------------------- /assets/script/game/role/bll/RoleUpgrade.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "7750b9a2-9bdc-408e-a020-aef84fe6c85e", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/bll/action.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "52966ec2-355b-4c89-a608-5d5f34ba8ae9", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/role/bll/ai.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "7bde0e45-7d4e-4cf5-b0ce-f8b6a5ca4d12", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/role/bll/skill.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "20fb6abb-3b0e-4361-8200-941b98891456", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/role/model.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "3fba28ee-42f7-4be0-a42d-776301b37fbc", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleCharacteristicModelComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "2fc06e2a-6834-4ce6-9a7b-96eae66f0abe", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleDescentModelComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "d299c6b5-6424-4c27-ab35-013e8ad0c433", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleDrawSixModelComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "1ca33287-9c39-44a8-b8dd-c6e0c21dd8a7", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleEnum.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2022-01-26 14:14:34 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-01-27 15:49:36 6 | */ 7 | 8 | /** 角色属性类型 */ 9 | export enum RoleAttributeType { 10 | /** 力量 */ 11 | power = "power", 12 | /** 体质 */ 13 | physical = "physical", 14 | /** 敏捷 */ 15 | agile = "agile", 16 | /** 生命最大值 */ 17 | hp = "hp" 18 | } 19 | 20 | /** 角色动作名 */ 21 | export enum RoleAnimatorType { 22 | /** 待机 */ 23 | Idle = "Idle", 24 | /** 攻击 */ 25 | Attack = "Attack", 26 | /** 受击 */ 27 | Hurt = "Hurt", 28 | /** 死亡 */ 29 | Dead = "Dead" 30 | } 31 | 32 | /** 武器名 */ 33 | export var WeaponName: any = { 34 | 0: "Fist", 35 | 1: "Katana", 36 | 2: "CrossGun", 37 | 3: "LongGun", 38 | 4: "Razor", 39 | 5: "Arch", 40 | 6: "Crossbow", 41 | 7: "IronCannon", 42 | 8: "FireGun", 43 | 9: "Wakizashi", 44 | 10: "Kunai", 45 | 11: "Dagger", 46 | 12: "Kusarigama", 47 | 13: "DanceFan", 48 | 14: "Flag", 49 | 15: "MilitaryFan", 50 | 16: "Shield" 51 | } -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleEnum.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "a8fd6149-fa4b-4b2c-83c0-c08b3813b9f7", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleEquipModelComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "5c21f8a7-8fd1-4845-a777-a2e03256526b", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleFamilyModelComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "b53c6b75-188b-46ae-93a9-4c1ecd6009c8", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleModelBaseComp.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-11-18 15:56:01 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-06-14 19:54:43 6 | */ 7 | 8 | import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 9 | import { VM } from "../../../../../extensions/oops-plugin-framework/assets/libs/model-view/ViewModel"; 10 | import { RoleAttributeType } from "./RoleEnum"; 11 | import { RoleModelComp } from "./RoleModelComp"; 12 | 13 | /** 14 | * 角色基础属性数据 15 | * 16 | * 实现功能 17 | * 1、角色初始创建时有随机的基础战斗属性 18 | * 2、基础战斗属性会独立显示数值 19 | * 20 | * 技术分析 21 | * 1、RoleModelComp.attributes 中设计了可扩展的角色战斗属性对象,这里分出来一个基础属性对象,是为了生成 VM 组件需要的数据格式,辅助视图层的显示逻辑 22 | * 2、这样设计用意是不在 RoleModelComp 对象中插入一个针对基础属性的 VM 数据。这里表达在新增需求时,尽量通过增量开发,不影响原有功能。在项目代码越来越多时,不容易因忽略某个点导致出现新问题。 23 | */ 24 | @ecs.register('RoleModelBase') 25 | export class RoleModelBaseComp extends ecs.Comp { 26 | /** 提供 VM 组件使用的数据 */ 27 | private vm: any = {}; 28 | 29 | /** 力量 */ 30 | private _power: number = 0; 31 | public get power(): number { 32 | return this._power; 33 | } 34 | public set power(value: number) { 35 | this._power = value; 36 | this.ent.get(RoleModelComp).attributes.get(RoleAttributeType.power).base = value; 37 | this.vm[RoleAttributeType.power] = value; 38 | } 39 | 40 | /** 体质 */ 41 | private _physical: number = 0; 42 | public get physical(): number { 43 | return this._physical; 44 | } 45 | public set physical(value: number) { 46 | this._physical = value; 47 | this.ent.get(RoleModelComp).attributes.get(RoleAttributeType.physical).base = value; 48 | this.vm[RoleAttributeType.physical] = value; 49 | } 50 | 51 | /** 敏捷 */ 52 | private _agile: number = 0; 53 | public get agile(): number { 54 | return this._agile; 55 | } 56 | public set agile(value: number) { 57 | this._agile = value; 58 | this.ent.get(RoleModelComp).attributes.get(RoleAttributeType.agile).base = value; 59 | this.vm[RoleAttributeType.agile] = value; 60 | } 61 | 62 | vmAdd() { 63 | VM.add(this.vm, "RoleBase"); 64 | } 65 | 66 | vmRemove() { 67 | VM.remove("RoleBase"); 68 | } 69 | 70 | reset() { 71 | this.vmRemove(); 72 | 73 | for (var key in this.vm) { 74 | this.vm[key] = 0; 75 | } 76 | } 77 | } -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleModelBaseComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "26768529-f065-4dc3-949f-557d97725547", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleModelComp.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-11-18 15:56:01 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-07-25 17:04:37 6 | */ 7 | import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 8 | import { VM } from "../../../../../extensions/oops-plugin-framework/assets/libs/model-view/ViewModel"; 9 | import { RoleNumeric } from "./attribute/RoleNumeric"; 10 | import { RoleNumericMap } from "./attribute/RoleNumericMap"; 11 | import { RoleAttributeType } from "./RoleEnum"; 12 | 13 | /** 14 | * 角色属性数据 15 | * 16 | * 实现功能 17 | * 1、角色唯一基础数据 18 | * 2、角色战斗属性数据 19 | * 3、角色VM组件绑定数据 20 | * 21 | * 技术分析 22 | * 1、使用ecs.Comp做为数据层的基类,是为了后续业务开发过程中,只要ecs.Entity对象中包含了当前数据组件,就可以通过 ecs.Entity.get(RoleModelComp) 的方式获取对应子模块的数据 23 | */ 24 | @ecs.register('RoleModel') 25 | export class RoleModelComp extends ecs.Comp { 26 | /** 角色编号 */ 27 | id: number = -1; 28 | 29 | private _name: string = ""; 30 | /** 昵称 */ 31 | get name(): string { 32 | return this._name; 33 | } 34 | set name(value: string) { 35 | this._name = value; 36 | this.vm.name = value; 37 | } 38 | 39 | /** 动画名资源 */ 40 | anim: string = "model1"; 41 | 42 | /** 角色属性 */ 43 | attributes: RoleNumericMap = null!; 44 | 45 | constructor() { 46 | super(); 47 | this.attributes = new RoleNumericMap(this.vm); 48 | } 49 | 50 | /** 提供 VM 组件使用的数据 */ 51 | private vm: any = {}; 52 | 53 | vmAdd() { 54 | VM.add(this.vm, "Role"); 55 | } 56 | 57 | vmRemove() { 58 | VM.remove("Role"); 59 | } 60 | 61 | reset() { 62 | this.vmRemove(); 63 | 64 | this.id = -1; 65 | this.name = ""; 66 | 67 | for (var key in this.vm) { 68 | this.vm[key] = 0; 69 | } 70 | } 71 | 72 | toString() { 73 | console.log(`【${this.name}】的属性"--------------------------------------------`); 74 | this.attributes.forEach((value: RoleNumeric, key: RoleAttributeType) => { 75 | console.log(key, value.value); 76 | }); 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleModelComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "0b31330a-261d-4b13-a0d5-15d2727b1dbd", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleModelJobComp.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-11-24 10:04:56 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-06-14 19:54:52 6 | */ 7 | import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 8 | import { TableRoleJob } from "../../common/table/TableRoleJob"; 9 | import { RoleAttributeType } from "./RoleEnum"; 10 | import { RoleModelComp } from "./RoleModelComp"; 11 | 12 | /** 13 | * 角色职业数据 14 | * 15 | * 实现功能 16 | * 1、影响角色力量、敏捷战斗属性 17 | * 2、影响角色动画武器 18 | */ 19 | @ecs.register('RoleModelJob') 20 | export class RoleModelJobComp extends ecs.Comp { 21 | private table: TableRoleJob = new TableRoleJob(); 22 | 23 | /** 职业编号编号 */ 24 | private _id: number = -1; 25 | get id(): number { 26 | return this._id; 27 | } 28 | set id(value: number) { 29 | this.table.init(value); 30 | this._id = value; 31 | 32 | var attributes = this.ent.get(RoleModelComp).attributes; 33 | attributes.get(RoleAttributeType.power).job = this.power; 34 | attributes.get(RoleAttributeType.agile).job = this.agile; 35 | } 36 | /** 职业名 */ 37 | get armsName(): string { 38 | return this.table.armsName; 39 | } 40 | /** 力量 */ 41 | get power(): number { 42 | return this.table.power; 43 | } 44 | /** 敏捷 */ 45 | get agile(): number { 46 | return this.table.agile; 47 | } 48 | /** 武器类型 */ 49 | get weaponType(): number[] { 50 | return this.table.weaponType; 51 | } 52 | 53 | reset() { 54 | this._id = -1; 55 | } 56 | } -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleModelJobComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "6414fcb5-5a65-4bb9-ab33-c3bf9a13ae3f", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleModelLevelComp.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-11-18 15:56:01 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-06-14 19:55:01 6 | */ 7 | 8 | import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 9 | import { VM } from "../../../../../extensions/oops-plugin-framework/assets/libs/model-view/ViewModel"; 10 | import { TableRoleLevelUp } from "../../common/table/TableRoleLevelUp"; 11 | 12 | /** 13 | * 角色等级数据 14 | * 15 | * 实现功能 16 | * 1、角色等级变化时、获取升级配置表中的生命附加值叠加到角色属性上 17 | * 18 | * 技术分析 19 | * 1、等级模块直接通过数据访问层的API获取到本地等级配置表数据,通过当前等级匹配到配置表中的等级配置数据 20 | * 2、获取到的等级配置数据中的生命附加值,叠加到角色战斗属性的等级模块附加值上 21 | */ 22 | @ecs.register('RoleModelLevel') 23 | export class RoleModelLevelComp extends ecs.Comp { 24 | /** 下个等级配置 */ 25 | rtluNext: TableRoleLevelUp = new TableRoleLevelUp(); 26 | /** 当前等级配置 */ 27 | rtluCurrent: TableRoleLevelUp = new TableRoleLevelUp(); 28 | 29 | /** 提供 VM 组件使用的数据 */ 30 | vm: RoleLevelVM = new RoleLevelVM(); 31 | 32 | vmAdd() { 33 | VM.add(this.vm, "RoleLevel"); 34 | } 35 | 36 | vmRemove() { 37 | this.vm.reset(); 38 | VM.remove("RoleLevel"); 39 | } 40 | 41 | reset() { 42 | this.vmRemove(); 43 | } 44 | } 45 | 46 | class RoleLevelVM { 47 | /** 当前等级 */ 48 | lv: number = 0; 49 | /** 当前经验 */ 50 | exp: number = 0; 51 | /** 下级经验 */ 52 | expNext: number = 0; 53 | 54 | reset() { 55 | this.lv = 0; 56 | this.exp = 0; 57 | this.expNext = 0; 58 | } 59 | } -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleModelLevelComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "9e999472-6fac-4a5e-b72c-0e8f8501ed77", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleNobilityModelComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "58956230-0127-4793-ad43-621ceedb7d25", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/model/RoleSkillModelComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "25e1a634-f8fe-44ca-9650-0d287532b566", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/model/attribute.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "38fb705f-feca-4939-bbd1-dd012b488aa6", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/role/model/attribute/RoleNumeric.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2022-01-20 18:20:32 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-02-09 13:11:39 6 | */ 7 | 8 | import { RoleAttributeType } from "../RoleEnum"; 9 | import { RoleNumericMap } from "./RoleNumericMap"; 10 | 11 | /** 影响角色属性的模块 */ 12 | export enum RoleModuleType { 13 | /** 初始默认属性 */ 14 | Base, 15 | /** 职业附加属性 */ 16 | Job, 17 | /** 等级附加属性 */ 18 | Level, 19 | /** 装备附加属性 */ 20 | Equip, 21 | /** 修饰器附加属性 */ 22 | Decorator, 23 | /** 技能附加属性 */ 24 | Skill 25 | } 26 | 27 | /** 28 | * 角色属性对象 29 | * 1、不同模块设置对应的属性值 30 | * 2、任意模块的属性值修改时,自动角色属性更新后的数值和 31 | */ 32 | export class RoleNumeric { 33 | /** 数值更新事件 */ 34 | onUpdate: Function = null! 35 | 36 | /** 属性类型 */ 37 | type: RoleAttributeType = null!; 38 | 39 | /** 各模块附加值求和总数值 */ 40 | value: number = 0; 41 | 42 | /** 属性值集合 */ 43 | protected attributes: RoleNumericMap; 44 | /** 分组不同模块数值 */ 45 | protected values: Map = new Map(); 46 | 47 | constructor(type: RoleAttributeType, attributes: RoleNumericMap) { 48 | this.type = type; 49 | this.attributes = attributes; 50 | 51 | // 设置初始值 52 | var rmt = RoleModuleType; 53 | for (var key in rmt) { 54 | var k = Number(key); 55 | if (k > -1) this.values.set(k, 0); 56 | } 57 | } 58 | 59 | /** 获取指定模块属性值 */ 60 | protected getValue(module: RoleModuleType) { 61 | return this.values.get(module); 62 | } 63 | 64 | /** 设置指定模块属性值 */ 65 | protected setValue(module: RoleModuleType, value: number) { 66 | this.values.set(module, value); 67 | this.update(); 68 | } 69 | 70 | protected update() { 71 | var result = 0; 72 | this.values.forEach(value => { 73 | result += value; 74 | }); 75 | this.value = result; 76 | 77 | this.onUpdate && this.onUpdate(this); 78 | } 79 | 80 | reset() { 81 | this.values.clear(); 82 | this.update(); 83 | } 84 | 85 | /** 角色基础属性 */ 86 | get base(): number { 87 | return this.getValue(RoleModuleType.Base)!; 88 | } 89 | set base(value: number) { 90 | this.setValue(RoleModuleType.Base, value); 91 | } 92 | 93 | /** 等级属性 */ 94 | get level(): number { 95 | return this.getValue(RoleModuleType.Level)!; 96 | } 97 | set level(value: number) { 98 | this.setValue(RoleModuleType.Level, value); 99 | } 100 | 101 | /** 角色职业属性 */ 102 | get job(): number { 103 | return this.getValue(RoleModuleType.Job)!; 104 | } 105 | set job(value: number) { 106 | this.setValue(RoleModuleType.Job, value); 107 | } 108 | 109 | /** 角色装备属性 */ 110 | get equip(): number { 111 | return this.getValue(RoleModuleType.Equip)!; 112 | } 113 | set equip(value: number) { 114 | this.setValue(RoleModuleType.Equip, value); 115 | } 116 | 117 | /** 修饰器属性 */ 118 | get decorator(): number { 119 | return this.getValue(RoleModuleType.Decorator)!; 120 | } 121 | set decorator(value: number) { 122 | this.setValue(RoleModuleType.Decorator, value); 123 | } 124 | 125 | /** 技能附加属性 */ 126 | get skill(): number { 127 | return this.getValue(RoleModuleType.Skill)!; 128 | } 129 | set skill(value: number) { 130 | this.setValue(RoleModuleType.Skill, value); 131 | } 132 | } -------------------------------------------------------------------------------- /assets/script/game/role/model/attribute/RoleNumeric.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "55650efd-4f72-4da7-b265-76948eeeca63", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/model/attribute/RoleNumericMap.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2022-01-21 09:33:44 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-02-09 12:16:28 6 | */ 7 | import { RoleAttributeType } from "../RoleEnum"; 8 | import { RoleNumeric } from "./RoleNumeric"; 9 | 10 | /** 角色数值装饰器 */ 11 | export class RoleNumericDecorator { 12 | /** 属性类型 */ 13 | attribute: RoleAttributeType = null!; 14 | /** 属性数值 */ 15 | value: number = 0; 16 | } 17 | 18 | /** 所有模块角色属性集合 */ 19 | export class RoleNumericMap { 20 | /** 角色属性 */ 21 | private attributes: Map = new Map(); 22 | /** 角色属性修饰器 */ 23 | private decorators: Map = new Map(); 24 | /** VM组件数据 */ 25 | private vm: any = null!; 26 | 27 | constructor(vm: any) { 28 | this.vm = vm; 29 | } 30 | 31 | /** 添加属性修饰器 */ 32 | addDecorator(rnd: RoleNumericDecorator) { 33 | this.decorators.set(rnd, rnd.value); 34 | var rn = this.get(rnd.attribute); 35 | rn.decorator += rnd.value; 36 | } 37 | 38 | /** 移除属性修饰器 */ 39 | removeDecorator(rnd: RoleNumericDecorator) { 40 | this.decorators.delete(rnd); 41 | var rn = this.get(rnd.attribute); 42 | rn.decorator -= rnd.value; 43 | } 44 | 45 | /** 获取角色属性 */ 46 | get(type: RoleAttributeType): RoleNumeric { 47 | var attr = this.attributes.get(type); 48 | if (attr == null) { 49 | switch (type) { 50 | case RoleAttributeType.physical: 51 | attr = new RoleNumericPhysical(type, this); 52 | break; 53 | default: 54 | attr = new RoleNumeric(type, this); 55 | break; 56 | } 57 | this.attributes.set(type, attr); 58 | 59 | attr.onUpdate = (rn: RoleNumeric) => { 60 | this.vm[rn.type] = rn.value; 61 | }; 62 | } 63 | return attr; 64 | } 65 | 66 | forEach(callbackfn: (value: RoleNumeric, key: RoleAttributeType, map: Map) => void, thisArg?: any): void { 67 | this.attributes.forEach(callbackfn, thisArg); 68 | } 69 | 70 | /** 重置属性值为零 */ 71 | reset() { 72 | this.decorators.clear(); 73 | this.attributes.forEach((value: RoleNumeric, key: RoleAttributeType, map: Map) => { 74 | value.reset(); 75 | }); 76 | } 77 | } 78 | 79 | /** 体质属性 */ 80 | export class RoleNumericPhysical extends RoleNumeric { 81 | protected update(): void { 82 | super.update(); 83 | 84 | // 每点体质 = 0.5 生命 85 | this.attributes.get(RoleAttributeType.hp).base = Math.floor(this.value * 0.5); 86 | } 87 | } -------------------------------------------------------------------------------- /assets/script/game/role/model/attribute/RoleNumericMap.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "e317e44c-d724-4c2d-b3ea-974afefcfbed", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "b6c9dfb2-45d4-485c-8d0e-55a7f98e324e", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/role/view/AnimationEventHandler.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "71fe316b-1691-4a24-b0b8-8c6e88938401", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view/RoleStateAttack.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "6842e219-fc64-4f36-94ad-5874aa08735f", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view/RoleStateDead.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "95fb600c-f0c6-4720-94da-b222ff2a3574", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view/RoleStateHit.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.23", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "495b1f8f-d6a5-48bb-9a8c-4ed84361f127", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view/RoleViewAnimator.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-12-29 11:33:59 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-06-14 19:56:45 6 | */ 7 | import { sp, _decorator } from "cc"; 8 | import AnimatorSpine from "../../../../../extensions/oops-plugin-framework/assets/libs/animator/AnimatorSpine"; 9 | import { AnimatorStateLogic } from "../../../../../extensions/oops-plugin-framework/assets/libs/animator/core/AnimatorStateLogic"; 10 | import { RoleAnimatorType, WeaponName } from "../model/RoleEnum"; 11 | import { Role } from "../Role"; 12 | import { AnimationEventHandler } from "./animator/AnimationEventHandler"; 13 | import { RoleStateAttack } from "./animator/RoleStateAttack"; 14 | import { RoleStateDead } from "./animator/RoleStateDead"; 15 | import { RoleStateHit } from "./animator/RoleStateHit"; 16 | 17 | const { ccclass, property, requireComponent, disallowMultiple } = _decorator; 18 | 19 | /** 20 | * 角色SPINE动画控制 21 | * 22 | * 实现功能 23 | * 1、控制动作变化 24 | * 2、控制武器变化 25 | * 3、控制脸的朝向 26 | */ 27 | @ccclass("RoleViewAnimator") 28 | @disallowMultiple 29 | @requireComponent(sp.Skeleton) 30 | export class RoleViewAnimator extends AnimatorSpine { 31 | /** 攻击行为完成 */ 32 | onAttackComplete: Function = null!; 33 | /** 受击动作完成 */ 34 | onHitActionComplete: Function = null!; 35 | /** 角色对象 */ 36 | role: Role = null!; 37 | 38 | /** 武器动画名 */ 39 | private weaponAnimName: string = null!; 40 | 41 | start() { 42 | super.start(); 43 | 44 | // 动画状态机 45 | let anim = new AnimationEventHandler(); 46 | let asl: Map = new Map(); 47 | asl.set(RoleAnimatorType.Attack, new RoleStateAttack(this.role, anim)); 48 | asl.set(RoleAnimatorType.Hurt, new RoleStateHit(this.role, anim)); 49 | asl.set(RoleAnimatorType.Dead, new RoleStateDead(this.role, anim)); 50 | this.initArgs(asl, anim); 51 | } 52 | 53 | /** 面象朝左 */ 54 | left() { 55 | this.node.parent!.setScale(1, 1, 1); 56 | } 57 | 58 | /** 面象朝右 */ 59 | right() { 60 | this.node.parent!.setScale(-1, 1, 1); 61 | } 62 | 63 | /** 当前动作换职业动画 */ 64 | refresh() { 65 | // 状态机状态值未变时,不会触发状态变化事件,所以这里直接触发状态变化事件来触发后续流程 66 | this.onStateChange(this._ac.curState, this._ac.curState); 67 | } 68 | 69 | /** 70 | * 播放动画 71 | * @override 72 | * @param animName 动画名 73 | * @param loop 是否循环播放 74 | */ 75 | protected playAnimation(animName: string, loop: boolean) { 76 | if (animName) { 77 | this.weaponAnimName = this.getWeaponAnimName(); 78 | var name = `${animName}_${this.weaponAnimName}`; 79 | this._spine.setAnimation(0, name, loop); 80 | } 81 | else { 82 | this._spine.clearTrack(0); 83 | } 84 | } 85 | 86 | /** 武器动画剪辑名 */ 87 | private getWeaponAnimName() { 88 | var job = this.role.RoleModelJob; 89 | var weaponAnimName = WeaponName[job.weaponType[0]]; 90 | return weaponAnimName; 91 | } 92 | } -------------------------------------------------------------------------------- /assets/script/game/role/view/RoleViewAnimator.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "a1be2022-0f27-472d-97e6-d445ac3d0df8", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view/RoleViewComp.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-11-18 17:42:59 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-08-05 10:32:42 6 | */ 7 | 8 | import { sp, _decorator } from "cc"; 9 | import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 10 | import { CCComp } from "../../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; 11 | import { Role } from "../Role"; 12 | import { RoleEvent } from "../RoleEvent"; 13 | import { RoleViewAnimator } from "./RoleViewAnimator"; 14 | import { RoleViewController } from "./RoleViewController"; 15 | import { RoleViewLoader } from "./RoleViewLoader"; 16 | 17 | const { ccclass, property } = _decorator; 18 | 19 | /** 角色显示组件 */ 20 | @ccclass('RoleViewComp') // 定义为 Cocos Creator 组件 21 | @ecs.register('RoleView', false) // 定义为 ECS 组件 22 | export class RoleViewComp extends CCComp { 23 | @property({ type: sp.Skeleton, tooltip: '角色动画' }) 24 | spine: sp.Skeleton = null!; 25 | 26 | /** 角色动画资源管理 */ 27 | loader: RoleViewLoader = null!; 28 | /** 角色动画规则管理 */ 29 | animator: RoleViewAnimator = null!; 30 | /** 角色控制器 */ 31 | controller: RoleViewController = null!; 32 | 33 | /** 视图层逻辑代码分离演示 */ 34 | onLoad() { 35 | var role = this.ent as Role; 36 | 37 | this.loader = this.node.addComponent(RoleViewLoader); 38 | this.node.emit("load", role); 39 | 40 | this.animator = this.spine.getComponent(RoleViewAnimator)!; 41 | this.animator.role = role; 42 | 43 | this.controller = this.node.addComponent(RoleViewController); 44 | this.controller.role = role; 45 | 46 | this.on(RoleEvent.ChangeJob, this.onHandler, this); 47 | } 48 | 49 | /** 业务层全局消息通知视图层逻辑处理,两层之间逻辑解耦合演示 */ 50 | private onHandler(event: string, args: any) { 51 | switch (event) { 52 | case RoleEvent.ChangeJob: 53 | this.animator.refresh(); 54 | break; 55 | } 56 | } 57 | 58 | reset() { 59 | this.node.destroy(); 60 | } 61 | } -------------------------------------------------------------------------------- /assets/script/game/role/view/RoleViewComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "60726b1a-adbb-480c-97cb-2c4fbbe7228b", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view/RoleViewController.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-11-18 17:42:59 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-06-14 17:57:33 6 | */ 7 | 8 | import { Component, EventTouch, Node, UITransform, v3, _decorator } from "cc"; 9 | import { oops } from "../../../../../extensions/oops-plugin-framework/assets/core/Oops"; 10 | import { Role } from "../Role"; 11 | 12 | const { ccclass, property } = _decorator; 13 | 14 | /** 角色资源加载 */ 15 | @ccclass('RoleViewController') 16 | export class RoleViewController extends Component { 17 | /** 角色对象 */ 18 | role: Role = null!; 19 | 20 | onLoad() { 21 | oops.gui.game.on(Node.EventType.TOUCH_END, this.onTouchEnd, this); 22 | } 23 | 24 | private onTouchEnd(event: EventTouch) { 25 | // 注:角色移动控制代码在RPG类游戏中,应该设计到地图模块监听触摸事件。因为测试代码只有一个角色,为了简少DEMO代码量,只表达程序设计思想 26 | var uit = this.node.parent!.getComponent(UITransform)!; 27 | var x = event.getUILocation().x - uit.contentSize.width / 2; 28 | var y = event.getUILocation().y - uit.contentSize.height / 2; 29 | this.role.move(v3(x, y)); 30 | 31 | if (x < this.role.RoleView.node.position.x) 32 | this.role.RoleView.animator.left(); 33 | else 34 | this.role.RoleView.animator.right(); 35 | } 36 | 37 | onDestroy() { 38 | oops.gui.game.off(Node.EventType.TOUCH_END, this.onTouchEnd, this); 39 | } 40 | } -------------------------------------------------------------------------------- /assets/script/game/role/view/RoleViewController.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "2a2ff264-d54f-4668-917b-09538e50fda2", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view/RoleViewInfoComp.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2022-06-02 09:38:48 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2023-08-16 14:44:08 6 | */ 7 | import { EventTouch, Node, _decorator } from "cc"; 8 | import { oops } from "../../../../../extensions/oops-plugin-framework/assets/core/Oops"; 9 | import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; 10 | import { CCComp } from "../../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; 11 | import { UIID } from "../../common/config/GameUIConfig"; 12 | import { SingletonModuleComp } from "../../common/ecs/SingletonModuleComp"; 13 | 14 | const { ccclass, property } = _decorator; 15 | 16 | /** 角色信息界面 */ 17 | @ccclass('RoleViewInfoComp') 18 | @ecs.register('RoleViewInfo', false) 19 | export class RoleViewInfoComp extends CCComp { 20 | onAdded(args: any) { 21 | console.log(args); 22 | return true; 23 | } 24 | 25 | onLoad() { 26 | this.node.on(Node.EventType.TOUCH_END, this.onTouchEnd, this); 27 | } 28 | 29 | private onTouchEnd(event: EventTouch) { 30 | switch (event.target.name) { 31 | case "btn_levelup": 32 | var role = ecs.getSingleton(SingletonModuleComp).account.AccountModel.role; 33 | role.upgrade(); 34 | break; 35 | case "btn_close": 36 | this.ent.remove(RoleViewInfoComp); 37 | break; 38 | } 39 | 40 | event.propagationStopped = true; 41 | } 42 | 43 | reset() { 44 | oops.gui.remove(UIID.Demo_Role_Info, false); 45 | 46 | // 注:模拟二次删除清理缓存 47 | // setTimeout(() => { 48 | // oops.gui.remove(UIID.Demo_Role_Info); 49 | // }, 1000); 50 | } 51 | 52 | protected onDestroy(): void { 53 | console.log("释放角色信息界面"); 54 | } 55 | } -------------------------------------------------------------------------------- /assets/script/game/role/view/RoleViewInfoComp.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "0f226e11-e1dd-4932-957f-38382114c904", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view/RoleViewLoader.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-11-18 17:42:59 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-08-11 15:04:39 6 | */ 7 | 8 | import { Component, sp, _decorator } from "cc"; 9 | import { oops } from "../../../../../extensions/oops-plugin-framework/assets/core/Oops"; 10 | import { GameResPath } from "../../common/config/GameResPath"; 11 | import { Role } from "../Role"; 12 | 13 | const { ccclass, property } = _decorator; 14 | 15 | /** 角色资源加载 */ 16 | @ccclass('RoleViewLoader') 17 | export class RoleViewLoader extends Component { 18 | spine: sp.Skeleton = null!; 19 | 20 | onLoad() { 21 | this.node.on("load", this.onEmitLoad, this); 22 | } 23 | 24 | private onEmitLoad(role: Role) { 25 | this.spine = role.RoleView.spine; 26 | this.load(role.RoleModel.anim); 27 | } 28 | 29 | private load(name: string) { 30 | this.node.active = false; 31 | 32 | var path = GameResPath.getRolePath(name); 33 | oops.res.load(path, sp.SkeletonData, (err: Error | null, sd: sp.SkeletonData) => { 34 | if (err) { 35 | console.error(`动画名为【${path}】的角色资源不存在`); 36 | return; 37 | } 38 | 39 | this.spine.skeletonData = sd; 40 | this.spine.skeletonData.addRef(); 41 | this.node.active = true; 42 | this.node.setPosition(0, -100); 43 | }); 44 | } 45 | 46 | onDestroy() { 47 | if (this.spine.skeletonData) this.spine.skeletonData.decRef(); 48 | } 49 | } -------------------------------------------------------------------------------- /assets/script/game/role/view/RoleViewLoader.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "f8b091bb-afa5-4871-b9b7-6c939d412d7a", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view/animator.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "b8e5c81d-6aa8-4b57-b517-0af8728426ba", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/role/view/animator/AnimationEventHandler.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-09-22 16:42:25 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-06-14 19:55:59 6 | */ 7 | 8 | import AnimatorBase, { AnimationPlayer } from "../../../../../../extensions/oops-plugin-framework/assets/libs/animator/core/AnimatorBase"; 9 | 10 | class FrameEventData { 11 | public callback!: Function; 12 | public target: any; 13 | } 14 | 15 | /** 模型动作自定义事件逻辑 */ 16 | export class AnimationEventHandler implements AnimationPlayer { 17 | private frameEvents: Map = new Map(); 18 | private finishedEvents: Map = new Map(); 19 | 20 | public addFrameEvent(type: string, callback: Function, target: any) { 21 | var data = new FrameEventData(); 22 | data.callback = callback; 23 | data.target = target; 24 | this.frameEvents.set(type, data); 25 | } 26 | 27 | public addFinishedEvent(type: string, callback: Function, target: any) { 28 | var data = new FrameEventData(); 29 | data.callback = callback; 30 | data.target = target; 31 | this.finishedEvents.set(type, data); 32 | } 33 | 34 | onFrameEventCallback(type: string, target: AnimatorBase): void { 35 | var data = this.frameEvents.get(type); 36 | if (data) 37 | data.callback.call(data.target, type, target); 38 | } 39 | 40 | onFinishedCallback(target: AnimatorBase): void { 41 | var data = this.finishedEvents.get(target.curStateName); 42 | if (data) 43 | data.callback.call(data.target, target.curStateName, target); 44 | } 45 | 46 | playAnimation(animName: string, loop: boolean): void { 47 | 48 | } 49 | 50 | scaleTime(scale: number): void { 51 | 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /assets/script/game/role/view/animator/AnimationEventHandler.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "f0c5a787-4c5e-41f5-aee1-83adad904a5e", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view/animator/RoleStateAttack.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-09-01 15:19:04 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-06-14 19:56:14 6 | */ 7 | import { AnimatorStateLogic } from "../../../../../../extensions/oops-plugin-framework/assets/libs/animator/core/AnimatorStateLogic"; 8 | import { Role } from "../../Role"; 9 | import { AnimationEventHandler } from "./AnimationEventHandler"; 10 | 11 | /** 攻击状态逻辑 */ 12 | export class RoleStateAttack extends AnimatorStateLogic { 13 | private role: Role; 14 | private anim: AnimationEventHandler; 15 | 16 | public constructor(role: Role, anim: AnimationEventHandler) { 17 | super(); 18 | this.role = role; 19 | this.anim = anim; 20 | this.anim.addFrameEvent("attack", this.onAttack, this); 21 | } 22 | 23 | private onAttack() { 24 | var onAttackComplete = this.role.RoleView.animator.onAttackComplete; 25 | onAttackComplete && onAttackComplete(); 26 | } 27 | 28 | public onEntry() { 29 | 30 | } 31 | 32 | public onUpdate() { 33 | 34 | } 35 | 36 | public onExit() { 37 | 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /assets/script/game/role/view/animator/RoleStateAttack.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "f4792744-d3f9-4d49-8ee6-b0345898d205", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view/animator/RoleStateDead.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2022-01-26 16:07:58 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-06-14 19:56:19 6 | */ 7 | import { AnimatorStateLogic } from "../../../../../../extensions/oops-plugin-framework/assets/libs/animator/core/AnimatorStateLogic"; 8 | import { Role } from "../../Role"; 9 | import { AnimationEventHandler } from "./AnimationEventHandler"; 10 | 11 | /** 受击状态逻辑 */ 12 | export class RoleStateDead extends AnimatorStateLogic { 13 | private role: Role; 14 | private anim: AnimationEventHandler; 15 | 16 | public constructor(role: Role, anim: AnimationEventHandler) { 17 | super(); 18 | this.role = role; 19 | this.anim = anim; 20 | this.anim.addFrameEvent("dead", this.onDead, this); 21 | } 22 | 23 | private onDead() { 24 | var onHitActionComplete = this.role.RoleView.animator.onHitActionComplete; 25 | onHitActionComplete && onHitActionComplete(); 26 | } 27 | 28 | public onEntry() { 29 | 30 | } 31 | 32 | public onUpdate() { 33 | 34 | } 35 | 36 | public onExit() { 37 | 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /assets/script/game/role/view/animator/RoleStateDead.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "9ee69db5-1542-4ec8-9b17-5b1090d47cfb", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view/animator/RoleStateHit.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: dgflash 3 | * @Date: 2021-09-01 15:19:04 4 | * @LastEditors: dgflash 5 | * @LastEditTime: 2022-06-14 19:56:35 6 | */ 7 | import { AnimatorStateLogic } from "../../../../../../extensions/oops-plugin-framework/assets/libs/animator/core/AnimatorStateLogic"; 8 | import { Role } from "../../Role"; 9 | import { AnimationEventHandler } from "./AnimationEventHandler"; 10 | 11 | /** 受击状态逻辑 */ 12 | export class RoleStateHit extends AnimatorStateLogic { 13 | private role: Role; 14 | private anim: AnimationEventHandler; 15 | 16 | public constructor(role: Role, anim: AnimationEventHandler) { 17 | super(); 18 | this.role = role; 19 | this.anim = anim; 20 | } 21 | 22 | 23 | public onEntry() { 24 | 25 | } 26 | 27 | public onUpdate() { 28 | 29 | } 30 | 31 | public onExit() { 32 | var onHitActionComplete = this.role.RoleView.animator.onHitActionComplete; 33 | onHitActionComplete && onHitActionComplete(); 34 | } 35 | } 36 | 37 | -------------------------------------------------------------------------------- /assets/script/game/role/view/animator/RoleStateHit.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "4.0.24", 3 | "importer": "typescript", 4 | "imported": true, 5 | "uuid": "ea68bd21-e518-4c5c-9250-92430ce0b74c", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": {} 9 | } 10 | -------------------------------------------------------------------------------- /assets/script/game/role/view/component.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "b3bb384b-5a96-4e00-a5f8-29bd621bdf99", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/script/game/skill.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.0", 3 | "importer": "directory", 4 | "imported": true, 5 | "uuid": "a80a879f-d214-454c-a574-18f080ae0d91", 6 | "files": [], 7 | "subMetas": {}, 8 | "userData": { 9 | "compressionType": {}, 10 | "isRemoteBundle": {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /doc/images/editor1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/doc/images/editor1.png -------------------------------------------------------------------------------- /doc/images/example1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/doc/images/example1.gif -------------------------------------------------------------------------------- /doc/images/operate1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/doc/images/operate1.gif -------------------------------------------------------------------------------- /doc/images/operate2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/doc/images/operate2.gif -------------------------------------------------------------------------------- /doc/images/operate3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/doc/images/operate3.gif -------------------------------------------------------------------------------- /doc/images/operate4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/doc/images/operate4.gif -------------------------------------------------------------------------------- /doc/images/runtime1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/doc/images/runtime1.png -------------------------------------------------------------------------------- /doc/images/runtime2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/doc/images/runtime2.png -------------------------------------------------------------------------------- /doc/img/module.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/doc/img/module.png -------------------------------------------------------------------------------- /doc/img/oops-plug-in1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/doc/img/oops-plug-in1.jpg -------------------------------------------------------------------------------- /doc/img/oops-plug-in2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/doc/img/oops-plug-in2.jpg -------------------------------------------------------------------------------- /doc/img/tools.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/doc/img/tools.jpg -------------------------------------------------------------------------------- /doc/using.md: -------------------------------------------------------------------------------- 1 | ### 框架使用说明 2 | Oops Framework从3.5.2版本开始以Cocos Creator插件方式提供使用,这样设计的目的是为了方便作者升级框架功能与修复问题时,方便的去更新框架。 3 | 4 | ### 自动更新最新分支框架版本 5 | 打开Cocos Creator项目目录,执行下列命令 6 | 7 | ###### windows 8 | ``` 9 | md extensions 10 | cd extensions 11 | git clone -b master https://gitee.com/dgflash/oops-plugin-framework.git 12 | git pull 13 | ``` 14 | ###### mac 15 | ``` 16 | mkdir -p extensions 17 | cd extensions 18 | git clone -b master https://gitee.com/dgflash/oops-plugin-framework.git 19 | git pull 20 | ``` -------------------------------------------------------------------------------- /excel/Language.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/excel/Language.xlsx -------------------------------------------------------------------------------- /excel/PromptWindow.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/excel/PromptWindow.xlsx -------------------------------------------------------------------------------- /excel/RoleJob.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/excel/RoleJob.xlsx -------------------------------------------------------------------------------- /excel/RoleLevelUp.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/excel/RoleLevelUp.xlsx -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "oops-framework", 3 | "version": "3.5.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "dependencies": { 9 | "crypto-es": "^1.2.7" 10 | }, 11 | "devDependencies": { 12 | "@types/node": "^17.0.25" 13 | } 14 | }, 15 | "node_modules/@types/node": { 16 | "version": "17.0.25", 17 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz", 18 | "integrity": "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w==", 19 | "dev": true 20 | }, 21 | "node_modules/crypto-es": { 22 | "version": "1.2.7", 23 | "resolved": "https://registry.npmjs.org/crypto-es/-/crypto-es-1.2.7.tgz", 24 | "integrity": "sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ==" 25 | } 26 | }, 27 | "dependencies": { 28 | "@types/node": { 29 | "version": "17.0.25", 30 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz", 31 | "integrity": "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w==", 32 | "dev": true 33 | }, 34 | "crypto-es": { 35 | "version": "1.2.7", 36 | "resolved": "https://registry.npmjs.org/crypto-es/-/crypto-es-1.2.7.tgz", 37 | "integrity": "sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ==" 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "creator": { 3 | "version": "3.8.5" 4 | }, 5 | "dependencies": {}, 6 | "description": "oops-framework", 7 | "devDependencies": { 8 | "@types/node": "^17.0.25" 9 | }, 10 | "name": "oops-framework", 11 | "uuid": "c30b28da-749e-479b-bcb6-cecd8d7be9e3" 12 | } 13 | -------------------------------------------------------------------------------- /settings/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dgflash/oops-framework/daae887c021d8417dd23c2df2446038b239f1862/settings/logo.png -------------------------------------------------------------------------------- /settings/v2/packages/cocos-service.json: -------------------------------------------------------------------------------- 1 | { 2 | "__version__": "3.0.8", 3 | "game": { 4 | "name": "未知游戏", 5 | "app_id": "UNKNOW", 6 | "c_id": "0" 7 | }, 8 | "appConfigMaps": [ 9 | { 10 | "app_id": "UNKNOW", 11 | "config_id": "6d4dd7" 12 | } 13 | ], 14 | "configs": [ 15 | { 16 | "app_id": "UNKNOW", 17 | "config_id": "6d4dd7", 18 | "config_name": "Default", 19 | "config_remarks": "", 20 | "services": [] 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /settings/v2/packages/device.json: -------------------------------------------------------------------------------- 1 | { 2 | "__version__": "1.0.1" 3 | } 4 | -------------------------------------------------------------------------------- /settings/v2/packages/information.json: -------------------------------------------------------------------------------- 1 | { 2 | "__version__": "1.0.1", 3 | "information": { 4 | "customSplash": { 5 | "id": "customSplash", 6 | "label": "customSplash", 7 | "enable": true, 8 | "customSplash": { 9 | "complete": true, 10 | "form": "https://creator-api.cocos.com/api/form/show?sid=af447cd43b16009ccb9a94ab7b8412ef" 11 | } 12 | }, 13 | "removeSplash": { 14 | "id": "removeSplash", 15 | "label": "removeSplash", 16 | "enable": true, 17 | "removeSplash": { 18 | "complete": true, 19 | "form": "https://creator-api.cocos.com/api/form/show?sid=af447cd43b16009ccb9a94ab7b8412ef" 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /settings/v2/packages/oops-plugin-excel-to-json.json: -------------------------------------------------------------------------------- 1 | { 2 | "__version__": "1.0.0", 3 | "PathJson": "../../../assets/resources/config/game/", 4 | "PathExcel": "project://excel", 5 | "PathTs": "../../../assets/script/game/common/table/", 6 | "PathJsonClient": "project://assets/resources/config/game", 7 | "PathTsClient": "project://assets/script/game/common/table" 8 | } 9 | -------------------------------------------------------------------------------- /settings/v2/packages/program.json: -------------------------------------------------------------------------------- 1 | { 2 | "__version__": "1.0.4" 3 | } 4 | -------------------------------------------------------------------------------- /settings/v2/packages/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "__version__": "1.0.6", 3 | "general": { 4 | "designResolution": { 5 | "width": 1200, 6 | "height": 720, 7 | "fitWidth": false, 8 | "fitHeight": true 9 | } 10 | }, 11 | "custom_joint_texture_layouts": [], 12 | "script": { 13 | "preserveSymlinks": true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /settings/v2/packages/scene.json: -------------------------------------------------------------------------------- 1 | { 2 | "__version__": "1.0.2", 3 | "current-scene": "ba0b085f-f8d5-40b0-9964-2fd25728d707" 4 | } 5 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | /* Base configuration. Do not edit this field. */ 3 | "extends": "./temp/tsconfig.cocos.json", 4 | /* Add your custom configuration here. */ 5 | "compilerOptions": { 6 | "strict": true 7 | } 8 | } -------------------------------------------------------------------------------- /update-oops-plugin-excel-to-json.bat: -------------------------------------------------------------------------------- 1 | md extensions 2 | cd extensions 3 | 4 | IF EXIST oops-plugin-excel-to-json ( 5 | goto update 6 | ) ELSE ( 7 | goto clone 8 | ) 9 | 10 | :clone 11 | git clone -b master https://gitee.com/dgflash/oops-plugin-excel-to-json.git 12 | 13 | :update 14 | cd oops-plugin-excel-to-json 15 | git pull 16 | 17 | npm install -------------------------------------------------------------------------------- /update-oops-plugin-excel-to-json.sh: -------------------------------------------------------------------------------- 1 | if [ ! -d "extensions" ]; then 2 | mkdir extensions 3 | fi 4 | cd extensions 5 | 6 | if [ ! -d "oops-plugin-excel-to-json" ]; then 7 | git clone -b master https://gitee.com/dgflash/oops-plugin-excel-to-json.git 8 | else 9 | cd oops-plugin-excel-to-json 10 | git pull 11 | fi 12 | 13 | npm install -------------------------------------------------------------------------------- /update-oops-plugin-framework.bat: -------------------------------------------------------------------------------- 1 | md extensions 2 | cd extensions 3 | 4 | IF EXIST oops-plugin-framework ( 5 | goto update 6 | ) ELSE ( 7 | goto clone 8 | ) 9 | 10 | :clone 11 | git clone -b master https://gitee.com/dgflash/oops-plugin-framework.git 12 | 13 | :update 14 | cd oops-plugin-framework 15 | git pull 16 | 17 | npm install -------------------------------------------------------------------------------- /update-oops-plugin-framework.sh: -------------------------------------------------------------------------------- 1 | if [ ! -d "extensions" ]; then 2 | mkdir extensions 3 | fi 4 | cd extensions 5 | 6 | if [ ! -d "oops-plugin-framework" ]; then 7 | git clone -b master https://gitee.com/dgflash/oops-plugin-framework.git 8 | else 9 | cd oops-plugin-framework 10 | git pull 11 | fi 12 | 13 | npm install -------------------------------------------------------------------------------- /update-oops-plugin-hot-update.bat: -------------------------------------------------------------------------------- 1 | md extensions 2 | cd extensions 3 | 4 | IF EXIST oops-plugin-hot-update ( 5 | goto update 6 | ) ELSE ( 7 | goto clone 8 | ) 9 | 10 | :clone 11 | git clone -b master https://gitee.com/dgflash/oops-plugin-hot-update.git 12 | 13 | :update 14 | cd oops-plugin-hot-update 15 | git pull -------------------------------------------------------------------------------- /update-oops-plugin-hot-update.sh: -------------------------------------------------------------------------------- 1 | if [ ! -d "extensions" ]; then 2 | mkdir extensions 3 | fi 4 | cd extensions 5 | 6 | if [ ! -d "oops-plugin-hot-update" ]; then 7 | git clone -b master https://gitee.com/dgflash/oops-plugin-hot-update.git 8 | else 9 | cd oops-plugin-hot-update 10 | git pull 11 | fi 12 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/node@^17.0.25": 6 | "integrity" "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w==" 7 | "resolved" "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz" 8 | "version" "17.0.25" 9 | 10 | "crypto-es@^1.2.7": 11 | "integrity" "sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ==" 12 | "resolved" "https://registry.npmjs.org/crypto-es/-/crypto-es-1.2.7.tgz" 13 | "version" "1.2.7" 14 | --------------------------------------------------------------------------------