IEnumerator RunSequence() { mCanvas.SetActive(false); mCanvas.SetActive(false); while (CheckMoving()) { yield return(null); } mCanvas.SetActive(true); mInMotion = false; mCamera.StartGameplayCamera(); GameObject.Find("Enemies").GetComponent <EnemyController>().BuildMovement(); // Fix hitboxes for player clicks foreach (GameObject FriendlyUnit in mFriendlyUnits) { if (FriendlyUnit != null) { FriendlyUnit.GetComponent <BoxCollider2D>().size = new Vector2(.95f, .95f); FriendlyUnit.GetComponent <Movement>().mMoveCount = 0; } } foreach (GameObject EnemyUnit in mEnemyUnits) { if (EnemyUnit != null) { EnemyUnit.GetComponent <BoxCollider2D>().size = new Vector2(.95f, .95f); EnemyUnit.GetComponent <Movement>().mMoveCount = 0; } } }
public override void UseAbility() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, 1000)) { var hitLocation = hit.point; GameObject particle = Instantiate(particlePrefab, hitLocation + Vector3.up, Quaternion.Euler(-90, 0, 0)); AudioManager.Instance.PlayFreeze(); Destroy(particle, freezeDuration); var cast = Physics.OverlapSphere(hitLocation, 5); foreach (var item in cast) { EnemyUnit enemyUnit = item.GetComponent <EnemyUnit>(); if (enemyUnit != null) { enemyUnit.Freeze(freezeDuration); } FriendlyUnit friendlyUnit = item.GetComponent <FriendlyUnit>(); if (friendlyUnit != null) { friendlyUnit.Freeze(freezeDuration); } } } }
private void SetUnitOnTile(FriendlyUnit unit) { if (IsEmpty) { UnitOnTile = unit; } }
public void GenerateUnit(bool isEnemy, Vector2 position, string name) { if (isEnemy) { EnemyUnit enemy = new EnemyUnit(_contentManager, _graphicsDevice, position, UnitsInformation[name]) { Name = name, ID = _unitsGenerated }; enemy.Finish += EnemyFinish; enemy.IsDead += EnemyDead; EnemyUnits.Add(enemy); } else { FriendlyUnit friendly = new FriendlyUnit(_contentManager, _graphicsDevice, position, UnitsInformation[name]) { Name = name, ID = _unitsGenerated }; friendly.Finish += FriendlyFinish; friendly.IsDead += FriendlyDead; FriendlyUnits.Add(friendly); } _unitsGenerated++; }
public void Explosion() { PlaySFX(_clipShellExplosion); //get all the tanks caught in the explosion Collider[] allCollider = Physics.OverlapSphere(transform.position, _explosionRadius, _explosionMask); //destroy the shell GameObject shellExplosion = Instantiate(_shellExplosion, transform.position, transform.rotation); Destroy(gameObject); Destroy(shellExplosion, 1); //loop through the collider to apply force and damage foreach (Collider collider in allCollider) { Rigidbody trbody = collider.GetComponent <Rigidbody>(); if (trbody == null) { continue; } if (collider.GetComponent <FriendlyUnit>() != null) { FriendlyUnit fu = collider.GetComponent <FriendlyUnit>(); fu.Death(); } if (collider.GetComponent <EnemyUnit>() != null) { EnemyUnit eu = collider.GetComponent <EnemyUnit>(); eu.Death(); } } }
public void Update(GameTime gameTime) { EnemyUnits.FirstOrDefault()?.Update(gameTime, null, FriendlyUnits.FirstOrDefault()); for (int i = 1; i < EnemyUnits.Count; i++) { EnemyUnits[i].Update(gameTime, EnemyUnits[i - 1], FriendlyUnits.FirstOrDefault()); } FriendlyUnits.FirstOrDefault()?.Update(gameTime, EnemyUnits.FirstOrDefault(), null); for (int i = 1; i < FriendlyUnits.Count; i++) { FriendlyUnits[i].Update(gameTime, EnemyUnits.FirstOrDefault(), FriendlyUnits[i - 1]); } if (_enemyToRemove != null) { EnemyUnits.Remove(_enemyToRemove); _enemyToRemove = null; } if (_friendlyToRemove != null) { FriendlyUnits.Remove(_friendlyToRemove); _friendlyToRemove = null; } }
public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem) { var data = new FriendlyUnit { health = health }; dstManager.AddComponentData(entity, data); }
private void PurchaseUnit(FriendlyUnit unit) { if (HasEnoughGoldToPurchase(unit.Cost)) { Gold -= unit.Cost; Stats.GoldSpent += unit.Cost; InGameHUD.Instance.UpdateGoldText( ); } }
private void OnTriggerExit2D(Collider2D other) { if (other.tag == "Friendly" && !IsDead) { UnitToAttack = null; StopCoroutine("AttackWithDelay"); StopAttackAnim( ); StartCoroutine(MoveForward( )); } }
// Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Tab)) { DescriptionBar.SetActive(!DescriptionBar.activeInHierarchy); InfoBar.SetActive(!InfoBar.activeInHierarchy); } // When played is pressed, set everything into motion if (Input.GetKeyDown("space") && !mActionSelector.GetComponent <ActionSelector>().mPlanningAction&& !CheckMoving() && !mInMotion && !mDialogueController.DialogueGoing) { mInMotion = true; // Need to loop through all units and start their motions foreach (GameObject FriendlyUnit in mFriendlyUnits) { if (FriendlyUnit == null) { continue; } Movement FriendlyUnitMovement = FriendlyUnit.GetComponent <Movement>(); FriendlyUnit.GetComponent <CharacterStats>().mTurnGoing = true; FriendlyUnitMovement.mInMotion = true; FriendlyUnitMovement.StartMovement(); FriendlyUnit.GetComponent <BoxCollider2D>().size = new Vector2(.4f, .4f); } foreach (GameObject EnemyUnit in mEnemyUnits) { if (EnemyUnit == null) { continue; } Movement EnemyUnitMovement = EnemyUnit.GetComponent <Movement>(); EnemyUnit.GetComponent <CharacterStats>().mTurnGoing = true; EnemyUnitMovement.mInMotion = true; EnemyUnitMovement.StartMovement(); EnemyUnit.GetComponent <BoxCollider2D>().size = new Vector2(.4f, .4f); } StartCoroutine(RunSequence()); } // Bring up the retry menu if (Input.GetKeyDown(KeyCode.Escape)) { QuitMenu.SetActive(!QuitMenu.activeInHierarchy); } }
private void Start( ) { PriceText.text = UnitPrefab.Cost.ToString( ); UnitObject = Instantiate(UnitPrefab, Camera.main.ScreenToWorldPoint(transform.position), Quaternion.identity) as FriendlyUnit; UnitObject.transform.position = new Vector3(UnitObject.transform.position.x, UnitObject.transform.position.y, 0f); StartingPosition = Camera.main.ScreenToWorldPoint(transform.position); UnitObject.GetComponent <BoxCollider2D>( ).enabled = false; UnitObject.gameObject.SetActive(false); }
private void SpawnUnit(FriendlyUnit unit) { if (unit == null) { return; } UnitOnTile = Instantiate(unit, UnitSpawn.transform.position, Quaternion.identity) as FriendlyUnit; UnitOnTile.GetComponent <BoxCollider2D>( ).enabled = true; UnitOnTile.Init( ); IsEmpty = false; ActiveTile.gameObject.SetActive(false); GameManager.OnUnitPurchased.Invoke(unit); }
// Puts all units to sleep when a battle occurs public void SleepAll() { foreach (GameObject FriendlyUnit in mFriendlyUnits) { if (FriendlyUnit != null) { FriendlyUnit.GetComponent <Movement>().mPause = true; } } foreach (GameObject EnemyUnit in mEnemyUnits) { if (EnemyUnit != null) { EnemyUnit.GetComponent <Movement>().mPause = true; } } }
public void NotifyAction() { foreach (GameObject FriendlyUnit in mFriendlyUnits) { if (FriendlyUnit != null) { FriendlyUnit.GetComponent <CharacterStats>().ActionActivate(); } } foreach (GameObject EnemyUnit in mEnemyUnits) { if (EnemyUnit != null) { EnemyUnit.GetComponent <CharacterStats>().ActionActivate(); } } }
// Puts all units to sleep when a battle occurs public void WakeAll() { foreach (GameObject FriendlyUnit in mFriendlyUnits) { if (FriendlyUnit != null) { FriendlyUnit.GetComponent <Movement>().mPause = false; } } foreach (GameObject EnemyUnit in mEnemyUnits) { if (EnemyUnit != null) { EnemyUnit.GetComponent <Movement>().mPause = false; } } mCamera.StartZoomOut(); }
private void OnTriggerEnter2D(Collider2D other) { if (other.tag == "Friendly" && Vector2.Distance(transform.position, other.transform.position) <= 5f) { if (other.GetComponent <FriendlyUnit>( ) != null) { MoveState = E_MOVE_STATE.ATTACK; Anim.SetFloat("Speed", 0f); UnitToAttack = other.GetComponent <FriendlyUnit>( ); StartCoroutine("AttackWithDelay"); } } else if (other.tag == "Castle") { Castle castle = other.transform.parent.GetComponent <Castle>( ); if (castle != null) { MoveState = E_MOVE_STATE.ATTACK; Anim.SetFloat("Speed", 0f); CastleToAttack = castle; StartCoroutine("AttackWithDelay"); } } }
private void FriendlyFinish(object sender, EventArgs e) { _friendlyToRemove = (FriendlyUnit)sender; FriendlyFinished.Invoke(_friendlyToRemove.Dammage, new EventArgs()); }
private void FriendlyDead(object sender, EventArgs e) { _friendlyToRemove = (FriendlyUnit)sender; }
private void Start() { friendlyUnit = GetComponent <FriendlyUnit>(); friendlyUnit.OnKill += HandleOnKill; }