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; } }
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); } }
/// <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(); }
/// <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); }