Exemple #1
0
        public List <int> GetPossibleChestsToTrapify(StructureMap structures)
        {
            List <int> intList = new List <int>();

            bool[] validTiles = new bool[TileID.Sets.GeneralPlacementTiles.Length];
            for (int index = 0; index < validTiles.Length; ++index)
            {
                validTiles[index] = TileID.Sets.GeneralPlacementTiles[index];
            }
            validTiles[21]  = true;
            validTiles[467] = true;
            for (int index = 0; index < 8000; ++index)
            {
                Chest chest = Main.chest[index];
                if (chest != null)
                {
                    Point position1 = new Point(chest.x, chest.y);
                    if (DeadMansChestBiome.IsAGoodSpot(position1))
                    {
                        this.ClearCaches();
                        Point position2 = new Point(position1.X, position1.Y + 1);
                        this.FindBoulderTrapSpots(position2);
                        this.FindDartTrapSpots(position2);
                        if (this.AreThereEnoughTraps() && (structures == null || structures.CanPlace(new Microsoft.Xna.Framework.Rectangle(position1.X, position1.Y, 1, 1), validTiles, 10)))
                        {
                            intList.Add(index);
                        }
                    }
                }
            }
            return(intList);
        }
Exemple #2
0
        public override bool Place(Point origin, StructureMap structures)
        {
            if (!DeadMansChestBiome.IsAGoodSpot(origin))
            {
                return(false);
            }
            this.ClearCaches();
            Point position = new Point(origin.X, origin.Y + 1);

            this.FindBoulderTrapSpots(position);
            this.FindDartTrapSpots(position);
            this.FindExplosiveTrapSpots(position);
            if (!this.AreThereEnoughTraps())
            {
                return(false);
            }
            this.TurnGoldChestIntoDeadMansChest(origin);
            foreach (DeadMansChestBiome.DartTrapPlacementAttempt trapPlacementSpot in this._dartTrapPlacementSpots)
            {
                this.ActuallyPlaceDartTrap(trapPlacementSpot.position, trapPlacementSpot.directionX, trapPlacementSpot.x, trapPlacementSpot.y, trapPlacementSpot.xPush, trapPlacementSpot.t);
            }
            foreach (DeadMansChestBiome.WirePlacementAttempt wirePlacementSpot in this._wirePlacementSpots)
            {
                this.PlaceWireLine(wirePlacementSpot.position, wirePlacementSpot.dirX, wirePlacementSpot.dirY, wirePlacementSpot.steps);
            }
            foreach (DeadMansChestBiome.BoulderPlacementAttempt boulderPlacementSpot in this._boulderPlacementSpots)
            {
                this.ActuallyPlaceBoulderTrap(boulderPlacementSpot.position, boulderPlacementSpot.yPush, boulderPlacementSpot.requiredHeight, boulderPlacementSpot.bestType);
            }
            foreach (DeadMansChestBiome.ExplosivePlacementAttempt placementAttempt in this._explosivePlacementAttempt)
            {
                this.ActuallyPlaceExplosive(placementAttempt.position);
            }
            this.PlaceWiresForExplosives(origin);
            return(true);
        }