public static EmoCard ParseKoiChara(FileInfo file, BinaryReader reader, CardType gameType) { var loadVersion = new Version(reader.ReadString()); if (0 > new Version("0.0.0").CompareTo(loadVersion)) { //return null; } var language = 0; if (loadVersion > new Version("0.0.0")) { language = reader.ReadInt32(); } var userID = reader.ReadString(); var dataID = reader.ReadString(); int num = reader.ReadInt32(); var hsPackage = new HashSet <int>(); for (int i = 0; i < num; i++) { hsPackage.Add(reader.ReadInt32()); } var count = reader.ReadInt32(); var bytes = reader.ReadBytes(count); var blockHeader = MessagePackSerializer.Deserialize <BlockHeader>(bytes); var num2 = reader.ReadInt64(); var position = reader.BaseStream.Position; ChaFileParameter parameter = null; var info = blockHeader.SearchInfo(ChaFileParameter.BlockName); if (info != null) { reader.BaseStream.Seek(position + info.pos, SeekOrigin.Begin); var parameterBytes = reader.ReadBytes((int)info.size); parameter = MessagePackSerializer.Deserialize <ChaFileParameter>(parameterBytes); parameter.ComplementWithVersion(); } Dictionary <string, PluginData> extData = null; info = blockHeader.SearchInfo(ChaFileExtended.BlockName); if (info != null) { reader.BaseStream.Seek(position + info.pos, SeekOrigin.Begin); var parameterBytes = reader.ReadBytes((int)info.size); extData = MessagePackSerializer.Deserialize <Dictionary <string, PluginData> >(parameterBytes); } var card = new EmoCard(file, gameType, extData, parameter); card.Language = language; card.DataID = dataID; card.UserID = userID; return(card); }
private EmoCard(FileInfo cardFile, CardType type, Dictionary <string, PluginData> extended, ChaFileParameter parameter) : base(cardFile, type, extended) { Parameter = parameter; }