Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ UpdateMech()

static void Terraria.Wiring.UpdateMech ( )
inlinestatic

Definition at line 135 of file Wiring.cs.

136 {
138 for (int num = _numMechs - 1; num >= 0; num--)
139 {
140 _mechTime[num]--;
141 int num2 = _mechX[num];
142 int num3 = _mechY[num];
143 if (!WorldGen.InWorld(num2, num3, 1))
144 {
145 _numMechs--;
146 }
147 else
148 {
149 Tile tile = Main.tile[num2, num3];
150 if (tile == null)
151 {
152 _numMechs--;
153 }
154 else
155 {
156 if (tile.active() && tile.type == 144)
157 {
158 if (tile.frameY == 0)
159 {
160 _mechTime[num] = 0;
161 }
162 else
163 {
164 int num4 = tile.frameX / 18;
165 switch (num4)
166 {
167 case 0:
168 num4 = 60;
169 break;
170 case 1:
171 num4 = 180;
172 break;
173 case 2:
174 num4 = 300;
175 break;
176 case 3:
177 num4 = 30;
178 break;
179 case 4:
180 num4 = 15;
181 break;
182 }
183 if (Math.IEEERemainder(_mechTime[num], num4) == 0.0)
184 {
185 _mechTime[num] = 18000;
186 TripWire(_mechX[num], _mechY[num], 1, 1);
187 }
188 }
189 }
190 if (_mechTime[num] <= 0)
191 {
192 if (tile.active() && tile.type == 144)
193 {
194 tile.frameY = 0;
195 NetMessage.SendTileSquare(-1, _mechX[num], _mechY[num]);
196 }
197 if (tile.active() && tile.type == 411)
198 {
199 int num5 = tile.frameX % 36 / 18;
200 int num6 = tile.frameY % 36 / 18;
201 int num7 = _mechX[num] - num5;
202 int num8 = _mechY[num] - num6;
203 int num9 = 36;
204 if (Main.tile[num7, num8].frameX >= 36)
205 {
206 num9 = -36;
207 }
208 for (int i = num7; i < num7 + 2; i++)
209 {
210 for (int j = num8; j < num8 + 2; j++)
211 {
212 if (WorldGen.InWorld(i, j, 1))
213 {
214 Tile tile2 = Main.tile[i, j];
215 if (tile2 != null)
216 {
217 tile2.frameX = (short)(tile2.frameX + num9);
218 }
219 }
220 }
221 }
222 NetMessage.SendTileSquare(-1, num7, num8, 2, 2);
223 }
224 for (int k = num; k < _numMechs; k++)
225 {
226 _mechX[k] = _mechX[k + 1];
227 _mechY[k] = _mechY[k + 1];
228 _mechTime[k] = _mechTime[k + 1];
229 }
230 _numMechs--;
231 }
232 }
233 }
234 }
235 }
static double IEEERemainder(double x, double y)
Definition Math.cs:679
static int _numMechs
Definition Wiring.cs:59
static int[] _mechX
Definition Wiring.cs:55
static int[] _mechTime
Definition Wiring.cs:61
static int[] _mechY
Definition Wiring.cs:57
static void SetCurrentUser(int plr=-1)
Definition Wiring.cs:67
static void TripWire(int left, int top, int width, int height)
Definition Wiring.cs:499

References Terraria.Wiring._mechTime, Terraria.Wiring._mechX, Terraria.Wiring._mechY, Terraria.Wiring._numMechs, Terraria.Tile.active(), Terraria.Tile.frameY, System.Math.IEEERemainder(), Terraria.WorldGen.InWorld(), Terraria.NetMessage.SendTileSquare(), Terraria.Wiring.SetCurrentUser(), Terraria.Main.tile, Terraria.Wiring.TripWire(), and Terraria.Tile.type.

Referenced by Terraria.WorldGen.UpdateWorld().