protected override PhysicsObject CreateProjectile() { RRProjectile playerLaser = new RRProjectile(20, 3, 0.1, new Color(255, 55, 128, 128)); playerLaser.Damage = 8; playerLaser.Tag = "Z"; playerLaser.CollisionIgnoreGroup = 2; playerLaser.explosionUponDestruction = false; playerLaser.CanRotate = false; this.Power.Value = RampageRebellion.PLAYER_WEAPONPOWER; return playerLaser; }
public RRProjectile projectile() { RRProjectile proj; if (imageMode) { if (rectMode) { proj = new RRProjectile(pWidth, pHeight, pMass, pImageName); } else proj = new RRProjectile(pRadius, pMass, pImageName); } else { if (rectMode) { proj = new RRProjectile(pWidth, pHeight, pMass, pColor); } else proj = new RRProjectile(pRadius, pMass, pColor); } proj.Angle = slateAtAngle; proj.Damage = damageCaused; proj.CollisionIgnoreGroup = defaultCollisionIgnoreGroup; proj.IgnoresCollisionResponse = ignoresCollisionResponse; proj.Tag = defaultTag; proj.explosionUponDestruction = this.explosionUponDestruction; proj.explosionRadius = explosionRadius; proj.CanRotate = this.canRotate; proj.customDestroy = this.customDestructor; shotSound.Play(); if (projectileShape != null) proj.Shape = projectileShape; return proj; }
public void BombExplosion(PhysicsObject bomb) { SoundEffect BombExplosion = LoadSoundEffect("Bomb"); BombExplosion.Play(); RRProjectile bombExplosion = new RRProjectile(5.0, 999999999999, "explosion"); bombExplosion.Position = bomb.Position; bombExplosion.Damage = 150; bombExplosion.Tag = "BX"; bombExplosion.IgnoresCollisionResponse = true; bombExplosion.IgnoresGravity = true; AddCollisionHandler<RRProjectile, RREnemy>(bombExplosion, playerCollisionHandler); Add(bombExplosion); RRProjectile bombShockwave = new RRProjectile(5.0, 999999999999, new Color(212, 0, 52, 30)); bombShockwave.Position = bomb.Position; bombShockwave.Damage = 0.1; bombShockwave.Tag = "BS"; bombShockwave.IgnoresCollisionResponse = true; bombShockwave.IgnoresGravity = true; AddCollisionHandler<RRProjectile, RREnemy>(bombShockwave, playerCollisionHandler); Add(bombShockwave); Timer growExplosion = new Timer(); growExplosion.Interval = 0.02; growExplosion.Start(); growExplosion.Timeout += delegate { if (bombExplosion.Width >= 2500 & bombExplosion.Height >= 2500) { growExplosion.Reset(); bombExplosion.Destroy(); bombShockwave.Destroy(); } else { bombExplosion.Width = bombExplosion.Width * 1.05; bombExplosion.Height = bombExplosion.Height * 1.05; bombShockwave.Width = bombShockwave.Width * 2.5; bombShockwave.Height = bombShockwave.Height * 2.5; } }; }