private void Exlode() { SpaceInvaderAbstractFactory spaceInvaderFactory = SpaceInvaderFactoryProducer.GetFactory("EffectsFactory"); Effects invadeExplodeEffect = spaceInvaderFactory.GetEffects(EffectsType.PlayerbulletExplode); invadeExplodeEffect.transform.position = transform.position; invadeExplodeEffect.transform.rotation = Quaternion.identity; invadeExplodeEffect.gameObject.SetActive(true); invadeExplodeEffect.DestroyAfterSomeTime(.15f); }
// called when player bullet hit on invader. check invader script public void DestroyInvader(Invader thisInvader) { // for boss checking if (m_lastInviderColumnIndexCntr < 0) { m_lastInviderColumnIndex = thisInvader.m_coumnIndex; m_lastInviderColumnIndexCntr = 1; } else { int cntr = m_lastInviderColumnIndex == thisInvader.m_coumnIndex ? m_lastInviderColumnIndexCntr + 1 : 1; // adding to the colmns index m_lastInviderColumnIndexCntr = cntr; m_lastInviderColumnIndex = thisInvader.m_coumnIndex; } bool timetoBoSS = m_lastInviderColumnIndexCntr >= m_maxInvaderColumnCntr ? true : false; if (timetoBoSS && m_lastScoreBossShown + m_minScoreNeeded < m_gameScoreSO.Value) { if (m_bossInvader == null) { m_lastScoreBossShown = m_gameScoreSO.Value; CreatNewBoss(); Debug.Log("creating new boss : USER Generated"); m_lastBossShownTime = Time.time; } } m_totalAliveInviders--; // decrement the invader count m_totalAliveInvadersSO.Value = m_totalAliveInviders; m_gameScoreSO.Value = m_gameScoreSO.Value + thisInvader.m_killValue.Value; Vector3 invaderLastPos = thisInvader.transform.position; m_invaderRows[thisInvader.m_rowIndex][thisInvader.m_coumnIndex] = null; SpaceInvaderAbstractFactory spaceInvaderFactory = SpaceInvaderFactoryProducer.GetFactory("InvaderFactory"); // accessomg InvaderFactory spaceInvaderFactory.RecycleInvader(thisInvader); spaceInvaderFactory = SpaceInvaderFactoryProducer.GetFactory("EffectsFactory"); Effects invadeExplodeEffect = spaceInvaderFactory.GetEffects(EffectsType.AlianExplodeEffect); invadeExplodeEffect.transform.position = invaderLastPos; invadeExplodeEffect.gameObject.SetActive(true); invadeExplodeEffect.DestroyAfterSomeTime(.15f); m_audioSource.PlayOneShot(m_invaderExlodeClip); UpdateTimeIntervalOFMove(); // check against the number of inviders left and increas the move speed if (m_totalAliveInviders == 0) // next wave { m_invaderGridState = InvaderGridState.Pause; return; // for now there wont be any new waves, game will be over at this point // wil add new wave feature in the next update } }
public void DestroyBoss(Boss boss) { SpaceInvaderAbstractFactory spaceInvaderFactory = SpaceInvaderFactoryProducer.GetFactory("EffectsFactory"); Effects bossExplodeEffect = spaceInvaderFactory.GetEffects(EffectsType.BossExplode); bossExplodeEffect.transform.position = boss.transform.position; bossExplodeEffect.gameObject.SetActive(true); bossExplodeEffect.DestroyAfterSomeTime(.15f); spaceInvaderFactory = SpaceInvaderFactoryProducer.GetFactory("BossFactory"); // accessomg boss factoy spaceInvaderFactory.RecycleBoss(boss); boss.gameObject.SetActive(false); m_audioSource.PlayOneShot(m_invaderExlodeClip); m_bossInvader = null; // score // for now, if the inviders move right it is 100, 50 left move not really a mystery :( int bossKillScore = m_invaderHorMovDirection > 0 ? 100 : 50; m_gameScoreSO.Value = m_gameScoreSO.Value + bossKillScore; }