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

◆ TupleHitLineWall()

static Tuple< int, int > Terraria.Collision.TupleHitLineWall ( int x1,
int y1,
int x2,
int y2 )
inlinestatic

Definition at line 1204 of file Collision.cs.

1205 {
1206 int num = x1;
1207 int num10 = y1;
1208 int num11 = x2;
1209 int num12 = y2;
1210 if (num <= 1)
1211 {
1212 num = 1;
1213 }
1214 if (num >= Main.maxTilesX)
1215 {
1216 num = Main.maxTilesX - 1;
1217 }
1218 if (num11 <= 1)
1219 {
1220 num11 = 1;
1221 }
1222 if (num11 >= Main.maxTilesX)
1223 {
1224 num11 = Main.maxTilesX - 1;
1225 }
1226 if (num10 <= 1)
1227 {
1228 num10 = 1;
1229 }
1230 if (num10 >= Main.maxTilesY)
1231 {
1232 num10 = Main.maxTilesY - 1;
1233 }
1234 if (num12 <= 1)
1235 {
1236 num12 = 1;
1237 }
1238 if (num12 >= Main.maxTilesY)
1239 {
1240 num12 = Main.maxTilesY - 1;
1241 }
1242 float num13 = Math.Abs(num - num11);
1243 float num14 = Math.Abs(num10 - num12);
1244 if (num13 == 0f && num14 == 0f)
1245 {
1246 return new Tuple<int, int>(num, num10);
1247 }
1248 float num15 = 1f;
1249 float num16 = 1f;
1250 if (num13 == 0f || num14 == 0f)
1251 {
1252 if (num13 == 0f)
1253 {
1254 num15 = 0f;
1255 }
1256 if (num14 == 0f)
1257 {
1258 num16 = 0f;
1259 }
1260 }
1261 else if (num13 > num14)
1262 {
1263 num15 = num13 / num14;
1264 }
1265 else
1266 {
1267 num16 = num14 / num13;
1268 }
1269 float num17 = 0f;
1270 float num2 = 0f;
1271 int num3 = 1;
1272 if (num10 < num12)
1273 {
1274 num3 = 2;
1275 }
1276 int num4 = (int)num13;
1277 int num5 = (int)num14;
1278 int num6 = Math.Sign(num11 - num);
1279 int num7 = Math.Sign(num12 - num10);
1280 bool flag = false;
1281 bool flag2 = false;
1282 try
1283 {
1284 do
1285 {
1286 switch (num3)
1287 {
1288 case 2:
1289 {
1290 num17 += num15;
1291 int num9 = (int)num17;
1292 num17 %= 1f;
1293 for (int j = 0; j < num9; j++)
1294 {
1295 _ = Main.tile[num, num10];
1296 if (HitWallSubstep(num, num10))
1297 {
1298 return new Tuple<int, int>(num, num10);
1299 }
1300 if (num4 == 0 && num5 == 0)
1301 {
1302 flag = true;
1303 break;
1304 }
1305 num += num6;
1306 num4--;
1307 if (num4 == 0 && num5 == 0 && num9 == 1)
1308 {
1309 flag2 = true;
1310 }
1311 }
1312 if (num5 != 0)
1313 {
1314 num3 = 1;
1315 }
1316 break;
1317 }
1318 case 1:
1319 {
1320 num2 += num16;
1321 int num8 = (int)num2;
1322 num2 %= 1f;
1323 for (int i = 0; i < num8; i++)
1324 {
1325 _ = Main.tile[num, num10];
1326 if (HitWallSubstep(num, num10))
1327 {
1328 return new Tuple<int, int>(num, num10);
1329 }
1330 if (num4 == 0 && num5 == 0)
1331 {
1332 flag = true;
1333 break;
1334 }
1335 num10 += num7;
1336 num5--;
1337 if (num4 == 0 && num5 == 0 && num8 == 1)
1338 {
1339 flag2 = true;
1340 }
1341 }
1342 if (num4 != 0)
1343 {
1344 num3 = 2;
1345 }
1346 break;
1347 }
1348 }
1349 if (Main.tile[num, num10] == null)
1350 {
1351 return new Tuple<int, int>(-1, -1);
1352 }
1353 _ = Main.tile[num, num10];
1354 if (HitWallSubstep(num, num10))
1355 {
1356 return new Tuple<int, int>(num, num10);
1357 }
1358 }
1359 while (!(flag || flag2));
1360 return new Tuple<int, int>(num, num10);
1361 }
1362 catch
1363 {
1364 return new Tuple<int, int>(-1, -1);
1365 }
1366 }
static bool HitWallSubstep(int x, int y)

References Terraria.Collision.HitWallSubstep(), Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, and Terraria.Main.tile.

Referenced by Terraria.GameContent.SmartCursorHelper.Step_Hammers().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: