Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
TreeTopsInfo.cs
Go to the documentation of this file.
1using System.IO;
4
6
7public class TreeTopsInfo
8{
9 public class AreaId
10 {
11 public const int Forest1 = 0;
12
13 public const int Forest2 = 1;
14
15 public const int Forest3 = 2;
16
17 public const int Forest4 = 3;
18
19 public const int Corruption = 4;
20
21 public const int Jungle = 5;
22
23 public const int Snow = 6;
24
25 public const int Hallow = 7;
26
27 public const int Crimson = 8;
28
29 public const int Desert = 9;
30
31 public const int Ocean = 10;
32
33 public const int GlowingMushroom = 11;
34
35 public const int Underworld = 12;
36
37 public static readonly int Count = 13;
38 }
39
40 private int[] _variations = new int[AreaId.Count];
41
42 public void Save(BinaryWriter writer)
43 {
44 writer.Write(_variations.Length);
45 for (int i = 0; i < _variations.Length; i++)
46 {
47 writer.Write(_variations[i]);
48 }
49 }
50
51 public void Load(BinaryReader reader, int loadVersion)
52 {
53 if (loadVersion < 211)
54 {
56 return;
57 }
58 int num = reader.ReadInt32();
59 for (int i = 0; i < num && i < _variations.Length; i++)
60 {
61 _variations[i] = reader.ReadInt32();
62 }
63 }
64
65 public void SyncSend(BinaryWriter writer)
66 {
67 for (int i = 0; i < _variations.Length; i++)
68 {
69 writer.Write((byte)_variations[i]);
70 }
71 }
72
73 public void SyncReceive(BinaryReader reader)
74 {
75 for (int i = 0; i < _variations.Length; i++)
76 {
77 int num = _variations[i];
78 _variations[i] = reader.ReadByte();
79 if (_variations[i] != num)
80 {
81 DoTreeFX(i);
82 }
83 }
84 }
85
86 public int GetTreeStyle(int areaId)
87 {
88 return _variations[areaId];
89 }
90
92 {
93 Point pt = new Point((int)(worldPosition.X / 16f), (int)(worldPosition.Y / 16f) + 1);
94 Tile tileSafely = Framing.GetTileSafely(pt);
95 if (tileSafely.active())
96 {
97 int num = -1;
98 if (tileSafely.type == 70)
99 {
100 num = 11;
101 }
102 else if (tileSafely.type == 53 && WorldGen.oceanDepths(pt.X, pt.Y))
103 {
104 num = 10;
105 }
106 else if (tileSafely.type == 23)
107 {
108 num = 4;
109 }
110 else if (tileSafely.type == 199)
111 {
112 num = 8;
113 }
114 else if (tileSafely.type == 109 || tileSafely.type == 492)
115 {
116 num = 7;
117 }
118 else if (tileSafely.type == 53)
119 {
120 num = 9;
121 }
122 else if (tileSafely.type == 147)
123 {
124 num = 6;
125 }
126 else if (tileSafely.type == 60)
127 {
128 num = 5;
129 }
130 else if (tileSafely.type == 633)
131 {
132 num = 12;
133 }
134 else if (tileSafely.type == 2 || tileSafely.type == 477)
135 {
136 num = ((pt.X >= Main.treeX[0]) ? ((pt.X < Main.treeX[1]) ? 1 : ((pt.X >= Main.treeX[2]) ? 3 : 2)) : 0);
137 }
138 if (num > -1)
139 {
140 RandomizeTreeStyle(rand, num);
141 }
142 }
143 }
144
145 public void RandomizeTreeStyle(UnifiedRandom rand, int areaId)
146 {
147 int num = _variations[areaId];
148 bool flag = false;
149 while (_variations[areaId] == num)
150 {
151 switch (areaId)
152 {
153 case 0:
154 case 1:
155 case 2:
156 case 3:
157 _variations[areaId] = rand.Next(6);
158 break;
159 case 4:
160 _variations[areaId] = rand.Next(5);
161 break;
162 case 5:
163 _variations[areaId] = rand.Next(6);
164 break;
165 case 6:
166 _variations[areaId] = rand.NextFromList<int>(0, 1, 2, 21, 22, 3, 31, 32, 4, 41, 42, 5, 6, 7);
167 break;
168 case 7:
169 _variations[areaId] = rand.Next(5);
170 break;
171 case 8:
172 _variations[areaId] = rand.Next(6);
173 break;
174 case 9:
175 _variations[areaId] = rand.Next(5);
176 break;
177 case 10:
178 _variations[areaId] = rand.Next(6);
179 break;
180 case 11:
181 _variations[areaId] = rand.Next(4);
182 break;
183 case 12:
184 _variations[areaId] = rand.Next(6);
185 break;
186 default:
187 flag = true;
188 break;
189 }
190 if (flag)
191 {
192 break;
193 }
194 }
195 if (num != _variations[areaId])
196 {
197 if (Main.netMode == 2)
198 {
200 }
201 else
202 {
203 DoTreeFX(areaId);
204 }
205 }
206 }
207
208 private void DoTreeFX(int areaID)
209 {
210 }
211
216
233}
virtual byte ReadByte()
virtual int ReadInt32()
static Tile GetTileSafely(Vector2 position)
Definition Framing.cs:419
void RandomizeTreeStyleBasedOnWorldPosition(UnifiedRandom rand, Vector2 worldPosition)
void SyncSend(BinaryWriter writer)
void SyncReceive(BinaryReader reader)
void Load(BinaryReader reader, int loadVersion)
void RandomizeTreeStyle(UnifiedRandom rand, int areaId)
void Save(BinaryWriter writer)
static int[] treeX
Definition Main.cs:668
static int netMode
Definition Main.cs:2095
static int[] treeStyle
Definition Main.cs:670
static void SendData(int msgType, int remoteClient=-1, int ignoreClient=-1, NetworkText text=null, int number=0, float number2=0f, float number3=0f, float number4=0f, int number5=0, int number6=0, int number7=0)
Definition NetMessage.cs:88
ushort type
Definition Tile.cs:8
bool active()
Definition Tile.cs:565
static int hallowBG
Definition WorldGen.cs:914
static int mushroomBG
Definition WorldGen.cs:922
static int jungleBG
Definition WorldGen.cs:910
static int underworldBG
Definition WorldGen.cs:924
static int corruptBG
Definition WorldGen.cs:908
static bool oceanDepths(int x, int y)
Definition WorldGen.cs:7142
static int desertBG
Definition WorldGen.cs:918
static int crimsonBG
Definition WorldGen.cs:916
static int snowBG
Definition WorldGen.cs:912
static int oceanBG
Definition WorldGen.cs:920