22 for (
int i = 0; i < 65537; i++) {
44 chunk.ModificationCounter = 0;
59 throw new InvalidOperationException(
"Invalid chunk header.");
70 public static void ReadTOCEntry(Stream stream, out
int cx, out
int cz, out
int offset) {
76 public static void WriteTOCEntry(Stream stream,
int cx,
int cz,
int offset) {
86 int num = chunk.Origin.X >> 4;
87 int num2 = chunk.Origin.Y >> 4;
90 m_stream.Seek(value, SeekOrigin.Begin);
94 for (
int i = 0; i < 16; i++) {
95 for (
int j = 0; j < 16; j++) {
97 for (
int k = 0; k < 256; k++) {
106 for (
int l = 0; l < 16; l++) {
107 for (
int m = 0; m < 16; m++) {
118 catch (Exception e) {
128 int num = chunk.Origin.X >> 4;
129 int num2 = chunk.Origin.Y >> 4;
133 m_stream.Seek(value, SeekOrigin.Begin);
138 m_stream.Seek(value, SeekOrigin.Begin);
142 for (
int i = 0; i < 16; i++) {
143 for (
int j = 0; j < 16; j++) {
145 for (
int k = 0; k < 256; k++) {
147 m_buffer[num3++] = (byte)cellValueFast;
148 m_buffer[num3++] = (byte)(cellValueFast >> 8);
154 for (
int l = 0; l < 16; l++) {
155 for (
int m = 0; m < 16; m++) {
157 m_buffer[num3++] = (byte)shaftValue;
158 m_buffer[num3++] = (byte)(shaftValue >> 8);
159 m_buffer[num3++] = (byte)(shaftValue >> 16);
160 m_buffer[num3++] = (byte)(shaftValue >> 24);
166 int num5 = m_chunkOffsets.Count % 65536 * 3 * 4;
167 m_stream.Seek(num5, SeekOrigin.Begin);
174 catch (Exception e) {
181 stream.ReadByte() + (stream.ReadByte() << 8) + (stream.ReadByte() << 16) + (stream.ReadByte() << 24);
183 public static void WriteInt(Stream stream,
int value) {
184 stream.WriteByte((
byte)(value & 0xFF));
185 stream.WriteByte((
byte)((value >> 8) & 0xFF));
186 stream.WriteByte((
byte)((value >> 16) & 0xFF));
187 stream.WriteByte((
byte)((value >> 24) & 0xFF));
static void Error(object message)
static Stream OpenFile(string path, OpenFileMode openFileMode)
static bool FileExists(string path)
static string CombinePaths(params string[] paths)
static string MakeFullErrorMessage(Exception e)
static int CalculateCellIndex(int x, int y, int z)
virtual int GetCellValueFast(int index)
virtual void SetCellValueFast(int x, int y, int z, int value)
virtual void SetShaftValue(int x, int z, int value)
virtual int GetShaftValue(int x, int z)
bool LoadChunk(TerrainChunk chunk)
bool LoadChunkBlocks(TerrainChunk chunk)
TerrainSerializer14(SubsystemTerrain subsystemTerrain, string directoryName)
SubsystemTerrain m_subsystemTerrain
Dictionary< Point2, int > m_chunkOffsets
static void ReadChunkHeader(Stream stream)
static int ReadInt(Stream stream)
const string ChunksFileName
static void WriteInt(Stream stream, int value)
static void ReadTOCEntry(Stream stream, out int cx, out int cz, out int offset)
static void WriteChunkHeader(Stream stream, int cx, int cz)
static void WriteTOCEntry(Stream stream, int cx, int cz, int offset)
void SaveChunkBlocks(TerrainChunk chunk)
void SaveChunk(TerrainChunk chunk)