public Aliens(AlienName newName) : base()
        {
            this.laserYOffset = 5.0f;

            switch (newName)
            {
            case AlienName.Crab:
                this.pointsRewarded = 20;
                break;

            case AlienName.Squid:
                this.pointsRewarded = 30;
                break;

            case AlienName.Octopus:
                this.pointsRewarded = 10;
                break;

            default:
                break;
            }
        }
Пример #2
0
        private void LoadAlienRow(AlienName alienName, uint numOfAliens, float initX, float initY, float xSpacing, AlienCoordinator coordinator)
        {
            // Determine correct enum names
            GameObject.Name objectName = GameObject.Name.UNINITIALIZED;
            Sprite.Name     spriteName = Sprite.Name.UNINITIALIZED;
            switch (alienName)
            {
            case AlienName.Crab:
                objectName = GameObject.Name.AlienCrab;
                spriteName = Sprite.Name.AlienCrab;
                break;

            case AlienName.Squid:
                objectName = GameObject.Name.AlienSquid;
                spriteName = Sprite.Name.AlienSquid;
                break;

            case AlienName.Octopus:
                objectName = GameObject.Name.AlienOctopus;
                spriteName = Sprite.Name.AlienOctopus;
                break;

            default:
                break;
            }

            // Use a loop to create a row of aliens
            // Each "i" is a column
            for (uint i = 0; i < numOfAliens; i++)
            {
                Aliens alien = this.LoadIndividualAlien(objectName,
                                                        spriteName,
                                                        alienName,
                                                        initX + xSpacing * i,
                                                        initY
                                                        );
                coordinator.Columns[i].AddChild(alien);
            }
        }
Пример #3
0
        /// <summary>
        ///		Load the Alien GameObjects
        /// </summary>
        private void LoadGameObjects()
        {
            AlienName[] alienNames = new AlienName[this.Rows];
            alienNames[0] = AlienName.Squid;
            alienNames[1] = AlienName.Crab;
            alienNames[2] = AlienName.Crab;
            alienNames[3] = AlienName.Octopus;
            alienNames[4] = AlienName.Octopus;

            AlienCoordinator coordinator = new AlienCoordinator(Rows, Columns, InitX, InitY, XGap, YGap);

            // Add coordinator as root of collision checking
            this.AddAlienRootToCollisionSystem(coordinator);

            // Attach coordinator last to call it's Start event
            GameObjectManager.Active.Attach(coordinator);

            // Create all the Aliens (bottom row first)
            for (int i = (int)this.Rows - 1; i >= 0; i--)
            {
                this.LoadAlienRow(alienNames[i],
                                  this.Columns,
                                  this.InitX,
                                  this.InitY - this.YGap * (uint)i,
                                  this.XGap,
                                  coordinator
                                  );
            }

            // Calculate colliders of columns
            for (uint j = 0; j < this.Rows; j++)
            {
                coordinator.Columns[j].RecalculateCollider();
            }

            // Calculate collider of coodinator
            coordinator.RecalculateCollider();
        }
Пример #4
0
        /// <summary>
        ///		Create one Alien
        /// </summary>
        /// <param name="alienName"></param>
        /// <param name="alienId"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="color"></param>
        private Aliens LoadIndividualAlien(GameObject.Name objectName, Sprite.Name spriteName, AlienName alienName, float x, float y)
        {
            // Aliens spawn on y differently depending on level
            int   currentLevel = GameSessionData.Active.Level;
            float yOffset      = (currentLevel % MaxDissent) * this.YGap;

            Aliens newAlien = new Aliens(alienName);

            newAlien.SetName(objectName);
            newAlien.SetPosition(x, y - yOffset);
            newAlien.SetColor(Colors.White);
            newAlien.Collider.Color = this.CollisonColor;
            newAlien.SetSprite(this.batchName, SpriteEntityManager.Self.Find(spriteName));
            GameObjectManager.Active.Attach(newAlien);
            return(newAlien);
        }