/** * 玩家网络状态变化广播 */ public void OnChangePlayerNetworkState(BroadcastEvent eve) { var bst = new ChangePlayerNetworkStateBst(); bst.MergeFrom((ByteString)eve.Data); var roomInfo = (RoomInfo)bst.RoomInfo; this.Save(eve, roomInfo); eve.Data = bst; _room.OnChangePlayerNetworkState?.Invoke(eve); }
public void TriggerNetWorkBroadcast(ChangePlayerNetworkStateBst bst, string bstSeq) { if (this._group?.GroupInfo?.Id + "" == "") { return; } Action <GroupInfo, string> action = (groupInfo, seq) => { if (groupInfo == null) { return; } if (groupInfo.Id != this._group?.GroupInfo?.Id) { return; } GroupPlayerInfo groupPlayerInfo = null; foreach (var playerInfo in groupInfo.GroupPlayerList) { if (((GroupPlayerInfo)playerInfo).Id == bst.ChangePlayerId) { groupPlayerInfo = (GroupPlayerInfo)playerInfo; } } if (groupPlayerInfo == null) { return; } if (groupPlayerInfo.CommonGroupNetworkState != bst.NetworkState) { return; } ChangeGroupPlayerNetworkStateBst stateBst = new ChangeGroupPlayerNetworkStateBst { ChangePlayerId = bst.ChangePlayerId, NetworkState = bst.NetworkState, GroupInfo = groupInfo }; BroadcastEvent eve = new BroadcastEvent(stateBst, bstSeq + "_" + seq); this._group?.OnChangeGroupPlayerNetworkState(eve); }; this._group?.GetGroupDetail(eve => { if (eve.Code != ErrCode.EcOk || eve.Data == null) { return; } var rsp = (GetGroupByGroupIdRsp)eve.Data; var groupInfo = rsp.GroupInfo; action?.Invoke(groupInfo, eve.Seq); }); }