示例#1
0
 public override void Intercept()
 {
     // Create cling effect.
     Effect effect = new EffectCling(true);
     RoomControl.SpawnEntity(effect, position, zPosition);
     DestroyAndTransform(effect);
 }
        private void StabTile(Tile tile)
        {
            if (player.IsOnGround) {
                tile.OnSwordHit(weapon);

                // Create cling effect.
                if (!tile.IsDestroyed && tile.ClingWhenStabbed) {
                    Effect clingEffect = new EffectCling(true);
                    Vector2F pos = player.Center + (13 * Directions.ToVector(direction));
                    player.RoomControl.SpawnEntity(clingEffect, pos);
                    AudioSystem.PlaySound(GameData.SOUND_EFFECT_CLING);
                }
            }

            // Begin the player stab state.
            player.SwordStabState.Weapon = weapon;
            player.SwordStabState.ContinueHoldingSword = true;
            player.BeginState(player.SwordStabState);
        }
            // Bump the monster and sender.
            public static void ParryWithClingEffect(Monster monster, Entity sender, EventArgs args)
            {
                monster.Bump(sender.Center);
                Unit unitSender = sender as Unit;

                if (unitSender != null && !unitSender.IsBeingKnockedBack && !monster.IsBeingKnockedBack) {
                    unitSender.Bump(monster.Center);
                    AudioSystem.PlaySound(GameData.SOUND_EFFECT_CLING);

                    Effect effect = new EffectCling();
                    Vector2F effectPos = (monster.Center + sender.Center) * 0.5f;
                    if (args is InteractionArgs)
                        effectPos = (args as InteractionArgs).ContactPoint;
                    monster.RoomControl.SpawnEntity(effect, effectPos);
                }
            }
        public override void OnCollideTile(Tile tile, bool isInitialCollision)
        {
            if (!isReturning && !isHooked && !isLifting) {
                if (tile.IsSwitchable) {
                    // TODO: Switch with tile.

                    hookedObject	= tile;
                    isHooked		= true;
                    timer			= 0;
                    graphics.PlayAnimation();
                }
                else {
                    BeginReturn(false);
                }

                // Create cling effect.
                Effect effect = new EffectCling();
                RoomControl.SpawnEntity(effect, position + Directions.ToVector(direction) * 5.0f, zPosition);
                AudioSystem.PlaySound(GameData.SOUND_EFFECT_CLING);
            }
        }
            // Stun the monster.
            public static void ClingEffect(Monster monster, Entity sender, EventArgs args)
            {
                Effect effect = new EffectCling();

                Vector2F effectPos = (monster.Center + sender.Center) * 0.5f;
                if (args is InteractionArgs)
                    effectPos = (args as InteractionArgs).ContactPoint;

                monster.RoomControl.SpawnEntity(effect, effectPos);
                AudioSystem.PlaySound(GameData.SOUND_EFFECT_CLING);
            }