174 public static bool CanPlace(
int x,
int y,
int type,
int style,
int dir, out
TileObject objectData,
bool onlyCheck =
false,
int? forcedRandom =
null)
178 if (tileData ==
null)
182 int num = x - tileData.
Origin.
X;
183 int num2 = y - tileData.
Origin.
Y;
188 bool flag = tileData.RandomStyleRange > 0;
212 int num8 = x - tileData2.
Origin.
X;
213 int num9 = y - tileData2.
Origin.
Y;
223 if (rectangle.
Y == 0)
230 if (checkStart < rectangle.
X)
232 rectangle.Width += rectangle.X - checkStart;
233 num10 += rectangle.X - checkStart;
234 rectangle.X = checkStart;
236 int num12 = checkStart + tileData2.AnchorTop.tileCount - 1;
237 int num13 = rectangle.X + rectangle.Width - 1;
240 rectangle.Width += num12 - num13;
250 if (checkStart2 < rectangle.
X)
252 rectangle.Width += rectangle.X - checkStart2;
253 num10 += rectangle.X - checkStart2;
254 rectangle.X = checkStart2;
256 int num14 = checkStart2 + tileData2.AnchorBottom.tileCount - 1;
257 int num15 = rectangle.X + rectangle.Width - 1;
260 rectangle.Width += num14 - num15;
265 if (rectangle.
X == 0)
276 if (num16 < rectangle.
Y)
278 rectangle.Width += rectangle.Y - num16;
279 num11 += rectangle.Y - num16;
282 int num17 = num16 + tileData2.AnchorLeft.tileCount - 1;
287 int num18 = rectangle.Y + rectangle.Height - 1;
290 rectangle.Height += num17 - num18;
295 if (rectangle.
X + rectangle.
Width == tileData2.
Width)
304 if (num19 < rectangle.
Y)
306 rectangle.Width += rectangle.Y - num19;
307 num11 += rectangle.Y - num19;
310 int num20 = num19 + tileData2.AnchorRight.tileCount - 1;
315 int num21 = rectangle.Y + rectangle.Height - 1;
318 rectangle.Height += num20 - num21;
324 objectPreview.Active =
true;
325 objectPreview.Type = (ushort)
type;
327 objectPreview.Alternate = num7;
329 objectPreview.ObjectStart =
new Point16(num10, num11);
330 objectPreview.Coordinates =
new Point16(num8 - num10, num9 - num11);
333 float num23 = tileData2.Width * tileData2.
Height;
336 for (
int i = 0; i < tileData2.
Width; i++)
338 for (
int j = 0; j < tileData2.
Height; j++)
360 if (flag4 || flag2 || flag3)
379 int height = tileData2.
Height;
380 for (
int k = 0; k < anchorBottom.
tileCount; k++)
382 int num26 = anchorBottom.checkStart + k;
413 if ((uint)(num27 - 4) <= 1u)
447 for (
int l = 0; l < anchorBottom.
tileCount; l++)
449 int num29 = anchorBottom.checkStart + l;
477 if ((uint)(num27 - 2) <= 1u)
510 int width = tileData2.
Width;
511 for (
int m = 0; m < anchorBottom.
tileCount; m++)
513 int num30 = anchorBottom.checkStart + m;
525 if (num27 == 2 || num27 == 4)
597 for (
int n = 0; n < anchorBottom.
tileCount; n++)
599 int num32 = anchorBottom.checkStart + n;
611 if (num27 == 3 || num27 == 5)
692 float num33 = num24 / num25;
693 float num34 = num22 / num23;
694 if (num34 == 1f && num25 == 0f)
701 if (num33 == 1f && num34 == 1f)
706 tileObjectData = tileData2;
709 if (num33 > num4 || (num33 == num4 && num34 > num5))
714 tileObjectData = tileData2;
730 int num36 = coordinates.X + objectStart.
X;
731 int num37 = coordinates.Y + objectStart.
Y;
732 int num38 = x - tileData.
Origin.
X;
733 int num39 = y - tileData.
Origin.
Y;
734 if (num36 != num38 || num37 != num39)
745 if (forcedRandom.HasValue)
747 num40 = (forcedRandom.Value % randomStyleRange + randomStyleRange) % randomStyleRange;
762 int num41 = coordinates2.X + objectStart2.
X;
763 int num42 = coordinates2.Y + objectStart2.
Y;
764 int num43 = x - tileData.
Origin.
X;
765 int num44 = y - tileData.
Origin.
Y;
766 if (num41 != num43 || num42 != num44)
777 if (forcedRandom.HasValue)
779 num46 = (forcedRandom.Value % num45 + num45) % num45;
785 if (num4 != 1f || num5 != 1f)
790 objectPreview.Random = num35;
798 objectData.xCoord = x - tileObjectData.
Origin.
X;
799 objectData.yCoord = y - tileObjectData.
Origin.
Y;
800 objectData.type =
type;
801 objectData.style =
style;
802 objectData.alternate = num7;
803 objectData.random = num35;