public static void ResetPlayer(int player) { foreach (Point location in PressurePlateHelper.PressurePlatesPressed.Keys.ToArray <Point>()) { PressurePlateHelper.MoveAwayFrom(location, player); } }
private static void MoveAwayFrom(Point location, int player) { bool[] flagArray; if (!PressurePlateHelper.PressurePlatesPressed.TryGetValue(location, out flagArray)) { return; } flagArray[player] = false; bool flag = false; for (int index = 0; index < flagArray.Length; ++index) { if (flagArray[index]) { flag = true; break; } } if (flag) { return; } PressurePlateHelper.PressurePlatesPressed.Remove(location); PressurePlateHelper.PokeLocation(location); }
public static void DestroyPlate(Point location) { bool[] array; if (PressurePlateHelper.PressurePlatesPressed.TryGetValue(location, out array)) { PressurePlateHelper.PressurePlatesPressed.Remove(location); PressurePlateHelper.PokeLocation(location); } }
private static void UpdatePlatePosition(Point location, int player, bool onIt) { if (onIt) { PressurePlateHelper.MoveInto(location, player); return; } PressurePlateHelper.MoveAwayFrom(location, player); }
public static void DestroyPlate(Point location) { bool[] flagArray; if (!PressurePlateHelper.PressurePlatesPressed.TryGetValue(location, out flagArray)) { return; } PressurePlateHelper.PressurePlatesPressed.Remove(location); PressurePlateHelper.PokeLocation(location); }
private static void MoveInto(Point location, int player) { bool[] array; if (PressurePlateHelper.PressurePlatesPressed.TryGetValue(location, out array)) { array[player] = true; return; } PressurePlateHelper.PressurePlatesPressed[location] = new bool[255]; PressurePlateHelper.PressurePlatesPressed[location][player] = true; PressurePlateHelper.PokeLocation(location); }
public static void Update() { if (!PressurePlateHelper.NeedsFirstUpdate) { return; } foreach (Point key in PressurePlateHelper.PressurePlatesPressed.Keys) { PressurePlateHelper.PokeLocation(key); } PressurePlateHelper.PressurePlatesPressed.Clear(); PressurePlateHelper.NeedsFirstUpdate = false; }
public static void UpdatePlayerPosition(Player player) { Point p; // ISSUE: explicit reference operation ((Point)@p).\u002Ector(1, 1); Vector2 vector2 = p.ToVector2(); List <Point> tilesIn1 = Collision.GetTilesIn(Vector2.op_Addition(PressurePlateHelper.PlayerLastPosition[player.whoAmI], vector2), Vector2.op_Subtraction(Vector2.op_Addition(PressurePlateHelper.PlayerLastPosition[player.whoAmI], player.Size), Vector2.op_Multiply(vector2, 2f))); List <Point> tilesIn2 = Collision.GetTilesIn(Vector2.op_Addition(player.TopLeft, vector2), Vector2.op_Subtraction(player.BottomRight, Vector2.op_Multiply(vector2, 2f))); Rectangle hitbox1 = player.Hitbox; Rectangle hitbox2 = player.Hitbox; // ISSUE: explicit reference operation ((Rectangle)@hitbox1).Inflate((int)-p.X, (int)-p.Y); // ISSUE: explicit reference operation ((Rectangle)@hitbox2).Inflate((int)-p.X, (int)-p.Y); hitbox2.X = (__Null)(int)PressurePlateHelper.PlayerLastPosition[player.whoAmI].X; hitbox2.Y = (__Null)(int)PressurePlateHelper.PlayerLastPosition[player.whoAmI].Y; for (int index = 0; index < tilesIn1.Count; ++index) { Point location = tilesIn1[index]; Tile tile = Main.tile[(int)location.X, (int)location.Y]; if (tile.active() && (int)tile.type == 428) { PressurePlateHelper.pressurePlateBounds.X = (__Null)(location.X * 16); PressurePlateHelper.pressurePlateBounds.Y = (__Null)(location.Y * 16 + 16 - PressurePlateHelper.pressurePlateBounds.Height); // ISSUE: explicit reference operation if (!((Rectangle)@hitbox1).Intersects(PressurePlateHelper.pressurePlateBounds) && !tilesIn2.Contains(location)) { PressurePlateHelper.MoveAwayFrom(location, player.whoAmI); } } } for (int index = 0; index < tilesIn2.Count; ++index) { Point location = tilesIn2[index]; Tile tile = Main.tile[(int)location.X, (int)location.Y]; if (tile.active() && (int)tile.type == 428) { PressurePlateHelper.pressurePlateBounds.X = (__Null)(location.X * 16); PressurePlateHelper.pressurePlateBounds.Y = (__Null)(location.Y * 16 + 16 - PressurePlateHelper.pressurePlateBounds.Height); // ISSUE: explicit reference operation // ISSUE: explicit reference operation if (((Rectangle)@hitbox1).Intersects(PressurePlateHelper.pressurePlateBounds) && (!tilesIn1.Contains(location) || !((Rectangle)@hitbox2).Intersects(PressurePlateHelper.pressurePlateBounds))) { PressurePlateHelper.MoveInto(location, player.whoAmI); } } } PressurePlateHelper.PlayerLastPosition[player.whoAmI] = player.position; }
private static void MoveInto(Point location, int player) { bool[] flagArray; if (PressurePlateHelper.PressurePlatesPressed.TryGetValue(location, out flagArray)) { flagArray[player] = true; } else { PressurePlateHelper.PressurePlatesPressed[location] = new bool[(int)byte.MaxValue]; PressurePlateHelper.PressurePlatesPressed[location][player] = true; PressurePlateHelper.PokeLocation(location); } }
public static void UpdatePlayerPosition(Player player) { var p = new Point(1, 1); var vector2 = p.ToVector2(); var tilesIn1 = Collision.GetTilesIn(PressurePlateHelper.PlayerLastPosition[player.whoAmI] + vector2, PressurePlateHelper.PlayerLastPosition[player.whoAmI] + player.Size - vector2 * 2f); var tilesIn2 = Collision.GetTilesIn(player.TopLeft + vector2, player.BottomRight - vector2 * 2f); var hitbox1 = player.Hitbox; var hitbox2 = player.Hitbox; hitbox1.Inflate(-p.X, -p.Y); hitbox2.Inflate(-p.X, -p.Y); hitbox2.X = (int)PressurePlateHelper.PlayerLastPosition[player.whoAmI].X; hitbox2.Y = (int)PressurePlateHelper.PlayerLastPosition[player.whoAmI].Y; for (var index = 0; index < tilesIn1.Count; ++index) { var location = tilesIn1[index]; var tile = Main.tile[location.X, location.Y]; if (tile.active() && tile.type == (ushort)428) { PressurePlateHelper.pressurePlateBounds.X = location.X * 16; PressurePlateHelper.pressurePlateBounds.Y = location.Y * 16 + 16 - PressurePlateHelper.pressurePlateBounds.Height; if (!hitbox1.Intersects(PressurePlateHelper.pressurePlateBounds) && !tilesIn2.Contains(location)) { PressurePlateHelper.MoveAwayFrom(location, player.whoAmI); } } } for (var index = 0; index < tilesIn2.Count; ++index) { var location = tilesIn2[index]; var tile = Main.tile[location.X, location.Y]; if (tile.active() && tile.type == (ushort)428) { PressurePlateHelper.pressurePlateBounds.X = location.X * 16; PressurePlateHelper.pressurePlateBounds.Y = location.Y * 16 + 16 - PressurePlateHelper.pressurePlateBounds.Height; if (hitbox1.Intersects(PressurePlateHelper.pressurePlateBounds) && (!tilesIn1.Contains(location) || !hitbox2.Intersects(PressurePlateHelper.pressurePlateBounds))) { PressurePlateHelper.MoveInto(location, player.whoAmI); } } } PressurePlateHelper.PlayerLastPosition[player.whoAmI] = player.position; }
public static void Update() { if (!PressurePlateHelper.NeedsFirstUpdate) { return; } using (Dictionary <Point, bool[]> .KeyCollection.Enumerator enumerator = PressurePlateHelper.PressurePlatesPressed.Keys.GetEnumerator()) { while (enumerator.MoveNext()) { PressurePlateHelper.PokeLocation(enumerator.Current); } } PressurePlateHelper.PressurePlatesPressed.Clear(); PressurePlateHelper.NeedsFirstUpdate = false; }
public static void UpdatePlayerPosition(Player player) { Point p = new Point(1, 1); Vector2 vector = p.ToVector2(); List <Point> tilesIn = Collision.GetTilesIn(PressurePlateHelper.PlayerLastPosition[player.whoAmI] + vector, PressurePlateHelper.PlayerLastPosition[player.whoAmI] + player.Size - vector * 2f); List <Point> tilesIn2 = Collision.GetTilesIn(player.TopLeft + vector, player.BottomRight - vector * 2f); Rectangle hitbox = player.Hitbox; Rectangle hitbox2 = player.Hitbox; hitbox.Inflate(-p.X, -p.Y); hitbox2.Inflate(-p.X, -p.Y); hitbox2.X = (int)PressurePlateHelper.PlayerLastPosition[player.whoAmI].X; hitbox2.Y = (int)PressurePlateHelper.PlayerLastPosition[player.whoAmI].Y; for (int i = 0; i < tilesIn.Count; i++) { Point point = tilesIn[i]; Tile tile = Main.tile[point.X, point.Y]; if (tile.active() && tile.type == 428) { PressurePlateHelper.pressurePlateBounds.X = point.X * 16; PressurePlateHelper.pressurePlateBounds.Y = point.Y * 16 + 16 - PressurePlateHelper.pressurePlateBounds.Height; if (!hitbox.Intersects(PressurePlateHelper.pressurePlateBounds) && !tilesIn2.Contains(point)) { PressurePlateHelper.MoveAwayFrom(point, player.whoAmI); } } } for (int j = 0; j < tilesIn2.Count; j++) { Point point2 = tilesIn2[j]; Tile tile2 = Main.tile[point2.X, point2.Y]; if (tile2.active() && tile2.type == 428) { PressurePlateHelper.pressurePlateBounds.X = point2.X * 16; PressurePlateHelper.pressurePlateBounds.Y = point2.Y * 16 + 16 - PressurePlateHelper.pressurePlateBounds.Height; if (hitbox.Intersects(PressurePlateHelper.pressurePlateBounds) && (!tilesIn.Contains(point2) || !hitbox2.Intersects(PressurePlateHelper.pressurePlateBounds))) { PressurePlateHelper.MoveInto(point2, player.whoAmI); } } } PressurePlateHelper.PlayerLastPosition[player.whoAmI] = player.position; }
private static void MoveAwayFrom(Point location, int player) { bool[] array; if (PressurePlateHelper.PressurePlatesPressed.TryGetValue(location, out array)) { array[player] = false; bool flag = false; for (int i = 0; i < array.Length; i++) { if (array[i]) { flag = true; break; } } if (!flag) { PressurePlateHelper.PressurePlatesPressed.Remove(location); PressurePlateHelper.PokeLocation(location); } } }