mirror of
https://github.com/genxium/DelayNoMore
synced 2024-12-25 11:18:55 +00:00
A temp broken commit except for OfflineMap - refactoring jumping.
This commit is contained in:
parent
b34fa79aeb
commit
c7fc377a2b
7
MULTIHIT_ROADMAP.md
Normal file
7
MULTIHIT_ROADMAP.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Major goals
|
||||||
|
- Create several skills that can be chained by pressing "btnA" 3 times, while the 2nd skill cancels the last hit of 1st skill before the latters' FramesToRecover is over, same goes with 2nd->3rd transition.
|
||||||
|
- Note that each skill can contain "multihit".
|
||||||
|
|
||||||
|
Minor goals
|
||||||
|
- Split jumping anim into "once" part and "keep" part, depending on "character.framesElapsedInChState" we should play the corresponding part
|
||||||
|
- Add new "chState = STUNNED", which is applicable to both on ground and in air, while "inAir && STUNNED", "character.FramesToRecover" is regarded as infinite. If implemented, make the last hit of the aforementioned 3rd skill "pushback opponent to air".
|
@ -35,10 +35,11 @@ func toPbRoomDownsyncFrame(rdf *battle.RoomDownsyncFrame) *pb.RoomDownsyncFrame
|
|||||||
JoinIndex: last.JoinIndex,
|
JoinIndex: last.JoinIndex,
|
||||||
ColliderRadius: last.ColliderRadius,
|
ColliderRadius: last.ColliderRadius,
|
||||||
Score: last.Score,
|
Score: last.Score,
|
||||||
FramesToRecover: last.FramesToRecover,
|
|
||||||
Hp: last.Hp,
|
Hp: last.Hp,
|
||||||
MaxHp: last.MaxHp,
|
MaxHp: last.MaxHp,
|
||||||
Removed: last.Removed,
|
Removed: last.Removed,
|
||||||
|
FramesToRecover: last.FramesToRecover,
|
||||||
|
FramesInChState: last.FramesInChState,
|
||||||
}
|
}
|
||||||
ret.PlayersArr[i] = pbPlayer
|
ret.PlayersArr[i] = pbPlayer
|
||||||
}
|
}
|
||||||
@ -100,6 +101,7 @@ func toPbPlayers(modelInstances map[int32]*Player, withMetaInfo bool) []*pb.Play
|
|||||||
Score: last.Score,
|
Score: last.Score,
|
||||||
Removed: last.Removed,
|
Removed: last.Removed,
|
||||||
FramesToRecover: last.FramesToRecover,
|
FramesToRecover: last.FramesToRecover,
|
||||||
|
FramesInChState: last.FramesInChState,
|
||||||
}
|
}
|
||||||
if withMetaInfo {
|
if withMetaInfo {
|
||||||
pbPlayer.Name = last.Name
|
pbPlayer.Name = last.Name
|
||||||
|
@ -744,7 +744,7 @@ func (pR *Room) OnDismissed() {
|
|||||||
|
|
||||||
// Always instantiates new HeapRAM blocks and let the old blocks die out due to not being retained by any root reference.
|
// Always instantiates new HeapRAM blocks and let the old blocks die out due to not being retained by any root reference.
|
||||||
pR.BulletBattleLocalIdCounter = 0
|
pR.BulletBattleLocalIdCounter = 0
|
||||||
pR.WorldToVirtualGridRatio = float64(100)
|
pR.WorldToVirtualGridRatio = battle.WORLD_TO_VIRTUAL_GRID_RATIO
|
||||||
pR.VirtualGridToWorldRatio = float64(1.0) / pR.WorldToVirtualGridRatio // this is a one-off computation, should avoid division in iterations
|
pR.VirtualGridToWorldRatio = float64(1.0) / pR.WorldToVirtualGridRatio // this is a one-off computation, should avoid division in iterations
|
||||||
pR.SpAtkLookupFrames = 5
|
pR.SpAtkLookupFrames = 5
|
||||||
pR.PlayerDefaultSpeed = int32(float64(1) * pR.WorldToVirtualGridRatio) // in virtual grids per frame
|
pR.PlayerDefaultSpeed = int32(float64(1) * pR.WorldToVirtualGridRatio) // in virtual grids per frame
|
||||||
@ -791,11 +791,6 @@ func (pR *Room) OnDismissed() {
|
|||||||
|
|
||||||
pR.BackendDynamicsEnabled = true // [WARNING] When "false", recovery upon reconnection wouldn't work!
|
pR.BackendDynamicsEnabled = true // [WARNING] When "false", recovery upon reconnection wouldn't work!
|
||||||
pR.ForceAllResyncOnAnyActiveSlowTicker = true // See tradeoff discussion in "downsyncToAllPlayers"
|
pR.ForceAllResyncOnAnyActiveSlowTicker = true // See tradeoff discussion in "downsyncToAllPlayers"
|
||||||
pR.SnapIntoPlatformOverlap = float64(0.1)
|
|
||||||
pR.SnapIntoPlatformThreshold = float64(0.5)
|
|
||||||
pR.JumpingInitVelY = int32(float64(7) * pR.WorldToVirtualGridRatio)
|
|
||||||
pR.GravityX = 0
|
|
||||||
pR.GravityY = -int32(float64(0.5) * pR.WorldToVirtualGridRatio) // makes all "playerCollider.Y" a multiple of 0.5 in all cases
|
|
||||||
|
|
||||||
pR.FrameDataLoggingEnabled = false // [WARNING] DON'T ENABLE ON LONG BATTLE DURATION! It consumes A LOT OF MEMORY!
|
pR.FrameDataLoggingEnabled = false // [WARNING] DON'T ENABLE ON LONG BATTLE DURATION! It consumes A LOT OF MEMORY!
|
||||||
|
|
||||||
@ -1275,7 +1270,7 @@ func (pR *Room) applyInputFrameDownsyncDynamics(fromRenderFrameId int32, toRende
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nextRenderFrame := battle.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(pR.InputsBuffer, currRenderFrame, pR.Space, pR.CollisionSysMap, pR.GravityX, pR.GravityY, pR.JumpingInitVelY, pR.InputDelayFrames, pR.InputScaleFrames, pR.collisionSpaceOffsetX, pR.collisionSpaceOffsetY, pR.SnapIntoPlatformOverlap, pR.SnapIntoPlatformThreshold, pR.WorldToVirtualGridRatio, pR.VirtualGridToWorldRatio, pR.playerOpPatternToSkillId)
|
nextRenderFrame := battle.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(pR.InputsBuffer, currRenderFrame, pR.Space, pR.CollisionSysMap, pR.InputDelayFrames, pR.InputScaleFrames, pR.collisionSpaceOffsetX, pR.collisionSpaceOffsetY, pR.SnapIntoPlatformOverlap, pR.SnapIntoPlatformThreshold, pR.WorldToVirtualGridRatio, pR.VirtualGridToWorldRatio, pR.playerOpPatternToSkillId)
|
||||||
pR.RenderFrameBuffer.Put(nextRenderFrame)
|
pR.RenderFrameBuffer.Put(nextRenderFrame)
|
||||||
pR.CurDynamicsRenderFrameId++
|
pR.CurDynamicsRenderFrameId++
|
||||||
}
|
}
|
||||||
|
@ -45,9 +45,10 @@ type PlayerDownsync struct {
|
|||||||
MaxHp int32 `protobuf:"varint,17,opt,name=maxHp,proto3" json:"maxHp,omitempty"`
|
MaxHp int32 `protobuf:"varint,17,opt,name=maxHp,proto3" json:"maxHp,omitempty"`
|
||||||
CharacterState int32 `protobuf:"varint,18,opt,name=characterState,proto3" json:"characterState,omitempty"`
|
CharacterState int32 `protobuf:"varint,18,opt,name=characterState,proto3" json:"characterState,omitempty"`
|
||||||
InAir bool `protobuf:"varint,19,opt,name=inAir,proto3" json:"inAir,omitempty"` // 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. "inAir (prev -> curr)"
|
InAir bool `protobuf:"varint,19,opt,name=inAir,proto3" json:"inAir,omitempty"` // 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. "inAir (prev -> curr)"
|
||||||
Name string `protobuf:"bytes,20,opt,name=name,proto3" json:"name,omitempty"`
|
FramesInChState int32 `protobuf:"varint,20,opt,name=framesInChState,proto3" json:"framesInChState,omitempty"` // number of frames elapsed in the current character state
|
||||||
DisplayName string `protobuf:"bytes,21,opt,name=displayName,proto3" json:"displayName,omitempty"`
|
Name string `protobuf:"bytes,997,opt,name=name,proto3" json:"name,omitempty"`
|
||||||
Avatar string `protobuf:"bytes,22,opt,name=avatar,proto3" json:"avatar,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"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *PlayerDownsync) Reset() {
|
func (x *PlayerDownsync) Reset() {
|
||||||
@ -215,6 +216,13 @@ func (x *PlayerDownsync) GetInAir() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *PlayerDownsync) GetFramesInChState() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.FramesInChState
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
func (x *PlayerDownsync) GetName() string {
|
func (x *PlayerDownsync) GetName() string {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.Name
|
return x.Name
|
||||||
@ -1306,7 +1314,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,
|
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,
|
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,
|
0x74, 0x6f, 0x73, 0x1a, 0x0e, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72,
|
||||||
0x6f, 0x74, 0x6f, 0x22, 0xf0, 0x04, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f,
|
0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x05, 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,
|
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,
|
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,
|
0x6c, 0x47, 0x72, 0x69, 0x64, 0x58, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x76, 0x69,
|
||||||
@ -1340,258 +1348,261 @@ var file_room_downsync_frame_proto_rawDesc = []byte{
|
|||||||
0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x12, 0x20, 0x01,
|
0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x12, 0x20, 0x01,
|
||||||
0x28, 0x05, 0x52, 0x0e, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61,
|
0x28, 0x05, 0x52, 0x0e, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61,
|
||||||
0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x41, 0x69, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28,
|
0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x41, 0x69, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28,
|
||||||
0x08, 0x52, 0x05, 0x69, 0x6e, 0x41, 0x69, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
|
0x08, 0x52, 0x05, 0x69, 0x6e, 0x41, 0x69, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d,
|
||||||
0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b,
|
0x65, 0x73, 0x49, 0x6e, 0x43, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28,
|
||||||
0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28,
|
0x05, 0x52, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x43, 0x68, 0x53, 0x74, 0x61,
|
||||||
0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16,
|
0x74, 0x65, 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xe5, 0x07, 0x20, 0x01, 0x28,
|
||||||
0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
|
0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c,
|
||||||
0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x6f, 0x0a, 0x11, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46,
|
0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0xe6, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,
|
||||||
0x72, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x64,
|
0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x06, 0x61, 0x76,
|
||||||
0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x64,
|
0x61, 0x74, 0x61, 0x72, 0x18, 0xe7, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61,
|
||||||
0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x62,
|
0x74, 0x61, 0x72, 0x22, 0x6f, 0x0a, 0x11, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d,
|
||||||
0x74, 0x6e, 0x41, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
|
0x65, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x64, 0x78, 0x18, 0x01,
|
||||||
0x62, 0x74, 0x6e, 0x41, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x74, 0x6e,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x64, 0x79, 0x18, 0x02,
|
||||||
0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x74,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x74, 0x6e, 0x41,
|
||||||
0x6e, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x50, 0x0a, 0x10, 0x49, 0x6e, 0x70, 0x75, 0x74,
|
0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x74, 0x6e,
|
||||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x69,
|
0x41, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x74, 0x6e, 0x42, 0x4c, 0x65,
|
||||||
0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
|
0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x74, 0x6e, 0x42, 0x4c,
|
||||||
0x05, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12,
|
0x65, 0x76, 0x65, 0x6c, 0x22, 0x50, 0x0a, 0x10, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61,
|
||||||
0x18, 0x0a, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
|
0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75,
|
||||||
0x52, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x22, 0x7c, 0x0a, 0x12, 0x49, 0x6e, 0x70,
|
0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c,
|
||||||
0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x12,
|
0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07,
|
||||||
0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18,
|
0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65,
|
||||||
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d,
|
0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x22, 0x7c, 0x0a, 0x12, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46,
|
||||||
0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4c, 0x69, 0x73, 0x74,
|
0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x22, 0x0a, 0x0c,
|
||||||
0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4c, 0x69, 0x73,
|
0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
|
||||||
0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69,
|
0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64,
|
||||||
0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72,
|
0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20,
|
||||||
0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x0f, 0x48, 0x65, 0x61, 0x72, 0x74,
|
0x03, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24,
|
||||||
0x62, 0x65, 0x61, 0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6c,
|
0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18,
|
||||||
0x69, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20,
|
0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64,
|
||||||
0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73,
|
0x4c, 0x69, 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x0f, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61,
|
||||||
0x74, 0x61, 0x6d, 0x70, 0x22, 0xb8, 0x02, 0x0a, 0x05, 0x57, 0x73, 0x52, 0x65, 0x71, 0x12, 0x14,
|
0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e,
|
||||||
0x0a, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d,
|
0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
|
||||||
0x73, 0x67, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64,
|
0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64,
|
0x70, 0x22, 0xb8, 0x02, 0x0a, 0x05, 0x57, 0x73, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x6d,
|
||||||
0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x61,
|
0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x73, 0x67, 0x49,
|
||||||
0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18,
|
0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20,
|
||||||
0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78,
|
0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a,
|
||||||
0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49,
|
0x03, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x61, 0x63, 0x74, 0x12,
|
||||||
0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46,
|
0x1c, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01,
|
||||||
0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67,
|
0x28, 0x05, 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a,
|
||||||
0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01,
|
0x0d, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x05,
|
||||||
0x28, 0x05, 0x52, 0x12, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x61, 0x6d,
|
||||||
0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x4e, 0x0a, 0x15, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46,
|
0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70,
|
||||||
0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x18,
|
0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49,
|
0x12, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d,
|
||||||
0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x52,
|
0x65, 0x49, 0x64, 0x12, 0x4e, 0x0a, 0x15, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d,
|
||||||
0x15, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e,
|
0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x03,
|
||||||
0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x27, 0x0a, 0x02, 0x68, 0x62, 0x18, 0x08, 0x20, 0x01,
|
0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75,
|
||||||
0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x72,
|
0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x15, 0x69, 0x6e,
|
||||||
0x74, 0x62, 0x65, 0x61, 0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x02, 0x68, 0x62, 0x22,
|
0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61,
|
||||||
0x89, 0x02, 0x0a, 0x06, 0x57, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65,
|
0x74, 0x63, 0x68, 0x12, 0x27, 0x0a, 0x02, 0x68, 0x62, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
||||||
0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0b,
|
0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65,
|
||||||
0x65, 0x63, 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
|
0x61, 0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x02, 0x68, 0x62, 0x22, 0x89, 0x02, 0x0a,
|
||||||
0x05, 0x52, 0x0b, 0x65, 0x63, 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x10,
|
0x06, 0x57, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, 0x74, 0x18, 0x01,
|
||||||
0x0a, 0x03, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x61, 0x63, 0x74,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x63, 0x68,
|
||||||
0x12, 0x2b, 0x0a, 0x03, 0x72, 0x64, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
|
0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
|
||||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x73,
|
0x65, 0x63, 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61,
|
||||||
0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x03, 0x72, 0x64, 0x66, 0x12, 0x54, 0x0a,
|
0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x61, 0x63, 0x74, 0x12, 0x2b, 0x0a,
|
||||||
0x17, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73,
|
0x03, 0x72, 0x64, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f,
|
||||||
0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a,
|
0x74, 0x6f, 0x73, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63,
|
||||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61,
|
0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x03, 0x72, 0x64, 0x66, 0x12, 0x54, 0x0a, 0x17, 0x69, 0x6e,
|
||||||
0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x17, 0x69, 0x6e, 0x70, 0x75,
|
0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63,
|
||||||
0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61,
|
0x42, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72,
|
||||||
0x74, 0x63, 0x68, 0x12, 0x36, 0x0a, 0x08, 0x62, 0x63, 0x69, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18,
|
0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44,
|
||||||
0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x42,
|
0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x17, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72,
|
||||||
0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66,
|
0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68,
|
||||||
0x6f, 0x52, 0x08, 0x62, 0x63, 0x69, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x22, 0xf4, 0x01, 0x0a, 0x14,
|
0x12, 0x36, 0x0a, 0x08, 0x62, 0x63, 0x69, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01,
|
||||||
0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70,
|
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x74,
|
||||||
0x73, 0x68, 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6e, 0x64, 0x65,
|
0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08,
|
||||||
0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10,
|
0x62, 0x63, 0x69, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x22, 0xf4, 0x01, 0x0a, 0x14, 0x49, 0x6e, 0x70,
|
||||||
0x72, 0x65, 0x66, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64,
|
0x75, 0x74, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
|
||||||
0x12, 0x28, 0x0a, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d,
|
0x74, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72,
|
||||||
0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6e,
|
0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x72, 0x65, 0x66,
|
||||||
0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x58, 0x0a, 0x19, 0x74, 0x6f,
|
0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a,
|
||||||
0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f,
|
0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b,
|
||||||
0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
|
0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72,
|
||||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d,
|
0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x58, 0x0a, 0x19, 0x74, 0x6f, 0x53, 0x65, 0x6e,
|
||||||
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,
|
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,
|
0x79, 0x6e, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f,
|
||||||
0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52,
|
0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f,
|
||||||
0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79,
|
0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x19, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e,
|
||||||
0x6e, 0x63, 0x22, 0x95, 0x06, 0x0a, 0x0b, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c,
|
0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63,
|
||||||
0x65, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4c, 0x6f, 0x63, 0x61,
|
0x73, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65,
|
||||||
0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x62, 0x61, 0x74, 0x74, 0x6c,
|
0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68,
|
||||||
0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72,
|
0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x22,
|
||||||
0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
|
0x95, 0x06, 0x0a, 0x0b, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x12,
|
||||||
0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x22,
|
0x24, 0x0a, 0x0d, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64,
|
||||||
0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03,
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4c, 0x6f,
|
||||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d,
|
0x63, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70,
|
||||||
0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x46, 0x72,
|
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x74,
|
||||||
0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f,
|
0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61,
|
||||||
0x76, 0x65, 0x72, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x72, 0x65,
|
0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
|
||||||
0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x4f, 0x6e, 0x42, 0x6c,
|
0x05, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12,
|
||||||
0x6f, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x72, 0x65, 0x63, 0x6f, 0x76,
|
0x26, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
||||||
|
0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72,
|
||||||
|
0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x72, 0x65, 0x63, 0x6f, 0x76,
|
||||||
0x65, 0x72, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x4f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
|
0x65, 0x72, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x4f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
|
||||||
0x12, 0x30, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x46, 0x72, 0x61, 0x6d,
|
0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
|
||||||
0x65, 0x73, 0x4f, 0x6e, 0x48, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x72,
|
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x4f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x30, 0x0a,
|
||||||
0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x4f, 0x6e, 0x48,
|
0x13, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x4f,
|
||||||
0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73,
|
0x6e, 0x48, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x72, 0x65, 0x63, 0x6f,
|
||||||
0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78,
|
0x76, 0x65, 0x72, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x4f, 0x6e, 0x48, 0x69, 0x74, 0x12,
|
||||||
0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e,
|
0x22, 0x0a, 0x0c, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18,
|
||||||
0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49,
|
0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66,
|
||||||
0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61,
|
0x73, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65,
|
||||||
0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64,
|
0x64, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x08,
|
||||||
0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64,
|
||||||
0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e,
|
0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a,
|
||||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53,
|
0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x09,
|
||||||
0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61,
|
||||||
0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
|
0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e,
|
||||||
0x12, 0x1a, 0x0a, 0x08, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x0b, 0x20, 0x01,
|
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x62, 0x6c,
|
||||||
0x28, 0x01, 0x52, 0x08, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x2e, 0x0a, 0x12,
|
0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a,
|
||||||
0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79,
|
0x08, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52,
|
||||||
0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73,
|
0x08, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x6c,
|
||||||
0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06,
|
0x65, 0x61, 0x73, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18,
|
||||||
0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61,
|
0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x54, 0x72,
|
||||||
0x6d, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72,
|
0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x6d,
|
||||||
0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52,
|
0x61, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67,
|
||||||
0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64,
|
0x65, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69,
|
||||||
0x65, 0x78, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x6c,
|
0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6f, 0x66,
|
||||||
0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6f, 0x66,
|
0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12,
|
||||||
0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20,
|
0x2a, 0x0a, 0x10, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65,
|
||||||
0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x18, 0x10, 0x20,
|
0x72, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6f, 0x66, 0x66, 0x65, 0x6e,
|
||||||
0x01, 0x28, 0x01, 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x58,
|
0x64, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x68,
|
||||||
0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x18,
|
0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01,
|
||||||
0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a,
|
0x52, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a,
|
||||||
0x65, 0x59, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x6c, 0x66, 0x4d, 0x6f, 0x76, 0x65, 0x66, 0x6f,
|
0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x18, 0x11, 0x20, 0x01,
|
||||||
0x72, 0x77, 0x61, 0x72, 0x64, 0x58, 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x73, 0x65,
|
0x28, 0x01, 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x12,
|
||||||
0x6c, 0x66, 0x4d, 0x6f, 0x76, 0x65, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x58, 0x12, 0x2a,
|
0x2a, 0x0a, 0x10, 0x73, 0x65, 0x6c, 0x66, 0x4d, 0x6f, 0x76, 0x65, 0x66, 0x6f, 0x72, 0x77, 0x61,
|
||||||
0x0a, 0x10, 0x73, 0x65, 0x6c, 0x66, 0x4d, 0x6f, 0x76, 0x65, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72,
|
0x72, 0x64, 0x58, 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x73, 0x65, 0x6c, 0x66, 0x4d,
|
||||||
0x64, 0x59, 0x18, 0x13, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x73, 0x65, 0x6c, 0x66, 0x4d, 0x6f,
|
0x6f, 0x76, 0x65, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x58, 0x12, 0x2a, 0x0a, 0x10, 0x73,
|
||||||
0x76, 0x65, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x59, 0x22, 0x8d, 0x0b, 0x0a, 0x12, 0x42,
|
0x65, 0x6c, 0x66, 0x4d, 0x6f, 0x76, 0x65, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x59, 0x18,
|
||||||
0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66,
|
0x13, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x73, 0x65, 0x6c, 0x66, 0x4d, 0x6f, 0x76, 0x65, 0x66,
|
||||||
0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01,
|
0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x59, 0x22, 0x8d, 0x0b, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x74,
|
||||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
|
0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c,
|
||||||
0x26, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65,
|
0x0a, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||||
0x57, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x44, 0x69,
|
0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e,
|
||||||
0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x57, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x67, 0x65,
|
0x73, 0x74, 0x61, 0x67, 0x65, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x57, 0x18, 0x02,
|
||||||
0x44, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x48, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x44, 0x69, 0x73, 0x63, 0x72,
|
||||||
0x0e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x48, 0x12,
|
0x65, 0x74, 0x65, 0x57, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x44, 0x69, 0x73,
|
||||||
0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6c, 0x65, 0x57, 0x18, 0x04, 0x20,
|
0x63, 0x72, 0x65, 0x74, 0x65, 0x48, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x74,
|
||||||
0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6c, 0x65, 0x57, 0x12,
|
0x61, 0x67, 0x65, 0x44, 0x69, 0x73, 0x63, 0x72, 0x65, 0x74, 0x65, 0x48, 0x12, 0x1e, 0x0a, 0x0a,
|
||||||
0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6c, 0x65, 0x48, 0x18, 0x05, 0x20,
|
0x73, 0x74, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6c, 0x65, 0x57, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
|
||||||
0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6c, 0x65, 0x48, 0x12,
|
0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6c, 0x65, 0x57, 0x12, 0x1e, 0x0a, 0x0a,
|
||||||
0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e,
|
0x73, 0x74, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6c, 0x65, 0x48, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
|
||||||
0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61,
|
0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6c, 0x65, 0x48, 0x12, 0x26, 0x0a, 0x0e,
|
||||||
0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x0a, 0x15, 0x77, 0x69, 0x6c, 0x6c, 0x4b,
|
0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x18, 0x06,
|
||||||
0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x6f, 0x72,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f,
|
||||||
0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x77, 0x69, 0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b,
|
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, 0x12, 0x20, 0x0a,
|
0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x6f, 0x72, 0x18, 0x07, 0x20,
|
||||||
0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01,
|
0x01, 0x28, 0x05, 0x52, 0x15, 0x77, 0x69, 0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49,
|
||||||
0x28, 0x05, 0x52, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12,
|
0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6f,
|
||||||
0x32, 0x0a, 0x14, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
|
0x75, 0x6e, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x62,
|
0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x14,
|
||||||
0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x61,
|
0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72,
|
||||||
0x6d, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72,
|
0x61, 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x62, 0x61, 0x74, 0x74,
|
||||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03,
|
0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
|
||||||
0x52, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
0x12, 0x30, 0x0a, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
|
||||||
0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46,
|
0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x62,
|
||||||
0x70, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
|
0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6e,
|
||||||
0x46, 0x70, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x65, 0x6c, 0x61,
|
0x6f, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x70, 0x73, 0x18,
|
||||||
0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x69,
|
0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x70, 0x73,
|
||||||
0x6e, 0x70, 0x75, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12,
|
0x12, 0x2a, 0x0a, 0x10, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x46, 0x72,
|
||||||
0x2a, 0x0a, 0x10, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x46, 0x72, 0x61,
|
0x61, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x69, 0x6e, 0x70, 0x75,
|
||||||
0x6d, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x69, 0x6e, 0x70, 0x75, 0x74,
|
0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x10,
|
||||||
0x53, 0x63, 0x61, 0x6c, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6e,
|
0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
|
||||||
0x73, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0e, 0x20,
|
0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x63, 0x61,
|
||||||
0x01, 0x28, 0x05, 0x52, 0x0e, 0x6e, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x46, 0x72, 0x61,
|
0x6c, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x73, 0x74, 0x44,
|
||||||
0x6d, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x1e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d,
|
0x65, 0x6c, 0x61, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05,
|
||||||
0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x6f, 0x6c, 0x65,
|
0x52, 0x0e, 0x6e, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
|
||||||
0x72, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1e, 0x69, 0x6e, 0x70,
|
0x12, 0x46, 0x0a, 0x1e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70,
|
||||||
0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c,
|
0x73, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e,
|
||||||
0x61, 0x79, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x1f, 0x6d,
|
0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46,
|
||||||
0x61, 0x78, 0x43, 0x68, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46,
|
0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54,
|
||||||
0x72, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x10,
|
0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x43,
|
||||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73, 0x69, 0x6e, 0x67,
|
0x68, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d,
|
||||||
0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x55,
|
0x65, 0x73, 0x50, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28,
|
||||||
0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42,
|
0x05, 0x52, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e,
|
||||||
0x61, 0x74, 0x74, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05,
|
0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61,
|
||||||
0x52, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x53, 0x74,
|
0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x61, 0x74, 0x74,
|
||||||
0x61, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x19, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45,
|
0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x70,
|
||||||
0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73,
|
0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65,
|
||||||
0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b,
|
0x12, 0x3c, 0x0a, 0x19, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69,
|
||||||
0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69,
|
0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x12, 0x20,
|
||||||
0x73, 0x12, 0x3a, 0x0a, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74,
|
0x01, 0x28, 0x01, 0x52, 0x19, 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, 0x13, 0x20,
|
0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x3a,
|
||||||
0x01, 0x28, 0x03, 0x52, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74,
|
0x0a, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61,
|
||||||
0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x38, 0x0a,
|
0x74, 0x65, 0x64, 0x44, 0x74, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03,
|
||||||
0x17, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x54, 0x6f, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47,
|
0x52, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61,
|
||||||
0x72, 0x69, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17,
|
0x74, 0x65, 0x64, 0x44, 0x74, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x38, 0x0a, 0x17, 0x77, 0x6f,
|
||||||
0x77, 0x6f, 0x72, 0x6c, 0x64, 0x54, 0x6f, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72,
|
0x72, 0x6c, 0x64, 0x54, 0x6f, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64,
|
||||||
0x69, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x38, 0x0a, 0x17, 0x76, 0x69, 0x72, 0x74, 0x75,
|
0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17, 0x77, 0x6f, 0x72,
|
||||||
0x61, 0x6c, 0x47, 0x72, 0x69, 0x64, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x52, 0x61, 0x74,
|
0x6c, 0x64, 0x54, 0x6f, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64, 0x52,
|
||||||
0x69, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61,
|
0x61, 0x74, 0x69, 0x6f, 0x12, 0x38, 0x0a, 0x17, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47,
|
||||||
0x6c, 0x47, 0x72, 0x69, 0x64, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x52, 0x61, 0x74, 0x69,
|
0x72, 0x69, 0x64, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18,
|
||||||
0x6f, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x70, 0x41, 0x74, 0x6b, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70,
|
0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72,
|
||||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x73, 0x70,
|
0x69, 0x64, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x2c,
|
||||||
0x41, 0x74, 0x6b, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12,
|
0x0a, 0x11, 0x73, 0x70, 0x41, 0x74, 0x6b, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x61,
|
||||||
0x28, 0x0a, 0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69,
|
0x6d, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x73, 0x70, 0x41, 0x74, 0x6b,
|
||||||
0x7a, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72,
|
0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f,
|
||||||
0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x73, 0x6e, 0x61,
|
0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18,
|
||||||
0x70, 0x49, 0x6e, 0x74, 0x6f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4f, 0x76, 0x65,
|
0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61, 0x63,
|
||||||
0x72, 0x6c, 0x61, 0x70, 0x18, 0x18, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17, 0x73, 0x6e, 0x61, 0x70,
|
0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x73, 0x6e, 0x61, 0x70, 0x49, 0x6e,
|
||||||
0x49, 0x6e, 0x74, 0x6f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4f, 0x76, 0x65, 0x72,
|
0x74, 0x6f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61,
|
||||||
0x6c, 0x61, 0x70, 0x12, 0x3c, 0x0a, 0x19, 0x73, 0x6e, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x6f, 0x50,
|
0x70, 0x18, 0x18, 0x20, 0x01, 0x28, 0x01, 0x52, 0x17, 0x73, 0x6e, 0x61, 0x70, 0x49, 0x6e, 0x74,
|
||||||
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64,
|
0x6f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x70,
|
||||||
0x18, 0x19, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x73, 0x6e, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x6f,
|
0x12, 0x3c, 0x0a, 0x19, 0x73, 0x6e, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x6f, 0x50, 0x6c, 0x61, 0x74,
|
||||||
0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
|
0x66, 0x6f, 0x72, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x19, 0x20,
|
||||||
0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6a, 0x75, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x69, 0x74,
|
0x01, 0x28, 0x01, 0x52, 0x19, 0x73, 0x6e, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x6f, 0x50, 0x6c, 0x61,
|
||||||
0x56, 0x65, 0x6c, 0x59, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6a, 0x75, 0x6d, 0x70,
|
0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x28,
|
||||||
0x69, 0x6e, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x1a, 0x0a, 0x08, 0x67,
|
0x0a, 0x0f, 0x6a, 0x75, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x65, 0x6c,
|
||||||
0x72, 0x61, 0x76, 0x69, 0x74, 0x79, 0x58, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67,
|
0x59, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6a, 0x75, 0x6d, 0x70, 0x69, 0x6e, 0x67,
|
||||||
0x72, 0x61, 0x76, 0x69, 0x74, 0x79, 0x58, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x76, 0x69,
|
0x49, 0x6e, 0x69, 0x74, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x76,
|
||||||
0x74, 0x79, 0x59, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x72, 0x61, 0x76, 0x69,
|
0x69, 0x74, 0x79, 0x58, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x72, 0x61, 0x76,
|
||||||
0x74, 0x79, 0x59, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e,
|
0x69, 0x74, 0x79, 0x58, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x79, 0x59,
|
||||||
0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63,
|
0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x79, 0x59,
|
||||||
0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x12,
|
0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e,
|
||||||
0x39, 0x0a, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x67,
|
0x53, 0x74, 0x65, 0x70, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x6f, 0x6c, 0x6c,
|
||||||
0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0xe7, 0x07, 0x20, 0x01, 0x28,
|
0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x12, 0x39, 0x0a, 0x17,
|
||||||
0x08, 0x52, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x67,
|
0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67,
|
||||||
0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xe4, 0x03, 0x0a, 0x11, 0x52,
|
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0xe7, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17,
|
||||||
0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67,
|
||||||
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64,
|
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xe4, 0x03, 0x0a, 0x11, 0x52, 0x6f, 0x6f, 0x6d,
|
||||||
0x12, 0x36, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x18, 0x02,
|
0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a,
|
||||||
0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x50, 0x6c,
|
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a,
|
||||||
0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x0a, 0x70, 0x6c,
|
0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28,
|
||||||
0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x75, 0x6e,
|
0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65,
|
||||||
0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
|
0x72, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65,
|
||||||
0x52, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73,
|
0x72, 0x73, 0x41, 0x72, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f,
|
||||||
0x12, 0x37, 0x0a, 0x0c, 0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73,
|
0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63,
|
||||||
0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
|
0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x37, 0x0a,
|
||||||
0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x0c, 0x6d, 0x65, 0x6c,
|
0x0c, 0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20,
|
||||||
0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x16, 0x62, 0x61, 0x63,
|
0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4d, 0x65, 0x6c,
|
||||||
0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d,
|
0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x0c, 0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42,
|
||||||
0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x62, 0x61, 0x63, 0x6b, 0x65,
|
0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x16, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e,
|
||||||
0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73,
|
0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b,
|
||||||
0x6b, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65,
|
0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55,
|
||||||
0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68,
|
0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x2c,
|
||||||
0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x12,
|
0x0a, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73,
|
||||||
0x73, 0x0a, 0x18, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x50, 0x61, 0x74, 0x74, 0x65,
|
0x79, 0x6e, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c,
|
||||||
0x72, 0x6e, 0x54, 0x6f, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28,
|
0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x73, 0x0a, 0x18,
|
||||||
0x0b, 0x32, 0x37, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x44,
|
0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x54,
|
||||||
0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x50, 0x6c, 0x61,
|
0x6f, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37,
|
||||||
0x79, 0x65, 0x72, 0x4f, 0x70, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x54, 0x6f, 0x53, 0x6b,
|
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e,
|
||||||
0x69, 0x6c, 0x6c, 0x49, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x18, 0x70, 0x6c, 0x61, 0x79,
|
0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
|
||||||
0x65, 0x72, 0x4f, 0x70, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x54, 0x6f, 0x53, 0x6b, 0x69,
|
0x4f, 0x70, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x54, 0x6f, 0x53, 0x6b, 0x69, 0x6c, 0x6c,
|
||||||
0x6c, 0x6c, 0x49, 0x64, 0x1a, 0x4b, 0x0a, 0x1d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70,
|
0x49, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x18, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f,
|
||||||
0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x54, 0x6f, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64,
|
0x70, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x54, 0x6f, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49,
|
||||||
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
|
0x64, 0x1a, 0x4b, 0x0a, 0x1d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x50, 0x61, 0x74,
|
||||||
0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
|
0x74, 0x65, 0x72, 0x6e, 0x54, 0x6f, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x45, 0x6e, 0x74,
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
|
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
0x01, 0x42, 0x13, 0x5a, 0x11, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x73, 0x72, 0x76, 0x2f,
|
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
|
||||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 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 (
|
var (
|
||||||
|
1
collider_visualizer/README.md
Normal file
1
collider_visualizer/README.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
This module is no longer useful, as we can now use GopherJs+OfflineMap to visualize experimental game dynamics.
|
File diff suppressed because one or more lines are too long
7
frontend/assets/resources/animation/MonkGirl.meta
Normal file
7
frontend/assets/resources/animation/MonkGirl.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.0.1",
|
||||||
|
"uuid": "a0021cb4-2c2e-49ca-8699-7acf4f7a531b",
|
||||||
|
"isSubpackage": false,
|
||||||
|
"subpackageName": "",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
49
frontend/assets/resources/animation/MonkGirl/Atk1.anim
Normal file
49
frontend/assets/resources/animation/MonkGirl/Atk1.anim
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "Atk1",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.36666666666666664,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 1,
|
||||||
|
"wrapMode": 1,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "a5615ed4-d055-4db5-b924-4c8d8b2d926f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.03333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "12b90556-58b9-4311-b5d9-820fb76d659b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.11666666666666667,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "72bc74a1-6e8c-48bb-9ab2-9b8f502ceffb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.31666666666666665,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "7e619896-100d-4903-b256-e30ddb5ad397"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.35,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "4a35e0f5-95c4-445b-8f9b-6514a060a72d"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "c3d4f508-b3a9-4deb-b2d1-8ddc7bf22e0c",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
37
frontend/assets/resources/animation/MonkGirl/Atked1.anim
Normal file
37
frontend/assets/resources/animation/MonkGirl/Atked1.anim
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "Atked1",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.05,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 0.4,
|
||||||
|
"wrapMode": 1,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "df446561-abb9-4d91-aa79-636bdf3d9335"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.016666666666666666,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "852471cd-6270-47d2-b40b-e33a93910240"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.03333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "7d08ee55-243c-4bb0-b614-1cd09cabf13f"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "1ec27664-cd2a-4c7a-838f-953a7713ceca",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
43
frontend/assets/resources/animation/MonkGirl/BlownUp1.anim
Normal file
43
frontend/assets/resources/animation/MonkGirl/BlownUp1.anim
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "BlownUp1",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.06666666666666667,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 0.2,
|
||||||
|
"wrapMode": 2,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "9d16c119-8ead-4d9e-90b3-5bbf749f71ef"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.016666666666666666,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "f2629502-5c62-4df2-9741-58fe94bfab53"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.03333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "d6a81e68-5f14-45d1-82e2-fabf2853685a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.05,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "9f7382dd-4da6-485c-8064-78ec031a2c0a"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "f87054fd-328f-4001-a8ff-b4c049cc1e6d",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
79
frontend/assets/resources/animation/MonkGirl/GetUp1.anim
Normal file
79
frontend/assets/resources/animation/MonkGirl/GetUp1.anim
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "GetUp1",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.16666666666666666,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 0.3,
|
||||||
|
"wrapMode": 1,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "4b1219ad-ef64-47f6-87ca-16188343c47a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.016666666666666666,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "49e7f092-85c2-4eb3-a62a-965e9e0d9c12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.03333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "73023874-a74c-4e9f-8389-d4280d7be452"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.05,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "ed62daef-540c-4b34-81d3-99c4296d6ca9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.06666666666666667,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "cdbcadf6-4e4f-4673-8044-51b40c58da96"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.08333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "7ae337de-a63f-41ef-9627-84f9ced77d6f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.1,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "931626d5-01ad-4329-a8f7-9a00bd64fdff"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.11666666666666667,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "d4c2dae6-8ff6-4976-8e50-cb0b698d93d4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.13333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "b328d317-3721-4402-89db-34910c31a48a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.15,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "a51ca0c2-3e3b-4b7b-b636-1cac791c2511"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "7cb4d395-c68f-4643-9e2e-8cb8e200d3a5",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
85
frontend/assets/resources/animation/MonkGirl/Idle1.anim
Normal file
85
frontend/assets/resources/animation/MonkGirl/Idle1.anim
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "Idle1",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.45,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 1,
|
||||||
|
"wrapMode": 2,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "104ab450-fec3-4ea8-b6c0-aca74a826f5a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.016666666666666666,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "4bad7430-7b43-47ae-9d65-ef3a2b88f450"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.03333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "c3675bd6-4aa6-4ec5-80d5-ef35862d15b9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.08333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "23446a26-dadf-4d7d-9dd3-4ca3f8f6b7a5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.13333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "47628469-7775-4daf-b321-74fac947ce60"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.18333333333333332,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "1c37ea82-6700-4bea-9265-c70a16d2187c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.23333333333333334,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "c4fb2fc2-7a04-4219-b129-77249f33426b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.2833333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "0ecf4a0c-0f13-42fa-a214-b4826acd8556"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.3333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "cabf9cb6-99ca-426d-9a23-95cdec6f06b9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.38333333333333336,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "94d073e8-f17f-4a66-be72-2b8cf3347ea4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.43333333333333335,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "3a435737-51d0-4f31-ad2b-838d9d98bad3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "a0d8b9a6-7bf7-4cf5-aecb-54b2908cbfb3",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
97
frontend/assets/resources/animation/MonkGirl/InAirAtk1.anim
Normal file
97
frontend/assets/resources/animation/MonkGirl/InAirAtk1.anim
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "InAirAtk1",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.4166666666666667,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 1,
|
||||||
|
"wrapMode": 1,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "3631c1af-5426-420e-9c81-47d8dc4790f7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.03333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "f10683b4-2dd8-48d9-b11d-3e7fd12e2dee"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.06666666666666667,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "6134b002-58ed-4d78-af23-5f574661b04b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.1,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "5db472a6-3371-4a5b-860d-e6ea6a9eaba0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.13333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "769179e3-d0bb-4bd0-a084-ce5ad5b57d47"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.16666666666666666,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "8f09ba68-066c-4240-84be-390cdbb2d59c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.2,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "e8ce0f1e-6af0-423b-9448-2a72c944127d"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.23333333333333334,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "1da322c5-98b8-49d0-8f96-33fdc68a23cb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.26666666666666666,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "1e4bf242-5d08-4220-a5d9-2a2524b0e3c7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.3,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "6de218a1-5a97-405d-b7d0-68cc9cf076f9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.3333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "4c16e710-abfe-4030-bd42-fded0f41f665"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.36666666666666664,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "1753c533-3a31-46b6-ab01-15b778702237"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.4,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "923cfcea-2c3e-493f-826a-0b08b447ebde"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "555d837b-4a68-4a28-b9ff-e97e393d1a05",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "InAirAtked1",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.03333333333333333,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 0.2,
|
||||||
|
"wrapMode": 1,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "852471cd-6270-47d2-b40b-e33a93910240"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.016666666666666666,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "7d08ee55-243c-4bb0-b614-1cd09cabf13f"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "ee0b89e9-89f0-451e-a6ef-d41d64d3d67a",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
@ -0,0 +1,91 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "InAirIdle1ByJump",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.2,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 0.6,
|
||||||
|
"wrapMode": 1,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "21c7f1b2-77c7-4f9a-b5c6-b79d99553432"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.016666666666666666,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "9106d51d-808b-4cec-b03c-1a0e9de3dd13"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.03333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "23199f52-ded0-4271-b426-17c6037989a4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.05,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "293367f0-6557-40d2-aff5-4f6b9faa3b14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.06666666666666667,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "f9029e1e-91f8-4ae2-a3ef-b811c409f41a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.08333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "de0e3195-e56e-4bba-82f6-72635f453eea"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.1,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "93e7fb75-b42d-4da9-860d-2e7dd0930d8d"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.11666666666666667,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "1a789615-1580-4342-b739-7ef94c80b34a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.13333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "5331bbb0-fad4-402c-8788-cb070cc8fb7c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.15,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "2f2bce67-0e39-45ee-aebf-b15e0d0c341f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.16666666666666666,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "77a2f890-6627-4699-9278-21d7365bd2c8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.18333333333333332,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "ce3e8e33-4420-478b-a084-5a7f77d584b8"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "170bbc56-3cff-4a81-b48f-a037b9418758",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "InAirIdle1NoJump",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.016666666666666666,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 1,
|
||||||
|
"wrapMode": 1,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "ce3e8e33-4420-478b-a084-5a7f77d584b8"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "996c218a-9e18-441e-b0f8-e61c5c991b9e",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
49
frontend/assets/resources/animation/MonkGirl/LayDown1.anim
Normal file
49
frontend/assets/resources/animation/MonkGirl/LayDown1.anim
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "LayDown1",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.08333333333333333,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 0.3,
|
||||||
|
"wrapMode": 1,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "e1f19129-8517-47fa-814d-b79c8abcd549"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.016666666666666666,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "b4127445-a13e-4244-9656-92033a5abcca"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.03333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "64a8e39c-95ed-4181-b777-b05434d1fa6d"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.05,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "5d1458ae-8812-4c4a-a01f-0a2b901ed3f3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.06666666666666667,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "ac0b9039-5caf-4bc1-bf29-2a733fbb7898"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "0978395c-8947-4830-9f68-58fadcbe5c63",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
1211
frontend/assets/resources/animation/MonkGirl/MonkGirl.plist
Normal file
1211
frontend/assets/resources/animation/MonkGirl/MonkGirl.plist
Normal file
File diff suppressed because it is too large
Load Diff
1750
frontend/assets/resources/animation/MonkGirl/MonkGirl.plist.meta
Normal file
1750
frontend/assets/resources/animation/MonkGirl/MonkGirl.plist.meta
Normal file
File diff suppressed because it is too large
Load Diff
BIN
frontend/assets/resources/animation/MonkGirl/MonkGirl.png
Normal file
BIN
frontend/assets/resources/animation/MonkGirl/MonkGirl.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 74 KiB |
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.3.3",
|
||||||
|
"uuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
|
||||||
|
"type": "raw",
|
||||||
|
"wrapMode": "clamp",
|
||||||
|
"filterMode": "bilinear",
|
||||||
|
"premultiplyAlpha": false,
|
||||||
|
"genMipmaps": false,
|
||||||
|
"packable": true,
|
||||||
|
"platformSettings": {},
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
115
frontend/assets/resources/animation/MonkGirl/Walking.anim
Normal file
115
frontend/assets/resources/animation/MonkGirl/Walking.anim
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "Walking",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_native": "",
|
||||||
|
"_duration": 0.26666666666666666,
|
||||||
|
"sample": 60,
|
||||||
|
"speed": 0.25,
|
||||||
|
"wrapMode": 2,
|
||||||
|
"curveData": {
|
||||||
|
"comps": {
|
||||||
|
"cc.Sprite": {
|
||||||
|
"spriteFrame": [
|
||||||
|
{
|
||||||
|
"frame": 0,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "275387d0-70fd-47f5-b82e-14165a14c45a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.016666666666666666,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "95e3dc3c-ee98-4ae8-899f-3d6539a649cb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.03333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "7515ef50-3a14-4e58-8811-a0c890fc40f3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.05,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "fa3d6703-1cfc-4f40-b61e-7ebf0fdac56a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.06666666666666667,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "37eea7f3-5a1d-4172-be38-9b492399ef44"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.08333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "0e2ad2ed-2b21-4e14-9607-5a341d9ed7e4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.1,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "e1625aba-a6fc-4883-a696-2d9d56d3050d"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.11666666666666667,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "86f805a2-a27c-4c96-8e11-acc448b0bdd0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.13333333333333333,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "63bcaa39-1cc5-461f-a175-0d7a0abd3510"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.15,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "691383d5-9199-4bd5-9803-403216331d7f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.16666666666666666,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "602818c2-1242-4a24-87ba-77f6accccbc3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.18333333333333332,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "650b8ccb-2a82-4972-bb5b-79a2cb4a3503"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.2,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "b264bcc2-71c7-45a6-8c94-be049bb0d163"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.21666666666666667,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "a75af05e-3b54-45d8-b7ad-cbcf2b65b2a9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.23333333333333334,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "3e2e26f7-007a-4130-8d90-154dfcde96d3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame": 0.25,
|
||||||
|
"value": {
|
||||||
|
"__uuid__": "9cf71d99-7262-4a6c-8c27-06167d841a24"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": []
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.1.0",
|
||||||
|
"uuid": "768d591b-4467-4a8f-95bf-4f7fcc3835b6",
|
||||||
|
"subMetas": {}
|
||||||
|
}
|
@ -24,10 +24,11 @@ message PlayerDownsync {
|
|||||||
int32 maxHp = 17;
|
int32 maxHp = 17;
|
||||||
int32 characterState = 18;
|
int32 characterState = 18;
|
||||||
bool inAir = 19; // 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. "inAir (prev -> curr)"
|
bool inAir = 19; // 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. "inAir (prev -> curr)"
|
||||||
|
int32 framesInChState = 20; // number of frames elapsed in the current character state
|
||||||
|
|
||||||
string name = 20;
|
string name = 997;
|
||||||
string displayName = 21;
|
string displayName = 998;
|
||||||
string avatar = 22;
|
string avatar = 999;
|
||||||
}
|
}
|
||||||
|
|
||||||
message InputFrameDecoded {
|
message InputFrameDecoded {
|
||||||
|
@ -33,14 +33,14 @@
|
|||||||
"_active": true,
|
"_active": true,
|
||||||
"_components": [
|
"_components": [
|
||||||
{
|
{
|
||||||
"__id__": 23
|
"__id__": 27
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 24
|
"__id__": 28
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"_prefab": {
|
"_prefab": {
|
||||||
"__id__": 25
|
"__id__": 29
|
||||||
},
|
},
|
||||||
"_opacity": 255,
|
"_opacity": 255,
|
||||||
"_color": {
|
"_color": {
|
||||||
@ -493,12 +493,15 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"__id__": 18
|
"__id__": 18
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 22
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"_active": true,
|
"_active": true,
|
||||||
"_components": [],
|
"_components": [],
|
||||||
"_prefab": {
|
"_prefab": {
|
||||||
"__id__": 22
|
"__id__": 26
|
||||||
},
|
},
|
||||||
"_opacity": 255,
|
"_opacity": 255,
|
||||||
"_color": {
|
"_color": {
|
||||||
@ -922,6 +925,163 @@
|
|||||||
"fileId": "17JdhftghBYr81MfV9i6cy",
|
"fileId": "17JdhftghBYr81MfV9i6cy",
|
||||||
"sync": false
|
"sync": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "MonkGirl",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 11
|
||||||
|
},
|
||||||
|
"_children": [],
|
||||||
|
"_active": false,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 23
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 24
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 25
|
||||||
|
},
|
||||||
|
"_opacity": 255,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 1425,
|
||||||
|
"height": 1024
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_trs": {
|
||||||
|
"__type__": "TypedArray",
|
||||||
|
"ctor": "Float64Array",
|
||||||
|
"array": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0.7,
|
||||||
|
0.7,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"_eulerAngles": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_skewX": 0,
|
||||||
|
"_skewY": 0,
|
||||||
|
"_is3DNode": false,
|
||||||
|
"_groupIndex": 0,
|
||||||
|
"groupIndex": 0,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Animation",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"node": {
|
||||||
|
"__id__": 22
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"_defaultClip": null,
|
||||||
|
"_clips": [
|
||||||
|
{
|
||||||
|
"__uuid__": "a0d8b9a6-7bf7-4cf5-aecb-54b2908cbfb3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "768d591b-4467-4a8f-95bf-4f7fcc3835b6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "c3d4f508-b3a9-4deb-b2d1-8ddc7bf22e0c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "1ec27664-cd2a-4c7a-838f-953a7713ceca"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "996c218a-9e18-441e-b0f8-e61c5c991b9e"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "170bbc56-3cff-4a81-b48f-a037b9418758"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "555d837b-4a68-4a28-b9ff-e97e393d1a05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "ee0b89e9-89f0-451e-a6ef-d41d64d3d67a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "f87054fd-328f-4001-a8ff-b4c049cc1e6d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "0978395c-8947-4830-9f68-58fadcbe5c63"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "7cb4d395-c68f-4643-9e2e-8cb8e200d3a5"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"playOnLoad": false,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Sprite",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"node": {
|
||||||
|
"__id__": 22
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"_materials": [
|
||||||
|
{
|
||||||
|
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_srcBlendFactor": 770,
|
||||||
|
"_dstBlendFactor": 771,
|
||||||
|
"_spriteFrame": null,
|
||||||
|
"_type": 0,
|
||||||
|
"_sizeMode": 1,
|
||||||
|
"_fillType": 0,
|
||||||
|
"_fillCenter": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_fillStart": 0,
|
||||||
|
"_fillRange": 0,
|
||||||
|
"_isTrimmedMode": true,
|
||||||
|
"_atlas": {
|
||||||
|
"__uuid__": "725c90f9-56f8-48ea-9159-4d2949cd3ce0"
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__uuid__": "59bff7a2-23e1-4d69-bce7-afb37eae196a"
|
||||||
|
},
|
||||||
|
"fileId": "6cGpRwF5ZPjpJdtoqbrnta",
|
||||||
|
"sync": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"__type__": "cc.PrefabInfo",
|
"__type__": "cc.PrefabInfo",
|
||||||
"root": {
|
"root": {
|
||||||
|
@ -440,7 +440,7 @@
|
|||||||
"array": [
|
"array": [
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
216.6771387800957,
|
216.50135522089343,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -5,33 +5,15 @@ window.ATK_CHARACTER_STATE = {
|
|||||||
Walking: [1, "Walking"],
|
Walking: [1, "Walking"],
|
||||||
Atk1: [2, "Atk1"],
|
Atk1: [2, "Atk1"],
|
||||||
Atked1: [3, "Atked1"],
|
Atked1: [3, "Atked1"],
|
||||||
InAirIdle1: [4, "InAirIdle1"],
|
InAirIdle1NoJump: [4, "InAirIdle1NoJump"],
|
||||||
InAirAtk1: [5, "Atk1"],
|
InAirIdle1ByJump: [5, "InAirIdle1ByJump"], // The cycling part of it would be exactly "InAirIdle1NoJump"
|
||||||
InAirAtked1: [6, "Atked1"],
|
InAirAtk1: [6, "InAirAtk1"],
|
||||||
|
InAirAtked1: [7, "InAirAtked1"],
|
||||||
|
BlownUp1: [8, "BlownUp1"],
|
||||||
|
LayDown1: [9, "LayDown1"],
|
||||||
|
GetUp1: [10, "GetUp1"],
|
||||||
};
|
};
|
||||||
|
|
||||||
window.toInAirConjugate = function(foo) {
|
|
||||||
switch (foo) {
|
|
||||||
case window.ATK_CHARACTER_STATE.Idle1[0]:
|
|
||||||
case window.ATK_CHARACTER_STATE.Walking[0]:
|
|
||||||
return window.ATK_CHARACTER_STATE.InAirIdle1[0];
|
|
||||||
case window.ATK_CHARACTER_STATE.Atk1[0]:
|
|
||||||
return window.ATK_CHARACTER_STATE.InAirAtk1[0];
|
|
||||||
case window.ATK_CHARACTER_STATE.Atked1[0]:
|
|
||||||
return window.ATK_CHARACTER_STATE.InAirAtked1[0];
|
|
||||||
|
|
||||||
case window.ATK_CHARACTER_STATE.InAirIdle1[0]:
|
|
||||||
return window.ATK_CHARACTER_STATE.Idle1[0];
|
|
||||||
case window.ATK_CHARACTER_STATE.InAirAtk1[0]:
|
|
||||||
return window.ATK_CHARACTER_STATE.Atk1[0];
|
|
||||||
case window.ATK_CHARACTER_STATE.InAirAtked1[0]:
|
|
||||||
return window.ATK_CHARACTER_STATE.Atked1[0];
|
|
||||||
default:
|
|
||||||
console.warn(`Invalid characterState ${foo} received, no in air conjugate is available!`);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
window.ATK_CHARACTER_STATE_ARR = [];
|
window.ATK_CHARACTER_STATE_ARR = [];
|
||||||
for (let k in window.ATK_CHARACTER_STATE) {
|
for (let k in window.ATK_CHARACTER_STATE) {
|
||||||
window.ATK_CHARACTER_STATE_ARR.push(window.ATK_CHARACTER_STATE[k]);
|
window.ATK_CHARACTER_STATE_ARR.push(window.ATK_CHARACTER_STATE[k]);
|
||||||
@ -40,12 +22,18 @@ for (let k in window.ATK_CHARACTER_STATE) {
|
|||||||
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET = new Set();
|
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET = new Set();
|
||||||
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.Idle1[0]);
|
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.Idle1[0]);
|
||||||
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.Walking[0]);
|
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.Walking[0]);
|
||||||
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.InAirIdle1[0]);
|
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.InAirIdle1NoJump[0]);
|
||||||
|
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.InAirIdle1ByJump[0]);
|
||||||
|
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.BlownUp1[0]);
|
||||||
|
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.LayDown1[0]);
|
||||||
|
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.GetUp1[0]);
|
||||||
|
|
||||||
window.ATK_CHARACTER_STATE_IN_AIR_SET = new Set();
|
window.ATK_CHARACTER_STATE_IN_AIR_SET = new Set();
|
||||||
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.InAirIdle1[0]);
|
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.InAirIdle1NoJump[0]);
|
||||||
|
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.InAirIdle1ByJump[0]);
|
||||||
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.InAirAtk1[0]);
|
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.InAirAtk1[0]);
|
||||||
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.InAirAtked1[0]);
|
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.InAirAtked1[0]);
|
||||||
|
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.BlownUp1[0]);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Kindly note that the use of dragonBones anim is an informed choice for the feasibility of "gotoAndPlayByFrame", which is a required feature by "Map.rollbackAndChase". You might find that "cc.Animation" -- the traditional frame anim -- can also suffice this requirement, yet if we want to develop 3D frontend in the future, working with skeletal anim will make a smoother transition.
|
Kindly note that the use of dragonBones anim is an informed choice for the feasibility of "gotoAndPlayByFrame", which is a required feature by "Map.rollbackAndChase". You might find that "cc.Animation" -- the traditional frame anim -- can also suffice this requirement, yet if we want to develop 3D frontend in the future, working with skeletal anim will make a smoother transition.
|
||||||
@ -84,7 +72,7 @@ cc.Class({
|
|||||||
this.effAnimNode.active = true;
|
this.effAnimNode.active = true;
|
||||||
},
|
},
|
||||||
|
|
||||||
updateCharacterAnim(rdfPlayer, prevRdfPlayer, forceAnimSwitch) {
|
updateCharacterAnim(rdfPlayer, prevRdfPlayer, forceAnimSwitch, chConfig) {
|
||||||
// As this function might be called after many frames of a rollback, it's possible that the playing animation was predicted, different from "prevRdfPlayer.CharacterState" but same as "newCharacterState". More granular checks are needed to determine whether we should interrupt the playing animation.
|
// As this function might be called after many frames of a rollback, it's possible that the playing animation was predicted, different from "prevRdfPlayer.CharacterState" but same as "newCharacterState". More granular checks are needed to determine whether we should interrupt the playing animation.
|
||||||
|
|
||||||
// Update directions
|
// Update directions
|
||||||
@ -117,29 +105,25 @@ cc.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.animComp instanceof dragonBones.ArmatureDisplay) {
|
if (this.animComp instanceof dragonBones.ArmatureDisplay) {
|
||||||
this._interruptPlayingAnimAndPlayNewAnimDragonBones(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, underlyingAnimationCtrl, playingAnimName);
|
this._interruptPlayingAnimAndPlayNewAnimDragonBones(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, underlyingAnimationCtrl, playingAnimName, chConfig);
|
||||||
} else {
|
} else {
|
||||||
this._interruptPlayingAnimAndPlayNewAnimFrameAnim(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, playingAnimName);
|
this._interruptPlayingAnimAndPlayNewAnimFrameAnim(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, playingAnimName, chConfig);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_interruptPlayingAnimAndPlayNewAnimDragonBones(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, underlyingAnimationCtrl, playingAnimName) {
|
_interruptPlayingAnimAndPlayNewAnimDragonBones(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, underlyingAnimationCtrl, playingAnimName, chConfig) {
|
||||||
if (window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.has(newCharacterState)) {
|
if (window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.has(newCharacterState)) {
|
||||||
// No "framesToRecover"
|
// No "framesToRecover"
|
||||||
// console.warn(`#DragonBones JoinIndex=${rdfPlayer.joinIndex}, ${playingAnimName} -> ${newAnimName}`);
|
// console.warn(`#DragonBones JoinIndex=${rdfPlayer.joinIndex}, ${playingAnimName} -> ${newAnimName}`);
|
||||||
underlyingAnimationCtrl.gotoAndPlayByFrame(newAnimName, 0, -1);
|
underlyingAnimationCtrl.gotoAndPlayByFrame(newAnimName, 0, -1);
|
||||||
} else {
|
} else {
|
||||||
const animationData = underlyingAnimationCtrl._animations[newAnimName];
|
const animationData = underlyingAnimationCtrl._animations[newAnimName];
|
||||||
let fromAnimFrame = (animationData.frameCount - rdfPlayer.FramesToRecover);
|
let frameIdxInAnim = rdfPlayer.FramesInChState;
|
||||||
if (fromAnimFrame < 0) {
|
underlyingAnimationCtrl.gotoAndPlayByFrame(newAnimName, frameIdxInAnim, 1);
|
||||||
// For Atk1 or Atk2, it's possible that the "meleeBullet.recoveryFrames" is configured to be slightly larger than corresponding animation duration frames
|
|
||||||
fromAnimFrame = 0;
|
|
||||||
}
|
|
||||||
underlyingAnimationCtrl.gotoAndPlayByFrame(newAnimName, fromAnimFrame, 1);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_interruptPlayingAnimAndPlayNewAnimFrameAnim(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, playingAnimName) {
|
_interruptPlayingAnimAndPlayNewAnimFrameAnim(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, playingAnimName, chConfig) {
|
||||||
if (window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.has(newCharacterState)) {
|
if (window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.has(newCharacterState)) {
|
||||||
// No "framesToRecover"
|
// No "framesToRecover"
|
||||||
//console.warn(`#FrameAnim JoinIndex=${rdfPlayer.joinIndex}, ${playingAnimName} -> ${newAnimName}`);
|
//console.warn(`#FrameAnim JoinIndex=${rdfPlayer.joinIndex}, ${playingAnimName} -> ${newAnimName}`);
|
||||||
@ -148,11 +132,11 @@ cc.Class({
|
|||||||
}
|
}
|
||||||
// The "playTimes" counterpart is managed by each "cc.AnimationClip.wrapMode", already preset in the editor.
|
// The "playTimes" counterpart is managed by each "cc.AnimationClip.wrapMode", already preset in the editor.
|
||||||
const targetClip = this.animComp.getClips()[newCharacterState]; // The clips follow the exact order in ATK_CHARACTER_STATE
|
const targetClip = this.animComp.getClips()[newCharacterState]; // The clips follow the exact order in ATK_CHARACTER_STATE
|
||||||
let fromTime = (targetClip.duration - rdfPlayer.FramesToRecover / targetClip.sample); // TODO: Anyway to avoid using division here?
|
let frameIdxInAnim = rdfPlayer.FramesInChState;
|
||||||
if (fromTime < 0) {
|
if (window.ATK_CHARACTER_STATE.InAirIdle1ByJump == newCharacterState && null != chConfig) {
|
||||||
// For Atk1 or Atk2, it's possible that the "meleeBullet.recoveryFrames" is configured to be slightly larger than corresponding animation duration frames
|
frameIdxInAnim = chConfig.InAirIdleFrameIdxTurningPoint + (frameIdxInAnim - chConfig.InAirIdleFrameIdxTurningPoint) % chConfig.InAirIdleFrameIdxTurnedCycle; // TODO: Anyway to avoid using division here?
|
||||||
fromTime = 0;
|
|
||||||
}
|
}
|
||||||
|
let fromTime = (frameIdxInAnim / targetClip.sample); // TODO: Anyway to avoid using division here?
|
||||||
this.animComp.play(newAnimName, fromTime);
|
this.animComp.play(newAnimName, fromTime);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -590,7 +590,7 @@ cc.Class({
|
|||||||
const jsPlayersArr = new Array().fill(null);
|
const jsPlayersArr = new Array().fill(null);
|
||||||
for (let k in pbRdf.playersArr) {
|
for (let k in pbRdf.playersArr) {
|
||||||
const pbPlayer = pbRdf.playersArr[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.speed, pbPlayer.battleState, pbPlayer.characterState, pbPlayer.joinIndex, pbPlayer.hp, pbPlayer.maxHp, pbPlayer.inAir, pbPlayer.colliderRadius);
|
const jsPlayer = gopkgs.NewPlayerDownsyncJs(pbPlayer.id, pbPlayer.virtualGridX, pbPlayer.virtualGridY, pbPlayer.dirX, pbPlayer.dirY, pbPlayer.velX, pbPlayer.velY, pbPlayer.framesToRecover, pbPlayer.framesInChState, pbPlayer.speed, pbPlayer.battleState, pbPlayer.characterState, pbPlayer.joinIndex, pbPlayer.hp, pbPlayer.maxHp, pbPlayer.inAir, pbPlayer.colliderRadius);
|
||||||
jsPlayersArr[k] = jsPlayer;
|
jsPlayersArr[k] = jsPlayer;
|
||||||
}
|
}
|
||||||
const jsMeleeBulletsArr = [];
|
const jsMeleeBulletsArr = [];
|
||||||
@ -638,6 +638,7 @@ cc.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The logic below applies to (window.MAGIC_ROOM_DOWNSYNC_FRAME_ID.BATTLE_START == rdf.id || window.RING_BUFF_NON_CONSECUTIVE_SET == dumpRenderCacheRet)
|
// The logic below applies to (window.MAGIC_ROOM_DOWNSYNC_FRAME_ID.BATTLE_START == rdf.id || window.RING_BUFF_NON_CONSECUTIVE_SET == dumpRenderCacheRet)
|
||||||
|
self.chConfigsOrderedByJoinIndex = gopkgs.GetCharacterConfigsOrderedByJoinIndex(pbRdf.speciesIdList);
|
||||||
self.playerOpPatternToSkillId = pbRdf.playerOpPatternToSkillId;
|
self.playerOpPatternToSkillId = pbRdf.playerOpPatternToSkillId;
|
||||||
self._initPlayerRichInfoDict(rdf.PlayersArr);
|
self._initPlayerRichInfoDict(rdf.PlayersArr);
|
||||||
|
|
||||||
@ -694,18 +695,19 @@ cc.Class({
|
|||||||
|
|
||||||
equalPlayers(lhs, rhs) {
|
equalPlayers(lhs, rhs) {
|
||||||
if (null == lhs || null == rhs) return false;
|
if (null == lhs || null == rhs) return false;
|
||||||
if (lhs.virtualGridX != rhs.virtualGridX) return false;
|
if (lhs.VirtualGridX != rhs.VirtualGridX) return false;
|
||||||
if (lhs.virtualGridY != rhs.virtualGridY) return false;
|
if (lhs.VirtualGridY != rhs.VirtualGridY) return false;
|
||||||
if (lhs.dirX != rhs.dirX) return false;
|
if (lhs.DirX != rhs.DirX) return false;
|
||||||
if (lhs.dirY != rhs.dirY) return false;
|
if (lhs.DirY != rhs.DirY) return false;
|
||||||
if (lhs.velX != rhs.velX) return false;
|
if (lhs.VelX != rhs.VelX) return false;
|
||||||
if (lhs.velY != rhs.velY) return false;
|
if (lhs.VelY != rhs.VelY) return false;
|
||||||
if (lhs.speed != rhs.speed) return false;
|
if (lhs.Speed != rhs.Speed) return false;
|
||||||
if (lhs.framesToRecover != rhs.framesToRecover) return false;
|
if (lhs.Hp != rhs.Hp) return false;
|
||||||
if (lhs.hp != rhs.hp) return false;
|
if (lhs.MaxHp != rhs.MaxHp) return false;
|
||||||
if (lhs.maxHp != rhs.maxHp) return false;
|
if (lhs.CharacterState != rhs.CharacterState) return false;
|
||||||
if (lhs.characterState != rhs.characterState) return false;
|
if (lhs.InAir != rhs.InAir) return false;
|
||||||
if (lhs.inAir != rhs.inAir) return false;
|
if (lhs.FramesToRecover != rhs.FramesToRecover) return false;
|
||||||
|
if (lhs.FramesInChState != rhs.FramesInChState) return false;
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1063,12 +1065,13 @@ othersForcedDownsyncRenderFrame=${JSON.stringify(othersForcedDownsyncRenderFrame
|
|||||||
const playersArr = rdf.PlayersArr;
|
const playersArr = rdf.PlayersArr;
|
||||||
for (let k in playersArr) {
|
for (let k in playersArr) {
|
||||||
const currPlayerDownsync = playersArr[k];
|
const currPlayerDownsync = playersArr[k];
|
||||||
|
const chConfig = self.chConfigsOrderedByJoinIndex[k];
|
||||||
const prevRdfPlayer = (null == prevRdf ? null : prevRdf.PlayersArr[k]);
|
const prevRdfPlayer = (null == prevRdf ? null : prevRdf.PlayersArr[k]);
|
||||||
const [wx, wy] = self.virtualGridToWorldPos(currPlayerDownsync.VirtualGridX, currPlayerDownsync.VirtualGridY);
|
const [wx, wy] = self.virtualGridToWorldPos(currPlayerDownsync.VirtualGridX, currPlayerDownsync.VirtualGridY);
|
||||||
const playerRichInfo = self.playerRichInfoArr[k];
|
const playerRichInfo = self.playerRichInfoArr[k];
|
||||||
playerRichInfo.node.setPosition(wx, wy);
|
playerRichInfo.node.setPosition(wx, wy);
|
||||||
playerRichInfo.scriptIns.updateSpeed(currPlayerDownsync.Speed);
|
playerRichInfo.scriptIns.updateSpeed(currPlayerDownsync.Speed);
|
||||||
playerRichInfo.scriptIns.updateCharacterAnim(currPlayerDownsync, prevRdfPlayer, false);
|
playerRichInfo.scriptIns.updateCharacterAnim(currPlayerDownsync, prevRdfPlayer, false, chConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update countdown
|
// Update countdown
|
||||||
@ -1104,7 +1107,7 @@ othersForcedDownsyncRenderFrame=${JSON.stringify(othersForcedDownsyncRenderFrame
|
|||||||
};
|
};
|
||||||
self.rdfIdToActuallyUsedInput.set(currRdf.Id, inputFrameDownsyncClone);
|
self.rdfIdToActuallyUsedInput.set(currRdf.Id, inputFrameDownsyncClone);
|
||||||
}
|
}
|
||||||
const nextRdf = gopkgs.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrameJs(self.recentInputCache, currRdf, collisionSys, collisionSysMap, self.gravityX, self.gravityY, self.jumpingInitVelY, self.inputDelayFrames, self.inputScaleFrames, self.spaceOffsetX, self.spaceOffsetY, self.snapIntoPlatformOverlap, self.snapIntoPlatformThreshold, self.worldToVirtualGridRatio, self.virtualGridToWorldRatio, self.playerOpPatternToSkillId);
|
const nextRdf = gopkgs.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrameJs(self.recentInputCache, currRdf, collisionSys, collisionSysMap, self.spaceOffsetX, self.spaceOffsetY, self.playerOpPatternToSkillId, self.chConfigsOrderedByJoinIndex);
|
||||||
|
|
||||||
if (true == isChasing) {
|
if (true == isChasing) {
|
||||||
// [WARNING] Move the cursor "self.chaserRenderFrameId" when "true == isChasing", keep in mind that "self.chaserRenderFrameId" is not monotonic!
|
// [WARNING] Move the cursor "self.chaserRenderFrameId" when "true == isChasing", keep in mind that "self.chaserRenderFrameId" is not monotonic!
|
||||||
|
@ -40,13 +40,13 @@ cc.Class({
|
|||||||
self.rollbackEstimatedDtNanos = 16666666;
|
self.rollbackEstimatedDtNanos = 16666666;
|
||||||
self.tooFastDtIntervalMillis = 0.5 * self.rollbackEstimatedDtMillis;
|
self.tooFastDtIntervalMillis = 0.5 * self.rollbackEstimatedDtMillis;
|
||||||
|
|
||||||
self.worldToVirtualGridRatio = 1000;
|
self.worldToVirtualGridRatio = 100;
|
||||||
self.virtualGridToWorldRatio = 1.0 / self.worldToVirtualGridRatio;
|
self.virtualGridToWorldRatio = 1.0 / self.worldToVirtualGridRatio;
|
||||||
|
|
||||||
const opJoinIndexPrefix1 = (1 << 8);
|
const opJoinIndexPrefix1 = (1 << 8);
|
||||||
const opJoinIndexPrefix2 = (2 << 8);
|
const playerOpPatternToSkillId = {};
|
||||||
self.playerOpPatternToSkillId = {};
|
playerOpPatternToSkillId[opJoinIndexPrefix1 + 0] = 1;
|
||||||
self.playerOpPatternToSkillId[opJoinIndexPrefix1 + 0] = 1;
|
playerOpPatternToSkillId[opJoinIndexPrefix1 + 1] = 2;
|
||||||
self.playerOpPatternToSkillId[opJoinIndexPrefix2 + 0] = 1;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
[WARNING] As when a character is standing on a barrier, if not carefully curated there MIGHT BE a bouncing sequence of "[(inAir -> dropIntoBarrier ->), (notInAir -> pushedOutOfBarrier ->)], [(inAir -> ..."
|
[WARNING] As when a character is standing on a barrier, if not carefully curated there MIGHT BE a bouncing sequence of "[(inAir -> dropIntoBarrier ->), (notInAir -> pushedOutOfBarrier ->)], [(inAir -> ..."
|
||||||
@ -152,7 +152,7 @@ cc.Class({
|
|||||||
virtualGridY: boundaryObjs.playerStartingPositions[0].y * self.worldToVirtualGridRatio,
|
virtualGridY: boundaryObjs.playerStartingPositions[0].y * self.worldToVirtualGridRatio,
|
||||||
speed: 1 * self.worldToVirtualGridRatio,
|
speed: 1 * self.worldToVirtualGridRatio,
|
||||||
colliderRadius: 12,
|
colliderRadius: 12,
|
||||||
characterState: window.ATK_CHARACTER_STATE.InAirIdle1[0],
|
characterState: window.ATK_CHARACTER_STATE.InAirIdle1NoJump[0],
|
||||||
framesToRecover: 0,
|
framesToRecover: 0,
|
||||||
dirX: 0,
|
dirX: 0,
|
||||||
dirY: 0,
|
dirY: 0,
|
||||||
@ -160,22 +160,9 @@ cc.Class({
|
|||||||
velY: 0,
|
velY: 0,
|
||||||
inAir: true,
|
inAir: true,
|
||||||
}),
|
}),
|
||||||
window.pb.protos.PlayerDownsync.create({
|
],
|
||||||
id: 11,
|
speciesIdList: [0],
|
||||||
joinIndex: 2,
|
playerOpPatternToSkillId: playerOpPatternToSkillId,
|
||||||
virtualGridX: boundaryObjs.playerStartingPositions[1].x * self.worldToVirtualGridRatio,
|
|
||||||
virtualGridY: boundaryObjs.playerStartingPositions[1].y * self.worldToVirtualGridRatio,
|
|
||||||
speed: 1 * self.worldToVirtualGridRatio,
|
|
||||||
colliderRadius: 12,
|
|
||||||
characterState: window.ATK_CHARACTER_STATE.InAirIdle1[0],
|
|
||||||
framesToRecover: 0,
|
|
||||||
dirX: 0,
|
|
||||||
dirY: 0,
|
|
||||||
velX: 0,
|
|
||||||
velY: 0,
|
|
||||||
inAir: true,
|
|
||||||
}),
|
|
||||||
]
|
|
||||||
});
|
});
|
||||||
|
|
||||||
self.selfPlayerInfo = {
|
self.selfPlayerInfo = {
|
||||||
@ -221,4 +208,48 @@ cc.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
spawnPlayerNode(joinIndex, vx, vy, playerDownsyncInfo) {
|
||||||
|
const self = this;
|
||||||
|
const newPlayerNode = cc.instantiate(self.controlledCharacterPrefab)
|
||||||
|
const playerScriptIns = newPlayerNode.getComponent("ControlledCharacter");
|
||||||
|
if (1 == joinIndex) {
|
||||||
|
playerScriptIns.setSpecies("MonkGirl");
|
||||||
|
} else if (2 == joinIndex) {
|
||||||
|
playerScriptIns.setSpecies("UltramanTiga");
|
||||||
|
}
|
||||||
|
|
||||||
|
const [wx, wy] = self.virtualGridToWorldPos(vx, vy);
|
||||||
|
newPlayerNode.setPosition(wx, wy);
|
||||||
|
playerScriptIns.mapNode = self.node;
|
||||||
|
const colliderRadius = playerDownsyncInfo.ColliderRadius;
|
||||||
|
const halfColliderWidth = colliderRadius,
|
||||||
|
halfColliderHeight = colliderRadius + colliderRadius; // avoid multiplying
|
||||||
|
const colliderWidth = halfColliderWidth + halfColliderWidth,
|
||||||
|
colliderHeight = halfColliderHeight + halfColliderHeight; // avoid multiplying
|
||||||
|
|
||||||
|
const [cx, cy] = gopkgs.WorldToPolygonColliderBLPos(wx, wy, halfColliderWidth, halfColliderHeight, self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap, self.spaceOffsetX, self.spaceOffsetY);
|
||||||
|
const gopkgsBoundaryAnchor = gopkgs.NewVec2DJs(cx, cy);
|
||||||
|
const gopkgsBoundaryPts = [
|
||||||
|
gopkgs.NewVec2DJs(0, 0),
|
||||||
|
gopkgs.NewVec2DJs(self.snapIntoPlatformOverlap + colliderWidth + self.snapIntoPlatformOverlap, 0),
|
||||||
|
gopkgs.NewVec2DJs(self.snapIntoPlatformOverlap + colliderWidth + self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap + colliderHeight + self.snapIntoPlatformOverlap),
|
||||||
|
gopkgs.NewVec2DJs(0, self.snapIntoPlatformOverlap + colliderHeight + self.snapIntoPlatformOverlap)
|
||||||
|
];
|
||||||
|
const gopkgsBoundary = gopkgs.NewPolygon2DJs(gopkgsBoundaryAnchor, gopkgsBoundaryPts);
|
||||||
|
const newPlayerCollider = gopkgs.GenerateConvexPolygonColliderJs(gopkgsBoundary, self.spaceOffsetX, self.spaceOffsetY, playerDownsyncInfo, "Player");
|
||||||
|
//const newPlayerCollider = gopkgs.GenerateRectColliderJs(wx, wy, colliderWidth, colliderHeight, self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap, self.spaceOffsetX, self.spaceOffsetY, playerDownsyncInfo, "Player");
|
||||||
|
self.gopkgsCollisionSys.Add(newPlayerCollider);
|
||||||
|
const collisionPlayerIndex = self.collisionPlayerIndexPrefix + joinIndex;
|
||||||
|
self.gopkgsCollisionSysMap[collisionPlayerIndex] = newPlayerCollider;
|
||||||
|
|
||||||
|
console.log(`Created new player collider: joinIndex=${joinIndex}, colliderRadius=${playerDownsyncInfo.ColliderRadius}`);
|
||||||
|
|
||||||
|
safelyAddChild(self.node, newPlayerNode);
|
||||||
|
setLocalZOrder(newPlayerNode, 5);
|
||||||
|
|
||||||
|
newPlayerNode.active = true;
|
||||||
|
playerScriptIns.updateCharacterAnim(playerDownsyncInfo, null, true);
|
||||||
|
|
||||||
|
return [newPlayerNode, playerScriptIns];
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"ver": "1.0.5",
|
|
||||||
"uuid": "da0a517f-5c74-4fc0-ba89-dbcee184b13e",
|
|
||||||
"isPlugin": false,
|
|
||||||
"loadPluginInWeb": true,
|
|
||||||
"loadPluginInNative": true,
|
|
||||||
"loadPluginInEditor": false,
|
|
||||||
"subMetas": {}
|
|
||||||
}
|
|
@ -1210,6 +1210,7 @@ $root.protos = (function() {
|
|||||||
* @property {number|null} [maxHp] PlayerDownsync maxHp
|
* @property {number|null} [maxHp] PlayerDownsync maxHp
|
||||||
* @property {number|null} [characterState] PlayerDownsync characterState
|
* @property {number|null} [characterState] PlayerDownsync characterState
|
||||||
* @property {boolean|null} [inAir] PlayerDownsync inAir
|
* @property {boolean|null} [inAir] PlayerDownsync inAir
|
||||||
|
* @property {number|null} [framesInChState] PlayerDownsync framesInChState
|
||||||
* @property {string|null} [name] PlayerDownsync name
|
* @property {string|null} [name] PlayerDownsync name
|
||||||
* @property {string|null} [displayName] PlayerDownsync displayName
|
* @property {string|null} [displayName] PlayerDownsync displayName
|
||||||
* @property {string|null} [avatar] PlayerDownsync avatar
|
* @property {string|null} [avatar] PlayerDownsync avatar
|
||||||
@ -1382,6 +1383,14 @@ $root.protos = (function() {
|
|||||||
*/
|
*/
|
||||||
PlayerDownsync.prototype.inAir = false;
|
PlayerDownsync.prototype.inAir = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PlayerDownsync framesInChState.
|
||||||
|
* @member {number} framesInChState
|
||||||
|
* @memberof protos.PlayerDownsync
|
||||||
|
* @instance
|
||||||
|
*/
|
||||||
|
PlayerDownsync.prototype.framesInChState = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PlayerDownsync name.
|
* PlayerDownsync name.
|
||||||
* @member {string} name
|
* @member {string} name
|
||||||
@ -1468,12 +1477,14 @@ $root.protos = (function() {
|
|||||||
writer.uint32(/* id 18, wireType 0 =*/144).int32(message.characterState);
|
writer.uint32(/* id 18, wireType 0 =*/144).int32(message.characterState);
|
||||||
if (message.inAir != null && Object.hasOwnProperty.call(message, "inAir"))
|
if (message.inAir != null && Object.hasOwnProperty.call(message, "inAir"))
|
||||||
writer.uint32(/* id 19, wireType 0 =*/152).bool(message.inAir);
|
writer.uint32(/* id 19, wireType 0 =*/152).bool(message.inAir);
|
||||||
|
if (message.framesInChState != null && Object.hasOwnProperty.call(message, "framesInChState"))
|
||||||
|
writer.uint32(/* id 20, wireType 0 =*/160).int32(message.framesInChState);
|
||||||
if (message.name != null && Object.hasOwnProperty.call(message, "name"))
|
if (message.name != null && Object.hasOwnProperty.call(message, "name"))
|
||||||
writer.uint32(/* id 20, wireType 2 =*/162).string(message.name);
|
writer.uint32(/* id 997, wireType 2 =*/7978).string(message.name);
|
||||||
if (message.displayName != null && Object.hasOwnProperty.call(message, "displayName"))
|
if (message.displayName != null && Object.hasOwnProperty.call(message, "displayName"))
|
||||||
writer.uint32(/* id 21, wireType 2 =*/170).string(message.displayName);
|
writer.uint32(/* id 998, wireType 2 =*/7986).string(message.displayName);
|
||||||
if (message.avatar != null && Object.hasOwnProperty.call(message, "avatar"))
|
if (message.avatar != null && Object.hasOwnProperty.call(message, "avatar"))
|
||||||
writer.uint32(/* id 22, wireType 2 =*/178).string(message.avatar);
|
writer.uint32(/* id 999, wireType 2 =*/7994).string(message.avatar);
|
||||||
return writer;
|
return writer;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1585,14 +1596,18 @@ $root.protos = (function() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 20: {
|
case 20: {
|
||||||
|
message.framesInChState = reader.int32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 997: {
|
||||||
message.name = reader.string();
|
message.name = reader.string();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 21: {
|
case 998: {
|
||||||
message.displayName = reader.string();
|
message.displayName = reader.string();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 22: {
|
case 999: {
|
||||||
message.avatar = reader.string();
|
message.avatar = reader.string();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1688,6 +1703,9 @@ $root.protos = (function() {
|
|||||||
if (message.inAir != null && message.hasOwnProperty("inAir"))
|
if (message.inAir != null && message.hasOwnProperty("inAir"))
|
||||||
if (typeof message.inAir !== "boolean")
|
if (typeof message.inAir !== "boolean")
|
||||||
return "inAir: boolean expected";
|
return "inAir: boolean expected";
|
||||||
|
if (message.framesInChState != null && message.hasOwnProperty("framesInChState"))
|
||||||
|
if (!$util.isInteger(message.framesInChState))
|
||||||
|
return "framesInChState: integer expected";
|
||||||
if (message.name != null && message.hasOwnProperty("name"))
|
if (message.name != null && message.hasOwnProperty("name"))
|
||||||
if (!$util.isString(message.name))
|
if (!$util.isString(message.name))
|
||||||
return "name: string expected";
|
return "name: string expected";
|
||||||
@ -1750,6 +1768,8 @@ $root.protos = (function() {
|
|||||||
message.characterState = object.characterState | 0;
|
message.characterState = object.characterState | 0;
|
||||||
if (object.inAir != null)
|
if (object.inAir != null)
|
||||||
message.inAir = Boolean(object.inAir);
|
message.inAir = Boolean(object.inAir);
|
||||||
|
if (object.framesInChState != null)
|
||||||
|
message.framesInChState = object.framesInChState | 0;
|
||||||
if (object.name != null)
|
if (object.name != null)
|
||||||
message.name = String(object.name);
|
message.name = String(object.name);
|
||||||
if (object.displayName != null)
|
if (object.displayName != null)
|
||||||
@ -1792,6 +1812,7 @@ $root.protos = (function() {
|
|||||||
object.maxHp = 0;
|
object.maxHp = 0;
|
||||||
object.characterState = 0;
|
object.characterState = 0;
|
||||||
object.inAir = false;
|
object.inAir = false;
|
||||||
|
object.framesInChState = 0;
|
||||||
object.name = "";
|
object.name = "";
|
||||||
object.displayName = "";
|
object.displayName = "";
|
||||||
object.avatar = "";
|
object.avatar = "";
|
||||||
@ -1834,6 +1855,8 @@ $root.protos = (function() {
|
|||||||
object.characterState = message.characterState;
|
object.characterState = message.characterState;
|
||||||
if (message.inAir != null && message.hasOwnProperty("inAir"))
|
if (message.inAir != null && message.hasOwnProperty("inAir"))
|
||||||
object.inAir = message.inAir;
|
object.inAir = message.inAir;
|
||||||
|
if (message.framesInChState != null && message.hasOwnProperty("framesInChState"))
|
||||||
|
object.framesInChState = message.framesInChState;
|
||||||
if (message.name != null && message.hasOwnProperty("name"))
|
if (message.name != null && message.hasOwnProperty("name"))
|
||||||
object.name = message.name;
|
object.name = message.name;
|
||||||
if (message.displayName != null && message.hasOwnProperty("displayName"))
|
if (message.displayName != null && message.hasOwnProperty("displayName"))
|
||||||
|
@ -13,6 +13,19 @@ const (
|
|||||||
|
|
||||||
PATTERN_ID_UNABLE_TO_OP = -2
|
PATTERN_ID_UNABLE_TO_OP = -2
|
||||||
PATTERN_ID_NO_OP = -1
|
PATTERN_ID_NO_OP = -1
|
||||||
|
|
||||||
|
WORLD_TO_VIRTUAL_GRID_RATIO = float64(100)
|
||||||
|
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)
|
||||||
|
NST_DELAY_FRAMES = int32(16)
|
||||||
|
INPUT_SCALE_FRAMES = uint32(2)
|
||||||
|
|
||||||
|
SNAP_INTO_PLATFORM_OVERLAP = float64(0.1)
|
||||||
|
SNAP_INTO_PLATFORM_THRESHOLD = float64(0.5)
|
||||||
)
|
)
|
||||||
|
|
||||||
// These directions are chosen such that when speed is changed to "(speedX+delta, speedY+delta)" for any of them, the direction is unchanged.
|
// These directions are chosen such that when speed is changed to "(speedX+delta, speedY+delta)" for any of them, the direction is unchanged.
|
||||||
@ -28,42 +41,28 @@ var DIRECTION_DECODER = [][]int32{
|
|||||||
{-1, +1},
|
{-1, +1},
|
||||||
}
|
}
|
||||||
|
|
||||||
var skillIdToBullet = map[int]interface{}{
|
|
||||||
1: &MeleeBullet{
|
|
||||||
Bullet: Bullet{
|
|
||||||
// for offender
|
|
||||||
StartupFrames: int32(5),
|
|
||||||
ActiveFrames: int32(10),
|
|
||||||
RecoveryFrames: int32(34),
|
|
||||||
RecoveryFramesOnBlock: int32(34),
|
|
||||||
RecoveryFramesOnHit: int32(34),
|
|
||||||
HitboxOffset: float64(12.0), // should be about the radius of the PlayerCollider
|
|
||||||
|
|
||||||
// for defender
|
|
||||||
HitStunFrames: int32(18),
|
|
||||||
BlockStunFrames: int32(9),
|
|
||||||
Pushback: float64(8.0),
|
|
||||||
ReleaseTriggerType: int32(1), // 1: rising-edge, 2: falling-edge
|
|
||||||
Damage: int32(5),
|
|
||||||
|
|
||||||
SelfMoveforwardX: 0,
|
|
||||||
SelfMoveforwardY: 0,
|
|
||||||
HitboxSizeX: 24.0,
|
|
||||||
HitboxSizeY: 32.0,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ATK_CHARACTER_STATE_IDLE1 = int32(0)
|
ATK_CHARACTER_STATE_IDLE1 = int32(0)
|
||||||
ATK_CHARACTER_STATE_WALKING = int32(1)
|
ATK_CHARACTER_STATE_WALKING = int32(1)
|
||||||
ATK_CHARACTER_STATE_ATK1 = int32(2)
|
ATK_CHARACTER_STATE_ATK1 = int32(2)
|
||||||
ATK_CHARACTER_STATE_ATKED1 = int32(3)
|
ATK_CHARACTER_STATE_ATKED1 = int32(3)
|
||||||
ATK_CHARACTER_STATE_INAIR_IDLE1 = int32(4)
|
ATK_CHARACTER_STATE_INAIR_IDLE1_NO_JUMP = int32(4)
|
||||||
ATK_CHARACTER_STATE_INAIR_ATK1 = int32(5)
|
ATK_CHARACTER_STATE_INAIR_IDLE1_BY_JUMP = int32(5)
|
||||||
ATK_CHARACTER_STATE_INAIR_ATKED1 = int32(6)
|
ATK_CHARACTER_STATE_INAIR_ATK1 = int32(6)
|
||||||
|
ATK_CHARACTER_STATE_INAIR_ATKED1 = int32(7)
|
||||||
|
ATK_CHARACTER_STATE_BLOWN_UP1 = int32(8)
|
||||||
|
ATK_CHARACTER_STATE_LAY_DOWN1 = int32(9)
|
||||||
|
ATK_CHARACTER_STATE_GET_UP1 = int32(10)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var inAirSet = map[int32]bool{
|
||||||
|
ATK_CHARACTER_STATE_INAIR_IDLE1_NO_JUMP: true,
|
||||||
|
ATK_CHARACTER_STATE_INAIR_IDLE1_BY_JUMP: true,
|
||||||
|
ATK_CHARACTER_STATE_INAIR_ATK1: true,
|
||||||
|
ATK_CHARACTER_STATE_INAIR_ATKED1: true,
|
||||||
|
ATK_CHARACTER_STATE_BLOWN_UP1: true,
|
||||||
|
}
|
||||||
|
|
||||||
func ConvertToInputFrameId(renderFrameId int32, inputDelayFrames int32, inputScaleFrames uint32) int32 {
|
func ConvertToInputFrameId(renderFrameId int32, inputDelayFrames int32, inputScaleFrames uint32) int32 {
|
||||||
if renderFrameId < inputDelayFrames {
|
if renderFrameId < inputDelayFrames {
|
||||||
return 0
|
return 0
|
||||||
@ -351,22 +350,18 @@ func deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame *PlayerDownsync,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if decodedInput.BtnBLevel > prevBtnBLevel {
|
if decodedInput.BtnBLevel > prevBtnBLevel {
|
||||||
characStateAlreadyInAir := false
|
if _, existent := inAirSet[currPlayerDownsync.CharacterState]; !existent {
|
||||||
if ATK_CHARACTER_STATE_INAIR_IDLE1 == currPlayerDownsync.CharacterState || ATK_CHARACTER_STATE_INAIR_ATK1 == currPlayerDownsync.CharacterState || ATK_CHARACTER_STATE_INAIR_ATKED1 == currPlayerDownsync.CharacterState {
|
|
||||||
characStateAlreadyInAir = true
|
|
||||||
}
|
|
||||||
characStateIsInterruptWaivable := false
|
|
||||||
if ATK_CHARACTER_STATE_IDLE1 == currPlayerDownsync.CharacterState || ATK_CHARACTER_STATE_WALKING == currPlayerDownsync.CharacterState || ATK_CHARACTER_STATE_INAIR_IDLE1 == currPlayerDownsync.CharacterState {
|
|
||||||
characStateIsInterruptWaivable = true
|
|
||||||
}
|
|
||||||
if !characStateAlreadyInAir && characStateIsInterruptWaivable {
|
|
||||||
jumpedOrNot = true
|
jumpedOrNot = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
patternId := PATTERN_ID_NO_OP
|
patternId := PATTERN_ID_NO_OP
|
||||||
if decodedInput.BtnALevel > prevBtnALevel {
|
if decodedInput.BtnALevel > prevBtnALevel {
|
||||||
|
if currPlayerDownsync.InAir {
|
||||||
|
patternId = 1
|
||||||
|
} else {
|
||||||
patternId = 0
|
patternId = 0
|
||||||
|
}
|
||||||
effDx, effDy = 0, 0 // Most patterns/skills should not allow simultaneous movement
|
effDx, effDy = 0, 0 // Most patterns/skills should not allow simultaneous movement
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -374,7 +369,7 @@ func deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame *PlayerDownsync,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// [WARNING] The params of this method is carefully tuned such that only "battle.RoomDownsyncFrame" is a necessary custom struct.
|
// [WARNING] The params of this method is carefully tuned such that only "battle.RoomDownsyncFrame" is a necessary custom struct.
|
||||||
func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer, currRenderFrame *RoomDownsyncFrame, collisionSys *resolv.Space, collisionSysMap map[int32]*resolv.Object, gravityX, gravityY, jumpingInitVelY, inputDelayFrames int32, inputScaleFrames uint32, collisionSpaceOffsetX, collisionSpaceOffsetY, snapIntoPlatformOverlap, snapIntoPlatformThreshold, worldToVirtualGridRatio, virtualGridToWorldRatio float64, playerOpPatternToSkillId map[int]int) *RoomDownsyncFrame {
|
func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer, currRenderFrame *RoomDownsyncFrame, collisionSys *resolv.Space, collisionSysMap map[int32]*resolv.Object, collisionSpaceOffsetX, collisionSpaceOffsetY float64, playerOpPatternToSkillId map[int]int, chConfigsOrderedByJoinIndex []*CharacterConfig) *RoomDownsyncFrame {
|
||||||
// [WARNING] On backend this function MUST BE called while "InputsBufferLock" is locked!
|
// [WARNING] On backend this function MUST BE called while "InputsBufferLock" is locked!
|
||||||
roomCapacity := len(currRenderFrame.PlayersArr)
|
roomCapacity := len(currRenderFrame.PlayersArr)
|
||||||
nextRenderFramePlayers := make([]*PlayerDownsync, roomCapacity)
|
nextRenderFramePlayers := make([]*PlayerDownsync, roomCapacity)
|
||||||
@ -395,9 +390,10 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
Score: currPlayerDownsync.Score,
|
Score: currPlayerDownsync.Score,
|
||||||
Removed: currPlayerDownsync.Removed,
|
Removed: currPlayerDownsync.Removed,
|
||||||
JoinIndex: currPlayerDownsync.JoinIndex,
|
JoinIndex: currPlayerDownsync.JoinIndex,
|
||||||
FramesToRecover: currPlayerDownsync.FramesToRecover - 1,
|
|
||||||
Hp: currPlayerDownsync.Hp,
|
Hp: currPlayerDownsync.Hp,
|
||||||
MaxHp: currPlayerDownsync.MaxHp,
|
MaxHp: currPlayerDownsync.MaxHp,
|
||||||
|
FramesToRecover: currPlayerDownsync.FramesToRecover - 1,
|
||||||
|
FramesInChState: currPlayerDownsync.FramesInChState + 1,
|
||||||
}
|
}
|
||||||
if nextRenderFramePlayers[i].FramesToRecover < 0 {
|
if nextRenderFramePlayers[i].FramesToRecover < 0 {
|
||||||
nextRenderFramePlayers[i].FramesToRecover = 0
|
nextRenderFramePlayers[i].FramesToRecover = 0
|
||||||
@ -407,18 +403,20 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
nextRenderFrameMeleeBullets := make([]*MeleeBullet, 0, len(currRenderFrame.MeleeBullets)) // Is there any better way to reduce malloc/free impact, e.g. smart prediction for fixed memory allocation?
|
nextRenderFrameMeleeBullets := make([]*MeleeBullet, 0, len(currRenderFrame.MeleeBullets)) // Is there any better way to reduce malloc/free impact, e.g. smart prediction for fixed memory allocation?
|
||||||
effPushbacks := make([]Vec2D, roomCapacity)
|
effPushbacks := make([]Vec2D, roomCapacity)
|
||||||
hardPushbackNorms := make([]*[]Vec2D, roomCapacity)
|
hardPushbackNorms := make([]*[]Vec2D, roomCapacity)
|
||||||
|
jumpedOrNotList := make([]bool, roomCapacity)
|
||||||
|
|
||||||
// 1. Process player inputs
|
// 1. Process player inputs
|
||||||
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
|
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
|
||||||
|
jumpedOrNotList[i] = false
|
||||||
thatPlayerInNextFrame := nextRenderFramePlayers[i]
|
thatPlayerInNextFrame := nextRenderFramePlayers[i]
|
||||||
patternId, jumpedOrNot, effDx, effDy := deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame, currRenderFrame, inputsBuffer, inputDelayFrames, inputScaleFrames)
|
patternId, jumpedOrNot, effDx, effDy := deriveOpPattern(currPlayerDownsync, thatPlayerInNextFrame, currRenderFrame, inputsBuffer, INPUT_DELAY_FRAMES, INPUT_SCALE_FRAMES)
|
||||||
if PATTERN_ID_UNABLE_TO_OP == patternId {
|
if PATTERN_ID_UNABLE_TO_OP == patternId {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if jumpedOrNot {
|
if jumpedOrNot {
|
||||||
thatPlayerInNextFrame.VelY = jumpingInitVelY
|
thatPlayerInNextFrame.VelY = int32(chConfigsOrderedByJoinIndex[i].JumpingInitVelY)
|
||||||
thatPlayerInNextFrame.VirtualGridY += jumpingInitVelY // Immediately gets out of any snapping
|
jumpedOrNotList[i] = true
|
||||||
}
|
}
|
||||||
joinIndex := currPlayerDownsync.JoinIndex
|
joinIndex := currPlayerDownsync.JoinIndex
|
||||||
if PATTERN_ID_NO_OP != patternId {
|
if PATTERN_ID_NO_OP != patternId {
|
||||||
@ -457,14 +455,17 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
thatPlayerInNextFrame := nextRenderFramePlayers[i]
|
thatPlayerInNextFrame := nextRenderFramePlayers[i]
|
||||||
// Reset playerCollider position from the "virtual grid position"
|
// Reset playerCollider position from the "virtual grid position"
|
||||||
newVx, newVy := currPlayerDownsync.VirtualGridX+currPlayerDownsync.VelX, currPlayerDownsync.VirtualGridY+currPlayerDownsync.VelY
|
newVx, newVy := currPlayerDownsync.VirtualGridX+currPlayerDownsync.VelX, currPlayerDownsync.VirtualGridY+currPlayerDownsync.VelY
|
||||||
|
if jumpedOrNotList[i] {
|
||||||
|
newVy += int32(chConfigsOrderedByJoinIndex[i].JumpingInitVelY) // Immediately gets out of any snapping
|
||||||
|
}
|
||||||
|
|
||||||
playerCollider.X, playerCollider.Y = VirtualGridToPolygonColliderBLPos(newVx, newVy, playerCollider.W*0.5, playerCollider.H*0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY, virtualGridToWorldRatio)
|
playerCollider.X, playerCollider.Y = VirtualGridToPolygonColliderBLPos(newVx, newVy, playerCollider.W*0.5, playerCollider.H*0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY, VIRTUAL_GRID_TO_WORLD_RATIO)
|
||||||
// Update in the collision system
|
// Update in the collision system
|
||||||
playerCollider.Update()
|
playerCollider.Update()
|
||||||
|
|
||||||
if currPlayerDownsync.InAir {
|
if currPlayerDownsync.InAir {
|
||||||
thatPlayerInNextFrame.VelX += gravityX
|
thatPlayerInNextFrame.VelX += GRAVITY_X
|
||||||
thatPlayerInNextFrame.VelY += gravityY
|
thatPlayerInNextFrame.VelY += GRAVITY_Y
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -478,9 +479,9 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
if 0 > offender.DirX {
|
if 0 > offender.DirX {
|
||||||
xfac = float64(-1.0)
|
xfac = float64(-1.0)
|
||||||
}
|
}
|
||||||
offenderWx, offenderWy := VirtualGridToWorldPos(offender.VirtualGridX, offender.VirtualGridY, virtualGridToWorldRatio)
|
offenderWx, offenderWy := VirtualGridToWorldPos(offender.VirtualGridX, offender.VirtualGridY, VIRTUAL_GRID_TO_WORLD_RATIO)
|
||||||
bulletWx, bulletWy := offenderWx+xfac*meleeBullet.HitboxOffset, offenderWy
|
bulletWx, bulletWy := offenderWx+xfac*meleeBullet.HitboxOffset, offenderWy
|
||||||
newBulletCollider := GenerateRectCollider(bulletWx, bulletWy, meleeBullet.HitboxSizeX, meleeBullet.HitboxSizeY, snapIntoPlatformOverlap, snapIntoPlatformOverlap, snapIntoPlatformOverlap, snapIntoPlatformOverlap, collisionSpaceOffsetX, collisionSpaceOffsetY, meleeBullet, "MeleeBullet")
|
newBulletCollider := GenerateRectCollider(bulletWx, bulletWy, meleeBullet.HitboxSizeX, meleeBullet.HitboxSizeY, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, collisionSpaceOffsetX, collisionSpaceOffsetY, meleeBullet, "MeleeBullet")
|
||||||
collisionSys.Add(newBulletCollider)
|
collisionSys.Add(newBulletCollider)
|
||||||
bulletColliders = append(bulletColliders, newBulletCollider)
|
bulletColliders = append(bulletColliders, newBulletCollider)
|
||||||
} else {
|
} else {
|
||||||
@ -494,7 +495,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
collisionPlayerIndex := COLLISION_PLAYER_INDEX_PREFIX + joinIndex
|
collisionPlayerIndex := COLLISION_PLAYER_INDEX_PREFIX + joinIndex
|
||||||
playerCollider := collisionSysMap[collisionPlayerIndex]
|
playerCollider := collisionSysMap[collisionPlayerIndex]
|
||||||
playerShape := playerCollider.Shape.(*resolv.ConvexPolygon)
|
playerShape := playerCollider.Shape.(*resolv.ConvexPolygon)
|
||||||
hardPushbackNorms[joinIndex-1] = calcHardPushbacksNorms(joinIndex, playerCollider, playerShape, snapIntoPlatformOverlap, &(effPushbacks[joinIndex-1]))
|
hardPushbackNorms[joinIndex-1] = calcHardPushbacksNorms(joinIndex, playerCollider, playerShape, SNAP_INTO_PLATFORM_OVERLAP, &(effPushbacks[joinIndex-1]))
|
||||||
thatPlayerInNextFrame := nextRenderFramePlayers[i]
|
thatPlayerInNextFrame := nextRenderFramePlayers[i]
|
||||||
landedOnGravityPushback := false
|
landedOnGravityPushback := false
|
||||||
if collision := playerCollider.Check(0, 0); nil != collision {
|
if collision := playerCollider.Check(0, 0); nil != collision {
|
||||||
@ -521,7 +522,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
normAlignmentWithGravity := (overlapResult.OverlapX*float64(0) + overlapResult.OverlapY*float64(-1.0))
|
normAlignmentWithGravity := (overlapResult.OverlapX*float64(0) + overlapResult.OverlapY*float64(-1.0))
|
||||||
if isAnotherPlayer {
|
if isAnotherPlayer {
|
||||||
// [WARNING] The "zero overlap collision" might be randomly detected/missed on either frontend or backend, to have deterministic result we added paddings to all sides of a playerCollider. As each velocity component of (velX, velY) being a multiple of 0.5 at any renderFrame, each position component of (x, y) can only be a multiple of 0.5 too, thus whenever a 1-dimensional collision happens between players from [player#1: i*0.5, player#2: j*0.5, not collided yet] to [player#1: (i+k)*0.5, player#2: j*0.5, collided], the overlap becomes (i+k-j)*0.5+2*s, and after snapping subtraction the effPushback magnitude for each player is (i+k-j)*0.5, resulting in 0.5-multiples-position for the next renderFrame.
|
// [WARNING] The "zero overlap collision" might be randomly detected/missed on either frontend or backend, to have deterministic result we added paddings to all sides of a playerCollider. As each velocity component of (velX, velY) being a multiple of 0.5 at any renderFrame, each position component of (x, y) can only be a multiple of 0.5 too, thus whenever a 1-dimensional collision happens between players from [player#1: i*0.5, player#2: j*0.5, not collided yet] to [player#1: (i+k)*0.5, player#2: j*0.5, collided], the overlap becomes (i+k-j)*0.5+2*s, and after snapping subtraction the effPushback magnitude for each player is (i+k-j)*0.5, resulting in 0.5-multiples-position for the next renderFrame.
|
||||||
pushbackX, pushbackY = (overlapResult.Overlap-snapIntoPlatformOverlap*2)*overlapResult.OverlapX, (overlapResult.Overlap-snapIntoPlatformOverlap*2)*overlapResult.OverlapY
|
pushbackX, pushbackY = (overlapResult.Overlap-SNAP_INTO_PLATFORM_OVERLAP*2)*overlapResult.OverlapX, (overlapResult.Overlap-SNAP_INTO_PLATFORM_OVERLAP*2)*overlapResult.OverlapY
|
||||||
}
|
}
|
||||||
for _, hardPushbackNorm := range *hardPushbackNorms[joinIndex-1] {
|
for _, hardPushbackNorm := range *hardPushbackNorms[joinIndex-1] {
|
||||||
projectedMagnitude := pushbackX*hardPushbackNorm.X + pushbackY*hardPushbackNorm.Y
|
projectedMagnitude := pushbackX*hardPushbackNorm.X + pushbackY*hardPushbackNorm.Y
|
||||||
@ -533,7 +534,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
effPushbacks[joinIndex-1].X += pushbackX
|
effPushbacks[joinIndex-1].X += pushbackX
|
||||||
effPushbacks[joinIndex-1].Y += pushbackY
|
effPushbacks[joinIndex-1].Y += pushbackY
|
||||||
|
|
||||||
if snapIntoPlatformThreshold < normAlignmentWithGravity {
|
if SNAP_INTO_PLATFORM_THRESHOLD < normAlignmentWithGravity {
|
||||||
landedOnGravityPushback = true
|
landedOnGravityPushback = true
|
||||||
//playerColliderCenterX, playerColliderCenterY := playerCollider.Center()
|
//playerColliderCenterX, playerColliderCenterY := playerCollider.Center()
|
||||||
//fmt.Printf("joinIndex=%d landedOnGravityPushback\n{renderFrame.id: %d, isBarrier: %v, isAnotherPlayer: %v}\nhardPushbackNormsOfThisPlayer=%v, playerColliderPos=(%.2f,%.2f), immediatePushback={%.3f, %.3f}, effPushback={%.3f, %.3f}, overlapMag=%.4f\n", joinIndex, currRenderFrame.Id, isBarrier, isAnotherPlayer, *hardPushbackNorms[joinIndex-1], playerColliderCenterX, playerColliderCenterY, pushbackX, pushbackY, effPushbacks[joinIndex-1].X, effPushbacks[joinIndex-1].Y, overlapResult.Overlap)
|
//fmt.Printf("joinIndex=%d landedOnGravityPushback\n{renderFrame.id: %d, isBarrier: %v, isAnotherPlayer: %v}\nhardPushbackNormsOfThisPlayer=%v, playerColliderPos=(%.2f,%.2f), immediatePushback={%.3f, %.3f}, effPushback={%.3f, %.3f}, overlapMag=%.4f\n", joinIndex, currRenderFrame.Id, isBarrier, isAnotherPlayer, *hardPushbackNorms[joinIndex-1], playerColliderCenterX, playerColliderCenterY, pushbackX, pushbackY, effPushbacks[joinIndex-1].X, effPushbacks[joinIndex-1].Y, overlapResult.Overlap)
|
||||||
@ -550,11 +551,15 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
thatPlayerInNextFrame.FramesToRecover = 0
|
thatPlayerInNextFrame.FramesToRecover = 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if currPlayerDownsync.InAir {
|
if thatPlayerInNextFrame.InAir {
|
||||||
oldNextCharacterState := thatPlayerInNextFrame.CharacterState
|
oldNextCharacterState := thatPlayerInNextFrame.CharacterState
|
||||||
switch oldNextCharacterState {
|
switch oldNextCharacterState {
|
||||||
case ATK_CHARACTER_STATE_IDLE1, ATK_CHARACTER_STATE_WALKING:
|
case ATK_CHARACTER_STATE_IDLE1, ATK_CHARACTER_STATE_WALKING:
|
||||||
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_INAIR_IDLE1
|
if jumpedOrNotList[i] || ATK_CHARACTER_STATE_INAIR_IDLE1_BY_JUMP == currPlayerDownsync.CharacterState {
|
||||||
|
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_INAIR_IDLE1_BY_JUMP
|
||||||
|
} else {
|
||||||
|
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_INAIR_IDLE1_NO_JUMP
|
||||||
|
}
|
||||||
case ATK_CHARACTER_STATE_ATK1:
|
case ATK_CHARACTER_STATE_ATK1:
|
||||||
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_INAIR_ATK1
|
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_INAIR_ATK1
|
||||||
case ATK_CHARACTER_STATE_ATKED1:
|
case ATK_CHARACTER_STATE_ATKED1:
|
||||||
@ -624,7 +629,10 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
playerCollider := collisionSysMap[collisionPlayerIndex]
|
playerCollider := collisionSysMap[collisionPlayerIndex]
|
||||||
// Update "virtual grid position"
|
// Update "virtual grid position"
|
||||||
thatPlayerInNextFrame := nextRenderFramePlayers[i]
|
thatPlayerInNextFrame := nextRenderFramePlayers[i]
|
||||||
thatPlayerInNextFrame.VirtualGridX, thatPlayerInNextFrame.VirtualGridY = PolygonColliderBLToVirtualGridPos(playerCollider.X-effPushbacks[joinIndex-1].X, playerCollider.Y-effPushbacks[joinIndex-1].Y, playerCollider.W*0.5, playerCollider.H*0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY, worldToVirtualGridRatio)
|
thatPlayerInNextFrame.VirtualGridX, thatPlayerInNextFrame.VirtualGridY = PolygonColliderBLToVirtualGridPos(playerCollider.X-effPushbacks[joinIndex-1].X, playerCollider.Y-effPushbacks[joinIndex-1].Y, playerCollider.W*0.5, playerCollider.H*0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY, WORLD_TO_VIRTUAL_GRID_RATIO)
|
||||||
|
if thatPlayerInNextFrame.CharacterState != currPlayerDownsync.CharacterState {
|
||||||
|
thatPlayerInNextFrame.FramesInChState = 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &RoomDownsyncFrame{
|
return &RoomDownsyncFrame{
|
||||||
|
74
jsexport/battle/characterConfig.go
Normal file
74
jsexport/battle/characterConfig.go
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
package battle
|
||||||
|
|
||||||
|
var Characters = map[int]*CharacterConfig{
|
||||||
|
0: &CharacterConfig{
|
||||||
|
SpeciesId: 0,
|
||||||
|
SpeciesName: "MonkGirl",
|
||||||
|
|
||||||
|
InAirIdleFrameIdxTurningPoint: 11,
|
||||||
|
InAirIdleFrameIdxTurnedCycle: 1,
|
||||||
|
|
||||||
|
LayDownFrames: 16,
|
||||||
|
LayDownFramesToRecover: 16,
|
||||||
|
|
||||||
|
GetUpFrames: 33,
|
||||||
|
GetUpFramesToRecover: 30, // 3 invinsible frames for just-blown-up character to make a comeback
|
||||||
|
|
||||||
|
JumpingInitVelY: int(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||||
|
|
||||||
|
PatternIdToSkillId: map[int]int{
|
||||||
|
0: 1, // Atk1
|
||||||
|
1: 2, // InAirAtk1
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
var skillIdToBullet = map[int]interface{}{
|
||||||
|
1: &MeleeBullet{
|
||||||
|
Bullet: Bullet{
|
||||||
|
// for offender
|
||||||
|
StartupFrames: int32(5),
|
||||||
|
ActiveFrames: int32(10),
|
||||||
|
RecoveryFrames: int32(34),
|
||||||
|
RecoveryFramesOnBlock: int32(34),
|
||||||
|
RecoveryFramesOnHit: int32(34),
|
||||||
|
HitboxOffset: float64(12.0), // should be about the radius of the PlayerCollider
|
||||||
|
|
||||||
|
// for defender
|
||||||
|
HitStunFrames: int32(18),
|
||||||
|
BlockStunFrames: int32(9),
|
||||||
|
Pushback: float64(8.0),
|
||||||
|
ReleaseTriggerType: int32(1), // 1: rising-edge, 2: falling-edge
|
||||||
|
Damage: int32(5),
|
||||||
|
|
||||||
|
SelfMoveforwardX: 0,
|
||||||
|
SelfMoveforwardY: 0,
|
||||||
|
HitboxSizeX: 24.0,
|
||||||
|
HitboxSizeY: 32.0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
2: &MeleeBullet{
|
||||||
|
Bullet: Bullet{
|
||||||
|
// for offender
|
||||||
|
StartupFrames: int32(3),
|
||||||
|
ActiveFrames: int32(20),
|
||||||
|
RecoveryFrames: int32(34),
|
||||||
|
RecoveryFramesOnBlock: int32(34),
|
||||||
|
RecoveryFramesOnHit: int32(34),
|
||||||
|
HitboxOffset: float64(16.0), // should be about the radius of the PlayerCollider
|
||||||
|
|
||||||
|
// for defender
|
||||||
|
HitStunFrames: int32(18),
|
||||||
|
BlockStunFrames: int32(9),
|
||||||
|
Pushback: float64(6.0),
|
||||||
|
BlowUpVelY: int32(float64(3) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||||
|
ReleaseTriggerType: int32(1), // 1: rising-edge, 2: falling-edge
|
||||||
|
Damage: int32(5),
|
||||||
|
|
||||||
|
SelfMoveforwardX: 0,
|
||||||
|
SelfMoveforwardY: 0,
|
||||||
|
HitboxSizeX: 32.0,
|
||||||
|
HitboxSizeY: 24.0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
@ -28,6 +28,7 @@ type PlayerDownsync struct {
|
|||||||
Score int32
|
Score int32
|
||||||
LastMoveGmtMillis int32
|
LastMoveGmtMillis int32
|
||||||
FramesToRecover int32
|
FramesToRecover int32
|
||||||
|
FramesInChState int32
|
||||||
Hp int32
|
Hp int32
|
||||||
MaxHp int32
|
MaxHp int32
|
||||||
CharacterState int32
|
CharacterState int32
|
||||||
@ -60,6 +61,7 @@ type Bullet struct {
|
|||||||
RecoveryFramesOnHit int32
|
RecoveryFramesOnHit int32
|
||||||
HitboxOffset float64
|
HitboxOffset float64
|
||||||
OriginatedRenderFrameId int32
|
OriginatedRenderFrameId int32
|
||||||
|
|
||||||
// for defender
|
// for defender
|
||||||
HitStunFrames int32
|
HitStunFrames int32
|
||||||
BlockStunFrames int32
|
BlockStunFrames int32
|
||||||
@ -73,6 +75,8 @@ type Bullet struct {
|
|||||||
SelfMoveforwardY float64
|
SelfMoveforwardY float64
|
||||||
HitboxSizeX float64
|
HitboxSizeX float64
|
||||||
HitboxSizeY float64
|
HitboxSizeY float64
|
||||||
|
|
||||||
|
BlowUpVelY int32
|
||||||
}
|
}
|
||||||
|
|
||||||
type MeleeBullet struct {
|
type MeleeBullet struct {
|
||||||
@ -90,6 +94,10 @@ type FireballBullet struct {
|
|||||||
Bullet
|
Bullet
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Skill struct {
|
||||||
|
Hits []Bullet // Hits within a "Skill" are automatically triggered
|
||||||
|
}
|
||||||
|
|
||||||
type RoomDownsyncFrame struct {
|
type RoomDownsyncFrame struct {
|
||||||
Id int32
|
Id int32
|
||||||
PlayersArr []*PlayerDownsync
|
PlayersArr []*PlayerDownsync
|
||||||
@ -106,3 +114,21 @@ type InputFrameDownsync struct {
|
|||||||
InputList []uint64
|
InputList []uint64
|
||||||
ConfirmedList uint64
|
ConfirmedList uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type CharacterConfig struct {
|
||||||
|
SpeciesId int
|
||||||
|
SpeciesName string
|
||||||
|
|
||||||
|
InAirIdleFrameIdxTurningPoint int
|
||||||
|
InAirIdleFrameIdxTurnedCycle int
|
||||||
|
|
||||||
|
LayDownFrames int
|
||||||
|
LayDownFramesToRecover int
|
||||||
|
|
||||||
|
GetUpFrames int
|
||||||
|
GetUpFramesToRecover int
|
||||||
|
|
||||||
|
JumpingInitVelY int
|
||||||
|
|
||||||
|
PatternIdToSkillId map[int]int
|
||||||
|
}
|
||||||
|
@ -42,7 +42,7 @@ func NewBarrierJs(boundary *Polygon2D) *js.Object {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPlayerDownsyncJs(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY, framesToRecover, speed, battleState, characterState, joinIndex, hp, maxHp int32, inAir bool, colliderRadius float64) *js.Object {
|
func NewPlayerDownsyncJs(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY, framesToRecover, framesInChState, speed, battleState, characterState, joinIndex, hp, maxHp int32, inAir bool, colliderRadius float64) *js.Object {
|
||||||
return js.MakeWrapper(&PlayerDownsync{
|
return js.MakeWrapper(&PlayerDownsync{
|
||||||
Id: id,
|
Id: id,
|
||||||
VirtualGridX: virtualGridX,
|
VirtualGridX: virtualGridX,
|
||||||
@ -52,6 +52,7 @@ func NewPlayerDownsyncJs(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY,
|
|||||||
VelX: velX,
|
VelX: velX,
|
||||||
VelY: velY,
|
VelY: velY,
|
||||||
FramesToRecover: framesToRecover,
|
FramesToRecover: framesToRecover,
|
||||||
|
FramesInChState: framesInChState,
|
||||||
Speed: speed,
|
Speed: speed,
|
||||||
BattleState: battleState,
|
BattleState: battleState,
|
||||||
JoinIndex: joinIndex,
|
JoinIndex: joinIndex,
|
||||||
@ -129,9 +130,17 @@ func GenerateConvexPolygonColliderJs(unalignedSrc *Polygon2D, spaceOffsetX, spac
|
|||||||
return js.MakeFullWrapper(GenerateConvexPolygonCollider(unalignedSrc, spaceOffsetX, spaceOffsetY, data, tag))
|
return js.MakeFullWrapper(GenerateConvexPolygonCollider(unalignedSrc, spaceOffsetX, spaceOffsetY, data, tag))
|
||||||
}
|
}
|
||||||
|
|
||||||
func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrameJs(inputsBuffer *RingBuffer, currRenderFrame *RoomDownsyncFrame, collisionSys *resolv.Space, collisionSysMap map[int32]*resolv.Object, gravityX, gravityY, jumpingInitVelY, inputDelayFrames int32, inputScaleFrames uint32, collisionSpaceOffsetX, collisionSpaceOffsetY, snapIntoPlatformOverlap, snapIntoPlatformThreshold, worldToVirtualGridRatio, virtualGridToWorldRatio float64, playerOpPatternToSkillId map[int]int) *js.Object {
|
func GetCharacterConfigsOrderedByJoinIndex(speciesIdList []int) []*js.Object {
|
||||||
|
ret := make([]*js.Object, len(speciesIdList), len(speciesIdList))
|
||||||
|
for i, speciesId := range speciesIdList {
|
||||||
|
ret[i] = js.MakeFullWrapper(Characters[speciesId])
|
||||||
|
}
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrameJs(inputsBuffer *RingBuffer, currRenderFrame *RoomDownsyncFrame, collisionSys *resolv.Space, collisionSysMap map[int32]*resolv.Object, collisionSpaceOffsetX, collisionSpaceOffsetY float64, playerOpPatternToSkillId map[int]int, chConfigsOrderedByJoinIndex []*CharacterConfig) *js.Object {
|
||||||
// We need access to all fields of RoomDownsyncFrame for displaying in frontend
|
// We need access to all fields of RoomDownsyncFrame for displaying in frontend
|
||||||
return js.MakeFullWrapper(ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, gravityX, gravityY, jumpingInitVelY, inputDelayFrames, inputScaleFrames, collisionSpaceOffsetX, collisionSpaceOffsetY, snapIntoPlatformOverlap, snapIntoPlatformThreshold, worldToVirtualGridRatio, virtualGridToWorldRatio, playerOpPatternToSkillId))
|
return js.MakeFullWrapper(ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, playerOpPatternToSkillId, chConfigsOrderedByJoinIndex))
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@ -148,6 +157,7 @@ func main() {
|
|||||||
"GenerateRectColliderJs": GenerateRectColliderJs,
|
"GenerateRectColliderJs": GenerateRectColliderJs,
|
||||||
"GenerateConvexPolygonColliderJs": GenerateConvexPolygonColliderJs,
|
"GenerateConvexPolygonColliderJs": GenerateConvexPolygonColliderJs,
|
||||||
"GetCollisionSpaceObjsJs": GetCollisionSpaceObjsJs,
|
"GetCollisionSpaceObjsJs": GetCollisionSpaceObjsJs,
|
||||||
|
"GetCharacterConfigsOrderedByJoinIndex": GetCharacterConfigsOrderedByJoinIndex,
|
||||||
"ApplyInputFrameDownsyncDynamicsOnSingleRenderFrameJs": ApplyInputFrameDownsyncDynamicsOnSingleRenderFrameJs,
|
"ApplyInputFrameDownsyncDynamicsOnSingleRenderFrameJs": ApplyInputFrameDownsyncDynamicsOnSingleRenderFrameJs,
|
||||||
"WorldToPolygonColliderBLPos": WorldToPolygonColliderBLPos, // No need to wrap primitive return types
|
"WorldToPolygonColliderBLPos": WorldToPolygonColliderBLPos, // No need to wrap primitive return types
|
||||||
"PolygonColliderBLToWorldPos": PolygonColliderBLToWorldPos,
|
"PolygonColliderBLToWorldPos": PolygonColliderBLToWorldPos,
|
||||||
|
Loading…
Reference in New Issue
Block a user