Example #1
0
            public bool TryOpenDoor(
                DoorOpeningHelper.DoorOpenCloseTogglingInfo doorInfo,
                DoorOpeningHelper.PlayerInfoForOpeningDoors playerInfo)
            {
                Point     coordsForToggling = doorInfo.tileCoordsForToggling;
                Rectangle rectangle         = new Rectangle(doorInfo.tileCoordsForToggling.X * 16, doorInfo.tileCoordsForToggling.Y * 16, 16, 80);

                switch (playerInfo.playerGravityDirection)
                {
                case -1:
                    rectangle.Y      -= 16;
                    rectangle.Height += 16;
                    break;

                case 1:
                    rectangle.Height += 16;
                    break;
                }
                if (!rectangle.Intersects(playerInfo.hitboxToOpenDoor) || playerInfo.hitboxToOpenDoor.Top < rectangle.Top || playerInfo.hitboxToOpenDoor.Bottom > rectangle.Bottom)
                {
                    return(false);
                }
                bool closing = false;

                if (!WorldGen.ShiftTallGate(coordsForToggling.X, coordsForToggling.Y, closing, false))
                {
                    return(false);
                }
                NetMessage.SendData(19, -1, -1, (NetworkText)null, 4 + closing.ToInt(), (float)coordsForToggling.X, (float)coordsForToggling.Y, 0.0f, 0, 0, 0);
                return(true);
            }
Example #2
0
 private void TryAutoOpeningDoor(
     Point tileCoords,
     DoorOpeningHelper.PlayerInfoForOpeningDoors playerInfo)
 {
     DoorOpeningHelper.DoorAutoHandler infoProvider;
     if (!this.TryGetHandler(tileCoords, out infoProvider))
     {
         return;
     }
     DoorOpeningHelper.DoorOpenCloseTogglingInfo info = infoProvider.ProvideInfo(tileCoords);
     if (!infoProvider.TryOpenDoor(info, playerInfo))
     {
         return;
     }
     this._ongoingOpenDoors.Add(info);
 }
Example #3
0
        public void LookForDoorsToOpen(Player player)
        {
            DoorOpeningHelper.PlayerInfoForOpeningDoors infoForOpeningDoor = this.GetPlayerInfoForOpeningDoor(player);
            if (infoForOpeningDoor.intendedOpeningDirection == 0 && (double)player.velocity.X == 0.0)
            {
                return;
            }
            Point tileCoords = new Point();

            for (int left = infoForOpeningDoor.tileCoordSpaceForCheckingForDoors.Left; left <= infoForOpeningDoor.tileCoordSpaceForCheckingForDoors.Right; ++left)
            {
                for (int top = infoForOpeningDoor.tileCoordSpaceForCheckingForDoors.Top; top <= infoForOpeningDoor.tileCoordSpaceForCheckingForDoors.Bottom; ++top)
                {
                    tileCoords.X = left;
                    tileCoords.Y = top;
                    this.TryAutoOpeningDoor(tileCoords, infoForOpeningDoor);
                }
            }
        }
Example #4
0
            public bool TryOpenDoor(
                DoorOpeningHelper.DoorOpenCloseTogglingInfo doorInfo,
                DoorOpeningHelper.PlayerInfoForOpeningDoors playerInfo)
            {
                Point     coordsForToggling = doorInfo.tileCoordsForToggling;
                int       openingDirection  = playerInfo.intendedOpeningDirection;
                Rectangle rectangle         = new Rectangle(doorInfo.tileCoordsForToggling.X * 16, doorInfo.tileCoordsForToggling.Y * 16, 16, 48);

                switch (playerInfo.playerGravityDirection)
                {
                case -1:
                    rectangle.Y      -= 16;
                    rectangle.Height += 16;
                    break;

                case 1:
                    rectangle.Height += 16;
                    break;
                }
                if (!rectangle.Intersects(playerInfo.hitboxToOpenDoor) || playerInfo.hitboxToOpenDoor.Top < rectangle.Top || playerInfo.hitboxToOpenDoor.Bottom > rectangle.Bottom)
                {
                    return(false);
                }
                WorldGen.OpenDoor(coordsForToggling.X, coordsForToggling.Y, openingDirection);
                if (Main.tile[coordsForToggling.X, coordsForToggling.Y].type != (ushort)10)
                {
                    NetMessage.SendData(19, -1, -1, (NetworkText)null, 0, (float)coordsForToggling.X, (float)coordsForToggling.Y, (float)openingDirection, 0, 0, 0);
                    return(true);
                }
                WorldGen.OpenDoor(coordsForToggling.X, coordsForToggling.Y, -openingDirection);
                if (Main.tile[coordsForToggling.X, coordsForToggling.Y].type == (ushort)10)
                {
                    return(false);
                }
                NetMessage.SendData(19, -1, -1, (NetworkText)null, 0, (float)coordsForToggling.X, (float)coordsForToggling.Y, (float)-openingDirection, 0, 0, 0);
                return(true);
            }