コード例 #1
0
 public RRWeaponArsenal(RRWeapon bw)
     : base(1, 1)
 {
     addNewWeapon(bw);
     setWeapon(0);
     //Power = new DoubleMeter(1);
 }
コード例 #2
0
    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;
        }
    }
コード例 #3
0
ファイル: RREnemy.cs プロジェクト: JakezuGD/RampageRebellion
    /// <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;
    }
コード例 #4
0
 public void addNewWeapon(RRWeapon r)
 {
     lock (lockObject)
     {
         weapons.Add(r);
         this.Add(r);
         r.IsVisible = false;
         r.ProjectileCollision = weaponCollisionBucket;
     }
 }
コード例 #5
0
ファイル: RRBegin.cs プロジェクト: JakezuGD/RampageRebellion
    /// <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();
    }