Beispiel #1
0
    void OnCollisionEnter(Collision collision)
    {
        Collider   collider = collision.collider;
        PlayerBase pb       = playerBase.gameObject.GetComponent <PlayerBase>();

        if (live)
        {
            if (collider.CompareTag("Invader") || collider.CompareTag("MysteryInvader"))
            {
                Invader invader = collider.gameObject.GetComponent <Invader>();
                if (invader.live)
                {
                    invader.Die();
                }
            }
            else if (collider.CompareTag("InvaderMissile"))
            {
                InvaderMissile i_missile = collider.gameObject.GetComponent <InvaderMissile>();
                // The invader missile's collision function will handle its own death
            }
            else if (collider.CompareTag("BaseShield"))
            {
                Destroy(collider.gameObject);
            }
            if (!isBeam)
            {
                live = false;
                gameObject.GetComponent <Renderer>().material.color = new Color(0.2f, 0, 0);
            }
        }
    }
Beispiel #2
0
 internal cInvaderRow(int count, int health, int width, int index, Size size,
                      InvaderMissile fireMissile, DropItem dropItem, Random r, int level)
 {
     Invaders = new List <cInvader>();
     for (int i = 1; i <= count; i++)
     {
         Invaders.Add(new cInvader()
         {
             Random          = r,
             Location        = new System.Drawing.Point(i * width / (count + 1) - 20, 50 * index),
             Health          = health,
             HealthMax       = health,
             DamageOnContact = 500 + level * 100,
             Size            = size,
             FireMissile     = fireMissile,
             DropItem        = dropItem,
             Speed           = 20,
             MoveType        = MovementType.Invader,
             Level           = level
         });
     }
     this.Index = index;
 }
Beispiel #3
0
        internal ucGame(SetControl viewChanger)
        {
            InitializeComponent();
            this.viewChanger = viewChanger;
            this.Load       += new EventHandler(UcGame_CreateBackBuffer);

            this.SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer, true);

            Size tmpSize = new Size(60, 80);

            spaceShip = new cSpaceship()
            {
                Image           = Properties.Resources.SpaceShip,
                Location        = new Point((this.Width - tmpSize.Width) / 2, (this.Height - 150)),
                Size            = tmpSize,
                Damage          = 200,
                DamageOnContact = 50000,
                WeaponStrength  = 1,
                WeaponFrequency = 1,
                Health          = 1000,
                HealthMax       = 1000,
                ShieldMax       = 1000
            };
            invMissile  = new InvaderMissile(InvaderMissileHandler);
            dropItem    = new DropItem(DropItemHandler);
            invMissiles = new List <cMissile>();
            missiles    = new List <cMissile>();
            invaderRows = new List <cInvaderRow>();
            dropItems   = new List <cDropItem>();

            GameTimer          = new Timer();
            GameTimer.Interval = 15;
            GameTimer.Tick    += GameTimer_Tick;


            MovementTimer          = new Timer();
            MovementTimer.Interval = 5;
            MovementTimer.Tick    += MovementTimer_Tick;


            FireTimer          = new Timer();
            FireTimer.Interval = 500;
            FireTimer.Tick    += (sender, e) =>
            {
                addSpaceshipMissile(spaceShip.WeaponStrength);
            };


            ShieldTimer          = new Timer();
            ShieldTimer.Interval = 20;
            ShieldTimer.Tick    += (sender, e) =>
            {
                if (spaceShip.Shield > 0)
                {
                    spaceShip.Shield -= 3;
                }
            };


            RegenerationTimer          = new Timer();
            RegenerationTimer.Interval = 20;
            RegenerationTimer.Tick    += (sender, e) =>
            {
                if (spaceShip.Health < spaceShip.HealthMax)
                {
                    spaceShip.Health += 0.3f;
                }
            };


            MoveRowDownTimer          = new Timer();
            MoveRowDownTimer.Interval = 5000;
            MoveRowDownTimer.Tick    += (sender, e) =>
            {
                if (rowsMovedDownCount < 5)
                {
                    foreach (cInvaderRow row in invaderRows)
                    {
                        foreach (cInvader inv in row.Invaders)
                        {
                            inv.MoveDown();
                        }
                    }
                }
                else
                {
                    MoveRowDownTimer.Stop();
                }
            };


            InvaderFireTimer          = new Timer();
            InvaderFireTimer.Interval = 400;
            InvaderFireTimer.Tick    += (sender, e) =>
            {
                if (bossEnemy != null)
                {
                    return;
                }

                List <cInvader> invaders = new List <cInvader>();
                foreach (cInvaderRow row in invaderRows)
                {
                    foreach (cInvader inv in row.Invaders)
                    {
                        invaders.Add(inv);
                    }
                }


                int random = r.Next(0, invaders.Count);
                int s      = r.Next(200, 300 + level);
                if (invaders.Count == 0)
                {
                    return;
                }
                InvaderMissileHandler(invaders[random].Location, s, false);

                int d = r.Next(0, invaders.Count);
                int t = r.Next(-1, 5);
                DropItemHandler(invaders[d].CenterDropLocation, invaders[d].GetDropItemType(t));
            };
        }