Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
b5b43bb596 | ||
|
59767c1ed5 | ||
|
1c6ad5c8f8 | ||
|
34e0893eb8 | ||
|
cc7524becd | ||
|
d06cb18a08 | ||
|
00816fb636 | ||
|
ff24bea055 | ||
|
56d66a128a | ||
|
2f097dfec5 | ||
|
ff48b47ecc | ||
|
7a0127b17d | ||
|
59c8427c70 | ||
|
c357ebad3b | ||
|
b2e1f7c2a6 | ||
|
9a8c32197e |
@@ -69,4 +69,10 @@ To summarize, if UDP is used we need
|
||||
When using UDP, it's also necessary to verify authorization of each incoming packet, e.g. by simple time limited symmetric key, due to being connectionless.
|
||||
|
||||
## Why not hybrid?
|
||||
Instead of replacing all use of TCP by UDP, it's more reasonable to keep using TCP for login and the "all-confirmed downsync inputFrames" from server to players (and possibly "upsync inputFrames" from player to server, but tradeoff on that remains to be discussed), while using UDP for broadcasting inputFrames of each individual player asap (either using p2p or not) just for **better prediction performance**!
|
||||
Instead of replacing all use of TCP by UDP, it's more reasonable to keep using TCP for login and the "all-confirmed downsync inputFrames" from server to players (and possibly "upsync inputFrames" from player to server, but tradeoff on that remains to be discussed), while using a `UDP secondary session` for broadcasting inputFrames of each individual player asap (either using p2p or not) just for **better prediction performance**!
|
||||
|
||||
## How do you actually implement the `UDP secondary session`?
|
||||
It's not a global consensus, but in practice many UDP communications are platform specific due to their paired asynchronous I/O choices, e.g. epoll in Linux and kqueue in BSD-ish. Of course there're many 3rd party higher level encapsulated tools for cross-platform use but that introduces extra debugging when things go wrong.
|
||||
|
||||
Therefore, the following plan doesn't assume use of any specific 3rd party encapsulation of UDP communication.
|
||||

