public override void Touch(LevelObject obj) { if (mBroken) { return; } Character character = obj as Character; if (character == null) { return; } if (character.VelocityY < 0) { if (character.DisplacementY - 16 < DisplacementY) { return; } character.VelocityY = -character.VelocityY; VelocityY = -384; if (mRoutineSecondary != 0) { return; } mRoutineSecondary = 4; } else { // if sidekick, return if (character.Anim != CharacterAnimation.Roll) { return; } character.VelocityY = -character.VelocityY; if (mRoutine != 4) { mRoutine = 4; mBraker = character; } } }
public void Restart() { mObjects = new LevelObjectManager(); mSounds.Clear(); mPlayerBoundary = new Microsoft.Xna.Framework.Rectangle(16, 0, 11264 - 16, 1024); mVisibleBoundary = new Microsoft.Xna.Framework.Rectangle(0, 0, 10976, 1024); mObjects.Clear(); foreach (LevelObjectDefinition def in mObjectDefinitions) { LevelObject obj = LevelObject.Create(mGame, this, def); if (obj != null) { mObjects.Add(obj); } } }
public override void Interact(LevelObject obj) { Character character = obj as Character; if (character == null) { return; } // Check if in the air if ((character.Status & CharacterState.Airborne) == 0) { // Check if still on object int d0 = character.DisplacementX - DisplacementX + character.RadiusX + RadiusX; if (d0 >= 0 && d0 < (character.RadiusX + RadiusX) * 2) { UpdateCharacter(character); return; } } UnlandCharacter(character); }
public virtual void Interact(LevelObject obj) { }
public virtual void Touch(LevelObject obj) { }
public override void Touch(LevelObject obj) { Character character = obj as Character; if (character == null) { return; } // Is character is not invincible if ((character.StatusSecondary & 2) == 0) { if (character.Anim != CharacterAnimation.Spindash) { if (character.Anim != CharacterAnimation.Roll) { character.Hurt(this); return; } } } int[] ChainPoints = new int[] { 100, 200, 500, 1000 }; int points = ChainPoints[Math.Min(character.Player.ChainBonusCounter, 3)]; if (character.Player.ChainBonusCounter >= 16) { points = 10000; } character.Player.AddPoints(points); character.Player.ChainBonusCounter++; // Add animal Animal animalObject = new Animal(Game, Level); animalObject.DisplacementX = DisplacementX; animalObject.DisplacementY = DisplacementY; Level.Objects.Add(animalObject); // Add explosion object Explosion explosionObject = new Explosion(Game, Level); explosionObject.DisplacementX = DisplacementX; explosionObject.DisplacementY = DisplacementY; Level.Objects.Add(explosionObject); // This object is now finished Finished = true; // Character hit enemy from below if (character.VelocityY < 0) { character.VelocityY += 256; return; } // Character is below enemy but falling down if (character.DisplacementY >= DisplacementY) { character.VelocityY -= 256; return; } // Rebound the character 1 : 1 character.VelocityY = -character.VelocityY; }