public void ShowOneMatchRecord(int recordIndex) { var dirIndex = recordIndex; recordIndex--; //从1开始,变成从0开始 m_allRecords[recordIndex].Init(); m_allRecords[recordIndex].dirStr = PlayerPrefs.GetString(string.Format("RecordFile{0}", dirIndex)); //存档文件夹 DirectoryInfo dirInfo = new DirectoryInfo(m_allRecords[recordIndex].dirStr); var fileInfo = dirInfo.GetFiles(); int replyCount = fileInfo.Length; #if UNITY_IOS || UNITY_ANDROID replyCount -= 5; #else replyCount -= 1; #endif FileStream fInfo = new FileStream(string.Format("{0}/recordInfo.save", m_allRecords[recordIndex].dirStr), FileMode.Open); var bwReader = new BinaryReader(fInfo); m_allRecords[recordIndex].Init(); m_allRecords[recordIndex].roomID = bwReader.ReadInt32(); m_allRecords[recordIndex].createUserID = bwReader.ReadUInt32(); m_allRecords[recordIndex].totalCount = bwReader.ReadInt32(); m_allRecords[recordIndex].localUserID = bwReader.ReadInt32(); Debug.Log("roomID " + m_allRecords[recordIndex].roomID + "createuserID " + m_allRecords[recordIndex].createUserID + " count " + m_allRecords[recordIndex].totalCount + " local user is " + m_allRecords[recordIndex].localUserID); var typeValue = typeof(UserInfoStruct); var typeSize = Marshal.SizeOf(typeValue); for (int i = 0; i < 4; i++) { var buf = bwReader.ReadBytes(typeSize); m_allRecords[recordIndex].userInfo[i] = (UserInfoStruct)StructConverterByteArray.BytesToStruct(buf, typeValue); } m_allRecords[recordIndex].ScorePerMatch = new long[replyCount, 4]; m_allRecords[recordIndex].matchStartTime = new string[replyCount]; for (int i = 0; i < replyCount; i++) { m_allRecords[recordIndex].matchStartTime[i] = bwReader.ReadString(); for (int j = 0; j < 4; j++) { m_allRecords[recordIndex].ScorePerMatch[i, j] = bwReader.ReadInt64(); m_allRecords[recordIndex].ScoreTotal[j] += m_allRecords[recordIndex].ScorePerMatch[i, j]; } } bwReader.Close(); fInfo.Close(); }
//gameend 消息,存储当局分数等信息到recordInfo.save文件内 //解散时data为空,当前局所有玩家得分为0 public void StopRecord(byte[] data = null, int datasize = 0) { Debug.LogError("StopRecord"); return; if (!bRecording) { return; } #if UNITY_STANDALONE if (HNGameManager.m_iLocalChairID != 0) { return; } #endif for (int i = 0; i < msgQueue.Count; i++) { msgQueue[i].WriteData(bwWriter); } bwWriter.Flush(); bwWriter.Close(); fs.Close(); var trueRecord = CurrentRecordCount; if (CurrentRecordCount > MaxRecordCount) { trueRecord = (CurrentRecordCount % (MaxRecordCount + 1)) + 1; } var dirStr = PlayerPrefs.GetString(string.Format("RecordFile{0}", trueRecord));//存档文件夹 FileStream fInfo = new FileStream(string.Format("{0}/recordInfo.save", dirStr), FileMode.Append); bwWriter = new BinaryWriter(fInfo); var kernel = (GameScene)CServerItem.get().GetClientKernelSink(); for (int i = 0; i < savedUserInfoData.Length; i++) { //#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR // string filename = string.Format("{0}/{1}.png", dirStr, savedUserInfoData[i].IUserId); // if (File.Exists(filename) == false) // { // if (HNGameManager.userId2HeadImageDirectory.ContainsKey(savedUserInfoData[i].IUserId)) // { // var sprite = HNGameManager.userId2HeadImageDirectory[savedUserInfoData[i].IUserId]; // Loom.QueueOnMainThread(() => // { // var buf = sprite.texture.EncodeToPNG(); // File.WriteAllBytes(filename, buf); // }); // } // } //#endif } if (data == null) { Debug.Log("----------write 0 to file1111"); for (int i = 0; i < 4; i++) { bwWriter.Write((long)(0)); } } else { var typeValue = typeof(CMD_S_GameEnd); CMD_S_GameEnd pGameEnd = (CMD_S_GameEnd)StructConverterByteArray.BytesToStruct(data, typeValue); //bwWriter.Write(pGameEnd.lGameScore[HNGameManager.m_iLocalChairID]); //Debug.Log("-------------Write score to file: " + pGameEnd.lGameScore[HNGameManager.m_iLocalChairID]); //var curPlayerChairID = HNGameManager.getNextPlayerChairID(HNGameManager.m_iLocalChairID); //int iIndex = 1; //while (curPlayerChairID != HNGameManager.m_iLocalChairID) //{ // bwWriter.Write(pGameEnd.lGameScore[curPlayerChairID]); // Debug.Log("-------------Write score to file: " + pGameEnd.lGameScore[curPlayerChairID]); // curPlayerChairID = HNGameManager.getNextPlayerChairID(curPlayerChairID); //} } bwWriter.Flush(); bwWriter.Close(); fInfo.Close(); bRecording = false; msgQueue.Clear(); userInfoStorages = null; }