/// <summary> /// Decodes this instance. /// </summary> public override void Decode() { this.Entries = new RoyalTvEntry[this.Stream.ReadVInt()]; for (int i = 0; i < this.Entries.Length; i++) { RoyalTvEntry Entry = new RoyalTvEntry(); Entry.Decode(this.Stream); this.Entries[i] = Entry; } }
/// <summary> /// Handles the specified <see cref="Message"/>. /// </summary> /// <param name="Device">The device.</param> /// <param name="Message">The message.</param> /// <param name="Cancellation">The cancellation.</param> public static async Task Handle(Device Device, Message Message, CancellationToken Cancellation) { var HomeBattleReplayMessage = (HomeBattleReplayMessage)Message; if (HomeBattleReplayMessage == null) { throw new LogicException(typeof(HomeBattleReplayHandler), nameof(HomeBattleReplayMessage) + " == null at Handle(Device, Message, CancellationToken)."); } if (!HomeBattleReplayMessage.ReplayId.IsZero) { BattleLog BattleLog = await Battles.Get(HomeBattleReplayMessage.ReplayId.HigherInt, HomeBattleReplayMessage.ReplayId.LowerInt); if (BattleLog != null) { int ChannelIdx = RoyalTvManager.GetChannelArenaData(HomeBattleReplayMessage.ArenaData); if (ChannelIdx != -1) { RoyalTvEntry TvEntry = RoyalTvManager.GetEntryByIdx(ChannelIdx, HomeBattleReplayMessage.ReplayShardId); if (TvEntry != null) { Interlocked.Increment(ref TvEntry.ViewCount); } } byte[] Decompressed = Encoding.UTF8.GetBytes(BattleLog.ReplayJson); byte[] Compressed = ZLibHelper.CompressCompressableByteArray(Decompressed); Device.NetworkManager.SendMessage(new HomeBattleReplayDataMessage(Compressed)); } else { Logging.Info(typeof(HomeBattleReplayHandler), "BattleLog == null at Handle(Device, Message, CancellationToken)."); } } else { Logging.Info(typeof(HomeBattleReplayHandler), "ReplayId.IsZero == true at Handle(Device, Message, CancellationToken)."); } }