public static StreamEntry CreateStreamEntryByType(StreamEntryType type) { switch (type) { case StreamEntryType.DONATE: return(new DonateStreamEntry()); case StreamEntryType.CHAT: return(new ChatStreamEntry()); case StreamEntryType.JOIN_REQUEST: return(new JoinRequestAllianceStreamEntry()); case StreamEntryType.ALLIANCE_EVENT: return(new AllianceEventStreamEntry()); case StreamEntryType.REPLAY: return(new ReplayStreamEntry()); case StreamEntryType.CHALLENGE_REPLAY: return(new ChallengeReplayStreamEntry()); case StreamEntryType.CHALLENGE: return(new ChallengeStreamEntry()); case StreamEntryType.ALLIANCE_GIFT: return(new AllianceGiftStreamEntry()); case StreamEntryType.VERSUS_BATTLE_REQUEST: return(new VersusChallengeStreamEntry()); case StreamEntryType.VERSUS_BATTLE_REPLAY: return(new VersusBattleReplayStreamEntry()); case StreamEntryType.DUEL_REPLAY: return(new DuelReplayStreamEntry()); default: return(null); } }
protected void readStreamAttribute(MemoryStream ms) { //StreamEntry byte[] entryBuffer = ms.ReadFixedLengthByteArray(ms.ReadInt8()); MemoryStream ms2 = new MemoryStream(entryBuffer); StreamEntryType = (StreamEntryType)ms2.ReadInt8(); switch (StreamEntryType) { case StreamEntryType.STREAM_FOR_PLAYITEM: StreamPIDOfMainClip = ms2.ReadUInt16BE(); ms2.Position += 6; break; case StreamEntryType.STREAM_FOR_SUBPATH: SubPathId = ms2.ReadInt8(); SubClipEntryId = ms2.ReadInt8(); StreamPIDOfMainClip = ms2.ReadUInt16BE(); ms2.Position += 4; break; case StreamEntryType.STREAM_FOR_IN_MUX_SUBPATH: SubPathId = ms2.ReadInt8(); StreamPIDOfMainClip = ms2.ReadUInt16BE(); ms2.Position += 5; break; default: throw new NotImplementedException(StreamEntryType.ToString()); } }