Terraria 1.4.0.5 Source Code

This commit is contained in:
MikeyIsBaeYT 2021-10-26 12:45:26 -04:00
commit 05205f009e
1059 changed files with 563450 additions and 0 deletions

View file

@ -0,0 +1,251 @@
// Decompiled with JetBrains decompiler
// Type: Terraria.GameContent.PlayerSittingHelper
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
using Microsoft.Xna.Framework;
using Terraria.ID;
namespace Terraria.GameContent
{
public struct PlayerSittingHelper
{
public const int ChairSittingMaxDistance = 40;
public bool isSitting;
public Vector2 offsetForSeat;
public int sittingIndex;
public void GetSittingOffsetInfo(
Player player,
out Vector2 posOffset,
out float seatAdjustment)
{
if (this.isSitting)
{
posOffset = new Vector2((float) (this.sittingIndex * player.direction * 8), (float) ((double) this.sittingIndex * (double) player.gravDir * -4.0));
seatAdjustment = -4f;
seatAdjustment += (float) (int) this.offsetForSeat.Y;
posOffset += this.offsetForSeat * player.Directions;
}
else
{
posOffset = Vector2.Zero;
seatAdjustment = 0.0f;
}
}
public void UpdateSitting(Player player)
{
if (!this.isSitting)
return;
Point tileCoordinates = (player.Bottom + new Vector2(0.0f, -2f)).ToTileCoordinates();
int targetDirection;
Vector2 seatDownOffset;
if (!PlayerSittingHelper.GetSittingTargetInfo(player, tileCoordinates.X, tileCoordinates.Y, out targetDirection, out Vector2 _, out seatDownOffset))
{
this.SitUp(player);
}
else
{
if (player.controlLeft || player.controlRight || player.controlUp || player.controlDown || player.controlJump || player.pulley || player.mount.Active || targetDirection != player.direction)
this.SitUp(player);
if (Main.sittingManager.GetNextPlayerStackIndexInCoords(tileCoordinates) >= 2)
this.SitUp(player);
if (!this.isSitting)
return;
this.offsetForSeat = seatDownOffset;
Main.sittingManager.AddPlayerAndGetItsStackedIndexInCoords(player.whoAmI, tileCoordinates, out this.sittingIndex);
}
}
public void SitUp(Player player, bool multiplayerBroadcast = true)
{
if (!this.isSitting)
return;
this.isSitting = false;
this.offsetForSeat = Vector2.Zero;
this.sittingIndex = -1;
if (!multiplayerBroadcast || Main.myPlayer != player.whoAmI)
return;
NetMessage.SendData(13, number: player.whoAmI);
}
public void SitDown(Player player, int x, int y)
{
int targetDirection;
Vector2 playerSittingPosition;
Vector2 seatDownOffset;
if (!PlayerSittingHelper.GetSittingTargetInfo(player, x, y, out targetDirection, out playerSittingPosition, out seatDownOffset))
return;
Vector2 offset = playerSittingPosition - player.Bottom;
bool position = player.CanSnapToPosition(offset);
if (position)
position &= Main.sittingManager.GetNextPlayerStackIndexInCoords((playerSittingPosition + new Vector2(0.0f, -2f)).ToTileCoordinates()) < 2;
if (!position)
return;
if (this.isSitting && player.Bottom == playerSittingPosition)
{
this.SitUp(player);
}
else
{
player.StopVanityActions();
player.RemoveAllGrapplingHooks();
if (player.mount.Active)
player.mount.Dismount(player);
player.Bottom = playerSittingPosition;
player.ChangeDir(targetDirection);
this.isSitting = true;
this.offsetForSeat = seatDownOffset;
Main.sittingManager.AddPlayerAndGetItsStackedIndexInCoords(player.whoAmI, new Point(x, y), out this.sittingIndex);
player.velocity = Vector2.Zero;
player.gravDir = 1f;
if (Main.myPlayer != player.whoAmI)
return;
NetMessage.SendData(13, number: player.whoAmI);
}
}
public static bool GetSittingTargetInfo(
Player player,
int x,
int y,
out int targetDirection,
out Vector2 playerSittingPosition,
out Vector2 seatDownOffset)
{
Tile tileSafely = Framing.GetTileSafely(x, y);
if (!TileID.Sets.CanBeSatOnForPlayers[(int) tileSafely.type] || !tileSafely.active())
{
targetDirection = 1;
seatDownOffset = Vector2.Zero;
playerSittingPosition = new Vector2();
return false;
}
int x1 = x;
int num1 = y;
targetDirection = 1;
seatDownOffset = Vector2.Zero;
int num2 = 6;
Vector2 zero1 = Vector2.Zero;
switch (tileSafely.type)
{
case 15:
case 497:
seatDownOffset.Y = (float) ((tileSafely.type == (ushort) 15 && (int) tileSafely.frameY / 40 == 27).ToInt() * 4);
if ((int) tileSafely.frameY % 40 != 0)
--num1;
targetDirection = -1;
if (tileSafely.frameX != (short) 0)
{
targetDirection = 1;
break;
}
break;
case 89:
targetDirection = player.direction;
num2 = 0;
Vector2 vector2_1 = new Vector2(-4f, 2f);
Vector2 vector2_2 = new Vector2(4f, 2f);
Vector2 vector2_3 = new Vector2(0.0f, 2f);
Vector2 zero2 = Vector2.Zero;
zero2.X = 1f;
zero1.X = -1f;
switch ((int) tileSafely.frameX / 54)
{
case 0:
vector2_3.Y = vector2_1.Y = vector2_2.Y = 1f;
break;
case 1:
vector2_3.Y = 1f;
break;
case 2:
case 14:
case 15:
case 17:
case 20:
case 21:
case 22:
case 23:
case 25:
case 26:
case 27:
case 28:
case 35:
case 37:
case 38:
case 39:
case 40:
case 41:
case 42:
vector2_3.Y = vector2_1.Y = vector2_2.Y = 1f;
break;
case 3:
case 4:
case 5:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 16:
case 18:
case 19:
case 36:
vector2_3.Y = vector2_1.Y = vector2_2.Y = 0.0f;
break;
case 6:
vector2_3.Y = vector2_1.Y = vector2_2.Y = -1f;
break;
case 24:
vector2_3.Y = 0.0f;
vector2_1.Y = -4f;
vector2_1.X = 0.0f;
vector2_2.X = 0.0f;
vector2_2.Y = -4f;
break;
}
if ((int) tileSafely.frameY % 40 != 0)
--num1;
seatDownOffset = (int) tileSafely.frameX % 54 == 0 && targetDirection == -1 || (int) tileSafely.frameX % 54 == 36 && targetDirection == 1 ? vector2_1 : ((int) tileSafely.frameX % 54 == 0 && targetDirection == 1 || (int) tileSafely.frameX % 54 == 36 && targetDirection == -1 ? vector2_2 : vector2_3);
seatDownOffset += zero2;
break;
case 102:
int num3 = (int) tileSafely.frameX / 18;
if (num3 == 0)
++x1;
if (num3 == 2)
--x1;
int num4 = (int) tileSafely.frameY / 18;
if (num4 == 0)
num1 += 2;
if (num4 == 1)
++num1;
if (num4 == 3)
--num1;
targetDirection = player.direction;
num2 = 0;
break;
case 487:
int num5 = (int) tileSafely.frameX % 72 / 18;
if (num5 == 1)
--x1;
if (num5 == 2)
++x1;
if ((int) tileSafely.frameY / 18 != 0)
--num1;
targetDirection = (num5 <= 1).ToDirectionInt();
num2 = 0;
--seatDownOffset.Y;
break;
}
playerSittingPosition = new Point(x1, num1 + 1).ToWorldCoordinates(autoAddY: 16f);
playerSittingPosition.X += (float) (targetDirection * num2);
playerSittingPosition += zero1;
return true;
}
}
}