public static void TestByteIntArrTrans() { int[] array = new int[] { 3333, 77777777 }; byte[] array2 = FOGameFowOfflineSerializer.IntArrToByteArr(array); DebugHelper.Assert(array2.Length == 8); int[] array3 = FOGameFowOfflineSerializer.ByteArrToIntArr(array2); DebugHelper.Assert(array3.Length == array.Length); DebugHelper.Assert(array3[0] == array[0]); DebugHelper.Assert(array3[1] == array[1]); uint[] array4 = new uint[] { 50005u, 9999999u }; array[0] = (int)array4[0]; array[1] = (int)array4[1]; byte[] array5 = FOGameFowOfflineSerializer.IntArrToByteArr(array); DebugHelper.Assert(array5.Length == 8); uint[] array6 = FOGameFowOfflineSerializer.ByteArrToUIntArr(array5); DebugHelper.Assert(array6.Length == array4.Length); DebugHelper.Assert(array6[0] == array4[0]); DebugHelper.Assert(array6[1] == array4[1]); }
public bool LoadPrecomputeData() { bool result = false; if (Application.isPlaying && this.m_pFieldObj != null) { this.m_pFieldObj.m_fowCells = null; FOGameFowOfflineSerializer fOGameFowOfflineSerializer = new FOGameFowOfflineSerializer(); if (fOGameFowOfflineSerializer.TryLoad(this.m_pFieldObj)) { result = true; } this.m_pFieldObj.fowOfflineData = null; } return(result); }
public bool SaveTo(FieldObj inFieldObj) { DebugHelper.Assert(inFieldObj != null); DebugHelper.Assert(inFieldObj.m_fowCells != null); MemoryStream memoryStream = new MemoryStream(); BinaryWriter binaryWriter = new BinaryWriter(memoryStream); binaryWriter.Write(this.VerificationCode); binaryWriter.Write(this.Version); binaryWriter.Write(this.CrcCode); int num = inFieldObj.NumX * inFieldObj.NumY; binaryWriter.Write(num); for (int i = 0; i < num; i++) { FOWSurfCell fOWSurfCell = inFieldObj.m_fowCells[i]; if (fOWSurfCell.bValid) { int dataSize = fOWSurfCell.GetDataSize(); binaryWriter.Write(dataSize); DebugHelper.Assert(fOWSurfCell.data != null); int[] array = new int[fOWSurfCell.data.Length]; for (int j = 0; j < array.Length; j++) { array[j] = (int)fOWSurfCell.data[j]; } byte[] array2 = FOGameFowOfflineSerializer.IntArrToByteArr(array); binaryWriter.Write(array2, 0, array2.Length); } else { int num2 = 0; binaryWriter.Write(num2); } } binaryWriter.Write(987654321); binaryWriter.Flush(); memoryStream.Flush(); inFieldObj.fowOfflineData = memoryStream.ToArray(); binaryWriter.Close(); memoryStream.Close(); return(true); }
public bool TryLoad(FieldObj inFieldObj) { DebugHelper.Assert(inFieldObj != null); if (inFieldObj.fowOfflineData == null || inFieldObj.fowOfflineData.Length == 0) { return(false); } MemoryStream memoryStream = new MemoryStream(inFieldObj.fowOfflineData); BinaryReader binaryReader = new BinaryReader(memoryStream); uint num = binaryReader.ReadUInt32(); uint num2 = binaryReader.ReadUInt32(); uint num3 = binaryReader.ReadUInt32(); if (num != this.VerificationCode || this.Version != num2) { return(false); } int num4 = inFieldObj.NumX * inFieldObj.NumY; int num5 = binaryReader.ReadInt32(); if (num4 != num5) { return(false); } GameFowManager.InitSurfCellsArray(num4); GameFowManager.InitLevelGrid(num4, inFieldObj.LevelGrid.GridInfo.CellNumX, inFieldObj.LevelGrid.GridInfo.CellNumY, inFieldObj.LevelGrid.GridInfo.CellSizeX, inFieldObj.LevelGrid.GridInfo.CellSizeY, inFieldObj.LevelGrid.GridInfo.GridPos.x, inFieldObj.LevelGrid.GridInfo.GridPos.y); int num6 = 0; inFieldObj.UnrealToGridX(Horizon.QueryGlobalSight(), out num6); for (int i = 0; i < num4; i++) { int gridCellX = inFieldObj.LevelGrid.GetGridCellX(i); int gridCellY = inFieldObj.LevelGrid.GetGridCellY(i); int xMin = Mathf.Max(0, gridCellX - num6); int xMax = Mathf.Min(inFieldObj.NumX - 1, gridCellX + num6); int yMin = Mathf.Max(0, gridCellY - num6); int yMax = Mathf.Min(inFieldObj.NumY - 1, gridCellY + num6); int num7 = binaryReader.ReadInt32(); if (num7 > 0) { byte[] array = new byte[num7]; binaryReader.Read(array, 0, num7); uint[] array2 = FOGameFowOfflineSerializer.ByteArrToUIntArr(array); DebugHelper.Assert(array2.Length == num7 / 4); GameFowManager.InitSurfCell(i, xMin, xMax, yMin, yMax, true); IntPtr intPtr = Marshal.AllocHGlobal(num7); Marshal.Copy(array, 0, intPtr, num7); GameFowManager.SetSurfCellData(i, intPtr); Marshal.FreeHGlobal(intPtr); } else { GameFowManager.InitSurfCell(i, xMin, xMax, yMin, yMax, false); } FieldObj.SViewBlockAttr sViewBlockAttr = default(FieldObj.SViewBlockAttr); inFieldObj.QueryAttr(gridCellX, gridCellY, out sViewBlockAttr); GameFowManager.InitLevelGridCell(i, (int)sViewBlockAttr.BlockType, (int)sViewBlockAttr.LightType); } int num8 = binaryReader.ReadInt32(); if (num8 != 987654321) { } binaryReader.Close(); memoryStream.Close(); return(true); }