public RRWeaponArsenal(RRWeapon bw) : base(1, 1) { addNewWeapon(bw); setWeapon(0); //Power = new DoubleMeter(1); }
public void resetAndAddNew(RRWeapon rrw) { lock (lockObject) { for (int i = 0; i < weapons.Count; i++) deleteWeapon(i); weapons.Add(rrw); this.Add(rrw); rrw.IsVisible = false; rrw.ProjectileCollision = weaponCollisionBucket; _currentWeaponIndex = 0; } }
/// <summary> /// Creates a new RREnemy /// </summary> /// <param name="x">XPosition</param> /// <param name="y">YPosition</param> /// <param name="gameObject">Game object</param> /// <param name="shootingInterval">How often this object shall shoot?</param> /// <param name="onColl">Collision handler</param> public RREnemy(double x, double y, PhysicsGame gameObject, double shootingInterval, Action<PhysicsObject, PhysicsObject> onColl) : this(x, y) { thisGame = gameObject; this.shootingInterval = shootingInterval; this.onCollision = onColl; weapon = new RRWeapon(20, 20, true, 50.0, 10.0); weapon.randomizedAngleSlate = 10; this.Add(weapon); createShooterDelegates(); RampageRebellion.getGame().AddCollisionHandler<RREnemy, PhysicsObject>(this, collisionOnBorders); SoundEffect EnemyShot = Jypeli.Game.LoadSoundEffect("BlankSound"); weapon.projectileGenerator.ignoresCollisionResponse = true; weapon.projectileGenerator.shotSound = EnemyShot; weapon.ProjectileCollision = projectileCollisionHandler; }
public void addNewWeapon(RRWeapon r) { lock (lockObject) { weapons.Add(r); this.Add(r); r.IsVisible = false; r.ProjectileCollision = weaponCollisionBucket; } }
/// <summary> /// Generates weapons for the player's use /// </summary> /// <param name="ship">Player ship</param> private void GeneratePlayerWeapons(RRShip ship) { SoundEffect WeaponFire = LoadSoundEffect("Shot"); SoundEffect WeaponFireLarge = LoadSoundEffect("LargeShot"); // Primary Weapon (Plasma Cannon): all-purpose //Upgrade levels. Same for each weapon for now double pwSizeMultiplier = ((pwArsenalUpgrades[0] >= 1) ? (2) : (1)); double pwFireBonusMultiplier = 1 + (2 * ((pwArsenalUpgrades[0] >= 3) ? (1) : (0))); double pwDamageBonusMultiplier = 1 + (1.5 * ((pwArsenalUpgrades[0] >= 2) ? (1) : (0))); primaryWeapon = new RRWeapon(5, 10, true, PLAYER_WEAPONPOWER, PLAYER_FIRERATE * pwFireBonusMultiplier, new RRProjectileGenerator(14 * pwSizeMultiplier, 14 * pwSizeMultiplier, 0.1, new Color(55, 255, 128, 128), 10 * pwDamageBonusMultiplier)); primaryWeapon.Position += new Vector(0, 30); primaryWeapon.projectileGenerator.projectileShape = Shape.Diamond; primaryWeapon.projectileGenerator.defaultCollisionIgnoreGroup = 3; primaryWeapon.projectileGenerator.defaultTag = "PP"; primaryWeapon.projectileGenerator.canRotate = false; primaryWeapon.projectileGenerator.shotSound = WeaponFire; primaryWeapon.Color = new Color(0, 0, 0, 0); primaryWeapon.Angle += Angle.FromDegrees(90); // Secondary Weapon (Laser Blaster): laser, pierces smaller enemies double swSizeMultiplier = ((pwArsenalUpgrades[1] >= 1) ? (2) : (1)); double swFireBonusMultiplier = 1 + (2 * ((pwArsenalUpgrades[1] >= 2) ? (1) : (0))); double swDamageBonusMultiplier = 1 + (2.2 * ((pwArsenalUpgrades[1] >= 3) ? (1) : (0))); secWeapon = new RRWeapon(5, 10, true, PLAYER_WEAPONPOWER / 2, PLAYER_FIRERATE * 10 * swFireBonusMultiplier, new RRProjectileGenerator(80 * swSizeMultiplier, 3 * swSizeMultiplier, 0.01, new Color(233, 111, 111, 128), 0.85 * swDamageBonusMultiplier)); secWeapon.Position += new Vector(0, 60); secWeapon.projectileGenerator.defaultCollisionIgnoreGroup = 3; secWeapon.projectileGenerator.ignoresCollisionResponse = true; secWeapon.projectileGenerator.defaultTag = "LP"; secWeapon.projectileGenerator.canRotate = false; secWeapon.projectileGenerator.shotSound = WeaponFire; secWeapon.Color = new Color(0, 0, 0, 0); secWeapon.Angle += Angle.FromDegrees(90); // Third Weapon (Minigun): inaccurate but powerful double triSizeMultiplier = ((pwArsenalUpgrades[2] >= 1) ? (2) : (1)); double triFireBonusMultiplier = 1 + (5.2 * ((pwArsenalUpgrades[2] >= 3) ? (1) : (0))); double triDamageBonusMultiplier = 1 + (4.2 * ((pwArsenalUpgrades[2] >= 2) ? (1) : (0))); triWeapon = new RRWeapon(5, 10, true, PLAYER_WEAPONPOWER, PLAYER_FIRERATE * 5 * triFireBonusMultiplier, new RRProjectileGenerator(9 * triSizeMultiplier, 9 * triSizeMultiplier, 0.1, new Color(222, 222, 11, 128), 2.25 * triDamageBonusMultiplier)); triWeapon.Position += new Vector(0, 35); triWeapon.projectileGenerator.defaultCollisionIgnoreGroup = 3; triWeapon.projectileGenerator.defaultTag = "PP"; triWeapon.projectileGenerator.canRotate = false; triWeapon.projectileGenerator.shotSound = WeaponFire; triWeapon.Color = new Color(0, 0, 0, 0); triWeapon.Angle += Angle.FromDegrees(90); triWeapon.setBaseAngle(triWeapon.Angle); triWeapon.randomizedAngleSlate = 14 + pwArsenalUpgrades[2].Value*10.9; // Bomb: special weapon, deals extreme damage and clears all enemy bullets from the screen for its duration. Access the explosion's parameters from BombExplosion, under the region Colliders. double bombSizeMultiplier = ((pwArsenalUpgrades[3] >= 1) ? (2) : (1)); double bombFireBonusMultiplier = 1 + (1 * ((pwArsenalUpgrades[3] >= 3) ? (1) : (0))); double bombDamageBonusMultiplier = 1 + (3 * ((pwArsenalUpgrades[3] >= 2) ? (1) : (0))); bomb = new RRWeapon(30, 30, true, PLAYER_WEAPONPOWER * 2, PLAYER_FIRERATE / 10 * bombFireBonusMultiplier, new RRProjectileGenerator(30 * bombSizeMultiplier, 30 * bombSizeMultiplier, 0.2, new Color(111, 111, 111, 128), 50 * bombDamageBonusMultiplier)); bomb.projectileGenerator.projectileShape = Shape.Circle; bomb.projectileGenerator.defaultCollisionIgnoreGroup = 3; bomb.projectileGenerator.defaultTag = "BOMB"; bomb.projectileGenerator.canRotate = false; bomb.projectileGenerator.shotSound = WeaponFireLarge; bomb.Color = new Color(0, 0, 0, 0); bomb.Angle += Angle.FromDegrees(90); bomb.countInWeaponArsenal = false; this.playerWeaponArsenal = new RRWeaponArsenal(primaryWeapon); //rP = primaryWeapon; this.playerWeaponArsenal.ProjectileCollision = playerCollisionHandler; this.playerWeaponArsenal.addNewWeapon(secWeapon); this.playerWeaponArsenal.addNewWeapon(triWeapon); this.playerWeaponArsenal.addNewWeapon(bomb); ship.Add(playerWeaponArsenal); CreateWeaponMeter(); }