├── .gitignore ├── README.md ├── turn-based-game-client-engine ├── .editorconfig ├── .gitignore ├── .leanignore ├── README.md ├── leanengine.yaml ├── package-lock.json ├── package.json ├── scripts │ └── stress-test.js ├── src │ ├── configs.ts │ ├── index.ts │ ├── reception.ts │ └── turn-based-game.ts ├── tsconfig.json └── tslint.yaml └── turn-based-game-client ├── .gitignore ├── README.md ├── assets ├── Scene.meta ├── Scene │ ├── Lobby.fire │ ├── Lobby.fire.meta │ ├── Login.fire │ ├── Login.fire.meta │ ├── Room.fire │ └── Room.fire.meta ├── Script.meta ├── Script │ ├── Events.ts │ ├── Events.ts.meta │ ├── Global.ts │ ├── Global.ts.meta │ ├── Hero.ts │ ├── Hero.ts.meta │ ├── Lobby.ts │ ├── Lobby.ts.meta │ ├── Login.ts │ ├── Login.ts.meta │ ├── Room.ts │ └── Room.ts.meta ├── Texture.meta ├── Texture │ ├── Animation.meta │ ├── Animation │ │ ├── HeroBullAttack.anim │ │ ├── HeroBullAttack.anim.meta │ │ ├── HeroBullDefault.anim │ │ ├── HeroBullDefault.anim.meta │ │ ├── HeroBullDefend.anim │ │ ├── HeroBullDefend.anim.meta │ │ ├── HeroBullMiss.anim │ │ ├── HeroBullMiss.anim.meta │ │ ├── HeroGirlAttack.anim │ │ ├── HeroGirlAttack.anim.meta │ │ ├── HeroGirlDefault.anim │ │ ├── HeroGirlDefault.anim.meta │ │ ├── HeroGirlDefend.anim │ │ ├── HeroGirlDefend.anim.meta │ │ ├── HeroGirlMiss.anim │ │ └── HeroGirlMiss.anim.meta │ ├── HelloWorld.png │ ├── HelloWorld.png.meta │ ├── HeroBull.meta │ ├── HeroBull │ │ ├── Attack.meta │ │ ├── Attack │ │ │ ├── frame0.png │ │ │ ├── frame0.png.meta │ │ │ ├── frame1.png │ │ │ ├── frame1.png.meta │ │ │ ├── frame10.png │ │ │ ├── frame10.png.meta │ │ │ ├── frame11.png │ │ │ ├── frame11.png.meta │ │ │ ├── frame2.png │ │ │ ├── frame2.png.meta │ │ │ ├── frame3.png │ │ │ ├── frame3.png.meta │ │ │ ├── frame4.png │ │ │ ├── frame4.png.meta │ │ │ ├── frame5.png │ │ │ ├── frame5.png.meta │ │ │ ├── frame6.png │ │ │ ├── frame6.png.meta │ │ │ ├── frame7.png │ │ │ ├── frame7.png.meta │ │ │ ├── frame8.png │ │ │ ├── frame8.png.meta │ │ │ ├── frame9.png │ │ │ └── frame9.png.meta │ │ ├── Default.meta │ │ ├── Default │ │ │ ├── frame0.png │ │ │ ├── frame0.png.meta │ │ │ ├── frame1.png │ │ │ ├── frame1.png.meta │ │ │ ├── frame2.png │ │ │ ├── frame2.png.meta │ │ │ ├── frame3.png │ │ │ ├── frame3.png.meta │ │ │ ├── frame4.png │ │ │ ├── frame4.png.meta │ │ │ ├── frame5.png │ │ │ ├── frame5.png.meta │ │ │ ├── frame6.png │ │ │ ├── frame6.png.meta │ │ │ ├── frame7.png │ │ │ ├── frame7.png.meta │ │ │ ├── frame8.png │ │ │ └── frame8.png.meta │ │ ├── Defend.meta │ │ ├── Defend │ │ │ ├── frame0.png │ │ │ ├── frame0.png.meta │ │ │ ├── frame1.png │ │ │ ├── frame1.png.meta │ │ │ ├── frame2.png │ │ │ ├── frame2.png.meta │ │ │ ├── frame3.png │ │ │ ├── frame3.png.meta │ │ │ ├── frame4.png │ │ │ ├── frame4.png.meta │ │ │ ├── frame5.png │ │ │ ├── frame5.png.meta │ │ │ ├── frame6.png │ │ │ ├── frame6.png.meta │ │ │ ├── frame7.png │ │ │ ├── frame7.png.meta │ │ │ ├── frame8.png │ │ │ └── frame8.png.meta │ │ ├── Miss.meta │ │ └── Miss │ │ │ ├── frame0.png │ │ │ ├── frame0.png.meta │ │ │ ├── frame1.png │ │ │ ├── frame1.png.meta │ │ │ ├── frame2.png │ │ │ ├── frame2.png.meta │ │ │ ├── frame3.png │ │ │ ├── frame3.png.meta │ │ │ ├── frame4.png │ │ │ ├── frame4.png.meta │ │ │ ├── frame5.png │ │ │ ├── frame5.png.meta │ │ │ ├── frame6.png │ │ │ ├── frame6.png.meta │ │ │ ├── frame7.png │ │ │ ├── frame7.png.meta │ │ │ ├── frame8.png │ │ │ └── frame8.png.meta │ ├── HeroGirl.meta │ ├── HeroGirl │ │ ├── Attack.meta │ │ ├── Attack │ │ │ ├── frame0.png │ │ │ ├── frame0.png.meta │ │ │ ├── frame1.png │ │ │ ├── frame1.png.meta │ │ │ ├── frame2.png │ │ │ ├── frame2.png.meta │ │ │ ├── frame3.png │ │ │ ├── frame3.png.meta │ │ │ ├── frame4.png │ │ │ ├── frame4.png.meta │ │ │ ├── frame5.png │ │ │ ├── frame5.png.meta │ │ │ ├── frame6.png │ │ │ ├── frame6.png.meta │ │ │ ├── frame7.png │ │ │ ├── frame7.png.meta │ │ │ ├── frame8.png │ │ │ ├── frame8.png.meta │ │ │ ├── frame9.png │ │ │ └── frame9.png.meta │ │ ├── Default.meta │ │ ├── Default │ │ │ ├── frame0.png │ │ │ ├── frame0.png.meta │ │ │ ├── frame1.png │ │ │ ├── frame1.png.meta │ │ │ ├── frame2.png │ │ │ ├── frame2.png.meta │ │ │ ├── frame3.png │ │ │ ├── frame3.png.meta │ │ │ ├── frame4.png │ │ │ ├── frame4.png.meta │ │ │ ├── frame5.png │ │ │ ├── frame5.png.meta │ │ │ ├── frame6.png │ │ │ ├── frame6.png.meta │ │ │ ├── frame7.png │ │ │ ├── frame7.png.meta │ │ │ ├── frame8.png │ │ │ └── frame8.png.meta │ │ ├── Defend.meta │ │ ├── Defend │ │ │ ├── frame0.png │ │ │ ├── frame0.png.meta │ │ │ ├── frame1.png │ │ │ ├── frame1.png.meta │ │ │ ├── frame2.png │ │ │ ├── frame2.png.meta │ │ │ ├── frame3.png │ │ │ ├── frame3.png.meta │ │ │ ├── frame4.png │ │ │ ├── frame4.png.meta │ │ │ ├── frame5.png │ │ │ ├── frame5.png.meta │ │ │ ├── frame6.png │ │ │ ├── frame6.png.meta │ │ │ ├── frame7.png │ │ │ ├── frame7.png.meta │ │ │ ├── frame8.png │ │ │ ├── frame8.png.meta │ │ │ ├── frame9.png │ │ │ └── frame9.png.meta │ │ ├── Miss.meta │ │ └── Miss │ │ │ ├── frame0.png │ │ │ ├── frame0.png.meta │ │ │ ├── frame1.png │ │ │ ├── frame1.png.meta │ │ │ ├── frame2.png │ │ │ ├── frame2.png.meta │ │ │ ├── frame3.png │ │ │ ├── frame3.png.meta │ │ │ ├── frame4.png │ │ │ ├── frame4.png.meta │ │ │ ├── frame5.png │ │ │ ├── frame5.png.meta │ │ │ ├── frame6.png │ │ │ ├── frame6.png.meta │ │ │ ├── frame7.png │ │ │ └── frame7.png.meta │ ├── Prefab.meta │ ├── Prefab │ │ ├── HeroBull.prefab │ │ ├── HeroBull.prefab.meta │ │ ├── HeroGirl.prefab │ │ └── HeroGirl.prefab.meta │ ├── background.png │ ├── background.png.meta │ ├── button-normal.png │ ├── button-normal.png.meta │ ├── button-pressed.png │ ├── button-pressed.png.meta │ ├── editBox.png │ ├── editBox.png.meta │ ├── roomButton.png │ ├── roomButton.png.meta │ ├── singleColor.png │ └── singleColor.png.meta ├── migration.meta └── migration │ ├── use_v2.0.x_cc.Toggle_event.js │ └── use_v2.0.x_cc.Toggle_event.js.meta ├── creator.d.ts ├── jsconfig.json ├── package-lock.json ├── package.json ├── project.json ├── settings ├── builder.json ├── builder.panel.json ├── project.json └── services.json ├── template-banner.png └── template.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | 24 | # nyc test coverage 25 | .nyc_output 26 | 27 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 28 | .grunt 29 | 30 | # Bower dependency directory (https://bower.io/) 31 | bower_components 32 | 33 | # node-waf configuration 34 | .lock-wscript 35 | 36 | # Compiled binary addons (https://nodejs.org/api/addons.html) 37 | build/Release 38 | 39 | # Dependency directories 40 | node_modules/ 41 | jspm_packages/ 42 | 43 | # TypeScript v1 declaration files 44 | typings/ 45 | 46 | # Optional npm cache directory 47 | .npm 48 | 49 | # Optional eslint cache 50 | .eslintcache 51 | 52 | # Optional REPL history 53 | .node_repl_history 54 | 55 | # Output of 'npm pack' 56 | *.tgz 57 | 58 | # Yarn Integrity file 59 | .yarn-integrity 60 | 61 | # dotenv environment variables file 62 | .env 63 | .env.test 64 | 65 | # parcel-bundler cache (https://parceljs.org/) 66 | .cache 67 | 68 | # next.js build output 69 | .next 70 | 71 | # nuxt.js build output 72 | .nuxt 73 | 74 | # vuepress build output 75 | .vuepress/dist 76 | 77 | # Serverless directories 78 | .serverless/ 79 | 80 | # FuseBox cache 81 | .fusebox/ 82 | 83 | # DynamoDB Local files 84 | .dynamodb/ 85 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 回合制在线对战 Demo 2 | 3 | 这款 Demo 是用 LeanCloud [实时对战](https://leancloud.cn/docs/multiplayer-guide-js.html)和 [Client Engine](https://leancloud.cn/docs/client-engine.html) 实现的一款回合制对战游戏,全部服务端及客户端的代码总共花费了约 7 天的时间。试玩链接:https://turn-game.leanapp.cn 4 | 5 | 主要界面如下: 6 | 7 | 8 | 9 | ## 启动游戏 10 | ### 服务端 11 | 12 | 登录 LeanCloud 控制台,进入「游戏」-「Client Engine」-「部署」,选择「开始试用」。 13 | 14 | 安装 LeanCloud [命令行工具](https://leancloud.cn/docs/leanengine_cli.html#hash1443149115)。 15 | 16 | ```sh 17 | cd turn-based-game-client-engine 18 | lean login 19 | lean switch 20 | ``` 21 | 分组时选择 `_client-engine` 分组。 22 | 23 | ```sh 24 | npm install 25 | DEBUG=ClientEngine*,RPS*,Play lean up 26 | ``` 27 | 28 | ### 客户端 29 | 客户端代码位于 `./turn-based-game-client/assets` ,找到 `Global.ts` 文件,修改其中的 APP_ID 和 APP_KEY 和服务端选择的应用相同,`roomRequestUrl` 使用 `localhost:3000`。 30 | 31 | 安装依赖: 32 | 33 | ```sh 34 | npm install 35 | ``` 36 | 37 | 依赖安装完成后,使用 Cocos Creator 运行 `./turn-based-game-client` 中的项目。 38 | 39 | 40 | ## 实现方式 41 | 42 | 客户端之间用实时对战云来通讯。MasterClient 在 Client Engine 中控制房间内的逻辑。在游戏过程中,客户端将全部的事件发送给 MasterClient,由 MasterClient 在服务端执行相关逻辑后,再通过自定义事件指示客户端播放相关动画。 43 | 44 | 具体流程如下: 45 | 46 | * 客户端请求 Client Engine 获得房间名称、加入房间。 47 | * 房间人满后,位于 Client Engine 中的 MasterClient 为两个客户端分配人物属性。 48 | * MasterClient 向房间内广播「游戏开始」事件,客户端收到事件后加载 Room 场景。 49 | * 客户端做出选择,并将选项发送给 MasterClient。 50 | * MasterClient 收到两方客户端的选项后,计算英雄血值,并广播「开始本轮对战」事件。 51 | * 客户端播放对战动画,播放完成后根据服务端的计算结果校准 UI。 52 | * 重复每轮对战,直到某一名英雄血值为 0。 53 | 54 | ### 服务端代码 55 | 56 | 这里的服务端代码指的是 Client Engine 中的游戏逻辑代码,位于 `./turn-based-game-client-engine/src`。 57 | 58 | ``` 59 | ├── configs.ts // 配置文件 60 | ├── index.ts // 项目入口 61 | ├── reception.ts // Reception 类实现文件,GameManager 的子类,负责管理 Game,在这个文件中撰写了创建 Game 的自定义方法 62 | └── turn-based-game.ts // 实现了 TurnBasedGame 类,用于控制房间内的具体逻辑。 63 | ``` 64 | 65 | 服务端的代码沿用了 LeanCloud Client Engine [示例项目](https://github.com/leancloud/client-engine-nodejs-getting-started)中的代码,仅修改了示例项目的 `rps-game.ts` 为 `turn-based-game.ts`,在 `turn-based-game.ts` 文件中撰写了自己的游戏逻辑。 66 | 67 | 关于如何使用 Client Engine 开发游戏逻辑,请参考 LeanCloud 官方文档:[《你的第一个 Client Engine 小游戏》](https://leancloud.cn/docs/client-engine-first-game-node.html) 68 | 69 | ### 客户端代码 70 | 71 | 客户端位于 `./turn-based-game-client/assets`。 72 | 73 | ``` 74 | ├── Global.ts // 一些全局的配置或变量 75 | ├── Events.ts // 接收所有通过 LeanCloud 实时对战云发送的自定义事件。 76 | ├── Hero.ts // 在这里撰写英雄的属性及自定义方法 77 | ├── Login.ts // 登录场景文件 78 | ├── Lobby.ts // 大厅场景文件 79 | └── Room.ts // 房间场景文件 80 | ``` 81 | 82 | ## 主要功能实现介绍 83 | 84 | ### 快速开始 85 | 随便找一个有空位的房间快速开始。服务端代码位于 `index.ts` 文件,详情请参考 LeanCloud 文档[快速开始](https://leancloud.cn/docs/client-engine-first-game-node.html#hash-1870869335)。 86 | 87 | 客户端代码位于 `Lobby.ts`,详细介绍请参考[入口 API:快速开始](https://leancloud.cn/docs/client-engine-first-game-node.html#hash-65842943) 88 | 89 | ### 设置人物属性 90 | 当房间人满后,MasterClient 会设置位于房间内的人物属性,包括血值、攻击力、防御力、治疗能力、速度等,此段逻辑位于服务端 `turn-based-game.ts` 文件中。设置人物属性的详细介绍请参考 LeanCloud 文档[玩家自定义属性](https://leancloud.cn/docs/multiplayer-guide-js.html#hash700221845)。 91 | 92 | ### 房间内对战 93 | 房间内对战主要依靠[自定义事件](https://leancloud.cn/docs/multiplayer-guide-js.html#hash1368192228)进行通信,主要有这些自定义事件: 94 | * MasterClient 广播事件,位于服务端代码 `turn-based-game.ts` 文件中。 95 | * 游戏开始(`game-start`) 96 | * 游戏结束(`game-over`) 97 | * 开始播放动画(`begin-round-anim`) 98 | * 客户端事件,位于客户端代码 `Room.ts` 及 `Events.ts` 文件中。 99 | * 发送选项给 MasterClient(`action`) 100 | 101 | -------------------------------------------------------------------------------- /turn-based-game-client-engine/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | insert_final_newline = true 8 | -------------------------------------------------------------------------------- /turn-based-game-client-engine/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | docs 4 | 5 | .leancloud 6 | -------------------------------------------------------------------------------- /turn-based-game-client-engine/.leanignore: -------------------------------------------------------------------------------- 1 | .git/ 2 | .DS_Store 3 | .avoscloud/ 4 | .leancloud/ 5 | node_modules/ -------------------------------------------------------------------------------- /turn-based-game-client-engine/README.md: -------------------------------------------------------------------------------- 1 | Client Engine Node.js Getting Started 2 | ---- 3 | LeanCloud Client Engine 服务端示例项目(Node.js) 4 | 5 | [文档](https://github.com/leancloud/client-engine-nodejs-getting-started/wiki) 6 | -------------------------------------------------------------------------------- /turn-based-game-client-engine/leanengine.yaml: -------------------------------------------------------------------------------- 1 | installDevDependencies: true 2 | -------------------------------------------------------------------------------- /turn-based-game-client-engine/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "client-engine-nodejs-getting-started", 3 | "version": "0.1.0", 4 | "private": true, 5 | "description": "A sample LeanCloud Client Engine app", 6 | "main": "build/index.js", 7 | "scripts": { 8 | "lint": "tslint src/*", 9 | "lint:fix": "tslint src/* --fix", 10 | "build": "tsc --build tsconfig.json", 11 | "start": "node -r source-map-support/register build/index.js", 12 | "dev": "npm run build && npm run start", 13 | "postinstall": "npm run build" 14 | }, 15 | "keywords": [ 16 | "leancloud", 17 | "client-engine", 18 | "master-client" 19 | ], 20 | "license": "MIT", 21 | "dependencies": { 22 | "@leancloud/client-engine": "^1.0.0", 23 | "@leancloud/play": "^1.0.0", 24 | "body-parser": "^1.18.3", 25 | "cors": "^2.8.5", 26 | "debug": "^4.1.1", 27 | "express": "^4.16.4", 28 | "express-basic-auth": "^1.1.6", 29 | "lodash": "^4.17.11", 30 | "rxjs": "^6.6.3", 31 | "source-map-support": "^0.5.11" 32 | }, 33 | "engines": { 34 | "node": "10.x" 35 | }, 36 | "devDependencies": { 37 | "@types/cors": "^2.8.4", 38 | "@types/debug": "0.0.31", 39 | "@types/express": "^4.16.1", 40 | "@types/lodash": "^4.14.123", 41 | "axios": "^0.18.0", 42 | "tslint": "^5.14.0", 43 | "typescript": "^4.0.5" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /turn-based-game-client-engine/scripts/stress-test.js: -------------------------------------------------------------------------------- 1 | const { default: axios } = require("axios"); 2 | const { Play, Region, ReceiverGroup, Event } = require("@leancloud/play"); 3 | 4 | const HOST = process.env.HOST || "http://localhost:3000"; 5 | 6 | const APP_ID = process.env.LEANCLOUD_APP_ID; 7 | const APP_KEY = process.env.LEANCLOUD_APP_KEY; 8 | const MASTER_KEY = process.env.LEANCLOUD_APP_MASTER_KEY; 9 | 10 | if (!APP_ID) 11 | throw new Error( 12 | "process.env.LEANCLOUD_APP_ID not set, run `$(lean env)` to export." 13 | ); 14 | 15 | let playerCount = 50; 16 | const sendEventInterval = 100; 17 | 18 | setInterval(() => { 19 | if (!playerCount) return; 20 | playerCount--; 21 | const play = new Play(); 22 | play.init({ 23 | appId: APP_ID, 24 | appKey: APP_KEY, 25 | region: Region.NorthChina 26 | }); 27 | play.userId = Date.now().toString(); 28 | play.connect(); 29 | play.once(Event.CONNECTED, async () => { 30 | const { 31 | data: { roomName } 32 | } = await axios.post(`${HOST}/reservation`, { playerId: play.userId }); 33 | console.log(`${play.userId} join ${roomName}`); 34 | play.joinRoom(roomName); 35 | play.once(Event.ROOM_JOINED, () => { 36 | setInterval(() => { 37 | try { 38 | play.sendEvent( 39 | "play", 40 | { index: 1 }, 41 | { receiverGroup: ReceiverGroup.All } 42 | ); 43 | } catch (e) {} 44 | }, sendEventInterval); 45 | }); 46 | }); 47 | }, 1000); 48 | 49 | setInterval(async () => { 50 | const { 51 | data: { 52 | memoryUsage, 53 | osLoadavg, 54 | gameManager: { laod } 55 | } 56 | } = await axios.get(`${HOST}/admin/status`, { 57 | auth: { 58 | username: "admin", 59 | password: MASTER_KEY 60 | } 61 | }); 62 | console.log( 63 | Date.now(), 64 | JSON.stringify({ 65 | memoryUsage, 66 | osLoadavg, 67 | gameManagerLoad: laod 68 | }) 69 | ); 70 | }, 1000); 71 | -------------------------------------------------------------------------------- /turn-based-game-client-engine/src/configs.ts: -------------------------------------------------------------------------------- 1 | const APP_ID = process.env.LEANCLOUD_APP_ID!; 2 | const APP_KEY = process.env.LEANCLOUD_APP_KEY!; 3 | const API_SERVER = process.env.LEANCLOUD_API_SERVER!; 4 | const MASTER_KEY = process.env.LEANCLOUD_APP_MASTER_KEY!; 5 | if (APP_ID === undefined) { 6 | throw new Error("LEANCLOUD_APP_ID not set"); 7 | } 8 | if (APP_KEY === undefined) { 9 | throw new Error("LEANCLOUD_APP_KEY not set"); 10 | } 11 | if (MASTER_KEY === undefined) { 12 | throw new Error("LEANCLOUD_APP_MASTER_KEY not set"); 13 | } 14 | 15 | export { APP_ID, APP_KEY, API_SERVER, MASTER_KEY }; 16 | -------------------------------------------------------------------------------- /turn-based-game-client-engine/src/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | ICreateGameOptions, 3 | LoadBalancerFactory, 4 | } from "@leancloud/client-engine"; 5 | import bodyParser = require("body-parser"); 6 | import cors = require("cors"); 7 | import d = require("debug"); 8 | import express = require("express"); 9 | import basicAuth = require("express-basic-auth"); 10 | import os = require("os"); 11 | import { APP_ID, APP_KEY, API_SERVER, MASTER_KEY } from "./configs"; 12 | import Reception from "./reception"; 13 | import TurnBasedGame from "./turn-based-game"; 14 | 15 | const app = express(); 16 | app.use(bodyParser.json()); 17 | app.use(cors()); 18 | 19 | // 首页仅起到响应健康检查的作用 20 | app.get("/", (req, res) => { 21 | res.send(` 22 |

