2using Microsoft.Xna.Framework;
178 throw new Exception(
"Be sure to update Minecart.textureWidth to match the actual texture size of " + 50
f +
".");
186 for (
int i = 0; i < 36; i++)
188 int[] array =
new int[8];
189 for (
int j = 0;
j < array.Length;
j++)
208 for (
int k = 0;
k < 4;
k++)
216 for (
int l = 4;
l < 8;
l++)
260 for (
int m = 0;
m < 8;
m++)
268 for (
int n = 0;
n < 8;
n++)
520 int[]
array3 =
new int[36];
634 public static BitsByte TrackCollision(
Player Player,
ref Vector2 Position,
ref Vector2 Velocity,
ref Vector2 lastBoost,
int Width,
int Height,
bool followDown,
bool followUp,
int fallStart,
bool trackOnly,
Mount.
MountDelegatesData delegatesData)
727 Vector2
vector =
default(Vector2);
745 Vector2
vector5 = Vector2.Zero;
746 Vector2
vector6 = Vector2.Zero;
790 flag = ((tile.
nactive() && tile.type == 314) ?
true :
false);
795 int num26 = tile.FrontTrack();
796 int num2 = tile.BackTrack();
854 vector5 = Vector2.Transform(
new Vector2(Velocity.X, 0
f),
val);
855 vector5.X = Velocity.X;
883 TrackState.BelowTrack =>
TrackState.AboveFront,
884 TrackState.AboveTrack =>
TrackState.AboveTrack,
892 TrackState.AboveTrack =>
TrackState.AboveBack,
893 TrackState.BelowTrack =>
TrackState.BelowTrack,
959 num9 = tile.FrontTrack();
962 num9 = tile.BackTrack();
969 int num10 = (int)(Position.Y / 16
f);
970 if (fallStart <
num10 - 1)
996 int num11 = tile.FrontTrack();
999 lastBoost =
new Vector2((
float)
num22, (
float)
num23);
1016 float num13 = vector4.X % 2
f;
1017 float num14 = vector4.Y % 2
f;
1056 if (lastBoost.X != (
float)
num12 || lastBoost.Y != (float)
num20)
1058 lastBoost = Vector2.Zero;
1068 Velocity.X = vector4.X -
vector2.X;
1078 Velocity.X = 0
f - Velocity.X;
1079 Position.X = vector4.X - _trackMagnetOffset.X - vector.X - Velocity.X;
1089 Velocity.X = vector4.X -
vector2.X;
1096 Position.Y += vector4.Y - vector2.Y - Velocity.Y;
1097 Position.Y = (float)
Math.Round(Position.Y, 2);
1121 int num = tile.FrontTrack();
1122 int num3 = tile.BackTrack();
1142 for (
int k = 0;
k < array.Length;
k++)
1144 int num9 = array[
k];
1145 if (
num3 == array[
k])
1155 if (
num == array[
k])
1167 if (
num == array[
k])
1203 for (
int l = 0;
l < array.Length;
l++)
1205 if (
num == array[
l])
1209 if (
num3 == array[
l])
1216 for (
int m = 0;
m < array.Length;
m++)
1241 if (
num6 >= array.Length)
1257 if (
num5 >= array.Length)
1281 if (tile.FrontTrack() != 0)
1287 if (tile.FrontTrack() != array[
num5])
1295 if (tile.BackTrack() != -1)
1300 else if (tile.BackTrack() != array[
num6])
1313 tile.FrontTrack((
short)array[
num5]);
1322 tile.BackTrack((
short)array[
num6]);
1381 if (tile.
type != 314)
1385 Vector2
vector =
default(Vector2);
1391 for (
int i =
num; i < 8; i++)
1424 public static bool OnTrack(Vector2 Position,
int Width,
int Height)
1432 Vector2
val = Position +
new Vector2((
float)(Width / 2) - 25
f, (
float)(Height / 2)) +
_trackMagnetOffset;
1460 float num4 = (Position.X - (float)(
int)Position.X) *
num3;
1483 Vector2 lastBoost = Vector2.Zero;
1484 Vector2 Velocity =
default(Vector2);
1486 TrackCollision(player,
ref leftWheel,
ref Velocity,
ref lastBoost, Width, Height,
followDown,
followUp, 0,
trackOnly:
true,
delegatesData);
1489 TrackCollision(player,
ref rightWheel,
ref Velocity,
ref lastBoost, Width, Height,
followDown,
followUp, 0,
trackOnly:
true,
delegatesData);
1513 new Vector2((
float)(Width / 2) - 25
f, (
float)(Height / 2));
1514 return Position +
new Vector2((
float)(Width / 2) - 25
f, (
float)(Height / 2)) +
_trackMagnetOffset;
1560 for (
int k = 0;
k < 4;
k++)
1562 int num2 = (
k switch
1576 int num3 = ((tile !=
null && tile.
active() && tile.type == 314) ? tile.
color() : 0);
1627 else if (
num10 != 0)
1710 trackCache.type = 314;
1711 trackCache.frameY = -1;
1715 trackCache.frameX = -1;
1750 return new Rectangle(0, 0, 0, 0);
1753 Rectangle
result =
default(Rectangle);
1868 Vector2
vector =
default(Vector2);
static Tile GetTileSafely(Vector2 position)
static Asset< Texture2D > MinecartMount
static bool FrameTrack(int i, int j, bool pound, bool mute=false)
const int LeftDownDecoration
const int Flag_BouncyBumper
const int RightDownDecoration
static int[] _leftSideConnection
static void FrontTrack(this Tile tileTrack, short trackID)
static int[][] _trackSwitchOptions
static int ConvertOffsetYToTrackConnectionValue(int offsetY)
static BitsByte TrackCollision(Player Player, ref Vector2 Position, ref Vector2 Velocity, ref Vector2 lastBoost, int Width, int Height, bool followDown, bool followUp, int fallStart, bool trackOnly, Mount.MountDelegatesData delegatesData)
static void TryFittingTileOrientation(Point tileCoords, int? expectedYOffsetForLeft, int? expectedYOffsetForRight)
static short FrontTrack(this Tile tileTrack)
static bool DrawBouncyBumper(int frameID)
static short _firstPressureFrame
static void PlaceTrack(Tile trackCache, int style)
const int BottomConnection
static Vector2 GetMagnetPosition(Vector2 Position, int Width, int Height)
static bool DrawRightDecoration(int frameID)
static bool DrawBumper(int frameID)
static bool GetOnTrack(int tileX, int tileY, ref Vector2 Position, int Width, int Height)
static short _firstRightBoostFrame
static Rectangle GetSourceRect(int frameID, int animationFrame=0)
static void FlipSwitchTrack(int i, int j)
static bool OnTrack(Vector2 Position, int Width, int Height)
static Vector2[] _texturePosition
const int MiddleConnection
static void TrackColors(int i, int j, Tile trackTile, out int frontColor, out int backColor)
static short _firstLeftBoostFrame
static void GetWheelsPositions(Player player, Vector2 Position, int Width, int Height, bool followDown, bool followUp, Mount.MountDelegatesData delegatesData, out Vector2 leftWheel, out Vector2 rightWheel)
static bool IsPressurePlate(Tile tile)
static void WheelSparks(Action< Vector2 > DustAction, Vector2 Position, int Width, int Height, int sparkCount)
static bool DrawLeftDecoration(int frameID)
static float TrackRotation(Player player, ref float rotation, Vector2 Position, int Width, int Height, bool followDown, bool followUp, Mount.MountDelegatesData delegatesData)
static int GetTrackItem(Tile trackCache)
const int BouncyBumperDecoration
static short BackTrack(this Tile tileTrack)
const float MinecartTextureWidth
static int[] _rightSideConnection
static Vector2 _trackMagnetOffset
static int GetNearbyTilesSetLookupIndex(int i, int j)
static void BackTrack(this Tile tileTrack, short trackID)
static int[][] _tileHeight
static void HitTrackSwitch(Vector2 Position, int Width, int Height)
static int ConvertTrackConnectionValueToOffsetY(int trackConnectionValue)
static bool GetAreExpectationsForSidesMet(Point tileCoords, int? expectedYOffsetForLeft, int? expectedYOffsetForRight)
const int Flag_BoostRight
const int RegularBumperDecoration
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)
static void SendTileSquare(int whoAmi, int tileX, int tileY, int xSize, int ySize, TileChangeType changeType=TileChangeType.None)
static float defaultGravity
static void HitSwitch(int i, int j)
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)
byte color()
Legacy code, use P:Terraria.Tile.TileColor instead.
bool nactive()
Legacy code, use P:Terraria.Tile.HasUnactuatedTile instead.
ref ushort type
Legacy code, use P:Terraria.Tile.TileType instead.
bool active()
Legacy code, use P:Terraria.Tile.HasTile instead.
ref short frameX
Legacy code, use P:Terraria.Tile.TileFrameX instead.
A data structure used for accessing information about tiles, walls, wires, and liquids at a single po...