mirror of
https://github.com/genxium/DelayNoMore
synced 2024-12-26 19:58:56 +00:00
Implemented basic fireball collision.
This commit is contained in:
parent
ab122a7bc8
commit
823624d95d
@ -12,7 +12,9 @@ func toPbRoomDownsyncFrame(rdf *battle.RoomDownsyncFrame) *pb.RoomDownsyncFrame
|
|||||||
ret := &pb.RoomDownsyncFrame{
|
ret := &pb.RoomDownsyncFrame{
|
||||||
Id: rdf.Id,
|
Id: rdf.Id,
|
||||||
PlayersArr: make([]*pb.PlayerDownsync, len(rdf.PlayersArr), len(rdf.PlayersArr)),
|
PlayersArr: make([]*pb.PlayerDownsync, len(rdf.PlayersArr), len(rdf.PlayersArr)),
|
||||||
|
BulletLocalIdCounter: rdf.BulletLocalIdCounter,
|
||||||
MeleeBullets: make([]*pb.MeleeBullet, len(rdf.MeleeBullets), len(rdf.MeleeBullets)),
|
MeleeBullets: make([]*pb.MeleeBullet, len(rdf.MeleeBullets), len(rdf.MeleeBullets)),
|
||||||
|
FireballBullets: make([]*pb.FireballBullet, len(rdf.FireballBullets), len(rdf.FireballBullets)),
|
||||||
CountdownNanos: rdf.CountdownNanos,
|
CountdownNanos: rdf.CountdownNanos,
|
||||||
BackendUnconfirmedMask: rdf.BackendUnconfirmedMask,
|
BackendUnconfirmedMask: rdf.BackendUnconfirmedMask,
|
||||||
ShouldForceResync: rdf.ShouldForceResync,
|
ShouldForceResync: rdf.ShouldForceResync,
|
||||||
@ -50,6 +52,7 @@ func toPbRoomDownsyncFrame(rdf *battle.RoomDownsyncFrame) *pb.RoomDownsyncFrame
|
|||||||
|
|
||||||
for i, last := range rdf.MeleeBullets {
|
for i, last := range rdf.MeleeBullets {
|
||||||
pbBullet := &pb.MeleeBullet{
|
pbBullet := &pb.MeleeBullet{
|
||||||
|
BulletLocalId: last.BulletLocalId,
|
||||||
OriginatedRenderFrameId: last.OriginatedRenderFrameId,
|
OriginatedRenderFrameId: last.OriginatedRenderFrameId,
|
||||||
OffenderJoinIndex: last.OffenderJoinIndex,
|
OffenderJoinIndex: last.OffenderJoinIndex,
|
||||||
|
|
||||||
@ -73,12 +76,50 @@ func toPbRoomDownsyncFrame(rdf *battle.RoomDownsyncFrame) *pb.RoomDownsyncFrame
|
|||||||
HitboxSizeY: last.HitboxSizeY,
|
HitboxSizeY: last.HitboxSizeY,
|
||||||
|
|
||||||
BlowUp: last.BlowUp,
|
BlowUp: last.BlowUp,
|
||||||
|
|
||||||
TeamId: last.TeamId,
|
TeamId: last.TeamId,
|
||||||
}
|
}
|
||||||
ret.MeleeBullets[i] = pbBullet
|
ret.MeleeBullets[i] = pbBullet
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for i, last := range rdf.FireballBullets {
|
||||||
|
pbBullet := &pb.FireballBullet{
|
||||||
|
BulletLocalId: last.BulletLocalId,
|
||||||
|
OriginatedRenderFrameId: last.OriginatedRenderFrameId,
|
||||||
|
OffenderJoinIndex: last.OffenderJoinIndex,
|
||||||
|
|
||||||
|
StartupFrames: last.StartupFrames,
|
||||||
|
CancellableStFrame: last.CancellableStFrame,
|
||||||
|
CancellableEdFrame: last.CancellableEdFrame,
|
||||||
|
ActiveFrames: last.ActiveFrames,
|
||||||
|
|
||||||
|
HitStunFrames: last.HitStunFrames,
|
||||||
|
BlockStunFrames: last.BlockStunFrames,
|
||||||
|
PushbackVelX: last.PushbackVelX,
|
||||||
|
PushbackVelY: last.PushbackVelY,
|
||||||
|
Damage: last.Damage,
|
||||||
|
|
||||||
|
SelfLockVelX: last.SelfLockVelX,
|
||||||
|
SelfLockVelY: last.SelfLockVelY,
|
||||||
|
|
||||||
|
HitboxOffsetX: last.HitboxOffsetX,
|
||||||
|
HitboxOffsetY: last.HitboxOffsetY,
|
||||||
|
HitboxSizeX: last.HitboxSizeX,
|
||||||
|
HitboxSizeY: last.HitboxSizeY,
|
||||||
|
|
||||||
|
BlowUp: last.BlowUp,
|
||||||
|
TeamId: last.TeamId,
|
||||||
|
|
||||||
|
VirtualGridX: last.VirtualGridX,
|
||||||
|
VirtualGridY: last.VirtualGridY,
|
||||||
|
DirX: last.DirX,
|
||||||
|
DirY: last.DirY,
|
||||||
|
VelX: last.VelX,
|
||||||
|
VelY: last.VelY,
|
||||||
|
Speed: last.Speed,
|
||||||
|
}
|
||||||
|
ret.FireballBullets[i] = pbBullet
|
||||||
|
}
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -381,6 +381,9 @@ func (pR *Room) StartBattle() {
|
|||||||
|
|
||||||
for _, player := range pR.Players {
|
for _, player := range pR.Players {
|
||||||
speciesId := int(player.JoinIndex - 1) // FIXME: Hardcoded the values for now
|
speciesId := int(player.JoinIndex - 1) // FIXME: Hardcoded the values for now
|
||||||
|
if player.JoinIndex == 2 {
|
||||||
|
speciesId = 4096
|
||||||
|
}
|
||||||
chosenCh := battle.Characters[speciesId]
|
chosenCh := battle.Characters[speciesId]
|
||||||
pR.CharacterConfigsArr[player.JoinIndex-1] = chosenCh
|
pR.CharacterConfigsArr[player.JoinIndex-1] = chosenCh
|
||||||
pR.SpeciesIdList[player.JoinIndex-1] = int32(speciesId)
|
pR.SpeciesIdList[player.JoinIndex-1] = int32(speciesId)
|
||||||
|
@ -805,6 +805,8 @@ type MeleeBullet struct {
|
|||||||
HitboxSizeX int32 `protobuf:"varint,16,opt,name=hitboxSizeX,proto3" json:"hitboxSizeX,omitempty"`
|
HitboxSizeX int32 `protobuf:"varint,16,opt,name=hitboxSizeX,proto3" json:"hitboxSizeX,omitempty"`
|
||||||
HitboxSizeY int32 `protobuf:"varint,17,opt,name=hitboxSizeY,proto3" json:"hitboxSizeY,omitempty"`
|
HitboxSizeY int32 `protobuf:"varint,17,opt,name=hitboxSizeY,proto3" json:"hitboxSizeY,omitempty"`
|
||||||
BlowUp bool `protobuf:"varint,18,opt,name=blowUp,proto3" json:"blowUp,omitempty"`
|
BlowUp bool `protobuf:"varint,18,opt,name=blowUp,proto3" json:"blowUp,omitempty"`
|
||||||
|
TeamId int32 `protobuf:"varint,19,opt,name=teamId,proto3" json:"teamId,omitempty"`
|
||||||
|
BulletLocalId int32 `protobuf:"varint,20,opt,name=bulletLocalId,proto3" json:"bulletLocalId,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *MeleeBullet) Reset() {
|
func (x *MeleeBullet) Reset() {
|
||||||
@ -965,6 +967,275 @@ func (x *MeleeBullet) GetBlowUp() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *MeleeBullet) GetTeamId() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.TeamId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *MeleeBullet) GetBulletLocalId() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.BulletLocalId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type FireballBullet struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
OriginatedRenderFrameId int32 `protobuf:"varint,1,opt,name=originatedRenderFrameId,proto3" json:"originatedRenderFrameId,omitempty"`
|
||||||
|
OffenderJoinIndex int32 `protobuf:"varint,2,opt,name=offenderJoinIndex,proto3" json:"offenderJoinIndex,omitempty"`
|
||||||
|
StartupFrames int32 `protobuf:"varint,3,opt,name=startupFrames,proto3" json:"startupFrames,omitempty"`
|
||||||
|
CancellableStFrame int32 `protobuf:"varint,4,opt,name=cancellableStFrame,proto3" json:"cancellableStFrame,omitempty"`
|
||||||
|
CancellableEdFrame int32 `protobuf:"varint,5,opt,name=cancellableEdFrame,proto3" json:"cancellableEdFrame,omitempty"`
|
||||||
|
ActiveFrames int32 `protobuf:"varint,6,opt,name=activeFrames,proto3" json:"activeFrames,omitempty"`
|
||||||
|
HitStunFrames int32 `protobuf:"varint,7,opt,name=hitStunFrames,proto3" json:"hitStunFrames,omitempty"`
|
||||||
|
BlockStunFrames int32 `protobuf:"varint,8,opt,name=blockStunFrames,proto3" json:"blockStunFrames,omitempty"`
|
||||||
|
PushbackVelX int32 `protobuf:"varint,9,opt,name=pushbackVelX,proto3" json:"pushbackVelX,omitempty"`
|
||||||
|
PushbackVelY int32 `protobuf:"varint,10,opt,name=pushbackVelY,proto3" json:"pushbackVelY,omitempty"`
|
||||||
|
Damage int32 `protobuf:"varint,11,opt,name=damage,proto3" json:"damage,omitempty"`
|
||||||
|
SelfLockVelX int32 `protobuf:"varint,12,opt,name=selfLockVelX,proto3" json:"selfLockVelX,omitempty"`
|
||||||
|
SelfLockVelY int32 `protobuf:"varint,13,opt,name=selfLockVelY,proto3" json:"selfLockVelY,omitempty"`
|
||||||
|
HitboxOffsetX int32 `protobuf:"varint,14,opt,name=hitboxOffsetX,proto3" json:"hitboxOffsetX,omitempty"`
|
||||||
|
HitboxOffsetY int32 `protobuf:"varint,15,opt,name=hitboxOffsetY,proto3" json:"hitboxOffsetY,omitempty"`
|
||||||
|
HitboxSizeX int32 `protobuf:"varint,16,opt,name=hitboxSizeX,proto3" json:"hitboxSizeX,omitempty"`
|
||||||
|
HitboxSizeY int32 `protobuf:"varint,17,opt,name=hitboxSizeY,proto3" json:"hitboxSizeY,omitempty"`
|
||||||
|
BlowUp bool `protobuf:"varint,18,opt,name=blowUp,proto3" json:"blowUp,omitempty"`
|
||||||
|
TeamId int32 `protobuf:"varint,19,opt,name=teamId,proto3" json:"teamId,omitempty"`
|
||||||
|
BulletLocalId int32 `protobuf:"varint,20,opt,name=bulletLocalId,proto3" json:"bulletLocalId,omitempty"`
|
||||||
|
VirtualGridX int32 `protobuf:"varint,999,opt,name=virtualGridX,proto3" json:"virtualGridX,omitempty"`
|
||||||
|
VirtualGridY int32 `protobuf:"varint,1000,opt,name=virtualGridY,proto3" json:"virtualGridY,omitempty"`
|
||||||
|
DirX int32 `protobuf:"varint,1001,opt,name=dirX,proto3" json:"dirX,omitempty"`
|
||||||
|
DirY int32 `protobuf:"varint,1002,opt,name=dirY,proto3" json:"dirY,omitempty"`
|
||||||
|
VelX int32 `protobuf:"varint,1003,opt,name=velX,proto3" json:"velX,omitempty"`
|
||||||
|
VelY int32 `protobuf:"varint,1004,opt,name=velY,proto3" json:"velY,omitempty"`
|
||||||
|
Speed int32 `protobuf:"varint,1005,opt,name=speed,proto3" json:"speed,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) Reset() {
|
||||||
|
*x = FireballBullet{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_room_downsync_frame_proto_msgTypes[9]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*FireballBullet) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *FireballBullet) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_room_downsync_frame_proto_msgTypes[9]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use FireballBullet.ProtoReflect.Descriptor instead.
|
||||||
|
func (*FireballBullet) Descriptor() ([]byte, []int) {
|
||||||
|
return file_room_downsync_frame_proto_rawDescGZIP(), []int{9}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetOriginatedRenderFrameId() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.OriginatedRenderFrameId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetOffenderJoinIndex() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.OffenderJoinIndex
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetStartupFrames() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.StartupFrames
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetCancellableStFrame() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.CancellableStFrame
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetCancellableEdFrame() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.CancellableEdFrame
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetActiveFrames() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.ActiveFrames
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetHitStunFrames() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.HitStunFrames
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetBlockStunFrames() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.BlockStunFrames
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetPushbackVelX() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.PushbackVelX
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetPushbackVelY() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.PushbackVelY
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetDamage() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Damage
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetSelfLockVelX() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.SelfLockVelX
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetSelfLockVelY() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.SelfLockVelY
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetHitboxOffsetX() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.HitboxOffsetX
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetHitboxOffsetY() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.HitboxOffsetY
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetHitboxSizeX() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.HitboxSizeX
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetHitboxSizeY() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.HitboxSizeY
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetBlowUp() bool {
|
||||||
|
if x != nil {
|
||||||
|
return x.BlowUp
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetTeamId() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.TeamId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetBulletLocalId() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.BulletLocalId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetVirtualGridX() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.VirtualGridX
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetVirtualGridY() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.VirtualGridY
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetDirX() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.DirX
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetDirY() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.DirY
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetVelX() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.VelX
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetVelY() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.VelY
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *FireballBullet) GetSpeed() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Speed
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
type BattleColliderInfo struct {
|
type BattleColliderInfo struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
@ -983,13 +1254,13 @@ type BattleColliderInfo struct {
|
|||||||
SpaceOffsetX float64 `protobuf:"fixed64,11,opt,name=spaceOffsetX,proto3" json:"spaceOffsetX,omitempty"`
|
SpaceOffsetX float64 `protobuf:"fixed64,11,opt,name=spaceOffsetX,proto3" json:"spaceOffsetX,omitempty"`
|
||||||
SpaceOffsetY float64 `protobuf:"fixed64,12,opt,name=spaceOffsetY,proto3" json:"spaceOffsetY,omitempty"`
|
SpaceOffsetY float64 `protobuf:"fixed64,12,opt,name=spaceOffsetY,proto3" json:"spaceOffsetY,omitempty"`
|
||||||
CollisionMinStep int32 `protobuf:"varint,13,opt,name=collisionMinStep,proto3" json:"collisionMinStep,omitempty"`
|
CollisionMinStep int32 `protobuf:"varint,13,opt,name=collisionMinStep,proto3" json:"collisionMinStep,omitempty"`
|
||||||
FrameDataLoggingEnabled bool `protobuf:"varint,999,opt,name=frameDataLoggingEnabled,proto3" json:"frameDataLoggingEnabled,omitempty"`
|
FrameDataLoggingEnabled bool `protobuf:"varint,1024,opt,name=frameDataLoggingEnabled,proto3" json:"frameDataLoggingEnabled,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *BattleColliderInfo) Reset() {
|
func (x *BattleColliderInfo) Reset() {
|
||||||
*x = BattleColliderInfo{}
|
*x = BattleColliderInfo{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_room_downsync_frame_proto_msgTypes[9]
|
mi := &file_room_downsync_frame_proto_msgTypes[10]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -1002,7 +1273,7 @@ func (x *BattleColliderInfo) String() string {
|
|||||||
func (*BattleColliderInfo) ProtoMessage() {}
|
func (*BattleColliderInfo) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *BattleColliderInfo) ProtoReflect() protoreflect.Message {
|
func (x *BattleColliderInfo) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_room_downsync_frame_proto_msgTypes[9]
|
mi := &file_room_downsync_frame_proto_msgTypes[10]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -1015,7 +1286,7 @@ func (x *BattleColliderInfo) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use BattleColliderInfo.ProtoReflect.Descriptor instead.
|
// Deprecated: Use BattleColliderInfo.ProtoReflect.Descriptor instead.
|
||||||
func (*BattleColliderInfo) Descriptor() ([]byte, []int) {
|
func (*BattleColliderInfo) Descriptor() ([]byte, []int) {
|
||||||
return file_room_downsync_frame_proto_rawDescGZIP(), []int{9}
|
return file_room_downsync_frame_proto_rawDescGZIP(), []int{10}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *BattleColliderInfo) GetStageName() string {
|
func (x *BattleColliderInfo) GetStageName() string {
|
||||||
@ -1125,15 +1396,17 @@ type RoomDownsyncFrame struct {
|
|||||||
PlayersArr []*PlayerDownsync `protobuf:"bytes,2,rep,name=playersArr,proto3" json:"playersArr,omitempty"`
|
PlayersArr []*PlayerDownsync `protobuf:"bytes,2,rep,name=playersArr,proto3" json:"playersArr,omitempty"`
|
||||||
CountdownNanos int64 `protobuf:"varint,3,opt,name=countdownNanos,proto3" json:"countdownNanos,omitempty"`
|
CountdownNanos int64 `protobuf:"varint,3,opt,name=countdownNanos,proto3" json:"countdownNanos,omitempty"`
|
||||||
MeleeBullets []*MeleeBullet `protobuf:"bytes,4,rep,name=meleeBullets,proto3" json:"meleeBullets,omitempty"` // I don't know how to mimic inheritance/composition in protobuf by far, thus using an array for each type of bullet as a compromise
|
MeleeBullets []*MeleeBullet `protobuf:"bytes,4,rep,name=meleeBullets,proto3" json:"meleeBullets,omitempty"` // I don't know how to mimic inheritance/composition in protobuf by far, thus using an array for each type of bullet as a compromise
|
||||||
BackendUnconfirmedMask uint64 `protobuf:"varint,5,opt,name=backendUnconfirmedMask,proto3" json:"backendUnconfirmedMask,omitempty"` // Indexed by "joinIndex", same compression concern as stated in InputFrameDownsync
|
FireballBullets []*FireballBullet `protobuf:"bytes,5,rep,name=fireballBullets,proto3" json:"fireballBullets,omitempty"`
|
||||||
ShouldForceResync bool `protobuf:"varint,6,opt,name=shouldForceResync,proto3" json:"shouldForceResync,omitempty"`
|
BackendUnconfirmedMask uint64 `protobuf:"varint,1024,opt,name=backendUnconfirmedMask,proto3" json:"backendUnconfirmedMask,omitempty"` // Indexed by "joinIndex", same compression concern as stated in InputFrameDownsync
|
||||||
SpeciesIdList []int32 `protobuf:"varint,7,rep,packed,name=speciesIdList,proto3" json:"speciesIdList,omitempty"`
|
ShouldForceResync bool `protobuf:"varint,1025,opt,name=shouldForceResync,proto3" json:"shouldForceResync,omitempty"`
|
||||||
|
SpeciesIdList []int32 `protobuf:"varint,1026,rep,packed,name=speciesIdList,proto3" json:"speciesIdList,omitempty"`
|
||||||
|
BulletLocalIdCounter int32 `protobuf:"varint,1027,opt,name=bulletLocalIdCounter,proto3" json:"bulletLocalIdCounter,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *RoomDownsyncFrame) Reset() {
|
func (x *RoomDownsyncFrame) Reset() {
|
||||||
*x = RoomDownsyncFrame{}
|
*x = RoomDownsyncFrame{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_room_downsync_frame_proto_msgTypes[10]
|
mi := &file_room_downsync_frame_proto_msgTypes[11]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -1146,7 +1419,7 @@ func (x *RoomDownsyncFrame) String() string {
|
|||||||
func (*RoomDownsyncFrame) ProtoMessage() {}
|
func (*RoomDownsyncFrame) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *RoomDownsyncFrame) ProtoReflect() protoreflect.Message {
|
func (x *RoomDownsyncFrame) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_room_downsync_frame_proto_msgTypes[10]
|
mi := &file_room_downsync_frame_proto_msgTypes[11]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -1159,7 +1432,7 @@ func (x *RoomDownsyncFrame) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use RoomDownsyncFrame.ProtoReflect.Descriptor instead.
|
// Deprecated: Use RoomDownsyncFrame.ProtoReflect.Descriptor instead.
|
||||||
func (*RoomDownsyncFrame) Descriptor() ([]byte, []int) {
|
func (*RoomDownsyncFrame) Descriptor() ([]byte, []int) {
|
||||||
return file_room_downsync_frame_proto_rawDescGZIP(), []int{10}
|
return file_room_downsync_frame_proto_rawDescGZIP(), []int{11}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *RoomDownsyncFrame) GetId() int32 {
|
func (x *RoomDownsyncFrame) GetId() int32 {
|
||||||
@ -1190,6 +1463,13 @@ func (x *RoomDownsyncFrame) GetMeleeBullets() []*MeleeBullet {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *RoomDownsyncFrame) GetFireballBullets() []*FireballBullet {
|
||||||
|
if x != nil {
|
||||||
|
return x.FireballBullets
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (x *RoomDownsyncFrame) GetBackendUnconfirmedMask() uint64 {
|
func (x *RoomDownsyncFrame) GetBackendUnconfirmedMask() uint64 {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.BackendUnconfirmedMask
|
return x.BackendUnconfirmedMask
|
||||||
@ -1211,6 +1491,13 @@ func (x *RoomDownsyncFrame) GetSpeciesIdList() []int32 {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *RoomDownsyncFrame) GetBulletLocalIdCounter() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.BulletLocalIdCounter
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
var File_room_downsync_frame_proto protoreflect.FileDescriptor
|
var File_room_downsync_frame_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_room_downsync_frame_proto_rawDesc = []byte{
|
var file_room_downsync_frame_proto_rawDesc = []byte{
|
||||||
@ -1347,7 +1634,7 @@ var file_room_downsync_frame_proto_rawDesc = []byte{
|
|||||||
0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73, 0x12, 0x2c, 0x0a,
|
0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73, 0x12, 0x2c, 0x0a,
|
||||||
0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79,
|
0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79,
|
||||||
0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64,
|
0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64,
|
||||||
0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x22, 0xbf, 0x05, 0x0a, 0x0b,
|
0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x22, 0xfd, 0x05, 0x0a, 0x0b,
|
||||||
0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x17, 0x6f,
|
0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x17, 0x6f,
|
||||||
0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46,
|
0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46,
|
||||||
0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x6f, 0x72,
|
0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x6f, 0x72,
|
||||||
@ -1391,73 +1678,144 @@ var file_room_downsync_frame_proto_rawDesc = []byte{
|
|||||||
0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a,
|
0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a,
|
||||||
0x65, 0x59, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78,
|
0x65, 0x59, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78,
|
||||||
0x53, 0x69, 0x7a, 0x65, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x77, 0x55, 0x70, 0x18,
|
0x53, 0x69, 0x7a, 0x65, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x77, 0x55, 0x70, 0x18,
|
||||||
0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x77, 0x55, 0x70, 0x22, 0xc9, 0x05,
|
0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x77, 0x55, 0x70, 0x12, 0x16, 0x0a,
|
||||||
0x0a, 0x12, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x65, 0x72,
|
0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74,
|
||||||
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d,
|
0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c,
|
||||||
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61,
|
0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x62, 0x75,
|
||||||
0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f,
|
0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x22, 0xb5, 0x07, 0x0a, 0x0e,
|
||||||
0x50, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65,
|
0x46, 0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x38,
|
||||||
0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x0a, 0x15, 0x77, 0x69,
|
0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64,
|
||||||
0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65,
|
0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
0x46, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x77, 0x69, 0x6c, 0x6c, 0x4b,
|
0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64, 0x65,
|
||||||
0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x6f, 0x72,
|
0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x66, 0x66, 0x65,
|
||||||
0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18,
|
0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20,
|
||||||
0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x6f, 0x6d,
|
0x01, 0x28, 0x05, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69,
|
||||||
0x49, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61,
|
0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75,
|
||||||
0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
|
0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73,
|
||||||
0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e,
|
0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12,
|
||||||
0x61, 0x6e, 0x6f, 0x73, 0x12, 0x46, 0x0a, 0x1e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61,
|
0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61,
|
||||||
0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x6f, 0x6c,
|
0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c,
|
||||||
0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1e, 0x69, 0x6e,
|
0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x12,
|
||||||
|
0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61,
|
||||||
|
0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c,
|
||||||
|
0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c,
|
||||||
|
0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01,
|
||||||
|
0x28, 0x05, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
|
||||||
|
0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
||||||
|
0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e,
|
||||||
|
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53,
|
||||||
|
0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
|
0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
|
||||||
|
0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58,
|
||||||
|
0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b,
|
||||||
|
0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b,
|
||||||
|
0x56, 0x65, 0x6c, 0x59, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68,
|
||||||
|
0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x6d, 0x61,
|
||||||
|
0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65,
|
||||||
|
0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58,
|
||||||
|
0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b,
|
||||||
|
0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b,
|
||||||
|
0x56, 0x65, 0x6c, 0x59, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66,
|
||||||
|
0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62,
|
||||||
|
0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
|
0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x12, 0x24,
|
||||||
|
0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x18,
|
||||||
|
0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66,
|
||||||
|
0x73, 0x65, 0x74, 0x59, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69,
|
||||||
|
0x7a, 0x65, 0x58, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f,
|
||||||
|
0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78,
|
||||||
|
0x53, 0x69, 0x7a, 0x65, 0x59, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74,
|
||||||
|
0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x77,
|
||||||
|
0x55, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x77, 0x55, 0x70,
|
||||||
|
0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05,
|
||||||
|
0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x75, 0x6c, 0x6c,
|
||||||
|
0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
|
0x0d, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x23,
|
||||||
|
0x0a, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64, 0x58, 0x18, 0xe7,
|
||||||
|
0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72,
|
||||||
|
0x69, 0x64, 0x58, 0x12, 0x23, 0x0a, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72,
|
||||||
|
0x69, 0x64, 0x59, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74,
|
||||||
|
0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64, 0x59, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x69, 0x72, 0x58,
|
||||||
|
0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x69, 0x72, 0x58, 0x12, 0x13, 0x0a,
|
||||||
|
0x04, 0x64, 0x69, 0x72, 0x59, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x69,
|
||||||
|
0x72, 0x59, 0x12, 0x13, 0x0a, 0x04, 0x76, 0x65, 0x6c, 0x58, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28,
|
||||||
|
0x05, 0x52, 0x04, 0x76, 0x65, 0x6c, 0x58, 0x12, 0x13, 0x0a, 0x04, 0x76, 0x65, 0x6c, 0x59, 0x18,
|
||||||
|
0xec, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x76, 0x65, 0x6c, 0x59, 0x12, 0x15, 0x0a, 0x05,
|
||||||
|
0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x70,
|
||||||
|
0x65, 0x65, 0x64, 0x22, 0xc9, 0x05, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f,
|
||||||
|
0x6c, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74,
|
||||||
|
0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73,
|
||||||
|
0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65,
|
||||||
|
0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
|
||||||
|
0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67,
|
||||||
|
0x12, 0x34, 0x0a, 0x15, 0x77, 0x69, 0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e,
|
||||||
|
0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
|
0x15, 0x77, 0x69, 0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74,
|
||||||
|
0x69, 0x76, 0x65, 0x46, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52,
|
||||||
|
0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x6f, 0x75,
|
||||||
|
0x6e, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x62, 0x61, 0x74, 0x74,
|
||||||
|
0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18,
|
||||||
|
0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72,
|
||||||
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x46, 0x0a, 0x1e, 0x69, 0x6e,
|
||||||
0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x44, 0x65,
|
0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x44, 0x65,
|
||||||
0x6c, 0x61, 0x79, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x1f,
|
0x6c, 0x61, 0x79, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01,
|
||||||
0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72,
|
0x28, 0x05, 0x52, 0x1e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70,
|
||||||
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18,
|
0x73, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e,
|
||||||
0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73, 0x69, 0x6e,
|
0x63, 0x65, 0x12, 0x48, 0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73, 0x69, 0x6e, 0x67,
|
||||||
0x67, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72,
|
0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x55,
|
||||||
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x19, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61,
|
0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1f, 0x6d, 0x61, 0x78,
|
||||||
0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4d, 0x69, 0x6c,
|
0x43, 0x68, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61,
|
||||||
0x6c, 0x69, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x72, 0x6f, 0x6c, 0x6c, 0x62,
|
0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x19,
|
||||||
0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4d, 0x69,
|
0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65,
|
||||||
0x6c, 0x6c, 0x69, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b,
|
0x64, 0x44, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52,
|
||||||
0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e, 0x61, 0x6e, 0x6f, 0x73,
|
0x19, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74,
|
||||||
0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b,
|
0x65, 0x64, 0x44, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x72, 0x6f,
|
||||||
0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e, 0x61, 0x6e, 0x6f, 0x73,
|
0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44,
|
||||||
0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53,
|
0x74, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x72, 0x6f,
|
||||||
0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65,
|
0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44,
|
||||||
0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x70,
|
0x74, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72,
|
||||||
0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01,
|
0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
0x52, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x12, 0x22,
|
0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65,
|
||||||
0x0a, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x18, 0x0c,
|
0x12, 0x22, 0x0a, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58,
|
||||||
0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65,
|
0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66,
|
||||||
0x74, 0x59, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d,
|
0x73, 0x65, 0x74, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66,
|
||||||
0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x6f,
|
0x73, 0x65, 0x74, 0x59, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63,
|
||||||
0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x12, 0x39,
|
0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c,
|
||||||
0x0a, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x67, 0x69,
|
0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x0d, 0x20, 0x01,
|
||||||
0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0xe7, 0x07, 0x20, 0x01, 0x28, 0x08,
|
0x28, 0x05, 0x52, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e,
|
||||||
0x52, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x67, 0x69,
|
0x53, 0x74, 0x65, 0x70, 0x12, 0x39, 0x0a, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74,
|
||||||
0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xc8, 0x02, 0x0a, 0x11, 0x52, 0x6f,
|
0x61, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18,
|
||||||
0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12,
|
0x80, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74,
|
||||||
0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12,
|
0x61, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22,
|
||||||
0x36, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x18, 0x02, 0x20,
|
0xc2, 0x03, 0x0a, 0x11, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63,
|
||||||
0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x50, 0x6c, 0x61,
|
0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||||
0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x0a, 0x70, 0x6c, 0x61,
|
0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73,
|
||||||
0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
0x41, 0x72, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||||
0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
|
0x6f, 0x73, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e,
|
||||||
0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12,
|
0x63, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x12, 0x26, 0x0a,
|
||||||
0x37, 0x0a, 0x0c, 0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x18,
|
0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18,
|
||||||
0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4d,
|
0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e,
|
||||||
0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x0c, 0x6d, 0x65, 0x6c, 0x65,
|
0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75,
|
||||||
0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x16, 0x62, 0x61, 0x63, 0x6b,
|
0x6c, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72,
|
||||||
0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61,
|
0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74,
|
||||||
0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e,
|
0x52, 0x0c, 0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x40,
|
||||||
0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b,
|
0x0a, 0x0f, 0x66, 0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74,
|
||||||
0x12, 0x2c, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52,
|
0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
|
||||||
0x65, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f,
|
0x2e, 0x46, 0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x52,
|
||||||
0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x24,
|
0x0f, 0x66, 0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73,
|
||||||
0x0a, 0x0d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18,
|
0x12, 0x37, 0x0a, 0x16, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e,
|
||||||
0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64,
|
0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x80, 0x08, 0x20, 0x01, 0x28,
|
||||||
0x4c, 0x69, 0x73, 0x74, 0x42, 0x13, 0x5a, 0x11, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x73,
|
0x04, 0x52, 0x16, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66,
|
||||||
|
0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x2d, 0x0a, 0x11, 0x73, 0x68, 0x6f,
|
||||||
|
0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x81,
|
||||||
|
0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72,
|
||||||
|
0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x25, 0x0a, 0x0d, 0x73, 0x70, 0x65, 0x63,
|
||||||
|
0x69, 0x65, 0x73, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x82, 0x08, 0x20, 0x03, 0x28, 0x05,
|
||||||
|
0x52, 0x0d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12,
|
||||||
|
0x33, 0x0a, 0x14, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64,
|
||||||
|
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x83, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14,
|
||||||
|
0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x43, 0x6f, 0x75,
|
||||||
|
0x6e, 0x74, 0x65, 0x72, 0x42, 0x13, 0x5a, 0x11, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x73,
|
||||||
0x72, 0x76, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
0x72, 0x76, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||||
0x33,
|
0x33,
|
||||||
}
|
}
|
||||||
@ -1474,7 +1832,7 @@ func file_room_downsync_frame_proto_rawDescGZIP() []byte {
|
|||||||
return file_room_downsync_frame_proto_rawDescData
|
return file_room_downsync_frame_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_room_downsync_frame_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
|
var file_room_downsync_frame_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
|
||||||
var file_room_downsync_frame_proto_goTypes = []interface{}{
|
var file_room_downsync_frame_proto_goTypes = []interface{}{
|
||||||
(*PlayerDownsync)(nil), // 0: protos.PlayerDownsync
|
(*PlayerDownsync)(nil), // 0: protos.PlayerDownsync
|
||||||
(*InputFrameDecoded)(nil), // 1: protos.InputFrameDecoded
|
(*InputFrameDecoded)(nil), // 1: protos.InputFrameDecoded
|
||||||
@ -1485,23 +1843,25 @@ var file_room_downsync_frame_proto_goTypes = []interface{}{
|
|||||||
(*WsResp)(nil), // 6: protos.WsResp
|
(*WsResp)(nil), // 6: protos.WsResp
|
||||||
(*InputsBufferSnapshot)(nil), // 7: protos.InputsBufferSnapshot
|
(*InputsBufferSnapshot)(nil), // 7: protos.InputsBufferSnapshot
|
||||||
(*MeleeBullet)(nil), // 8: protos.MeleeBullet
|
(*MeleeBullet)(nil), // 8: protos.MeleeBullet
|
||||||
(*BattleColliderInfo)(nil), // 9: protos.BattleColliderInfo
|
(*FireballBullet)(nil), // 9: protos.FireballBullet
|
||||||
(*RoomDownsyncFrame)(nil), // 10: protos.RoomDownsyncFrame
|
(*BattleColliderInfo)(nil), // 10: protos.BattleColliderInfo
|
||||||
|
(*RoomDownsyncFrame)(nil), // 11: protos.RoomDownsyncFrame
|
||||||
}
|
}
|
||||||
var file_room_downsync_frame_proto_depIdxs = []int32{
|
var file_room_downsync_frame_proto_depIdxs = []int32{
|
||||||
2, // 0: protos.WsReq.inputFrameUpsyncBatch:type_name -> protos.InputFrameUpsync
|
2, // 0: protos.WsReq.inputFrameUpsyncBatch:type_name -> protos.InputFrameUpsync
|
||||||
4, // 1: protos.WsReq.hb:type_name -> protos.HeartbeatUpsync
|
4, // 1: protos.WsReq.hb:type_name -> protos.HeartbeatUpsync
|
||||||
10, // 2: protos.WsResp.rdf:type_name -> protos.RoomDownsyncFrame
|
11, // 2: protos.WsResp.rdf:type_name -> protos.RoomDownsyncFrame
|
||||||
3, // 3: protos.WsResp.inputFrameDownsyncBatch:type_name -> protos.InputFrameDownsync
|
3, // 3: protos.WsResp.inputFrameDownsyncBatch:type_name -> protos.InputFrameDownsync
|
||||||
9, // 4: protos.WsResp.bciFrame:type_name -> protos.BattleColliderInfo
|
10, // 4: protos.WsResp.bciFrame:type_name -> protos.BattleColliderInfo
|
||||||
3, // 5: protos.InputsBufferSnapshot.toSendInputFrameDownsyncs:type_name -> protos.InputFrameDownsync
|
3, // 5: protos.InputsBufferSnapshot.toSendInputFrameDownsyncs:type_name -> protos.InputFrameDownsync
|
||||||
0, // 6: protos.RoomDownsyncFrame.playersArr:type_name -> protos.PlayerDownsync
|
0, // 6: protos.RoomDownsyncFrame.playersArr:type_name -> protos.PlayerDownsync
|
||||||
8, // 7: protos.RoomDownsyncFrame.meleeBullets:type_name -> protos.MeleeBullet
|
8, // 7: protos.RoomDownsyncFrame.meleeBullets:type_name -> protos.MeleeBullet
|
||||||
8, // [8:8] is the sub-list for method output_type
|
9, // 8: protos.RoomDownsyncFrame.fireballBullets:type_name -> protos.FireballBullet
|
||||||
8, // [8:8] is the sub-list for method input_type
|
9, // [9:9] is the sub-list for method output_type
|
||||||
8, // [8:8] is the sub-list for extension type_name
|
9, // [9:9] is the sub-list for method input_type
|
||||||
8, // [8:8] is the sub-list for extension extendee
|
9, // [9:9] is the sub-list for extension type_name
|
||||||
0, // [0:8] is the sub-list for field type_name
|
9, // [9:9] is the sub-list for extension extendee
|
||||||
|
0, // [0:9] is the sub-list for field type_name
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_room_downsync_frame_proto_init() }
|
func init() { file_room_downsync_frame_proto_init() }
|
||||||
@ -1619,7 +1979,7 @@ func file_room_downsync_frame_proto_init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_room_downsync_frame_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
|
file_room_downsync_frame_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*BattleColliderInfo); i {
|
switch v := v.(*FireballBullet); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
case 1:
|
case 1:
|
||||||
@ -1631,6 +1991,18 @@ func file_room_downsync_frame_proto_init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_room_downsync_frame_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
|
file_room_downsync_frame_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*BattleColliderInfo); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_room_downsync_frame_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*RoomDownsyncFrame); i {
|
switch v := v.(*RoomDownsyncFrame); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
@ -1649,7 +2021,7 @@ func file_room_downsync_frame_proto_init() {
|
|||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_room_downsync_frame_proto_rawDesc,
|
RawDescriptor: file_room_downsync_frame_proto_rawDesc,
|
||||||
NumEnums: 0,
|
NumEnums: 0,
|
||||||
NumMessages: 11,
|
NumMessages: 12,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 0,
|
NumServices: 0,
|
||||||
},
|
},
|
||||||
|
File diff suppressed because one or more lines are too long
@ -114,6 +114,46 @@ message MeleeBullet {
|
|||||||
int32 hitboxSizeY = 17;
|
int32 hitboxSizeY = 17;
|
||||||
|
|
||||||
bool blowUp = 18;
|
bool blowUp = 18;
|
||||||
|
int32 teamId = 19;
|
||||||
|
|
||||||
|
int32 bulletLocalId = 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
message FireballBullet {
|
||||||
|
int32 originatedRenderFrameId = 1;
|
||||||
|
int32 offenderJoinIndex = 2;
|
||||||
|
|
||||||
|
int32 startupFrames = 3;
|
||||||
|
int32 cancellableStFrame = 4;
|
||||||
|
int32 cancellableEdFrame = 5;
|
||||||
|
int32 activeFrames = 6;
|
||||||
|
|
||||||
|
int32 hitStunFrames = 7;
|
||||||
|
int32 blockStunFrames = 8;
|
||||||
|
int32 pushbackVelX = 9;
|
||||||
|
int32 pushbackVelY = 10;
|
||||||
|
int32 damage = 11;
|
||||||
|
|
||||||
|
int32 selfLockVelX = 12;
|
||||||
|
int32 selfLockVelY = 13;
|
||||||
|
|
||||||
|
int32 hitboxOffsetX = 14;
|
||||||
|
int32 hitboxOffsetY = 15;
|
||||||
|
int32 hitboxSizeX = 16;
|
||||||
|
int32 hitboxSizeY = 17;
|
||||||
|
|
||||||
|
bool blowUp = 18;
|
||||||
|
int32 teamId = 19;
|
||||||
|
|
||||||
|
int32 bulletLocalId = 20;
|
||||||
|
|
||||||
|
int32 virtualGridX = 999;
|
||||||
|
int32 virtualGridY = 1000;
|
||||||
|
int32 dirX = 1001;
|
||||||
|
int32 dirY = 1002;
|
||||||
|
int32 velX = 1003;
|
||||||
|
int32 velY = 1004;
|
||||||
|
int32 speed = 1005;
|
||||||
}
|
}
|
||||||
|
|
||||||
message BattleColliderInfo {
|
message BattleColliderInfo {
|
||||||
@ -133,7 +173,7 @@ message BattleColliderInfo {
|
|||||||
double spaceOffsetY = 12;
|
double spaceOffsetY = 12;
|
||||||
int32 collisionMinStep = 13;
|
int32 collisionMinStep = 13;
|
||||||
|
|
||||||
bool frameDataLoggingEnabled = 999;
|
bool frameDataLoggingEnabled = 1024;
|
||||||
}
|
}
|
||||||
|
|
||||||
message RoomDownsyncFrame {
|
message RoomDownsyncFrame {
|
||||||
@ -141,7 +181,11 @@ message RoomDownsyncFrame {
|
|||||||
repeated PlayerDownsync playersArr = 2;
|
repeated PlayerDownsync playersArr = 2;
|
||||||
int64 countdownNanos = 3;
|
int64 countdownNanos = 3;
|
||||||
repeated MeleeBullet meleeBullets = 4; // I don't know how to mimic inheritance/composition in protobuf by far, thus using an array for each type of bullet as a compromise
|
repeated MeleeBullet meleeBullets = 4; // I don't know how to mimic inheritance/composition in protobuf by far, thus using an array for each type of bullet as a compromise
|
||||||
uint64 backendUnconfirmedMask = 5; // Indexed by "joinIndex", same compression concern as stated in InputFrameDownsync
|
repeated FireballBullet fireballBullets = 5;
|
||||||
bool shouldForceResync = 6;
|
|
||||||
repeated int32 speciesIdList = 7;
|
uint64 backendUnconfirmedMask = 1024; // Indexed by "joinIndex", same compression concern as stated in InputFrameDownsync
|
||||||
|
bool shouldForceResync = 1025;
|
||||||
|
repeated int32 speciesIdList = 1026;
|
||||||
|
|
||||||
|
int32 bulletLocalIdCounter = 1027;
|
||||||
}
|
}
|
||||||
|
@ -440,7 +440,7 @@
|
|||||||
"array": [
|
"array": [
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
210.60543794365393,
|
215.64032554232523,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -461,7 +461,7 @@
|
|||||||
"array": [
|
"array": [
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
210.85914803043164,
|
215.64032554232523,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -384,7 +384,7 @@ cc.Class({
|
|||||||
window.mapIns = self;
|
window.mapIns = self;
|
||||||
window.forceBigEndianFloatingNumDecoding = self.forceBigEndianFloatingNumDecoding;
|
window.forceBigEndianFloatingNumDecoding = self.forceBigEndianFloatingNumDecoding;
|
||||||
|
|
||||||
self.showCriticalCoordinateLabels = false;
|
self.showCriticalCoordinateLabels = true;
|
||||||
|
|
||||||
console.warn("+++++++ Map onLoad()");
|
console.warn("+++++++ Map onLoad()");
|
||||||
|
|
||||||
@ -575,21 +575,27 @@ cc.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
onRoomDownsyncFrame(pbRdf /* pb.RoomDownsyncFrame */ , accompaniedInputFrameDownsyncBatch /* pb.InputFrameDownsyncBatch */ ) {
|
onRoomDownsyncFrame(pbRdf /* pb.RoomDownsyncFrame */ , accompaniedInputFrameDownsyncBatch /* pb.InputFrameDownsyncBatch */ ) {
|
||||||
const jsPlayersArr = new Array().fill(null);
|
const jsPlayersArr = new Array(pbRdf.playersArr.length).fill(null);
|
||||||
for (let k in pbRdf.playersArr) {
|
for (let k = 0; k < pbRdf.playersArr.length; ++k) {
|
||||||
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.framesInChState, pbPlayer.activeSkillId, pbPlayer.activeSkillHit, pbPlayer.framesInvinsible, pbPlayer.speed, pbPlayer.battleState, pbPlayer.characterState, pbPlayer.joinIndex, pbPlayer.hp, pbPlayer.maxHp, pbPlayer.colliderRadius, pbPlayer.inAir);
|
const jsPlayer = gopkgs.NewPlayerDownsyncJs(pbPlayer.id, pbPlayer.virtualGridX, pbPlayer.virtualGridY, pbPlayer.dirX, pbPlayer.dirY, pbPlayer.velX, pbPlayer.velY, pbPlayer.framesToRecover, pbPlayer.framesInChState, pbPlayer.activeSkillId, pbPlayer.activeSkillHit, pbPlayer.framesInvinsible, pbPlayer.speed, pbPlayer.battleState, pbPlayer.characterState, pbPlayer.joinIndex, pbPlayer.hp, pbPlayer.maxHp, pbPlayer.colliderRadius, pbPlayer.inAir);
|
||||||
jsPlayersArr[k] = jsPlayer;
|
jsPlayersArr[k] = jsPlayer;
|
||||||
}
|
}
|
||||||
const jsMeleeBulletsArr = [];
|
const jsMeleeBulletsArr = new Array(pbRdf.meleeBullets.length).fill(null);
|
||||||
for (let k in pbRdf.meleeBullets) {
|
for (let k = 0; k < pbRdf.meleeBullets.length; ++k) {
|
||||||
const pbBullet = pbRdf.meleeBullets[k];
|
const pbBullet = pbRdf.meleeBullets[k];
|
||||||
const jsBullet = gopkgs.NewMeleeBulletJs(pbBullet.originatedRenderFrameId, pbBullet.offenderJoinIndex, pbBullet.startupFrames, pbBullet.cancellableStFrame, pbBullet.cancellableEdFrame, pbBullet.activeFrames, pbBullet.hitStunFrames, pbBullet.blockStunFrames, pbBullet.pushbackVelX, pbBullet.pushbackVelY, pbBullet.damage, pbBullet.selfLockVelX, pbBullet.selfLockVelY, pbBullet.hitboxOffsetX, pbBullet.hitboxOffsetY, pbBullet.hitboxSizeX, pbBullet.hitboxSizeY, pbBullet.blowUp);
|
const jsMeleeBullet = gopkgs.NewMeleeBulletJs(pbBullet.bulletLocalId, pbBullet.originatedRenderFrameId, pbBullet.offenderJoinIndex, pbBullet.startupFrames, pbBullet.cancellableStFrame, pbBullet.cancellableEdFrame, pbBullet.activeFrames, pbBullet.hitStunFrames, pbBullet.blockStunFrames, pbBullet.pushbackVelX, pbBullet.pushbackVelY, pbBullet.damage, pbBullet.selfLockVelX, pbBullet.selfLockVelY, pbBullet.hitboxOffsetX, pbBullet.hitboxOffsetY, pbBullet.hitboxSizeX, pbBullet.hitboxSizeY, pbBullet.blowUp);
|
||||||
jsMeleeBulletsArr.push(jsBullet);
|
jsMeleeBulletsArr[k] = jsMeleeBullet;
|
||||||
|
}
|
||||||
|
const jsFireballBulletsArr = new Array(pbRdf.fireballBullets.length).fill(null);
|
||||||
|
for (let k = 0; k < pbRdf.fireballBullets.length; ++k) {
|
||||||
|
const pbBullet = pbRdf.fireballBullets[k];
|
||||||
|
const jsFireballBullet = gopkgs.NewFireballBulletJs(pbBullet.bulletLocalId, pbBullet.originatedRenderFrameId, pbBullet.offenderJoinIndex, pbBullet.startupFrames, pbBullet.cancellableStFrame, pbBullet.cancellableEdFrame, pbBullet.activeFrames, pbBullet.hitStunFrames, pbBullet.blockStunFrames, pbBullet.pushbackVelX, pbBullet.pushbackVelY, pbBullet.damage, pbBullet.selfLockVelX, pbBullet.selfLockVelY, pbBullet.hitboxOffsetX, pbBullet.hitboxOffsetY, pbBullet.hitboxSizeX, pbBullet.hitboxSizeY, pbBullet.blowUp, pbBullet.teamId, pbBullet.virtualGridX, pbBullet.virtualGridY, pbBullet.dirX, pbBullet.dirY, pbBullet.velX, pbBullet.velY, pbBullet.speed);
|
||||||
|
jsFireballBulletsArr[k] = jsFireballBullet;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This function is also applicable to "re-joining".
|
// This function is also applicable to "re-joining".
|
||||||
const rdf = gopkgs.NewRoomDownsyncFrameJs(pbRdf.id, jsPlayersArr, jsMeleeBulletsArr);
|
const rdf = gopkgs.NewRoomDownsyncFrameJs(pbRdf.id, jsPlayersArr, pbRdf.bulletLocalIdCounter, jsMeleeBulletsArr, jsFireballBulletsArr);
|
||||||
const self = window.mapIns;
|
const self = window.mapIns;
|
||||||
self.onInputFrameDownsyncBatch(accompaniedInputFrameDownsyncBatch); // Important to do this step before setting IN_BATTLE
|
self.onInputFrameDownsyncBatch(accompaniedInputFrameDownsyncBatch); // Important to do this step before setting IN_BATTLE
|
||||||
if (!self.recentRenderCache) {
|
if (!self.recentRenderCache) {
|
||||||
@ -1285,6 +1291,34 @@ actuallyUsedinputList:{${self.inputFrameDownsyncStr(actuallyUsedInputClone)}}`);
|
|||||||
g2.stroke();
|
g2.stroke();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (let k in rdf.FireballBullets) {
|
||||||
|
const fireballBullet = rdf.FireballBullets[k];
|
||||||
|
if (
|
||||||
|
fireballBullet.Bullet.OriginatedRenderFrameId + fireballBullet.Bullet.StartupFrames <= rdf.Id
|
||||||
|
&&
|
||||||
|
fireballBullet.Bullet.OriginatedRenderFrameId + fireballBullet.Bullet.StartupFrames + fireballBullet.Bullet.ActiveFrames > rdf.Id
|
||||||
|
) {
|
||||||
|
const offender = rdf.PlayersArr[fireballBullet.Bullet.OffenderJoinIndex - 1];
|
||||||
|
if (1 == offender.JoinIndex) {
|
||||||
|
g2.strokeColor = cc.Color.BLUE;
|
||||||
|
} else {
|
||||||
|
g2.strokeColor = cc.Color.RED;
|
||||||
|
}
|
||||||
|
|
||||||
|
const [bulletWx, bulletWy] = gopkgs.VirtualGridToWorldPos(fireballBullet.VirtualGridX, fireballBullet.VirtualGridY);
|
||||||
|
const [halfColliderWidth, halfColliderHeight] = gopkgs.VirtualGridToWorldPos((fireballBullet.Bullet.HitboxSizeX >> 1), (fireballBullet.Bullet.HitboxSizeY >> 1));
|
||||||
|
const [bulletCx, bulletCy] = gopkgs.WorldToPolygonColliderBLPos(bulletWx, bulletWy, halfColliderWidth, halfColliderHeight, topPadding, bottomPadding, leftPadding, rightPadding, 0, 0);
|
||||||
|
const pts = [[0, 0], [leftPadding + halfColliderWidth * 2 + rightPadding, 0], [leftPadding + halfColliderWidth * 2 + rightPadding, bottomPadding + halfColliderHeight * 2 + topPadding], [0, bottomPadding + halfColliderHeight * 2 + topPadding]];
|
||||||
|
|
||||||
|
g2.moveTo(bulletCx, bulletCy);
|
||||||
|
for (let j = 0; j < pts.length; j += 1) {
|
||||||
|
g2.lineTo(pts[j][0] + bulletCx, pts[j][1] + bulletCy);
|
||||||
|
}
|
||||||
|
g2.lineTo(bulletCx, bulletCy);
|
||||||
|
g2.stroke();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -13,7 +13,7 @@ cc.Class({
|
|||||||
onLoad() {
|
onLoad() {
|
||||||
const self = this;
|
const self = this;
|
||||||
window.mapIns = self;
|
window.mapIns = self;
|
||||||
self.showCriticalCoordinateLabels = false;
|
self.showCriticalCoordinateLabels = true;
|
||||||
|
|
||||||
const mapNode = self.node;
|
const mapNode = self.node;
|
||||||
const canvasNode = mapNode.parent;
|
const canvasNode = mapNode.parent;
|
||||||
@ -129,7 +129,7 @@ cc.Class({
|
|||||||
inAir: true,
|
inAir: true,
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
speciesIdList: [4196, 0],
|
speciesIdList: [4096, 0],
|
||||||
});
|
});
|
||||||
|
|
||||||
self.selfPlayerInfo = {
|
self.selfPlayerInfo = {
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -358,9 +358,9 @@ func calcHardPushbacksNorms(joinIndex int32, playerCollider *resolv.Object, play
|
|||||||
isBarrier := false
|
isBarrier := false
|
||||||
switch obj.Data.(type) {
|
switch obj.Data.(type) {
|
||||||
case *PlayerDownsync:
|
case *PlayerDownsync:
|
||||||
case *MeleeBullet:
|
case *MeleeBullet, *FireballBullet:
|
||||||
default:
|
default:
|
||||||
// By default it's a regular barrier, even if data is nil, note that Golang syntax of switch-case is kind of confusing, this "default" condition is met only if "!*PlayerDownsync && !*MeleeBullet".
|
// By default it's a regular barrier, even if data is nil, note that Golang syntax of switch-case is kind of confusing, this "default" condition is met only if "!*PlayerDownsync && !*MeleeBullet && !*FireballBullet".
|
||||||
isBarrier = true
|
isBarrier = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -471,10 +471,12 @@ 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?
|
||||||
|
nextRenderFrameFireballBullets := make([]*FireballBullet, 0, len(currRenderFrame.FireballBullets))
|
||||||
effPushbacks := make([]Vec2D, roomCapacity)
|
effPushbacks := make([]Vec2D, roomCapacity)
|
||||||
hardPushbackNorms := make([]*[]Vec2D, roomCapacity)
|
hardPushbackNorms := make([]*[]Vec2D, roomCapacity)
|
||||||
jumpedOrNotList := make([]bool, roomCapacity)
|
jumpedOrNotList := make([]bool, roomCapacity)
|
||||||
|
|
||||||
|
bulletLocalId := currRenderFrame.BulletLocalIdCounter
|
||||||
// 1. Process player inputs
|
// 1. Process player inputs
|
||||||
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
|
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
|
||||||
jumpedOrNotList[i] = false
|
jumpedOrNotList[i] = false
|
||||||
@ -491,36 +493,57 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
if skillConfig, existent := skills[skillId]; existent {
|
if skillConfig, existent := skills[skillId]; existent {
|
||||||
thatPlayerInNextFrame.ActiveSkillId = int32(skillId)
|
thatPlayerInNextFrame.ActiveSkillId = int32(skillId)
|
||||||
thatPlayerInNextFrame.ActiveSkillHit = 0
|
thatPlayerInNextFrame.ActiveSkillHit = 0
|
||||||
|
thatPlayerInNextFrame.FramesToRecover = skillConfig.RecoveryFrames
|
||||||
|
xfac := int32(1)
|
||||||
|
if 0 > thatPlayerInNextFrame.DirX {
|
||||||
|
xfac = -xfac
|
||||||
|
}
|
||||||
|
hasLockVel := false
|
||||||
|
|
||||||
// Hardcoded to use only the first hit for now
|
// Hardcoded to use only the first hit for now
|
||||||
switch v := skillConfig.Hits[thatPlayerInNextFrame.ActiveSkillHit].(type) {
|
switch v := skillConfig.Hits[thatPlayerInNextFrame.ActiveSkillHit].(type) {
|
||||||
case *MeleeBullet:
|
case *MeleeBullet:
|
||||||
var newBullet MeleeBullet = *v // Copied primitive fields into an onstack variable
|
var newBullet MeleeBullet = *v // Copied primitive fields into an onstack variable
|
||||||
|
newBullet.BulletLocalId = bulletLocalId
|
||||||
|
bulletLocalId++
|
||||||
newBullet.OriginatedRenderFrameId = currRenderFrame.Id
|
newBullet.OriginatedRenderFrameId = currRenderFrame.Id
|
||||||
newBullet.OffenderJoinIndex = joinIndex
|
newBullet.OffenderJoinIndex = joinIndex
|
||||||
nextRenderFrameMeleeBullets = append(nextRenderFrameMeleeBullets, &newBullet)
|
nextRenderFrameMeleeBullets = append(nextRenderFrameMeleeBullets, &newBullet)
|
||||||
thatPlayerInNextFrame.FramesToRecover = skillConfig.RecoveryFrames
|
|
||||||
|
|
||||||
hasLockVel := false
|
|
||||||
if NO_LOCK_VEL != v.SelfLockVelX {
|
if NO_LOCK_VEL != v.SelfLockVelX {
|
||||||
hasLockVel = true
|
hasLockVel = true
|
||||||
xfac := int32(1)
|
|
||||||
if 0 > thatPlayerInNextFrame.DirX {
|
|
||||||
xfac = -xfac
|
|
||||||
}
|
|
||||||
thatPlayerInNextFrame.VelX = xfac * v.SelfLockVelX
|
thatPlayerInNextFrame.VelX = xfac * v.SelfLockVelX
|
||||||
}
|
}
|
||||||
if NO_LOCK_VEL != v.SelfLockVelY {
|
if NO_LOCK_VEL != v.SelfLockVelY {
|
||||||
hasLockVel = true
|
hasLockVel = true
|
||||||
thatPlayerInNextFrame.VelY = v.SelfLockVelY
|
thatPlayerInNextFrame.VelY = v.SelfLockVelY
|
||||||
}
|
}
|
||||||
if false == hasLockVel {
|
case *FireballBullet:
|
||||||
if false == currPlayerDownsync.InAir {
|
var newBullet FireballBullet = *v // Copied primitive fields into an onstack variable
|
||||||
thatPlayerInNextFrame.VelX = 0
|
newBullet.BulletLocalId = bulletLocalId
|
||||||
|
bulletLocalId++
|
||||||
|
xfac := int32(1)
|
||||||
|
if 0 > thatPlayerInNextFrame.DirX {
|
||||||
|
xfac = -xfac
|
||||||
}
|
}
|
||||||
|
newBullet.VirtualGridX, newBullet.VirtualGridY = currPlayerDownsync.VirtualGridX+xfac*newBullet.HitboxOffsetX, currPlayerDownsync.VirtualGridY
|
||||||
|
newBullet.OriginatedRenderFrameId = currRenderFrame.Id
|
||||||
|
newBullet.OffenderJoinIndex = joinIndex
|
||||||
|
newBullet.VelX = newBullet.Speed * xfac
|
||||||
|
newBullet.VelY = 0
|
||||||
|
nextRenderFrameFireballBullets = append(nextRenderFrameFireballBullets, &newBullet)
|
||||||
|
if NO_LOCK_VEL != v.SelfLockVelX {
|
||||||
|
hasLockVel = true
|
||||||
|
thatPlayerInNextFrame.VelX = xfac * v.SelfLockVelX
|
||||||
|
}
|
||||||
|
if NO_LOCK_VEL != v.SelfLockVelY {
|
||||||
|
hasLockVel = true
|
||||||
|
thatPlayerInNextFrame.VelY = v.SelfLockVelY
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if false == hasLockVel && false == currPlayerDownsync.InAir {
|
||||||
|
thatPlayerInNextFrame.VelX = 0
|
||||||
|
}
|
||||||
thatPlayerInNextFrame.CharacterState = skillConfig.BoundChState
|
thatPlayerInNextFrame.CharacterState = skillConfig.BoundChState
|
||||||
continue // Don't allow movement if skill is used
|
continue // Don't allow movement if skill is used
|
||||||
}
|
}
|
||||||
@ -589,11 +612,23 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
newBulletCollider := GenerateRectCollider(bulletWx, bulletWy, hitboxSizeWx, hitboxSizeWy, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, collisionSpaceOffsetX, collisionSpaceOffsetY, meleeBullet, "MeleeBullet")
|
newBulletCollider := GenerateRectCollider(bulletWx, bulletWy, hitboxSizeWx, hitboxSizeWy, 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 if meleeBullet.OriginatedRenderFrameId+meleeBullet.StartupFrames+meleeBullet.ActiveFrames > currRenderFrame.Id {
|
||||||
nextRenderFrameMeleeBullets = append(nextRenderFrameMeleeBullets, meleeBullet)
|
nextRenderFrameMeleeBullets = append(nextRenderFrameMeleeBullets, meleeBullet)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, fireballBullet := range currRenderFrame.FireballBullets {
|
||||||
|
if (fireballBullet.OriginatedRenderFrameId+fireballBullet.StartupFrames < currRenderFrame.Id) && (fireballBullet.OriginatedRenderFrameId+fireballBullet.StartupFrames+fireballBullet.ActiveFrames > currRenderFrame.Id) {
|
||||||
|
bulletWx, bulletWy := VirtualGridToWorldPos(fireballBullet.VirtualGridX, fireballBullet.VirtualGridY)
|
||||||
|
hitboxSizeWx, hitboxSizeWy := VirtualGridToWorldPos(fireballBullet.HitboxSizeX, fireballBullet.HitboxSizeY)
|
||||||
|
newBulletCollider := GenerateRectCollider(bulletWx, bulletWy, hitboxSizeWx, hitboxSizeWy, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, collisionSpaceOffsetX, collisionSpaceOffsetY, fireballBullet, "FireballBullet")
|
||||||
|
collisionSys.Add(newBulletCollider)
|
||||||
|
bulletColliders = append(bulletColliders, newBulletCollider)
|
||||||
|
} else if fireballBullet.OriginatedRenderFrameId+fireballBullet.StartupFrames+fireballBullet.ActiveFrames > currRenderFrame.Id {
|
||||||
|
nextRenderFrameFireballBullets = append(nextRenderFrameFireballBullets, fireballBullet)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 4. Calc pushbacks for each player (after its movement) w/o bullets
|
// 4. Calc pushbacks for each player (after its movement) w/o bullets
|
||||||
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
|
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
|
||||||
joinIndex := currPlayerDownsync.JoinIndex
|
joinIndex := currPlayerDownsync.JoinIndex
|
||||||
@ -610,7 +645,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
switch obj.Data.(type) {
|
switch obj.Data.(type) {
|
||||||
case *PlayerDownsync:
|
case *PlayerDownsync:
|
||||||
isAnotherPlayer = true
|
isAnotherPlayer = true
|
||||||
case *MeleeBullet:
|
case *MeleeBullet, *FireballBullet:
|
||||||
isBullet = true
|
isBullet = true
|
||||||
default:
|
default:
|
||||||
// By default it's a regular barrier, even if data is nil
|
// By default it's a regular barrier, even if data is nil
|
||||||
@ -687,12 +722,10 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
for _, bulletCollider := range bulletColliders {
|
for _, bulletCollider := range bulletColliders {
|
||||||
collision := bulletCollider.Check(0, 0)
|
collision := bulletCollider.Check(0, 0)
|
||||||
bulletCollider.Space.Remove(bulletCollider) // Make sure that the bulletCollider is always removed for each renderFrame
|
bulletCollider.Space.Remove(bulletCollider) // Make sure that the bulletCollider is always removed for each renderFrame
|
||||||
|
addToNextRenderFrame := true
|
||||||
|
if nil != collision {
|
||||||
switch v := bulletCollider.Data.(type) {
|
switch v := bulletCollider.Data.(type) {
|
||||||
case *MeleeBullet:
|
case *MeleeBullet:
|
||||||
if nil == collision {
|
|
||||||
nextRenderFrameMeleeBullets = append(nextRenderFrameMeleeBullets, v)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
bulletShape := bulletCollider.Shape.(*resolv.ConvexPolygon)
|
bulletShape := bulletCollider.Shape.(*resolv.ConvexPolygon)
|
||||||
offender := currRenderFrame.PlayersArr[v.OffenderJoinIndex-1]
|
offender := currRenderFrame.PlayersArr[v.OffenderJoinIndex-1]
|
||||||
for _, obj := range collision.Objects {
|
for _, obj := range collision.Objects {
|
||||||
@ -702,16 +735,17 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
if v.OffenderJoinIndex == t.JoinIndex {
|
if v.OffenderJoinIndex == t.JoinIndex {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
overlapped, _, _, _ := CalcPushbacks(0, 0, bulletShape, defenderShape)
|
||||||
|
if !overlapped {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
addToNextRenderFrame = false
|
||||||
if _, existent := invinsibleSet[t.CharacterState]; existent {
|
if _, existent := invinsibleSet[t.CharacterState]; existent {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if 0 < t.FramesInvinsible {
|
if 0 < t.FramesInvinsible {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
overlapped, _, _, _ := CalcPushbacks(0, 0, bulletShape, defenderShape)
|
|
||||||
if !overlapped {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
xfac := int32(1) // By now, straight Punch offset doesn't respect "y-axis"
|
xfac := int32(1) // By now, straight Punch offset doesn't respect "y-axis"
|
||||||
if 0 > offender.DirX {
|
if 0 > offender.DirX {
|
||||||
xfac = -xfac
|
xfac = -xfac
|
||||||
@ -730,8 +764,61 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
atkedPlayerInNextFrame.FramesToRecover = v.HitStunFrames
|
atkedPlayerInNextFrame.FramesToRecover = v.HitStunFrames
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
addToNextRenderFrame = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case *FireballBullet:
|
||||||
|
bulletShape := bulletCollider.Shape.(*resolv.ConvexPolygon)
|
||||||
|
offender := currRenderFrame.PlayersArr[v.OffenderJoinIndex-1]
|
||||||
|
for _, obj := range collision.Objects {
|
||||||
|
defenderShape := obj.Shape.(*resolv.ConvexPolygon)
|
||||||
|
switch t := obj.Data.(type) {
|
||||||
|
case *PlayerDownsync:
|
||||||
|
if v.OffenderJoinIndex == t.JoinIndex {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
overlapped, _, _, _ := CalcPushbacks(0, 0, bulletShape, defenderShape)
|
||||||
|
if !overlapped {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
addToNextRenderFrame = false
|
||||||
|
if _, existent := invinsibleSet[t.CharacterState]; existent {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if 0 < t.FramesInvinsible {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
xfac := int32(1) // By now, straight Punch offset doesn't respect "y-axis"
|
||||||
|
if 0 > offender.DirX {
|
||||||
|
xfac = -xfac
|
||||||
|
}
|
||||||
|
pushbackVelX, pushbackVelY := xfac*v.PushbackVelX, v.PushbackVelY
|
||||||
|
atkedPlayerInNextFrame := nextRenderFramePlayers[t.JoinIndex-1]
|
||||||
|
atkedPlayerInNextFrame.VelX = pushbackVelX
|
||||||
|
atkedPlayerInNextFrame.VelY = pushbackVelY
|
||||||
|
if v.BlowUp {
|
||||||
|
atkedPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_BLOWN_UP1
|
||||||
|
} else {
|
||||||
|
atkedPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_ATKED1
|
||||||
|
}
|
||||||
|
oldFramesToRecover := nextRenderFramePlayers[t.JoinIndex-1].FramesToRecover
|
||||||
|
if v.HitStunFrames > oldFramesToRecover {
|
||||||
|
atkedPlayerInNextFrame.FramesToRecover = v.HitStunFrames
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
addToNextRenderFrame = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if addToNextRenderFrame {
|
||||||
|
switch v := bulletCollider.Data.(type) {
|
||||||
|
case *MeleeBullet:
|
||||||
|
nextRenderFrameMeleeBullets = append(nextRenderFrameMeleeBullets, v)
|
||||||
|
case *FireballBullet:
|
||||||
|
v.VirtualGridX, v.VirtualGridY = v.VirtualGridX+v.VelX, v.VirtualGridY+v.VelY
|
||||||
|
nextRenderFrameFireballBullets = append(nextRenderFrameFireballBullets, v)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -781,6 +868,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
Id: currRenderFrame.Id + 1,
|
Id: currRenderFrame.Id + 1,
|
||||||
PlayersArr: nextRenderFramePlayers,
|
PlayersArr: nextRenderFramePlayers,
|
||||||
MeleeBullets: nextRenderFrameMeleeBullets,
|
MeleeBullets: nextRenderFrameMeleeBullets,
|
||||||
|
FireballBullets: nextRenderFrameFireballBullets,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,8 +108,8 @@ var Characters = map[int]*CharacterConfig{
|
|||||||
return NO_SKILL
|
return NO_SKILL
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
4196: &CharacterConfig{
|
4096: &CharacterConfig{
|
||||||
SpeciesId: 4196,
|
SpeciesId: 4096,
|
||||||
SpeciesName: "Monk",
|
SpeciesName: "Monk",
|
||||||
|
|
||||||
InAirIdleFrameIdxTurningPoint: 42,
|
InAirIdleFrameIdxTurningPoint: 42,
|
||||||
@ -437,14 +437,14 @@ var skills = map[int]*Skill{
|
|||||||
Speed: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
Speed: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||||
Bullet: Bullet{
|
Bullet: Bullet{
|
||||||
StartupFrames: int32(15),
|
StartupFrames: int32(15),
|
||||||
ActiveFrames: int32(30),
|
ActiveFrames: MAX_INT32,
|
||||||
HitStunFrames: int32(15),
|
HitStunFrames: int32(15),
|
||||||
BlockStunFrames: int32(9),
|
BlockStunFrames: int32(9),
|
||||||
Damage: int32(20),
|
Damage: int32(20),
|
||||||
SelfLockVelX: int32(float64(0.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
SelfLockVelX: NO_LOCK_VEL,
|
||||||
SelfLockVelY: int32(float64(5) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
SelfLockVelY: NO_LOCK_VEL,
|
||||||
PushbackVelX: int32(float64(2) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
PushbackVelX: int32(float64(2) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||||
PushbackVelY: int32(float64(7) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
PushbackVelY: int32(0),
|
||||||
HitboxOffsetX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
HitboxOffsetX: int32(float64(32) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||||
HitboxOffsetY: int32(0),
|
HitboxOffsetY: int32(0),
|
||||||
HitboxSizeX: int32(float64(48) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
HitboxSizeX: int32(float64(48) * WORLD_TO_VIRTUAL_GRID_RATIO),
|
||||||
|
@ -60,6 +60,8 @@ type Barrier struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Bullet struct {
|
type Bullet struct {
|
||||||
|
BulletLocalId int32 // for referencing cached nodes in frontend rendering
|
||||||
|
|
||||||
// for offender
|
// for offender
|
||||||
OriginatedRenderFrameId int32 // Copied from the first bullet for all subsequent bullets
|
OriginatedRenderFrameId int32 // Copied from the first bullet for all subsequent bullets
|
||||||
OffenderJoinIndex int32 // Copied to favor collision handling of the dispatched bullet
|
OffenderJoinIndex int32 // Copied to favor collision handling of the dispatched bullet
|
||||||
@ -123,7 +125,8 @@ type RoomDownsyncFrame struct {
|
|||||||
FireballBullets []*FireballBullet
|
FireballBullets []*FireballBullet
|
||||||
BackendUnconfirmedMask uint64
|
BackendUnconfirmedMask uint64
|
||||||
ShouldForceResync bool
|
ShouldForceResync bool
|
||||||
PlayerOpPatternToSkillId map[int]int
|
|
||||||
|
BulletLocalIdCounter int32
|
||||||
}
|
}
|
||||||
|
|
||||||
type InputFrameDownsync struct {
|
type InputFrameDownsync struct {
|
||||||
|
@ -69,9 +69,50 @@ func NewPlayerDownsyncJs(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY,
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMeleeBulletJs(originatedRenderFrameId, offenderJoinIndex, startupFrames, cancellableStFrame, cancellableEdFrame, activeFrames, hitStunFrames, blockStunFrames, pushbackVelX, pushbackVelY, damage, selfLockVelX, selfLockVelY, hitboxOffsetX, hitboxOffsetY, hitboxSizeX, hitboxSizeY int32, blowUp bool, teamId int32) *js.Object {
|
func NewMeleeBulletJs(bulletLocalId, originatedRenderFrameId, offenderJoinIndex, startupFrames, cancellableStFrame, cancellableEdFrame, activeFrames, hitStunFrames, blockStunFrames, pushbackVelX, pushbackVelY, damage, selfLockVelX, selfLockVelY, hitboxOffsetX, hitboxOffsetY, hitboxSizeX, hitboxSizeY int32, blowUp bool, teamId int32) *js.Object {
|
||||||
return js.MakeWrapper(&MeleeBullet{
|
return js.MakeWrapper(&MeleeBullet{
|
||||||
Bullet: Bullet{
|
Bullet: Bullet{
|
||||||
|
BulletLocalId: bulletLocalId,
|
||||||
|
OriginatedRenderFrameId: originatedRenderFrameId,
|
||||||
|
OffenderJoinIndex: offenderJoinIndex,
|
||||||
|
|
||||||
|
StartupFrames: startupFrames,
|
||||||
|
CancellableStFrame: cancellableStFrame,
|
||||||
|
CancellableEdFrame: cancellableEdFrame,
|
||||||
|
ActiveFrames: activeFrames,
|
||||||
|
|
||||||
|
HitStunFrames: hitStunFrames,
|
||||||
|
BlockStunFrames: blockStunFrames,
|
||||||
|
PushbackVelX: pushbackVelX,
|
||||||
|
PushbackVelY: pushbackVelY,
|
||||||
|
Damage: damage,
|
||||||
|
|
||||||
|
SelfLockVelX: selfLockVelX,
|
||||||
|
SelfLockVelY: selfLockVelY,
|
||||||
|
|
||||||
|
HitboxOffsetX: hitboxOffsetX,
|
||||||
|
HitboxOffsetY: hitboxOffsetY,
|
||||||
|
HitboxSizeX: hitboxSizeX,
|
||||||
|
HitboxSizeY: hitboxSizeY,
|
||||||
|
|
||||||
|
BlowUp: blowUp,
|
||||||
|
|
||||||
|
TeamId: teamId,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewFireballBulletJs(bulletLocalId, originatedRenderFrameId, offenderJoinIndex, startupFrames, cancellableStFrame, cancellableEdFrame, activeFrames, hitStunFrames, blockStunFrames, pushbackVelX, pushbackVelY, damage, selfLockVelX, selfLockVelY, hitboxOffsetX, hitboxOffsetY, hitboxSizeX, hitboxSizeY int32, blowUp bool, teamId int32, virtualGridX, virtualGridY, dirX, dirY, velX, velY, speed int32) *js.Object {
|
||||||
|
return js.MakeWrapper(&FireballBullet{
|
||||||
|
VirtualGridX: virtualGridX,
|
||||||
|
VirtualGridY: virtualGridY,
|
||||||
|
DirX: dirX,
|
||||||
|
DirY: dirY,
|
||||||
|
VelX: velX,
|
||||||
|
VelY: velY,
|
||||||
|
Speed: speed,
|
||||||
|
Bullet: Bullet{
|
||||||
|
BulletLocalId: bulletLocalId,
|
||||||
OriginatedRenderFrameId: originatedRenderFrameId,
|
OriginatedRenderFrameId: originatedRenderFrameId,
|
||||||
OffenderJoinIndex: offenderJoinIndex,
|
OffenderJoinIndex: offenderJoinIndex,
|
||||||
|
|
||||||
@ -110,12 +151,14 @@ func NewNpcPatrolCue(flAct, frAct uint64, x, y float64) *js.Object {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRoomDownsyncFrameJs(id int32, playersArr []*PlayerDownsync, meleeBullets []*MeleeBullet) *js.Object {
|
func NewRoomDownsyncFrameJs(id int32, playersArr []*PlayerDownsync, bulletLocalIdCounter int32, meleeBullets []*MeleeBullet, fireballBullets []*FireballBullet) *js.Object {
|
||||||
// [WARNING] Avoid using "pb.RoomDownsyncFrame" here, in practive "MakeFullWrapper" doesn't expose the public fields for a "protobuf struct" as expected and requires helper functions like "GetCollisionSpaceObjsJs".
|
// [WARNING] Avoid using "pb.RoomDownsyncFrame" here, in practive "MakeFullWrapper" doesn't expose the public fields for a "protobuf struct" as expected and requires helper functions like "GetCollisionSpaceObjsJs".
|
||||||
return js.MakeFullWrapper(&RoomDownsyncFrame{
|
return js.MakeFullWrapper(&RoomDownsyncFrame{
|
||||||
Id: id,
|
Id: id,
|
||||||
PlayersArr: playersArr,
|
PlayersArr: playersArr,
|
||||||
|
BulletLocalIdCounter: bulletLocalIdCounter,
|
||||||
MeleeBullets: meleeBullets,
|
MeleeBullets: meleeBullets,
|
||||||
|
FireballBullets: fireballBullets,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,6 +213,7 @@ func main() {
|
|||||||
"NewBarrierJs": NewBarrierJs,
|
"NewBarrierJs": NewBarrierJs,
|
||||||
"NewPlayerDownsyncJs": NewPlayerDownsyncJs,
|
"NewPlayerDownsyncJs": NewPlayerDownsyncJs,
|
||||||
"NewMeleeBulletJs": NewMeleeBulletJs,
|
"NewMeleeBulletJs": NewMeleeBulletJs,
|
||||||
|
"NewFireballBulletJs": NewFireballBulletJs,
|
||||||
"NewNpcPatrolCue": NewNpcPatrolCue,
|
"NewNpcPatrolCue": NewNpcPatrolCue,
|
||||||
"NewRoomDownsyncFrameJs": NewRoomDownsyncFrameJs,
|
"NewRoomDownsyncFrameJs": NewRoomDownsyncFrameJs,
|
||||||
"NewCollisionSpaceJs": NewCollisionSpaceJs,
|
"NewCollisionSpaceJs": NewCollisionSpaceJs,
|
||||||
|
Loading…
Reference in New Issue
Block a user