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

◆ FindPulley()

void Terraria.Player.FindPulley ( )
inline

Definition at line 19045 of file Player.cs.

19046 {
19048 {
19049 return;
19050 }
19051 int num = (int)(position.X + (float)(width / 2)) / 16;
19052 int num2 = (int)(position.Y - 8f) / 16;
19053 if (!WorldGen.IsRope(num, num2))
19054 {
19055 return;
19056 }
19057 float num3 = position.Y;
19058 if (Main.tile[num, num2 - 1] == null)
19059 {
19060 Main.tile[num, num2 - 1] = new Tile();
19061 }
19062 if (Main.tile[num, num2 + 1] == null)
19063 {
19064 Main.tile[num, num2 + 1] = new Tile();
19065 }
19066 if ((!Main.tile[num, num2 - 1].active() || !Main.tileRope[Main.tile[num, num2 - 1].type]) && (!Main.tile[num, num2 + 1].active() || !Main.tileRope[Main.tile[num, num2 + 1].type]))
19067 {
19068 num3 = num2 * 16 + 22;
19069 }
19070 float num4 = num * 16 + 8 - width / 2 + 6 * direction;
19071 int num5 = num * 16 + 8 - width / 2 + 6;
19072 int num6 = num * 16 + 8 - width / 2;
19073 int num7 = num * 16 + 8 - width / 2 + -6;
19074 int num8 = 1;
19075 float num9 = Math.Abs(position.X - (float)num5);
19076 if (Math.Abs(position.X - (float)num6) < num9)
19077 {
19078 num8 = 2;
19079 num9 = Math.Abs(position.X - (float)num6);
19080 }
19081 if (Math.Abs(position.X - (float)num7) < num9)
19082 {
19083 num8 = 3;
19084 num9 = Math.Abs(position.X - (float)num7);
19085 }
19086 if (num8 == 1)
19087 {
19088 num4 = num5;
19089 pulleyDir = 2;
19090 direction = 1;
19091 }
19092 if (num8 == 2)
19093 {
19094 num4 = num6;
19095 pulleyDir = 1;
19096 }
19097 if (num8 == 3)
19098 {
19099 num4 = num7;
19100 pulleyDir = 2;
19101 direction = -1;
19102 }
19103 if (!Collision.SolidCollision(new Vector2(num4, position.Y), width, height))
19104 {
19105 if (whoAmI == Main.myPlayer)
19106 {
19107 Main.cameraX = Main.cameraX + position.X - num4;
19108 }
19109 pulley = true;
19110 position.X = num4;
19111 gfxOffY = position.Y - num3;
19112 stepSpeed = 2.5f;
19113 position.Y = num3;
19114 velocity.X = 0f;
19115 return;
19116 }
19117 num4 = num5;
19118 pulleyDir = 2;
19119 direction = 1;
19120 if (!Collision.SolidCollision(new Vector2(num4, position.Y), width, height))
19121 {
19122 if (whoAmI == Main.myPlayer)
19123 {
19124 Main.cameraX = Main.cameraX + position.X - num4;
19125 }
19126 pulley = true;
19127 position.X = num4;
19128 gfxOffY = position.Y - num3;
19129 stepSpeed = 2.5f;
19130 position.Y = num3;
19131 velocity.X = 0f;
19132 return;
19133 }
19134 num4 = num7;
19135 pulleyDir = 2;
19136 direction = -1;
19137 if (!Collision.SolidCollision(new Vector2(num4, position.Y), width, height))
19138 {
19139 if (whoAmI == Main.myPlayer)
19140 {
19141 Main.cameraX = Main.cameraX + position.X - num4;
19142 }
19143 pulley = true;
19144 position.X = num4;
19145 gfxOffY = position.Y - num3;
19146 stepSpeed = 2.5f;
19147 position.Y = num3;
19148 velocity.X = 0f;
19149 }
19150 }
static double Abs(double value)
Vector2 position
Definition Entity.cs:14
float stepSpeed
Definition Player.cs:1303
PortableStoolUsage portableStoolInfo
Definition Player.cs:1071

References System.Math.Abs(), Terraria.DataStructures.PortableStoolUsage.IsInUse, Terraria.WorldGen.IsRope(), Terraria.Main.myPlayer, Terraria.Collision.SolidCollision(), Terraria.DataStructures.Tile, Terraria.Main.tile, and Terraria.Main.tileRope.