private static IUnit CreateUnit(UnitType type, int x, int y) { IUnit unit; switch (type) { case UnitType.Settlers: unit = new Settlers(); break; case UnitType.Militia: unit = new Militia(); break; case UnitType.Phalanx: unit = new Phalanx(); break; case UnitType.Legion: unit = new Legion(); break; case UnitType.Musketeers: unit = new Musketeers(); break; case UnitType.Riflemen: unit = new Riflemen(); break; case UnitType.Cavalry: unit = new Cavalry(); break; case UnitType.Knights: unit = new Knights(); break; case UnitType.Catapult: unit = new Catapult(); break; case UnitType.Cannon: unit = new Cannon(); break; case UnitType.Chariot: unit = new Chariot(); break; case UnitType.Armor: unit = new Armor(); break; case UnitType.MechInf: unit = new MechInf(); break; case UnitType.Artillery: unit = new Artillery(); break; case UnitType.Fighter: unit = new Fighter(); break; case UnitType.Bomber: unit = new Bomber(); break; case UnitType.Trireme: unit = new Trireme(); break; case UnitType.Sail: unit = new Sail(); break; case UnitType.Frigate: unit = new Frigate(); break; case UnitType.Ironclad: unit = new Ironclad(); break; case UnitType.Cruiser: unit = new Cruiser(); break; case UnitType.Battleship: unit = new Battleship(); break; case UnitType.Submarine: unit = new Submarine(); break; case UnitType.Carrier: unit = new Carrier(); break; case UnitType.Transport: unit = new Transport(); break; case UnitType.Nuclear: unit = new Nuclear(); break; case UnitType.Diplomat: unit = new Diplomat(); break; case UnitType.Caravan: unit = new Caravan(); break; default: return(null); } unit.X = x; unit.Y = y; unit.MovesLeft = unit.Move; return(unit); }
protected void OnTriggerEnter(Collider c) { if (c.gameObject.layer == k_TrashLayerIndex) { Trash trash = c.GetComponent <Trash>(); trash.Dispose(); Compost compost = c.gameObject.GetComponent <Compost>(); Metal metal = c.gameObject.GetComponent <Metal>(); Nuclear nuclear = c.gameObject.GetComponent <Nuclear>(); if (compost != null) { inventory.AddCompost(); } else if (metal != null) { inventory.AddMetal(); } else if (nuclear != null) { inventory.AddNuclear(); } Destroy(c.gameObject); } else if (c.gameObject.layer == k_CoinsLayerIndex) { if (magnetCoins.Contains(c.gameObject)) { magnetCoins.Remove(c.gameObject); } if (c.GetComponent <Coin>().isPremium) { Destroy(c.gameObject); controller.premium += 1; m_Audio.PlayOneShot(premiumSound); } else { /// TODO: Need to use the right pool Coin.coinPools[0].Free(c.gameObject); controller.coins += 1; m_Audio.PlayOneShot(coinSound); } } else if (c.gameObject.layer == k_ObstacleLayerIndex) { if (m_Invincible || controller.IsCheatInvincible()) { return; } controller.StopMoving(); c.enabled = false; Obstacle ob = c.gameObject.GetComponent <Obstacle>(); if (ob != null) { ob.Impacted(); } else { Destroy(c.gameObject); } controller.currentLife -= 1; controller.character.animator.SetTrigger(s_HitHash); if (controller.currentLife > 0) { m_Audio.PlayOneShot(controller.character.hitSound); SetInvincible(); } // The collision killed the player, record all data to analytics. else { m_Audio.PlayOneShot(controller.character.deathSound); m_DeathData.character = controller.character.characterName; m_DeathData.themeUsed = controller.trackManager.currentTheme.themeName; m_DeathData.obstacleType = ob.GetType().ToString(); m_DeathData.coins = controller.coins; m_DeathData.premium = controller.premium; m_DeathData.score = controller.trackManager.score; m_DeathData.worldDistance = controller.trackManager.worldDistance; } } else if (c.gameObject.layer == k_PowerupLayerIndex) { Consumable consumable = c.GetComponent <Consumable>(); if (consumable != null) { controller.UseConsumable(consumable); } } }