Пример #1
0
        public override bool RunImpact(RoomScene room, GameObject actor, short gridX, short gridY, DirCardinal dir)
        {
            if (!ToggleBlock.TogCollides(room, this.toggleBR, this.isOn))
            {
                return(false);
            }

            // Actor must cross the DOWN threshold for this ledge; otherwise, it shouldn't compute any collision.
            if (!actor.physics.CrossedThresholdDown(gridY * (byte)TilemapEnum.TileHeight))
            {
                return(false);
            }

            if (actor is Projectile)
            {
                if (!CollideTileFacing.RunImpactTest(dir, DirCardinal.Up))
                {
                    return(false);
                }
                return(TileProjectileImpact.RunImpact((Projectile)actor, gridX, gridY, dir));
            }

            bool collided = CollideTileFacing.RunImpact(actor, gridX, gridY, dir, DirCardinal.Up);

            // Additional Character Collisions (such as Wall Jumps)
            if (collided && actor is Character)
            {
                TileCharBasicImpact.RunWallImpact((Character)actor, dir);
            }

            return(collided);
        }
Пример #2
0
        public override bool RunImpact(RoomScene room, GameObject actor, short gridX, short gridY, DirCardinal dir)
        {
            if (!ToggleBlock.TogCollides(room, this.toggleBR, this.isOn))
            {
                return(false);
            }

            // Actor must cross the UP threshold for this ledge; otherwise, it shouldn't compute any collision.
            if (!actor.physics.CrossedThresholdUp(gridY * (byte)TilemapEnum.TileHeight + (byte)TilemapEnum.TileHeight))
            {
                return(false);
            }

            if (actor is Projectile)
            {
                if (!CollideTileFacing.RunImpactTest(dir, DirCardinal.Down))
                {
                    return(false);
                }
                return(TileProjectileImpact.RunImpact((Projectile)actor, gridX, gridY, dir));
            }

            // Allow Dropdown Mechanic
            if (actor is Character)
            {
                Character character = (Character)actor;
                character.physics.touch.onMover = true;
                if (character.status.action is DropdownAction)
                {
                    return(false);
                }
            }

            return(CollideTileFacing.RunImpact(actor, gridX, gridY, dir, DirCardinal.Down));
        }
Пример #3
0
        public override bool RunImpact(RoomScene room, GameObject actor, short gridX, short gridY, DirCardinal dir)
        {
            if (this.isToggleBox || ToggleBlock.TogCollides(room, this.toggleBR, this.isOn))
            {
                if (actor is Projectile)
                {
                    if (actor is ShurikenProjectile && this.isToggleBox)
                    {
                        room.colors.ToggleColor(this.toggleBR);
                    }
                    return(TileProjectileImpact.RunImpact((Projectile)actor, gridX, gridY, dir));
                }

                TileSolidImpact.RunImpact(actor, gridX, gridY, dir);

                // If a ToggleBox was hit from below:
                if (this.isToggleBox && dir == DirCardinal.Up)
                {
                    room.colors.ToggleColor(this.toggleBR);
                }

                // Additional Character Collisions (such as Wall Jumps)
                if (actor is Character)
                {
                    TileCharBasicImpact.RunWallImpact((Character)actor, dir);
                }

                return(true);
            }

            return(false);
        }
Пример #4
0
 public static bool TogCollides(RoomScene room, bool toggleBR, bool isOn)
 {
     if (ToggleBlock.Toggled(room, toggleBR))
     {
         return(isOn);
     }
     return(!isOn);
 }
Пример #5
0
        public override void Draw(RoomScene room, byte subType, int posX, int posY)
        {
            bool toggled = ToggleBlock.Toggled(room, this.toggleBR);

            if (toggled == isOn)
            {
                this.atlas.DrawFaceDown((ToggleBlock.Toggled(room, this.toggleBR) ? "ToggleOn" : "ToggleOff") + this.Texture, posX, posY);
            }
            else
            {
                this.atlas.DrawFaceDown((ToggleBlock.Toggled(room, this.toggleBR) ? "ToggleOn" : "ToggleOff") + this.Texture, posX - 2, posY - 2);
            }
        }
Пример #6
0
 public override void Draw(RoomScene room, byte subType, int posX, int posY)
 {
     this.atlas.Draw((ToggleBlock.Toggled(room, this.toggleBR) ? "ToggleOn" : "ToggleOff") + this.Texture, posX, posY);
 }
Пример #7
0
 public override void Draw(RoomScene room, byte subType, int posX, int posY)
 {
     this.atlas.Draw(this.Texture + (ToggleBlock.Toggled(room, this.toggleBR) ? "" : "Off") + (this.isDown ? "Down" : ""), posX, posY);
 }
Пример #8
0
 public override void Draw(RoomScene room, byte subType, int posX, int posY)
 {
     // If Global Toggle is ON for Blue/Red, draw accordingly:
     this.atlas.Draw((ToggleBlock.Toggled(room, this.toggleBR) ? "ToggleOn" : "ToggleOff") + this.Texture, posX, posY);
 }