这是 LeanCloud Client Engine 的服务端部分,客户端部分的示例代码在 https://github.com/leancloud/client-engine-demo-webapp 23 | `); 24 | }); 25 | 26 | const reception = new Reception({ 27 | gameConstructor: TurnBasedGame, 28 | appId: APP_ID, 29 | appKey: APP_KEY, 30 | playServer: API_SERVER, 31 | concurrency: 2, 32 | }); 33 | 34 | const loadBalancerFactory = new LoadBalancerFactory({ 35 | poolId: `${APP_ID.slice(0, 5)}-${ 36 | process.env.LEANCLOUD_APP_ENV || "development" 37 | }`, 38 | redisUrl: process.env.REDIS_URL__CLIENT_ENGINE, 39 | }); 40 | 41 | const loadBalancer = loadBalancerFactory 42 | .bind(reception, ["makeReservation", "createGameAndGetName"]) 43 | .on("online", () => console.log("Load balancer online")) 44 | .on("offline", () => { 45 | console.warn( 46 | `The load balancer can not connect to Redis server. Client Engine will keep running in standalone mode. 47 | It's probably fine if you are running it locally without a Redis server. Otherwise, check project configs.` 48 | ); 49 | }); 50 | 51 | const debug = d("ClientEngine"); 52 | 53 | // TODO: 这个接口需要鉴权与流控 54 | app.post("/reservation", async (req, res, next) => { 55 | try { 56 | const { playerId } = req.body as { 57 | playerId: any; 58 | }; 59 | if (typeof playerId !== "string") { 60 | throw new Error("Missing playerId"); 61 | } 62 | debug(`Making reservation for player[${playerId}]`); 63 | const roomName = await reception.makeReservation(playerId); 64 | debug(`Seat reserved, room: ${roomName}`); 65 | return res.json({ 66 | roomName, 67 | }); 68 | } catch (error) { 69 | next(error); 70 | } 71 | }); 72 | 73 | app.post("/game", async (req, res, next) => { 74 | try { 75 | const { playerId, options } = req.body as { 76 | playerId: any; 77 | options: ICreateGameOptions; 78 | }; 79 | if (typeof playerId !== "string") { 80 | throw new Error("Missing playerId"); 81 | } 82 | debug(`Creating a new game for player[${playerId}]`); 83 | const roomName = await reception.createGameAndGetName(playerId, options); 84 | debug(`Game created, room: ${roomName}`); 85 | return res.json({ 86 | roomName, 87 | }); 88 | } catch (error) { 89 | next(error); 90 | } 91 | }); 92 | 93 | app.use( 94 | "/admin", 95 | basicAuth({ 96 | challenge: true, 97 | realm: APP_ID, 98 | users: { admin: MASTER_KEY }, 99 | }) 100 | ); 101 | 102 | app.get("/admin/status", async (req, res, next) => { 103 | try { 104 | res.json({ 105 | loadBalancer: await loadBalancer.getStatus(), 106 | memoryUsage: process.memoryUsage(), 107 | osLoadavg: os.loadavg(), 108 | reception: await reception.getStatus(), 109 | }); 110 | } catch (error) { 111 | next(error); 112 | } 113 | }); 114 | 115 | app.listen(process.env.LEANCLOUD_APP_PORT || 3000); 116 | 117 | // Graceful shutdown 118 | process.on("SIGTERM", async () => { 119 | debug("SIGTERM recieved. Closing the LB."); 120 | try { 121 | await loadBalancer.close(); 122 | debug("Shutting down."); 123 | setTimeout(() => { 124 | process.exit(0); 125 | }, 100); 126 | } catch (error) { 127 | // 如果发生了异常,什么都不做,Client Engine 在超时后会 SIGKILL 掉进程 128 | console.error("Closing LB failed:"); 129 | console.error(error); 130 | } 131 | }); 132 | -------------------------------------------------------------------------------- /turn-based-game-client-engine/src/reception.ts: -------------------------------------------------------------------------------- 1 | import { Game, GameManager, ICreateGameOptions } from "@leancloud/client-engine"; 2 | import d = require("debug"); 3 | 4 | const debug = d("ClientEngine:Reception"); 5 | 6 | export default class Reception extends GameManager { 7 | /** 8 | * 为指定玩家预约游戏,如果没有可用的游戏会创建一个新的游戏。 9 | * @param playerId 预约的玩家 ID 10 | * @return 预约成功的游戏的房间 name 11 | */ 12 | public async makeReservation(playerId: string) { 13 | let game: T; 14 | const availableGames = this.getAvailableGames(); 15 | if (availableGames.length > 0) { 16 | game = availableGames[0]; 17 | this.reserveSeats(game, playerId); 18 | } else { 19 | debug(`No game available.`); 20 | game = await this.createGame(playerId); 21 | } 22 | debug(`Reservation completed: %o`, game.room.name); 23 | return game.room.name; 24 | } 25 | 26 | /** 27 | * 创建一个新的游戏。 28 | * @param playerId 预约的玩家 ID 29 | * @param options 创建新游戏时可以指定的一些配置项 30 | * @return 创建的游戏的房间 name 31 | */ 32 | public async createGameAndGetName(playerId: string, options?: ICreateGameOptions) { 33 | const game = await this.createGame(playerId, options); 34 | return game.room.name; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /turn-based-game-client-engine/src/turn-based-game.ts: -------------------------------------------------------------------------------- 1 | import { 2 | autoDestroy, 3 | AutomaticGameEvent, 4 | Game, 5 | watchRoomFull, 6 | } from "@leancloud/client-engine"; 7 | import { Client, Event, Room, Player } from "@leancloud/play"; 8 | 9 | enum CustomEvent { 10 | gameStart, 11 | gameOver, 12 | action, 13 | beginRoundAnim, 14 | } 15 | 16 | const ATTACK_ACTION = 1; 17 | const DEFEND_ACTION = 2; 18 | const RESTORE_ACTION = 3; 19 | /** 20 | * 回合制对战游戏 21 | */ 22 | @watchRoomFull() 23 | @autoDestroy() 24 | export default class TurnBasedGame extends Game { 25 | public static defaultSeatCount = 2; 26 | 27 | private choices: { [actorId: string]: number } = {}; 28 | 29 | constructor(room: Room, masterClient: Client) { 30 | super(room, masterClient); 31 | // 游戏创建后立刻执行的逻辑 32 | this.once(AutomaticGameEvent.ROOM_FULL, this.start); 33 | } 34 | 35 | public terminate() { 36 | // 将游戏 Room 的 open 属性标记为 false,不再允许用户加入了。 37 | this.masterClient.setRoomOpen(false); 38 | return super.terminate(); 39 | } 40 | 41 | protected start = async () => { 42 | // 标记房间不再可加入 43 | await this.masterClient.setRoomOpen(false); 44 | // 设置玩家属性 45 | const playerABloodValue = Math.floor(Math.random() * 100) + 70; 46 | const playerAProps = { 47 | totalBloodValue: playerABloodValue, 48 | currentBloodValue: playerABloodValue, 49 | attackValue: Math.floor(Math.random() * 20) + 30, 50 | defendValue: Math.floor(Math.random() * 10) + 20, 51 | restoreValue: Math.floor(Math.random() * 20) + 20, 52 | speed: Math.floor(Math.random() * 20) + 80, 53 | isMoveAttack: false, 54 | heroName: "HeroBull", 55 | }; 56 | await this.players[0].setCustomProperties(playerAProps); 57 | 58 | const playerBBloodValue = Math.floor(Math.random() * 100) + 70; 59 | const playerBProps = { 60 | totalBloodValue: playerBBloodValue, 61 | currentBloodValue: playerBBloodValue, 62 | attackValue: Math.floor(Math.random() * 20) + 30, 63 | defendValue: Math.floor(Math.random() * 10) + 20, 64 | restoreValue: Math.floor(Math.random() * 10) + 20, 65 | speed: Math.floor(Math.random() * 20) + 80, 66 | isMoveAttack: true, 67 | heroName: "HeroGirl", 68 | }; 69 | await this.players[1].setCustomProperties(playerBProps); 70 | 71 | // 向客户端广播游戏开始事件 72 | await this.broadcast(CustomEvent.gameStart); 73 | 74 | this.masterClient.on(Event.CUSTOM_EVENT, async (event) => { 75 | const { eventId, eventData, senderId } = event; 76 | if (eventId === CustomEvent.action) { 77 | if (!(String(senderId) in this.choices)) { 78 | this.choices[senderId] = eventData.action; 79 | } 80 | 81 | if (Object.keys(this.choices).length === 2) { 82 | await this.playActions(); 83 | 84 | this.broadcast(CustomEvent.beginRoundAnim, this.choices); 85 | 86 | if (this.players[0].customProperties.currentBloodValue < 0) { 87 | this.masterClient.sendEvent(CustomEvent.gameOver, { 88 | winner: this.players[1].actorId, 89 | }); 90 | } 91 | 92 | if (this.players[1].customProperties.currentBloodValue < 0) { 93 | this.masterClient.sendEvent(CustomEvent.gameOver, { 94 | winner: this.players[0].actorId, 95 | }); 96 | } 97 | 98 | this.choices = {}; 99 | } 100 | } 101 | }); 102 | }; 103 | 104 | private playActions = async () => { 105 | if ( 106 | this.players[0].customProperties.speed >= 107 | this.players[1].customProperties.speed 108 | ) { 109 | await this.calculateBlood(this.players[0], this.players[1]); 110 | } else { 111 | await this.calculateBlood(this.players[1], this.players[0]); 112 | } 113 | }; 114 | 115 | private calculateBlood = async ( 116 | firstPlayer: Player, 117 | secondPlayer: Player 118 | ) => { 119 | if (firstPlayer.customProperties.currentBloodValue > 0) { 120 | switch (this.choices[firstPlayer.actorId]) { 121 | case ATTACK_ACTION: 122 | await this.attack(firstPlayer, secondPlayer); 123 | break; 124 | case DEFEND_ACTION: 125 | break; 126 | case RESTORE_ACTION: 127 | await this.restore(firstPlayer); 128 | break; 129 | default: 130 | break; 131 | } 132 | } 133 | 134 | if (secondPlayer.customProperties.currentBloodValue > 0) { 135 | switch (this.choices[secondPlayer.actorId]) { 136 | case ATTACK_ACTION: 137 | this.attack(secondPlayer, firstPlayer); 138 | break; 139 | case DEFEND_ACTION: 140 | break; 141 | case RESTORE_ACTION: 142 | this.restore(secondPlayer); 143 | break; 144 | default: 145 | break; 146 | } 147 | } 148 | }; 149 | 150 | private attack = async (fromPlayer: Player, toPlayer: Player) => { 151 | let newBloodValue: number = 0; 152 | 153 | if (this.choices[toPlayer.actorId] === DEFEND_ACTION) { 154 | if ( 155 | toPlayer.customProperties.defendValue < 156 | fromPlayer.customProperties.attackValue 157 | ) { 158 | // toPlayer 防御力小于 fromPlayer 的攻击力 159 | newBloodValue = 160 | toPlayer.customProperties.currentBloodValue + 161 | toPlayer.customProperties.defendValue - 162 | fromPlayer.customProperties.attackValue; 163 | await toPlayer.setCustomProperties({ 164 | currentBloodValue: newBloodValue, 165 | }); 166 | } 167 | } else { 168 | newBloodValue = 169 | toPlayer.customProperties.currentBloodValue - 170 | fromPlayer.customProperties.attackValue; 171 | await toPlayer.setCustomProperties({ currentBloodValue: newBloodValue }); 172 | } 173 | }; 174 | 175 | private restore = async (player: Player) => { 176 | const newBloodValue = 177 | player.customProperties.currentBloodValue + 178 | player.customProperties.restoreValue; 179 | if (newBloodValue <= player.customProperties.totalBloodValue) { 180 | await player.setCustomProperties({ currentBloodValue: newBloodValue }); 181 | } else { 182 | await player.setCustomProperties({ 183 | currentBloodValue: player.customProperties.totalBloodValue, 184 | }); 185 | } 186 | }; 187 | } 188 | -------------------------------------------------------------------------------- /turn-based-game-client-engine/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2018", 4 | "module": "commonjs", 5 | "strict": true, 6 | "sourceMap": true, 7 | "experimentalDecorators": true, 8 | "outDir": "build" 9 | }, 10 | "include": ["src/**/*"], 11 | "exclude": ["node_modules"] 12 | } 13 | -------------------------------------------------------------------------------- /turn-based-game-client-engine/tslint.yaml: -------------------------------------------------------------------------------- 1 | extends: 2 | - "tslint:recommended" 3 | rules: 4 | no-console: false 5 | -------------------------------------------------------------------------------- /turn-based-game-client/.gitignore: -------------------------------------------------------------------------------- 1 | #///////////////////////////////////////////////////////////////////////////// 2 | # Fireball Projects 3 | #///////////////////////////////////////////////////////////////////////////// 4 | 5 | library/ 6 | temp/ 7 | local/ 8 | build/ 9 | 10 | #///////////////////////////////////////////////////////////////////////////// 11 | # Logs and databases 12 | #///////////////////////////////////////////////////////////////////////////// 13 | 14 | *.log 15 | *.sql 16 | *.sqlite 17 | 18 | #///////////////////////////////////////////////////////////////////////////// 19 | # files for debugger 20 | #///////////////////////////////////////////////////////////////////////////// 21 | 22 | *.sln 23 | *.csproj 24 | *.pidb 25 | *.unityproj 26 | *.suo 27 | 28 | #///////////////////////////////////////////////////////////////////////////// 29 | # OS generated files 30 | #///////////////////////////////////////////////////////////////////////////// 31 | 32 | .DS_Store 33 | ehthumbs.db 34 | Thumbs.db 35 | 36 | #///////////////////////////////////////////////////////////////////////////// 37 | # exvim files 38 | #///////////////////////////////////////////////////////////////////////////// 39 | 40 | *UnityVS.meta 41 | *.err 42 | *.err.meta 43 | *.exvim 44 | *.exvim.meta 45 | *.vimentry 46 | *.vimentry.meta 47 | *.vimproject 48 | *.vimproject.meta 49 | .vimfiles.*/ 50 | .exvim.*/ 51 | quick_gen_project_*_autogen.bat 52 | quick_gen_project_*_autogen.bat.meta 53 | quick_gen_project_*_autogen.sh 54 | quick_gen_project_*_autogen.sh.meta 55 | .exvim.app 56 | 57 | #///////////////////////////////////////////////////////////////////////////// 58 | # webstorm files 59 | #///////////////////////////////////////////////////////////////////////////// 60 | 61 | .idea/ 62 | 63 | #////////////////////////// 64 | # VS Code 65 | #////////////////////////// 66 | 67 | .vscode/ -------------------------------------------------------------------------------- /turn-based-game-client/README.md: -------------------------------------------------------------------------------- 1 | # hello-world 2 | Hello world new project template. 3 | -------------------------------------------------------------------------------- /turn-based-game-client/assets/Scene.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "29f52784-2fca-467b-92e7-8fd9ef8c57b7", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Scene/Lobby.fire.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.9", 3 | "uuid": "8ad46712-c44d-43fc-ab48-3209f4b38354", 4 | "asyncLoadAssets": false, 5 | "autoReleaseAssets": false, 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Scene/Login.fire.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.9", 3 | "uuid": "cc9f9e91-8dbb-4ea3-b3a6-c75e4cc3e485", 4 | "asyncLoadAssets": false, 5 | "autoReleaseAssets": false, 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Scene/Room.fire.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.9", 3 | "uuid": "d3ff536a-1600-40a1-a948-7dd2090b792e", 4 | "asyncLoadAssets": false, 5 | "autoReleaseAssets": false, 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Script.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "4734c20c-0db8-4eb2-92ea-e692f4d70934", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Script/Events.ts: -------------------------------------------------------------------------------- 1 | // Learn TypeScript: 2 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/typescript.html 3 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/typescript.html 4 | // Learn Attribute: 5 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html 6 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/reference/attributes.html 7 | // Learn life-cycle callbacks: 8 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html 9 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html 10 | 11 | const { ccclass, property } = cc._decorator; 12 | import { global } from './Global'; 13 | import { Client, Event } from '@leancloud/play'; 14 | 15 | export enum CustomEvent { 16 | gameStart, 17 | gameOver, 18 | action, 19 | beginRoundAnim, 20 | } 21 | 22 | @ccclass 23 | export default class NewClass extends cc.Component { 24 | @property(cc.Label) 25 | label: cc.Label = null; 26 | 27 | @property 28 | text: string = 'hello'; 29 | 30 | @property() 31 | client: Client = null; 32 | 33 | // LIFE-CYCLE CALLBACKS: 34 | 35 | // onLoad () {} 36 | 37 | start() { 38 | cc.game.addPersistRootNode(this.node); 39 | this.client = global.client; 40 | 41 | this.client.on(Event.CUSTOM_EVENT, (event) => { 42 | const { eventId, eventData } = event; 43 | 44 | switch (eventId) { 45 | case CustomEvent.gameStart: 46 | cc.director.loadScene('Room'); 47 | break; 48 | case CustomEvent.beginRoundAnim: 49 | cc.find('RoomCanvas').emit('begin-round-anim', eventData); 50 | break; 51 | case CustomEvent.gameOver: 52 | cc.find('RoomCanvas').emit('game-over', eventData); 53 | break; 54 | } 55 | }); 56 | } 57 | 58 | // update (dt) {} 59 | } 60 | -------------------------------------------------------------------------------- /turn-based-game-client/assets/Script/Events.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "c2558605-19ed-472f-bd89-b85b39de8dea", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Script/Global.ts: -------------------------------------------------------------------------------- 1 | // const clientEngineServer = 2 | // process.env.NODE_ENV === "development" 3 | // ? "http://localhost:3000" 4 | // : "https://client-engine-server.leanapp.cn"; 5 | 6 | import { Client } from '@leancloud/play'; 7 | 8 | let client: Client; 9 | 10 | export const global = { 11 | client: client, 12 | APP_ID: 'VlqXg37sxQDFYtUUfVbSplwI-gzGzoHsz', 13 | APP_KEY: 'YEh4M37o7Tunq59PIdEqJFC2', 14 | PLAY_SERVER: 'https://vlqxg37s.lc-cn-n1-shared.com', 15 | // roomRequestUrl: 'http://localhost:3000/reservation', 16 | roomRequestUrl: 'https://turn-game-client-engine.leanapp.cn/reservation', 17 | }; 18 | -------------------------------------------------------------------------------- /turn-based-game-client/assets/Script/Global.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "9b065b47-82cc-4603-bb1b-b753f5c3a26a", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Script/Hero.ts: -------------------------------------------------------------------------------- 1 | // Learn TypeScript: 2 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/typescript.html 3 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/typescript.html 4 | // Learn Attribute: 5 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html 6 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/reference/attributes.html 7 | // Learn life-cycle callbacks: 8 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html 9 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html 10 | 11 | const { ccclass, property } = cc._decorator; 12 | import { Player } from "@leancloud/play"; 13 | 14 | @ccclass 15 | export default class NewClass extends cc.Component { 16 | 17 | @property(cc.ProgressBar) 18 | bloodProgressBar: cc.ProgressBar = null; 19 | 20 | @property(cc.Sprite) 21 | bloodProgressBarSprite: cc.Sprite = null; 22 | 23 | @property(cc.Label) 24 | nameLabel: cc.Label = null; 25 | 26 | // 动画表现层的属性 27 | @property() 28 | properties = { 29 | totalBloodValue: null, 30 | currentBloodValue: null, 31 | attackValue: null, 32 | defendValue: null, 33 | restoreValue: null, 34 | speed: null, 35 | isMoveAttack: null, 36 | originLocationX: null, 37 | }; 38 | 39 | @property() 40 | player: Player = null; 41 | 42 | 43 | 44 | // LIFE-CYCLE CALLBACKS: 45 | 46 | onLoad() { 47 | this.bloodProgressBar.progress = 1; 48 | 49 | } 50 | 51 | start() { 52 | 53 | } 54 | 55 | // update (dt) {} 56 | 57 | updateProgressBar() { 58 | const progress = this.properties.currentBloodValue / this.properties.totalBloodValue; 59 | this.bloodProgressBar.progress = progress; 60 | } 61 | 62 | updateNameLabel(name: string) { 63 | this.nameLabel.string = name; 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /turn-based-game-client/assets/Script/Hero.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "edd5edef-3e1d-4075-8085-4099c30b85d8", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Script/Lobby.ts: -------------------------------------------------------------------------------- 1 | // Learn TypeScript: 2 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/typescript.html 3 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/typescript.html 4 | // Learn Attribute: 5 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html 6 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/reference/attributes.html 7 | // Learn life-cycle callbacks: 8 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html 9 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html 10 | 11 | const { ccclass, property } = cc._decorator; 12 | import { global } from './Global'; 13 | import { Client } from '@leancloud/play'; 14 | 15 | @ccclass 16 | export default class NewClass extends cc.Component { 17 | @property(cc.Label) 18 | userNameLabel: cc.Label = null; 19 | 20 | @property(cc.Button) 21 | matchmakinggButton: cc.Button = null; 22 | 23 | @property(cc.Label) 24 | matchmakingLabel: cc.Label = null; 25 | 26 | @property() 27 | client: Client = null; 28 | 29 | // LIFE-CYCLE CALLBACKS: 30 | 31 | // onLoad () {} 32 | 33 | start() { 34 | this.client = global.client; 35 | this.userNameLabel.string = '当前用户: ' + global.client.userId; 36 | } 37 | 38 | // update (dt) {} 39 | 40 | async onMatchmakingButtonClicked() { 41 | const { roomName } = await ( 42 | await fetch(global.roomRequestUrl, { 43 | method: 'POST', 44 | headers: { 45 | 'Content-Type': 'application/json', 46 | }, 47 | body: JSON.stringify({ 48 | playerId: global.client.userId, 49 | }), 50 | }) 51 | ).json(); 52 | 53 | this.matchmakingLabel.string = '正在等待对手......'; 54 | this.matchmakingLabel.node.active = true; 55 | this.matchmakinggButton.node.active = false; 56 | 57 | this.client.joinRoom(roomName); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /turn-based-game-client/assets/Script/Lobby.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "403dbaf4-1480-4cc2-8b6f-088d3ed95b85", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Script/Login.ts: -------------------------------------------------------------------------------- 1 | // Learn TypeScript: 2 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/typescript.html 3 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/typescript.html 4 | // Learn Attribute: 5 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html 6 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/reference/attributes.html 7 | // Learn life-cycle callbacks: 8 | // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html 9 | // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html 10 | 11 | const { ccclass, property } = cc._decorator; 12 | import { Client } from '@leancloud/play'; 13 | import { global } from './Global'; 14 | 15 | @ccclass 16 | export default class NewClass extends cc.Component { 17 | @property(cc.EditBox) 18 | userIdEditBox: cc.EditBox = null; 19 | 20 | @property(cc.Button) 21 | loginButton: cc.Button = null; 22 | 23 | // LIFE-CYCLE CALLBACKS: 24 | 25 | // onLoad () {} 26 | 27 | start() { 28 | const userId = Date.now().toString(); 29 | this.userIdEditBox.string = userId; 30 | } 31 | 32 | // update (dt) {} 33 | 34 | async onLoginButtonClicked() { 35 | const client = new Client({ 36 | appId: global.APP_ID, 37 | appKey: global.APP_KEY, 38 | playServer: global.PLAY_SERVER, 39 | userId: this.userIdEditBox.string, 40 | }); 41 | await client.connect(); 42 | global.client = client; 43 | cc.director.loadScene('Lobby'); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /turn-based-game-client/assets/Script/Login.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "4411b902-2105-492b-8565-8cbc2c8c75cb", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Script/Room.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "fc540675-2e82-48d7-8142-ff9f8f90c779", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "7b81d4e8-ec84-4716-968d-500ac1d78a54", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "e4ca4947-d39b-4875-9101-3d83c29aa022", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroBullAttack.anim: -------------------------------------------------------------------------------- 1 | { 2 | "__type__": "cc.AnimationClip", 3 | "_name": "HeroBull", 4 | "_objFlags": 0, 5 | "_rawFiles": null, 6 | "_duration": 0.5666666666666667, 7 | "sample": 60, 8 | "speed": 1, 9 | "wrapMode": 1, 10 | "curveData": { 11 | "comps": { 12 | "cc.Sprite": { 13 | "spriteFrame": [ 14 | { 15 | "frame": 0, 16 | "value": { 17 | "__uuid__": "5b9bc638-3970-4d53-998b-1c2a976b07a7" 18 | } 19 | }, 20 | { 21 | "frame": 0.05, 22 | "value": { 23 | "__uuid__": "b08de126-1f18-499d-ae67-1ff26421750c" 24 | } 25 | }, 26 | { 27 | "frame": 0.1, 28 | "value": { 29 | "__uuid__": "3c87842a-24da-4ed5-8406-b95a16fd09a0" 30 | } 31 | }, 32 | { 33 | "frame": 0.15, 34 | "value": { 35 | "__uuid__": "8dd2de62-9932-490e-a9f9-b1edb494b8a8" 36 | } 37 | }, 38 | { 39 | "frame": 0.2, 40 | "value": { 41 | "__uuid__": "b1cc28b8-4458-4174-9262-f966744fcd95" 42 | } 43 | }, 44 | { 45 | "frame": 0.25, 46 | "value": { 47 | "__uuid__": "267e9157-e226-40ff-a711-66e6986eea59" 48 | } 49 | }, 50 | { 51 | "frame": 0.3, 52 | "value": { 53 | "__uuid__": "b91edc70-40a1-4ea5-8557-307ee9e67cc2" 54 | } 55 | }, 56 | { 57 | "frame": 0.35, 58 | "value": { 59 | "__uuid__": "88afccb9-1850-490e-a519-0261edbc747d" 60 | } 61 | }, 62 | { 63 | "frame": 0.4, 64 | "value": { 65 | "__uuid__": "1511a1c8-9025-4a00-bfe7-2e14f6807567" 66 | } 67 | }, 68 | { 69 | "frame": 0.45, 70 | "value": { 71 | "__uuid__": "d991a719-4156-4271-b7de-02d637970bab" 72 | } 73 | }, 74 | { 75 | "frame": 0.5, 76 | "value": { 77 | "__uuid__": "5b9bc638-3970-4d53-998b-1c2a976b07a7" 78 | } 79 | }, 80 | { 81 | "frame": 0.55, 82 | "value": { 83 | "__uuid__": "505a1554-4481-41ed-90c5-da8bc682402e" 84 | } 85 | } 86 | ] 87 | } 88 | } 89 | }, 90 | "events": [] 91 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroBullAttack.anim.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.1.0", 3 | "uuid": "287df8ad-2ea2-48dd-8044-2ca6aeb65eac", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroBullDefault.anim: -------------------------------------------------------------------------------- 1 | { 2 | "__type__": "cc.AnimationClip", 3 | "_name": "HeroBullDefault", 4 | "_objFlags": 0, 5 | "_rawFiles": null, 6 | "_duration": 0.4166666666666667, 7 | "sample": 60, 8 | "speed": 1, 9 | "wrapMode": 1, 10 | "curveData": { 11 | "comps": { 12 | "cc.Sprite": { 13 | "spriteFrame": [ 14 | { 15 | "frame": 0, 16 | "value": { 17 | "__uuid__": "464fccc0-7e07-463f-a9ef-ab2344c50606" 18 | } 19 | }, 20 | { 21 | "frame": 0.05, 22 | "value": { 23 | "__uuid__": "19a0f08e-4a8a-4d13-af8c-e899ae4f7dd7" 24 | } 25 | }, 26 | { 27 | "frame": 0.1, 28 | "value": { 29 | "__uuid__": "0d525431-a094-4cc9-9744-27e1f0a62a06" 30 | } 31 | }, 32 | { 33 | "frame": 0.15, 34 | "value": { 35 | "__uuid__": "ecb2bf10-ca2b-4a8a-9b92-8eeec1cd7a3d" 36 | } 37 | }, 38 | { 39 | "frame": 0.2, 40 | "value": { 41 | "__uuid__": "e5be52bc-8582-44c0-b83e-30798b1653eb" 42 | } 43 | }, 44 | { 45 | "frame": 0.25, 46 | "value": { 47 | "__uuid__": "e263effa-728c-433e-b5ec-66da6d5ad79a" 48 | } 49 | }, 50 | { 51 | "frame": 0.3, 52 | "value": { 53 | "__uuid__": "07dd82be-b0b8-4d01-a567-b6731e839437" 54 | } 55 | }, 56 | { 57 | "frame": 0.35, 58 | "value": { 59 | "__uuid__": "ecb4308a-c166-4b1c-8005-42abaedfc614" 60 | } 61 | }, 62 | { 63 | "frame": 0.4, 64 | "value": { 65 | "__uuid__": "bf99c095-c77d-4635-a649-e77170649a52" 66 | } 67 | } 68 | ] 69 | } 70 | } 71 | }, 72 | "events": [] 73 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroBullDefault.anim.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.1.0", 3 | "uuid": "925879af-4744-4084-ae96-bdc50b394b7b", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroBullDefend.anim: -------------------------------------------------------------------------------- 1 | { 2 | "__type__": "cc.AnimationClip", 3 | "_name": "HeroBullDefend", 4 | "_objFlags": 0, 5 | "_rawFiles": null, 6 | "_duration": 0.4166666666666667, 7 | "sample": 60, 8 | "speed": 1, 9 | "wrapMode": 1, 10 | "curveData": { 11 | "comps": { 12 | "cc.Sprite": { 13 | "spriteFrame": [ 14 | { 15 | "frame": 0, 16 | "value": { 17 | "__uuid__": "990317be-427d-4900-b81f-516d5a64ae82" 18 | } 19 | }, 20 | { 21 | "frame": 0.05, 22 | "value": { 23 | "__uuid__": "2d311ee6-f876-44bf-b70d-084533b29467" 24 | } 25 | }, 26 | { 27 | "frame": 0.1, 28 | "value": { 29 | "__uuid__": "cf9b5a43-4dda-4524-b13b-d860cfb50b68" 30 | } 31 | }, 32 | { 33 | "frame": 0.15, 34 | "value": { 35 | "__uuid__": "e202abd6-90d2-4cc5-8963-0d2f5b911612" 36 | } 37 | }, 38 | { 39 | "frame": 0.2, 40 | "value": { 41 | "__uuid__": "5369a9a5-d51b-473a-8f8b-4087cacd9281" 42 | } 43 | }, 44 | { 45 | "frame": 0.25, 46 | "value": { 47 | "__uuid__": "eb2eaf7a-bf9c-4776-9ee2-6112036e7099" 48 | } 49 | }, 50 | { 51 | "frame": 0.3, 52 | "value": { 53 | "__uuid__": "a32a05bd-3502-4ca3-8065-2e2bb5525d36" 54 | } 55 | }, 56 | { 57 | "frame": 0.35, 58 | "value": { 59 | "__uuid__": "007a25af-197c-4844-84f0-819e8dbb53c8" 60 | } 61 | }, 62 | { 63 | "frame": 0.4, 64 | "value": { 65 | "__uuid__": "36ab1bdf-4ad7-48d5-ae13-d72cc8f615d4" 66 | } 67 | } 68 | ] 69 | } 70 | } 71 | }, 72 | "events": [] 73 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroBullDefend.anim.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.1.0", 3 | "uuid": "d74a5c70-c7fc-48c0-8f27-9322e6aca703", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroBullMiss.anim: -------------------------------------------------------------------------------- 1 | { 2 | "__type__": "cc.AnimationClip", 3 | "_name": "HeroBullMiss", 4 | "_objFlags": 0, 5 | "_rawFiles": null, 6 | "_duration": 0.4166666666666667, 7 | "sample": 60, 8 | "speed": 1, 9 | "wrapMode": 1, 10 | "curveData": { 11 | "comps": { 12 | "cc.Sprite": { 13 | "spriteFrame": [ 14 | { 15 | "frame": 0, 16 | "value": { 17 | "__uuid__": "9a2bcf1c-f647-4a5d-b0e7-574b6aea9156" 18 | } 19 | }, 20 | { 21 | "frame": 0.05, 22 | "value": { 23 | "__uuid__": "0ede9670-363c-46e8-9cac-410dce70d48e" 24 | } 25 | }, 26 | { 27 | "frame": 0.1, 28 | "value": { 29 | "__uuid__": "136b773f-e711-4b5f-aa72-ff4a9a420040" 30 | } 31 | }, 32 | { 33 | "frame": 0.15, 34 | "value": { 35 | "__uuid__": "c9ad86ad-6aac-44f1-8901-ff9de1878c90" 36 | } 37 | }, 38 | { 39 | "frame": 0.2, 40 | "value": { 41 | "__uuid__": "2da25b2b-dc7a-4ec3-9601-d030802bf977" 42 | } 43 | }, 44 | { 45 | "frame": 0.25, 46 | "value": { 47 | "__uuid__": "59a914e5-993d-42cd-b6c7-6f37878325b2" 48 | } 49 | }, 50 | { 51 | "frame": 0.3, 52 | "value": { 53 | "__uuid__": "84ab0ebc-5e5e-413c-83c0-93c5a82e8658" 54 | } 55 | }, 56 | { 57 | "frame": 0.35, 58 | "value": { 59 | "__uuid__": "c5afaba1-b1bb-46db-b144-1c782f38b5a6" 60 | } 61 | }, 62 | { 63 | "frame": 0.4, 64 | "value": { 65 | "__uuid__": "f21f6452-ad8a-42b5-b222-3e928d4b3ea4" 66 | } 67 | } 68 | ] 69 | } 70 | } 71 | }, 72 | "events": [] 73 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroBullMiss.anim.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.1.0", 3 | "uuid": "7bd968cd-88dd-4872-b7ab-f8c8ccb88784", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroGirlAttack.anim: -------------------------------------------------------------------------------- 1 | { 2 | "__type__": "cc.AnimationClip", 3 | "_name": "HeroGirl", 4 | "_objFlags": 0, 5 | "_rawFiles": null, 6 | "_duration": 0.38333333333333336, 7 | "sample": 60, 8 | "speed": 1, 9 | "wrapMode": 1, 10 | "curveData": { 11 | "props": {}, 12 | "comps": { 13 | "cc.Sprite": { 14 | "spriteFrame": [ 15 | { 16 | "frame": 0, 17 | "value": { 18 | "__uuid__": "14d4108c-e795-48d5-9ab7-3b95b01e90e8" 19 | } 20 | }, 21 | { 22 | "frame": 0.05, 23 | "value": { 24 | "__uuid__": "4bf082ca-3650-4069-bdf9-e39984f2c4bd" 25 | } 26 | }, 27 | { 28 | "frame": 0.1, 29 | "value": { 30 | "__uuid__": "07c9e890-5641-4cb2-be86-2a23f11cd4b7" 31 | } 32 | }, 33 | { 34 | "frame": 0.15, 35 | "value": { 36 | "__uuid__": "3af3f81c-3654-45e9-b952-7f6855fe5b0c" 37 | } 38 | }, 39 | { 40 | "frame": 0.2, 41 | "value": { 42 | "__uuid__": "738d56a3-5ad3-4e2b-a9a7-d0b5c016615d" 43 | } 44 | }, 45 | { 46 | "frame": 0.25, 47 | "value": { 48 | "__uuid__": "c9585e70-669c-4630-8e3b-22310bed1c86" 49 | } 50 | }, 51 | { 52 | "frame": 0.3, 53 | "value": { 54 | "__uuid__": "7e341231-7e74-4229-b084-8100c86c5546" 55 | } 56 | }, 57 | { 58 | "frame": 0.35, 59 | "value": { 60 | "__uuid__": "81006484-dbdf-463b-bc35-13b333156a90" 61 | } 62 | }, 63 | { 64 | "frame": 0.36666666666666664, 65 | "value": { 66 | "__uuid__": "e7351d40-3861-4da4-bdcb-061a5bd3dbe0" 67 | } 68 | } 69 | ] 70 | } 71 | } 72 | }, 73 | "events": [] 74 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroGirlAttack.anim.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.1.0", 3 | "uuid": "3af2986e-0ac7-402d-9a9d-c97cf86ca09f", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroGirlDefault.anim: -------------------------------------------------------------------------------- 1 | { 2 | "__type__": "cc.AnimationClip", 3 | "_name": "HeroGirlDefault", 4 | "_objFlags": 0, 5 | "_rawFiles": null, 6 | "_duration": 0.4166666666666667, 7 | "sample": 60, 8 | "speed": 1, 9 | "wrapMode": 1, 10 | "curveData": { 11 | "comps": { 12 | "cc.Sprite": { 13 | "spriteFrame": [ 14 | { 15 | "frame": 0, 16 | "value": { 17 | "__uuid__": "45cd320f-786d-4c86-ad03-a81a568b996c" 18 | } 19 | }, 20 | { 21 | "frame": 0.05, 22 | "value": { 23 | "__uuid__": "d820628d-a288-493b-8de7-29339d3d7bde" 24 | } 25 | }, 26 | { 27 | "frame": 0.1, 28 | "value": { 29 | "__uuid__": "f883ba2d-0cfa-497c-875b-0389843d3736" 30 | } 31 | }, 32 | { 33 | "frame": 0.15, 34 | "value": { 35 | "__uuid__": "8684d2e7-5a32-4914-a032-903a1873707b" 36 | } 37 | }, 38 | { 39 | "frame": 0.2, 40 | "value": { 41 | "__uuid__": "827e7be7-1f03-4d4a-bbb4-6318f7c5594c" 42 | } 43 | }, 44 | { 45 | "frame": 0.25, 46 | "value": { 47 | "__uuid__": "e366c52f-fcde-48de-8ac8-777ccf09550a" 48 | } 49 | }, 50 | { 51 | "frame": 0.3, 52 | "value": { 53 | "__uuid__": "63bf2c54-e151-40aa-8ceb-e8186d725845" 54 | } 55 | }, 56 | { 57 | "frame": 0.35, 58 | "value": { 59 | "__uuid__": "85c25ea2-416d-40a4-a3fb-f2a669a51cf4" 60 | } 61 | }, 62 | { 63 | "frame": 0.4, 64 | "value": { 65 | "__uuid__": "abfecf6d-5f12-4fd6-b604-b1502beefdea" 66 | } 67 | } 68 | ] 69 | } 70 | } 71 | }, 72 | "events": [] 73 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroGirlDefault.anim.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.1.0", 3 | "uuid": "67244aa4-e69a-4713-be4a-a6763fa16810", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroGirlDefend.anim: -------------------------------------------------------------------------------- 1 | { 2 | "__type__": "cc.AnimationClip", 3 | "_name": "HeroGirlDefend", 4 | "_objFlags": 0, 5 | "_rawFiles": null, 6 | "_duration": 0.4666666666666667, 7 | "sample": 60, 8 | "speed": 1, 9 | "wrapMode": 1, 10 | "curveData": { 11 | "comps": { 12 | "cc.Sprite": { 13 | "spriteFrame": [ 14 | { 15 | "frame": 0, 16 | "value": { 17 | "__uuid__": "d83001a7-670a-4990-95ee-87f4b4ab41f3" 18 | } 19 | }, 20 | { 21 | "frame": 0.05, 22 | "value": { 23 | "__uuid__": "5ae0d8c2-4110-402e-ab7f-138394c0b186" 24 | } 25 | }, 26 | { 27 | "frame": 0.1, 28 | "value": { 29 | "__uuid__": "cdc7eed9-37e9-420b-9d94-cfd13ea54b81" 30 | } 31 | }, 32 | { 33 | "frame": 0.15, 34 | "value": { 35 | "__uuid__": "e5357f51-3547-469b-bf84-6996e4a4ce6d" 36 | } 37 | }, 38 | { 39 | "frame": 0.2, 40 | "value": { 41 | "__uuid__": "c1f4d8cc-f644-4051-986f-659ec2764d78" 42 | } 43 | }, 44 | { 45 | "frame": 0.25, 46 | "value": { 47 | "__uuid__": "63aa6375-0894-4371-bb7b-81a46c52cb2f" 48 | } 49 | }, 50 | { 51 | "frame": 0.3, 52 | "value": { 53 | "__uuid__": "91ed2fc0-f2db-478e-a70e-af3442357cf5" 54 | } 55 | }, 56 | { 57 | "frame": 0.35, 58 | "value": { 59 | "__uuid__": "423f138e-8a04-45b8-98b3-60d3594894f0" 60 | } 61 | }, 62 | { 63 | "frame": 0.4, 64 | "value": { 65 | "__uuid__": "5782b934-c38b-4235-84fa-75756d35e5e7" 66 | } 67 | }, 68 | { 69 | "frame": 0.45, 70 | "value": { 71 | "__uuid__": "829cf821-e7d7-492a-9791-6900c9f220e9" 72 | } 73 | } 74 | ] 75 | } 76 | } 77 | }, 78 | "events": [] 79 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroGirlDefend.anim.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.1.0", 3 | "uuid": "afd9c777-c09c-416e-94c0-96139fa59078", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroGirlMiss.anim: -------------------------------------------------------------------------------- 1 | { 2 | "__type__": "cc.AnimationClip", 3 | "_name": "HeroGirlMiss", 4 | "_objFlags": 0, 5 | "_rawFiles": null, 6 | "_duration": 0.36666666666666664, 7 | "sample": 60, 8 | "speed": 1, 9 | "wrapMode": 1, 10 | "curveData": { 11 | "comps": { 12 | "cc.Sprite": { 13 | "spriteFrame": [ 14 | { 15 | "frame": 0, 16 | "value": { 17 | "__uuid__": "f0380c76-27e2-483b-bcfc-fb71cbd26613" 18 | } 19 | }, 20 | { 21 | "frame": 0.05, 22 | "value": { 23 | "__uuid__": "e2bf7a39-b6f2-433a-baf5-04460edf999d" 24 | } 25 | }, 26 | { 27 | "frame": 0.1, 28 | "value": { 29 | "__uuid__": "dfe4b2aa-c51d-423d-8fdc-3a04ba07bd64" 30 | } 31 | }, 32 | { 33 | "frame": 0.15, 34 | "value": { 35 | "__uuid__": "b1d89dfc-b868-4ea3-9b29-4c12c0af74fb" 36 | } 37 | }, 38 | { 39 | "frame": 0.2, 40 | "value": { 41 | "__uuid__": "b73c50c2-d3ef-4861-abb2-05aa57e6322f" 42 | } 43 | }, 44 | { 45 | "frame": 0.25, 46 | "value": { 47 | "__uuid__": "231d6009-e53c-4955-8c9d-017a28d28f0d" 48 | } 49 | }, 50 | { 51 | "frame": 0.3, 52 | "value": { 53 | "__uuid__": "76f7db4e-a254-458f-9910-4d9263e3c390" 54 | } 55 | }, 56 | { 57 | "frame": 0.35, 58 | "value": { 59 | "__uuid__": "170226c0-e11d-46bc-926e-0cca7639936a" 60 | } 61 | } 62 | ] 63 | } 64 | } 65 | }, 66 | "events": [] 67 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Animation/HeroGirlMiss.anim.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.1.0", 3 | "uuid": "913acde6-e615-480d-8a89-ba354d85dc3e", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HelloWorld.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HelloWorld.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HelloWorld.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "6aa0aa6a-ebee-4155-a088-a687a6aadec4", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 195, 11 | "height": 270, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "HelloWorld": { 15 | "ver": "1.0.4", 16 | "uuid": "31bc895a-c003-4566-a9f3-2e54ae1c17dc", 17 | "rawTextureUuid": "6aa0aa6a-ebee-4155-a088-a687a6aadec4", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 195, 26 | "height": 270, 27 | "rawWidth": 195, 28 | "rawHeight": 270, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "476a5f41-9349-4c95-8089-6667d7c4c7ce", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "35a1aa64-ce1b-436f-b287-814b5b1dfd64", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Attack/frame0.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame0.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "2e288d36-1296-42f8-ad1d-29f6a8d609c5", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame0": { 15 | "ver": "1.0.4", 16 | "uuid": "cd6c8ddd-052b-4abd-b4f4-63d0189a2d3f", 17 | "rawTextureUuid": "2e288d36-1296-42f8-ad1d-29f6a8d609c5", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -56, 23 | "trimX": 128, 24 | "trimY": 138, 25 | "width": 68, 26 | "height": 92, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Attack/frame1.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame1.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "9b5ff5d6-27c8-4aed-9aad-648414c97130", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame1": { 15 | "ver": "1.0.4", 16 | "uuid": "b08de126-1f18-499d-ae67-1ff26421750c", 17 | "rawTextureUuid": "9b5ff5d6-27c8-4aed-9aad-648414c97130", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 31.5, 22 | "offsetY": -55, 23 | "trimX": 123, 24 | "trimY": 136, 25 | "width": 73, 26 | "height": 94, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Attack/frame10.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame10.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "e7ff6eff-d5a4-4295-8a1a-ac7e85c26046", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame10": { 15 | "ver": "1.0.4", 16 | "uuid": "5b9bc638-3970-4d53-998b-1c2a976b07a7", 17 | "rawTextureUuid": "e7ff6eff-d5a4-4295-8a1a-ac7e85c26046", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -56, 23 | "trimX": 128, 24 | "trimY": 138, 25 | "width": 68, 26 | "height": 92, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Attack/frame11.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame11.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "b9be7efc-c481-43d1-a9f6-501bdab53c8c", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame11": { 15 | "ver": "1.0.4", 16 | "uuid": "505a1554-4481-41ed-90c5-da8bc682402e", 17 | "rawTextureUuid": "b9be7efc-c481-43d1-a9f6-501bdab53c8c", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -56, 23 | "trimX": 128, 24 | "trimY": 138, 25 | "width": 68, 26 | "height": 92, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Attack/frame2.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame2.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "2fe26a88-3d13-46f1-9f08-8ea91b74fdd6", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame2": { 15 | "ver": "1.0.4", 16 | "uuid": "3c87842a-24da-4ed5-8406-b95a16fd09a0", 17 | "rawTextureUuid": "2fe26a88-3d13-46f1-9f08-8ea91b74fdd6", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 29, 22 | "offsetY": -54, 23 | "trimX": 118, 24 | "trimY": 134, 25 | "width": 78, 26 | "height": 96, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Attack/frame3.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame3.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "60831d9e-e242-42b2-8ccb-b903503fcf1b", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame3": { 15 | "ver": "1.0.4", 16 | "uuid": "8dd2de62-9932-490e-a9f9-b1edb494b8a8", 17 | "rawTextureUuid": "60831d9e-e242-42b2-8ccb-b903503fcf1b", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 27, 22 | "offsetY": -53, 23 | "trimX": 114, 24 | "trimY": 132, 25 | "width": 82, 26 | "height": 98, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Attack/frame4.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame4.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "267c3f56-2cb1-4abd-afb0-0cfb6d39af22", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame4": { 15 | "ver": "1.0.4", 16 | "uuid": "b1cc28b8-4458-4174-9262-f966744fcd95", 17 | "rawTextureUuid": "267c3f56-2cb1-4abd-afb0-0cfb6d39af22", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 31, 22 | "offsetY": -54, 23 | "trimX": 122, 24 | "trimY": 134, 25 | "width": 74, 26 | "height": 96, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Attack/frame5.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame5.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "6c046c4a-de1f-4852-a5f5-dc1a9ac35645", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame5": { 15 | "ver": "1.0.4", 16 | "uuid": "267e9157-e226-40ff-a711-66e6986eea59", 17 | "rawTextureUuid": "6c046c4a-de1f-4852-a5f5-dc1a9ac35645", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -56, 23 | "trimX": 128, 24 | "trimY": 138, 25 | "width": 68, 26 | "height": 92, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Attack/frame6.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame6.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "33de6ae6-b141-425f-9626-dfc4e5c5b807", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame6": { 15 | "ver": "1.0.4", 16 | "uuid": "b91edc70-40a1-4ea5-8557-307ee9e67cc2", 17 | "rawTextureUuid": "33de6ae6-b141-425f-9626-dfc4e5c5b807", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -55, 23 | "trimX": 128, 24 | "trimY": 136, 25 | "width": 68, 26 | "height": 94, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Attack/frame7.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame7.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "c7b6f1b9-2dcf-48f4-9dac-693185bf4f2c", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame7": { 15 | "ver": "1.0.4", 16 | "uuid": "88afccb9-1850-490e-a519-0261edbc747d", 17 | "rawTextureUuid": "c7b6f1b9-2dcf-48f4-9dac-693185bf4f2c", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 33, 22 | "offsetY": -55, 23 | "trimX": 126, 24 | "trimY": 136, 25 | "width": 70, 26 | "height": 94, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Attack/frame8.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame8.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "8a522cd5-2b55-4ea3-a207-690db8cc0abd", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame8": { 15 | "ver": "1.0.4", 16 | "uuid": "1511a1c8-9025-4a00-bfe7-2e14f6807567", 17 | "rawTextureUuid": "8a522cd5-2b55-4ea3-a207-690db8cc0abd", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -55, 23 | "trimX": 128, 24 | "trimY": 136, 25 | "width": 68, 26 | "height": 94, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Attack/frame9.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Attack/frame9.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "6194b012-5584-4367-a391-1d6933de97fc", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame9": { 15 | "ver": "1.0.4", 16 | "uuid": "d991a719-4156-4271-b7de-02d637970bab", 17 | "rawTextureUuid": "6194b012-5584-4367-a391-1d6933de97fc", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -56, 23 | "trimX": 128, 24 | "trimY": 138, 25 | "width": 68, 26 | "height": 92, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "88521b4b-efff-437c-8b2c-322f2f2ba1e9", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Default/frame0.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame0.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "a31ade86-0fb6-49cc-b71f-5394410a9259", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame0": { 15 | "ver": "1.0.4", 16 | "uuid": "464fccc0-7e07-463f-a9ef-ab2344c50606", 17 | "rawTextureUuid": "a31ade86-0fb6-49cc-b71f-5394410a9259", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -56, 23 | "trimX": 128, 24 | "trimY": 138, 25 | "width": 68, 26 | "height": 92, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Default/frame1.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame1.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "79cc9eca-a4da-4bc9-a250-e853290d8c39", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame1": { 15 | "ver": "1.0.4", 16 | "uuid": "19a0f08e-4a8a-4d13-af8c-e899ae4f7dd7", 17 | "rawTextureUuid": "79cc9eca-a4da-4bc9-a250-e853290d8c39", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 33, 22 | "offsetY": -56, 23 | "trimX": 126, 24 | "trimY": 138, 25 | "width": 70, 26 | "height": 92, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Default/frame2.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame2.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "f91f5f6b-a798-4781-9953-89d909cfc087", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame2": { 15 | "ver": "1.0.4", 16 | "uuid": "0d525431-a094-4cc9-9744-27e1f0a62a06", 17 | "rawTextureUuid": "f91f5f6b-a798-4781-9953-89d909cfc087", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 33, 22 | "offsetY": -57, 23 | "trimX": 126, 24 | "trimY": 140, 25 | "width": 70, 26 | "height": 90, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Default/frame3.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame3.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "49d7d2c6-46db-4783-8659-17a4022c9870", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame3": { 15 | "ver": "1.0.4", 16 | "uuid": "ecb2bf10-ca2b-4a8a-9b92-8eeec1cd7a3d", 17 | "rawTextureUuid": "49d7d2c6-46db-4783-8659-17a4022c9870", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 33, 22 | "offsetY": -58, 23 | "trimX": 126, 24 | "trimY": 142, 25 | "width": 70, 26 | "height": 88, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Default/frame4.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame4.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "2e2b6332-9aea-4641-95ad-ab15447c6c08", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame4": { 15 | "ver": "1.0.4", 16 | "uuid": "e5be52bc-8582-44c0-b83e-30798b1653eb", 17 | "rawTextureUuid": "2e2b6332-9aea-4641-95ad-ab15447c6c08", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 33, 22 | "offsetY": -58, 23 | "trimX": 124, 24 | "trimY": 142, 25 | "width": 74, 26 | "height": 88, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Default/frame5.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame5.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "6543b0c9-a7f9-484b-b833-93efe539f2ec", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame5": { 15 | "ver": "1.0.4", 16 | "uuid": "e263effa-728c-433e-b5ec-66da6d5ad79a", 17 | "rawTextureUuid": "6543b0c9-a7f9-484b-b833-93efe539f2ec", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 33, 22 | "offsetY": -58, 23 | "trimX": 126, 24 | "trimY": 142, 25 | "width": 70, 26 | "height": 88, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Default/frame6.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame6.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "a27213a3-c405-4e2f-b88b-7637e38786d5", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame6": { 15 | "ver": "1.0.4", 16 | "uuid": "07dd82be-b0b8-4d01-a567-b6731e839437", 17 | "rawTextureUuid": "a27213a3-c405-4e2f-b88b-7637e38786d5", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 33, 22 | "offsetY": -57, 23 | "trimX": 126, 24 | "trimY": 140, 25 | "width": 70, 26 | "height": 90, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Default/frame7.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame7.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "ebe00c44-755b-4c5f-beb8-f5329d50c688", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame7": { 15 | "ver": "1.0.4", 16 | "uuid": "ecb4308a-c166-4b1c-8005-42abaedfc614", 17 | "rawTextureUuid": "ebe00c44-755b-4c5f-beb8-f5329d50c688", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 33, 22 | "offsetY": -56, 23 | "trimX": 126, 24 | "trimY": 138, 25 | "width": 70, 26 | "height": 92, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Default/frame8.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Default/frame8.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "c5546803-fefd-44b0-86a5-cd54255f1fb8", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame8": { 15 | "ver": "1.0.4", 16 | "uuid": "bf99c095-c77d-4635-a649-e77170649a52", 17 | "rawTextureUuid": "c5546803-fefd-44b0-86a5-cd54255f1fb8", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -56, 23 | "trimX": 128, 24 | "trimY": 138, 25 | "width": 68, 26 | "height": 92, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "ccdfd892-9b19-43cd-b21c-3dfa8603cb03", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Defend/frame0.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame0.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "87a3727f-b288-404b-83ff-d9973168db03", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame0": { 15 | "ver": "1.0.4", 16 | "uuid": "990317be-427d-4900-b81f-516d5a64ae82", 17 | "rawTextureUuid": "87a3727f-b288-404b-83ff-d9973168db03", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -56, 23 | "trimX": 128, 24 | "trimY": 138, 25 | "width": 68, 26 | "height": 92, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Defend/frame1.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame1.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "c98ee4cb-b439-4fd4-a83e-336f603fb28e", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame1": { 15 | "ver": "1.0.4", 16 | "uuid": "2d311ee6-f876-44bf-b70d-084533b29467", 17 | "rawTextureUuid": "c98ee4cb-b439-4fd4-a83e-336f603fb28e", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 33, 22 | "offsetY": -57, 23 | "trimX": 126, 24 | "trimY": 140, 25 | "width": 70, 26 | "height": 90, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Defend/frame2.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame2.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "be7b7971-ccd8-429a-89d1-89312afc2121", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame2": { 15 | "ver": "1.0.4", 16 | "uuid": "cf9b5a43-4dda-4524-b13b-d860cfb50b68", 17 | "rawTextureUuid": "be7b7971-ccd8-429a-89d1-89312afc2121", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 30, 22 | "offsetY": -59, 23 | "trimX": 120, 24 | "trimY": 144, 25 | "width": 76, 26 | "height": 86, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Defend/frame3.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame3.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "719b2901-043c-40bb-8b75-dc8d077179c7", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame3": { 15 | "ver": "1.0.4", 16 | "uuid": "e202abd6-90d2-4cc5-8963-0d2f5b911612", 17 | "rawTextureUuid": "719b2901-043c-40bb-8b75-dc8d077179c7", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 31, 22 | "offsetY": -59, 23 | "trimX": 122, 24 | "trimY": 144, 25 | "width": 74, 26 | "height": 86, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Defend/frame4.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame4.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "73450070-e80f-48f0-9614-057373f992d0", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame4": { 15 | "ver": "1.0.4", 16 | "uuid": "5369a9a5-d51b-473a-8f8b-4087cacd9281", 17 | "rawTextureUuid": "73450070-e80f-48f0-9614-057373f992d0", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 33, 22 | "offsetY": -59, 23 | "trimX": 124, 24 | "trimY": 144, 25 | "width": 74, 26 | "height": 86, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Defend/frame5.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame5.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "e54c58dc-9a6a-422e-913e-b22add274552", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame5": { 15 | "ver": "1.0.4", 16 | "uuid": "eb2eaf7a-bf9c-4776-9ee2-6112036e7099", 17 | "rawTextureUuid": "e54c58dc-9a6a-422e-913e-b22add274552", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -59, 23 | "trimX": 124, 24 | "trimY": 144, 25 | "width": 76, 26 | "height": 86, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Defend/frame6.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame6.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "db396232-c8f2-4297-a5fa-65112dc029f1", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame6": { 15 | "ver": "1.0.4", 16 | "uuid": "a32a05bd-3502-4ca3-8065-2e2bb5525d36", 17 | "rawTextureUuid": "db396232-c8f2-4297-a5fa-65112dc029f1", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 35, 22 | "offsetY": -58, 23 | "trimX": 128, 24 | "trimY": 142, 25 | "width": 70, 26 | "height": 88, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Defend/frame7.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame7.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "f677b99b-b0e3-4980-937a-7d6c57aa487e", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame7": { 15 | "ver": "1.0.4", 16 | "uuid": "007a25af-197c-4844-84f0-819e8dbb53c8", 17 | "rawTextureUuid": "f677b99b-b0e3-4980-937a-7d6c57aa487e", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -57, 23 | "trimX": 128, 24 | "trimY": 140, 25 | "width": 68, 26 | "height": 90, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Defend/frame8.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Defend/frame8.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "b72982a4-a36b-4322-8986-8de446a654ac", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame8": { 15 | "ver": "1.0.4", 16 | "uuid": "36ab1bdf-4ad7-48d5-ae13-d72cc8f615d4", 17 | "rawTextureUuid": "b72982a4-a36b-4322-8986-8de446a654ac", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -56, 23 | "trimX": 128, 24 | "trimY": 138, 25 | "width": 68, 26 | "height": 92, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "eb6cb614-f80d-44db-874a-0216ac29b760", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Miss/frame0.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame0.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "9032843a-5aaf-48eb-94d2-a13a229f13a5", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame0": { 15 | "ver": "1.0.4", 16 | "uuid": "9a2bcf1c-f647-4a5d-b0e7-574b6aea9156", 17 | "rawTextureUuid": "9032843a-5aaf-48eb-94d2-a13a229f13a5", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -56, 23 | "trimX": 128, 24 | "trimY": 138, 25 | "width": 68, 26 | "height": 92, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Miss/frame1.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame1.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "3002c4d4-ee27-420f-ae64-a5d6921a8b6b", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame1": { 15 | "ver": "1.0.4", 16 | "uuid": "0ede9670-363c-46e8-9cac-410dce70d48e", 17 | "rawTextureUuid": "3002c4d4-ee27-420f-ae64-a5d6921a8b6b", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 40, 22 | "offsetY": -55, 23 | "trimX": 134, 24 | "trimY": 136, 25 | "width": 68, 26 | "height": 94, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Miss/frame2.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame2.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "522492b3-a9ad-471b-bbc9-299666047bbf", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame2": { 15 | "ver": "1.0.4", 16 | "uuid": "136b773f-e711-4b5f-aa72-ff4a9a420040", 17 | "rawTextureUuid": "522492b3-a9ad-471b-bbc9-299666047bbf", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 39, 22 | "offsetY": -55, 23 | "trimX": 128, 24 | "trimY": 136, 25 | "width": 78, 26 | "height": 94, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Miss/frame3.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame3.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "21b7c704-da0f-45be-b27a-7d240228304c", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame3": { 15 | "ver": "1.0.4", 16 | "uuid": "c9ad86ad-6aac-44f1-8901-ff9de1878c90", 17 | "rawTextureUuid": "21b7c704-da0f-45be-b27a-7d240228304c", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 44.5, 22 | "offsetY": -55, 23 | "trimX": 136, 24 | "trimY": 136, 25 | "width": 73, 26 | "height": 94, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Miss/frame4.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame4.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "de07b953-1f92-469b-9d24-59f40cd1e324", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame4": { 15 | "ver": "1.0.4", 16 | "uuid": "2da25b2b-dc7a-4ec3-9601-d030802bf977", 17 | "rawTextureUuid": "de07b953-1f92-469b-9d24-59f40cd1e324", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 46, 22 | "offsetY": -55, 23 | "trimX": 138, 24 | "trimY": 136, 25 | "width": 72, 26 | "height": 94, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Miss/frame5.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame5.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "a2882abb-2e74-43e6-a805-2b3d6b017615", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame5": { 15 | "ver": "1.0.4", 16 | "uuid": "59a914e5-993d-42cd-b6c7-6f37878325b2", 17 | "rawTextureUuid": "a2882abb-2e74-43e6-a805-2b3d6b017615", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 45, 22 | "offsetY": -55, 23 | "trimX": 134, 24 | "trimY": 136, 25 | "width": 78, 26 | "height": 94, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Miss/frame6.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame6.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "4463851e-6730-45e0-b8a1-796b31857c25", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame6": { 15 | "ver": "1.0.4", 16 | "uuid": "84ab0ebc-5e5e-413c-83c0-93c5a82e8658", 17 | "rawTextureUuid": "4463851e-6730-45e0-b8a1-796b31857c25", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 41, 22 | "offsetY": -55, 23 | "trimX": 128, 24 | "trimY": 136, 25 | "width": 82, 26 | "height": 94, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Miss/frame7.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame7.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "ff5441f9-569c-4235-be21-7274f3fb82e3", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame7": { 15 | "ver": "1.0.4", 16 | "uuid": "c5afaba1-b1bb-46db-b144-1c782f38b5a6", 17 | "rawTextureUuid": "ff5441f9-569c-4235-be21-7274f3fb82e3", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 38, 22 | "offsetY": -55, 23 | "trimX": 128, 24 | "trimY": 136, 25 | "width": 76, 26 | "height": 94, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroBull/Miss/frame8.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroBull/Miss/frame8.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "99d87375-20c1-4745-a860-2ab76ea3efd6", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame8": { 15 | "ver": "1.0.4", 16 | "uuid": "f21f6452-ad8a-42b5-b222-3e928d4b3ea4", 17 | "rawTextureUuid": "99d87375-20c1-4745-a860-2ab76ea3efd6", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 34, 22 | "offsetY": -56, 23 | "trimX": 128, 24 | "trimY": 138, 25 | "width": 68, 26 | "height": 92, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "c4e3115d-7bbd-4b03-a6f4-3a4ad75e90e7", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "f0c8f3ce-926c-4060-b73c-e9010cd8af34", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Attack/frame0.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame0.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "4596a87f-fd93-40c9-bff7-e578ee327f30", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame0": { 15 | "ver": "1.0.4", 16 | "uuid": "14d4108c-e795-48d5-9ab7-3b95b01e90e8", 17 | "rawTextureUuid": "4596a87f-fd93-40c9-bff7-e578ee327f30", 18 | "trimType": "custom", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 54.5, 22 | "offsetY": -33, 23 | "trimX": 116, 24 | "trimY": 92, 25 | "width": 133, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Attack/frame1.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame1.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "8d6f2198-1d6e-4125-9fdc-e7882e27cb83", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame1": { 15 | "ver": "1.0.4", 16 | "uuid": "4bf082ca-3650-4069-bdf9-e39984f2c4bd", 17 | "rawTextureUuid": "8d6f2198-1d6e-4125-9fdc-e7882e27cb83", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 56, 22 | "offsetY": -34, 23 | "trimX": 112, 24 | "trimY": 94, 25 | "width": 144, 26 | "height": 136, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Attack/frame2.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame2.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "06c50955-d307-42e7-a523-eb355cec76c7", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame2": { 15 | "ver": "1.0.4", 16 | "uuid": "07c9e890-5641-4cb2-be86-2a23f11cd4b7", 17 | "rawTextureUuid": "06c50955-d307-42e7-a523-eb355cec76c7", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": -12, 22 | "offsetY": -39.5, 23 | "trimX": 0, 24 | "trimY": 105, 25 | "width": 232, 26 | "height": 125, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Attack/frame3.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame3.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "9e565996-5727-48cb-b19f-7a74a431cbc9", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame3": { 15 | "ver": "1.0.4", 16 | "uuid": "3af3f81c-3654-45e9-b952-7f6855fe5b0c", 17 | "rawTextureUuid": "9e565996-5727-48cb-b19f-7a74a431cbc9", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": -19, 22 | "offsetY": -36, 23 | "trimX": 16, 24 | "trimY": 98, 25 | "width": 186, 26 | "height": 132, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Attack/frame4.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame4.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "4a3033dc-714d-41c5-bc78-535afbfcfc96", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame4": { 15 | "ver": "1.0.4", 16 | "uuid": "738d56a3-5ad3-4e2b-a9a7-d0b5c016615d", 17 | "rawTextureUuid": "4a3033dc-714d-41c5-bc78-535afbfcfc96", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": -12.5, 22 | "offsetY": -14, 23 | "trimX": 29, 24 | "trimY": 54, 25 | "width": 173, 26 | "height": 176, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Attack/frame5.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame5.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "d5f7a2b3-91c5-45d0-907a-c8dc4dcd607b", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame5": { 15 | "ver": "1.0.4", 16 | "uuid": "c9585e70-669c-4630-8e3b-22310bed1c86", 17 | "rawTextureUuid": "d5f7a2b3-91c5-45d0-907a-c8dc4dcd607b", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": -3.5, 22 | "offsetY": -20, 23 | "trimX": 47, 24 | "trimY": 66, 25 | "width": 155, 26 | "height": 164, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Attack/frame6.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame6.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "8b427bd9-92ed-4087-afd7-c6455c0a8365", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame6": { 15 | "ver": "1.0.4", 16 | "uuid": "7e341231-7e74-4229-b084-8100c86c5546", 17 | "rawTextureUuid": "8b427bd9-92ed-4087-afd7-c6455c0a8365", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 5, 22 | "offsetY": -22, 23 | "trimX": 64, 24 | "trimY": 70, 25 | "width": 138, 26 | "height": 160, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Attack/frame7.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame7.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "13ee3ffa-0ee6-4c6c-a139-f1ad538e120d", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame7": { 15 | "ver": "1.0.4", 16 | "uuid": "81006484-dbdf-463b-bc35-13b333156a90", 17 | "rawTextureUuid": "13ee3ffa-0ee6-4c6c-a139-f1ad538e120d", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 11.5, 22 | "offsetY": -38, 23 | "trimX": 77, 24 | "trimY": 102, 25 | "width": 125, 26 | "height": 128, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Attack/frame8.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame8.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "5c8b7c0f-e053-4edb-b215-968bd7c91ab3", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame8": { 15 | "ver": "1.0.4", 16 | "uuid": "e7351d40-3861-4da4-bdcb-061a5bd3dbe0", 17 | "rawTextureUuid": "5c8b7c0f-e053-4edb-b215-968bd7c91ab3", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 21.5, 22 | "offsetY": -34, 23 | "trimX": 92, 24 | "trimY": 94, 25 | "width": 115, 26 | "height": 136, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Attack/frame9.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Attack/frame9.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "a216fc6c-c011-4a1c-8881-58746525f199", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame9": { 15 | "ver": "1.0.4", 16 | "uuid": "a31ef43b-85f4-4bd0-96d3-5fb3b713eee2", 17 | "rawTextureUuid": "a216fc6c-c011-4a1c-8881-58746525f199", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 54.5, 22 | "offsetY": -33, 23 | "trimX": 116, 24 | "trimY": 92, 25 | "width": 133, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "4a15a14d-b472-4695-93e7-0a142eca3c12", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Default/frame0.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame0.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "71b2c249-6b91-42a0-89b9-2fa2bd79e9bd", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame0": { 15 | "ver": "1.0.4", 16 | "uuid": "45cd320f-786d-4c86-ad03-a81a568b996c", 17 | "rawTextureUuid": "71b2c249-6b91-42a0-89b9-2fa2bd79e9bd", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 54.5, 22 | "offsetY": -33, 23 | "trimX": 116, 24 | "trimY": 92, 25 | "width": 133, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Default/frame1.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame1.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "995553e4-2664-4ad6-8d0b-cb9aac572cbb", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame1": { 15 | "ver": "1.0.4", 16 | "uuid": "d820628d-a288-493b-8de7-29339d3d7bde", 17 | "rawTextureUuid": "995553e4-2664-4ad6-8d0b-cb9aac572cbb", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 54.5, 22 | "offsetY": -34, 23 | "trimX": 116, 24 | "trimY": 94, 25 | "width": 133, 26 | "height": 136, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Default/frame2.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame2.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "76c8a5a7-436f-471d-93e3-d9a0e82068de", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame2": { 15 | "ver": "1.0.4", 16 | "uuid": "f883ba2d-0cfa-497c-875b-0389843d3736", 17 | "rawTextureUuid": "76c8a5a7-436f-471d-93e3-d9a0e82068de", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 53.5, 22 | "offsetY": -34, 23 | "trimX": 114, 24 | "trimY": 94, 25 | "width": 135, 26 | "height": 136, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Default/frame3.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame3.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "1455bc2e-62e5-4ff9-b9c8-1586ef935614", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame3": { 15 | "ver": "1.0.4", 16 | "uuid": "8684d2e7-5a32-4914-a032-903a1873707b", 17 | "rawTextureUuid": "1455bc2e-62e5-4ff9-b9c8-1586ef935614", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 53, 22 | "offsetY": -34, 23 | "trimX": 114, 24 | "trimY": 94, 25 | "width": 134, 26 | "height": 136, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Default/frame4.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame4.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "57f1334f-e61b-4e1c-955c-97663d5b0b10", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame4": { 15 | "ver": "1.0.4", 16 | "uuid": "827e7be7-1f03-4d4a-bbb4-6318f7c5594c", 17 | "rawTextureUuid": "57f1334f-e61b-4e1c-955c-97663d5b0b10", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 53, 22 | "offsetY": -34, 23 | "trimX": 114, 24 | "trimY": 94, 25 | "width": 134, 26 | "height": 136, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Default/frame5.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame5.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "ff3e5849-219b-4c5c-a622-cc73b0ec167b", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame5": { 15 | "ver": "1.0.4", 16 | "uuid": "e366c52f-fcde-48de-8ac8-777ccf09550a", 17 | "rawTextureUuid": "ff3e5849-219b-4c5c-a622-cc73b0ec167b", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 53, 22 | "offsetY": -34, 23 | "trimX": 114, 24 | "trimY": 94, 25 | "width": 134, 26 | "height": 136, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Default/frame6.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame6.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "bd814c75-8bcb-4478-9d18-5b9ea0371fc6", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame6": { 15 | "ver": "1.0.4", 16 | "uuid": "63bf2c54-e151-40aa-8ceb-e8186d725845", 17 | "rawTextureUuid": "bd814c75-8bcb-4478-9d18-5b9ea0371fc6", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 53, 22 | "offsetY": -34, 23 | "trimX": 114, 24 | "trimY": 94, 25 | "width": 134, 26 | "height": 136, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Default/frame7.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame7.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "2447c06a-928b-4997-860c-0b2853dce003", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame7": { 15 | "ver": "1.0.4", 16 | "uuid": "85c25ea2-416d-40a4-a3fb-f2a669a51cf4", 17 | "rawTextureUuid": "2447c06a-928b-4997-860c-0b2853dce003", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 54.5, 22 | "offsetY": -34, 23 | "trimX": 116, 24 | "trimY": 94, 25 | "width": 133, 26 | "height": 136, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Default/frame8.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Default/frame8.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "988cba21-40cc-444f-a519-6383f0819c3b", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame8": { 15 | "ver": "1.0.4", 16 | "uuid": "abfecf6d-5f12-4fd6-b604-b1502beefdea", 17 | "rawTextureUuid": "988cba21-40cc-444f-a519-6383f0819c3b", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 54.5, 22 | "offsetY": -33, 23 | "trimX": 116, 24 | "trimY": 92, 25 | "width": 133, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "08840009-a406-41f3-84e5-b6c617b3541d", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Defend/frame0.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame0.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "4592daf2-d5d4-4cd6-b4f1-80273ab73853", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame0": { 15 | "ver": "1.0.4", 16 | "uuid": "d83001a7-670a-4990-95ee-87f4b4ab41f3", 17 | "rawTextureUuid": "4592daf2-d5d4-4cd6-b4f1-80273ab73853", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 54.5, 22 | "offsetY": -33, 23 | "trimX": 116, 24 | "trimY": 92, 25 | "width": 133, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Defend/frame1.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame1.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "1a3376e5-b3dc-4da0-9ed3-5e2081cd6e7d", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame1": { 15 | "ver": "1.0.4", 16 | "uuid": "5ae0d8c2-4110-402e-ab7f-138394c0b186", 17 | "rawTextureUuid": "1a3376e5-b3dc-4da0-9ed3-5e2081cd6e7d", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 56, 22 | "offsetY": -33, 23 | "trimX": 122, 24 | "trimY": 92, 25 | "width": 124, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Defend/frame2.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame2.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "4d410727-5631-4580-92de-7a077ddb417e", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame2": { 15 | "ver": "1.0.4", 16 | "uuid": "cdc7eed9-37e9-420b-9d94-cfd13ea54b81", 17 | "rawTextureUuid": "4d410727-5631-4580-92de-7a077ddb417e", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 59.5, 22 | "offsetY": -33, 23 | "trimX": 126, 24 | "trimY": 92, 25 | "width": 123, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Defend/frame3.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame3.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "8edeef9b-11a4-4a05-9577-2a2f7990e129", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame3": { 15 | "ver": "1.0.4", 16 | "uuid": "e5357f51-3547-469b-bf84-6996e4a4ce6d", 17 | "rawTextureUuid": "8edeef9b-11a4-4a05-9577-2a2f7990e129", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 57, 22 | "offsetY": -33, 23 | "trimX": 124, 24 | "trimY": 92, 25 | "width": 122, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Defend/frame4.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame4.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "788f9ed2-05b7-41cb-9b7a-ebfed84ef16c", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame4": { 15 | "ver": "1.0.4", 16 | "uuid": "c1f4d8cc-f644-4051-986f-659ec2764d78", 17 | "rawTextureUuid": "788f9ed2-05b7-41cb-9b7a-ebfed84ef16c", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 59.5, 22 | "offsetY": -33, 23 | "trimX": 126, 24 | "trimY": 92, 25 | "width": 123, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Defend/frame5.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame5.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "e96fda21-4d43-43cf-8c7e-ebadea5621a3", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame5": { 15 | "ver": "1.0.4", 16 | "uuid": "63aa6375-0894-4371-bb7b-81a46c52cb2f", 17 | "rawTextureUuid": "e96fda21-4d43-43cf-8c7e-ebadea5621a3", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 57, 22 | "offsetY": -33, 23 | "trimX": 124, 24 | "trimY": 92, 25 | "width": 122, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Defend/frame6.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame6.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "6802f0e6-1e02-48d5-b134-3b1de4b7d429", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame6": { 15 | "ver": "1.0.4", 16 | "uuid": "91ed2fc0-f2db-478e-a70e-af3442357cf5", 17 | "rawTextureUuid": "6802f0e6-1e02-48d5-b134-3b1de4b7d429", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 59.5, 22 | "offsetY": -33, 23 | "trimX": 126, 24 | "trimY": 92, 25 | "width": 123, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Defend/frame7.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame7.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "431b0ab7-30f1-4bef-a331-ecddd92ff426", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame7": { 15 | "ver": "1.0.4", 16 | "uuid": "423f138e-8a04-45b8-98b3-60d3594894f0", 17 | "rawTextureUuid": "431b0ab7-30f1-4bef-a331-ecddd92ff426", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 57, 22 | "offsetY": -33, 23 | "trimX": 124, 24 | "trimY": 92, 25 | "width": 122, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Defend/frame8.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame8.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "ddfcacbd-44d2-4544-92be-188b92326ce6", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame8": { 15 | "ver": "1.0.4", 16 | "uuid": "5782b934-c38b-4235-84fa-75756d35e5e7", 17 | "rawTextureUuid": "ddfcacbd-44d2-4544-92be-188b92326ce6", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 53, 22 | "offsetY": -32.5, 23 | "trimX": 116, 24 | "trimY": 91, 25 | "width": 130, 26 | "height": 139, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Defend/frame9.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Defend/frame9.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "138ac418-cdfe-4730-817f-558476170084", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame9": { 15 | "ver": "1.0.4", 16 | "uuid": "829cf821-e7d7-492a-9791-6900c9f220e9", 17 | "rawTextureUuid": "138ac418-cdfe-4730-817f-558476170084", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 54.5, 22 | "offsetY": -33, 23 | "trimX": 116, 24 | "trimY": 92, 25 | "width": 133, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "792b24a8-8393-4172-9265-811eda4eb773", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Miss/frame0.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame0.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "a8fe40de-d1a8-45de-a771-3b6e7469febd", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame0": { 15 | "ver": "1.0.4", 16 | "uuid": "f0380c76-27e2-483b-bcfc-fb71cbd26613", 17 | "rawTextureUuid": "a8fe40de-d1a8-45de-a771-3b6e7469febd", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 54.5, 22 | "offsetY": -33, 23 | "trimX": 116, 24 | "trimY": 92, 25 | "width": 133, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Miss/frame1.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame1.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "d754b93d-76ff-49c8-8930-9afa9282ccd0", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame1": { 15 | "ver": "1.0.4", 16 | "uuid": "e2bf7a39-b6f2-433a-baf5-04460edf999d", 17 | "rawTextureUuid": "d754b93d-76ff-49c8-8930-9afa9282ccd0", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 57, 22 | "offsetY": -33, 23 | "trimX": 116, 24 | "trimY": 92, 25 | "width": 138, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Miss/frame2.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame2.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "f79cc029-d2a0-4208-9264-9b58fa5e0b82", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame2": { 15 | "ver": "1.0.4", 16 | "uuid": "dfe4b2aa-c51d-423d-8fdc-3a04ba07bd64", 17 | "rawTextureUuid": "f79cc029-d2a0-4208-9264-9b58fa5e0b82", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 61, 22 | "offsetY": -34, 23 | "trimX": 122, 24 | "trimY": 94, 25 | "width": 134, 26 | "height": 136, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Miss/frame3.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame3.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "52a86596-66a0-4947-93c6-20bfa182a286", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame3": { 15 | "ver": "1.0.4", 16 | "uuid": "b1d89dfc-b868-4ea3-9b29-4c12c0af74fb", 17 | "rawTextureUuid": "52a86596-66a0-4947-93c6-20bfa182a286", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 64, 22 | "offsetY": -35, 23 | "trimX": 128, 24 | "trimY": 96, 25 | "width": 128, 26 | "height": 134, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Miss/frame4.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame4.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "c880ccaf-d0e1-4d72-b38f-b970c018b034", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame4": { 15 | "ver": "1.0.4", 16 | "uuid": "b73c50c2-d3ef-4861-abb2-05aa57e6322f", 17 | "rawTextureUuid": "c880ccaf-d0e1-4d72-b38f-b970c018b034", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 64, 22 | "offsetY": -35, 23 | "trimX": 128, 24 | "trimY": 96, 25 | "width": 128, 26 | "height": 134, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Miss/frame5.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame5.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "7332c0c9-997e-47b3-b684-138cbc6d39b8", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame5": { 15 | "ver": "1.0.4", 16 | "uuid": "231d6009-e53c-4955-8c9d-017a28d28f0d", 17 | "rawTextureUuid": "7332c0c9-997e-47b3-b684-138cbc6d39b8", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 61, 22 | "offsetY": -34, 23 | "trimX": 122, 24 | "trimY": 94, 25 | "width": 134, 26 | "height": 136, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Miss/frame6.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame6.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "9fb422a1-65a1-4b51-9df3-c41b52411e45", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame6": { 15 | "ver": "1.0.4", 16 | "uuid": "76f7db4e-a254-458f-9910-4d9263e3c390", 17 | "rawTextureUuid": "9fb422a1-65a1-4b51-9df3-c41b52411e45", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 57, 22 | "offsetY": -33, 23 | "trimX": 116, 24 | "trimY": 92, 25 | "width": 138, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/HeroGirl/Miss/frame7.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/HeroGirl/Miss/frame7.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "945df4e6-5177-4de7-a568-026bb74f7f3f", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frame7": { 15 | "ver": "1.0.4", 16 | "uuid": "170226c0-e11d-46bc-926e-0cca7639936a", 17 | "rawTextureUuid": "945df4e6-5177-4de7-a568-026bb74f7f3f", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 54.5, 22 | "offsetY": -33, 23 | "trimX": 116, 24 | "trimY": 92, 25 | "width": 133, 26 | "height": 138, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "7d819276-e098-49c8-a4b2-2e86eef2ab9e", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Prefab/HeroBull.prefab: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "__type__": "cc.Prefab", 4 | "_name": "", 5 | "_objFlags": 0, 6 | "_rawFiles": null, 7 | "data": { 8 | "__id__": 1 9 | } 10 | }, 11 | { 12 | "__type__": "cc.Node", 13 | "_name": "HeroBull", 14 | "_objFlags": 0, 15 | "_parent": null, 16 | "_children": [ 17 | { 18 | "__id__": 2 19 | }, 20 | { 21 | "__id__": 9 22 | } 23 | ], 24 | "_tag": -1, 25 | "_active": true, 26 | "_components": [ 27 | { 28 | "__id__": 12 29 | }, 30 | { 31 | "__id__": 13 32 | }, 33 | { 34 | "__id__": 14 35 | } 36 | ], 37 | "_prefab": { 38 | "__id__": 15 39 | }, 40 | "_id": "", 41 | "_opacity": 255, 42 | "_color": { 43 | "__type__": "cc.Color", 44 | "r": 255, 45 | "g": 255, 46 | "b": 255, 47 | "a": 255 48 | }, 49 | "_cascadeOpacityEnabled": true, 50 | "_anchorPoint": { 51 | "__type__": "cc.Vec2", 52 | "x": 0.5, 53 | "y": 0.5 54 | }, 55 | "_contentSize": { 56 | "__type__": "cc.Size", 57 | "width": 256, 58 | "height": 256 59 | }, 60 | "_skewX": 0, 61 | "_skewY": 0, 62 | "_localZOrder": 0, 63 | "_globalZOrder": 0, 64 | "_opacityModifyRGB": false, 65 | "groupIndex": 0, 66 | "_trs": { 67 | "__type__": "TypedArray", 68 | "ctor": "Float64Array", 69 | "array": [ 70 | -329, 71 | -140, 72 | 0, 73 | 0, 74 | 0, 75 | 0, 76 | 1, 77 | 1, 78 | 1, 79 | 1 80 | ] 81 | } 82 | }, 83 | { 84 | "__type__": "cc.Node", 85 | "_name": "HeroBullBloodProgressBar", 86 | "_objFlags": 0, 87 | "_parent": { 88 | "__id__": 1 89 | }, 90 | "_children": [ 91 | { 92 | "__id__": 3 93 | } 94 | ], 95 | "_tag": -1, 96 | "_active": true, 97 | "_components": [ 98 | { 99 | "__id__": 6 100 | }, 101 | { 102 | "__id__": 7 103 | } 104 | ], 105 | "_prefab": { 106 | "__id__": 8 107 | }, 108 | "_id": "", 109 | "_opacity": 255, 110 | "_color": { 111 | "__type__": "cc.Color", 112 | "r": 255, 113 | "g": 255, 114 | "b": 255, 115 | "a": 255 116 | }, 117 | "_cascadeOpacityEnabled": true, 118 | "_anchorPoint": { 119 | "__type__": "cc.Vec2", 120 | "x": 0.5, 121 | "y": 0.5 122 | }, 123 | "_contentSize": { 124 | "__type__": "cc.Size", 125 | "width": 100, 126 | "height": 8 127 | }, 128 | "_skewX": 0, 129 | "_skewY": 0, 130 | "_localZOrder": 0, 131 | "_globalZOrder": 0, 132 | "_opacityModifyRGB": false, 133 | "groupIndex": 0, 134 | "_trs": { 135 | "__type__": "TypedArray", 136 | "ctor": "Float64Array", 137 | "array": [ 138 | 34, 139 | 26, 140 | 0, 141 | 0, 142 | 0, 143 | 0, 144 | 1, 145 | -1, 146 | 1, 147 | 1 148 | ] 149 | } 150 | }, 151 | { 152 | "__type__": "cc.Node", 153 | "_name": "bar", 154 | "_objFlags": 0, 155 | "_parent": { 156 | "__id__": 2 157 | }, 158 | "_children": [], 159 | "_tag": -1, 160 | "_active": true, 161 | "_components": [ 162 | { 163 | "__id__": 4 164 | } 165 | ], 166 | "_prefab": { 167 | "__id__": 5 168 | }, 169 | "_id": "", 170 | "_opacity": 255, 171 | "_color": { 172 | "__type__": "cc.Color", 173 | "r": 241, 174 | "g": 11, 175 | "b": 11, 176 | "a": 255 177 | }, 178 | "_cascadeOpacityEnabled": true, 179 | "_anchorPoint": { 180 | "__type__": "cc.Vec2", 181 | "x": 0, 182 | "y": 0.5 183 | }, 184 | "_contentSize": { 185 | "__type__": "cc.Size", 186 | "width": 50, 187 | "height": 8 188 | }, 189 | "_skewX": 0, 190 | "_skewY": 0, 191 | "_localZOrder": 0, 192 | "_globalZOrder": 0, 193 | "_opacityModifyRGB": false, 194 | "groupIndex": 0, 195 | "_trs": { 196 | "__type__": "TypedArray", 197 | "ctor": "Float64Array", 198 | "array": [ 199 | -50, 200 | 0, 201 | 0, 202 | 0, 203 | 0, 204 | 0, 205 | 1, 206 | 1, 207 | 1, 208 | 1 209 | ] 210 | } 211 | }, 212 | { 213 | "__type__": "cc.Sprite", 214 | "_name": "", 215 | "_objFlags": 0, 216 | "node": { 217 | "__id__": 3 218 | }, 219 | "_enabled": true, 220 | "_spriteFrame": { 221 | "__uuid__": "67e68bc9-dad5-4ad9-a2d8-7e03d458e32f" 222 | }, 223 | "_type": 1, 224 | "_sizeMode": 0, 225 | "_fillType": 0, 226 | "_fillCenter": { 227 | "__type__": "cc.Vec2", 228 | "x": 0, 229 | "y": 0 230 | }, 231 | "_fillStart": 0, 232 | "_fillRange": 0, 233 | "_isTrimmedMode": true, 234 | "_srcBlendFactor": 770, 235 | "_dstBlendFactor": 771, 236 | "_atlas": null 237 | }, 238 | { 239 | "__type__": "cc.PrefabInfo", 240 | "root": { 241 | "__id__": 1 242 | }, 243 | "asset": { 244 | "__uuid__": "123257be-8906-489c-a706-f7c0c2430daa" 245 | }, 246 | "fileId": "e6bhH3K29IV7hgJw8XZFr1", 247 | "sync": false 248 | }, 249 | { 250 | "__type__": "cc.Sprite", 251 | "_name": "", 252 | "_objFlags": 0, 253 | "node": { 254 | "__id__": 2 255 | }, 256 | "_enabled": true, 257 | "_spriteFrame": { 258 | "__uuid__": "88e79fd5-96b4-4a77-a1f4-312467171014" 259 | }, 260 | "_type": 0, 261 | "_sizeMode": 0, 262 | "_fillType": 0, 263 | "_fillCenter": { 264 | "__type__": "cc.Vec2", 265 | "x": 0, 266 | "y": 0 267 | }, 268 | "_fillStart": 0, 269 | "_fillRange": 0, 270 | "_isTrimmedMode": true, 271 | "_srcBlendFactor": 770, 272 | "_dstBlendFactor": 771, 273 | "_atlas": null 274 | }, 275 | { 276 | "__type__": "cc.ProgressBar", 277 | "_name": "", 278 | "_objFlags": 0, 279 | "node": { 280 | "__id__": 2 281 | }, 282 | "_enabled": true, 283 | "_N$totalLength": 100, 284 | "_N$barSprite": { 285 | "__id__": 4 286 | }, 287 | "_N$mode": 0, 288 | "_N$progress": 0.5, 289 | "_N$reverse": false 290 | }, 291 | { 292 | "__type__": "cc.PrefabInfo", 293 | "root": { 294 | "__id__": 1 295 | }, 296 | "asset": { 297 | "__uuid__": "123257be-8906-489c-a706-f7c0c2430daa" 298 | }, 299 | "fileId": "f25cRVqC9F8pogiNIJkuSZ", 300 | "sync": false 301 | }, 302 | { 303 | "__type__": "cc.Node", 304 | "_name": "NameLabel", 305 | "_objFlags": 0, 306 | "_parent": { 307 | "__id__": 1 308 | }, 309 | "_children": [], 310 | "_tag": -1, 311 | "_active": true, 312 | "_components": [ 313 | { 314 | "__id__": 10 315 | } 316 | ], 317 | "_prefab": { 318 | "__id__": 11 319 | }, 320 | "_id": "", 321 | "_opacity": 255, 322 | "_color": { 323 | "__type__": "cc.Color", 324 | "r": 0, 325 | "g": 0, 326 | "b": 0, 327 | "a": 255 328 | }, 329 | "_cascadeOpacityEnabled": true, 330 | "_anchorPoint": { 331 | "__type__": "cc.Vec2", 332 | "x": 0.5, 333 | "y": 0.5 334 | }, 335 | "_contentSize": { 336 | "__type__": "cc.Size", 337 | "width": 73, 338 | "height": 30 339 | }, 340 | "_skewX": 0, 341 | "_skewY": 0, 342 | "_localZOrder": 0, 343 | "_globalZOrder": 0, 344 | "_opacityModifyRGB": false, 345 | "groupIndex": 0, 346 | "_trs": { 347 | "__type__": "TypedArray", 348 | "ctor": "Float64Array", 349 | "array": [ 350 | 31, 351 | -122, 352 | 0, 353 | 0, 354 | 0, 355 | 0, 356 | 1, 357 | 1, 358 | 1, 359 | 1 360 | ] 361 | } 362 | }, 363 | { 364 | "__type__": "cc.Label", 365 | "_name": "", 366 | "_objFlags": 0, 367 | "node": { 368 | "__id__": 9 369 | }, 370 | "_enabled": true, 371 | "_useOriginalSize": false, 372 | "_actualFontSize": 30, 373 | "_fontSize": 30, 374 | "_lineHeight": 30, 375 | "_enableWrapText": true, 376 | "_N$file": null, 377 | "_isSystemFontUsed": true, 378 | "_spacingX": 0, 379 | "_N$string": "Label", 380 | "_N$horizontalAlign": 1, 381 | "_N$verticalAlign": 1, 382 | "_N$fontFamily": "Arial", 383 | "_N$overflow": 0 384 | }, 385 | { 386 | "__type__": "cc.PrefabInfo", 387 | "root": { 388 | "__id__": 1 389 | }, 390 | "asset": { 391 | "__uuid__": "123257be-8906-489c-a706-f7c0c2430daa" 392 | }, 393 | "fileId": "f9zz4Gk0ZPmJVQ4z5WpOJG", 394 | "sync": false 395 | }, 396 | { 397 | "__type__": "cc.Sprite", 398 | "_name": "", 399 | "_objFlags": 0, 400 | "node": { 401 | "__id__": 1 402 | }, 403 | "_enabled": true, 404 | "_spriteFrame": { 405 | "__uuid__": "cd6c8ddd-052b-4abd-b4f4-63d0189a2d3f" 406 | }, 407 | "_type": 0, 408 | "_sizeMode": 2, 409 | "_fillType": 0, 410 | "_fillCenter": { 411 | "__type__": "cc.Vec2", 412 | "x": 0, 413 | "y": 0 414 | }, 415 | "_fillStart": 0, 416 | "_fillRange": 0, 417 | "_isTrimmedMode": false, 418 | "_srcBlendFactor": 770, 419 | "_dstBlendFactor": 771, 420 | "_atlas": null 421 | }, 422 | { 423 | "__type__": "cc.Animation", 424 | "_name": "", 425 | "_objFlags": 0, 426 | "node": { 427 | "__id__": 1 428 | }, 429 | "_enabled": true, 430 | "_defaultClip": { 431 | "__uuid__": "925879af-4744-4084-ae96-bdc50b394b7b" 432 | }, 433 | "_clips": [ 434 | { 435 | "__uuid__": "287df8ad-2ea2-48dd-8044-2ca6aeb65eac" 436 | }, 437 | { 438 | "__uuid__": "d74a5c70-c7fc-48c0-8f27-9322e6aca703" 439 | }, 440 | { 441 | "__uuid__": "925879af-4744-4084-ae96-bdc50b394b7b" 442 | }, 443 | { 444 | "__uuid__": "7bd968cd-88dd-4872-b7ab-f8c8ccb88784" 445 | } 446 | ], 447 | "playOnLoad": false 448 | }, 449 | { 450 | "__type__": "edd5e3vPh1AdYCFQJnDC4XY", 451 | "_name": "", 452 | "_objFlags": 0, 453 | "node": { 454 | "__id__": 1 455 | }, 456 | "_enabled": true, 457 | "bloodProgressBar": { 458 | "__id__": 7 459 | }, 460 | "bloodProgressBarSprite": { 461 | "__id__": 4 462 | }, 463 | "nameLabel": { 464 | "__id__": 10 465 | }, 466 | "bloodValueLabel": null, 467 | "properties": { 468 | "bloodValue": null, 469 | "attackValue": null, 470 | "defendValue": null, 471 | "restoreValue": null, 472 | "speed": null, 473 | "isMoveAttack": null 474 | } 475 | }, 476 | { 477 | "__type__": "cc.PrefabInfo", 478 | "root": { 479 | "__id__": 1 480 | }, 481 | "asset": { 482 | "__uuid__": "123257be-8906-489c-a706-f7c0c2430daa" 483 | }, 484 | "fileId": "0dKUhhdkRNAoah5STWAipw", 485 | "sync": false 486 | } 487 | ] -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Prefab/HeroBull.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.9", 3 | "uuid": "123257be-8906-489c-a706-f7c0c2430daa", 4 | "optimizationPolicy": "AUTO", 5 | "asyncLoadAssets": false, 6 | "readonly": false, 7 | "subMetas": {} 8 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Prefab/HeroGirl.prefab: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "__type__": "cc.Prefab", 4 | "_name": "", 5 | "_objFlags": 0, 6 | "_rawFiles": null, 7 | "data": { 8 | "__id__": 1 9 | } 10 | }, 11 | { 12 | "__type__": "cc.Node", 13 | "_name": "HeroGirl", 14 | "_objFlags": 0, 15 | "_parent": null, 16 | "_children": [ 17 | { 18 | "__id__": 2 19 | }, 20 | { 21 | "__id__": 9 22 | } 23 | ], 24 | "_tag": -1, 25 | "_active": true, 26 | "_components": [ 27 | { 28 | "__id__": 12 29 | }, 30 | { 31 | "__id__": 13 32 | }, 33 | { 34 | "__id__": 14 35 | } 36 | ], 37 | "_prefab": { 38 | "__id__": 15 39 | }, 40 | "_id": "", 41 | "_opacity": 255, 42 | "_color": { 43 | "__type__": "cc.Color", 44 | "r": 255, 45 | "g": 255, 46 | "b": 255, 47 | "a": 255 48 | }, 49 | "_cascadeOpacityEnabled": true, 50 | "_anchorPoint": { 51 | "__type__": "cc.Vec2", 52 | "x": 0.5, 53 | "y": 0.5 54 | }, 55 | "_contentSize": { 56 | "__type__": "cc.Size", 57 | "width": 256, 58 | "height": 256 59 | }, 60 | "_skewX": 0, 61 | "_skewY": 0, 62 | "_localZOrder": 0, 63 | "_globalZOrder": 0, 64 | "_opacityModifyRGB": false, 65 | "groupIndex": 0, 66 | "_trs": { 67 | "__type__": "TypedArray", 68 | "ctor": "Float64Array", 69 | "array": [ 70 | 222, 71 | -141, 72 | 0, 73 | 0, 74 | 0, 75 | 0, 76 | 1, 77 | 1, 78 | 1, 79 | 1 80 | ] 81 | } 82 | }, 83 | { 84 | "__type__": "cc.Node", 85 | "_name": "HeroGirlBloodProgressBar", 86 | "_objFlags": 0, 87 | "_parent": { 88 | "__id__": 1 89 | }, 90 | "_children": [ 91 | { 92 | "__id__": 3 93 | } 94 | ], 95 | "_tag": -1, 96 | "_active": true, 97 | "_components": [ 98 | { 99 | "__id__": 6 100 | }, 101 | { 102 | "__id__": 7 103 | } 104 | ], 105 | "_prefab": { 106 | "__id__": 8 107 | }, 108 | "_id": "", 109 | "_opacity": 255, 110 | "_color": { 111 | "__type__": "cc.Color", 112 | "r": 255, 113 | "g": 255, 114 | "b": 255, 115 | "a": 255 116 | }, 117 | "_cascadeOpacityEnabled": true, 118 | "_anchorPoint": { 119 | "__type__": "cc.Vec2", 120 | "x": 0.5, 121 | "y": 0.5 122 | }, 123 | "_contentSize": { 124 | "__type__": "cc.Size", 125 | "width": 100, 126 | "height": 8 127 | }, 128 | "_skewX": 0, 129 | "_skewY": 0, 130 | "_localZOrder": 0, 131 | "_globalZOrder": 0, 132 | "_opacityModifyRGB": false, 133 | "groupIndex": 0, 134 | "_trs": { 135 | "__type__": "TypedArray", 136 | "ctor": "Float64Array", 137 | "array": [ 138 | 28, 139 | 64, 140 | 0, 141 | 0, 142 | 0, 143 | 0, 144 | 1, 145 | -1, 146 | 1, 147 | 1 148 | ] 149 | } 150 | }, 151 | { 152 | "__type__": "cc.Node", 153 | "_name": "bar", 154 | "_objFlags": 0, 155 | "_parent": { 156 | "__id__": 2 157 | }, 158 | "_children": [], 159 | "_tag": -1, 160 | "_active": true, 161 | "_components": [ 162 | { 163 | "__id__": 4 164 | } 165 | ], 166 | "_prefab": { 167 | "__id__": 5 168 | }, 169 | "_id": "", 170 | "_opacity": 255, 171 | "_color": { 172 | "__type__": "cc.Color", 173 | "r": 241, 174 | "g": 11, 175 | "b": 11, 176 | "a": 255 177 | }, 178 | "_cascadeOpacityEnabled": true, 179 | "_anchorPoint": { 180 | "__type__": "cc.Vec2", 181 | "x": 0, 182 | "y": 0.5 183 | }, 184 | "_contentSize": { 185 | "__type__": "cc.Size", 186 | "width": 50, 187 | "height": 8 188 | }, 189 | "_skewX": 0, 190 | "_skewY": 0, 191 | "_localZOrder": 0, 192 | "_globalZOrder": 0, 193 | "_opacityModifyRGB": false, 194 | "groupIndex": 0, 195 | "_trs": { 196 | "__type__": "TypedArray", 197 | "ctor": "Float64Array", 198 | "array": [ 199 | -50, 200 | 0, 201 | 0, 202 | 0, 203 | 0, 204 | 0, 205 | 1, 206 | 1, 207 | 1, 208 | 1 209 | ] 210 | } 211 | }, 212 | { 213 | "__type__": "cc.Sprite", 214 | "_name": "", 215 | "_objFlags": 0, 216 | "node": { 217 | "__id__": 3 218 | }, 219 | "_enabled": true, 220 | "_spriteFrame": { 221 | "__uuid__": "67e68bc9-dad5-4ad9-a2d8-7e03d458e32f" 222 | }, 223 | "_type": 1, 224 | "_sizeMode": 0, 225 | "_fillType": 0, 226 | "_fillCenter": { 227 | "__type__": "cc.Vec2", 228 | "x": 0, 229 | "y": 0 230 | }, 231 | "_fillStart": 0, 232 | "_fillRange": 0, 233 | "_isTrimmedMode": true, 234 | "_srcBlendFactor": 770, 235 | "_dstBlendFactor": 771, 236 | "_atlas": null 237 | }, 238 | { 239 | "__type__": "cc.PrefabInfo", 240 | "root": { 241 | "__id__": 1 242 | }, 243 | "asset": { 244 | "__uuid__": "ddc83e59-ef2f-4eb7-9448-1f32e84683ac" 245 | }, 246 | "fileId": "4f502evzxPsJHgtYQwZtug", 247 | "sync": false 248 | }, 249 | { 250 | "__type__": "cc.Sprite", 251 | "_name": "", 252 | "_objFlags": 0, 253 | "node": { 254 | "__id__": 2 255 | }, 256 | "_enabled": true, 257 | "_spriteFrame": { 258 | "__uuid__": "88e79fd5-96b4-4a77-a1f4-312467171014" 259 | }, 260 | "_type": 0, 261 | "_sizeMode": 0, 262 | "_fillType": 0, 263 | "_fillCenter": { 264 | "__type__": "cc.Vec2", 265 | "x": 0, 266 | "y": 0 267 | }, 268 | "_fillStart": 0, 269 | "_fillRange": 0, 270 | "_isTrimmedMode": true, 271 | "_srcBlendFactor": 770, 272 | "_dstBlendFactor": 771, 273 | "_atlas": null 274 | }, 275 | { 276 | "__type__": "cc.ProgressBar", 277 | "_name": "", 278 | "_objFlags": 0, 279 | "node": { 280 | "__id__": 2 281 | }, 282 | "_enabled": true, 283 | "_N$totalLength": 100, 284 | "_N$barSprite": { 285 | "__id__": 4 286 | }, 287 | "_N$mode": 0, 288 | "_N$progress": 0.5, 289 | "_N$reverse": false 290 | }, 291 | { 292 | "__type__": "cc.PrefabInfo", 293 | "root": { 294 | "__id__": 1 295 | }, 296 | "asset": { 297 | "__uuid__": "ddc83e59-ef2f-4eb7-9448-1f32e84683ac" 298 | }, 299 | "fileId": "ba/JaEKptGBr1wiPCpX0WP", 300 | "sync": false 301 | }, 302 | { 303 | "__type__": "cc.Node", 304 | "_name": "NameLabel", 305 | "_objFlags": 0, 306 | "_parent": { 307 | "__id__": 1 308 | }, 309 | "_children": [], 310 | "_tag": -1, 311 | "_active": true, 312 | "_components": [ 313 | { 314 | "__id__": 10 315 | } 316 | ], 317 | "_prefab": { 318 | "__id__": 11 319 | }, 320 | "_id": "", 321 | "_opacity": 255, 322 | "_color": { 323 | "__type__": "cc.Color", 324 | "r": 0, 325 | "g": 0, 326 | "b": 0, 327 | "a": 255 328 | }, 329 | "_cascadeOpacityEnabled": true, 330 | "_anchorPoint": { 331 | "__type__": "cc.Vec2", 332 | "x": 0.5, 333 | "y": 0.5 334 | }, 335 | "_contentSize": { 336 | "__type__": "cc.Size", 337 | "width": 73, 338 | "height": 30 339 | }, 340 | "_skewX": 0, 341 | "_skewY": 0, 342 | "_localZOrder": 0, 343 | "_globalZOrder": 0, 344 | "_opacityModifyRGB": false, 345 | "groupIndex": 0, 346 | "_trs": { 347 | "__type__": "TypedArray", 348 | "ctor": "Float64Array", 349 | "array": [ 350 | 36, 351 | -119, 352 | 0, 353 | 0, 354 | 0, 355 | 0, 356 | 1, 357 | 1, 358 | 1, 359 | 1 360 | ] 361 | } 362 | }, 363 | { 364 | "__type__": "cc.Label", 365 | "_name": "", 366 | "_objFlags": 0, 367 | "node": { 368 | "__id__": 9 369 | }, 370 | "_enabled": true, 371 | "_useOriginalSize": false, 372 | "_actualFontSize": 30, 373 | "_fontSize": 30, 374 | "_lineHeight": 30, 375 | "_enableWrapText": true, 376 | "_N$file": null, 377 | "_isSystemFontUsed": true, 378 | "_spacingX": 0, 379 | "_N$string": "Label", 380 | "_N$horizontalAlign": 1, 381 | "_N$verticalAlign": 1, 382 | "_N$fontFamily": "Arial", 383 | "_N$overflow": 0 384 | }, 385 | { 386 | "__type__": "cc.PrefabInfo", 387 | "root": { 388 | "__id__": 1 389 | }, 390 | "asset": { 391 | "__uuid__": "ddc83e59-ef2f-4eb7-9448-1f32e84683ac" 392 | }, 393 | "fileId": "11SR6o02lA/bGIvxAlJ5cC", 394 | "sync": false 395 | }, 396 | { 397 | "__type__": "cc.Animation", 398 | "_name": "", 399 | "_objFlags": 0, 400 | "node": { 401 | "__id__": 1 402 | }, 403 | "_enabled": true, 404 | "_defaultClip": { 405 | "__uuid__": "67244aa4-e69a-4713-be4a-a6763fa16810" 406 | }, 407 | "_clips": [ 408 | { 409 | "__uuid__": "3af2986e-0ac7-402d-9a9d-c97cf86ca09f" 410 | }, 411 | { 412 | "__uuid__": "afd9c777-c09c-416e-94c0-96139fa59078" 413 | }, 414 | { 415 | "__uuid__": "913acde6-e615-480d-8a89-ba354d85dc3e" 416 | }, 417 | { 418 | "__uuid__": "67244aa4-e69a-4713-be4a-a6763fa16810" 419 | } 420 | ], 421 | "playOnLoad": false 422 | }, 423 | { 424 | "__type__": "cc.Sprite", 425 | "_name": "", 426 | "_objFlags": 0, 427 | "node": { 428 | "__id__": 1 429 | }, 430 | "_enabled": true, 431 | "_spriteFrame": { 432 | "__uuid__": "14d4108c-e795-48d5-9ab7-3b95b01e90e8" 433 | }, 434 | "_type": 0, 435 | "_sizeMode": 2, 436 | "_fillType": 0, 437 | "_fillCenter": { 438 | "__type__": "cc.Vec2", 439 | "x": 0, 440 | "y": 0 441 | }, 442 | "_fillStart": 0, 443 | "_fillRange": 0, 444 | "_isTrimmedMode": false, 445 | "_srcBlendFactor": 770, 446 | "_dstBlendFactor": 771, 447 | "_atlas": null 448 | }, 449 | { 450 | "__type__": "edd5e3vPh1AdYCFQJnDC4XY", 451 | "_name": "", 452 | "_objFlags": 0, 453 | "node": { 454 | "__id__": 1 455 | }, 456 | "_enabled": true, 457 | "bloodProgressBar": { 458 | "__id__": 7 459 | }, 460 | "bloodProgressBarSprite": { 461 | "__id__": 4 462 | }, 463 | "nameLabel": { 464 | "__id__": 10 465 | }, 466 | "bloodValueLabel": null, 467 | "properties": { 468 | "bloodValue": null, 469 | "attackValue": null, 470 | "defendValue": null, 471 | "restoreValue": null, 472 | "speed": null, 473 | "isMoveAttack": null 474 | } 475 | }, 476 | { 477 | "__type__": "cc.PrefabInfo", 478 | "root": { 479 | "__id__": 1 480 | }, 481 | "asset": { 482 | "__uuid__": "ddc83e59-ef2f-4eb7-9448-1f32e84683ac" 483 | }, 484 | "fileId": "cbmNh8VbRBaYtt/6oCB/Qr", 485 | "sync": false 486 | } 487 | ] -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/Prefab/HeroGirl.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.9", 3 | "uuid": "ddc83e59-ef2f-4eb7-9448-1f32e84683ac", 4 | "optimizationPolicy": "AUTO", 5 | "asyncLoadAssets": false, 6 | "readonly": false, 7 | "subMetas": {} 8 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/background.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/background.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "50baa66c-868b-4d1f-9d83-69e452180950", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 1334, 11 | "height": 750, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "background": { 15 | "ver": "1.0.4", 16 | "uuid": "cedcdfce-36d1-45cc-848a-1bfc58fc6a28", 17 | "rawTextureUuid": "50baa66c-868b-4d1f-9d83-69e452180950", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 1334, 26 | "height": 750, 27 | "rawWidth": 1334, 28 | "rawHeight": 750, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/button-normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/button-normal.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/button-normal.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "533b9ac8-f8f0-4c62-b350-f0984524c69a", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 555, 11 | "height": 122, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "button-normal": { 15 | "ver": "1.0.4", 16 | "uuid": "7c11d669-8c4d-4af4-9a02-bf8a491e736d", 17 | "rawTextureUuid": "533b9ac8-f8f0-4c62-b350-f0984524c69a", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": -0.5, 22 | "offsetY": 0.5, 23 | "trimX": 2, 24 | "trimY": 2, 25 | "width": 550, 26 | "height": 117, 27 | "rawWidth": 555, 28 | "rawHeight": 122, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/button-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/button-pressed.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/button-pressed.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "97e29308-f4fa-4908-b0a6-ac7f8f230ac8", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 555, 11 | "height": 122, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "button-pressed": { 15 | "ver": "1.0.4", 16 | "uuid": "1aa7d76c-0a28-4b4f-9302-70d123501543", 17 | "rawTextureUuid": "97e29308-f4fa-4908-b0a6-ac7f8f230ac8", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": -0.5, 22 | "offsetY": 0.5, 23 | "trimX": 2, 24 | "trimY": 2, 25 | "width": 550, 26 | "height": 117, 27 | "rawWidth": 555, 28 | "rawHeight": 122, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/editBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/editBox.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/editBox.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "5fe87428-60d1-4c3e-87da-c6967fa49a29", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 521, 11 | "height": 102, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "editBox": { 15 | "ver": "1.0.4", 16 | "uuid": "f240719d-d39f-4c44-acb4-42b3ca20c794", 17 | "rawTextureUuid": "5fe87428-60d1-4c3e-87da-c6967fa49a29", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 521, 26 | "height": 102, 27 | "rawWidth": 521, 28 | "rawHeight": 102, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/roomButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/roomButton.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/roomButton.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "b5b7db71-f7e0-4119-b2db-2544bd44d0be", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "roomButton": { 15 | "ver": "1.0.4", 16 | "uuid": "208c84c7-10c8-45e4-853d-1738a2361422", 17 | "rawTextureUuid": "b5b7db71-f7e0-4119-b2db-2544bd44d0be", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 4.5, 22 | "offsetY": 3, 23 | "trimX": 46, 24 | "trimY": 51, 25 | "width": 173, 26 | "height": 148, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/singleColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/assets/Texture/singleColor.png -------------------------------------------------------------------------------- /turn-based-game-client/assets/Texture/singleColor.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.5", 3 | "uuid": "a8027877-d8d6-4645-97a0-52d4a0123dba", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 2, 11 | "height": 2, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "singleColor": { 15 | "ver": "1.0.4", 16 | "uuid": "410fb916-8721-4663-bab8-34397391ace7", 17 | "rawTextureUuid": "a8027877-d8d6-4645-97a0-52d4a0123dba", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 2, 26 | "height": 2, 27 | "rawWidth": 2, 28 | "rawHeight": 2, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/migration.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.1.2", 3 | "uuid": "b7dbab72-d08b-46a9-ae3a-e5358efe001a", 4 | "isBundle": false, 5 | "bundleName": "", 6 | "priority": 1, 7 | "compressionType": {}, 8 | "optimizeHotUpdate": {}, 9 | "inlineSpriteFrames": {}, 10 | "isRemoteBundle": {}, 11 | "subMetas": {} 12 | } -------------------------------------------------------------------------------- /turn-based-game-client/assets/migration/use_v2.0.x_cc.Toggle_event.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This script is automatically generated by Cocos Creator and is only compatible with projects prior to v2.1.0. 3 | * You do not need to manually add this script in any other project. 4 | * If you don't use cc.Toggle in your project, you can delete this script directly. 5 | * If your project is hosted in VCS such as git, submit this script together. 6 | * 7 | * 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 之前版本的工程, 8 | * 你无需在任何其它项目中手动添加此脚本。 9 | * 如果你的项目中没用到 Toggle,可直接删除该脚本。 10 | * 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。 11 | */ 12 | 13 | if (cc.Toggle) { 14 | // Whether the 'toggle' and 'checkEvents' events are fired when 'toggle.check() / toggle.uncheck()' is called in the code 15 | // 在代码中调用 'toggle.check() / toggle.uncheck()' 时是否触发 'toggle' 与 'checkEvents' 事件 16 | cc.Toggle._triggerEventInScript_check = true; 17 | } 18 | -------------------------------------------------------------------------------- /turn-based-game-client/assets/migration/use_v2.0.x_cc.Toggle_event.js.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "9605b538-81a8-41dc-b21d-160c33cc3171", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /turn-based-game-client/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "experimentalDecorators": true 6 | }, 7 | "exclude": [ 8 | "node_modules", 9 | ".vscode", 10 | "library", 11 | "local", 12 | "settings", 13 | "temp" 14 | ] 15 | } -------------------------------------------------------------------------------- /turn-based-game-client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "turn-based-multiplayer-fight", 3 | "version": "1.0.0", 4 | "description": "Hello world new project template.", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "@leancloud/play": "^1.0.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /turn-based-game-client/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "engine": "cocos2d-html5", 3 | "packages": "packages", 4 | "version": "2.4.3", 5 | "id": "a1a0332a-a679-4079-a6a4-0786b876a422", 6 | "isNew": false 7 | } -------------------------------------------------------------------------------- /turn-based-game-client/settings/builder.json: -------------------------------------------------------------------------------- 1 | { 2 | "android-instant": { 3 | "REMOTE_SERVER_ROOT": "", 4 | "host": "", 5 | "pathPattern": "", 6 | "recordPath": "", 7 | "scheme": "https", 8 | "skipRecord": false 9 | }, 10 | "appBundle": false, 11 | "baidugame": { 12 | "REMOTE_SERVER_ROOT": "", 13 | "appid": "testappid", 14 | "orientation": "portrait", 15 | "subContext": "" 16 | }, 17 | "encryptJs": true, 18 | "excludeScenes": [], 19 | "fb-instant-games": {}, 20 | "includeSDKBox": false, 21 | "inlineSpriteFrames": true, 22 | "inlineSpriteFrames_native": true, 23 | "md5Cache": false, 24 | "mergeStartScene": false, 25 | "optimizeHotUpdate": false, 26 | "orientation": { 27 | "landscapeLeft": true, 28 | "landscapeRight": true, 29 | "portrait": false, 30 | "upsideDown": false 31 | }, 32 | "packageName": "org.cocos2d.helloworld", 33 | "qqplay": { 34 | "REMOTE_SERVER_ROOT": "", 35 | "orientation": "portrait", 36 | "zip": false 37 | }, 38 | "startScene": "cc9f9e91-8dbb-4ea3-b3a6-c75e4cc3e485", 39 | "title": "multiplayer-turn-based-game", 40 | "webOrientation": "auto", 41 | "wechatgame": { 42 | "REMOTE_SERVER_ROOT": "", 43 | "appid": "wx6ac3f5090a6b99c5", 44 | "orientation": "portrait", 45 | "subContext": "" 46 | }, 47 | "xxteaKey": "04e732fb-171d-4f", 48 | "zipCompressJs": true 49 | } -------------------------------------------------------------------------------- /turn-based-game-client/settings/builder.panel.json: -------------------------------------------------------------------------------- 1 | { 2 | "excludeScenes": [], 3 | "packageName": "org.cocos2d.helloworld", 4 | "platform": "web-mobile", 5 | "startScene": "2d2f792f-a40c-49bb-a189-ed176a246e49", 6 | "title": "HelloWorld" 7 | } -------------------------------------------------------------------------------- /turn-based-game-client/settings/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "assets-sort-type": "name", 3 | "collision-matrix": [ 4 | [ 5 | true 6 | ] 7 | ], 8 | "design-resolution-height": 640, 9 | "design-resolution-width": 960, 10 | "excluded-modules": [ 11 | "Geom Utils", 12 | "3D", 13 | "3D Primitive", 14 | "3D Physics/cannon.js", 15 | "3D Physics/Builtin", 16 | "3D Particle", 17 | "SafeArea" 18 | ], 19 | "facebook": { 20 | "appID": "", 21 | "audience": { 22 | "enable": false 23 | }, 24 | "enable": false, 25 | "live": { 26 | "enable": false 27 | } 28 | }, 29 | "fit-height": true, 30 | "fit-width": false, 31 | "group-list": [ 32 | "default" 33 | ], 34 | "last-module-event-record-time": 1553758083583, 35 | "simulator-orientation": false, 36 | "simulator-resolution": { 37 | "height": 640, 38 | "width": 960 39 | }, 40 | "start-scene": "cc9f9e91-8dbb-4ea3-b3a6-c75e4cc3e485", 41 | "use-customize-simulator": true, 42 | "use-project-simulator-setting": false, 43 | "migrate-history": [ 44 | "cloud-function" 45 | ], 46 | "preview-port": 7456, 47 | "clear-simulator-cache": true 48 | } 49 | -------------------------------------------------------------------------------- /turn-based-game-client/settings/services.json: -------------------------------------------------------------------------------- 1 | { 2 | "services": [ 3 | { 4 | "service_id": "235", 5 | "service_name": "Cocos Analytics", 6 | "service_desc": "提供最核心最基本的数据、标准化界面功能简洁易用、数据准确性最好", 7 | "service_title": "精准了解游戏的新增、活跃、留存、付费等数据", 8 | "service_icon": "https://account.cocos.com/client/3f8f31ccf66995e183044f167c092395.png", 9 | "service_guide_url": "https://n-analytics.cocos.com/docs/", 10 | "service_sample_url": "https://github.com/cocos-creator/tutorial-dark-slash/tree/analytics", 11 | "service_dev_url": "http://analytics.cocos.com/realtime/jump_to/", 12 | "service_type": "3", 13 | "service_type_zh": "公司和个人游戏", 14 | "support_platform": [ 15 | "Android", 16 | "iOS", 17 | "HTML5" 18 | ], 19 | "package_download_url": "http://download.cocos.com/CocosServices/plugins/service-analytics/1.1.6_2.0.1_2.0.2.zip", 20 | "package_version_desc": "1、 更新 H5 SDK 版本至 2.0.2。
2、 去除 AppSecret 参数。
3、appid 参数自动选择当前游戏绑定的游戏 appid。
4、 如有相关问题咨询或者需求, 可以联系我们技术支持邮箱 support-cocos@cocos.com", 21 | "service_component_name": "service-analytics", 22 | "package_versions": [ 23 | "1.0.0_1.0.5", 24 | "1.1.2_2.0.0", 25 | "1.1.3_2.0.1", 26 | "1.1.4_2.0.1", 27 | "1.1.5_2.0.1", 28 | "1.1.6_2.0.1_2.0.2" 29 | ], 30 | "build_platform": [ 31 | "web-mobile", 32 | "web-desktop", 33 | "fb-instant-games", 34 | "wechatgame", 35 | "wechatgame-subcontext", 36 | "qqplay", 37 | "android", 38 | "android-instant", 39 | "ios", 40 | "mac", 41 | "quickgame", 42 | "qgame", 43 | "huawei" 44 | ] 45 | }, 46 | { 47 | "service_id": "241", 48 | "service_name": "Matchvs", 49 | "service_desc": "通过SDK接入快速实现联网功能、帧同步、国内外多节点、服务器独立部署、gameServer自定义游戏服务端逻辑。\n技术支持群QQ群:822523258", 50 | "service_title": "专业成熟的移动游戏联网与服务端解决方案", 51 | "service_icon": "https://account.cocos.com/client/14406719a07eb3d714d36e5edc6e06fa.png", 52 | "service_guide_url": "http://doc.matchvs.com/QuickStart/QuickStart-CocosCreator", 53 | "service_sample_url": "http://www.matchvs.com/serviceCourse", 54 | "service_dev_url": "http://www.matchvs.com/cocosLogin", 55 | "service_type": "2", 56 | "service_type_zh": "仅支持公司游戏", 57 | "support_platform": [ 58 | "Android", 59 | "iOS", 60 | "HTML5" 61 | ], 62 | "package_download_url": "http://download.cocos.com/CocosServices/plugins/service-matchvs/1.0.6_3.7.9.2.zip", 63 | "package_version_desc": "更新日期:2019-03-20
更新内容:
1、添加多节点相关接口
2、优化独立部署wss和ws切换
3、优化login参数容错
4、添加组队中踢人和消息发送接口
5、添加取消组队匹配接口", 64 | "service_component_name": "service-matchvs", 65 | "package_versions": [ 66 | "1.0.3_3.7.6.4", 67 | "1.0.5_3.7.7.3", 68 | "1.0.6_3.7.9.2" 69 | ], 70 | "build_platform": [ 71 | "web-mobile", 72 | "web-desktop", 73 | "fb-instant-games", 74 | "wechatgame", 75 | "wechatgame-subcontext", 76 | "qqplay", 77 | "android", 78 | "android-instant", 79 | "ios", 80 | "mac", 81 | "quickgame", 82 | "qgame", 83 | "huawei" 84 | ] 85 | }, 86 | { 87 | "service_id": "242", 88 | "service_name": "Agora Voice", 89 | "service_desc": "稳定、低耗、76ms超低延时、全球200+数据中心覆盖;变声器、超高音质、听声辩位等丰富玩法极速接入;全平台支持:Android、iOS、Web。\n技术支持群QQ群:799099183", 90 | "service_title": "游戏内置实时语音SDK", 91 | "service_icon": "https://account.cocos.com/uploads/client_icon/date(\"Y-m-d\")/50fe52b789c2fc1e1fff9eec161c1bb3.png", 92 | "service_guide_url": "https://docs.agora.io/cn/Interactive Gaming/game_c", 93 | "service_sample_url": "https://github.com/AgoraBeck/Hello_Agora_CocosCreator_Voice", 94 | "service_dev_url": "https://sso.agora.io/api/oauth/cocos/login", 95 | "service_type": "3", 96 | "service_type_zh": "公司和个人游戏", 97 | "support_platform": [ 98 | "Android", 99 | "iOS", 100 | "HTML5" 101 | ], 102 | "package_download_url": "http://download.cocos.com/CocosServices/plugins/service-agora/1.0.1_2.2.3.20_2.5.2.zip", 103 | "package_version_desc": "first release.", 104 | "service_component_name": "service-agora", 105 | "package_versions": [ 106 | "1.0.1_2.2.3.20_2.5.2" 107 | ], 108 | "build_platform": [ 109 | "web-mobile", 110 | "web-desktop", 111 | "android", 112 | "ios" 113 | ] 114 | }, 115 | { 116 | "service_id": "7", 117 | "service_name": "AnySDK", 118 | "service_desc": "800+渠道、支持多平台多引擎、安全稳定的本地打包工具。技术支持:https://forum.cocos.com/c/anysdk", 119 | "service_title": "游戏快速接入第三方SDK的解决方案", 120 | "service_icon": "https://account.cocos.com/client/3ba1fcf9029140cf08d95813e387d04a.png", 121 | "service_guide_url": "http://docs.anysdk.com", 122 | "service_sample_url": "http://github.com/AnySDK", 123 | "service_dev_url": "http://dev.anysdk.com", 124 | "service_type": "0", 125 | "service_type_zh": "不支持游戏", 126 | "support_platform": [ 127 | "Android", 128 | "iOS", 129 | "HTML5" 130 | ], 131 | "package_download_url": "http://download.cocos.com/CocosServices/plugins/service-anysdk/1.0.1_2.2.5.zip", 132 | "package_version_desc": "修复 Creator 2.0.x 系列版本 2.0.7 以上因调用 cc.game.restart(); 而导致的 AnySDK 调用失败的错误", 133 | "service_component_name": "service-anysdk", 134 | "package_versions": [ 135 | "1.0.1_2.2.5" 136 | ], 137 | "build_platform": [ 138 | "web-mobile", 139 | "web-desktop", 140 | "android", 141 | "ios" 142 | ] 143 | } 144 | ], 145 | "game": { 146 | "name": "未知游戏", 147 | "appid": "UNKNOW" 148 | } 149 | } -------------------------------------------------------------------------------- /turn-based-game-client/template-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/multiplayer-turn-based-game-demo/e51f402493753b09f121aee054b54424539abbdd/turn-based-game-client/template-banner.png -------------------------------------------------------------------------------- /turn-based-game-client/template.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TEMPLATES.helloworld.name", 3 | "desc": "TEMPLATES.helloworld.desc", 4 | "banner": "template-banner.png" 5 | } --------------------------------------------------------------------------------