コード例 #1
0
    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;
    }
コード例 #2
0
ファイル: StateSystem.cs プロジェクト: Lunastryke/Glory
 public void StartGameWave()
 {
     // Order v important dont change
     hud.ShowNextWaveBtn();
     gameState = GameState.Wave;
     waveState = WaveState.WaitingNextWave;
 }
コード例 #3
0
        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;
            }
        }
コード例 #4
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;
        }
    }
コード例 #5
0
 public void WaveStart(WaveState ServewaveState)
 {
     Debug.Log("Wave" + wave.ToString() + "開始");
     //ウェーブ開始
     _wavestate = ServewaveState;
     SpawnWave(wave);
 }
コード例 #6
0
ファイル: MapInterface.cs プロジェクト: pawciut/LudumDare44
    // 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);
    }
コード例 #7
0
 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");
     }
 }
コード例 #8
0
    // 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;
        }
    }
コード例 #9
0
ファイル: Wave.cs プロジェクト: NikVidya/Siege-Engineer
    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();
        }
    }
コード例 #10
0
ファイル: StateSystem.cs プロジェクト: Lunastryke/Glory
 // Use this for initialization
 public void Start()
 {
     Time.timeScale  = 0f;
     tutorialEnabled = true;
     gameState       = GameState.Menu;
     menuState       = MenuState.Hidden;
     waveState       = WaveState.WaitingNextWave;
     tutorialState   = TutorialState.Intro1;
 }
コード例 #11
0
    private void Awake()
    {
        Actor.StaticActorDeathEvent += TrackDeaths;

        _lastWaveTime = _roundTime;
        _rate         = _initialRate;

        _activeEnemiesSO.ResetList();
        CurrentWaveState = WaveState.STOPPED;
    }
コード例 #12
0
ファイル: Wave.cs プロジェクト: NikVidya/Siege-Engineer
 public void Finish()
 {
     CancelInvoke("StructureDamage");
     waveState = WaveState.FINISHED;
     if (finish == null)
     {
         finish = new UnityEvent();
     }
     finish.Invoke();
 }
コード例 #13
0
    // |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    // |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    // |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

    // 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);
    }
コード例 #14
0
ファイル: Wave.cs プロジェクト: JohannFranz/VR-Defense
    void Start()
    {
        InitWaveData();

        state          = WaveState.sleeping;
        timeTillSpawn  = 0.0f;
        spawnedMinions = 0;

        parentCon = transform.parent.gameObject.GetComponent <SpawnController>();
    }
コード例 #15
0
 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;
 }
コード例 #16
0
 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;
 }
コード例 #17
0
 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();
 }
コード例 #18
0
    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;
    }
コード例 #19
0
ファイル: Wave.cs プロジェクト: JohannFranz/VR-Defense
    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;
    }
コード例 #20
0
    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;
    }
コード例 #21
0
        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;
        }
コード例 #22
0
    /**
     * Updates the wave handle
     */
    void Update()
    {
        if (paused)
        {
            return;
        }

        elapsedTime += Time.deltaTime;


        if (enemyLeft <= 0)
        {
            waveState = WaveState.WaveEnd;
        }
    }
コード例 #23
0
        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;
        }
コード例 #24
0
    /// <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");
    }
コード例 #25
0
 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
 }
コード例 #26
0
ファイル: Wave.cs プロジェクト: JohannFranz/VR-Defense
    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();
        }
    }
コード例 #27
0
    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
        }
    }
コード例 #28
0
    //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);
        }
    }
コード例 #29
0
    // 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();
        }
    }
コード例 #30
0
        /// <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;
            }
        }
コード例 #31
0
	/// <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;
	}
コード例 #32
0
	/// <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;
		}
	}	
コード例 #33
0
ファイル: Form1.cs プロジェクト: pretsb/838fassgnmnt4
        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 { }
        }
コード例 #34
0
 public Wave()
 {
     Zombies = new List<string>();
     _currentState = WaveState.WAVING;
     _currentTime = TimeSpan.Zero;
     _nextZombieTime = TimeSpan.Zero;
     IsFirstZombie = true;
 }
コード例 #35
0
        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
        }
コード例 #36
0
ファイル: Game1.cs プロジェクト: TheNextGuy32/GDDAPS2
        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);
                    }
                }
            }
        }
コード例 #37
0
        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;
            }
        }
コード例 #38
0
	/// <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);		
	}
コード例 #39
0
	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;
	}
コード例 #40
0
        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;
            }
        }