forked from ddevault/TrueCraft
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReadOnlyWorld.cs
More file actions
120 lines (99 loc) · 3.19 KB
/
ReadOnlyWorld.cs
File metadata and controls
120 lines (99 loc) · 3.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using TrueCraft.API.World;
using TrueCraft.Core.World;
using TrueCraft.API;
namespace TrueCraft.Client
{
public class ReadOnlyWorld
{
private bool UnloadChunks { get; set; }
internal World World { get; set; }
internal ReadOnlyWorld()
{
World = new World("default");
UnloadChunks = true;
}
public byte GetBlockID(Coordinates3D coordinates)
{
return World.GetBlockID(coordinates);
}
internal void SetBlockID(Coordinates3D coordinates, byte value)
{
World.SetBlockID(coordinates, value);
}
internal void SetMetadata(Coordinates3D coordinates, byte value)
{
World.SetMetadata(coordinates, value);
}
public byte GetMetadata(Coordinates3D coordinates)
{
return World.GetMetadata(coordinates);
}
public byte GetSkyLight(Coordinates3D coordinates)
{
return World.GetSkyLight(coordinates);
}
internal IChunk FindChunk(Coordinates2D coordinates)
{
try
{
return World.FindChunk(new Coordinates3D(coordinates.X, 0, coordinates.Z));
}
catch
{
return null;
}
}
public ReadOnlyChunk GetChunk(Coordinates2D coordinates)
{
return new ReadOnlyChunk(World.GetChunk(coordinates));
}
internal void SetChunk(Coordinates2D coordinates, Chunk chunk)
{
World.SetChunk(coordinates, chunk);
}
internal void RemoveChunk(Coordinates2D coordinates)
{
if (UnloadChunks)
World.UnloadChunk(coordinates);
}
public bool IsValidPosition(Coordinates3D coords)
{
return World.IsValidPosition(coords);
}
}
public class ReadOnlyChunk
{
internal IChunk Chunk { get; set; }
internal ReadOnlyChunk(IChunk chunk)
{
Chunk = chunk;
}
public byte GetBlockId(Coordinates3D coordinates)
{
return Chunk.GetBlockID(coordinates);
}
public byte GetMetadata(Coordinates3D coordinates)
{
return Chunk.GetMetadata(coordinates);
}
public byte GetSkyLight(Coordinates3D coordinates)
{
return Chunk.GetSkyLight(coordinates);
}
public byte GetBlockLight(Coordinates3D coordinates)
{
return Chunk.GetBlockLight(coordinates);
}
public int X { get { return Chunk.X; } }
public int Z { get { return Chunk.Z; } }
public ReadOnlyCollection<byte> Blocks { get { return Array.AsReadOnly(Chunk.Blocks); } }
public ReadOnlyNibbleArray Metadata { get { return new ReadOnlyNibbleArray(Chunk.Metadata); } }
public ReadOnlyNibbleArray BlockLight { get { return new ReadOnlyNibbleArray(Chunk.BlockLight); } }
public ReadOnlyNibbleArray SkyLight { get { return new ReadOnlyNibbleArray(Chunk.SkyLight); } }
}
}