private void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "Defenders") { CasaController casaController = collision.gameObject.GetComponent <CasaController>(); casaController.SetMorto(); DestroyController destroyController = collision.gameObject.GetComponent <DestroyController>(); destroyController.IsDestroyed = true; myGameController.EnemyMissileDestroyed(); MissileExplode(); if (collision.GetComponent <MissileLauncher>() != null) { myGameController.MissileLauncherHit(); return; } myGameController.cityCounter--; Destroy(collision.gameObject); } else if (collision.tag == "Explosion") { myGameController.AddMissileDestroyedScore(); MissileExplode(); //Destroy(collision.gameObject); } }
protected static IEnumerator DoBehavior(TileState state) { Selector.SelectEnemy(state); int range = GetInteractionRange(state.unit); var neighbors = state.position.Neighbors(maxDistance: range).Select(Board.ToState); state.alerted = false; switch (state.unit) { case UnitType.Bomb: yield return(DestroyController.Destroy(state)); break; case UnitType.Fire: foreach (var neighborState in neighbors) { if (!neighborState.fireIncoming && neighborState.unit != UnitType.Fire && neighborState.unit != UnitType.Hole) { yield return(DestroyController.Destroy(neighborState)); SFXController.PlayFire(); neighborState.fireIncoming = true; if (!Generator.isRunning) { yield return(new WaitForSeconds(0.05f)); } } } break; case UnitType.Fang: yield return(new WaitForSeconds(0.7f)); var enemies = neighbors.Where(x => x.Friendliness == Friendliness.Friendly) .OrderBy(x => - x.moveOrder * 1000 + x.playOrder); if (enemies.Any()) { var target = enemies.First(); SFXController.PlayFire(); if (target.unit != UnitType.Shield) { yield return(DestroyController.Destroy(enemies.First())); } else { yield return(DestroyController.Destroy(state)); } // TODO: strike animation yield return(new WaitForSeconds(0.6f)); } break; } Selector.DeselectEnemy(state); yield return(YieldFast.Get); }
// Start is called before the first frame update void Start() { myGameController = GameObject.FindObjectOfType <GameController>(); cursorHotspot = new Vector2(cursorTexture.width / 2f, cursorTexture.height / 2f); Cursor.SetCursor(cursorTexture, cursorHotspot, CursorMode.Auto); this._destroyController1 = this.missileLauncherInstance.GetComponent <DestroyController>(); this._destroyController2 = this.missileLauncherInstance2.GetComponent <DestroyController>(); this._destroyController3 = this.missileLauncherInstance3.GetComponent <DestroyController>(); }
public IEnumerator ExecuteMove(HexPosition target) { switch (unit) { case UnitType.Sword: SFXController.PlayMove(); Board.Get[target].unit = unit; Board.Get[target].alerted = false; unit = UnitType.Empty; alerted = false; AlertNeighbors(target); var directions = ((HexDirection[])Enum.GetValues(typeof(HexDirection))).Where(x => { var neighbor = position.Neighbor(x); return(neighbor.Equals(target)); }); yield return(new WaitForSeconds(0.3f)); if (directions.Any()) { var stabTile = Board.Get[target.Neighbor(directions.Single())]; if (stabTile.Friendliness != Friendliness.Neutral) { SFXController.PlayFire(); yield return(DestroyController.Destroy(stabTile)); yield return(new WaitForSeconds(0.3f)); } } break; case UnitType.Arrow: SFXController.PlayFire(); yield return(new WaitForSeconds(0.3f)); var direction = ((HexDirection[])Enum.GetValues(typeof(HexDirection))) .Where(x => position.Neighbors(x).Contains(target)) .Single(); var tile = Board.Get[position.Neighbor(direction)]; while (tile.position.IsInBounds && tile.Friendliness == Friendliness.Neutral) { tile = Board.Get[tile.position.Neighbor(direction)]; } if (tile.position.IsInBounds) { yield return(DestroyController.Destroy(tile)); } yield return(new WaitForSeconds(0.5f)); alerted = true; break; case UnitType.Shield: SFXController.PlayMove(); Board.Get[target].unit = unit; Board.Get[target].alerted = true; unit = UnitType.Empty; alerted = false; AlertNeighbors(target); yield return(new WaitForSeconds(0.3f)); break; } yield return(YieldFast.Get); }