|
23
README.md
@@ -2,13 +2,15 @@
|
||||
|
||||
This project is a demo for a websocket-based rollback netcode inspired by [GGPO](https://github.com/pond3r/ggpo/blob/master/doc/README.md). As lots of feedbacks ask for a discussion on using UDP instead, I tried to summarize my personal opinion about it in [ConcerningEdgeCases](./ConcerningEdgeCases.md) -- not necessarily correct but that's indeed a question to face :)
|
||||
|
||||
The following video is recorded over INTERNET using an input delay of 4 frames and it feels SMOOTH when playing! Please also checkout [this demo video](https://pan.baidu.com/s/1ML6hNupaPHPJRd5rcTvQvw?pwd=8ruc) to see how this demo carries out a full 60fps synchronization with the help of _batched input upsync/downsync_ for satisfying network I/O performance.
|
||||
The following video is recorded over INTERNET using an input delay of 4 frames and it feels SMOOTH when playing! Please also checkout these demo videos
|
||||
- [source video of the first gif (earlier version)](https://pan.baidu.com/s/1ML6hNupaPHPJRd5rcTvQvw?pwd=8ruc)
|
||||
- [source video of the second gif (added turn-around optimization & dashing)](https://pan.baidu.com/s/1isMcLvxax4NNkDgitV_FDg?pwd=s1i6)
|
||||
|
||||
to see how this demo carries out a full 60fps synchronization with the help of _batched input upsync/downsync_ for satisfying network I/O performance.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
All gifs are sped up to ~1.5x for file size reduction, kindly note that animations are resumed from a partial progress!
|
||||

|
||||
|
||||
# Notable Features
|
||||
- Backend dynamics toggle via [Room.BackendDynamicsEnabled](https://github.com/genxium/DelayNoMore/blob/v0.9.14/battle_srv/models/room.go#L786)
|
||||
@@ -67,7 +69,7 @@ user@proj-root/battle_srv/configs> cp -r ./configs.template ./configs
|
||||
user@proj-root/frontend/assets/plugin_scripts> cp ./conf.js.template ./conf.js
|
||||
```
|
||||
|
||||
## 1.2 Actual building & running
|
||||
## 1.3 Actual building & running
|
||||
### Backend
|
||||
```
|
||||
### The following command runs mysql-server in foreground, it's almost NEVER run in such a way, please find a proper way to run it for yourself
|
||||
@@ -96,3 +98,14 @@ ErrFatal {"err": "MISCONF Redis is configured to save RDB snapshots, but
|
||||
```
|
||||
|
||||
Just restart your `redis-server` process.
|
||||
|
||||
### 2.2 Why not show "PING value" on frontend display?
|
||||
The most important reason for not showing "PING value" is simple: in most games the "PING value" is collected by a dedicated kernel thread which doesn't interfere the UI thread or the primary networking thread. As this demo primarily runs on browser by far, I don't have this capability easily.
|
||||
|
||||
Moreover, in practice I found that to spot sync anomalies, the following tools are much more useful than the "PING VALUE".
|
||||
- Detection of [prediction mismatch on the frontend](https://github.com/genxium/DelayNoMore/blob/v0.9.19/frontend/assets/scripts/Map.js#L842).
|
||||
- Detection of [type#1 forceConfirmation on the backend](https://github.com/genxium/DelayNoMore/blob/v0.9.19/battle_srv/models/room.go#L1246).
|
||||
- Detection of [type#2 forceConfirmation on the backend](https://github.com/genxium/DelayNoMore/blob/v0.9.19/battle_srv/models/room.go#L1259).
|
||||
|
||||
There's also some useful information displayed on the frontend when `true == Map.showNetworkDoctorInfo`.
|
||||

|
@@ -41,6 +41,7 @@ func toPbRoomDownsyncFrame(rdf *battle.RoomDownsyncFrame) *pb.RoomDownsyncFrame
|
||||
OnWall: last.OnWall,
|
||||
OnWallNormX: last.OnWallNormX,
|
||||
OnWallNormY: last.OnWallNormY,
|
||||
CapturedByInertia: last.CapturedByInertia,
|
||||
JoinIndex: last.JoinIndex,
|
||||
BulletTeamId: last.BulletTeamId,
|
||||
ChCollisionTeamId: last.ChCollisionTeamId,
|
||||
@@ -165,6 +166,7 @@ func toPbPlayers(modelInstances map[int32]*Player, withMetaInfo bool) []*pb.Play
|
||||
OnWall: last.OnWall,
|
||||
OnWallNormX: last.OnWallNormX,
|
||||
OnWallNormY: last.OnWallNormY,
|
||||
CapturedByInertia: last.CapturedByInertia,
|
||||
JoinIndex: last.JoinIndex,
|
||||
BulletTeamId: last.BulletTeamId,
|
||||
ChCollisionTeamId: last.ChCollisionTeamId,
|
||||
@@ -216,6 +218,7 @@ func toJsPlayers(modelInstances map[int32]*Player) []*battle.PlayerDownsync {
|
||||
OnWall: last.OnWall,
|
||||
OnWallNormX: last.OnWallNormX,
|
||||
OnWallNormY: last.OnWallNormY,
|
||||
CapturedByInertia: last.CapturedByInertia,
|
||||
Score: last.Score,
|
||||
Removed: last.Removed,
|
||||
}
|
||||
|
@@ -30,9 +30,9 @@ type PlayerDownsync struct {
|
||||
VirtualGridX int32 `protobuf:"varint,2,opt,name=virtualGridX,proto3" json:"virtualGridX,omitempty"`
|
||||
VirtualGridY int32 `protobuf:"varint,3,opt,name=virtualGridY,proto3" json:"virtualGridY,omitempty"`
|
||||
DirX int32 `protobuf:"varint,4,opt,name=dirX,proto3" json:"dirX,omitempty"`
|
||||
DirY int32 `protobuf:"varint,5,opt,name=dirY,proto3" json:"dirY,omitempty"` // "dirX" and "dirY" determines character facing
|
||||
DirY int32 `protobuf:"varint,5,opt,name=dirY,proto3" json:"dirY,omitempty"`
|
||||
VelX int32 `protobuf:"varint,6,opt,name=velX,proto3" json:"velX,omitempty"`
|
||||
VelY int32 `protobuf:"varint,7,opt,name=velY,proto3" json:"velY,omitempty"` // "velX" and "velY" is used to record the accumulated effect by accelerations (including gravity)
|
||||
VelY int32 `protobuf:"varint,7,opt,name=velY,proto3" json:"velY,omitempty"` // "velX" and "velY" is used to record the accumulated effect by inertia and accelerations (including gravity)
|
||||
Speed int32 `protobuf:"varint,8,opt,name=speed,proto3" json:"speed,omitempty"` // this is the instantaneous scalar attribute of a character, different from but will be accounted in "velX" and "velY"
|
||||
BattleState int32 `protobuf:"varint,9,opt,name=battleState,proto3" json:"battleState,omitempty"`
|
||||
JoinIndex int32 `protobuf:"varint,10,opt,name=joinIndex,proto3" json:"joinIndex,omitempty"`
|
||||
@@ -54,6 +54,7 @@ type PlayerDownsync struct {
|
||||
OnWall bool `protobuf:"varint,26,opt,name=onWall,proto3" json:"onWall,omitempty"` // like "inAir", it’s by design a standalone field only inferred by the collision result of "applyInputFrameDownsyncDynamicsOnSingleRenderFrame" instead of "characterState", because we need check the transition for "characterState" from this field, i.e. "onWall (prev -> curr)"
|
||||
OnWallNormX int32 `protobuf:"varint,27,opt,name=onWallNormX,proto3" json:"onWallNormX,omitempty"`
|
||||
OnWallNormY int32 `protobuf:"varint,28,opt,name=onWallNormY,proto3" json:"onWallNormY,omitempty"`
|
||||
CapturedByInertia bool `protobuf:"varint,29,opt,name=capturedByInertia,proto3" json:"capturedByInertia,omitempty"` // like "inAir", it’s by design a standalone field only inferred by the calc result of "applyInputFrameDownsyncDynamicsOnSingleRenderFrame" instead of "characterState"
|
||||
Name string `protobuf:"bytes,997,opt,name=name,proto3" json:"name,omitempty"`
|
||||
DisplayName string `protobuf:"bytes,998,opt,name=displayName,proto3" json:"displayName,omitempty"`
|
||||
Avatar string `protobuf:"bytes,999,opt,name=avatar,proto3" json:"avatar,omitempty"`
|
||||
@@ -287,6 +288,13 @@ func (x *PlayerDownsync) GetOnWallNormY() int32 {
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *PlayerDownsync) GetCapturedByInertia() bool {
|
||||
if x != nil {
|
||||
return x.CapturedByInertia
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *PlayerDownsync) GetName() string {
|
||||
if x != nil {
|
||||
return x.Name
|
||||
@@ -1616,7 +1624,7 @@ var file_room_downsync_frame_proto_rawDesc = []byte{
|
||||
0x0a, 0x19, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x5f,
|
||||
0x66, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x73, 0x1a, 0x0e, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x22, 0xc5, 0x07, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f,
|
||||
0x6f, 0x74, 0x6f, 0x22, 0xf3, 0x07, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f,
|
||||
0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
|
||||
0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61,
|
||||
0x6c, 0x47, 0x72, 0x69, 0x64, 0x58, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x76, 0x69,
|
||||
@@ -1671,294 +1679,297 @@ var file_room_downsync_frame_proto_rawDesc = []byte{
|
||||
0x4e, 0x6f, 0x72, 0x6d, 0x58, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6f, 0x6e, 0x57,
|
||||
0x61, 0x6c, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x6e, 0x57, 0x61,
|
||||
0x6c, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x59, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6f,
|
||||
0x6e, 0x57, 0x61, 0x6c, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x59, 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61,
|
||||
0x6d, 0x65, 0x18, 0xe5, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
|
||||
0x21, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0xe6,
|
||||
0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61,
|
||||
0x6d, 0x65, 0x12, 0x17, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0xe7, 0x07, 0x20,
|
||||
0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x6f, 0x0a, 0x11, 0x49,
|
||||
0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64,
|
||||
0x12, 0x0e, 0x0a, 0x02, 0x64, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x78,
|
||||
0x12, 0x0e, 0x0a, 0x02, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x79,
|
||||
0x12, 0x1c, 0x0a, 0x09, 0x62, 0x74, 0x6e, 0x41, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20,
|
||||
0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x74, 0x6e, 0x41, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c,
|
||||
0x0a, 0x09, 0x62, 0x74, 0x6e, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28,
|
||||
0x05, 0x52, 0x09, 0x62, 0x74, 0x6e, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x6e, 0x0a, 0x10,
|
||||
0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63,
|
||||
0x6e, 0x57, 0x61, 0x6c, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x59, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x61,
|
||||
0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x42, 0x79, 0x49, 0x6e, 0x65, 0x72, 0x74, 0x69, 0x61, 0x18,
|
||||
0x1d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x42,
|
||||
0x79, 0x49, 0x6e, 0x65, 0x72, 0x74, 0x69, 0x61, 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
|
||||
0x18, 0xe5, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a,
|
||||
0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0xe6, 0x07, 0x20,
|
||||
0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65,
|
||||
0x12, 0x17, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0xe7, 0x07, 0x20, 0x01, 0x28,
|
||||
0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x6f, 0x0a, 0x11, 0x49, 0x6e, 0x70,
|
||||
0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x12, 0x0e,
|
||||
0x0a, 0x02, 0x64, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x78, 0x12, 0x0e,
|
||||
0x0a, 0x02, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x79, 0x12, 0x1c,
|
||||
0x0a, 0x09, 0x62, 0x74, 0x6e, 0x41, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
|
||||
0x05, 0x52, 0x09, 0x62, 0x74, 0x6e, 0x41, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09,
|
||||
0x62, 0x74, 0x6e, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||
0x09, 0x62, 0x74, 0x6e, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x6e, 0x0a, 0x10, 0x49, 0x6e,
|
||||
0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x22,
|
||||
0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
||||
0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20,
|
||||
0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09,
|
||||
0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||
0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x7c, 0x0a, 0x12, 0x49, 0x6e,
|
||||
0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63,
|
||||
0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64,
|
||||
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61,
|
||||
0x6d, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x18,
|
||||
0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x12, 0x1c,
|
||||
0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28,
|
||||
0x05, 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x7c, 0x0a, 0x12,
|
||||
0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79,
|
||||
0x6e, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
||||
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46,
|
||||
0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4c,
|
||||
0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74,
|
||||
0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65,
|
||||
0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x6f, 0x6e,
|
||||
0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x0f, 0x48, 0x65,
|
||||
0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x28, 0x0a,
|
||||
0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
|
||||
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x69,
|
||||
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xb8, 0x02, 0x0a, 0x05, 0x57, 0x73, 0x52, 0x65,
|
||||
0x71, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
|
||||
0x52, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65,
|
||||
0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65,
|
||||
0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
|
||||
0x52, 0x03, 0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64,
|
||||
0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e,
|
||||
0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x61,
|
||||
0x6d, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x6b, 0x69,
|
||||
0x6e, 0x67, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x63, 0x6b,
|
||||
0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18,
|
||||
0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70,
|
||||
0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x4e, 0x0a, 0x15, 0x69, 0x6e, 0x70,
|
||||
0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74,
|
||||
0x63, 0x68, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79,
|
||||
0x6e, 0x63, 0x52, 0x15, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70,
|
||||
0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x27, 0x0a, 0x02, 0x68, 0x62, 0x18,
|
||||
0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x48,
|
||||
0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x02,
|
||||
0x68, 0x62, 0x22, 0xaf, 0x02, 0x0a, 0x06, 0x57, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a,
|
||||
0x03, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x65, 0x74, 0x12,
|
||||
0x20, 0x0a, 0x0b, 0x65, 0x63, 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x02,
|
||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x65, 0x63, 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49,
|
||||
0x6d, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4c, 0x69, 0x73,
|
||||
0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4c, 0x69,
|
||||
0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c,
|
||||
0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69,
|
||||
0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x0f, 0x48, 0x65, 0x61, 0x72,
|
||||
0x74, 0x62, 0x65, 0x61, 0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x28, 0x0a, 0x0f, 0x63,
|
||||
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65,
|
||||
0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xb8, 0x02, 0x0a, 0x05, 0x57, 0x73, 0x52, 0x65, 0x71, 0x12,
|
||||
0x14, 0x0a, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
|
||||
0x6d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49,
|
||||
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49,
|
||||
0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
|
||||
0x61, 0x63, 0x74, 0x12, 0x2b, 0x0a, 0x03, 0x72, 0x64, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
|
||||
0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f,
|
||||
0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x03, 0x72, 0x64, 0x66,
|
||||
0x12, 0x54, 0x0a, 0x17, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f,
|
||||
0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x03, 0x28,
|
||||
0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74,
|
||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x17, 0x69,
|
||||
0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e,
|
||||
0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x36, 0x0a, 0x08, 0x62, 0x63, 0x69, 0x46, 0x72, 0x61,
|
||||
0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x73, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x65, 0x72,
|
||||
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x62, 0x63, 0x69, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x24,
|
||||
0x0a, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18,
|
||||
0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49,
|
||||
0x6e, 0x64, 0x65, 0x78, 0x22, 0x9a, 0x02, 0x0a, 0x14, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x42,
|
||||
0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2a, 0x0a,
|
||||
0x10, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49,
|
||||
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6e, 0x64,
|
||||
0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x6e, 0x63,
|
||||
0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01,
|
||||
0x28, 0x04, 0x52, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d,
|
||||
0x61, 0x73, 0x6b, 0x12, 0x58, 0x0a, 0x19, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70,
|
||||
0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73,
|
||||
0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
|
||||
0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79,
|
||||
0x6e, 0x63, 0x52, 0x19, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46,
|
||||
0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73, 0x12, 0x2c, 0x0a,
|
||||
0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79,
|
||||
0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64,
|
||||
0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x70,
|
||||
0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01,
|
||||
0x28, 0x05, 0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65,
|
||||
0x78, 0x22, 0x89, 0x07, 0x0a, 0x0b, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65,
|
||||
0x74, 0x12, 0x38, 0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52,
|
||||
0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
|
||||
0x28, 0x05, 0x52, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65,
|
||||
0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6f,
|
||||
0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72,
|
||||
0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61,
|
||||
0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
|
||||
0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12,
|
||||
0x2e, 0x0a, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74,
|
||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e,
|
||||
0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12,
|
||||
0x2e, 0x0a, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64,
|
||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e,
|
||||
0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12,
|
||||
0x22, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18,
|
||||
0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61,
|
||||
0x6d, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72,
|
||||
0x61, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x53,
|
||||
0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x6c, 0x6f,
|
||||
0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01,
|
||||
0x28, 0x05, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61,
|
||||
0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56,
|
||||
0x65, 0x6c, 0x58, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62,
|
||||
0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62,
|
||||
0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70,
|
||||
0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x64,
|
||||
0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x6d,
|
||||
0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56,
|
||||
0x65, 0x6c, 0x58, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c,
|
||||
0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c,
|
||||
0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73,
|
||||
0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x24, 0x0a, 0x0d, 0x68,
|
||||
0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0e, 0x20, 0x01,
|
||||
0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74,
|
||||
0x58, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65,
|
||||
0x74, 0x59, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78,
|
||||
0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f,
|
||||
0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69,
|
||||
0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74,
|
||||
0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
|
||||
0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x62,
|
||||
0x6c, 0x6f, 0x77, 0x55, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x6c, 0x6f,
|
||||
0x77, 0x55, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x13, 0x20,
|
||||
0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62,
|
||||
0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01,
|
||||
0x28, 0x05, 0x52, 0x0d, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49,
|
||||
0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x18, 0x15,
|
||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x12,
|
||||
0x28, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x61, 0x6d,
|
||||
0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73,
|
||||
0x69, 0x6f, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x53,
|
||||
0x74, 0x61, 0x74, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x6c, 0x53, 0x74,
|
||||
0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x42,
|
||||
0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x72,
|
||||
0x61, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x42, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xc1, 0x08,
|
||||
0x0a, 0x0e, 0x46, 0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74,
|
||||
0x12, 0x38, 0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65,
|
||||
0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||
0x05, 0x52, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e,
|
||||
0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x66,
|
||||
0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18,
|
||||
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a,
|
||||
0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72,
|
||||
0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||
0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2e,
|
||||
0x0a, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46,
|
||||
0x72, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63,
|
||||
0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x2e,
|
||||
0x0a, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46,
|
||||
0x72, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63,
|
||||
0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x22,
|
||||
0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06,
|
||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d,
|
||||
0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61,
|
||||
0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74,
|
||||
0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63,
|
||||
0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28,
|
||||
0x05, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d,
|
||||
0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65,
|
||||
0x6c, 0x58, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61,
|
||||
0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61,
|
||||
0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75,
|
||||
0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61,
|
||||
0x6d, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x6d, 0x61,
|
||||
0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65,
|
||||
0x6c, 0x58, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f,
|
||||
0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f,
|
||||
0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65,
|
||||
0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69,
|
||||
0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0e, 0x20, 0x01, 0x28,
|
||||
0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58,
|
||||
0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74,
|
||||
0x59, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f,
|
||||
0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78,
|
||||
0x53, 0x69, 0x7a, 0x65, 0x58, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74,
|
||||
0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62,
|
||||
0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68,
|
||||
0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c,
|
||||
0x6f, 0x77, 0x55, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x77,
|
||||
0x55, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x13, 0x20, 0x01,
|
||||
0x28, 0x05, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x75,
|
||||
0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28,
|
||||
0x05, 0x52, 0x0d, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64,
|
||||
0x12, 0x1c, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x18, 0x15, 0x20,
|
||||
0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x12, 0x28,
|
||||
0x0a, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
||||
0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69,
|
||||
0x6f, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x53, 0x74,
|
||||
0x61, 0x74, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x6c, 0x53, 0x74, 0x61,
|
||||
0x74, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x42, 0x6c,
|
||||
0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x72, 0x61,
|
||||
0x6d, 0x65, 0x73, 0x49, 0x6e, 0x42, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0c,
|
||||
0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64, 0x58, 0x18, 0xe7, 0x07, 0x20,
|
||||
0x01, 0x28, 0x05, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64,
|
||||
0x58, 0x12, 0x23, 0x0a, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64,
|
||||
0x59, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61,
|
||||
0x6c, 0x47, 0x72, 0x69, 0x64, 0x59, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x69, 0x72, 0x58, 0x18, 0xe9,
|
||||
0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x69, 0x72, 0x58, 0x12, 0x13, 0x0a, 0x04, 0x64,
|
||||
0x69, 0x72, 0x59, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x69, 0x72, 0x59,
|
||||
0x12, 0x13, 0x0a, 0x04, 0x76, 0x65, 0x6c, 0x58, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||
0x04, 0x76, 0x65, 0x6c, 0x58, 0x12, 0x13, 0x0a, 0x04, 0x76, 0x65, 0x6c, 0x59, 0x18, 0xec, 0x07,
|
||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x76, 0x65, 0x6c, 0x59, 0x12, 0x15, 0x0a, 0x05, 0x73, 0x70,
|
||||
0x65, 0x65, 0x64, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65,
|
||||
0x64, 0x22, 0xc9, 0x05, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c,
|
||||
0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x67,
|
||||
0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61,
|
||||
0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76,
|
||||
0x61, 0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e,
|
||||
0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x34,
|
||||
0x0a, 0x15, 0x77, 0x69, 0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63,
|
||||
0x74, 0x69, 0x76, 0x65, 0x46, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x77,
|
||||
0x69, 0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76,
|
||||
0x65, 0x46, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x6f,
|
||||
0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64,
|
||||
0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65,
|
||||
0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x05, 0x20,
|
||||
0x01, 0x28, 0x03, 0x52, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x46, 0x0a, 0x1e, 0x69, 0x6e, 0x70, 0x75,
|
||||
0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61,
|
||||
0x79, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
|
||||
0x52, 0x1e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79,
|
||||
0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65,
|
||||
0x12, 0x48, 0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65,
|
||||
0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x55, 0x70, 0x64,
|
||||
0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68,
|
||||
0x61, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
||||
0x73, 0x50, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x19, 0x72, 0x6f,
|
||||
0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44,
|
||||
0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x72,
|
||||
0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64,
|
||||
0x44, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x72, 0x6f, 0x6c, 0x6c,
|
||||
0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e,
|
||||
0x61, 0x6e, 0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x72, 0x6f, 0x6c, 0x6c,
|
||||
0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e,
|
||||
0x61, 0x6e, 0x6f, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61,
|
||||
0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72,
|
||||
0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22,
|
||||
0x0a, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0b,
|
||||
0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65,
|
||||
0x74, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65,
|
||||
0x74, 0x59, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f,
|
||||
0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73,
|
||||
0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05,
|
||||
0x52, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74,
|
||||
0x65, 0x70, 0x12, 0x39, 0x0a, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c,
|
||||
0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x80, 0x08,
|
||||
0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c,
|
||||
0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xc2, 0x03,
|
||||
0x0a, 0x11, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72,
|
||||
0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||
0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72,
|
||||
0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
|
||||
0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52,
|
||||
0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x63,
|
||||
0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x03, 0x20,
|
||||
0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61,
|
||||
0x6e, 0x6f, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c,
|
||||
0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x73, 0x2e, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x0c,
|
||||
0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x0f,
|
||||
0x66, 0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x18,
|
||||
0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x46,
|
||||
0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x0f, 0x66,
|
||||
0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x37,
|
||||
0x0a, 0x16, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69,
|
||||
0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x80, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52,
|
||||
0x16, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72,
|
||||
0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x2d, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c,
|
||||
0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x81, 0x08, 0x20,
|
||||
0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65,
|
||||
0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x25, 0x0a, 0x0d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65,
|
||||
0x73, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x82, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d,
|
||||
0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x33, 0x0a,
|
||||
0x14, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x43, 0x6f,
|
||||
0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x83, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x62, 0x75,
|
||||
0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74,
|
||||
0x65, 0x72, 0x42, 0x13, 0x5a, 0x11, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x73, 0x72, 0x76,
|
||||
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78,
|
||||
0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65,
|
||||
0x78, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
||||
0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67,
|
||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x63, 0x6b, 0x69, 0x6e,
|
||||
0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20,
|
||||
0x01, 0x28, 0x05, 0x52, 0x12, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74,
|
||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x4e, 0x0a, 0x15, 0x69, 0x6e, 0x70, 0x75, 0x74,
|
||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68,
|
||||
0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
|
||||
0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63,
|
||||
0x52, 0x15, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79,
|
||||
0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x27, 0x0a, 0x02, 0x68, 0x62, 0x18, 0x08, 0x20,
|
||||
0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x48, 0x65, 0x61,
|
||||
0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x02, 0x68, 0x62,
|
||||
0x22, 0xaf, 0x02, 0x0a, 0x06, 0x57, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x72,
|
||||
0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x65, 0x74, 0x12, 0x20, 0x0a,
|
||||
0x0b, 0x65, 0x63, 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
|
||||
0x28, 0x05, 0x52, 0x0b, 0x65, 0x63, 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x12,
|
||||
0x10, 0x0a, 0x03, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x61, 0x63,
|
||||
0x74, 0x12, 0x2b, 0x0a, 0x03, 0x72, 0x64, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
|
||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e,
|
||||
0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x03, 0x72, 0x64, 0x66, 0x12, 0x54,
|
||||
0x0a, 0x17, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e,
|
||||
0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
|
||||
0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72,
|
||||
0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x17, 0x69, 0x6e, 0x70,
|
||||
0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x42,
|
||||
0x61, 0x74, 0x63, 0x68, 0x12, 0x36, 0x0a, 0x08, 0x62, 0x63, 0x69, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
||||
0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
|
||||
0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e,
|
||||
0x66, 0x6f, 0x52, 0x08, 0x62, 0x63, 0x69, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d,
|
||||
0x70, 0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x07, 0x20,
|
||||
0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64,
|
||||
0x65, 0x78, 0x22, 0x9a, 0x02, 0x0a, 0x14, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x42, 0x75, 0x66,
|
||||
0x66, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x72,
|
||||
0x65, 0x66, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18,
|
||||
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72,
|
||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6e,
|
||||
0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
|
||||
0x52, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73,
|
||||
0x6b, 0x12, 0x58, 0x0a, 0x19, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74,
|
||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73, 0x18, 0x03,
|
||||
0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e,
|
||||
0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63,
|
||||
0x52, 0x19, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61,
|
||||
0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x73,
|
||||
0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63,
|
||||
0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f,
|
||||
0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x65, 0x65,
|
||||
0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
|
||||
0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22,
|
||||
0x89, 0x07, 0x0a, 0x0b, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x12,
|
||||
0x38, 0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e,
|
||||
0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
|
||||
0x52, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64,
|
||||
0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x66, 0x66,
|
||||
0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02,
|
||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f,
|
||||
0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74,
|
||||
0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d,
|
||||
0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a,
|
||||
0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72,
|
||||
0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65,
|
||||
0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a,
|
||||
0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72,
|
||||
0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65,
|
||||
0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a,
|
||||
0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20,
|
||||
0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
||||
0x73, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d,
|
||||
0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75,
|
||||
0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
|
||||
0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
|
||||
0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
||||
0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c,
|
||||
0x58, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63,
|
||||
0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63,
|
||||
0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73,
|
||||
0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x6d,
|
||||
0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67,
|
||||
0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c,
|
||||
0x58, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63,
|
||||
0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63,
|
||||
0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c,
|
||||
0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74,
|
||||
0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05,
|
||||
0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x12,
|
||||
0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59,
|
||||
0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66,
|
||||
0x66, 0x73, 0x65, 0x74, 0x59, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53,
|
||||
0x69, 0x7a, 0x65, 0x58, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62,
|
||||
0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f,
|
||||
0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69,
|
||||
0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f,
|
||||
0x77, 0x55, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x77, 0x55,
|
||||
0x70, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28,
|
||||
0x05, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x75, 0x6c,
|
||||
0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05,
|
||||
0x52, 0x0d, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x12,
|
||||
0x1c, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x18, 0x15, 0x20, 0x01,
|
||||
0x28, 0x05, 0x52, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x12, 0x28, 0x0a,
|
||||
0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
|
||||
0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f,
|
||||
0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x53, 0x74, 0x61,
|
||||
0x74, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x6c, 0x53, 0x74, 0x61, 0x74,
|
||||
0x65, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x42, 0x6c, 0x53,
|
||||
0x74, 0x61, 0x74, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x72, 0x61, 0x6d,
|
||||
0x65, 0x73, 0x49, 0x6e, 0x42, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xc1, 0x08, 0x0a, 0x0e,
|
||||
0x46, 0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x38,
|
||||
0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64,
|
||||
0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||
0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64, 0x65,
|
||||
0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x66, 0x66, 0x65,
|
||||
0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20,
|
||||
0x01, 0x28, 0x05, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69,
|
||||
0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75,
|
||||
0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73,
|
||||
0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12,
|
||||
0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61,
|
||||
0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c,
|
||||
0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x12,
|
||||
0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61,
|
||||
0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c,
|
||||
0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c,
|
||||
0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01,
|
||||
0x28, 0x05, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
|
||||
0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
||||
0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e,
|
||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53,
|
||||
0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||
0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
|
||||
0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58,
|
||||
0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b,
|
||||
0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b,
|
||||
0x56, 0x65, 0x6c, 0x59, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68,
|
||||
0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x6d, 0x61,
|
||||
0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65,
|
||||
0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58,
|
||||
0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b,
|
||||
0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b,
|
||||
0x56, 0x65, 0x6c, 0x59, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66,
|
||||
0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62,
|
||||
0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||
0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x12, 0x24,
|
||||
0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x18,
|
||||
0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66,
|
||||
0x73, 0x65, 0x74, 0x59, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69,
|
||||
0x7a, 0x65, 0x58, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f,
|
||||
0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78,
|
||||
0x53, 0x69, 0x7a, 0x65, 0x59, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74,
|
||||
0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x77,
|
||||
0x55, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x77, 0x55, 0x70,
|
||||
0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05,
|
||||
0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x75, 0x6c, 0x6c,
|
||||
0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||
0x0d, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x1c,
|
||||
0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28,
|
||||
0x05, 0x52, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f,
|
||||
0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18,
|
||||
0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e,
|
||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x53, 0x74, 0x61, 0x74,
|
||||
0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65,
|
||||
0x12, 0x28, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x42, 0x6c, 0x53, 0x74,
|
||||
0x61, 0x74, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65,
|
||||
0x73, 0x49, 0x6e, 0x42, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x76, 0x69,
|
||||
0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64, 0x58, 0x18, 0xe7, 0x07, 0x20, 0x01, 0x28,
|
||||
0x05, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64, 0x58, 0x12,
|
||||
0x23, 0x0a, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64, 0x59, 0x18,
|
||||
0xe8, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47,
|
||||
0x72, 0x69, 0x64, 0x59, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x69, 0x72, 0x58, 0x18, 0xe9, 0x07, 0x20,
|
||||
0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x69, 0x72, 0x58, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x69, 0x72,
|
||||
0x59, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x69, 0x72, 0x59, 0x12, 0x13,
|
||||
0x0a, 0x04, 0x76, 0x65, 0x6c, 0x58, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x76,
|
||||
0x65, 0x6c, 0x58, 0x12, 0x13, 0x0a, 0x04, 0x76, 0x65, 0x6c, 0x59, 0x18, 0xec, 0x07, 0x20, 0x01,
|
||||
0x28, 0x05, 0x52, 0x04, 0x76, 0x65, 0x6c, 0x59, 0x12, 0x15, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65,
|
||||
0x64, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x22,
|
||||
0xc9, 0x05, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64,
|
||||
0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e,
|
||||
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65,
|
||||
0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
|
||||
0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, 0x6e,
|
||||
0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x0a, 0x15,
|
||||
0x77, 0x69, 0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69,
|
||||
0x76, 0x65, 0x46, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x77, 0x69, 0x6c,
|
||||
0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46,
|
||||
0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x49,
|
||||
0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f,
|
||||
0x6f, 0x6d, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75,
|
||||
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,
|
||||
0x03, 0x52, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x46, 0x0a, 0x1e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46,
|
||||
0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54,
|
||||
0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1e,
|
||||
0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63,
|
||||
0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x48,
|
||||
0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64,
|
||||
0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74,
|
||||
0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73,
|
||||
0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50,
|
||||
0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x19, 0x72, 0x6f, 0x6c, 0x6c,
|
||||
0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4d,
|
||||
0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x72, 0x6f, 0x6c,
|
||||
0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74,
|
||||
0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61,
|
||||
0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e, 0x61, 0x6e,
|
||||
0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61,
|
||||
0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e, 0x61, 0x6e,
|
||||
0x6f, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68,
|
||||
0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x6e,
|
||||
0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0c,
|
||||
0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0b, 0x20, 0x01,
|
||||
0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58,
|
||||
0x12, 0x22, 0x0a, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59,
|
||||
0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66,
|
||||
0x73, 0x65, 0x74, 0x59, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f,
|
||||
0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10,
|
||||
0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70,
|
||||
0x12, 0x39, 0x0a, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67,
|
||||
0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x80, 0x08, 0x20, 0x01,
|
||||
0x28, 0x08, 0x52, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67,
|
||||
0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xc2, 0x03, 0x0a, 0x11,
|
||||
0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d,
|
||||
0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69,
|
||||
0x64, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x18,
|
||||
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x50,
|
||||
0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x0a, 0x70,
|
||||
0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x75,
|
||||
0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
|
||||
0x03, 0x52, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f,
|
||||
0x73, 0x12, 0x37, 0x0a, 0x0c, 0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74,
|
||||
0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
|
||||
0x2e, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x0c, 0x6d, 0x65,
|
||||
0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x0f, 0x66, 0x69,
|
||||
0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20,
|
||||
0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x46, 0x69, 0x72,
|
||||
0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x0f, 0x66, 0x69, 0x72,
|
||||
0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x16,
|
||||
0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d,
|
||||
0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x80, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x62,
|
||||
0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65,
|
||||
0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x2d, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46,
|
||||
0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x81, 0x08, 0x20, 0x01, 0x28,
|
||||
0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65,
|
||||
0x73, 0x79, 0x6e, 0x63, 0x12, 0x25, 0x0a, 0x0d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49,
|
||||
0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x82, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x70,
|
||||
0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x14, 0x62,
|
||||
0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e,
|
||||
0x74, 0x65, 0x72, 0x18, 0x83, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x62, 0x75, 0x6c, 0x6c,
|
||||
0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72,
|
||||
0x42, 0x13, 0x5a, 0x11, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x73, 0x72, 0x76, 0x2f, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
|
BIN
charts/UDPEssentials.jpg
Normal file
After Width: | Height: | Size: 417 KiB |
BIN
charts/internet_dash_turnaround_cut_spedup.gif
Normal file
After Width: | Height: | Size: 6.7 MiB |
Before Width: | Height: | Size: 11 MiB |
BIN
charts/networkstats.png
Normal file
After Width: | Height: | Size: 2.2 MiB |
@@ -1,66 +0,0 @@
|
||||
function NetworkDoctor(serverFps, clientUpsyncFps) {
|
||||
this.serverFps = serverFps;
|
||||
this.clientUpsyncFps = clientUpsyncFps;
|
||||
this.millisPerServerFrame = parseInt(1000 / this.serverFps);
|
||||
this._tooLongSinceLastFrameDiffReceivedThreshold = (this.millisPerServerFrame << 6);
|
||||
|
||||
this.setupFps = function(fps) {
|
||||
this.serverFps = this.clientUpsyncFps = fps;
|
||||
this.millisPerServerFrame = parseInt(1000 / this.serverFps);
|
||||
this._tooLongSinceLastFrameDiffReceivedThreshold = (this.millisPerServerFrame << 6);
|
||||
}
|
||||
|
||||
this._lastFrameDiffRecvTime = null;
|
||||
this._tooLongSinceLastFrameDiffReceived = function() {
|
||||
if (undefined === this._lastFrameDiffRecvTime || null === this._lastFrameDiffRecvTime) return false;
|
||||
return (this._tooLongSinceLastFrameDiffReceivedThreshold <= (Date.now() - this._lastFrameDiffRecvTime));
|
||||
};
|
||||
|
||||
this._consecutiveALittleLongFrameDiffReceivedIntervalCount = 0;
|
||||
this._consecutiveALittleLongFrameDiffReceivedIntervalCountThreshold = 120;
|
||||
|
||||
this.onNewFrameDiffReceived = function(frameDiff) {
|
||||
var now = Date.now();
|
||||
if (undefined !== this._lastFrameDiffRecvTime && null !== this._lastFrameDiffRecvTime) {
|
||||
var intervalFromLastFrameDiff = (now - this._lastFrameDiffRecvTime);
|
||||
if ((this.millisPerServerFrame << 5) < intervalFromLastFrameDiff) {
|
||||
++this._consecutiveALittleLongFrameDiffReceivedIntervalCount;
|
||||
console.log('Medium delay, intervalFromLastFrameDiff is', intervalFromLastFrameDiff);
|
||||
} else {
|
||||
this._consecutiveALittleLongFrameDiffReceivedIntervalCount = 0;
|
||||
}
|
||||
}
|
||||
this._lastFrameDiffRecvTime = now;
|
||||
};
|
||||
|
||||
this._networkComplaintPrefix = "\nNetwork is not good >_<\n";
|
||||
|
||||
this.generateNetworkComplaint = function(excludeTypeConstantALittleLongFrameDiffReceivedInterval, excludeTypeTooLongSinceLastFrameDiffReceived) {
|
||||
if (this.hasBattleStopped) return null;
|
||||
var shouldComplain = false;
|
||||
var ret = this._networkComplaintPrefix;
|
||||
if (true != excludeTypeConstantALittleLongFrameDiffReceivedInterval && this._consecutiveALittleLongFrameDiffReceivedIntervalCountThreshold <= this._consecutiveALittleLongFrameDiffReceivedIntervalCount) {
|
||||
this._consecutiveALittleLongFrameDiffReceivedIntervalCount = 0;
|
||||
ret += "\nConstantly having a little long recv interval.\n";
|
||||
shouldComplain = true;
|
||||
}
|
||||
if (true != excludeTypeTooLongSinceLastFrameDiffReceived && this._tooLongSinceLastFrameDiffReceived()) {
|
||||
ret += "\nToo long since last received frameDiff.\n";
|
||||
shouldComplain = true;
|
||||
}
|
||||
return (shouldComplain ? ret : null);
|
||||
};
|
||||
|
||||
this.hasBattleStopped = false;
|
||||
this.onBattleStopped = function() {
|
||||
this.hasBattleStopped = true;
|
||||
};
|
||||
|
||||
this.isClientSessionConnected = function() {
|
||||
if (!window.game) return false;
|
||||
if (!window.game.clientSession) return false;
|
||||
return window.game.clientSession.connected;
|
||||
};
|
||||
}
|
||||
|
||||
window.NetworkDoctor = NetworkDoctor;
|
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"ver": "1.0.1",
|
||||
"uuid": "5a2059cd-f691-4ffa-bdc9-7e1232295450",
|
||||
"subMetas": {}
|
||||
}
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"ver": "1.0.5",
|
||||
"uuid": "d41313ca-b2c3-4436-a05f-7e0eb290b1e6",
|
||||
"uuid": "40edd08e-316c-44b8-a50f-bd173554c554",
|
||||
"isPlugin": true,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
|
@@ -15,7 +15,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{112,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{806,750},{112,128}}</string>
|
||||
<string>{{384,989},{112,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -30,7 +30,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{112,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{0,1076},{112,128}}</string>
|
||||
<string>{{256,990},{112,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -60,7 +60,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{528,515},{80,128}}</string>
|
||||
<string>{{940,0},{80,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -75,7 +75,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{934,640},{80,128}}</string>
|
||||
<string>{{940,128},{80,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -90,7 +90,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{112,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{128,1076},{112,128}}</string>
|
||||
<string>{{128,1082},{112,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -105,7 +105,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{112,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{678,862},{112,128}}</string>
|
||||
<string>{{0,1188},{112,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -150,7 +150,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{934,768},{80,128}}</string>
|
||||
<string>{{940,256},{80,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -165,7 +165,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{934,896},{80,128}}</string>
|
||||
<string>{{937,384},{80,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -180,9 +180,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{806,958},{80,128}}</string>
|
||||
<string>{{528,515},{80,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Atk2_0.png</key>
|
||||
<dict>
|
||||
@@ -195,7 +195,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{934,1024},{80,128}}</string>
|
||||
<string>{{936,512},{80,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -225,7 +225,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{128,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{128,964},{128,112}}</string>
|
||||
<string>{{0,1076},{128,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -240,7 +240,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{96,96}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{912,1152},{96,96}}</string>
|
||||
<string>{{688,1357},{96,96}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -255,7 +255,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{96,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{340,1197},{96,112}}</string>
|
||||
<string>{{240,1360},{96,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -270,7 +270,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{96,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{452,1196},{96,112}}</string>
|
||||
<string>{{352,1358},{96,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -285,7 +285,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{96,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{564,1155},{96,112}}</string>
|
||||
<string>{{920,1072},{96,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -300,7 +300,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{96,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{608,1043},{96,112}}</string>
|
||||
<string>{{914,1184},{96,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -330,7 +330,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{128,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{678,750},{128,112}}</string>
|
||||
<string>{{806,631},{128,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -540,7 +540,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{112,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{448,1293},{112,112}}</string>
|
||||
<string>{{802,1149},{112,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -555,9 +555,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{96,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{660,1155},{96,112}}</string>
|
||||
<string>{{800,1261},{96,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Atked1_3.png</key>
|
||||
<dict>
|
||||
@@ -570,7 +570,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{128,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{384,988},{128,112}}</string>
|
||||
<string>{{806,743},{128,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -645,7 +645,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{114,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{0,1188},{114,112}}</string>
|
||||
<string>{{806,1037},{114,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -660,9 +660,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{114,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{114,1188},{114,112}}</string>
|
||||
<string>{{384,1213},{114,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Dashing_3.png</key>
|
||||
<dict>
|
||||
@@ -675,7 +675,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{114,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{0,1300},{114,112}}</string>
|
||||
<string>{{464,1327},{114,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -690,7 +690,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{114,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{112,1300},{114,112}}</string>
|
||||
<string>{{496,1213},{114,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -705,7 +705,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{114,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{0,1300},{114,112}}</string>
|
||||
<string>{{464,1327},{114,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -720,7 +720,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{114,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{224,1300},{114,112}}</string>
|
||||
<string>{{576,1327},{114,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -735,56 +735,11 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{114,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{336,1293},{114,112}}</string>
|
||||
<string>{{688,1043},{114,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>GetUp1_1.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{384,634},{128,118}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>GetUp1_2.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{384,752},{128,118}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>GetUp1_3.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{256,753},{128,118}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>GetUp1_4.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
@@ -799,7 +754,7 @@
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>GetUp1_5.png</key>
|
||||
<key>GetUp1_2.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
@@ -814,6 +769,51 @@
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>GetUp1_3.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{384,753},{128,118}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>GetUp1_4.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{678,631},{128,118}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>GetUp1_5.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{384,871},{128,118}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>GetUp1_6.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
@@ -825,7 +825,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{384,870},{128,118}}</string>
|
||||
<string>{{256,872},{128,118}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -840,7 +840,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{128,118}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{256,871},{128,118}}</string>
|
||||
<string>{{128,964},{128,118}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -855,7 +855,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{940,0},{70,128}}</string>
|
||||
<string>{{608,531},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -870,7 +870,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{940,128},{70,128}}</string>
|
||||
<string>{{608,659},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -885,7 +885,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{940,256},{70,128}}</string>
|
||||
<string>{{608,787},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -900,7 +900,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{937,384},{70,128}}</string>
|
||||
<string>{{608,915},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -915,9 +915,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{936,512},{70,128}}</string>
|
||||
<string>{{128,1290},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Idle1_14.png</key>
|
||||
<dict>
|
||||
@@ -930,9 +930,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{608,531},{70,128}}</string>
|
||||
<string>{{0,1300},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Idle1_15.png</key>
|
||||
<dict>
|
||||
@@ -945,9 +945,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{608,659},{70,128}}</string>
|
||||
<string>{{0,1370},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Idle1_2.png</key>
|
||||
<dict>
|
||||
@@ -960,9 +960,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{608,659},{70,128}}</string>
|
||||
<string>{{0,1370},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Idle1_3.png</key>
|
||||
<dict>
|
||||
@@ -975,9 +975,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{608,531},{70,128}}</string>
|
||||
<string>{{0,1300},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Idle1_4.png</key>
|
||||
<dict>
|
||||
@@ -990,71 +990,11 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{936,512},{70,128}}</string>
|
||||
<string>{{128,1290},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Idle1_5.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{937,384},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Idle1_6.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{940,256},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Idle1_7.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{940,128},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Idle1_8.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{608,787},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Idle1_9.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
@@ -1069,6 +1009,66 @@
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Idle1_6.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{608,787},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Idle1_7.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{608,659},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Idle1_8.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{806,967},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Idle1_9.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{70,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{678,973},{70,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>InAirAtk1_0.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
@@ -1080,7 +1080,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{112,96}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{228,1197},{112,96}}</string>
|
||||
<string>{{128,1360},{112,96}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1125,7 +1125,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{128,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{256,989},{128,112}}</string>
|
||||
<string>{{678,749},{128,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1140,7 +1140,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{96,96}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{672,1363},{96,96}}</string>
|
||||
<string>{{784,1357},{96,96}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1155,7 +1155,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,96}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{672,1267},{80,96}}</string>
|
||||
<string>{{934,976},{80,96}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1170,7 +1170,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{112,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{560,1292},{112,112}}</string>
|
||||
<string>{{688,1155},{112,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1185,7 +1185,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{128,96}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{384,1100},{128,96}}</string>
|
||||
<string>{{256,1102},{128,96}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1200,9 +1200,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{800,1038},{80,112}}</string>
|
||||
<string>{{934,640},{80,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>InAirIdle1_1.png</key>
|
||||
<dict>
|
||||
@@ -1215,9 +1215,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{800,1118},{80,112}}</string>
|
||||
<string>{{934,752},{80,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>InAirIdle1_2.png</key>
|
||||
<dict>
|
||||
@@ -1230,7 +1230,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{64,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{678,974},{64,128}}</string>
|
||||
<string>{{256,1294},{64,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1245,9 +1245,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{756,1198},{80,112}}</string>
|
||||
<string>{{934,864},{80,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>InAirIdle1_4.png</key>
|
||||
<dict>
|
||||
@@ -1260,9 +1260,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,96}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{752,1278},{80,96}}</string>
|
||||
<string>{{608,1043},{80,96}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>InAirIdle1_5.png</key>
|
||||
<dict>
|
||||
@@ -1275,7 +1275,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,96}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{768,1358},{80,96}}</string>
|
||||
<string>{{608,1139},{80,96}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1290,7 +1290,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,96}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{868,1248},{80,96}}</string>
|
||||
<string>{{688,1267},{80,96}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1305,9 +1305,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{96,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{704,1038},{96,112}}</string>
|
||||
<string>{{912,1296},{96,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>InAirIdle1_8.png</key>
|
||||
<dict>
|
||||
@@ -1320,7 +1320,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{96,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{256,1101},{96,128}}</string>
|
||||
<string>{{128,1194},{96,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1335,7 +1335,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{96,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{806,862},{96,128}}</string>
|
||||
<string>{{256,1198},{96,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1414,6 +1414,51 @@
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>TurnAround1_1.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{112,128}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{112,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{806,855},{112,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>TurnAround1_2.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{112,128}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{112,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{678,861},{112,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>TurnAround1_3.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{112,128}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{112,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{384,1101},{112,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Walking_1.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
@@ -1455,7 +1500,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{119,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{680,512},{119,128}}</string>
|
||||
<string>{{272,515},{119,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1470,7 +1515,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{119,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{808,512},{119,128}}</string>
|
||||
<string>{{128,608},{119,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1485,7 +1530,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{119,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{272,515},{119,128}}</string>
|
||||
<string>{{0,720},{119,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1500,7 +1545,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{119,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{128,608},{119,128}}</string>
|
||||
<string>{{400,515},{119,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1515,7 +1560,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{119,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{0,720},{119,128}}</string>
|
||||
<string>{{256,634},{119,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1530,7 +1575,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{119,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{400,515},{119,128}}</string>
|
||||
<string>{{128,727},{119,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1545,7 +1590,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{119,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{678,631},{119,128}}</string>
|
||||
<string>{{0,839},{119,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1560,7 +1605,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{119,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{806,631},{119,128}}</string>
|
||||
<string>{{384,634},{119,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1575,7 +1620,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{119,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{256,634},{119,128}}</string>
|
||||
<string>{{680,512},{119,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1590,7 +1635,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{119,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{128,727},{119,128}}</string>
|
||||
<string>{{808,512},{119,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1605,7 +1650,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{119,128}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{0,839},{119,128}}</string>
|
||||
<string>{{256,753},{119,128}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1621,9 +1666,9 @@
|
||||
<key>realTextureFileName</key>
|
||||
<string>KnifeGirl.png</string>
|
||||
<key>size</key>
|
||||
<string>{1014,1459}</string>
|
||||
<string>{1024,1456}</string>
|
||||
<key>smartupdate</key>
|
||||
<string>$TexturePacker:SmartUpdate:4ca72309f7dc04bba6be361462471d91:9a48d10caa37a76ff8c43fb72bce6103:1ae107e0c6667a1ecb5ed98687517e0e$</string>
|
||||
<string>$TexturePacker:SmartUpdate:8fd7507b5e24a1de6da5e4a6c568fcd3:d861e924a13180a640774a9c85662e57:1ae107e0c6667a1ecb5ed98687517e0e$</string>
|
||||
<key>textureFileName</key>
|
||||
<string>KnifeGirl.png</string>
|
||||
</dict>
|
||||
|
@@ -3,8 +3,8 @@
|
||||
"uuid": "579bc0c1-f5e2-4a5d-889b-9d567e53b0e6",
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"size": {
|
||||
"width": 1014,
|
||||
"height": 1459
|
||||
"width": 1024,
|
||||
"height": 1456
|
||||
},
|
||||
"type": "Texture Packer",
|
||||
"subMetas": {
|
||||
@@ -17,8 +17,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 806,
|
||||
"trimY": 750,
|
||||
"trimX": 384,
|
||||
"trimY": 989,
|
||||
"width": 112,
|
||||
"height": 128,
|
||||
"rawWidth": 112,
|
||||
@@ -39,8 +39,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 1076,
|
||||
"trimX": 256,
|
||||
"trimY": 990,
|
||||
"width": 112,
|
||||
"height": 128,
|
||||
"rawWidth": 112,
|
||||
@@ -83,8 +83,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 528,
|
||||
"trimY": 515,
|
||||
"trimX": 940,
|
||||
"trimY": 0,
|
||||
"width": 80,
|
||||
"height": 128,
|
||||
"rawWidth": 80,
|
||||
@@ -105,8 +105,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 934,
|
||||
"trimY": 640,
|
||||
"trimX": 940,
|
||||
"trimY": 128,
|
||||
"width": 80,
|
||||
"height": 128,
|
||||
"rawWidth": 80,
|
||||
@@ -128,7 +128,7 @@
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 128,
|
||||
"trimY": 1076,
|
||||
"trimY": 1082,
|
||||
"width": 112,
|
||||
"height": 128,
|
||||
"rawWidth": 112,
|
||||
@@ -149,8 +149,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 678,
|
||||
"trimY": 862,
|
||||
"trimX": 0,
|
||||
"trimY": 1188,
|
||||
"width": 112,
|
||||
"height": 128,
|
||||
"rawWidth": 112,
|
||||
@@ -215,8 +215,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 934,
|
||||
"trimY": 768,
|
||||
"trimX": 940,
|
||||
"trimY": 256,
|
||||
"width": 80,
|
||||
"height": 128,
|
||||
"rawWidth": 80,
|
||||
@@ -237,8 +237,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 934,
|
||||
"trimY": 896,
|
||||
"trimX": 937,
|
||||
"trimY": 384,
|
||||
"width": 80,
|
||||
"height": 128,
|
||||
"rawWidth": 80,
|
||||
@@ -256,11 +256,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": true,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 806,
|
||||
"trimY": 958,
|
||||
"trimX": 528,
|
||||
"trimY": 515,
|
||||
"width": 80,
|
||||
"height": 128,
|
||||
"rawWidth": 80,
|
||||
@@ -281,8 +281,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 934,
|
||||
"trimY": 1024,
|
||||
"trimX": 936,
|
||||
"trimY": 512,
|
||||
"width": 80,
|
||||
"height": 128,
|
||||
"rawWidth": 80,
|
||||
@@ -325,8 +325,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 128,
|
||||
"trimY": 964,
|
||||
"trimX": 0,
|
||||
"trimY": 1076,
|
||||
"width": 128,
|
||||
"height": 112,
|
||||
"rawWidth": 128,
|
||||
@@ -347,8 +347,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 912,
|
||||
"trimY": 1152,
|
||||
"trimX": 688,
|
||||
"trimY": 1357,
|
||||
"width": 96,
|
||||
"height": 96,
|
||||
"rawWidth": 96,
|
||||
@@ -369,8 +369,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 340,
|
||||
"trimY": 1197,
|
||||
"trimX": 240,
|
||||
"trimY": 1360,
|
||||
"width": 96,
|
||||
"height": 112,
|
||||
"rawWidth": 96,
|
||||
@@ -391,8 +391,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 452,
|
||||
"trimY": 1196,
|
||||
"trimX": 352,
|
||||
"trimY": 1358,
|
||||
"width": 96,
|
||||
"height": 112,
|
||||
"rawWidth": 96,
|
||||
@@ -413,8 +413,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 564,
|
||||
"trimY": 1155,
|
||||
"trimX": 920,
|
||||
"trimY": 1072,
|
||||
"width": 96,
|
||||
"height": 112,
|
||||
"rawWidth": 96,
|
||||
@@ -435,8 +435,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 608,
|
||||
"trimY": 1043,
|
||||
"trimX": 914,
|
||||
"trimY": 1184,
|
||||
"width": 96,
|
||||
"height": 112,
|
||||
"rawWidth": 96,
|
||||
@@ -479,8 +479,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 678,
|
||||
"trimY": 750,
|
||||
"trimX": 806,
|
||||
"trimY": 631,
|
||||
"width": 128,
|
||||
"height": 112,
|
||||
"rawWidth": 128,
|
||||
@@ -787,8 +787,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 448,
|
||||
"trimY": 1293,
|
||||
"trimX": 802,
|
||||
"trimY": 1149,
|
||||
"width": 112,
|
||||
"height": 112,
|
||||
"rawWidth": 112,
|
||||
@@ -806,11 +806,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 660,
|
||||
"trimY": 1155,
|
||||
"trimX": 800,
|
||||
"trimY": 1261,
|
||||
"width": 96,
|
||||
"height": 112,
|
||||
"rawWidth": 96,
|
||||
@@ -831,8 +831,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 384,
|
||||
"trimY": 988,
|
||||
"trimX": 806,
|
||||
"trimY": 743,
|
||||
"width": 128,
|
||||
"height": 112,
|
||||
"rawWidth": 128,
|
||||
@@ -941,8 +941,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 1188,
|
||||
"trimX": 806,
|
||||
"trimY": 1037,
|
||||
"width": 114,
|
||||
"height": 112,
|
||||
"rawWidth": 114,
|
||||
@@ -960,11 +960,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 114,
|
||||
"trimY": 1188,
|
||||
"trimX": 384,
|
||||
"trimY": 1213,
|
||||
"width": 114,
|
||||
"height": 112,
|
||||
"rawWidth": 114,
|
||||
@@ -985,8 +985,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 1300,
|
||||
"trimX": 464,
|
||||
"trimY": 1327,
|
||||
"width": 114,
|
||||
"height": 112,
|
||||
"rawWidth": 114,
|
||||
@@ -1007,8 +1007,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 112,
|
||||
"trimY": 1300,
|
||||
"trimX": 496,
|
||||
"trimY": 1213,
|
||||
"width": 114,
|
||||
"height": 112,
|
||||
"rawWidth": 114,
|
||||
@@ -1029,8 +1029,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 1300,
|
||||
"trimX": 464,
|
||||
"trimY": 1327,
|
||||
"width": 114,
|
||||
"height": 112,
|
||||
"rawWidth": 114,
|
||||
@@ -1051,8 +1051,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 224,
|
||||
"trimY": 1300,
|
||||
"trimX": 576,
|
||||
"trimY": 1327,
|
||||
"width": 114,
|
||||
"height": 112,
|
||||
"rawWidth": 114,
|
||||
@@ -1070,11 +1070,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": true,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 336,
|
||||
"trimY": 1293,
|
||||
"trimX": 688,
|
||||
"trimY": 1043,
|
||||
"width": 114,
|
||||
"height": 112,
|
||||
"rawWidth": 114,
|
||||
@@ -1095,8 +1095,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 384,
|
||||
"trimY": 634,
|
||||
"trimX": 128,
|
||||
"trimY": 846,
|
||||
"width": 128,
|
||||
"height": 118,
|
||||
"rawWidth": 128,
|
||||
@@ -1117,8 +1117,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 384,
|
||||
"trimY": 752,
|
||||
"trimX": 0,
|
||||
"trimY": 958,
|
||||
"width": 128,
|
||||
"height": 118,
|
||||
"rawWidth": 128,
|
||||
@@ -1139,7 +1139,7 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 256,
|
||||
"trimX": 384,
|
||||
"trimY": 753,
|
||||
"width": 128,
|
||||
"height": 118,
|
||||
@@ -1161,8 +1161,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 128,
|
||||
"trimY": 846,
|
||||
"trimX": 678,
|
||||
"trimY": 631,
|
||||
"width": 128,
|
||||
"height": 118,
|
||||
"rawWidth": 128,
|
||||
@@ -1183,8 +1183,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 958,
|
||||
"trimX": 384,
|
||||
"trimY": 871,
|
||||
"width": 128,
|
||||
"height": 118,
|
||||
"rawWidth": 128,
|
||||
@@ -1205,8 +1205,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 384,
|
||||
"trimY": 870,
|
||||
"trimX": 256,
|
||||
"trimY": 872,
|
||||
"width": 128,
|
||||
"height": 118,
|
||||
"rawWidth": 128,
|
||||
@@ -1227,8 +1227,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 256,
|
||||
"trimY": 871,
|
||||
"trimX": 128,
|
||||
"trimY": 964,
|
||||
"width": 128,
|
||||
"height": 118,
|
||||
"rawWidth": 128,
|
||||
@@ -1249,8 +1249,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 940,
|
||||
"trimY": 0,
|
||||
"trimX": 608,
|
||||
"trimY": 531,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1271,8 +1271,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 940,
|
||||
"trimY": 128,
|
||||
"trimX": 608,
|
||||
"trimY": 659,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1293,8 +1293,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 940,
|
||||
"trimY": 256,
|
||||
"trimX": 608,
|
||||
"trimY": 787,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1315,8 +1315,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 937,
|
||||
"trimY": 384,
|
||||
"trimX": 608,
|
||||
"trimY": 915,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1334,11 +1334,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 936,
|
||||
"trimY": 512,
|
||||
"trimX": 128,
|
||||
"trimY": 1290,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1356,11 +1356,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 608,
|
||||
"trimY": 531,
|
||||
"trimX": 0,
|
||||
"trimY": 1300,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1378,11 +1378,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 608,
|
||||
"trimY": 659,
|
||||
"trimX": 0,
|
||||
"trimY": 1370,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1400,11 +1400,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 608,
|
||||
"trimY": 659,
|
||||
"trimX": 0,
|
||||
"trimY": 1370,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1422,11 +1422,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 608,
|
||||
"trimY": 531,
|
||||
"trimX": 0,
|
||||
"trimY": 1300,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1444,11 +1444,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 936,
|
||||
"trimY": 512,
|
||||
"trimX": 128,
|
||||
"trimY": 1290,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1469,8 +1469,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 937,
|
||||
"trimY": 384,
|
||||
"trimX": 608,
|
||||
"trimY": 915,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1491,8 +1491,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 940,
|
||||
"trimY": 256,
|
||||
"trimX": 608,
|
||||
"trimY": 787,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1513,8 +1513,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 940,
|
||||
"trimY": 128,
|
||||
"trimX": 608,
|
||||
"trimY": 659,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1532,11 +1532,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 608,
|
||||
"trimY": 787,
|
||||
"trimX": 806,
|
||||
"trimY": 967,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1554,11 +1554,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 608,
|
||||
"trimY": 915,
|
||||
"trimX": 678,
|
||||
"trimY": 973,
|
||||
"width": 70,
|
||||
"height": 128,
|
||||
"rawWidth": 70,
|
||||
@@ -1579,8 +1579,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 228,
|
||||
"trimY": 1197,
|
||||
"trimX": 128,
|
||||
"trimY": 1360,
|
||||
"width": 112,
|
||||
"height": 96,
|
||||
"rawWidth": 112,
|
||||
@@ -1645,8 +1645,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 256,
|
||||
"trimY": 989,
|
||||
"trimX": 678,
|
||||
"trimY": 749,
|
||||
"width": 128,
|
||||
"height": 112,
|
||||
"rawWidth": 128,
|
||||
@@ -1667,8 +1667,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 672,
|
||||
"trimY": 1363,
|
||||
"trimX": 784,
|
||||
"trimY": 1357,
|
||||
"width": 96,
|
||||
"height": 96,
|
||||
"rawWidth": 96,
|
||||
@@ -1689,8 +1689,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 672,
|
||||
"trimY": 1267,
|
||||
"trimX": 934,
|
||||
"trimY": 976,
|
||||
"width": 80,
|
||||
"height": 96,
|
||||
"rawWidth": 80,
|
||||
@@ -1711,8 +1711,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 560,
|
||||
"trimY": 1292,
|
||||
"trimX": 688,
|
||||
"trimY": 1155,
|
||||
"width": 112,
|
||||
"height": 112,
|
||||
"rawWidth": 112,
|
||||
@@ -1733,8 +1733,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 384,
|
||||
"trimY": 1100,
|
||||
"trimX": 256,
|
||||
"trimY": 1102,
|
||||
"width": 128,
|
||||
"height": 96,
|
||||
"rawWidth": 128,
|
||||
@@ -1752,11 +1752,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": true,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 800,
|
||||
"trimY": 1038,
|
||||
"trimX": 934,
|
||||
"trimY": 640,
|
||||
"width": 80,
|
||||
"height": 112,
|
||||
"rawWidth": 80,
|
||||
@@ -1774,11 +1774,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": true,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 800,
|
||||
"trimY": 1118,
|
||||
"trimX": 934,
|
||||
"trimY": 752,
|
||||
"width": 80,
|
||||
"height": 112,
|
||||
"rawWidth": 80,
|
||||
@@ -1799,8 +1799,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 678,
|
||||
"trimY": 974,
|
||||
"trimX": 256,
|
||||
"trimY": 1294,
|
||||
"width": 64,
|
||||
"height": 128,
|
||||
"rawWidth": 64,
|
||||
@@ -1818,11 +1818,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": true,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 756,
|
||||
"trimY": 1198,
|
||||
"trimX": 934,
|
||||
"trimY": 864,
|
||||
"width": 80,
|
||||
"height": 112,
|
||||
"rawWidth": 80,
|
||||
@@ -1840,11 +1840,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": true,
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 752,
|
||||
"trimY": 1278,
|
||||
"trimX": 608,
|
||||
"trimY": 1043,
|
||||
"width": 80,
|
||||
"height": 96,
|
||||
"rawWidth": 80,
|
||||
@@ -1865,8 +1865,8 @@
|
||||
"rotated": false,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 768,
|
||||
"trimY": 1358,
|
||||
"trimX": 608,
|
||||
"trimY": 1139,
|
||||
"width": 80,
|
||||
"height": 96,
|
||||
"rawWidth": 80,
|
||||
@@ -1887,8 +1887,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 868,
|
||||
"trimY": 1248,
|
||||
"trimX": 688,
|
||||
"trimY": 1267,
|
||||
"width": 80,
|
||||
"height": 96,
|
||||
"rawWidth": 80,
|
||||
@@ -1906,11 +1906,11 @@
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": false,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 704,
|
||||
"trimY": 1038,
|
||||
"trimX": 912,
|
||||
"trimY": 1296,
|
||||
"width": 96,
|
||||
"height": 112,
|
||||
"rawWidth": 96,
|
||||
@@ -1931,8 +1931,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 256,
|
||||
"trimY": 1101,
|
||||
"trimX": 128,
|
||||
"trimY": 1194,
|
||||
"width": 96,
|
||||
"height": 128,
|
||||
"rawWidth": 96,
|
||||
@@ -1953,8 +1953,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 806,
|
||||
"trimY": 862,
|
||||
"trimX": 256,
|
||||
"trimY": 1198,
|
||||
"width": 96,
|
||||
"height": 128,
|
||||
"rawWidth": 96,
|
||||
@@ -2076,6 +2076,72 @@
|
||||
"spriteType": "normal",
|
||||
"subMetas": {}
|
||||
},
|
||||
"TurnAround1_1.png": {
|
||||
"ver": "1.0.4",
|
||||
"uuid": "28ee1f29-e538-4d36-bb5c-275f9e3b392b",
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 806,
|
||||
"trimY": 855,
|
||||
"width": 112,
|
||||
"height": 128,
|
||||
"rawWidth": 112,
|
||||
"rawHeight": 128,
|
||||
"borderTop": 0,
|
||||
"borderBottom": 0,
|
||||
"borderLeft": 0,
|
||||
"borderRight": 0,
|
||||
"spriteType": "normal",
|
||||
"subMetas": {}
|
||||
},
|
||||
"TurnAround1_2.png": {
|
||||
"ver": "1.0.4",
|
||||
"uuid": "211a73bb-31d7-4e6c-901e-f6939d9214e0",
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 678,
|
||||
"trimY": 861,
|
||||
"width": 112,
|
||||
"height": 128,
|
||||
"rawWidth": 112,
|
||||
"rawHeight": 128,
|
||||
"borderTop": 0,
|
||||
"borderBottom": 0,
|
||||
"borderLeft": 0,
|
||||
"borderRight": 0,
|
||||
"spriteType": "normal",
|
||||
"subMetas": {}
|
||||
},
|
||||
"TurnAround1_3.png": {
|
||||
"ver": "1.0.4",
|
||||
"uuid": "048c41dc-fc00-4bc4-8041-6003e7c2b6e4",
|
||||
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
|
||||
"trimType": "auto",
|
||||
"trimThreshold": 1,
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 384,
|
||||
"trimY": 1101,
|
||||
"width": 112,
|
||||
"height": 128,
|
||||
"rawWidth": 112,
|
||||
"rawHeight": 128,
|
||||
"borderTop": 0,
|
||||
"borderBottom": 0,
|
||||
"borderLeft": 0,
|
||||
"borderRight": 0,
|
||||
"spriteType": "normal",
|
||||
"subMetas": {}
|
||||
},
|
||||
"Walking_1.png": {
|
||||
"ver": "1.0.4",
|
||||
"uuid": "9435195e-4560-495e-b1ae-083c0c87e8a0",
|
||||
@@ -2129,8 +2195,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 680,
|
||||
"trimY": 512,
|
||||
"trimX": 272,
|
||||
"trimY": 515,
|
||||
"width": 119,
|
||||
"height": 128,
|
||||
"rawWidth": 119,
|
||||
@@ -2151,8 +2217,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 808,
|
||||
"trimY": 512,
|
||||
"trimX": 128,
|
||||
"trimY": 608,
|
||||
"width": 119,
|
||||
"height": 128,
|
||||
"rawWidth": 119,
|
||||
@@ -2173,8 +2239,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 272,
|
||||
"trimY": 515,
|
||||
"trimX": 0,
|
||||
"trimY": 720,
|
||||
"width": 119,
|
||||
"height": 128,
|
||||
"rawWidth": 119,
|
||||
@@ -2195,8 +2261,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 128,
|
||||
"trimY": 608,
|
||||
"trimX": 400,
|
||||
"trimY": 515,
|
||||
"width": 119,
|
||||
"height": 128,
|
||||
"rawWidth": 119,
|
||||
@@ -2217,8 +2283,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 720,
|
||||
"trimX": 256,
|
||||
"trimY": 634,
|
||||
"width": 119,
|
||||
"height": 128,
|
||||
"rawWidth": 119,
|
||||
@@ -2239,8 +2305,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 400,
|
||||
"trimY": 515,
|
||||
"trimX": 128,
|
||||
"trimY": 727,
|
||||
"width": 119,
|
||||
"height": 128,
|
||||
"rawWidth": 119,
|
||||
@@ -2261,8 +2327,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 678,
|
||||
"trimY": 631,
|
||||
"trimX": 0,
|
||||
"trimY": 839,
|
||||
"width": 119,
|
||||
"height": 128,
|
||||
"rawWidth": 119,
|
||||
@@ -2283,8 +2349,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 806,
|
||||
"trimY": 631,
|
||||
"trimX": 384,
|
||||
"trimY": 634,
|
||||
"width": 119,
|
||||
"height": 128,
|
||||
"rawWidth": 119,
|
||||
@@ -2305,8 +2371,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 256,
|
||||
"trimY": 634,
|
||||
"trimX": 680,
|
||||
"trimY": 512,
|
||||
"width": 119,
|
||||
"height": 128,
|
||||
"rawWidth": 119,
|
||||
@@ -2327,8 +2393,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 128,
|
||||
"trimY": 727,
|
||||
"trimX": 808,
|
||||
"trimY": 512,
|
||||
"width": 119,
|
||||
"height": 128,
|
||||
"rawWidth": 119,
|
||||
@@ -2349,8 +2415,8 @@
|
||||
"rotated": true,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"trimX": 0,
|
||||
"trimY": 839,
|
||||
"trimX": 256,
|
||||
"trimY": 753,
|
||||
"width": 119,
|
||||
"height": 128,
|
||||
"rawWidth": 119,
|
||||
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 119 KiB |
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"__type__": "cc.AnimationClip",
|
||||
"_name": "TurnAround1",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"_duration": 0.15,
|
||||
"sample": 60,
|
||||
"speed": 1,
|
||||
"wrapMode": 1,
|
||||
"curveData": {
|
||||
"comps": {
|
||||
"cc.Sprite": {
|
||||
"spriteFrame": [
|
||||
{
|
||||
"frame": 0,
|
||||
"value": {
|
||||
"__uuid__": "28ee1f29-e538-4d36-bb5c-275f9e3b392b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.03333333333333333,
|
||||
"value": {
|
||||
"__uuid__": "211a73bb-31d7-4e6c-901e-f6939d9214e0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.08333333333333333,
|
||||
"value": {
|
||||
"__uuid__": "048c41dc-fc00-4bc4-8041-6003e7c2b6e4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.13333333333333333,
|
||||
"value": {
|
||||
"__uuid__": "9435195e-4560-495e-b1ae-083c0c87e8a0"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"events": []
|
||||
}
|
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"ver": "2.1.0",
|
||||
"uuid": "e906322d-a08b-4477-a2e9-98acd42fa034",
|
||||
"subMetas": {}
|
||||
}
|
@@ -3,7 +3,7 @@
|
||||
"_name": "Walking",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"_duration": 1.5166666666666666,
|
||||
"_duration": 0.6333333333333333,
|
||||
"sample": 60,
|
||||
"speed": 1.2,
|
||||
"wrapMode": 2,
|
||||
@@ -13,78 +13,78 @@
|
||||
"spriteFrame": [
|
||||
{
|
||||
"frame": 0,
|
||||
"value": {
|
||||
"__uuid__": "c3b14ecc-a6d9-4cb3-8637-ca7b407a0f5c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.08333333333333333,
|
||||
"value": {
|
||||
"__uuid__": "9435195e-4560-495e-b1ae-083c0c87e8a0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.18333333333333332,
|
||||
"frame": 0.06666666666666667,
|
||||
"value": {
|
||||
"__uuid__": "ec048360-7a17-4f22-ba52-eb86ec1acae8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.2833333333333333,
|
||||
"frame": 0.11666666666666667,
|
||||
"value": {
|
||||
"__uuid__": "82bb81e3-667c-4280-8710-211f4904ef2f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.4,
|
||||
"frame": 0.16666666666666666,
|
||||
"value": {
|
||||
"__uuid__": "c3b14ecc-a6d9-4cb3-8637-ca7b407a0f5c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.21666666666666667,
|
||||
"value": {
|
||||
"__uuid__": "f958fb7f-ef5a-4918-81f3-564004572f45"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.5333333333333333,
|
||||
"frame": 0.26666666666666666,
|
||||
"value": {
|
||||
"__uuid__": "8a0ecf92-db26-4206-9a80-20e749055def"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.65,
|
||||
"frame": 0.31666666666666665,
|
||||
"value": {
|
||||
"__uuid__": "942f2e02-a700-4fbf-877e-08c93e4d4010"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.7666666666666667,
|
||||
"frame": 0.36666666666666664,
|
||||
"value": {
|
||||
"__uuid__": "30546064-1a11-499e-8523-a82c83951c73"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.9,
|
||||
"frame": 0.4166666666666667,
|
||||
"value": {
|
||||
"__uuid__": "515bb75f-7a1f-4500-8aa9-c895915ce19f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 1.0333333333333334,
|
||||
"frame": 0.4666666666666667,
|
||||
"value": {
|
||||
"__uuid__": "9100da6b-7582-4afb-9698-3d67d3b2012d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 1.2166666666666666,
|
||||
"frame": 0.5166666666666667,
|
||||
"value": {
|
||||
"__uuid__": "1257f72d-0cb3-4750-ae70-13c2d8eb2269"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 1.3833333333333333,
|
||||
"frame": 0.5666666666666667,
|
||||
"value": {
|
||||
"__uuid__": "1d34b6db-27ba-4e26-864d-0f00d501765e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 1.5,
|
||||
"frame": 0.6166666666666667,
|
||||
"value": {
|
||||
"__uuid__": "c317a75a-52c0-4c38-9300-a064cbf4efb3"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 260 KiB After Width: | Height: | Size: 269 KiB |
43
frontend/assets/resources/animation/Monk/TurnAround1.anim
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"__type__": "cc.AnimationClip",
|
||||
"_name": "TurnAround1",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"_duration": 0.15,
|
||||
"sample": 60,
|
||||
"speed": 1,
|
||||
"wrapMode": 1,
|
||||
"curveData": {
|
||||
"comps": {
|
||||
"cc.Sprite": {
|
||||
"spriteFrame": [
|
||||
{
|
||||
"frame": 0,
|
||||
"value": {
|
||||
"__uuid__": "ee5e05fa-b515-470f-bc3c-43544f02cb92"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.03333333333333333,
|
||||
"value": {
|
||||
"__uuid__": "ffa521b6-118e-46e8-be1c-51cc54381ec8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.08333333333333333,
|
||||
"value": {
|
||||
"__uuid__": "0b27d2c9-c5a3-4020-adbe-0297c1ba3aeb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.13333333333333333,
|
||||
"value": {
|
||||
"__uuid__": "a47f518e-62fb-4549-8897-4f2d387bd145"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"events": []
|
||||
}
|
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"ver": "2.1.0",
|
||||
"uuid": "edd23b2f-1caa-4836-88a7-e4af1f26743e",
|
||||
"subMetas": {}
|
||||
}
|
@@ -15,7 +15,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{62,92}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1277,188},{62,92}}</string>
|
||||
<string>{{1307,188},{62,92}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -30,7 +30,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{77,99}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{748,0},{77,99}}</string>
|
||||
<string>{{782,101},{77,99}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -45,7 +45,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{112,99}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{408,348},{112,99}}</string>
|
||||
<string>{{381,360},{112,99}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -60,7 +60,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{96,100}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{664,315},{96,100}}</string>
|
||||
<string>{{704,312},{96,100}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -75,7 +75,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{62,92}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1277,188},{62,92}}</string>
|
||||
<string>{{1307,188},{62,92}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -90,7 +90,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{58,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1023,194},{58,97}}</string>
|
||||
<string>{{983,388},{58,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -105,9 +105,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{60,90}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1393,141},{60,90}}</string>
|
||||
<string>{{1424,0},{60,90}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Atk2_2.png</key>
|
||||
<dict>
|
||||
@@ -120,7 +120,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{84,96}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1087,97},{84,96}}</string>
|
||||
<string>{{1082,291},{84,96}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -135,7 +135,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{55,100}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{731,101},{55,100}}</string>
|
||||
<string>{{738,206},{55,100}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -150,9 +150,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{63,100}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{717,206},{63,100}}</string>
|
||||
<string>{{0,437},{63,100}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Atk2_5.png</key>
|
||||
<dict>
|
||||
@@ -165,7 +165,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{66,101}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{682,0},{66,101}}</string>
|
||||
<string>{{755,0},{66,101}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -180,7 +180,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,95}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1126,0},{80,95}}</string>
|
||||
<string>{{1099,387},{80,95}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -195,7 +195,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{116,109}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{315,119},{116,109}}</string>
|
||||
<string>{{336,244},{116,109}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -210,7 +210,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{102,96}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{621,213},{102,96}}</string>
|
||||
<string>{{608,325},{102,96}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -225,9 +225,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{75,102}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{139,421},{75,102}}</string>
|
||||
<string>{{663,210},{75,102}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Atk3_0.png</key>
|
||||
<dict>
|
||||
@@ -240,7 +240,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{66,109}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{469,110},{66,109}}</string>
|
||||
<string>{{480,339},{66,109}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -255,7 +255,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{66,113}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{355,235},{66,113}}</string>
|
||||
<string>{{403,114},{66,113}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -330,7 +330,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{78,131}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{137,290},{78,131}}</string>
|
||||
<string>{{78,0},{78,131}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -345,9 +345,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{59,139}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{0,437},{59,139}}</string>
|
||||
<string>{{78,290},{59,139}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Atk3_8.png</key>
|
||||
<dict>
|
||||
@@ -360,7 +360,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{59,139}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{78,290},{59,139}}</string>
|
||||
<string>{{137,290},{59,139}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -375,9 +375,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{62,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{507,434},{62,97}}</string>
|
||||
<string>{{962,291},{62,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Atked1_1.png</key>
|
||||
<dict>
|
||||
@@ -390,9 +390,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{73,95}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1171,95},{73,95}}</string>
|
||||
<string>{{641,427},{73,95}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Atked1_2.png</key>
|
||||
<dict>
|
||||
@@ -405,7 +405,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{90,89}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1324,0},{90,89}}</string>
|
||||
<string>{{1335,0},{90,89}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -420,7 +420,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{95,80}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1084,291},{95,80}}</string>
|
||||
<string>{{1168,193},{95,80}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -435,7 +435,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,95}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1010,388},{80,95}}</string>
|
||||
<string>{{1166,290},{80,95}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -450,7 +450,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{83,92}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1208,382},{83,92}}</string>
|
||||
<string>{{1299,382},{83,92}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -465,7 +465,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{92,83}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1224,284},{92,83}}</string>
|
||||
<string>{{1306,284},{92,83}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -480,7 +480,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{112,45}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{424,115},{112,45}}</string>
|
||||
<string>{{469,112},{112,45}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -495,7 +495,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{88,69}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{604,427},{88,69}}</string>
|
||||
<string>{{1443,222},{88,69}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -510,7 +510,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{91,90}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1303,93},{91,90}}</string>
|
||||
<string>{{1313,93},{91,90}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -525,7 +525,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{120,93}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{222,123},{120,93}}</string>
|
||||
<string>{{254,124},{120,93}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -540,9 +540,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{100,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{241,396},{100,112}}</string>
|
||||
<string>{{408,0},{100,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>GetUp1_5.png</key>
|
||||
<dict>
|
||||
@@ -555,7 +555,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{106,93}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{507,328},{106,93}}</string>
|
||||
<string>{{570,219},{106,93}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -570,7 +570,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{106,79}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{542,217},{106,79}}</string>
|
||||
<string>{{571,108},{106,79}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -585,7 +585,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{73,87}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1307,280},{73,87}}</string>
|
||||
<string>{{1382,376},{73,87}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -600,9 +600,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{67,90}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1413,74},{67,90}}</string>
|
||||
<string>{{1403,90},{67,90}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>GetUp1_9.png</key>
|
||||
<dict>
|
||||
@@ -615,7 +615,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{58,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1023,194},{58,97}}</string>
|
||||
<string>{{983,388},{58,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -630,7 +630,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{58,95}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1090,386},{58,95}}</string>
|
||||
<string>{{1219,0},{58,95}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -645,7 +645,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{58,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1029,97},{58,97}}</string>
|
||||
<string>{{1024,291},{58,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -660,7 +660,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{60,94}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1148,386},{60,94}}</string>
|
||||
<string>{{1179,385},{60,94}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -675,7 +675,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{58,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1081,194},{58,97}}</string>
|
||||
<string>{{1036,194},{58,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -690,7 +690,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{58,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1068,0},{58,97}}</string>
|
||||
<string>{{1041,388},{58,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -705,9 +705,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{60,95}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1206,0},{60,95}}</string>
|
||||
<string>{{546,440},{60,95}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Idle1_5.png</key>
|
||||
<dict>
|
||||
@@ -720,7 +720,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{60,94}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1164,288},{60,94}}</string>
|
||||
<string>{{1239,385},{60,94}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -735,7 +735,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{59,93}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{789,403},{59,93}}</string>
|
||||
<string>{{1248,191},{59,93}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -750,7 +750,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{58,93}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1266,0},{58,93}}</string>
|
||||
<string>{{1277,0},{58,93}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -765,7 +765,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{59,93}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1244,95},{59,93}}</string>
|
||||
<string>{{1254,95},{59,93}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -780,7 +780,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{60,94}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1217,190},{60,94}}</string>
|
||||
<string>{{1246,288},{60,94}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -795,7 +795,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{77,68}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1437,417},{77,68}}</string>
|
||||
<string>{{1473,291},{77,68}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -810,7 +810,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{118,76}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{215,278},{118,76}}</string>
|
||||
<string>{{196,284},{118,76}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -825,7 +825,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{104,65}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{617,0},{104,65}}</string>
|
||||
<string>{{650,106},{104,65}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -840,9 +840,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{80,66}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1380,285},{80,66}}</string>
|
||||
<string>{{1473,368},{80,66}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>InAirAtk1_12.png</key>
|
||||
<dict>
|
||||
@@ -855,7 +855,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{102,67}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{664,104},{102,67}}</string>
|
||||
<string>{{715,104},{102,67}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -870,9 +870,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{79,66}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1339,201},{79,66}}</string>
|
||||
<string>{{1470,90},{79,66}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>InAirAtk1_3.png</key>
|
||||
<dict>
|
||||
@@ -885,7 +885,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{124,64}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{78,0},{124,64}}</string>
|
||||
<string>{{156,0},{124,64}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -900,7 +900,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{104,64}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{600,323},{104,64}}</string>
|
||||
<string>{{691,0},{104,64}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -915,7 +915,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{79,61}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1376,417},{79,61}}</string>
|
||||
<string>{{1484,0},{79,61}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -930,7 +930,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{124,64}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{142,0},{124,64}}</string>
|
||||
<string>{{160,124},{124,64}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -945,7 +945,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{106,67}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{597,107},{106,67}}</string>
|
||||
<string>{{624,0},{106,67}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -960,7 +960,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{79,66}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1380,351},{79,66}}</string>
|
||||
<string>{{1470,156},{79,66}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -975,7 +975,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{118,64}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{291,243},{118,64}}</string>
|
||||
<string>{{272,284},{118,64}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -990,9 +990,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{71,119}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{242,0},{71,119}}</string>
|
||||
<string>{{100,429},{71,119}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>InAirIdle1_1.png</key>
|
||||
<dict>
|
||||
@@ -1005,7 +1005,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{71,119}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{313,0},{71,119}}</string>
|
||||
<string>{{282,0},{71,119}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1020,7 +1020,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{55,114}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{353,361},{55,114}}</string>
|
||||
<string>{{353,0},{55,114}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1035,7 +1035,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{62,124}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{160,124},{62,124}}</string>
|
||||
<string>{{220,0},{62,124}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1050,9 +1050,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{74,90}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1413,0},{74,90}}</string>
|
||||
<string>{{1369,184},{74,90}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>InAirIdle1_3.png</key>
|
||||
<dict>
|
||||
@@ -1065,7 +1065,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{110,54}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{440,0},{110,54}}</string>
|
||||
<string>{{508,0},{110,54}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1080,7 +1080,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{85,88}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1291,376},{85,88}}</string>
|
||||
<string>{{736,412},{85,88}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1095,7 +1095,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{64,112}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{421,235},{64,112}}</string>
|
||||
<string>{{445,227},{64,112}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1110,7 +1110,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{62,107}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{555,0},{62,107}}</string>
|
||||
<string>{{546,333},{62,107}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1125,9 +1125,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{85,84}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1405,201},{85,84}}</string>
|
||||
<string>{{1389,291},{85,84}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>InAirIdle1_8.png</key>
|
||||
<dict>
|
||||
@@ -1140,7 +1140,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{109,61}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{494,0},{109,61}}</string>
|
||||
<string>{{509,224},{109,61}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1155,7 +1155,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{78,95}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1139,193},{78,95}}</string>
|
||||
<string>{{1176,96},{78,95}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1170,7 +1170,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{115,56}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{384,0},{115,56}}</string>
|
||||
<string>{{347,119},{115,56}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1185,7 +1185,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{109,57}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{485,219},{109,57}}</string>
|
||||
<string>{{514,110},{109,57}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1200,7 +1200,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{108,62}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{535,109},{108,62}}</string>
|
||||
<string>{{562,0},{108,62}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
@@ -1215,9 +1215,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{123,36}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{206,0},{123,36}}</string>
|
||||
<string>{{160,248},{123,36}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>LayDown1_4.png</key>
|
||||
<dict>
|
||||
@@ -1230,7 +1230,52 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{123,30}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{160,248},{123,30}}</string>
|
||||
<string>{{224,124},{123,30}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>TurnAround1_1.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{74,96}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{74,96}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1094,194},{74,96}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>TurnAround1_2.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{74,96}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{74,96}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1102,97},{74,96}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>TurnAround1_3.png</key>
|
||||
<dict>
|
||||
<key>aliases</key>
|
||||
<array/>
|
||||
<key>spriteOffset</key>
|
||||
<string>{0,0}</string>
|
||||
<key>spriteSize</key>
|
||||
<string>{74,96}</string>
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{74,96}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1145,0},{74,96}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1245,9 +1290,9 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{692,415},{81,97}}</string>
|
||||
<string>{{219,402},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<true/>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>Walking_10.png</key>
|
||||
<dict>
|
||||
@@ -1260,7 +1305,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{760,306},{81,97}}</string>
|
||||
<string>{{300,402},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1275,7 +1320,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{780,201},{81,97}}</string>
|
||||
<string>{{821,0},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1290,7 +1335,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{786,99},{81,97}}</string>
|
||||
<string>{{793,200},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1305,7 +1350,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{825,0},{81,97}}</string>
|
||||
<string>{{859,97},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1320,7 +1365,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{841,298},{81,97}}</string>
|
||||
<string>{{902,0},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1335,7 +1380,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{848,395},{81,97}}</string>
|
||||
<string>{{800,297},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1350,7 +1395,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{861,196},{81,97}}</string>
|
||||
<string>{{874,194},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1365,7 +1410,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{867,97},{81,97}}</string>
|
||||
<string>{{940,97},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1380,7 +1425,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{906,0},{81,97}}</string>
|
||||
<string>{{983,0},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1395,7 +1440,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{922,293},{81,97}}</string>
|
||||
<string>{{821,394},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1410,7 +1455,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{942,194},{81,97}}</string>
|
||||
<string>{{881,291},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1425,7 +1470,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{948,97},{81,97}}</string>
|
||||
<string>{{955,194},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1440,7 +1485,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{987,0},{81,97}}</string>
|
||||
<string>{{1021,97},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1455,7 +1500,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{929,390},{81,97}}</string>
|
||||
<string>{{1064,0},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1470,7 +1515,7 @@
|
||||
<key>spriteSourceSize</key>
|
||||
<string>{81,97}</string>
|
||||
<key>textureRect</key>
|
||||
<string>{{1003,291},{81,97}}</string>
|
||||
<string>{{902,388},{81,97}}</string>
|
||||
<key>textureRotated</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -1486,9 +1531,9 @@
|
||||
<key>realTextureFileName</key>
|
||||
<string>MonkGirl.png</string>
|
||||
<key>size</key>
|
||||
<string>{1505,496}</string>
|
||||
<string>{1549,500}</string>
|
||||
<key>smartupdate</key>
|
||||
<string>$TexturePacker:SmartUpdate:8383576ddc6ed0fb9e6adcbc98ec9c07:b0caf27c9f592741053365a3d87b3473:7b088363a1f16e4f4ff313aecc52227b$</string>
|
||||
<string>$TexturePacker:SmartUpdate:f2fd96a7a4bba5a2e1c4622dcb63e1f2:17c698372c46bf0be82704dd808cd6f4:7b088363a1f16e4f4ff313aecc52227b$</string>
|
||||
<key>textureFileName</key>
|
||||
<string>MonkGirl.png</string>
|
||||
</dict>
|
||||
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 98 KiB |
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"__type__": "cc.AnimationClip",
|
||||
"_name": "TurnAround1",
|
||||
"_objFlags": 0,
|
||||
"_native": "",
|
||||
"_duration": 0.15,
|
||||
"sample": 60,
|
||||
"speed": 1,
|
||||
"wrapMode": 1,
|
||||
"curveData": {
|
||||
"comps": {
|
||||
"cc.Sprite": {
|
||||
"spriteFrame": [
|
||||
{
|
||||
"frame": 0,
|
||||
"value": {
|
||||
"__uuid__": "c1a00209-f74d-41b5-a5da-df5720ac34b4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.03333333333333333,
|
||||
"value": {
|
||||
"__uuid__": "2b52c0f1-2360-4a2b-9233-bf5662de09a5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.08333333333333333,
|
||||
"value": {
|
||||
"__uuid__": "e3f9dfe7-ed91-4dc3-b68b-a3a3c2637074"
|
||||
}
|
||||
},
|
||||
{
|
||||
"frame": 0.13333333333333333,
|
||||
"value": {
|
||||
"__uuid__": "7515ef50-3a14-4e58-8811-a0c890fc40f3"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"events": []
|
||||
}
|
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"ver": "2.1.0",
|
||||
"uuid": "6e1139d4-03dd-4bd4-9510-606e94f629fe",
|
||||
"subMetas": {}
|
||||
}
|
@@ -1,18 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.2" tiledversion="1.2.3" orientation="orthogonal" renderorder="right-down" width="128" height="64" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="135">
|
||||
<map version="1.2" tiledversion="1.2.3" orientation="orthogonal" renderorder="right-down" width="128" height="64" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="137">
|
||||
<tileset firstgid="1" source="tiles0.tsx"/>
|
||||
<tileset firstgid="65" source="tiles1.tsx"/>
|
||||
<tileset firstgid="129" source="tiles2.tsx"/>
|
||||
<layer id="6" name="Ground" width="128" height="64">
|
||||
<data encoding="base64" compression="zlib">
|
||||
eJzt2ztuAjEURmELlIYuiKRHyk4iGjo2wP6XkRDGUmThxwx3fC3+U3wNw8v3eEyabEMIWwAAAAAAAAAAAADo4IQ/3h08+3t/B2/KM1BeOzPQXjsz0F47M6iv/c3oc6zeh/7+/Q+NHr1P6z7YGz2H/svWXur1TP/SvqL/OP1LnSz6t7Qt9a1dp//4/VvOgJJeM3hlLf2tzNljI83glY2+9vcMpRko9E/PgFz3NfbBKDNQ7r+kvdU+GHEGHv2/Gl9zNHrOKOh/t5vQX8dt7d+JeC19PDo2yr1+NHEG3i28+m8m8f6//jpnbAzkfsNr15eqfR/1+z/tfxP/Fvj/mFX/0dD/7pz0fsR69p8rmHv20D9vl5mZ1flb67VkP81pT/8QPialmT1z/5f2QK/7v7Q/6Z/vb6F0DvToXzuf1PvDv4Nn/4s4+mujvzb6a6O/Nvpro782+mujvzb6a6O/Nvpro782+mujvzb6a6O/Nvpro782+mujvzb6a6O/tvg/UN4t6E9/+tO/d3+s1/8HUhSy6A==
|
||||
eJzt201uwjAQhuEIxCY7KugeqTepumHXC/T+xyCqYimy4sQ4E2bE9y6eDf+e1w4bOHZddwQAAAAAAAAAAACAF/jBP+8Onv29P4M35Rkor50ZaK+dGWivnRlor50ZtK39UmnL5/owegz94/X/on8Ykfsv9V27n/72a0/drPqfBucZeeMSjxm8m5b+W1m9Dv3fv//c9eG88f3p397fytr1vNR9j31A/1hq21vtg4gziNz/ZvQY+vubrr0fefdv3QOt+0O9/3cm3ZffntwqlZ4fTZqBdwuv/odROv9/g3vBwUDpjFq8dst7q5//vP/0O2B6m1V/T/Qv979nvedY9/jcwTPXHPov9+lXZldjrb/1fqL/c/2vo6W5bTn/S3tg7/Nfsz/pX+5v+Z1L/3i8f3cdhXcHz/6/4uivjf7a6K+N/tror43+2uivjf7a6K+N/tror43+2uivjf7a6K+N/tror43+2uivjf7a6K+N/trSf6C8W9Cf/vSn/6v7Y7/+Dyz1uAA=
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="1" name="PlayerStartingPos">
|
||||
<object id="135" x="840" y="530">
|
||||
<object id="135" x="1400" y="580">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="137" x="959" y="532">
|
||||
<object id="137" x="1500" y="580">
|
||||
<point/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
@@ -64,7 +64,7 @@
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="60" x="1232" y="432" width="208" height="16">
|
||||
<object id="60" x="1232" y="448" width="208" height="16">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
@@ -99,7 +99,7 @@
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="90" x="1232" y="496" width="320" height="16">
|
||||
<object id="90" x="1248" y="464" width="320" height="16">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
@@ -114,37 +114,37 @@
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="100" x="1552" y="576" width="128" height="16">
|
||||
<object id="100" x="1538" y="560" width="144" height="32">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="101" x="1568" y="560" width="112" height="16">
|
||||
<object id="101" x="1568" y="528" width="112" height="32">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="102" x="1584" y="544" width="96" height="16">
|
||||
<object id="102" x="1136" y="368" width="96" height="16">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="103" x="1600" y="528" width="80" height="16">
|
||||
<object id="103" x="1600" y="496" width="80" height="32">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="104" x="768" y="382" width="304" height="16">
|
||||
<object id="104" x="816" y="414" width="304" height="16">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="105" x="768" y="302" width="16" height="96">
|
||||
<object id="105" x="816" y="366" width="16" height="64">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="106" x="1056" y="302" width="16" height="96">
|
||||
<object id="106" x="1104" y="334" width="16" height="96">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
@@ -164,42 +164,7 @@
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="120" x="736" y="512" width="16" height="16">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="121" x="736" y="336" width="16" height="16">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="125" x="688" y="448" width="16" height="16">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="127" x="1088" y="320" width="16" height="16">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="128" x="1120" y="336" width="16" height="16">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="129" x="1136" y="368" width="16" height="16">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="130" x="1168" y="384" width="16" height="16">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="132" x="1184" y="416" width="16" height="16">
|
||||
<object id="136" x="1232" y="432" width="208" height="16">
|
||||
<properties>
|
||||
<property name="boundary_type" value="barrier"/>
|
||||
</properties>
|
||||
|
@@ -9,9 +9,9 @@ message PlayerDownsync {
|
||||
int32 virtualGridX = 2;
|
||||
int32 virtualGridY = 3;
|
||||
int32 dirX = 4;
|
||||
int32 dirY = 5; // "dirX" and "dirY" determines character facing
|
||||
int32 dirY = 5;
|
||||
int32 velX = 6;
|
||||
int32 velY = 7; // "velX" and "velY" is used to record the accumulated effect by accelerations (including gravity)
|
||||
int32 velY = 7; // "velX" and "velY" is used to record the accumulated effect by inertia and accelerations (including gravity)
|
||||
int32 speed = 8; // this is the instantaneous scalar attribute of a character, different from but will be accounted in "velX" and "velY"
|
||||
int32 battleState = 9;
|
||||
int32 joinIndex = 10;
|
||||
@@ -36,6 +36,8 @@ message PlayerDownsync {
|
||||
int32 onWallNormX = 27;
|
||||
int32 onWallNormY = 28;
|
||||
|
||||
bool capturedByInertia = 29; // like "inAir", it’s by design a standalone field only inferred by the calc result of "applyInputFrameDownsyncDynamicsOnSingleRenderFrame" instead of "characterState"
|
||||
|
||||
string name = 997;
|
||||
string displayName = 998;
|
||||
string avatar = 999;
|
||||
|
@@ -482,6 +482,13 @@
|
||||
},
|
||||
{
|
||||
"__uuid__": "e8247e2a-1b5b-4618-86f8-224b25246b55"
|
||||
},
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
{
|
||||
"__uuid__": "6e1139d4-03dd-4bd4-9510-606e94f629fe"
|
||||
}
|
||||
],
|
||||
"playOnLoad": false,
|
||||
@@ -538,7 +545,7 @@
|
||||
"__id__": 8
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_active": false,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 14
|
||||
@@ -653,6 +660,9 @@
|
||||
},
|
||||
{
|
||||
"__uuid__": "411f964a-4dd8-424c-b2e2-d92b10474ce2"
|
||||
},
|
||||
{
|
||||
"__uuid__": "e906322d-a08b-4477-a2e9-98acd42fa034"
|
||||
}
|
||||
],
|
||||
"playOnLoad": false,
|
||||
@@ -822,6 +832,11 @@
|
||||
},
|
||||
{
|
||||
"__uuid__": "0abbd156-980e-475e-9994-3c958bd913fc"
|
||||
},
|
||||
null,
|
||||
null,
|
||||
{
|
||||
"__uuid__": "edd23b2f-1caa-4836-88a7-e4af1f26743e"
|
||||
}
|
||||
],
|
||||
"playOnLoad": false,
|
||||
|
@@ -78,19 +78,19 @@
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 40
|
||||
"__id__": 50
|
||||
},
|
||||
{
|
||||
"__id__": 41
|
||||
"__id__": 51
|
||||
},
|
||||
{
|
||||
"__id__": 42
|
||||
"__id__": 52
|
||||
},
|
||||
{
|
||||
"__id__": 43
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 54
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -158,7 +158,7 @@
|
||||
"__id__": 5
|
||||
},
|
||||
{
|
||||
"__id__": 39
|
||||
"__id__": 49
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -247,10 +247,10 @@
|
||||
"__uuid__": "670b477e-61a1-4778-879b-35913f7c79d2"
|
||||
},
|
||||
"boundRoomIdLabel": {
|
||||
"__id__": 16
|
||||
"__id__": 26
|
||||
},
|
||||
"countdownLabel": {
|
||||
"__id__": 23
|
||||
"__id__": 33
|
||||
},
|
||||
"resultPanelPrefab": {
|
||||
"__uuid__": "c4cfe3bd-c59e-4d5b-95cb-c933b120e184"
|
||||
@@ -269,9 +269,21 @@
|
||||
},
|
||||
"forceBigEndianFloatingNumDecoding": false,
|
||||
"renderFrameIdLagTolerance": 4,
|
||||
"jigglingEps1D": 0.001,
|
||||
"bulletTriggerEnabled": true,
|
||||
"closeOnForcedtoResyncNotSelf": true,
|
||||
"sendingQLabel": {
|
||||
"__id__": 13
|
||||
},
|
||||
"inputFrameDownsyncQLabel": {
|
||||
"__id__": 15
|
||||
},
|
||||
"peerInputFrameUpsyncQLabel": {
|
||||
"__id__": 17
|
||||
},
|
||||
"rollbackFramesLabel": {
|
||||
"__id__": 19
|
||||
},
|
||||
"skippedRenderFrameCntLabel": {
|
||||
"__id__": 21
|
||||
},
|
||||
"_id": "d12gkAmppNlIzqcRDELa91"
|
||||
},
|
||||
{
|
||||
@@ -283,13 +295,13 @@
|
||||
},
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 33
|
||||
"__id__": 43
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 38
|
||||
"__id__": 48
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -352,19 +364,19 @@
|
||||
"__id__": 6
|
||||
},
|
||||
{
|
||||
"__id__": 22
|
||||
"__id__": 32
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 34
|
||||
},
|
||||
{
|
||||
"__id__": 28
|
||||
"__id__": 38
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 32
|
||||
"__id__": 42
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -433,7 +445,7 @@
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 21
|
||||
"__id__": 31
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -527,7 +539,7 @@
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
209.57814771583418,
|
||||
210.16474188040044,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
@@ -596,15 +608,30 @@
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 12
|
||||
},
|
||||
{
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 16
|
||||
},
|
||||
{
|
||||
"__id__": 18
|
||||
},
|
||||
{
|
||||
"__id__": 20
|
||||
},
|
||||
{
|
||||
"__id__": 22
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 19
|
||||
"__id__": 29
|
||||
},
|
||||
{
|
||||
"__id__": 20
|
||||
"__id__": 30
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -631,7 +658,7 @@
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
-447.294,
|
||||
135.702,
|
||||
138.942,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
@@ -655,6 +682,476 @@
|
||||
"groupIndex": 0,
|
||||
"_id": "35scg40jVAnKrTPiei5ckg"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "sendingQ",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 11
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 13
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 18.33,
|
||||
"height": 22.61
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
88.695,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": "ack7XH+0lEj6chSUsKBLU5"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Label",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 12
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
{
|
||||
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||
}
|
||||
],
|
||||
"_useOriginalSize": false,
|
||||
"_string": "0",
|
||||
"_N$string": "0",
|
||||
"_fontSize": 22,
|
||||
"_lineHeight": 37,
|
||||
"_enableWrapText": true,
|
||||
"_N$file": {
|
||||
"__uuid__": "a564b3db-b8cb-48b4-952e-25bb56949116"
|
||||
},
|
||||
"_isSystemFontUsed": false,
|
||||
"_spacingX": 0,
|
||||
"_batchAsBitmap": false,
|
||||
"_N$horizontalAlign": 0,
|
||||
"_N$verticalAlign": 1,
|
||||
"_N$fontFamily": "Arial",
|
||||
"_N$overflow": 0,
|
||||
"_N$cacheMode": 0,
|
||||
"_id": "deCJfLuoFO36c/O4lXWJ1N"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "inputFrameDownsyncQ",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 11
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 15
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 18.33,
|
||||
"height": 22.61
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
66.08499999999998,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": "d9n+NRm9pA0YtKxvy4bW+U"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Label",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 14
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
{
|
||||
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||
}
|
||||
],
|
||||
"_useOriginalSize": false,
|
||||
"_string": "0",
|
||||
"_N$string": "0",
|
||||
"_fontSize": 22,
|
||||
"_lineHeight": 37,
|
||||
"_enableWrapText": true,
|
||||
"_N$file": {
|
||||
"__uuid__": "a564b3db-b8cb-48b4-952e-25bb56949116"
|
||||
},
|
||||
"_isSystemFontUsed": false,
|
||||
"_spacingX": 0,
|
||||
"_batchAsBitmap": false,
|
||||
"_N$horizontalAlign": 0,
|
||||
"_N$verticalAlign": 1,
|
||||
"_N$fontFamily": "Arial",
|
||||
"_N$overflow": 0,
|
||||
"_N$cacheMode": 0,
|
||||
"_id": "90NvjGFrpBFqqzl1WZczta"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "peerInputFrameUpsyncQ",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 11
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 17
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 18.33,
|
||||
"height": 22.61
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
43.47499999999998,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": "45FAmgRLZNNbLt/GcnTXVx"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Label",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 16
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
{
|
||||
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||
}
|
||||
],
|
||||
"_useOriginalSize": false,
|
||||
"_string": "0",
|
||||
"_N$string": "0",
|
||||
"_fontSize": 22,
|
||||
"_lineHeight": 37,
|
||||
"_enableWrapText": true,
|
||||
"_N$file": {
|
||||
"__uuid__": "a564b3db-b8cb-48b4-952e-25bb56949116"
|
||||
},
|
||||
"_isSystemFontUsed": false,
|
||||
"_spacingX": 0,
|
||||
"_batchAsBitmap": false,
|
||||
"_N$horizontalAlign": 0,
|
||||
"_N$verticalAlign": 1,
|
||||
"_N$fontFamily": "Arial",
|
||||
"_N$overflow": 0,
|
||||
"_N$cacheMode": 0,
|
||||
"_id": "42PRTrjEpDw6Z8N5yWFTpd"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "rollbackFrames",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 11
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 19
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 18.33,
|
||||
"height": 22.61
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
20.86499999999998,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": "f5SBs3b1pPNbHbnqVLYsHp"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Label",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 18
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
{
|
||||
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||
}
|
||||
],
|
||||
"_useOriginalSize": false,
|
||||
"_string": "0",
|
||||
"_N$string": "0",
|
||||
"_fontSize": 22,
|
||||
"_lineHeight": 37,
|
||||
"_enableWrapText": true,
|
||||
"_N$file": {
|
||||
"__uuid__": "a564b3db-b8cb-48b4-952e-25bb56949116"
|
||||
},
|
||||
"_isSystemFontUsed": false,
|
||||
"_spacingX": 0,
|
||||
"_batchAsBitmap": false,
|
||||
"_N$horizontalAlign": 0,
|
||||
"_N$verticalAlign": 1,
|
||||
"_N$fontFamily": "Arial",
|
||||
"_N$overflow": 0,
|
||||
"_N$cacheMode": 0,
|
||||
"_id": "77aNARt1VATLsjIzwbqvkh"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "skippedCnt",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 11
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 21
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
"_opacity": 255,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 243,
|
||||
"g": 225,
|
||||
"b": 11,
|
||||
"a": 255
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 18.33,
|
||||
"height": 22.61
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0.5
|
||||
},
|
||||
"_trs": {
|
||||
"__type__": "TypedArray",
|
||||
"ctor": "Float64Array",
|
||||
"array": [
|
||||
0,
|
||||
-1.7450000000000188,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"_eulerAngles": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_skewX": 0,
|
||||
"_skewY": 0,
|
||||
"_is3DNode": false,
|
||||
"_groupIndex": 0,
|
||||
"groupIndex": 0,
|
||||
"_id": "cdlF8Z8TZEdLRHQQ8T8qX7"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Label",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 20
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
{
|
||||
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||
}
|
||||
],
|
||||
"_useOriginalSize": false,
|
||||
"_string": "0",
|
||||
"_N$string": "0",
|
||||
"_fontSize": 22,
|
||||
"_lineHeight": 37,
|
||||
"_enableWrapText": true,
|
||||
"_N$file": {
|
||||
"__uuid__": "a564b3db-b8cb-48b4-952e-25bb56949116"
|
||||
},
|
||||
"_isSystemFontUsed": false,
|
||||
"_spacingX": 0,
|
||||
"_batchAsBitmap": false,
|
||||
"_N$horizontalAlign": 0,
|
||||
"_N$verticalAlign": 1,
|
||||
"_N$fontFamily": "Arial",
|
||||
"_N$overflow": 0,
|
||||
"_N$cacheMode": 0,
|
||||
"_id": "2flWrlaK1PeJMUB/in+S1W"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "RoomIdIndicator",
|
||||
@@ -664,19 +1161,19 @@
|
||||
},
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 13
|
||||
"__id__": 23
|
||||
},
|
||||
{
|
||||
"__id__": 15
|
||||
"__id__": 25
|
||||
}
|
||||
],
|
||||
"_active": false,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 17
|
||||
"__id__": 27
|
||||
},
|
||||
{
|
||||
"__id__": 18
|
||||
"__id__": 28
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -732,13 +1229,13 @@
|
||||
"_name": "label",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 12
|
||||
"__id__": 22
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 14
|
||||
"__id__": 24
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -794,7 +1291,7 @@
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 13
|
||||
"__id__": 23
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [],
|
||||
@@ -822,13 +1319,13 @@
|
||||
"_name": "BoundRoomIdLabel",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 12
|
||||
"__id__": 22
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 16
|
||||
"__id__": 26
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -884,7 +1381,7 @@
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 15
|
||||
"__id__": 25
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [],
|
||||
@@ -912,7 +1409,7 @@
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 12
|
||||
"__id__": 22
|
||||
},
|
||||
"_enabled": true,
|
||||
"_layoutSize": {
|
||||
@@ -945,7 +1442,7 @@
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 12
|
||||
"__id__": 22
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [],
|
||||
@@ -1067,7 +1564,7 @@
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 23
|
||||
"__id__": 33
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -1123,7 +1620,7 @@
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 22
|
||||
"__id__": 32
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
@@ -1157,7 +1654,7 @@
|
||||
},
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 25
|
||||
"__id__": 35
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
@@ -1215,16 +1712,16 @@
|
||||
"_name": "Background",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 24
|
||||
"__id__": 34
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 26
|
||||
"__id__": 36
|
||||
},
|
||||
{
|
||||
"__id__": 27
|
||||
"__id__": 37
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -1280,7 +1777,7 @@
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 25
|
||||
"__id__": 35
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
@@ -1314,7 +1811,7 @@
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 25
|
||||
"__id__": 35
|
||||
},
|
||||
"_enabled": true,
|
||||
"alignMode": 0,
|
||||
@@ -1345,7 +1842,7 @@
|
||||
},
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 29
|
||||
"__id__": 39
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
@@ -1403,16 +1900,16 @@
|
||||
"_name": "Background",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 28
|
||||
"__id__": 38
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 30
|
||||
"__id__": 40
|
||||
},
|
||||
{
|
||||
"__id__": 31
|
||||
"__id__": 41
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -1468,7 +1965,7 @@
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 29
|
||||
"__id__": 39
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
@@ -1502,7 +1999,7 @@
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 29
|
||||
"__id__": 39
|
||||
},
|
||||
"_enabled": true,
|
||||
"alignMode": 0,
|
||||
@@ -1560,16 +2057,16 @@
|
||||
},
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 34
|
||||
"__id__": 44
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 36
|
||||
"__id__": 46
|
||||
},
|
||||
{
|
||||
"__id__": 37
|
||||
"__id__": 47
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -1625,13 +2122,13 @@
|
||||
"_name": "Joystick",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__id__": 33
|
||||
"__id__": 43
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 45
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@@ -1687,7 +2184,7 @@
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 34
|
||||
"__id__": 44
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
@@ -1721,7 +2218,7 @@
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 33
|
||||
"__id__": 43
|
||||
},
|
||||
"_enabled": true,
|
||||
"_materials": [
|
||||
@@ -1755,7 +2252,7 @@
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"node": {
|
||||
"__id__": 33
|
||||
"__id__": 43
|
||||
},
|
||||
"_enabled": true,
|
||||
"alignMode": 0,
|
||||
@@ -1908,10 +2405,10 @@
|
||||
"__id__": 3
|
||||
},
|
||||
"stickhead": {
|
||||
"__id__": 34
|
||||
"__id__": 44
|
||||
},
|
||||
"base": {
|
||||
"__id__": 33
|
||||
"__id__": 43
|
||||
},
|
||||
"joyStickEps": 0.1,
|
||||
"magicLeanLowerBound": 0.414,
|
||||
@@ -1932,10 +2429,10 @@
|
||||
"linearMovingEps": 0.1,
|
||||
"scaleByEps": 0.0375,
|
||||
"btnA": {
|
||||
"__id__": 24
|
||||
"__id__": 34
|
||||
},
|
||||
"btnB": {
|
||||
"__id__": 28
|
||||
"__id__": 38
|
||||
},
|
||||
"_id": "e9oVYTr7ROlpp/IrNjBUmR"
|
||||
}
|
||||
|
@@ -362,7 +362,7 @@
|
||||
"array": [
|
||||
0,
|
||||
0,
|
||||
209.57814771583418,
|
||||
216.6734179122529,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
|
@@ -18,6 +18,7 @@ window.ATK_CHARACTER_STATE = {
|
||||
Atk5: [14, "Atk5"],
|
||||
Dashing: [15, "Dashing"],
|
||||
OnWall: [16, "OnWall"],
|
||||
TurnAround1: [17, "TurnAround1"],
|
||||
};
|
||||
|
||||
window.ATK_CHARACTER_STATE_ARR = [];
|
||||
@@ -93,7 +94,7 @@ cc.Class({
|
||||
} else if (0 < rdfPlayer.DirX) {
|
||||
this.animNode.scaleX = (+1.0);
|
||||
}
|
||||
if (ATK_CHARACTER_STATE.OnWall[0] == newCharacterState) {
|
||||
if (ATK_CHARACTER_STATE.OnWall[0] == newCharacterState || ATK_CHARACTER_STATE.TurnAround1[0] == newCharacterState) {
|
||||
if (0 < rdfPlayer.OnWallNormX) {
|
||||
this.animNode.scaleX = (-1.0);
|
||||
} else {
|
||||
|
@@ -2,6 +2,7 @@ const i18n = require('LanguageData');
|
||||
i18n.init(window.language); // languageID should be equal to the one we input in New Language ID input field
|
||||
|
||||
const RingBuffer = require('./RingBuffer');
|
||||
const NetworkDoctor = require('./NetworkDoctor');
|
||||
const PriorityQueue = require("./PriorityQueue");
|
||||
|
||||
window.ALL_MAP_STATES = {
|
||||
@@ -96,16 +97,26 @@ cc.Class({
|
||||
type: cc.Integer,
|
||||
default: 4 // implies (renderFrameIdLagTolerance >> inputScaleFrames) count of inputFrameIds
|
||||
},
|
||||
jigglingEps1D: {
|
||||
type: cc.Float,
|
||||
default: 1e-3
|
||||
sendingQLabel: {
|
||||
type: cc.Label,
|
||||
default: null
|
||||
},
|
||||
bulletTriggerEnabled: {
|
||||
default: false
|
||||
inputFrameDownsyncQLabel: {
|
||||
type: cc.Label,
|
||||
default: null
|
||||
},
|
||||
closeOnForcedtoResyncNotSelf: {
|
||||
default: true
|
||||
peerInputFrameUpsyncQLabel: {
|
||||
type: cc.Label,
|
||||
default: null
|
||||
},
|
||||
rollbackFramesLabel: {
|
||||
type: cc.Label,
|
||||
default: null
|
||||
},
|
||||
skippedRenderFrameCntLabel: {
|
||||
type: cc.Label,
|
||||
default: null
|
||||
}
|
||||
},
|
||||
|
||||
_inputFrameIdDebuggable(inputFrameId) {
|
||||
@@ -184,6 +195,7 @@ cc.Class({
|
||||
// Upon resync, "self.lastUpsyncInputFrameId" might not have been updated properly.
|
||||
batchInputFrameIdSt = self.recentInputCache.StFrameId;
|
||||
}
|
||||
self.networkDoctor.logSending(batchInputFrameIdSt, latestLocalInputFrameId);
|
||||
for (let i = batchInputFrameIdSt; i <= latestLocalInputFrameId; ++i) {
|
||||
const inputFrameDownsync = self.recentInputCache.GetByFrameId(i);
|
||||
if (null == inputFrameDownsync) {
|
||||
@@ -308,7 +320,7 @@ cc.Class({
|
||||
const newFireball = newFireballNode.getComponent("Fireball");
|
||||
newFireballNode.setPosition(cc.v2(Number.MAX_VALUE, Number.MAX_VALUE));
|
||||
safelyAddChild(self.node, newFireballNode);
|
||||
setLocalZOrder(newFireballNode, 5);
|
||||
setLocalZOrder(newFireballNode, 10);
|
||||
newFireball.lastUsed = -1;
|
||||
newFireball.bulletLocalId = -1;
|
||||
const initLookupKey = -(k + 1); // there's definitely no suck "bulletLocalId"
|
||||
@@ -342,6 +354,9 @@ cc.Class({
|
||||
self.othersForcedDownsyncRenderFrameDict = new Map();
|
||||
self.rdfIdToActuallyUsedInput = new Map();
|
||||
|
||||
self.networkDoctor = new NetworkDoctor(20);
|
||||
self.skipRenderFrameFlag = false;
|
||||
|
||||
self.countdownNanos = null;
|
||||
if (self.countdownLabel) {
|
||||
self.countdownLabel.string = "";
|
||||
@@ -409,6 +424,7 @@ cc.Class({
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
cc.game.setFrameRate(60);
|
||||
cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
|
||||
cc.view.enableAutoFullScreen(true);
|
||||
|
||||
@@ -417,6 +433,7 @@ cc.Class({
|
||||
window.forceBigEndianFloatingNumDecoding = self.forceBigEndianFloatingNumDecoding;
|
||||
|
||||
self.showCriticalCoordinateLabels = false;
|
||||
self.showNetworkDoctorInfo = true;
|
||||
|
||||
console.warn("+++++++ Map onLoad()");
|
||||
|
||||
@@ -609,7 +626,7 @@ cc.Class({
|
||||
const jsPlayersArr = new Array(pbRdf.playersArr.length).fill(null);
|
||||
for (let k = 0; k < pbRdf.playersArr.length; ++k) {
|
||||
const pbPlayer = pbRdf.playersArr[k];
|
||||
const jsPlayer = gopkgs.NewPlayerDownsyncJs(pbPlayer.id, pbPlayer.virtualGridX, pbPlayer.virtualGridY, pbPlayer.dirX, pbPlayer.dirY, pbPlayer.velX, pbPlayer.velY, pbPlayer.framesToRecover, pbPlayer.framesInChState, pbPlayer.activeSkillId, pbPlayer.activeSkillHit, pbPlayer.framesInvinsible, pbPlayer.speed, pbPlayer.battleState, pbPlayer.characterState, pbPlayer.joinIndex, pbPlayer.hp, pbPlayer.maxHp, pbPlayer.colliderRadius, pbPlayer.inAir, pbPlayer.onWall, pbPlayer.onWallNormX, pbPlayer.onWallNormY, pbPlayer.bulletTeamId, pbPlayer.chCollisionTeamId);
|
||||
const jsPlayer = gopkgs.NewPlayerDownsyncJs(pbPlayer.id, pbPlayer.virtualGridX, pbPlayer.virtualGridY, pbPlayer.dirX, pbPlayer.dirY, pbPlayer.velX, pbPlayer.velY, pbPlayer.framesToRecover, pbPlayer.framesInChState, pbPlayer.activeSkillId, pbPlayer.activeSkillHit, pbPlayer.framesInvinsible, pbPlayer.speed, pbPlayer.battleState, pbPlayer.characterState, pbPlayer.joinIndex, pbPlayer.hp, pbPlayer.maxHp, pbPlayer.colliderRadius, pbPlayer.inAir, pbPlayer.onWall, pbPlayer.onWallNormX, pbPlayer.onWallNormY, pbPlayer.capturedByInertia, pbPlayer.bulletTeamId, pbPlayer.chCollisionTeamId);
|
||||
jsPlayersArr[k] = jsPlayer;
|
||||
}
|
||||
const jsMeleeBulletsArr = new Array(pbRdf.meleeBullets.length).fill(null);
|
||||
@@ -690,6 +707,7 @@ cc.Class({
|
||||
self.lastRenderFrameIdTriggeredAt = performance.now();
|
||||
// In this case it must be true that "rdf.id > chaserRenderFrameId".
|
||||
self.chaserRenderFrameId = rdf.Id;
|
||||
self.networkDoctor.logRollbackFrames(0);
|
||||
|
||||
const canvasNode = self.canvasNode;
|
||||
self.ctrl = canvasNode.getComponent("TouchEventsManager");
|
||||
@@ -796,6 +814,7 @@ cc.Class({
|
||||
return;
|
||||
}
|
||||
|
||||
self.networkDoctor.logInputFrameDownsync(batch[0].inputFrameId, batch[batch.length - 1].inputFrameId);
|
||||
let firstPredictedYetIncorrectInputFrameId = null;
|
||||
for (let k in batch) {
|
||||
const inputFrameDownsync = batch[k];
|
||||
@@ -844,6 +863,7 @@ lastAllConfirmedInputFrameId=${self.lastAllConfirmedInputFrameId}
|
||||
recentInputCache=${self._stringifyRecentInputCache(false)}
|
||||
batchInputFrameIdRange=[${batch[0].inputFrameId}, ${batch[batch.length - 1].inputFrameId}]`);
|
||||
self.chaserRenderFrameId = renderFrameId1;
|
||||
self.networkDoctor.logRollbackFrames(self.renderFrameId - self.chaserRenderFrameId);
|
||||
},
|
||||
|
||||
onPeerInputFrameUpsync(peerJoinIndex, batch /* []*pb.InputFrameDownsync */ ) {
|
||||
@@ -860,6 +880,7 @@ batchInputFrameIdRange=[${batch[0].inputFrameId}, ${batch[batch.length - 1].inpu
|
||||
return;
|
||||
}
|
||||
|
||||
let effCnt = 0;
|
||||
//console.log(`Received peer inputFrameUpsync batch w/ inputFrameId in [${batch[0].inputFrameId}, ${batch[batch.length - 1].inputFrameId}] for prediction assistance`);
|
||||
for (let k in batch) {
|
||||
const inputFrameDownsync = batch[k];
|
||||
@@ -867,11 +888,15 @@ batchInputFrameIdRange=[${batch[0].inputFrameId}, ${batch[batch.length - 1].inpu
|
||||
if (inputFrameDownsyncId <= self.lastAllConfirmedInputFrameId) {
|
||||
continue;
|
||||
}
|
||||
effCnt += 1;
|
||||
self.getOrPrefabInputFrameUpsync(inputFrameDownsyncId); // Make sure that inputFrame exists locally
|
||||
const existingInputFrame = self.recentInputCache.GetByFrameId(inputFrameDownsyncId);
|
||||
existingInputFrame.InputList[peerJoinIndex - 1] = inputFrameDownsync.inputList[peerJoinIndex - 1]; // No need to change "confirmedList", leave it to "onInputFrameDownsyncBatch" -- we're just helping prediction here
|
||||
self.recentInputCache.SetByFrameId(existingInputFrame, inputFrameDownsyncId);
|
||||
}
|
||||
if (0 < effCnt) {
|
||||
self.networkDoctor.logPeerInputFrameUpsync(batch[0].inputFrameId, batch[batch.length - 1].inputFrameId);
|
||||
}
|
||||
},
|
||||
|
||||
onPlayerAdded(rdf /* pb.RoomDownsyncFrame */ ) {
|
||||
@@ -945,6 +970,11 @@ batchInputFrameIdRange=[${batch[0].inputFrameId}, ${batch[batch.length - 1].inpu
|
||||
|
||||
Kindly note that Significantly different network bandwidths or delay fluctuations would result in frequent [type#1 forceConfirmation] too, but CAUSE FROM DIFFERENT LOCAL "update(dt)" RATE SHOULD BE THE FIRST TO INVESTIGATE AND ELIMINATE -- because we have control on it, but no one has control on the internet.
|
||||
*/
|
||||
if (self.skipRenderFrameFlag) {
|
||||
self.networkDoctor.logSkippedRenderFrameCnt();
|
||||
self.skipRenderFrameFlag = false;
|
||||
return;
|
||||
}
|
||||
try {
|
||||
let st = performance.now();
|
||||
const noDelayInputFrameId = gopkgs.ConvertToNoDelayInputFrameId(self.renderFrameId);
|
||||
@@ -956,7 +986,7 @@ batchInputFrameIdRange=[${batch[0].inputFrameId}, ${batch[batch.length - 1].inpu
|
||||
|
||||
const delayedInputFrameId = gopkgs.ConvertToDelayedInputFrameId(self.renderFrameId);
|
||||
if (null == self.recentInputCache.GetByFrameId(delayedInputFrameId)) {
|
||||
// Possible edge case after resync
|
||||
// Possible edge case after resync, kindly note that it's OK to prefab a "future inputFrame" here, because "sendInputFrameUpsyncBatch" would be capped by "noDelayInputFrameId from self.renderFrameId".
|
||||
self.getOrPrefabInputFrameUpsync(delayedInputFrameId);
|
||||
}
|
||||
|
||||
@@ -981,6 +1011,7 @@ batchInputFrameIdRange=[${batch[0].inputFrameId}, ${batch[batch.length - 1].inpu
|
||||
|
||||
// Inside the following "self.rollbackAndChase" actually ROLLS FORWARD w.r.t. the corresponding delayedInputFrame, REGARDLESS OF whether or not "self.chaserRenderFrameId == self.renderFrameId" now.
|
||||
const latestRdfResults = self.rollbackAndChase(self.renderFrameId, self.renderFrameId + 1, self.gopkgsCollisionSys, self.gopkgsCollisionSysMap, false);
|
||||
self.networkDoctor.logRollbackFrames(self.renderFrameId - self.chaserRenderFrameId);
|
||||
let prevRdf = latestRdfResults[0],
|
||||
rdf = latestRdfResults[1];
|
||||
/*
|
||||
@@ -1005,9 +1036,13 @@ othersForcedDownsyncRenderFrame=${JSON.stringify(othersForcedDownsyncRenderFrame
|
||||
}
|
||||
self.applyRoomDownsyncFrameDynamics(rdf, prevRdf);
|
||||
self.showDebugBoundaries(rdf);
|
||||
if (self.showNetworkDoctorInfo) {
|
||||
self.showNetworkDoctorLabels();
|
||||
}
|
||||
++self.renderFrameId; // [WARNING] It's important to increment the renderFrameId AFTER all the operations above!!!
|
||||
self.lastRenderFrameIdTriggeredAt = performance.now();
|
||||
let t3 = performance.now();
|
||||
self.skipRenderFrameFlag = self.networkDoctor.isTooFast();
|
||||
} catch (err) {
|
||||
console.error("Error during Map.update", err);
|
||||
self.onBattleStopped(); // TODO: Popup to ask player to refresh browser
|
||||
@@ -1499,4 +1534,44 @@ actuallyUsedinputList:{${self.inputFrameDownsyncStr(actuallyUsedInputClone)}}`);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
showNetworkDoctorLabels() {
|
||||
const self = this;
|
||||
const [sendingFps, srvDownsyncFps, peerUpsyncFps, rollbackFrames, skippedRenderFrameCnt] = self.networkDoctor.stats();
|
||||
if (self.sendingQLabel) {
|
||||
self.sendingQLabel.string = `${sendingFps} fps sending`;
|
||||
if (sendingFps < self.networkDoctor.inputRateThreshold) {
|
||||
self.sendingQLabel.node.color = cc.Color.RED;
|
||||
} else {
|
||||
self.sendingQLabel.node.color = cc.Color.WHITE;
|
||||
}
|
||||
}
|
||||
if (self.inputFrameDownsyncQLabel) {
|
||||
self.inputFrameDownsyncQLabel.string = `${srvDownsyncFps} fps srv-downsync`;
|
||||
if (srvDownsyncFps < self.networkDoctor.inputRateThreshold) {
|
||||
self.inputFrameDownsyncQLabel.node.color = cc.Color.RED;
|
||||
} else {
|
||||
self.inputFrameDownsyncQLabel.node.color = cc.Color.WHITE;
|
||||
}
|
||||
}
|
||||
if (self.peerInputFrameUpsyncQLabel) {
|
||||
self.peerInputFrameUpsyncQLabel.string = `${peerUpsyncFps} fps peer-upsync`;
|
||||
if (peerUpsyncFps > self.networkDoctor.peerUpsyncFps) {
|
||||
self.peerInputFrameUpsyncQLabel.node.color = cc.Color.RED;
|
||||
} else {
|
||||
self.peerInputFrameUpsyncQLabel.node.color = cc.Color.WHITE;
|
||||
}
|
||||
}
|
||||
if (self.rollbackFramesLabel) {
|
||||
self.rollbackFramesLabel.string = `rollbackFrames: ${rollbackFrames}`
|
||||
if (rollbackFrames > self.networkDoctor.rollbackFramesThreshold) {
|
||||
self.rollbackFramesLabel.node.color = cc.Color.RED;
|
||||
} else {
|
||||
self.rollbackFramesLabel.node.color = cc.Color.WHITE;
|
||||
}
|
||||
}
|
||||
if (self.skippedRenderFrameCntLabel) {
|
||||
self.skippedRenderFrameCntLabel.string = `${skippedRenderFrameCnt} frames skipped`
|
||||
}
|
||||
},
|
||||
});
|
||||
|
94
frontend/assets/scripts/NetworkDoctor.js
Normal file
@@ -0,0 +1,94 @@
|
||||
const RingBuffer = require('./RingBuffer');
|
||||
|
||||
var NetworkDoctor = function(capacity) {
|
||||
this.reset(capacity);
|
||||
};
|
||||
|
||||
NetworkDoctor.prototype.reset = function(capacity) {
|
||||
this.sendingQ = new RingBuffer(capacity);
|
||||
this.inputFrameDownsyncQ = new RingBuffer(capacity);
|
||||
this.peerInputFrameUpsyncQ = new RingBuffer(capacity);
|
||||
this.peerInputFrameUpsyncCnt = 0;
|
||||
this.immediateRollbackFrames = 0;
|
||||
this.skippedRenderFrameCnt = 0;
|
||||
|
||||
this.inputRateThreshold = gopkgs.ConvertToNoDelayInputFrameId(60);
|
||||
this.peerUpsyncThreshold = 8;
|
||||
this.rollbackFramesThreshold = 4; // Slightly smaller than the minimum "TurnAroundFramesToRecover".
|
||||
};
|
||||
|
||||
NetworkDoctor.prototype.logSending = function(stFrameId, edFrameId) {
|
||||
this.sendingQ.put({
|
||||
i: stFrameId,
|
||||
j: edFrameId,
|
||||
t: Date.now()
|
||||
});
|
||||
};
|
||||
|
||||
NetworkDoctor.prototype.logInputFrameDownsync = function(stFrameId, edFrameId) {
|
||||
this.inputFrameDownsyncQ.put({
|
||||
i: stFrameId,
|
||||
j: edFrameId,
|
||||
t: Date.now()
|
||||
});
|
||||
};
|
||||
|
||||
NetworkDoctor.prototype.logPeerInputFrameUpsync = function(stFrameId, edFrameId) {
|
||||
const firstPopped = this.peerInputFrameUpsyncQ.put({
|
||||
i: stFrameId,
|
||||
j: edFrameId,
|
||||
t: Date.now()
|
||||
});
|
||||
if (null != firstPopped) {
|
||||
this.peerInputFrameUpsyncCnt -= (firstPopped.j - firstPopped.i + 1);
|
||||
}
|
||||
this.peerInputFrameUpsyncCnt += (edFrameId - stFrameId + 1);
|
||||
};
|
||||
|
||||
NetworkDoctor.prototype.logRollbackFrames = function(x) {
|
||||
this.immediateRollbackFrames = x;
|
||||
};
|
||||
|
||||
NetworkDoctor.prototype.stats = function() {
|
||||
let sendingFps = 0,
|
||||
srvDownsyncFps = 0,
|
||||
peerUpsyncFps = 0,
|
||||
rollbackFrames = this.immediateRollbackFrames;
|
||||
if (1 < this.sendingQ.cnt) {
|
||||
const st = this.sendingQ.getByFrameId(this.sendingQ.stFrameId);
|
||||
const ed = this.sendingQ.getByFrameId(this.sendingQ.edFrameId - 1);
|
||||
const elapsedMillis = ed.t - st.t;
|
||||
sendingFps = Math.round((ed.j - st.i) * 1000 / elapsedMillis);
|
||||
}
|
||||
if (1 < this.inputFrameDownsyncQ.cnt) {
|
||||
const st = this.inputFrameDownsyncQ.getByFrameId(this.inputFrameDownsyncQ.stFrameId);
|
||||
const ed = this.inputFrameDownsyncQ.getByFrameId(this.inputFrameDownsyncQ.edFrameId - 1);
|
||||
const elapsedMillis = ed.t - st.t;
|
||||
srvDownsyncFps = Math.round((ed.j - st.i) * 1000 / elapsedMillis);
|
||||
}
|
||||
if (1 < this.peerInputFrameUpsyncQ.cnt) {
|
||||
const st = this.peerInputFrameUpsyncQ.getByFrameId(this.peerInputFrameUpsyncQ.stFrameId);
|
||||
const ed = this.peerInputFrameUpsyncQ.getByFrameId(this.peerInputFrameUpsyncQ.edFrameId - 1);
|
||||
const elapsedMillis = ed.t - st.t;
|
||||
peerUpsyncFps = Math.round(this.peerInputFrameUpsyncCnt * 1000 / elapsedMillis);
|
||||
}
|
||||
return [sendingFps, srvDownsyncFps, peerUpsyncFps, rollbackFrames, this.skippedRenderFrameCnt];
|
||||
};
|
||||
|
||||
NetworkDoctor.prototype.logSkippedRenderFrameCnt = function() {
|
||||
this.skippedRenderFrameCnt += 1;
|
||||
}
|
||||
|
||||
NetworkDoctor.prototype.isTooFast = function() {
|
||||
const [sendingFps, srvDownsyncFps, peerUpsyncFps, rollbackFrames, skippedRenderFrameCnt] = this.stats();
|
||||
if (sendingFps >= this.inputRateThreshold && srvDownsyncFps >= this.inputRateThreshold) {
|
||||
// At least my network is OK for both TX & RX directions.
|
||||
if (rollbackFrames >= this.rollbackFramesThreshold) {
|
||||
// I got many frames rolled back while none of my peers effectively helped my preciction. Deliberately not using "peerUpsyncThreshold" here because when using UDP p2p upsync broadcasting, we expect to receive effective p2p upsyncs from every other player.
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
module.exports = NetworkDoctor;
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"ver": "1.0.5",
|
||||
"uuid": "477c07c3-0d50-4d55-96f0-6eaf9f25e2da",
|
||||
"uuid": "affd726a-02f0-4079-aace-39fe525d7478",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
@@ -11,11 +11,13 @@ cc.Class({
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
cc.game.setFrameRate(60);
|
||||
cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
|
||||
cc.view.enableAutoFullScreen(true);
|
||||
const self = this;
|
||||
window.mapIns = self;
|
||||
self.showCriticalCoordinateLabels = false;
|
||||
self.showNetworkDoctorInfo = true;
|
||||
|
||||
const mapNode = self.node;
|
||||
const canvasNode = mapNode.parent;
|
||||
@@ -96,7 +98,7 @@ cc.Class({
|
||||
const p2Vpos = gopkgs.WorldToVirtualGridPos(boundaryObjs.playerStartingPositions[1].x, boundaryObjs.playerStartingPositions[1].y);
|
||||
const colliderRadiusV = gopkgs.WorldToVirtualGridPos(12.0, 0);
|
||||
|
||||
const speciesIdList = [4096, 1];
|
||||
const speciesIdList = [1, 4096];
|
||||
const chConfigsOrderedByJoinIndex = gopkgs.GetCharacterConfigsOrderedByJoinIndex(speciesIdList);
|
||||
|
||||
const startRdf = window.pb.protos.RoomDownsyncFrame.create({
|
||||
|
@@ -13,9 +13,12 @@ var RingBuffer = function(capacity) {
|
||||
};
|
||||
|
||||
RingBuffer.prototype.put = function(item) {
|
||||
let firstPopped = null;
|
||||
while (0 < this.cnt && this.cnt >= this.n) {
|
||||
// Make room for the new element
|
||||
this.pop();
|
||||
const popped = this.pop();
|
||||
if (null == firstPopped)
|
||||
firstPopped = popped;
|
||||
}
|
||||
this.eles[this.ed] = item
|
||||
this.edFrameId++;
|
||||
@@ -24,6 +27,7 @@ RingBuffer.prototype.put = function(item) {
|
||||
if (this.ed >= this.n) {
|
||||
this.ed -= this.n; // Deliberately not using "%" operator for performance concern
|
||||
}
|
||||
return firstPopped;
|
||||
};
|
||||
|
||||
RingBuffer.prototype.pop = function() {
|
||||
|
@@ -169,30 +169,24 @@ cc.Class({
|
||||
if (self.btnA) {
|
||||
self.btnA.on(cc.Node.EventType.TOUCH_START, function(evt) {
|
||||
self._triggerEdgeBtnA(true);
|
||||
evt.target.runAction(cc.scaleTo(0.1, 0.3));
|
||||
});
|
||||
self.btnA.on(cc.Node.EventType.TOUCH_END, function(evt) {
|
||||
self._triggerEdgeBtnA(false);
|
||||
evt.target.runAction(cc.scaleTo(0.1, 0.5));
|
||||
});
|
||||
self.btnA.on(cc.Node.EventType.TOUCH_CANCEL, function(evt) {
|
||||
self._triggerEdgeBtnA(false);
|
||||
evt.target.runAction(cc.scaleTo(0.1, 0.5));
|
||||
});
|
||||
}
|
||||
|
||||
if (self.btnB) {
|
||||
self.btnB.on(cc.Node.EventType.TOUCH_START, function(evt) {
|
||||
self._triggerEdgeBtnB(true);
|
||||
evt.target.runAction(cc.scaleTo(0.1, 0.3));
|
||||
});
|
||||
self.btnB.on(cc.Node.EventType.TOUCH_END, function(evt) {
|
||||
self._triggerEdgeBtnB(false);
|
||||
evt.target.runAction(cc.scaleTo(0.1, 0.5));
|
||||
});
|
||||
self.btnB.on(cc.Node.EventType.TOUCH_CANCEL, function(evt) {
|
||||
self._triggerEdgeBtnB(false);
|
||||
evt.target.runAction(cc.scaleTo(0.1, 0.5));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -500,13 +494,23 @@ cc.Class({
|
||||
this.cachedBtnALevel = this.realtimeBtnALevel;
|
||||
this.btnAEdgeTriggerLock = true;
|
||||
}
|
||||
if (rising) {
|
||||
this.btnA.runAction(cc.scaleTo(0.1, 0.3));
|
||||
} else {
|
||||
this.btnA.runAction(cc.scaleTo(0.1, 0.5));
|
||||
}
|
||||
},
|
||||
|
||||
_triggerEdgeBtnB(rising) {
|
||||
_triggerEdgeBtnB(rising, evt) {
|
||||
this.realtimeBtnBLevel = (rising ? 1 : 0);
|
||||
if (!this.btnBEdgeTriggerLock && (1 - this.realtimeBtnBLevel) == this.cachedBtnBLevel) {
|
||||
this.cachedBtnBLevel = this.realtimeBtnBLevel;
|
||||
this.btnBEdgeTriggerLock = true;
|
||||
}
|
||||
if (rising) {
|
||||
this.btnB.runAction(cc.scaleTo(0.1, 0.3));
|
||||
} else {
|
||||
this.btnB.runAction(cc.scaleTo(0.1, 0.5));
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@@ -1219,6 +1219,7 @@ $root.protos = (function() {
|
||||
* @property {boolean|null} [onWall] PlayerDownsync onWall
|
||||
* @property {number|null} [onWallNormX] PlayerDownsync onWallNormX
|
||||
* @property {number|null} [onWallNormY] PlayerDownsync onWallNormY
|
||||
* @property {boolean|null} [capturedByInertia] PlayerDownsync capturedByInertia
|
||||
* @property {string|null} [name] PlayerDownsync name
|
||||
* @property {string|null} [displayName] PlayerDownsync displayName
|
||||
* @property {string|null} [avatar] PlayerDownsync avatar
|
||||
@@ -1463,6 +1464,14 @@ $root.protos = (function() {
|
||||
*/
|
||||
PlayerDownsync.prototype.onWallNormY = 0;
|
||||
|
||||
/**
|
||||
* PlayerDownsync capturedByInertia.
|
||||
* @member {boolean} capturedByInertia
|
||||
* @memberof protos.PlayerDownsync
|
||||
* @instance
|
||||
*/
|
||||
PlayerDownsync.prototype.capturedByInertia = false;
|
||||
|
||||
/**
|
||||
* PlayerDownsync name.
|
||||
* @member {string} name
|
||||
@@ -1567,6 +1576,8 @@ $root.protos = (function() {
|
||||
writer.uint32(/* id 27, wireType 0 =*/216).int32(message.onWallNormX);
|
||||
if (message.onWallNormY != null && Object.hasOwnProperty.call(message, "onWallNormY"))
|
||||
writer.uint32(/* id 28, wireType 0 =*/224).int32(message.onWallNormY);
|
||||
if (message.capturedByInertia != null && Object.hasOwnProperty.call(message, "capturedByInertia"))
|
||||
writer.uint32(/* id 29, wireType 0 =*/232).bool(message.capturedByInertia);
|
||||
if (message.name != null && Object.hasOwnProperty.call(message, "name"))
|
||||
writer.uint32(/* id 997, wireType 2 =*/7978).string(message.name);
|
||||
if (message.displayName != null && Object.hasOwnProperty.call(message, "displayName"))
|
||||
@@ -1719,6 +1730,10 @@ $root.protos = (function() {
|
||||
message.onWallNormY = reader.int32();
|
||||
break;
|
||||
}
|
||||
case 29: {
|
||||
message.capturedByInertia = reader.bool();
|
||||
break;
|
||||
}
|
||||
case 997: {
|
||||
message.name = reader.string();
|
||||
break;
|
||||
@@ -1850,6 +1865,9 @@ $root.protos = (function() {
|
||||
if (message.onWallNormY != null && message.hasOwnProperty("onWallNormY"))
|
||||
if (!$util.isInteger(message.onWallNormY))
|
||||
return "onWallNormY: integer expected";
|
||||
if (message.capturedByInertia != null && message.hasOwnProperty("capturedByInertia"))
|
||||
if (typeof message.capturedByInertia !== "boolean")
|
||||
return "capturedByInertia: boolean expected";
|
||||
if (message.name != null && message.hasOwnProperty("name"))
|
||||
if (!$util.isString(message.name))
|
||||
return "name: string expected";
|
||||
@@ -1930,6 +1948,8 @@ $root.protos = (function() {
|
||||
message.onWallNormX = object.onWallNormX | 0;
|
||||
if (object.onWallNormY != null)
|
||||
message.onWallNormY = object.onWallNormY | 0;
|
||||
if (object.capturedByInertia != null)
|
||||
message.capturedByInertia = Boolean(object.capturedByInertia);
|
||||
if (object.name != null)
|
||||
message.name = String(object.name);
|
||||
if (object.displayName != null)
|
||||
@@ -1981,6 +2001,7 @@ $root.protos = (function() {
|
||||
object.onWall = false;
|
||||
object.onWallNormX = 0;
|
||||
object.onWallNormY = 0;
|
||||
object.capturedByInertia = false;
|
||||
object.name = "";
|
||||
object.displayName = "";
|
||||
object.avatar = "";
|
||||
@@ -2041,6 +2062,8 @@ $root.protos = (function() {
|
||||
object.onWallNormX = message.onWallNormX;
|
||||
if (message.onWallNormY != null && message.hasOwnProperty("onWallNormY"))
|
||||
object.onWallNormY = message.onWallNormY;
|
||||
if (message.capturedByInertia != null && message.hasOwnProperty("capturedByInertia"))
|
||||
object.capturedByInertia = message.capturedByInertia;
|
||||
if (message.name != null && message.hasOwnProperty("name"))
|
||||
object.name = message.name;
|
||||
if (message.displayName != null && message.hasOwnProperty("displayName"))
|
||||
|
@@ -38,7 +38,7 @@
|
||||
"orientation": "portrait"
|
||||
},
|
||||
"startScene": "2ff474d9-0c9e-4fe3-87ec-fbff7cae85b4",
|
||||
"title": "TreasureHunterX",
|
||||
"title": "DelayNoMore",
|
||||
"webOrientation": "portrait",
|
||||
"wechatgame": {
|
||||
"REMOTE_SERVER_ROOT": "https://bgmoba.lokcol.com/static/",
|
||||
|
@@ -11,17 +11,17 @@ serve:
|
||||
clean:
|
||||
gopherjs clean
|
||||
rm -f ../frontend/assets/plugin_scripts/jsexport.js
|
||||
rm -f ../frontend/assets/plugin_scripts/jsexport.js.map
|
||||
#rm -f ../frontend/assets/plugin_scripts/jsexport.js.map
|
||||
|
||||
build: clean
|
||||
gopherjs build $(PROJECTNAME)
|
||||
mv ./jsexport.js ../frontend/assets/plugin_scripts/
|
||||
mv ./jsexport.js.map ../frontend/assets/plugin_scripts/
|
||||
#mv ./jsexport.js.map ../frontend/assets/plugin_scripts/
|
||||
|
||||
build-min: clean
|
||||
gopherjs build -m $(PROJECTNAME)
|
||||
mv ./jsexport.js ../frontend/assets/plugin_scripts/
|
||||
mv ./jsexport.js.map ../frontend/assets/plugin_scripts/
|
||||
#mv ./jsexport.js.map ../frontend/assets/plugin_scripts/
|
||||
|
||||
.PHONY: help
|
||||
|
||||
|
@@ -16,13 +16,13 @@ const (
|
||||
PATTERN_ID_UNABLE_TO_OP = -2
|
||||
PATTERN_ID_NO_OP = -1
|
||||
|
||||
WORLD_TO_VIRTUAL_GRID_RATIO = float64(100)
|
||||
WORLD_TO_VIRTUAL_GRID_RATIO = float64(100.0)
|
||||
VIRTUAL_GRID_TO_WORLD_RATIO = float64(1.0) / WORLD_TO_VIRTUAL_GRID_RATIO
|
||||
|
||||
GRAVITY_X = int32(0)
|
||||
GRAVITY_Y = -int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO) // makes all "playerCollider.Y" a multiple of 0.5 in all cases
|
||||
|
||||
INPUT_DELAY_FRAMES = int32(8) // in the count of render frames
|
||||
INPUT_DELAY_FRAMES = int32(4) // in the count of render frames
|
||||
INPUT_SCALE_FRAMES = uint32(2) // inputDelayedAndScaledFrameId = ((originalFrameId - InputDelayFrames) >> InputScaleFrames)
|
||||
NST_DELAY_FRAMES = int32(16) // network-single-trip delay in the count of render frames, proposed to be (InputDelayFrames >> 1) because we expect a round-trip delay to be exactly "InputDelayFrames"
|
||||
|
||||
@@ -77,6 +77,8 @@ const (
|
||||
|
||||
ATK_CHARACTER_STATE_DASHING = int32(15)
|
||||
ATK_CHARACTER_STATE_ONWALL = int32(16)
|
||||
|
||||
ATK_CHARACTER_STATE_TURNAROUND = int32(17)
|
||||
)
|
||||
|
||||
var inAirSet = map[int32]bool{
|
||||
@@ -446,7 +448,7 @@ func calcHardPushbacksNorms(joinIndex int32, currPlayerDownsync, thatPlayerInNex
|
||||
return &ret
|
||||
}
|
||||
|
||||
func deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame *PlayerDownsync, currRenderFrame *RoomDownsyncFrame, inputsBuffer *RingBuffer) (int, bool, int32, int32) {
|
||||
func deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame *PlayerDownsync, currRenderFrame *RoomDownsyncFrame, chConfig *CharacterConfig, inputsBuffer *RingBuffer) (int, bool, int32, int32) {
|
||||
// returns (patternId, jumpedOrNot, effectiveDx, effectiveDy)
|
||||
delayedInputFrameId := ConvertToDelayedInputFrameId(currRenderFrame.Id)
|
||||
delayedInputFrameIdForPrevRdf := ConvertToDelayedInputFrameId(currRenderFrame.Id - 1)
|
||||
@@ -476,11 +478,19 @@ func deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame *PlayerDownsync,
|
||||
prevBtnBLevel = prevDecodedInput.BtnBLevel
|
||||
}
|
||||
|
||||
// Jumping is partially allowed within "CapturedByInertia", but moving is only allowed when "0 == FramesToRecover" (constrained later in "ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame")
|
||||
if 0 == currPlayerDownsync.FramesToRecover {
|
||||
// Jumping and moving are only allowed here
|
||||
effDx, effDy = decodedInput.Dx, decodedInput.Dy
|
||||
}
|
||||
|
||||
patternId := PATTERN_ID_NO_OP
|
||||
canJumpWithinInertia := currPlayerDownsync.CapturedByInertia && ((chConfig.InertiaFramesToRecover >> 1) > currPlayerDownsync.FramesToRecover)
|
||||
if 0 == currPlayerDownsync.FramesToRecover || canJumpWithinInertia {
|
||||
if decodedInput.BtnBLevel > prevBtnBLevel {
|
||||
if _, existent := inAirSet[currPlayerDownsync.CharacterState]; !existent {
|
||||
if chConfig.DashingEnabled && 0 > decodedInput.Dy {
|
||||
// Checking "DashingEnabled" here to allow jumping when dashing-disabled players pressed "DOWN + BtnB"
|
||||
patternId = 5
|
||||
} else if _, existent := inAirSet[currPlayerDownsync.CharacterState]; !existent {
|
||||
jumpedOrNot = true
|
||||
} else if ATK_CHARACTER_STATE_ONWALL == currPlayerDownsync.CharacterState {
|
||||
jumpedOrNot = true
|
||||
@@ -488,18 +498,19 @@ func deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame *PlayerDownsync,
|
||||
}
|
||||
}
|
||||
|
||||
patternId := PATTERN_ID_NO_OP
|
||||
if 0 < decodedInput.BtnALevel {
|
||||
if decodedInput.BtnALevel > prevBtnALevel {
|
||||
if 0 > effDy {
|
||||
patternId = 3
|
||||
} else if 0 < effDy {
|
||||
patternId = 2
|
||||
if PATTERN_ID_NO_OP == patternId {
|
||||
if 0 < decodedInput.BtnALevel {
|
||||
if decodedInput.BtnALevel > prevBtnALevel {
|
||||
if 0 > decodedInput.Dy {
|
||||
patternId = 3
|
||||
} else if 0 < decodedInput.Dy {
|
||||
patternId = 2
|
||||
} else {
|
||||
patternId = 1
|
||||
}
|
||||
} else {
|
||||
patternId = 1
|
||||
patternId = 4 // Holding
|
||||
}
|
||||
} else {
|
||||
patternId = 4 // Holding
|
||||
}
|
||||
}
|
||||
|
||||
@@ -514,31 +525,32 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
||||
// Make a copy first
|
||||
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
|
||||
nextRenderFramePlayers[i] = &PlayerDownsync{
|
||||
Id: currPlayerDownsync.Id,
|
||||
VirtualGridX: currPlayerDownsync.VirtualGridX,
|
||||
VirtualGridY: currPlayerDownsync.VirtualGridY,
|
||||
DirX: currPlayerDownsync.DirX,
|
||||
DirY: currPlayerDownsync.DirY,
|
||||
VelX: currPlayerDownsync.VelX,
|
||||
VelY: currPlayerDownsync.VelY,
|
||||
CharacterState: currPlayerDownsync.CharacterState,
|
||||
InAir: true,
|
||||
OnWall: false,
|
||||
Speed: currPlayerDownsync.Speed,
|
||||
BattleState: currPlayerDownsync.BattleState,
|
||||
Score: currPlayerDownsync.Score,
|
||||
Removed: currPlayerDownsync.Removed,
|
||||
JoinIndex: currPlayerDownsync.JoinIndex,
|
||||
Hp: currPlayerDownsync.Hp,
|
||||
MaxHp: currPlayerDownsync.MaxHp,
|
||||
FramesToRecover: currPlayerDownsync.FramesToRecover - 1,
|
||||
FramesInChState: currPlayerDownsync.FramesInChState + 1,
|
||||
ActiveSkillId: currPlayerDownsync.ActiveSkillId,
|
||||
ActiveSkillHit: currPlayerDownsync.ActiveSkillHit,
|
||||
FramesInvinsible: currPlayerDownsync.FramesInvinsible - 1,
|
||||
ColliderRadius: currPlayerDownsync.ColliderRadius,
|
||||
OnWallNormX: currPlayerDownsync.OnWallNormX,
|
||||
OnWallNormY: currPlayerDownsync.OnWallNormY,
|
||||
Id: currPlayerDownsync.Id,
|
||||
VirtualGridX: currPlayerDownsync.VirtualGridX,
|
||||
VirtualGridY: currPlayerDownsync.VirtualGridY,
|
||||
DirX: currPlayerDownsync.DirX,
|
||||
DirY: currPlayerDownsync.DirY,
|
||||
VelX: currPlayerDownsync.VelX,
|
||||
VelY: currPlayerDownsync.VelY,
|
||||
CharacterState: currPlayerDownsync.CharacterState,
|
||||
InAir: true,
|
||||
OnWall: false,
|
||||
Speed: currPlayerDownsync.Speed,
|
||||
BattleState: currPlayerDownsync.BattleState,
|
||||
Score: currPlayerDownsync.Score,
|
||||
Removed: currPlayerDownsync.Removed,
|
||||
JoinIndex: currPlayerDownsync.JoinIndex,
|
||||
Hp: currPlayerDownsync.Hp,
|
||||
MaxHp: currPlayerDownsync.MaxHp,
|
||||
FramesToRecover: currPlayerDownsync.FramesToRecover - 1,
|
||||
FramesInChState: currPlayerDownsync.FramesInChState + 1,
|
||||
ActiveSkillId: currPlayerDownsync.ActiveSkillId,
|
||||
ActiveSkillHit: currPlayerDownsync.ActiveSkillHit,
|
||||
FramesInvinsible: currPlayerDownsync.FramesInvinsible - 1,
|
||||
ColliderRadius: currPlayerDownsync.ColliderRadius,
|
||||
OnWallNormX: currPlayerDownsync.OnWallNormX,
|
||||
OnWallNormY: currPlayerDownsync.OnWallNormY,
|
||||
CapturedByInertia: currPlayerDownsync.CapturedByInertia,
|
||||
}
|
||||
if nextRenderFramePlayers[i].FramesToRecover < 0 {
|
||||
nextRenderFramePlayers[i].FramesToRecover = 0
|
||||
@@ -559,7 +571,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
||||
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
|
||||
chConfig := chConfigsOrderedByJoinIndex[i]
|
||||
thatPlayerInNextFrame := nextRenderFramePlayers[i]
|
||||
patternId, jumpedOrNot, effDx, effDy := deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame, currRenderFrame, inputsBuffer)
|
||||
patternId, jumpedOrNot, effDx, effDy := deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame, currRenderFrame, chConfig, inputsBuffer)
|
||||
|
||||
jumpedOrNotList[i] = jumpedOrNot
|
||||
joinIndex := currPlayerDownsync.JoinIndex
|
||||
@@ -631,24 +643,59 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
||||
}
|
||||
|
||||
if 0 == currPlayerDownsync.FramesToRecover {
|
||||
if 0 != effDx {
|
||||
xfac := int32(1)
|
||||
if 0 > effDx {
|
||||
xfac = -xfac
|
||||
}
|
||||
thatPlayerInNextFrame.DirX = effDx
|
||||
thatPlayerInNextFrame.DirY = effDy
|
||||
|
||||
thatPlayerInNextFrame.VelX = xfac * currPlayerDownsync.Speed
|
||||
if intAbs(thatPlayerInNextFrame.VelX) < intAbs(currPlayerDownsync.VelX) {
|
||||
// Wall jumping
|
||||
thatPlayerInNextFrame.VelX = xfac * intAbs(currPlayerDownsync.VelX)
|
||||
}
|
||||
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_WALKING
|
||||
} else {
|
||||
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_IDLE1
|
||||
thatPlayerInNextFrame.VelX = 0
|
||||
prevCapturedByInertia := currPlayerDownsync.CapturedByInertia
|
||||
isWallJumping := (chConfig.OnWallEnabled && chConfig.WallJumpingInitVelX == intAbs(currPlayerDownsync.VelX))
|
||||
/*
|
||||
if isWallJumping {
|
||||
fmt.Printf("joinIndex=%d is wall jumping\n{renderFrame.id: %d, currPlayerDownsync.Speed: %d, currPlayerDownsync.VelX: %d}\n", currPlayerDownsync.JoinIndex, currRenderFrame.Id, currPlayerDownsync.Speed, currPlayerDownsync.VelX)
|
||||
}
|
||||
*/
|
||||
alignedWithInertia := true
|
||||
exactTurningAround := false
|
||||
if 0 == effDx && 0 != thatPlayerInNextFrame.VelX {
|
||||
alignedWithInertia = false
|
||||
} else if 0 != effDx && 0 == thatPlayerInNextFrame.VelX {
|
||||
alignedWithInertia = false
|
||||
} else if 0 > effDx*thatPlayerInNextFrame.VelX {
|
||||
alignedWithInertia = false
|
||||
exactTurningAround = true
|
||||
}
|
||||
|
||||
if !jumpedOrNot && !isWallJumping && !prevCapturedByInertia && !alignedWithInertia {
|
||||
/*
|
||||
[WARNING] A "turn-around", or in more generic direction schema a "change in direction" is a hurdle for our current "prediction+rollback" approach, yet applying a "FramesToRecover" for "turn-around" can alleviate the graphical inconsistence to a huge extent! For better operational experience, this is intentionally NOT APPLIED TO WALL JUMPING!
|
||||
|
||||
When "false == alignedWithInertia", we're GUARANTEED TO BE WRONG AT INPUT PREDICTION ON THE FRONTEND, but we COULD STILL BE RIGHT AT POSITION PREDICTION WITHIN "InertiaFramesToRecover" -- which together with "INPUT_DELAY_FRAMES" grants the frontend a big chance to be graphically consistent even upon wrong prediction!
|
||||
*/
|
||||
//fmt.Printf("joinIndex=%d is not wall jumping and not aligned w/ inertia\n{renderFrame.id: %d, effDx: %d, thatPlayerInNextFrame.VelX: %d}\n", currPlayerDownsync.JoinIndex, currRenderFrame.Id, effDx, thatPlayerInNextFrame.VelX)
|
||||
thatPlayerInNextFrame.CapturedByInertia = true
|
||||
thatPlayerInNextFrame.FramesToRecover = chConfig.InertiaFramesToRecover
|
||||
if exactTurningAround {
|
||||
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_TURNAROUND
|
||||
}
|
||||
} else {
|
||||
thatPlayerInNextFrame.CapturedByInertia = false
|
||||
if 0 != effDx {
|
||||
xfac := int32(1)
|
||||
if 0 > effDx {
|
||||
xfac = -xfac
|
||||
}
|
||||
thatPlayerInNextFrame.DirX = effDx
|
||||
thatPlayerInNextFrame.DirY = effDy
|
||||
|
||||
if isWallJumping {
|
||||
//fmt.Printf("joinIndex=%d is controlling while wall jumping\n{renderFrame.id: %d, currPlayerDownsync.Speed: %d, currPlayerDownsync.VelX: %d, effDx: %d}\n", currPlayerDownsync.JoinIndex, currRenderFrame.Id, currPlayerDownsync.Speed, currPlayerDownsync.VelX, effDx)
|
||||
thatPlayerInNextFrame.VelX = xfac * intAbs(currPlayerDownsync.VelX)
|
||||
} else {
|
||||
thatPlayerInNextFrame.VelX = xfac * currPlayerDownsync.Speed
|
||||
}
|
||||
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_WALKING
|
||||
} else {
|
||||
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_IDLE1
|
||||
thatPlayerInNextFrame.VelX = 0
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -705,6 +752,8 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
||||
if ATK_CHARACTER_STATE_ONWALL == currPlayerDownsync.CharacterState && !jumpedOrNotList[i] {
|
||||
thatPlayerInNextFrame.VelX += GRAVITY_X
|
||||
thatPlayerInNextFrame.VelY = chConfig.WallSlidingVelY
|
||||
} else if ATK_CHARACTER_STATE_DASHING == currPlayerDownsync.CharacterState {
|
||||
thatPlayerInNextFrame.VelX += GRAVITY_X
|
||||
} else {
|
||||
thatPlayerInNextFrame.VelX += GRAVITY_X
|
||||
thatPlayerInNextFrame.VelY += GRAVITY_Y
|
||||
@@ -1020,7 +1069,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
||||
if thatPlayerInNextFrame.InAir {
|
||||
oldNextCharacterState := thatPlayerInNextFrame.CharacterState
|
||||
switch oldNextCharacterState {
|
||||
case ATK_CHARACTER_STATE_IDLE1, ATK_CHARACTER_STATE_WALKING:
|
||||
case ATK_CHARACTER_STATE_IDLE1, ATK_CHARACTER_STATE_WALKING, ATK_CHARACTER_STATE_TURNAROUND:
|
||||
if thatPlayerInNextFrame.OnWall {
|
||||
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_ONWALL
|
||||
} else if jumpedOrNotList[i] || ATK_CHARACTER_STATE_INAIR_IDLE1_BY_JUMP == currPlayerDownsync.CharacterState {
|
||||
|
@@ -15,8 +15,9 @@ type CharacterConfig struct {
|
||||
GetUpInvinsibleFrames int32
|
||||
GetUpFramesToRecover int32
|
||||
|
||||
Speed int32
|
||||
JumpingInitVelY int32
|
||||
Speed int32
|
||||
JumpingInitVelY int32
|
||||
JumpingFramesToRecover int32 // Not used yet
|
||||
|
||||
DashingEnabled bool
|
||||
OnWallEnabled bool
|
||||
@@ -25,6 +26,8 @@ type CharacterConfig struct {
|
||||
WallJumpingInitVelY int32
|
||||
WallSlidingVelY int32
|
||||
|
||||
InertiaFramesToRecover int32
|
||||
|
||||
SkillMapper SkillMapperType
|
||||
}
|
||||
|
||||
@@ -42,8 +45,11 @@ var Characters = map[int]*CharacterConfig{
|
||||
GetUpInvinsibleFrames: int32(10),
|
||||
GetUpFramesToRecover: int32(27),
|
||||
|
||||
Speed: int32(float64(2.0) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
JumpingInitVelY: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
Speed: int32(float64(2.1) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
JumpingInitVelY: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
JumpingFramesToRecover: int32(2),
|
||||
|
||||
InertiaFramesToRecover: int32(9),
|
||||
|
||||
DashingEnabled: false,
|
||||
OnWallEnabled: false,
|
||||
@@ -88,13 +94,16 @@ var Characters = map[int]*CharacterConfig{
|
||||
GetUpInvinsibleFrames: int32(10),
|
||||
GetUpFramesToRecover: int32(27),
|
||||
|
||||
Speed: int32(float64(2.0) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
JumpingInitVelY: int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
Speed: int32(float64(2.19) * WORLD_TO_VIRTUAL_GRID_RATIO), // I don't know why "2.2" is so special that it throws a compile error
|
||||
JumpingInitVelY: int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
JumpingFramesToRecover: int32(2),
|
||||
|
||||
InertiaFramesToRecover: int32(9),
|
||||
|
||||
DashingEnabled: true,
|
||||
OnWallEnabled: true,
|
||||
WallJumpingFramesToRecover: int32(9), // 8 would be the minimum for an avg human
|
||||
WallJumpingInitVelX: int32(float64(2.5) * WORLD_TO_VIRTUAL_GRID_RATIO), // Default is "appeared facing right", but actually holding ctrl against left
|
||||
WallJumpingFramesToRecover: int32(8), // 8 would be the minimum for an avg human
|
||||
WallJumpingInitVelX: int32(float64(2.8) * WORLD_TO_VIRTUAL_GRID_RATIO), // Default is "appeared facing right", but actually holding ctrl against left
|
||||
WallJumpingInitVelY: int32(float64(7) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
WallSlidingVelY: int32(float64(-1) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
|
||||
@@ -119,6 +128,9 @@ var Characters = map[int]*CharacterConfig{
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if 5 == patternId {
|
||||
// Dashing is already constrained by "FramesToRecover & CapturedByInertia" in "deriveOpPattern"
|
||||
return 12
|
||||
}
|
||||
|
||||
// By default no skill can be fired
|
||||
@@ -138,8 +150,11 @@ var Characters = map[int]*CharacterConfig{
|
||||
GetUpInvinsibleFrames: int32(8),
|
||||
GetUpFramesToRecover: int32(30),
|
||||
|
||||
Speed: int32(float64(1.9) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
JumpingInitVelY: int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
Speed: int32(float64(1.8) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
JumpingInitVelY: int32(float64(7.8) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
JumpingFramesToRecover: int32(2),
|
||||
|
||||
InertiaFramesToRecover: int32(9),
|
||||
|
||||
DashingEnabled: false,
|
||||
OnWallEnabled: false,
|
||||
@@ -166,11 +181,11 @@ var Characters = map[int]*CharacterConfig{
|
||||
}
|
||||
}
|
||||
} else if 2 == patternId {
|
||||
if !currPlayerDownsync.InAir {
|
||||
if 0 == currPlayerDownsync.FramesToRecover && !currPlayerDownsync.InAir {
|
||||
return 11
|
||||
}
|
||||
} else if 3 == patternId {
|
||||
if !currPlayerDownsync.InAir {
|
||||
if 0 == currPlayerDownsync.FramesToRecover && !currPlayerDownsync.InAir {
|
||||
return 10
|
||||
}
|
||||
}
|
||||
@@ -496,7 +511,7 @@ var skills = map[int]*Skill{
|
||||
PushbackVelX: int32(float64(2) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
PushbackVelY: int32(0),
|
||||
HitboxOffsetX: int32(float64(24) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
HitboxOffsetY: int32(float64(5) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
HitboxOffsetY: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
HitboxSizeX: int32(float64(48) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
HitboxSizeY: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
BlowUp: false,
|
||||
@@ -535,6 +550,33 @@ var skills = map[int]*Skill{
|
||||
},
|
||||
},
|
||||
},
|
||||
12: &Skill{
|
||||
RecoveryFrames: int32(12),
|
||||
RecoveryFramesOnBlock: int32(12),
|
||||
RecoveryFramesOnHit: int32(12),
|
||||
ReleaseTriggerType: int32(1),
|
||||
BoundChState: ATK_CHARACTER_STATE_DASHING,
|
||||
Hits: []interface{}{
|
||||
&MeleeBullet{
|
||||
Bullet: &BulletConfig{
|
||||
StartupFrames: int32(0),
|
||||
ActiveFrames: int32(0),
|
||||
HitStunFrames: MAX_INT32,
|
||||
BlockStunFrames: int32(0),
|
||||
Damage: int32(0),
|
||||
SelfLockVelX: int32(float64(9) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||
SelfLockVelY: int32(0),
|
||||
PushbackVelX: NO_LOCK_VEL,
|
||||
PushbackVelY: NO_LOCK_VEL,
|
||||
HitboxOffsetX: int32(0),
|
||||
HitboxOffsetY: int32(0),
|
||||
HitboxSizeX: int32(0),
|
||||
HitboxSizeY: int32(0),
|
||||
BlowUp: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
255: &Skill{
|
||||
RecoveryFrames: int32(30),
|
||||
RecoveryFramesOnBlock: int32(30),
|
||||
|
@@ -37,6 +37,8 @@ type PlayerDownsync struct {
|
||||
OnWallNormX int32
|
||||
OnWallNormY int32
|
||||
|
||||
CapturedByInertia bool
|
||||
|
||||
ActiveSkillId int32
|
||||
ActiveSkillHit int32
|
||||
|
||||
|
@@ -42,7 +42,7 @@ func NewBarrierJs(boundary *Polygon2D) *js.Object {
|
||||
})
|
||||
}
|
||||
|
||||
func NewPlayerDownsyncJs(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY, framesToRecover, framesInChState, activeSkillId, activeSkillHit, framesInvinsible, speed, battleState, characterState, joinIndex, hp, maxHp, colliderRadius int32, inAir, onWall bool, onWallNormX, onWallNormY, bulletTeamId, chCollisionTeamId int32) *js.Object {
|
||||
func NewPlayerDownsyncJs(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY, framesToRecover, framesInChState, activeSkillId, activeSkillHit, framesInvinsible, speed, battleState, characterState, joinIndex, hp, maxHp, colliderRadius int32, inAir, onWall bool, onWallNormX, onWallNormY int32, capturedByInertia bool, bulletTeamId, chCollisionTeamId int32) *js.Object {
|
||||
return js.MakeWrapper(&PlayerDownsync{
|
||||
Id: id,
|
||||
VirtualGridX: virtualGridX,
|
||||
@@ -67,6 +67,7 @@ func NewPlayerDownsyncJs(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY,
|
||||
OnWall: onWall,
|
||||
OnWallNormX: onWallNormX,
|
||||
OnWallNormY: onWallNormY,
|
||||
CapturedByInertia: capturedByInertia,
|
||||
BulletTeamId: bulletTeamId,
|
||||
ChCollisionTeamId: chCollisionTeamId,
|
||||
})
|
||||
|