├── .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 | }
--------------------------------------------------------------------------------