void Wave() { DOTween.Kill("Wave"); _launchPosition = _mainCamera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, -_mainCamera.transform.position.z)); _rigidbody.velocity = Vector3.zero; LaunchRocket(); Vector3 recoilDirection = transform.position - _launchPosition; recoilDirection.z = 0; recoilDirection.Normalize(); _mainCamera.GetComponent <ScreenShakeCamera> ().CameraShaking(FeedbackType.Jump); _rigidbody.AddForce(recoilDirection * _waveForce, ForceMode.Impulse); _waveForce = 0; WaveForceDebug = 0; JumpState = JumpState.InAir; if (OnJump != null) { OnJump(); } _slowMotion.StopSlowMotion(); WaveState = WaveState.CanWave; }
public void StartGameWave() { // Order v important dont change hud.ShowNextWaveBtn(); gameState = GameState.Wave; waveState = WaveState.WaitingNextWave; }
void WaveCompleted() { Debug.Log("wave : " + waves[currentWave].Name + " completed"); panelText.text = "Wave completed !"; Debug.Log(panelText.text); state = WaveState.COUNTING; waveCountDown = timeBetweenWaves; if (GameObject.FindGameObjectsWithTag("Music").Length != 0) { Debug.Log(GameObject.FindGameObjectsWithTag("Music")[0]); GameObject.FindGameObjectsWithTag("Music")[0].GetComponent <SoundPlayOneshot>().Play(); } if (currentWave < waves.Length) { currentWave++; panelText.text = "Wave " + currentWave; } else { Debug.Log("ROUND COMPLETED !! Looping ..."); // do something in here for the level to end !! for now it's just looping another round of waves currentWave = 0; } }
/** * Usefull coroutines that instantiates all enemy depending * their timing and their start positions */ public IEnumerator SpawnEnemies() { List <SpawnInfo> info = spawnerData.SpawnerInfo; while (currentIndex != spawnerData.SpawnerInfo.Count) { yield return(new WaitForSeconds(info[currentIndex].SpawnTiming - elapsedTime)); // We can spawn a new enemy GameObject enemy = Instantiate(info[currentIndex].SpawnPrefab, parentTransform); enemy.transform.position = info[currentIndex].SpawnPosition; // Getting the enemy script attached to the game object // to make any feeback possible Enemy enemyScript = enemy.GetComponent <Enemy>(); enemyScript.handle = this; enemyScript.bufferIndex = enemyReferenceBuffer.Count; // Buffers the enemy enemyReferenceBuffer.Add(enemyScript); currentIndex++; } if (!wave.WaveBlocking || enemyLeft <= 0) { waveState = WaveState.WaveEnd; } else { waveState = WaveState.WaveBlocking; } }
public void WaveStart(WaveState ServewaveState) { Debug.Log("Wave" + wave.ToString() + "開始"); //ウェーブ開始 _wavestate = ServewaveState; SpawnWave(wave); }
// Start is called before the first frame update void Start() { random = new System.Random(System.DateTime.Now.Millisecond); TowerPlacement = GetComponent <TowerPlacement>(); CurrentWave = GetComponent <WaveState>(); TotalTime = GetComponent <Timer>(); TotalTime.StartTimer(); EggDisplay.UpdateValue(MapState.EggsTotal); UpdateTowerTooltip(); if (WaveConfiguration == null || WaveConfiguration.Length <= 0) { Debug.LogError("No wave to start"); return; } UITopMenu.HideAll(); UITopMenu.ShowScore(Score); NextWave(); CurrentWave.WaveCleared.AddListener(OnWaveCleared); UIEggLost.SetActive(false); UITowerLost.SetActive(false); }
private void UpdateWaveState() { if (waveState == WaveState.Warmup && timer_delta >= (currTotalLength / 4)) { GameObject.Find("GlobalManager").GetComponent <GlobalManager>().GetSoundManager().playBossWave(); waveState = WaveState.Wave1; buyerManager.SetInterval(level.wave_1 - 1 - 1, level.wave_1 + 1 - 1); // buyer spawn faster 1 second then enemy enemyManager.SetInterval(level.wave_1 - 1, level.wave_1 + 1); Debug.Log("Enter Wave 1"); } else if (waveState == WaveState.Wave1 && timer_delta >= ((currTotalLength / 4) + 20)) { waveState = WaveState.Buffer; buyerManager.SetInterval(level.normal_interval - 1 - 1, level.normal_interval + 1 - 1); // buyer spawn faster 1 second then enemy enemyManager.SetInterval(level.normal_interval - 1, level.normal_interval + 1); Debug.Log("Enter Buffer"); } else if (waveState == WaveState.Buffer && timer_delta >= (currTotalLength - 20)) { GameObject.Find("GlobalManager").GetComponent <GlobalManager>().GetSoundManager().playBossWave(); waveState = WaveState.Wave2; buyerManager.SetInterval(level.wave_2 - 1 - 1, level.wave_2 + 1 - 1); // buyer spawn faster 1 second then enemy enemyManager.SetInterval(level.wave_2 - 1, level.wave_2 + 1); Debug.Log("Enter Wave 2"); } else if (waveState == WaveState.Wave2 && (timer_delta >= currTotalLength)) { GameObject.Find("GlobalManager").GetComponent <GlobalManager>().GetGameStateManager().SetWaveEnd(); Debug.Log("End Game"); } }
// Update is called once per frame void Update() { switch (waveState) { case WaveState.Waiting: waveText.text = "WAVE : " + nowWave + "/5"; waveTimer = secondsPerWave; break; case WaveState.WaveStandBy: nowWave++; if (nowWave <= numOfWaves) { timeForSpawnEnemy = secondsPerWave / enemysOfWaves[nowWave - 1]; waveText.text = "WAVE : " + nowWave + "/5"; waveTimer = secondsPerWave; waveState = WaveState.WaveStart; } else { waveState = WaveState.AllWaveFinish; } break; case WaveState.WaveStart: WaveCountDown(); EnemySpawnPerTime(timeForSpawnEnemy); break; case WaveState.AllWaveFinish: //ここで処理をシーンコントローラーに移す break; } }
public void BeginWave() { CancelInvoke("Barrage"); waveState = WaveState.BEGUN; Debug.Log(name + " Wave Begun!"); if (typeOfWave != WaveType.CUTSCENE) { timeMinutes = (int)Mathf.Floor(waveDuration / 60); timeSeconds = waveDuration - (timeMinutes * 60); waveDurationUI.text = timeMinutes + ":" + timeSeconds; } switch (typeOfWave) { case WaveType.REGULAR: InvokeRepeating("StructureDamage", gracePeriod, 1); break; case WaveType.BARRAGE: InvokeRepeating("Barrage", gracePeriod, timeBetweenBombardments); break; } if (triggersMidpointCinematic) { GameStateSwitcher.Instance.TriggerMidCinematic(); } }
// Use this for initialization public void Start() { Time.timeScale = 0f; tutorialEnabled = true; gameState = GameState.Menu; menuState = MenuState.Hidden; waveState = WaveState.WaitingNextWave; tutorialState = TutorialState.Intro1; }
private void Awake() { Actor.StaticActorDeathEvent += TrackDeaths; _lastWaveTime = _roundTime; _rate = _initialRate; _activeEnemiesSO.ResetList(); CurrentWaveState = WaveState.STOPPED; }
public void Finish() { CancelInvoke("StructureDamage"); waveState = WaveState.FINISHED; if (finish == null) { finish = new UnityEvent(); } finish.Invoke(); }
// ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| // ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| // ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| // Use this for internal initialization void Awake() { // Make FixedUpdate select the next wave (or generate it) state = WaveState.Waiting; SpaceObjectDirection.SetAngle(initialAngle); SpaceObjectDirection.SetAngularSpeed(fullCircleRotationTime); SeededRandom.SetSeed(initialSeed); lastSpaceObjectContainer = this; waveIndex = Mathf.Min(waves.Length - 1, Global.startWave); }
void Start() { InitWaveData(); state = WaveState.sleeping; timeTillSpawn = 0.0f; spawnedMinions = 0; parentCon = transform.parent.gameObject.GetComponent <SpawnController>(); }
private void Start() { waveState = WaveState.Warmup; rectTransform = waveProgressIndicator.GetComponent <RectTransform>(); level = GetLevelDetails(); currTotalLength = GetLevelDetails().total_length; buyerManager.SetInterval(level.normal_interval - 1 - 1, level.normal_interval + 1 - 1); // buyer spawn faster 1 second then enemy enemyManager.SetInterval(level.normal_interval - 1, level.normal_interval + 1); SetupWaveIndicator(); levelText.text = "Level: " + currentLevel; }
public void JudgeEnemyBool(bool isWave, List <bool> list, WaveState wave) { for (int i = 0; i < list.Count; ++i) { if (list[i] == true) { isWave = true; } } InitBool(list); WaveController.Instance.m_waveState = wave; }
public void setStarting() //state STARTING may be redundant; if, move this to setRunning() { state = WaveState.STARTING; waveCount++; currHealth = health; waveText.text = "Scene " + waveCount; enemyCount = calcEnemies(waveCount); currEnemies = enemyCount; time = 0; spawnTimer = time + Random.Range(0f, 3f); setRunning(); }
void Start() { State = WaveState.Start; CurrWave = 1; WaveTimer = WaveDelay; SpawnTimer = SpawnDelay; audio = GameObject.FindWithTag("SpawnMusic").GetComponent <AudioSource>(); // event listeners GameEvents.current.OnPowerUpFinished += RestartWave; GameEvents.current.OnAdFinished += SpawnRewardForAd; }
public void Activate(GameObject spawnPos, GameObject goal) { if (state != WaveState.sleeping) { Debug.LogError("Wrong state. Wave is in state:" + state.ToString()); return; } this.goal = goal; spawnPosition = spawnPos; state = WaveState.spawning; }
private IEnumerator WaitBetweenWaves() { yield return(new WaitForSeconds(_timeBetweenWaves)); // Create new wave time _waveTimeCounter = _lastWaveTime + (GROWTH_RATE * _kills * 3f); if (_debugWaves) { Debug.Log("Next Wave in: " + (_waveTimeCounter / 60f) + " minutes"); } CurrentWaveState = WaveState.RUNNING; }
IEnumerator DoSpawnLoop() { foreach (var wave in waves) { _state = WaveState.Delay; yield return(new WaitForSeconds(wave.delay)); Debug.Log("Start new wave..."); _state = WaveState.Spawning; // _currentWave = wave; yield return(DoSpawn(wave)); } _state = WaveState.End; }
/** * Updates the wave handle */ void Update() { if (paused) { return; } elapsedTime += Time.deltaTime; if (enemyLeft <= 0) { waveState = WaveState.WaveEnd; } }
IEnumerator SpawnWave(Wave wave) { state = WaveState.SPAWNING; for (int i = 0; i < wave.Count; i++) { Debug.Log("Spawning Enemy"); int spawnPointIndex = Random.Range(0, spawnPoints.Length); int randomEnnemyType = Random.Range(0, wave.Enemies.Length); Instantiate(wave.Enemies[randomEnnemyType], spawnPoints[spawnPointIndex].position, spawnPoints[spawnPointIndex].rotation); yield return(new WaitForSeconds(wave.Delay)); } state = WaveState.WAITING; yield break; }
/// <summary> /// WAVEカウントダウン /// </summary> private void WaveCountDown() { waveTimer -= Time.deltaTime; if (player.Hp <= 0) { waveState = WaveState.AllWaveFinish; } if (waveTimer <= 0) { waveTimer = 0; waveState = WaveState.WaveStandBy; } waveCountDownText.text = waveTimer.ToString("00.00"); }
public void BeginWave()//Repeatable ad infinitum { currentPhase = WavePhase.Fight; waveTimer = 0; //Reset wave timer waveOver = false; //Wave has begun passiveTimer = 0; //Reset passive timer currentWave = currentWave + 1; //Move to next wave if (gcInstance.playerCount > 0) //If anyone is playing -- Mostly for early game dev since no main menu yet { goonsAllowed = (int)currentWave * 6; //6, 12, for (int i = 0; i < goonsAllowed; i++) //Loop until all allowed goons have been spawned { GameObject goon = Instantiate(goonPrefab, transform); //Spawn goon goonsAlive.Add(goon); //Add to list of living goons, to be removed as they die, and recalled at Retreat phase } } GiveTarget();//Once all goons are instantiated set them off }
void Update() { if (state == WaveState.finished || state == WaveState.sleeping) { return; } if (state == WaveState.progressing) { if (AreAllMinionsDead()) { state = WaveState.finished; } } else if (state == WaveState.spawning) { Spawn(); } }
void Start() { gcInstance = GameManager.gcInstance; currentWave = WaveState.WaveZero;//Start with no wave on currentPhase = WavePhase.Passive; targets = new List <GameObject>(); waveOver = true; waveTimer = 0; if (maxWaveTime <= 0) { maxWaveTime = 30;//Defaults to 30 seconds } passiveTimer = 0; if (maxPassiveTime <= 0) { maxPassiveTime = 10;//Defaults to 10 seconds } }
//the start of the wave public void EnterWave(int waveNumber) { //sets enemies killed and spawned to zero and takes in settings based on waveNumber enemiesKilled = 0; enemiesSpawnedThisWave = 0; timerCounter = 0; int moles = Mathf.RoundToInt(waveNumber * moleSpawnModifier + 5); int bats = Mathf.RoundToInt(waveNumber * batSpawnModifier); int scoreBonus = Mathf.RoundToInt(waveNumber * scoreBonusModifier + 5); float spawnTimer = standardSpawnTime; float waveTimer = standardWaveDuration + waveNumber * waveDurationModifier; currentWave = new WaveState(moles, bats, scoreBonus, spawnTimer, waveTimer, waveNumber); if (currentWave != null) { Debug.Log("Entered wave " + waveNumber); } }
// Update is called once per frame void Update() { if (CurrentWaveState == WaveState.CANCEL) { return; } _gameTime += Time.deltaTime; if (_waveTimeCounter > 0) { CurrentWaveState = WaveState.RUNNING; _waveTimeCounter -= Time.deltaTime; if (_waveTimeCounter <= 0.0f) { CurrentWaveState = WaveState.STOPPED; WaveEnd(); if (_debugWaves) { Debug.Log("Wave end: " + CurrentWaveState + "\n Enemies remaining: " + _activeEnemiesSO.ActiveEnemiesCount + "\n Upgrade available: " + _upgrades.Active); } } } // If the waves are stopped else if (CurrentWaveState == WaveState.STOPPED) { // Await for no enemies and the upgrade gathered if (_activeEnemiesSO.ActiveEnemiesCount <= 0 && !_upgrades.Active) { CurrentWaveState = WaveState.WAITING; NewWave(); } } // Manage Spawns if (CurrentWaveState == WaveState.RUNNING) { ManageSpawns(); } }
/// <summary> /// Changes the state and broadcasts the event /// </summary> /// <param name="newState">The new state to transitioned to</param> protected virtual void ChangeWaveState(WaveState newState) { // If the state hasn't changed then return if (waveState == newState) { return; } WaveState oldState = waveState; waveState = newState; if (waveStateChanged != null) { waveStateChanged(oldState, newState); } switch (newState) { case WaveState.SpawnEnemy: waveSpawnManager.StartWaves(); break; case WaveState.AllEnemiesSpawned: // Win immediately if all enemies are already dead if (numberOfEnemies == 0) { ChangeWaveState(WaveState.Win); } break; case WaveState.Lose: SafelyCallWaveFailed(); break; case WaveState.Win: SafelyCallWaveCompleted(); break; } }
/// <summary> /// Launches the next wave. /// </summary> /// <returns> /// True if the next wave was launched, false if there are no more waves. /// </returns> public bool StartWave() { timeSinceLastSpawn = 0.0f; if (waveState == WaveState.WaitingToStartWave) waveState = WaveState.LaunchingWave; waveGUIManager.DisableStartWaveButton(); return waveState == WaveState.LaunchingWave; }
/// <summary> /// Updates the HeroWaveManager and decides if new heroes need to be spawned. /// </summary> public void Update() { //If we're paused then just return and do nothing for now... if (Paused) return; //Don't do anything regarding spawning heroes unless we are actually launching a wave! if (waveState == WaveState.LaunchingWave) { timeSinceLastSpawn += Time.deltaTime; //If we have a hero to spawn and it's time to spawn them then fire the event! if (nextHeroToSpawn != null && timeSinceLastSpawn >= timeUntilNextSpawn) { SpawnNewHero(nextHeroToSpawn); nextHeroToSpawn = null; timeSinceLastSpawn = 0.0f; } //If we don't have a next hero to spawn then load one if (nextHeroToSpawn == null) { bool valid = LoadNextHero(); //If we didn't get a valid hero back then fire the wave completed spawning event. if (!valid) OnWaveCompletedSpawning(); } } else if ((waveState == WaveState.WaitingForEndOfWave || waveState == WaveState.Completed) && NumHeroesAlive == 0) { waveState = WaveState.WaitingToStartWave; OnAllWaveEnemiesDefeated(currWave); setupNextWave = true; } if (setupNextWave && waveState == WaveState.WaitingToStartWave) { waveGUIManager.EnableStartWaveButton(); OnNextWaveReady(currWave); setupNextWave = false; } }
void sensor_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { try { SkeletonFrame frame = e.OpenSkeletonFrame(); if (frame != null) { if (this.skeletons.Length != frame.SkeletonArrayLength) { this.skeletons = new Skeleton[frame.SkeletonArrayLength]; } frame.CopySkeletonDataTo(this.skeletons); // Assume no nearest skeleton and that the nearest skeleton is a long way away. double nearestDistance2 = double.MaxValue; int skeletonIndex = -1; // Look through the skeletons. int i = 0; foreach (var skeleton in this.skeletons) { // Only consider tracked skeletons. if (skeleton.TrackingState == SkeletonTrackingState.Tracked) { // Find the distance squared. var distance2 = (skeleton.Position.X * skeleton.Position.X) + (skeleton.Position.Y * skeleton.Position.Y) + (skeleton.Position.Z * skeleton.Position.Z); // Is the new distance squared closer than the nearest so far? if (distance2 < nearestDistance2) { // Use the new values. nearestDistance2 = distance2; skeletonIndex = i; } } i++; } // process skeletons, look for gesture if (skeletonIndex >= 0 && skeletons[skeletonIndex].TrackingState == SkeletonTrackingState.Tracked) { SkeletonPoint elbow = skeletons[skeletonIndex].Joints[JointType.ElbowRight].Position; SkeletonPoint wrist = skeletons[skeletonIndex].Joints[JointType.WristRight].Position; float dx = wrist.X - elbow.X; float dy = wrist.Y - elbow.Y; double angle = Math.Atan2(dy, dx); WaveState formerState = wavingState; if (angle >= 0 && angle < Math.PI / 3.0) wavingState = WaveState.Right; else if (angle >= Math.PI / 3.0 && angle < 2 * Math.PI / 3.0) wavingState = WaveState.Vertical; else if (angle >= 2 * Math.PI / 3.0 && angle < Math.PI) wavingState = WaveState.Left; else wavingState = WaveState.Other; if (waveCounter > 0 && (DateTime.Now - lastWaveState).TotalMilliseconds > waveTimeout) waveCounter = 0; else { if (formerState != wavingState && formerState != WaveState.Other && wavingState != WaveState.Other) { waveCounter++; lastWaveState = DateTime.Now; } } if (waveCounter >= 3) { arduino.Send("move"); waveCounter = 0; } } frame.Dispose(); } } catch { } }
public Wave() { Zombies = new List<string>(); _currentState = WaveState.WAVING; _currentTime = TimeSpan.Zero; _nextZombieTime = TimeSpan.Zero; IsFirstZombie = true; }
public void Update(GameTime gameTime) { reached_end_number = 0; death_number = 0; death_value = 0; death_point = 0; //Xem da bat dau them enemy moi vao chua (phai con de dua vao) if (spawned_number >= total_number && active_enemies.Count == 0) { state = WaveState.InActive; return; } //Spawn new enemy if (spawned_number < total_number) { if (timer >= spawn_rate) { Enemy new_enemy = getNewEnemy(); if (new_enemy != null) { active_enemies.Add(new_enemy); spawned_number++; } timer = 0; } else { timer += (float)gameTime.ElapsedGameTime.Milliseconds/1000; } } //Update tat ca active enemy Enemy enemy; for(int i = 0 ; i < active_enemies.Count; i++){ enemy = active_enemies[i]; if (enemy.Alive) { enemy.Update(gameTime); } else { if (enemy.atEnd) { reached_end_number++; } else { death_number += 1; death_value += enemy.Value; death_point += 10 * enemy.Value; } lock (active_enemies) { active_enemies.RemoveAt(i); } } } //Neu tat ca dau da di het }
public void UpdateIngame(GameTime gameTime) { //Update the look of each healthbar UpdateCameraPosition(); //Wave management switch (waveState) { case WaveState.Pregame: currentSecondsOfPregame += (float)gameTime.ElapsedGameTime.TotalSeconds; if (currentSecondsOfPregame > durationSecondsOfPregame) { //BLOW THE HORN SOUNDS THE TRUMPETS THE BATTLE COMMENCES enemies = CreateEnemiesWithDifficulty(CalcDifficultyCredit(wave)); currentSecondsOfBreak = 0; waveState = WaveState.Battle; firstWaveSound.Play(); gateOpeningSound.Play(); } break; case WaveState.Battle: UpdatePlayerHealthBars(); //Seeing if you've lost for (int p = 0; p < 4; p++) { if (!isPlayerPlaying[p] || playerPlayers[p].IsDead) { if (p == 3) { currentGameState = GameState.GameOver; } } else { break; } } //Checking to see if you won int deadEnemies = 0; for (int e = 0; e < enemies.Count; e++) { if (enemies[e].IsDead) { deadEnemies++; } } if (deadEnemies == enemies.Count) { //Play wave victory sound waveState = WaveState.Break; } break; case WaveState.Break: currentSecondsOfBreak += (float)gameTime.ElapsedGameTime.TotalSeconds; if (currentSecondsOfBreak > durationSecondsOfBreak) { //Updating wave wave++; waveCounterTextSprite.Text = "Wave: " + wave; //PLAY WAVE BEGIN SOUND if (wave % 5 != 0) { gateOpeningSound.Play(); newWaveSound.Play(); } else { gateOpeningSound.Play(); bossEnterSound.Play(); } //Create new enemies enemies = CreateEnemiesWithDifficulty(CalcDifficultyCredit(wave)); currentSecondsOfBreak = 0; waveState = WaveState.Battle; } break; } //Player Movement for (int p = 0; p < 4; p++) { if (isPlayerPlaying[p]) { if (playerPlayers[p].IsAlive) { if (InputState.leftThumbStickLeftHold[p].Evaluate()) { if (playerSprites[p].Destination.X > 0) { playerSprites[p].setCurrentRow(10); playerPlayers[p].Move(new Vector2(-1, 0), gameTime); playerPlayers[p].FacingDirection = FacingDirection.Left; } } else if (InputState.leftThumbStickRightHold[p].Evaluate()) { if (playerSprites[p].Destination.X < MapProcessor.MapWidth) { playerSprites[p].setCurrentRow(4); playerPlayers[p].Move(new Vector2(3, 0), gameTime); playerPlayers[p].FacingDirection = FacingDirection.Right; } } else if (InputState.leftThumbStickUpHold[p].Evaluate()) { if (playerSprites[p].Destination.Y > 0) { playerSprites[p].setCurrentRow(1); playerPlayers[p].Move(new Vector2(0, -1), gameTime); playerPlayers[p].FacingDirection = FacingDirection.Up; } } else if (InputState.leftThumbStickDownHold[p].Evaluate()) { if (playerSprites[p].Destination.Y < MapProcessor.MapHeight) { playerSprites[p].setCurrentRow(7); playerPlayers[p].Move(new Vector2(0, 3), gameTime); playerPlayers[p].FacingDirection = FacingDirection.Down; } } else { switch (playerPlayers[p].FacingDirection) { case FacingDirection.Up: playerSprites[p].setCurrentRow(0); break; case FacingDirection.Right: playerSprites[p].setCurrentRow(3); break; case FacingDirection.Down: playerSprites[p].setCurrentRow(6); break; case FacingDirection.Left: playerSprites[p].setCurrentRow(9); break; } } } } } UpdateAttackBox(); UpdatePlayerShadow(); // ATTACK INPUT for (int p = 0; p < 4; p++) { if (isPlayerPlaying[p]) { if (playerPlayers[p].IsAlive) { if (InputState.gamePadAPress[p].Evaluate()) { if (playerPlayers[p].CanAttack) { //playerSprites[p].RunAnimationRow(2); switch (playerPlayers[p].WeaponName) { case "Axe": greatAxeSound.Play(); break; case "Spear": spearSound.Play(); break; case "Sword": swordSound.Play(); break; case "Mace": maceSound.Play(); break; } playerPlayers[p].Attack(); Rectangle playerRect; // CHANGE ATTACKBOX TO COINCIDE WITH PLAYER DIRECTION if (playerPlayers[p].FacingDirection == FacingDirection.Up) { playerRect = playerPlayers[p].AttackBox[0]; } else if (playerPlayers[p].FacingDirection == FacingDirection.Right) { playerRect = playerPlayers[p].AttackBox[1]; } else if (playerPlayers[p].FacingDirection == FacingDirection.Down) { playerRect = playerPlayers[p].AttackBox[2]; } else { playerRect = playerPlayers[p].AttackBox[3]; } foreach (EnemyComponent enemy in enemies) { if (!enemy.IsDead) { if (playerRect.Intersects(enemy.HitBox)) { AnimatedSpriteComponent enemySprite = enemy.sprite; //enemySprite.RunAnimationRow(3); enemy.CurrentHealth -= playerPlayers[p].AttackDmg; // DECREMENTS CURRENT HEALTH BY PLAYER ATTACK DAMAGE enemyDeathSound.Play(); } } } } } } else { //Make him look dead playerSprites[p].setCurrentRow(12); } } } }
public void Update(PZBoard board, GameTime gameTime) { if (_numberZombie == 0) { _numberZombie = GRandom.RandomInt(NumberFrom, NumberTo);//rand.Next(NumberFrom, NumberTo); } if (_currentState == WaveState.WAVING) { if (_nextZombieTime == TimeSpan.Zero) { _nextZombieTime = TimeSpan.FromSeconds(GRandom.RandomDouble(TimeNextZombieFrom, TimeNextZombieTo)); // Calc time to drop zombie //Debug.WriteLine("WAVE: Tha ZOMBIE trong {0} giay", _nextZombieTime); } if (_currentTime >= _nextZombieTime) // Tha zombie { string zombieString = Zombies[GRandom.RandomInt(Zombies.Count)];//rand.Next(0, Zombies.Count)]; ObjectEntity obj = GameObjectCenter.Instance.CreateObject(zombieString); int row = GRandom.RandomInt(4); //Debug.WriteLine("LEVEL: Tha ZOMBIE at row {0}", row); board.AddObjectAt(obj, row, 10); _currentTime = TimeSpan.Zero; _nextZombieTime = TimeSpan.Zero; if (IsFirstZombie && Owner.IsFirstZombie) { SCSServices.Instance.AudioManager.PlaySound(_soundFirst, false, true); Owner.IsFirstZombie = false; IsFirstZombie = false; } _currentZombie++; } else _currentTime += gameTime.ElapsedGameTime; // Kiem tra da tha het zombie chua if (_currentZombie >= _numberZombie) _currentState = WaveState.END; } }
/// <summary> /// Called when the current wave's hero spawns have been completed. /// </summary> protected void OnWaveCompletedSpawning() { currWave++; bool moreWaves = currWave < waves.Count; if (moreWaves) waveState = WaveState.WaitingForEndOfWave; else waveState = WaveState.Completed; float requestedDelay = moreWaves ? waves[currWave].StartDelay : -1f; if (onWaveCompletedSpawning != null) onWaveCompletedSpawning(currWave, moreWaves, requestedDelay); }
void Awake() { spawners = new Dictionary<string, HeroSpawner>(); waves = new List<Wave>(8); currWave = 0; //We're not on any wave yet! timeSinceLastSpawn = 0.0f; //We haven't had anything spawn yet! timeUntilNextSpawn = 0.0f; //Locate all of the spawners and store them and their names into a Dictionary. GameObject[] spawnerObjects = GameObject.FindGameObjectsWithTag("Spawner"); foreach (GameObject spawnerObject in spawnerObjects) spawners.Add(spawnerObject.name, spawnerObject.GetComponent<HeroSpawner>()); //Link up with the managers we need. waveGUIManager = GameObject.Find("WaveGUIManager").GetComponent<WaveGUIManager>(); waveGUIManager.onStartWaveButtonPressed += HandleOnStartWaveButtonPressed; partyManager = GameObject.Find("PartyManager").GetComponent<HeroPartyManager>(); entityFactory = EntityFactory.GetInstance(); waveState = WaveState.WaitingToStartWave; setupNextWave = true; }
public void Update(PZBoard board, GameTime gameTime) { if (_numberZombie == 0) { _numberZombie = rand.Next(NumberFrom, NumberTo); } if (_currentState == WaveState.WAVING) { if (_nextZombieTime == TimeSpan.Zero) { _nextZombieTime = TimeSpan.FromSeconds(TimeNextZombieFrom + rand.NextDouble() * (TimeNextZombieTo - TimeNextZombieFrom)); // Calc time to drop zombie //Debug.WriteLine("WAVE: Tha ZOMBIE trong {0} giay", _nextZombieTime); } if (_currentTime >= _nextZombieTime) // Tha zombie { string zombieString = Zombies[rand.Next(0, Zombies.Count)]; ObjectEntity obj = GameObjectCenter.Instance.CreateObject(zombieString); int row = rand.Next(0, 4); //Debug.WriteLine("LEVEL: Tha ZOMBIE at row {0}", row); board.AddObjectAt(obj, row, 10); _currentTime = TimeSpan.Zero; _nextZombieTime = TimeSpan.Zero; _currentZombie++; } else _currentTime += gameTime.ElapsedGameTime; // Kiem tra da tha het zombie chua if (_currentZombie >= _numberZombie) _currentState = WaveState.END; } }